From 7d26892911594b16f661812ac7aa296fbb2fca9e Mon Sep 17 00:00:00 2001 From: fattire Date: Tue, 10 Nov 2015 23:05:47 -0800 Subject: [PATCH] More work on fragments-- make settings work --- .../org/csploit/android/MainActivity.java | 76 +++++++++++++++---- .../org/csploit/android/MainFragment.java | 21 ----- .../org/csploit/android/SettingsActivity.java | 3 - .../org/csploit/android/SettingsFragment.java | 20 +---- cSploit/src/main/res/menu/main.xml | 30 +++----- cSploit/src/main/res/menu/top.xml | 15 ++++ 6 files changed, 89 insertions(+), 76 deletions(-) create mode 100644 cSploit/src/main/res/menu/top.xml diff --git a/cSploit/src/main/java/org/csploit/android/MainActivity.java b/cSploit/src/main/java/org/csploit/android/MainActivity.java index 3c138ae3ec..82ba94725e 100644 --- a/cSploit/src/main/java/org/csploit/android/MainActivity.java +++ b/cSploit/src/main/java/org/csploit/android/MainActivity.java @@ -31,6 +31,8 @@ import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -49,6 +51,7 @@ public class MainActivity extends AppCompatActivity { MainFragment mMainFragment; ActionBarDrawerToggle mDrawerToggle; DrawerLayout mDrawerLayout; + private Menu mMenu = null; @Override protected void onCreate(Bundle savedInstanceState) { @@ -79,30 +82,69 @@ protected void onCreate(Bundle savedInstanceState) { mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_was_opened, R.string.drawer_was_closed); mDrawerLayout.setDrawerListener(mDrawerToggle); - mDrawerToggle.syncState(); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); mMainFragment = new MainFragment(); getSupportFragmentManager().beginTransaction() - .add(R.id.mainframe, mMainFragment).commit(); + .add(R.id.mainframe, mMainFragment, "MainFragment") + .setCustomAnimations(R.anim.fadein, R.anim.fadeout, R.anim.fadein, R.anim.fadeout) + .commit(); } } - public boolean onOptionsItemSelected(MenuItem item) { + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.top, menu); + mMenu = menu; + return true; + } + + + public void launchSettings() { + getSupportFragmentManager().beginTransaction() + .add(R.id.mainframe, new SettingsFragment.PrefsFrag()) + .addToBackStack(null) + .setCustomAnimations(R.anim.fadein, R.anim.fadeout, R.anim.fadein, R.anim.fadeout) + .commit(); + } + + + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } - return true; - } - public void onBackPressed() { - mMainFragment.onBackPressed(); + switch (item.getItemId()) { + + case R.id.settings: + launchSettings(); + return true; + + case R.id.about: + launchAbout(); + return true; + + case R.id.submit_issue: + submitIssue(); + return true; + + default: + return false; + } } - public void launchSettings() { - startActivity(new Intent(this, SettingsActivity.class)); - overridePendingTransition(R.anim.fadeout, R.anim.fadein); + public void submitIssue() { + String uri = getString(R.string.github_new_issue_url); + Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); + startActivity(browser); + + // for fat-tire: + // String.format(getString(R.string.issue_message), getString(R.string.github_issues_url), getString(R.string.github_new_issue_url)); + } public void launchAbout() { @@ -144,9 +186,7 @@ public void onItemClick(AdapterView parent, View view, int position, long id) { launchSettings(); break; case 2: - String uri = getString(R.string.github_new_issue_url); - Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); - startActivity(browser); + submitIssue(); break; } } @@ -182,5 +222,13 @@ public View getView(int position, View convertView, ViewGroup parent) { } } - + @Override + public void onBackPressed() { + // Only ask for the double-backpressed when MainFragment is all that's left. + if (getSupportFragmentManager().getBackStackEntryCount() == 0) { + mMainFragment.onBackPressed(); + } else { + super.onBackPressed(); + } + } } \ No newline at end of file diff --git a/cSploit/src/main/java/org/csploit/android/MainFragment.java b/cSploit/src/main/java/org/csploit/android/MainFragment.java index 6d1eb1e7d2..38d2d674de 100644 --- a/cSploit/src/main/java/org/csploit/android/MainFragment.java +++ b/cSploit/src/main/java/org/csploit/android/MainFragment.java @@ -25,7 +25,6 @@ import android.content.SharedPreferences; import android.graphics.Typeface; import android.net.ConnectivityManager; -import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; @@ -57,7 +56,6 @@ import org.csploit.android.core.Plugin; import org.csploit.android.core.System; import org.csploit.android.events.Event; -import org.csploit.android.gui.dialogs.AboutDialog; import org.csploit.android.gui.dialogs.ChoiceDialog; import org.csploit.android.gui.dialogs.ConfirmDialog; import org.csploit.android.gui.dialogs.ConfirmDialog.ConfirmDialogListener; @@ -323,8 +321,6 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { mMenu = menu; configureMenu(); - super.onCreateOptionsMenu(menu, inflater); - getActivity().onCreateOptionsMenu(menu); } private boolean isConnectivityAvailable() { @@ -812,11 +808,6 @@ public void onItemSelected(int index) { .show(); return true; - case R.id.settings: - startActivity(new Intent(getActivity(), SettingsActivity.class)); - getActivity().overridePendingTransition(R.anim.fadeout, R.anim.fadein); - return true; - case R.id.ss_monitor: new Thread(new Runnable() { @Override @@ -835,18 +826,6 @@ public void run() { }).start(); return true; - case R.id.submit_issue: - String uri = getString(R.string.github_new_issue_url); - Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); - startActivity(browser); - // for fat-tire: - // String.format(getString(R.string.issue_message), getString(R.string.github_issues_url), getString(R.string.github_new_issue_url)); - return true; - - case R.id.about: - new AboutDialog(getActivity()).show(); - return true; - default: return super.onOptionsItemSelected(item); } diff --git a/cSploit/src/main/java/org/csploit/android/SettingsActivity.java b/cSploit/src/main/java/org/csploit/android/SettingsActivity.java index 5ff17402c5..803bfaa395 100644 --- a/cSploit/src/main/java/org/csploit/android/SettingsActivity.java +++ b/cSploit/src/main/java/org/csploit/android/SettingsActivity.java @@ -45,7 +45,4 @@ protected void onCreate(Bundle savedInstanceState) { } } - public void onBackPressed() { - f.onBackPressed(); - } } diff --git a/cSploit/src/main/java/org/csploit/android/SettingsFragment.java b/cSploit/src/main/java/org/csploit/android/SettingsFragment.java index ba6db23dd2..26dcd67166 100644 --- a/cSploit/src/main/java/org/csploit/android/SettingsFragment.java +++ b/cSploit/src/main/java/org/csploit/android/SettingsFragment.java @@ -32,7 +32,6 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.preference.TwoStatePreference; -import android.view.MenuItem; import android.view.View; import android.widget.Toast; @@ -71,7 +70,8 @@ public void onCreate(Bundle savedInstanceState) { getActivity().setTheme(R.style.PrefsTheme); super.onCreate(savedInstanceState); getActivity().getSupportFragmentManager().beginTransaction() - .replace(android.R.id.content, new PrefsFrag()) + .add(R.id.mainframe, new PrefsFrag()) + .addToBackStack(null) .commit(); } @@ -575,18 +575,6 @@ private void onMsfBranchesAvailable() { } } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - getActivity().onBackPressed(); - return true; - - default: - return super.onOptionsItemSelected(item); - } - } - @Override public void onDestroy() { if (mReceiver != null) { @@ -597,8 +585,4 @@ public void onDestroy() { } } - public void onBackPressed() { - getActivity().finish(); - getActivity().overridePendingTransition(R.anim.fadeout, R.anim.fadein); - } } diff --git a/cSploit/src/main/res/menu/main.xml b/cSploit/src/main/res/menu/main.xml index fa8fb0a2f8..7eab8ac0aa 100644 --- a/cSploit/src/main/res/menu/main.xml +++ b/cSploit/src/main/res/menu/main.xml @@ -1,29 +1,28 @@ - - + + android:title="@string/menu_add" + csploit:showAsAction="ifRoom" /> + android:title="@string/menu_scan" + csploit:showAsAction="ifRoom" /> + android:title="@string/menu_wifi_scan" + csploit:showAsAction="ifRoom" /> + android:title="@string/menu_ifaces" + csploit:showAsAction="ifRoom" /> - - - \ No newline at end of file diff --git a/cSploit/src/main/res/menu/top.xml b/cSploit/src/main/res/menu/top.xml new file mode 100644 index 0000000000..03ce4307e9 --- /dev/null +++ b/cSploit/src/main/res/menu/top.xml @@ -0,0 +1,15 @@ + + + > + + + + + \ No newline at end of file