From 8dc8045d4cbed972f58f48eb57b9869c9ea8e721 Mon Sep 17 00:00:00 2001 From: fattire Date: Mon, 9 Nov 2015 02:39:20 -0800 Subject: [PATCH 01/21] Start adding a navigation drawer. Very basic and... doesn't yet perisist across the whole app. This is because we should: (1) decide what goes in the navigation drawer vs. menus (2) stop loading activities and start loading in fragments (3) think about how to use fragments in a cool way. --- .../org/csploit/android/MainActivity.java | 182 +++++++++++++++--- .../main/res/drawable/ic_bug_report_24dp.xml | 9 + .../src/main/res/drawable/ic_info_24dp.xml | 9 + .../main/res/drawable/ic_settings_24dp.xml | 9 + cSploit/src/main/res/layout/main.xml | 42 +++- .../src/main/res/layout/main_drawer_item.xml | 28 +++ cSploit/src/main/res/values/arrays.xml | 15 ++ cSploit/src/main/res/values/strings.xml | 3 + 8 files changed, 270 insertions(+), 27 deletions(-) create mode 100644 cSploit/src/main/res/drawable/ic_bug_report_24dp.xml create mode 100644 cSploit/src/main/res/drawable/ic_info_24dp.xml create mode 100644 cSploit/src/main/res/drawable/ic_settings_24dp.xml create mode 100644 cSploit/src/main/res/layout/main_drawer_item.xml create mode 100644 cSploit/src/main/res/values/arrays.xml diff --git a/cSploit/src/main/java/org/csploit/android/MainActivity.java b/cSploit/src/main/java/org/csploit/android/MainActivity.java index 79accb87a7..fb2a856d99 100644 --- a/cSploit/src/main/java/org/csploit/android/MainActivity.java +++ b/cSploit/src/main/java/org/csploit/android/MainActivity.java @@ -19,34 +19,168 @@ */ package org.csploit.android; +import android.app.Activity; +import android.content.Context; +import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Configuration; +import android.content.res.TypedArray; +import android.net.Uri; import android.os.Bundle; +import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; +import android.view.LayoutInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; + +import org.csploit.android.gui.dialogs.AboutDialog; + +import java.util.ArrayList; public class MainActivity extends AppCompatActivity { - MainFragment f; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - SharedPreferences themePrefs = getSharedPreferences("THEME", 0); - if (themePrefs.getBoolean("isDark", false)) - setTheme(R.style.DarkTheme); - else - setTheme(R.style.AppTheme); - setContentView(R.layout.main); - if (findViewById(R.id.mainframe) != null) { - if (savedInstanceState != null) { - return; - } - f = new MainFragment(); - getSupportFragmentManager().beginTransaction() - .add(R.id.mainframe, f).commit(); - } - } - - public void onBackPressed() { - f.onBackPressed(); - } + MainFragment f; + ActionBarDrawerToggle mDrawerToggle; + DrawerLayout dl; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + SharedPreferences themePrefs = getSharedPreferences("THEME", 0); + if (themePrefs.getBoolean("isDark", false)) + setTheme(R.style.DarkTheme); + else + setTheme(R.style.AppTheme); + setContentView(R.layout.main); + if (findViewById(R.id.mainframe) != null) { + if (savedInstanceState != null) { + return; + } + dl = (DrawerLayout) findViewById(R.id.drawer_layout); + ListView rv = (ListView) findViewById(R.id.drawer_listview); + String[] items = getResources().getStringArray(R.array.sidebar_item_array); + TypedArray option_icons = getResources().obtainTypedArray(R.array.sidebar_icon_array); + ArrayList itemsList = new ArrayList<>(); + // load up the drawer with options from the array + for (int x = 0; x < items.length; x++) { + itemsList.add(new DrawerItem(option_icons.getResourceId(x, -1), items[x])); + } + option_icons.recycle(); + rv.setAdapter(new SideBarArrayAdapter(this, + R.layout.main_drawer_item, itemsList)); + rv.setOnItemClickListener(new DrawerItemClickListener()); + mDrawerToggle = new ActionBarDrawerToggle(this, + dl, R.string.drawer_was_opened, R.string.drawer_was_closed); + dl.setDrawerListener(mDrawerToggle); + mDrawerToggle.syncState(); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); + + f = new MainFragment(); + getSupportFragmentManager().beginTransaction() + .add(R.id.mainframe, f).commit(); + } + } + + public boolean onOptionsItemSelected(MenuItem item) { + if (mDrawerToggle.onOptionsItemSelected(item)) { + return true; + } + return true; + } + + public void onBackPressed() { + f.onBackPressed(); + } + + public void launchSettings() { + startActivity(new Intent(this, SettingsActivity.class)); + overridePendingTransition(R.anim.fadeout, R.anim.fadein); + } + + public void launchAbout() { + new AboutDialog(this).show(); + } + + @Override + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + // Sync the toggle state after onRestoreInstanceState has occurred. + mDrawerToggle.syncState(); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + mDrawerToggle.onConfigurationChanged(newConfig); + } + + public class DrawerItem { + public int icon; + public String name; + + public DrawerItem(int icon, String name) { + this.icon = icon; + this.name = name; + } + } + + private class DrawerItemClickListener implements ListView.OnItemClickListener { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + dl.closeDrawers(); + switch (position) { + case 0: //about + launchAbout(); + break; + case 1: + 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); + break; + } + } + } + + public class SideBarArrayAdapter extends ArrayAdapter { + + private final Context context; + private final int layoutResourceId; + private ArrayList data = null; + + public SideBarArrayAdapter(Context context, int layoutResourceId, ArrayList data) { + super(context, layoutResourceId, data); + this.context = context; + this.layoutResourceId = layoutResourceId; + this.data = data; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater inflater = ((Activity) context).getLayoutInflater(); + View v = inflater.inflate(layoutResourceId, parent, false); + + ImageView imageView = (ImageView) v.findViewById(R.id.drawer_item_icon); + TextView textView = (TextView) v.findViewById(R.id.drawer_item_title); + + DrawerItem item = data.get(position); + + imageView.setImageResource(item.icon); + textView.setText(item.name); + + return v; + } + } + + } \ No newline at end of file diff --git a/cSploit/src/main/res/drawable/ic_bug_report_24dp.xml b/cSploit/src/main/res/drawable/ic_bug_report_24dp.xml new file mode 100644 index 0000000000..54a3c7ce57 --- /dev/null +++ b/cSploit/src/main/res/drawable/ic_bug_report_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/cSploit/src/main/res/drawable/ic_info_24dp.xml b/cSploit/src/main/res/drawable/ic_info_24dp.xml new file mode 100644 index 0000000000..60f3bfec63 --- /dev/null +++ b/cSploit/src/main/res/drawable/ic_info_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/cSploit/src/main/res/drawable/ic_settings_24dp.xml b/cSploit/src/main/res/drawable/ic_settings_24dp.xml new file mode 100644 index 0000000000..3e3f27f367 --- /dev/null +++ b/cSploit/src/main/res/drawable/ic_settings_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/cSploit/src/main/res/layout/main.xml b/cSploit/src/main/res/layout/main.xml index c0c59ac306..fb40cee137 100644 --- a/cSploit/src/main/res/layout/main.xml +++ b/cSploit/src/main/res/layout/main.xml @@ -1,5 +1,41 @@ - \ No newline at end of file + android:layout_gravity="start" + android:orientation="vertical"> + + + + + + + + + + + \ No newline at end of file diff --git a/cSploit/src/main/res/layout/main_drawer_item.xml b/cSploit/src/main/res/layout/main_drawer_item.xml new file mode 100644 index 0000000000..88cb1d7526 --- /dev/null +++ b/cSploit/src/main/res/layout/main_drawer_item.xml @@ -0,0 +1,28 @@ + + + + + + + diff --git a/cSploit/src/main/res/values/arrays.xml b/cSploit/src/main/res/values/arrays.xml new file mode 100644 index 0000000000..b9751cef1d --- /dev/null +++ b/cSploit/src/main/res/values/arrays.xml @@ -0,0 +1,15 @@ + + + + @string/menu_about + @string/menu_settings + @string/menu_submit_issue + + + @drawable/ic_info_24dp + @drawable/ic_settings_24dp + @drawable/ic_bug_report_24dp + + + \ No newline at end of file diff --git a/cSploit/src/main/res/values/strings.xml b/cSploit/src/main/res/values/strings.xml index 88f723d086..08bf4602ea 100644 --- a/cSploit/src/main/res/values/strings.xml +++ b/cSploit/src/main/res/values/strings.xml @@ -537,4 +537,7 @@ delete current session and start another? any interface Error initializing %s + The Drawer was opened. + The Drawer was closed. + From 1594224cd463de6e1e090735dd07b69ddb33c494 Mon Sep 17 00:00:00 2001 From: fattire Date: Tue, 10 Nov 2015 20:18:23 -0800 Subject: [PATCH 02/21] use kinda boring but less creative variable names --- .../org/csploit/android/MainActivity.java | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/cSploit/src/main/java/org/csploit/android/MainActivity.java b/cSploit/src/main/java/org/csploit/android/MainActivity.java index fb2a856d99..3c138ae3ec 100644 --- a/cSploit/src/main/java/org/csploit/android/MainActivity.java +++ b/cSploit/src/main/java/org/csploit/android/MainActivity.java @@ -46,9 +46,9 @@ public class MainActivity extends AppCompatActivity { - MainFragment f; + MainFragment mMainFragment; ActionBarDrawerToggle mDrawerToggle; - DrawerLayout dl; + DrawerLayout mDrawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { @@ -63,29 +63,29 @@ protected void onCreate(Bundle savedInstanceState) { if (savedInstanceState != null) { return; } - dl = (DrawerLayout) findViewById(R.id.drawer_layout); - ListView rv = (ListView) findViewById(R.id.drawer_listview); - String[] items = getResources().getStringArray(R.array.sidebar_item_array); - TypedArray option_icons = getResources().obtainTypedArray(R.array.sidebar_icon_array); - ArrayList itemsList = new ArrayList<>(); + mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); + ListView mListView = (ListView) findViewById(R.id.drawer_listview); + String[] mString = getResources().getStringArray(R.array.sidebar_item_array); + TypedArray mTypedArray = getResources().obtainTypedArray(R.array.sidebar_icon_array); + ArrayList mArrayList = new ArrayList<>(); // load up the drawer with options from the array - for (int x = 0; x < items.length; x++) { - itemsList.add(new DrawerItem(option_icons.getResourceId(x, -1), items[x])); + for (int x = 0; x < mString.length; x++) { + mArrayList.add(new DrawerItem(mTypedArray.getResourceId(x, -1), mString[x])); } - option_icons.recycle(); - rv.setAdapter(new SideBarArrayAdapter(this, - R.layout.main_drawer_item, itemsList)); - rv.setOnItemClickListener(new DrawerItemClickListener()); + mTypedArray.recycle(); + mListView.setAdapter(new SideBarArrayAdapter(this, + R.layout.main_drawer_item, mArrayList)); + mListView.setOnItemClickListener(new DrawerItemClickListener()); mDrawerToggle = new ActionBarDrawerToggle(this, - dl, R.string.drawer_was_opened, R.string.drawer_was_closed); - dl.setDrawerListener(mDrawerToggle); + mDrawerLayout, R.string.drawer_was_opened, R.string.drawer_was_closed); + mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerToggle.syncState(); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); - f = new MainFragment(); + mMainFragment = new MainFragment(); getSupportFragmentManager().beginTransaction() - .add(R.id.mainframe, f).commit(); + .add(R.id.mainframe, mMainFragment).commit(); } } @@ -97,7 +97,7 @@ public boolean onOptionsItemSelected(MenuItem item) { } public void onBackPressed() { - f.onBackPressed(); + mMainFragment.onBackPressed(); } public void launchSettings() { @@ -135,7 +135,7 @@ public DrawerItem(int icon, String name) { private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - dl.closeDrawers(); + mDrawerLayout.closeDrawers(); switch (position) { case 0: //about launchAbout(); From 7d26892911594b16f661812ac7aa296fbb2fca9e Mon Sep 17 00:00:00 2001 From: fattire Date: Tue, 10 Nov 2015 23:05:47 -0800 Subject: [PATCH 03/21] 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 From 479865f43f10a5c20607a902c5703a7bc3e340c2 Mon Sep 17 00:00:00 2001 From: tux_mind Date: Thu, 19 Nov 2015 23:24:22 +0100 Subject: [PATCH 04/21] fixes null pointer exception when interface name is not valid. --- cSploit/src/main/java/org/csploit/android/net/Network.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cSploit/src/main/java/org/csploit/android/net/Network.java b/cSploit/src/main/java/org/csploit/android/net/Network.java index 7eb1af8562..ca651b2612 100644 --- a/cSploit/src/main/java/org/csploit/android/net/Network.java +++ b/cSploit/src/main/java/org/csploit/android/net/Network.java @@ -158,7 +158,7 @@ public boolean initNetworkInterface(String iface) { mInterface = NetworkInterface.getByName(iface); - if (mInterface.getInterfaceAddresses().isEmpty()) { + if (mInterface == null || mInterface.getInterfaceAddresses().isEmpty()) { return false; } From 14b7476f91f3594562eec750119f9378b1f88aac Mon Sep 17 00:00:00 2001 From: tux_mind Date: Fri, 20 Nov 2015 00:47:17 +0100 Subject: [PATCH 05/21] fixes NullPointerException when no ActionBar has been associated --- .../src/main/java/org/csploit/android/ActionFragment.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cSploit/src/main/java/org/csploit/android/ActionFragment.java b/cSploit/src/main/java/org/csploit/android/ActionFragment.java index ba82dec8db..c257d77789 100644 --- a/cSploit/src/main/java/org/csploit/android/ActionFragment.java +++ b/cSploit/src/main/java/org/csploit/android/ActionFragment.java @@ -8,6 +8,7 @@ import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; +import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.MenuItem; @@ -58,7 +59,12 @@ public void onViewCreated(View v, Bundle savedInstanceState) { if (mTarget != null) { getActivity().setTitle("cSploit > " + mTarget); - ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); + ActionBar ab = ((AppCompatActivity) getActivity()).getSupportActionBar(); + + if(ab != null) { + ab.setDisplayHomeAsUpEnabled(true); + } + theList = (ListView) getActivity().findViewById(R.id.android_list); mAvailable = System.getPluginsForTarget(); ActionsAdapter mActionsAdapter = new ActionsAdapter(); From 6c8ba29c8ff7a9c5384e5e12f3c0267b8e5cfd3d Mon Sep 17 00:00:00 2001 From: tux_mind Date: Fri, 20 Nov 2015 00:47:39 +0100 Subject: [PATCH 06/21] reformat code --- .../org/csploit/android/ActionFragment.java | 205 +++++++++--------- 1 file changed, 102 insertions(+), 103 deletions(-) diff --git a/cSploit/src/main/java/org/csploit/android/ActionFragment.java b/cSploit/src/main/java/org/csploit/android/ActionFragment.java index c257d77789..f6e57bf8ca 100644 --- a/cSploit/src/main/java/org/csploit/android/ActionFragment.java +++ b/cSploit/src/main/java/org/csploit/android/ActionFragment.java @@ -30,130 +30,129 @@ public class ActionFragment extends Fragment { - private ArrayList mAvailable = null; - private ListView theList; - private Target mTarget; + private ArrayList mAvailable = null; + private ListView theList; + private Target mTarget; + + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + return inflater.inflate(R.layout.actions_layout, container, false); + } + + @Override + public void onViewCreated(View v, Bundle savedInstanceState) { + SharedPreferences themePrefs = getActivity().getSharedPreferences("THEME", 0); + Boolean isDark = themePrefs.getBoolean("isDark", false); + if (isDark) { + getActivity().setTheme(R.style.DarkTheme); + v.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.background_window_dark)); + } else { + getActivity().setTheme(R.style.AppTheme); + v.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.background_window)); + } + mTarget = org.csploit.android.core.System.getCurrentTarget(); + if (mTarget != null) { + getActivity().setTitle("cSploit > " + mTarget); + ActionBar ab = ((AppCompatActivity) getActivity()).getSupportActionBar(); - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); - return inflater.inflate(R.layout.actions_layout, container, false); - } + if (ab != null) { + ab.setDisplayHomeAsUpEnabled(true); + } - @Override - public void onViewCreated(View v, Bundle savedInstanceState) { - SharedPreferences themePrefs = getActivity().getSharedPreferences("THEME", 0); - Boolean isDark = themePrefs.getBoolean("isDark", false); - if (isDark) { - getActivity().setTheme(R.style.DarkTheme); - v.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.background_window_dark)); - } - else { - getActivity().setTheme(R.style.AppTheme); - v.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.background_window)); - } - mTarget = org.csploit.android.core.System.getCurrentTarget(); - - if (mTarget != null) { - getActivity().setTitle("cSploit > " + mTarget); - ActionBar ab = ((AppCompatActivity) getActivity()).getSupportActionBar(); - - if(ab != null) { - ab.setDisplayHomeAsUpEnabled(true); - } - - theList = (ListView) getActivity().findViewById(R.id.android_list); - mAvailable = System.getPluginsForTarget(); - ActionsAdapter mActionsAdapter = new ActionsAdapter(); - theList.setAdapter(mActionsAdapter); - theList.setOnItemClickListener(new ListView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - - if (System.checkNetworking(getActivity())) { - Plugin plugin = mAvailable.get(position); - System.setCurrentPlugin(plugin); - - if (plugin.hasLayoutToShow()) { - Toast.makeText(getActivity(), getString(R.string.selected) + getString(plugin.getName()), Toast.LENGTH_SHORT).show(); - - startActivity(new Intent( - getActivity(), - plugin.getClass() - )); - getActivity().overridePendingTransition(R.anim.fadeout, R.anim.fadein); - } else - plugin.onActionClick(getActivity().getApplicationContext()); - } - } - }); - } else { - new FinishDialog(getString(R.string.warning), getString(R.string.something_went_wrong), getActivity()).show(); + theList = (ListView) getActivity().findViewById(R.id.android_list); + mAvailable = System.getPluginsForTarget(); + ActionsAdapter mActionsAdapter = new ActionsAdapter(); + theList.setAdapter(mActionsAdapter); + theList.setOnItemClickListener(new ListView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + + if (System.checkNetworking(getActivity())) { + Plugin plugin = mAvailable.get(position); + System.setCurrentPlugin(plugin); + + if (plugin.hasLayoutToShow()) { + Toast.makeText(getActivity(), getString(R.string.selected) + getString(plugin.getName()), Toast.LENGTH_SHORT).show(); + + startActivity(new Intent( + getActivity(), + plugin.getClass() + )); + getActivity().overridePendingTransition(R.anim.fadeout, R.anim.fadein); + } else + plugin.onActionClick(getActivity().getApplicationContext()); + } } + }); + } else { + new FinishDialog(getString(R.string.warning), getString(R.string.something_went_wrong), getActivity()).show(); } + } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: - getActivity().onBackPressed(); + getActivity().onBackPressed(); - return true; + return true; - default: - return super.onOptionsItemSelected(item); - } + default: + return super.onOptionsItemSelected(item); } + } - public void onBackPressed() { - getActivity().finish(); - getActivity().overridePendingTransition(R.anim.fadeout, R.anim.fadein); - } + public void onBackPressed() { + getActivity().finish(); + getActivity().overridePendingTransition(R.anim.fadeout, R.anim.fadein); + } - public class ActionsAdapter extends ArrayAdapter { - public ActionsAdapter() { - super(getActivity(), R.layout.actions_list_item, mAvailable); - } + public class ActionsAdapter extends ArrayAdapter { + public ActionsAdapter() { + super(getActivity(), R.layout.actions_list_item, mAvailable); + } - @SuppressLint("NewApi") - @Override - public View getView(int position, View convertView, ViewGroup parent) { - View row = convertView; - ActionHolder holder; + @SuppressLint("NewApi") + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View row = convertView; + ActionHolder holder; - if (row == null) { - LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); - row = inflater.inflate(R.layout.actions_list_item, parent, false); - if (getActivity().getSharedPreferences("THEME", 0).getBoolean("isDark", false)) - row.setBackgroundResource(R.drawable.card_background_dark); - holder = new ActionHolder(); + if (row == null) { + LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + row = inflater.inflate(R.layout.actions_list_item, parent, false); + if (getActivity().getSharedPreferences("THEME", 0).getBoolean("isDark", false)) + row.setBackgroundResource(R.drawable.card_background_dark); + holder = new ActionHolder(); - holder.icon = (ImageView) (row != null ? row.findViewById(R.id.actionIcon) : null); - holder.name = (TextView) (row != null ? row.findViewById(R.id.actionName) : null); - holder.description = (TextView) (row != null ? row.findViewById(R.id.actionDescription) : null); - if (row != null) row.setTag(holder); + holder.icon = (ImageView) (row != null ? row.findViewById(R.id.actionIcon) : null); + holder.name = (TextView) (row != null ? row.findViewById(R.id.actionName) : null); + holder.description = (TextView) (row != null ? row.findViewById(R.id.actionDescription) : null); + if (row != null) row.setTag(holder); - } else holder = (ActionHolder) row.getTag(); + } else holder = (ActionHolder) row.getTag(); - Plugin action = mAvailable.get(position); + Plugin action = mAvailable.get(position); - holder.icon.setImageResource(action.getIconResourceId()); - holder.name.setText(getString(action.getName())); - holder.description.setText(getString(action.getDescription())); + holder.icon.setImageResource(action.getIconResourceId()); + holder.name.setText(getString(action.getName())); + holder.description.setText(getString(action.getDescription())); - return row; - } + return row; + } - public class ActionHolder { - ImageView icon; - TextView name; - TextView description; - } + public class ActionHolder { + ImageView icon; + TextView name; + TextView description; } + } } \ No newline at end of file From 06236ad578d8ef173dbac8d6b94e96685f395a74 Mon Sep 17 00:00:00 2001 From: tux_mind Date: Fri, 20 Nov 2015 00:50:12 +0100 Subject: [PATCH 07/21] changed drawer implementation. will now use a drawer that will overlap the action bar, hiding the menu. It's just a PoC, there is much more work to do. --- cSploit/build.gradle | 2 +- .../org/csploit/android/MainActivity.java | 335 +++++++++--------- cSploit/src/main/res/layout/main.xml | 49 ++- .../src/main/res/layout/main_drawer_item.xml | 28 -- cSploit/src/main/res/layout/nav_header.xml | 18 + cSploit/src/main/res/layout/toolbar.xml | 11 + cSploit/src/main/res/menu/drawer_view.xml | 35 ++ cSploit/src/main/res/menu/top.xml | 15 - cSploit/src/main/res/values/arrays.xml | 15 - cSploit/src/main/res/values/style.xml | 11 +- 10 files changed, 258 insertions(+), 261 deletions(-) delete mode 100644 cSploit/src/main/res/layout/main_drawer_item.xml create mode 100644 cSploit/src/main/res/layout/nav_header.xml create mode 100644 cSploit/src/main/res/layout/toolbar.xml create mode 100644 cSploit/src/main/res/menu/drawer_view.xml delete mode 100644 cSploit/src/main/res/menu/top.xml delete mode 100644 cSploit/src/main/res/values/arrays.xml diff --git a/cSploit/build.gradle b/cSploit/build.gradle index 1181c22f61..cb91c9fe9b 100644 --- a/cSploit/build.gradle +++ b/cSploit/build.gradle @@ -23,7 +23,7 @@ apply plugin: 'com.android.application' dependencies { compile 'com.android.support:support-v4:23.1.0' compile 'com.android.support:appcompat-v7:23.1.0' - compile 'com.android.support:design:23.1.0' + compile 'com.android.support:design:23.1.1' compile 'com.android.support:preference-v7:23.1.0' compile 'org.apache.commons:commons-compress:1.10' compile 'commons-net:commons-net:3.3' diff --git a/cSploit/src/main/java/org/csploit/android/MainActivity.java b/cSploit/src/main/java/org/csploit/android/MainActivity.java index 82ba94725e..cfeb264c10 100644 --- a/cSploit/src/main/java/org/csploit/android/MainActivity.java +++ b/cSploit/src/main/java/org/csploit/android/MainActivity.java @@ -19,216 +19,211 @@ */ package org.csploit.android; -import android.app.Activity; -import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; -import android.content.res.TypedArray; import android.net.Uri; import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.design.widget.NavigationView; +import android.support.v4.app.Fragment; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; -import android.view.LayoutInflater; +import android.support.v7.widget.Toolbar; import android.view.Menu; -import android.view.MenuInflater; import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; +import org.csploit.android.core.*; +import org.csploit.android.core.System; import org.csploit.android.gui.dialogs.AboutDialog; -import java.util.ArrayList; - -public class MainActivity extends AppCompatActivity { - - MainFragment mMainFragment; - ActionBarDrawerToggle mDrawerToggle; - DrawerLayout mDrawerLayout; - private Menu mMenu = null; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - SharedPreferences themePrefs = getSharedPreferences("THEME", 0); - if (themePrefs.getBoolean("isDark", false)) - setTheme(R.style.DarkTheme); - else - setTheme(R.style.AppTheme); - setContentView(R.layout.main); - if (findViewById(R.id.mainframe) != null) { - if (savedInstanceState != null) { - return; - } - mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); - ListView mListView = (ListView) findViewById(R.id.drawer_listview); - String[] mString = getResources().getStringArray(R.array.sidebar_item_array); - TypedArray mTypedArray = getResources().obtainTypedArray(R.array.sidebar_icon_array); - ArrayList mArrayList = new ArrayList<>(); - // load up the drawer with options from the array - for (int x = 0; x < mString.length; x++) { - mArrayList.add(new DrawerItem(mTypedArray.getResourceId(x, -1), mString[x])); - } - mTypedArray.recycle(); - mListView.setAdapter(new SideBarArrayAdapter(this, - R.layout.main_drawer_item, mArrayList)); - mListView.setOnItemClickListener(new DrawerItemClickListener()); - mDrawerToggle = new ActionBarDrawerToggle(this, - mDrawerLayout, R.string.drawer_was_opened, R.string.drawer_was_closed); - mDrawerLayout.setDrawerListener(mDrawerToggle); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - getSupportActionBar().setHomeButtonEnabled(true); - - mMainFragment = new MainFragment(); - getSupportFragmentManager().beginTransaction() - .add(R.id.mainframe, mMainFragment, "MainFragment") - .setCustomAnimations(R.anim.fadein, R.anim.fadeout, R.anim.fadein, R.anim.fadeout) - .commit(); - } - } - - @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; - } +public class MainActivity extends AppCompatActivity + implements NavigationView.OnNavigationItemSelectedListener { - switch (item.getItemId()) { + private MainFragment mMainFragment; + private ActionBarDrawerToggle mDrawerToggle; + private DrawerLayout mDrawerLayout; + private NavigationView nvDrawer; + private Toolbar toolbar; + private Menu mMenu = null; - case R.id.settings: - launchSettings(); - return true; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + SharedPreferences themePrefs = getSharedPreferences("THEME", 0); + if (themePrefs.getBoolean("isDark", false)) + setTheme(R.style.DarkTheme); + else + setTheme(R.style.AppTheme); - case R.id.about: - launchAbout(); - return true; + setContentView(R.layout.main); - case R.id.submit_issue: - submitIssue(); - return true; + toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); - default: - return false; - } + if (savedInstanceState != null) { + return; } - 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)); - + mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); + nvDrawer = (NavigationView) findViewById(R.id.nvView); + + nvDrawer.setNavigationItemSelectedListener(this); + + mDrawerToggle = new ActionBarDrawerToggle(this, + mDrawerLayout, R.string.drawer_was_opened, R.string.drawer_was_closed); + mDrawerLayout.setDrawerListener(mDrawerToggle); + + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); + + + mMainFragment = new MainFragment(); + getSupportFragmentManager().beginTransaction() + .add(R.id.mainframe, mMainFragment, "MainFragment") + .setCustomAnimations(R.anim.fadein, R.anim.fadeout, R.anim.fadein, R.anim.fadeout) + .commit(); + } + + @Override + public boolean onNavigationItemSelected(MenuItem item) { + Fragment fragment = null; + String iface = null; + + switch(item.getItemId()) { + case R.id.nav_iface_eth0: + iface = "eth0"; + fragment = getSupportFragmentManager().findFragmentByTag("MainFragment"); + break; + case R.id.nav_iface_rmnet: + iface = "rmnet_usb0"; + fragment = getSupportFragmentManager().findFragmentByTag("MainFragment"); + break; + case R.id.nav_iface_wlan0: + iface = "wlan0"; + fragment = getSupportFragmentManager().findFragmentByTag("MainFragment"); + break; + case R.id.nav_settings: + fragment = new SettingsFragment.PrefsFrag(); + break; + case R.id.nav_about: + launchAbout(); + break; + case R.id.nav_report_issue: + submitIssue(); + break; } - public void launchAbout() { - new AboutDialog(this).show(); + if(iface != null) { + if(!changeIface(iface)) { + mDrawerLayout.closeDrawers(); + return false; + } } - @Override - protected void onPostCreate(Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); - // Sync the toggle state after onRestoreInstanceState has occurred. - mDrawerToggle.syncState(); + if(fragment != null) { + changeFragment(fragment); + setTitle(item.getTitle()); } - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - mDrawerToggle.onConfigurationChanged(newConfig); - } + mDrawerLayout.closeDrawers(); - public class DrawerItem { - public int icon; - public String name; + return fragment != null; + } - public DrawerItem(int icon, String name) { - this.icon = icon; - this.name = name; - } + private boolean changeIface(@NonNull String ifname) { + String current = System.getNetwork().getInterface().getDisplayName(); + + if(ifname.equals(current)) { + return true; } - private class DrawerItemClickListener implements ListView.OnItemClickListener { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - mDrawerLayout.closeDrawers(); - switch (position) { - case 0: //about - launchAbout(); - break; - case 1: - launchSettings(); - break; - case 2: - submitIssue(); - break; - } - } + System.setIfname(ifname); + if(System.reloadNetworkMapping()) { + return true; } - public class SideBarArrayAdapter extends ArrayAdapter { + Logger.warning("failed to change iface from " + current + " to " + ifname); + + System.setIfname(current); + System.reloadNetworkMapping(); + return false; + } - private final Context context; - private final int layoutResourceId; - private ArrayList data = null; + private void changeFragment(@NonNull Fragment fragment) { + Logger.debug("loading fragment " + fragment); + getSupportFragmentManager().beginTransaction() + .replace(R.id.mainframe, fragment) + .addToBackStack(null) + .setCustomAnimations(R.anim.fadein, R.anim.fadeout, R.anim.fadein, R.anim.fadeout) + .commit(); + } - public SideBarArrayAdapter(Context context, int layoutResourceId, ArrayList data) { - super(context, layoutResourceId, data); - this.context = context; - this.layoutResourceId = layoutResourceId; - this.data = data; - } + private void launchSettings() { + changeFragment(new SettingsFragment.PrefsFrag()); + } - @Override - public View getView(int position, View convertView, ViewGroup parent) { - LayoutInflater inflater = ((Activity) context).getLayoutInflater(); - View v = inflater.inflate(layoutResourceId, parent, false); - ImageView imageView = (ImageView) v.findViewById(R.id.drawer_item_icon); - TextView textView = (TextView) v.findViewById(R.id.drawer_item_title); + @Override + public boolean onOptionsItemSelected(final MenuItem item) { + if (mDrawerToggle.onOptionsItemSelected(item)) { + return true; + } - DrawerItem item = data.get(position); + switch (item.getItemId()) { - imageView.setImageResource(item.icon); - textView.setText(item.name); + case R.id.nav_settings: + launchSettings(); + return true; - return v; - } + case R.id.nav_about: + launchAbout(); + return true; + + case R.id.nav_report_issue: + submitIssue(); + return true; } - @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(); - } + return super.onOptionsItemSelected(item); + } + + 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() { + new AboutDialog(this).show(); + } + + @Override + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + // Sync the toggle state after onRestoreInstanceState has occurred. + mDrawerToggle.syncState(); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + // Pass any configuration change to the drawer toggles + mDrawerToggle.onConfigurationChanged(newConfig); + } + + @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/res/layout/main.xml b/cSploit/src/main/res/layout/main.xml index fb40cee137..489a54e628 100644 --- a/cSploit/src/main/res/layout/main.xml +++ b/cSploit/src/main/res/layout/main.xml @@ -1,41 +1,34 @@ - - - + android:layout_height="match_parent"> - - + android:layout_height="wrap_content" /> - - + android:layout_height="match_parent"> + + + \ No newline at end of file diff --git a/cSploit/src/main/res/layout/main_drawer_item.xml b/cSploit/src/main/res/layout/main_drawer_item.xml deleted file mode 100644 index 88cb1d7526..0000000000 --- a/cSploit/src/main/res/layout/main_drawer_item.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/cSploit/src/main/res/layout/nav_header.xml b/cSploit/src/main/res/layout/nav_header.xml new file mode 100644 index 0000000000..6ec9a7cdca --- /dev/null +++ b/cSploit/src/main/res/layout/nav_header.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/cSploit/src/main/res/layout/toolbar.xml b/cSploit/src/main/res/layout/toolbar.xml new file mode 100644 index 0000000000..82295434d7 --- /dev/null +++ b/cSploit/src/main/res/layout/toolbar.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/cSploit/src/main/res/menu/drawer_view.xml b/cSploit/src/main/res/menu/drawer_view.xml new file mode 100644 index 0000000000..8ed8b1f36a --- /dev/null +++ b/cSploit/src/main/res/menu/drawer_view.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cSploit/src/main/res/menu/top.xml b/cSploit/src/main/res/menu/top.xml deleted file mode 100644 index 03ce4307e9..0000000000 --- a/cSploit/src/main/res/menu/top.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - > - - - - - \ No newline at end of file diff --git a/cSploit/src/main/res/values/arrays.xml b/cSploit/src/main/res/values/arrays.xml deleted file mode 100644 index b9751cef1d..0000000000 --- a/cSploit/src/main/res/values/arrays.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - @string/menu_about - @string/menu_settings - @string/menu_submit_issue - - - @drawable/ic_info_24dp - @drawable/ic_settings_24dp - @drawable/ic_bug_report_24dp - - - \ No newline at end of file diff --git a/cSploit/src/main/res/values/style.xml b/cSploit/src/main/res/values/style.xml index 628c655cfb..d3d11d0f3b 100644 --- a/cSploit/src/main/res/values/style.xml +++ b/cSploit/src/main/res/values/style.xml @@ -1,8 +1,8 @@ - + +