Implemented more fragments
This commit is contained in:
parent
604e90314e
commit
99375b8700
@ -53,11 +53,6 @@
|
||||
android:name="android.app.shortcuts"
|
||||
android:resource="@xml/shortcuts"/>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.SettingsActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:label="@string/action_settings">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.AboutActivity"
|
||||
android:launchMode="singleTask"
|
||||
|
@ -12,6 +12,7 @@ import android.support.v7.app.ActionBarDrawerToggle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.TextView;
|
||||
import org.itxtech.daedalus.BuildConfig;
|
||||
@ -19,6 +20,7 @@ import org.itxtech.daedalus.Daedalus;
|
||||
import org.itxtech.daedalus.R;
|
||||
import org.itxtech.daedalus.fragment.DNSTestFragment;
|
||||
import org.itxtech.daedalus.fragment.MainFragment;
|
||||
import org.itxtech.daedalus.fragment.SettingsFragment;
|
||||
|
||||
/**
|
||||
* Daedalus Project
|
||||
@ -35,16 +37,21 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||
public static final int LAUNCH_ACTION_NONE = 0;
|
||||
public static final int LAUNCH_ACTION_ACTIVATE = 1;
|
||||
public static final int LAUNCH_ACTION_DEACTIVATE = 2;
|
||||
public static final String LAUNCH_FRAGMENT = "org.itxtech.daedalus.activity.MainActivity.LAUNCH_FRAGMENT";
|
||||
|
||||
private static final int FRAGMENT_MAIN = 0;
|
||||
private static final int FRAGMENT_DNS_TEST = 1;
|
||||
private static final String TAG = "DMainActivity";
|
||||
|
||||
private static int currentFragment = FRAGMENT_MAIN;
|
||||
public static final int FRAGMENT_NONE = -1;
|
||||
public static final int FRAGMENT_MAIN = 0;
|
||||
public static final int FRAGMENT_DNS_TEST = 1;
|
||||
public static final int FRAGMENT_SETTINGS = 2;
|
||||
|
||||
private static MainActivity instance = null;
|
||||
|
||||
private MainFragment mMain;
|
||||
private DNSTestFragment mDnsTest;
|
||||
private SettingsFragment mSettings;
|
||||
private int currentFragment = FRAGMENT_NONE;
|
||||
|
||||
public static MainActivity getInstance() {
|
||||
return instance;
|
||||
@ -72,19 +79,89 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||
((TextView) navigationView.getHeaderView(0).findViewById(R.id.textView_nav_version)).setText(getString(R.string.nav_version) + " " + BuildConfig.VERSION_NAME);
|
||||
((TextView) navigationView.getHeaderView(0).findViewById(R.id.textView_nav_git_commit)).setText(getString(R.string.nav_git_commit) + " " + BuildConfig.GIT_COMMIT);
|
||||
|
||||
FragmentManager fm = getFragmentManager();
|
||||
FragmentTransaction transaction = fm.beginTransaction();
|
||||
if (currentFragment == FRAGMENT_MAIN) {
|
||||
mMain = new MainFragment();
|
||||
transaction.replace(R.id.id_content, mMain);
|
||||
if (getIntent().getIntExtra(LAUNCH_FRAGMENT, FRAGMENT_NONE) == FRAGMENT_NONE) {
|
||||
FragmentManager fm = getFragmentManager();
|
||||
FragmentTransaction transaction = fm.beginTransaction();
|
||||
if (mMain == null) {
|
||||
mMain = new MainFragment();
|
||||
}
|
||||
transaction.replace(R.id.id_content, mMain).commit();
|
||||
currentFragment = FRAGMENT_MAIN;
|
||||
}
|
||||
if (currentFragment == FRAGMENT_DNS_TEST) {
|
||||
mDnsTest = new DNSTestFragment();
|
||||
transaction.replace(R.id.id_content, mDnsTest);
|
||||
}
|
||||
transaction.commit();
|
||||
|
||||
updateUserInterface(getIntent());
|
||||
Log.d(TAG, "onCreate");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostCreate(Bundle savedInstanceState) {
|
||||
super.onPostCreate(savedInstanceState);
|
||||
|
||||
updateTitle();
|
||||
updateNavigationMenu();
|
||||
}
|
||||
|
||||
private void updateNavigationMenu() {
|
||||
Menu menu = ((NavigationView) findViewById(R.id.nav_view)).getMenu();
|
||||
switch (currentFragment) {
|
||||
case FRAGMENT_MAIN:
|
||||
menu.findItem(R.id.nav_home).setChecked(true);
|
||||
break;
|
||||
case FRAGMENT_DNS_TEST:
|
||||
menu.findItem(R.id.nav_dns_test).setChecked(true);
|
||||
break;
|
||||
case FRAGMENT_SETTINGS:
|
||||
menu.findItem(R.id.nav_settings).setChecked(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateTitle() {
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
switch (currentFragment) {
|
||||
case FRAGMENT_MAIN:
|
||||
toolbar.setTitle(R.string.action_home);
|
||||
break;
|
||||
case FRAGMENT_DNS_TEST:
|
||||
toolbar.setTitle(R.string.action_dns_test);
|
||||
break;
|
||||
case FRAGMENT_SETTINGS:
|
||||
toolbar.setTitle(R.string.action_settings);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void changeFragment(int fragment) {
|
||||
FragmentManager fm = getFragmentManager();
|
||||
FragmentTransaction transaction = fm.beginTransaction();
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
switch (fragment) {
|
||||
case FRAGMENT_MAIN:
|
||||
if (mMain == null) {
|
||||
mMain = new MainFragment();
|
||||
}
|
||||
transaction.replace(R.id.id_content, mMain);
|
||||
toolbar.setTitle(R.string.action_home);
|
||||
currentFragment = FRAGMENT_MAIN;
|
||||
break;
|
||||
case FRAGMENT_DNS_TEST:
|
||||
if (mDnsTest == null) {
|
||||
mDnsTest = new DNSTestFragment();
|
||||
}
|
||||
transaction.replace(R.id.id_content, mDnsTest);
|
||||
toolbar.setTitle(R.string.action_dns_test);
|
||||
currentFragment = FRAGMENT_DNS_TEST;
|
||||
break;
|
||||
case FRAGMENT_SETTINGS:
|
||||
if (mSettings == null) {
|
||||
mSettings = new SettingsFragment();
|
||||
}
|
||||
transaction.replace(R.id.id_content, mSettings);
|
||||
toolbar.setTitle(R.string.action_settings);
|
||||
currentFragment = FRAGMENT_SETTINGS;
|
||||
break;
|
||||
}
|
||||
transaction.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -92,6 +169,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.main_drawer_layout);
|
||||
if (drawer.isDrawerOpen(GravityCompat.START)) {
|
||||
drawer.closeDrawer(GravityCompat.START);
|
||||
} else if (currentFragment != FRAGMENT_MAIN) {
|
||||
changeFragment(FRAGMENT_MAIN);
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
@ -101,9 +180,10 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Log.d("DMainActivity", "onDestroy");
|
||||
Log.d(TAG, "onDestroy");
|
||||
mMain = null;
|
||||
mDnsTest = null;
|
||||
mSettings = null;
|
||||
instance = null;
|
||||
System.gc();
|
||||
}
|
||||
@ -115,8 +195,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||
updateUserInterface(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostResume() {
|
||||
super.onPostResume();
|
||||
}
|
||||
|
||||
private void updateUserInterface(Intent intent) {
|
||||
Log.d("MainActivity", "Updating user interface");
|
||||
Log.d(TAG, "Updating user interface");
|
||||
int launchAction = intent.getIntExtra(LAUNCH_ACTION, LAUNCH_ACTION_NONE);
|
||||
if (launchAction == LAUNCH_ACTION_ACTIVATE) {
|
||||
Daedalus.updateShortcut(this.getApplicationContext());
|
||||
@ -126,6 +211,11 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||
} else {
|
||||
Daedalus.updateShortcut(this.getApplicationContext());
|
||||
}
|
||||
|
||||
int fragment = intent.getIntExtra(LAUNCH_FRAGMENT, FRAGMENT_NONE);
|
||||
if (fragment != FRAGMENT_NONE) {
|
||||
changeFragment(fragment);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -134,39 +224,20 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||
int id = item.getItemId();
|
||||
|
||||
if (id == R.id.nav_settings) {
|
||||
startActivity(new Intent(this, SettingsActivity.class));
|
||||
changeFragment(FRAGMENT_SETTINGS);
|
||||
}
|
||||
|
||||
if (id == R.id.nav_about) {
|
||||
startActivity(new Intent(this, AboutActivity.class));
|
||||
item.setChecked(false);
|
||||
}
|
||||
|
||||
if (id == R.id.nav_dns_test) {
|
||||
if (mDnsTest == null) {
|
||||
mDnsTest = new DNSTestFragment();
|
||||
}
|
||||
FragmentManager fm = getFragmentManager();
|
||||
FragmentTransaction transaction = fm.beginTransaction();
|
||||
transaction.replace(R.id.id_content, mDnsTest);
|
||||
transaction.commit();
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
toolbar.setTitle(R.string.action_dns_test);
|
||||
currentFragment = FRAGMENT_DNS_TEST;
|
||||
item.setChecked(true);
|
||||
changeFragment(FRAGMENT_DNS_TEST);
|
||||
}
|
||||
|
||||
if (id == R.id.nav_home) {
|
||||
if (mMain == null) {
|
||||
mMain = new MainFragment();
|
||||
}
|
||||
FragmentManager fm = getFragmentManager();
|
||||
FragmentTransaction transaction = fm.beginTransaction();
|
||||
transaction.replace(R.id.id_content, mMain);
|
||||
transaction.commit();
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
toolbar.setTitle(R.string.app_name);
|
||||
currentFragment = FRAGMENT_MAIN;
|
||||
item.setChecked(true);
|
||||
changeFragment(FRAGMENT_MAIN);
|
||||
}
|
||||
|
||||
if (id == R.id.nav_check_update) {
|
||||
|
@ -1,29 +0,0 @@
|
||||
package org.itxtech.daedalus.activity;
|
||||
|
||||
import android.app.FragmentManager;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import org.itxtech.daedalus.R;
|
||||
import org.itxtech.daedalus.fragment.SettingsFragment;
|
||||
|
||||
/**
|
||||
* Daedalus Project
|
||||
*
|
||||
* @author iTXTech
|
||||
* @link https://itxtech.org
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3.
|
||||
*/
|
||||
public class SettingsActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_settings);
|
||||
SettingsFragment settingsFragment = new SettingsFragment();
|
||||
FragmentManager manager = getFragmentManager();
|
||||
manager.beginTransaction().replace(R.id.activity_settings, settingsFragment).commit();
|
||||
}
|
||||
}
|
@ -7,7 +7,6 @@ import android.util.Log;
|
||||
import android.widget.Button;
|
||||
import org.itxtech.daedalus.R;
|
||||
import org.itxtech.daedalus.activity.MainActivity;
|
||||
import org.itxtech.daedalus.activity.SettingsActivity;
|
||||
import org.itxtech.daedalus.service.DaedalusVpnService;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
@ -37,7 +36,7 @@ public class StatusBarBroadcastReceiver extends BroadcastReceiver {
|
||||
}
|
||||
}
|
||||
if (intent.getAction().equals(STATUS_BAR_BTN_SETTINGS_CLICK_ACTION)) {
|
||||
Intent settingsIntent = new Intent(context, SettingsActivity.class);
|
||||
Intent settingsIntent = new Intent(context, MainActivity.class).putExtra(MainActivity.LAUNCH_FRAGMENT, MainActivity.FRAGMENT_SETTINGS);
|
||||
settingsIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
context.startActivity(settingsIntent);
|
||||
try {
|
||||
|
@ -21,7 +21,6 @@ import de.measite.minidns.util.InetAddressUtil;
|
||||
import org.itxtech.daedalus.Daedalus;
|
||||
import org.itxtech.daedalus.R;
|
||||
import org.itxtech.daedalus.activity.MainActivity;
|
||||
import org.itxtech.daedalus.activity.SettingsActivity;
|
||||
import org.itxtech.daedalus.receiver.StatusBarBroadcastReceiver;
|
||||
import org.pcap4j.packet.*;
|
||||
import org.pcap4j.packet.factory.PacketFactoryPropertiesLoader;
|
||||
@ -215,7 +214,7 @@ public class DaedalusVpnService extends VpnService implements Runnable {
|
||||
.setBlocking(true);
|
||||
}
|
||||
|
||||
this.descriptor = builder.setSession("Daedalus").setConfigureIntent(PendingIntent.getActivity(this, 0, new Intent(this, SettingsActivity.class), PendingIntent.FLAG_ONE_SHOT)).establish();
|
||||
this.descriptor = builder.setSession("Daedalus").setConfigureIntent(PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class).putExtra(MainActivity.LAUNCH_FRAGMENT, MainActivity.FRAGMENT_SETTINGS), PendingIntent.FLAG_ONE_SHOT)).establish();
|
||||
|
||||
if (statisticQuery) {
|
||||
Log.d(TAG, "Starting count queries");
|
||||
|
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/activity_settings"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
tools:context="org.itxtech.daedalus.activity.SettingsActivity">
|
||||
|
||||
</RelativeLayout>
|
@ -11,12 +11,12 @@
|
||||
android:title="@string/action_dns_test"
|
||||
android:checked="false"
|
||||
android:icon="@mipmap/ic_verified_user_white_36dp"/>
|
||||
</group>
|
||||
|
||||
<group android:id="@+id/nav_group_more">
|
||||
<item android:id="@+id/nav_settings"
|
||||
android:title="@string/action_settings"
|
||||
android:icon="@mipmap/ic_settings_grey600_36dp"/>
|
||||
</group>
|
||||
|
||||
<group android:id="@+id/nav_group_more">
|
||||
<item android:id="@+id/nav_about"
|
||||
android:title="@string/action_about"
|
||||
android:icon="@mipmap/ic_info_grey600_36dp"/>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||
<dimen name="activity_horizontal_margin">16dp</dimen>
|
||||
<dimen name="activity_vertical_margin">16dp</dimen>
|
||||
<dimen name="fragment_vertical_margin">48dp</dimen>
|
||||
<dimen name="fragment_vertical_margin">64dp</dimen>
|
||||
<dimen name="fab_margin">16dp</dimen>
|
||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||
<dimen name="nav_header_vertical_spacing">16dp</dimen>
|
||||
|
@ -9,7 +9,11 @@
|
||||
android:shortcutShortLabel="@string/action_settings">
|
||||
<intent
|
||||
android:action="android.intent.action.VIEW"
|
||||
android:targetClass="org.itxtech.daedalus.activity.SettingsActivity"
|
||||
android:targetPackage="org.itxtech.daedalus"/>
|
||||
android:targetClass="org.itxtech.daedalus.activity.MainActivity"
|
||||
android:targetPackage="org.itxtech.daedalus">
|
||||
<extra
|
||||
android:name="org.itxtech.daedalus.activity.MainActivity.LAUNCH_FRAGMENT"
|
||||
android:value="2"/>
|
||||
</intent>
|
||||
</shortcut>
|
||||
</shortcuts>
|
Loading…
x
Reference in New Issue
Block a user