Skip to content

Commit a5e51d3

Browse files
committed
Start breaking Activities into fragments (breaks MITM for some reason)
The first step in more UI flexibility-- will help with stuff like a side navigation bar and multi-fragment layouts for tablets. Unfortunately this breaks MITM for some reason TBD. It's the first step. Will probably do plugins as well.
1 parent 10c62ec commit a5e51d3

12 files changed

Lines changed: 2835 additions & 2581 deletions

File tree

cSploit/src/main/java/org/csploit/android/ActionActivity.java

Lines changed: 15 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -18,142 +18,35 @@
1818
*/
1919
package org.csploit.android;
2020

21-
import android.annotation.SuppressLint;
22-
import android.content.Context;
23-
import android.content.Intent;
2421
import android.content.SharedPreferences;
2522
import android.os.Bundle;
2623
import android.support.v7.app.AppCompatActivity;
27-
import android.view.LayoutInflater;
28-
import android.view.MenuItem;
29-
import android.view.View;
30-
import android.view.ViewGroup;
31-
import android.widget.AdapterView;
32-
import android.widget.ArrayAdapter;
33-
import android.widget.ImageView;
34-
import android.widget.ListView;
35-
import android.widget.TextView;
36-
import android.widget.Toast;
37-
38-
import org.csploit.android.core.Plugin;
39-
import org.csploit.android.core.System;
40-
import org.csploit.android.gui.dialogs.FinishDialog;
41-
import org.csploit.android.net.Target;
42-
43-
import java.util.ArrayList;
4424

4525
public class ActionActivity extends AppCompatActivity {
46-
private ArrayList<Plugin> mAvailable = null;
47-
private ListView theList;
48-
private Target mTarget;
26+
27+
ActionFragment f;
4928

5029
@Override
51-
public void onCreate(Bundle savedInstanceState) {
30+
protected void onCreate(Bundle savedInstanceState) {
31+
super.onCreate(savedInstanceState);
5232
SharedPreferences themePrefs = getSharedPreferences("THEME", 0);
53-
Boolean isDark = themePrefs.getBoolean("isDark", false);
54-
55-
if (isDark)
33+
if (themePrefs.getBoolean("isDark", false))
5634
setTheme(R.style.DarkTheme);
5735
else
5836
setTheme(R.style.AppTheme);
59-
super.onCreate(savedInstanceState);
60-
61-
mTarget = System.getCurrentTarget();
62-
63-
if (mTarget != null) {
64-
setTitle("cSploit > " + mTarget);
65-
setContentView(R.layout.actions_layout);
66-
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
67-
theList = (ListView) findViewById(R.id.android_list);
68-
mAvailable = System.getPluginsForTarget();
69-
ActionsAdapter mActionsAdapter = new ActionsAdapter();
70-
theList.setAdapter(mActionsAdapter);
71-
theList.setOnItemClickListener(new ListView.OnItemClickListener() {
72-
@Override
73-
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
74-
75-
if (System.checkNetworking(ActionActivity.this)) {
76-
Plugin plugin = mAvailable.get(position);
77-
System.setCurrentPlugin(plugin);
78-
79-
if (plugin.hasLayoutToShow()) {
80-
Toast.makeText(ActionActivity.this, getString(R.string.selected) + getString(plugin.getName()), Toast.LENGTH_SHORT).show();
81-
82-
startActivity(new Intent(
83-
ActionActivity.this,
84-
plugin.getClass()
85-
));
86-
overridePendingTransition(R.anim.fadeout, R.anim.fadein);
87-
} else
88-
plugin.onActionClick(getApplicationContext());
89-
}
90-
}
91-
});
92-
} else {
93-
new FinishDialog(getString(R.string.warning), getString(R.string.something_went_wrong), this).show();
37+
setContentView(R.layout.main);
38+
if (findViewById(R.id.mainframe) != null) {
39+
if (savedInstanceState != null) {
40+
return;
41+
}
42+
f = new ActionFragment();
43+
getSupportFragmentManager().beginTransaction()
44+
.add(R.id.mainframe, f).commit();
9445
}
9546
}
9647

97-
98-
@Override
99-
public boolean onOptionsItemSelected(MenuItem item) {
100-
switch (item.getItemId()) {
101-
case android.R.id.home:
102-
103-
onBackPressed();
104-
105-
return true;
106-
107-
default:
108-
return super.onOptionsItemSelected(item);
109-
}
110-
}
111-
112-
11348
@Override
11449
public void onBackPressed() {
115-
super.onBackPressed();
116-
overridePendingTransition(R.anim.fadeout, R.anim.fadein);
117-
}
118-
119-
public class ActionsAdapter extends ArrayAdapter<Plugin> {
120-
public ActionsAdapter() {
121-
super(ActionActivity.this, R.layout.actions_list_item, mAvailable);
122-
}
123-
124-
@SuppressLint("NewApi")
125-
@Override
126-
public View getView(int position, View convertView, ViewGroup parent) {
127-
View row = convertView;
128-
ActionHolder holder;
129-
130-
if (row == null) {
131-
LayoutInflater inflater = (LayoutInflater) ActionActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
132-
row = inflater.inflate(R.layout.actions_list_item, parent, false);
133-
if (getSharedPreferences("THEME", 0).getBoolean("isDark", false))
134-
row.setBackgroundResource(R.drawable.card_background_dark);
135-
holder = new ActionHolder();
136-
137-
holder.icon = (ImageView) (row != null ? row.findViewById(R.id.actionIcon) : null);
138-
holder.name = (TextView) (row != null ? row.findViewById(R.id.actionName) : null);
139-
holder.description = (TextView) (row != null ? row.findViewById(R.id.actionDescription) : null);
140-
if (row != null) row.setTag(holder);
141-
142-
} else holder = (ActionHolder) row.getTag();
143-
144-
Plugin action = mAvailable.get(position);
145-
146-
holder.icon.setImageResource(action.getIconResourceId());
147-
holder.name.setText(getString(action.getName()));
148-
holder.description.setText(getString(action.getDescription()));
149-
150-
return row;
151-
}
152-
153-
public class ActionHolder {
154-
ImageView icon;
155-
TextView name;
156-
TextView description;
157-
}
50+
f.onBackPressed();
15851
}
159-
}
52+
}
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
package org.csploit.android;
2+
3+
import android.annotation.SuppressLint;
4+
import android.content.Context;
5+
import android.content.Intent;
6+
import android.content.SharedPreferences;
7+
import android.os.Bundle;
8+
import android.support.annotation.Nullable;
9+
import android.support.v4.app.Fragment;
10+
import android.support.v4.content.ContextCompat;
11+
import android.support.v7.app.AppCompatActivity;
12+
import android.view.LayoutInflater;
13+
import android.view.MenuItem;
14+
import android.view.View;
15+
import android.view.ViewGroup;
16+
import android.widget.AdapterView;
17+
import android.widget.ArrayAdapter;
18+
import android.widget.ImageView;
19+
import android.widget.ListView;
20+
import android.widget.TextView;
21+
import android.widget.Toast;
22+
23+
import org.csploit.android.core.Plugin;
24+
import org.csploit.android.core.System;
25+
import org.csploit.android.gui.dialogs.FinishDialog;
26+
import org.csploit.android.net.Target;
27+
28+
import java.util.ArrayList;
29+
30+
public class ActionFragment extends Fragment {
31+
32+
private ArrayList<Plugin> mAvailable = null;
33+
private ListView theList;
34+
private Target mTarget;
35+
36+
37+
@Nullable
38+
@Override
39+
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
40+
super.onCreate(savedInstanceState);
41+
setHasOptionsMenu(true);
42+
return inflater.inflate(R.layout.actions_layout, container, false);
43+
}
44+
45+
@Override
46+
public void onViewCreated(View v, Bundle savedInstanceState) {
47+
SharedPreferences themePrefs = getActivity().getSharedPreferences("THEME", 0);
48+
Boolean isDark = themePrefs.getBoolean("isDark", false);
49+
if (isDark) {
50+
getActivity().setTheme(R.style.DarkTheme);
51+
v.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.background_window_dark));
52+
}
53+
else {
54+
getActivity().setTheme(R.style.AppTheme);
55+
v.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.background_window));
56+
}
57+
mTarget = org.csploit.android.core.System.getCurrentTarget();
58+
59+
if (mTarget != null) {
60+
getActivity().setTitle("cSploit > " + mTarget);
61+
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
62+
theList = (ListView) getActivity().findViewById(R.id.android_list);
63+
mAvailable = System.getPluginsForTarget();
64+
ActionsAdapter mActionsAdapter = new ActionsAdapter();
65+
theList.setAdapter(mActionsAdapter);
66+
theList.setOnItemClickListener(new ListView.OnItemClickListener() {
67+
@Override
68+
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
69+
70+
if (System.checkNetworking(getActivity())) {
71+
Plugin plugin = mAvailable.get(position);
72+
System.setCurrentPlugin(plugin);
73+
74+
if (plugin.hasLayoutToShow()) {
75+
Toast.makeText(getActivity(), getString(R.string.selected) + getString(plugin.getName()), Toast.LENGTH_SHORT).show();
76+
77+
startActivity(new Intent(
78+
getActivity(),
79+
plugin.getClass()
80+
));
81+
getActivity().overridePendingTransition(R.anim.fadeout, R.anim.fadein);
82+
} else
83+
plugin.onActionClick(getActivity().getApplicationContext());
84+
}
85+
}
86+
});
87+
} else {
88+
new FinishDialog(getString(R.string.warning), getString(R.string.something_went_wrong), getActivity()).show();
89+
}
90+
}
91+
92+
93+
@Override
94+
public boolean onOptionsItemSelected(MenuItem item) {
95+
switch (item.getItemId()) {
96+
case android.R.id.home:
97+
98+
getActivity().onBackPressed();
99+
100+
return true;
101+
102+
default:
103+
return super.onOptionsItemSelected(item);
104+
}
105+
}
106+
107+
public void onBackPressed() {
108+
getActivity().finish();
109+
getActivity().overridePendingTransition(R.anim.fadeout, R.anim.fadein);
110+
}
111+
112+
public class ActionsAdapter extends ArrayAdapter<Plugin> {
113+
public ActionsAdapter() {
114+
super(getActivity(), R.layout.actions_list_item, mAvailable);
115+
}
116+
117+
@SuppressLint("NewApi")
118+
@Override
119+
public View getView(int position, View convertView, ViewGroup parent) {
120+
View row = convertView;
121+
ActionHolder holder;
122+
123+
if (row == null) {
124+
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
125+
row = inflater.inflate(R.layout.actions_list_item, parent, false);
126+
if (getActivity().getSharedPreferences("THEME", 0).getBoolean("isDark", false))
127+
row.setBackgroundResource(R.drawable.card_background_dark);
128+
holder = new ActionHolder();
129+
130+
holder.icon = (ImageView) (row != null ? row.findViewById(R.id.actionIcon) : null);
131+
holder.name = (TextView) (row != null ? row.findViewById(R.id.actionName) : null);
132+
holder.description = (TextView) (row != null ? row.findViewById(R.id.actionDescription) : null);
133+
if (row != null) row.setTag(holder);
134+
135+
} else holder = (ActionHolder) row.getTag();
136+
137+
Plugin action = mAvailable.get(position);
138+
139+
holder.icon.setImageResource(action.getIconResourceId());
140+
holder.name.setText(getString(action.getName()));
141+
holder.description.setText(getString(action.getDescription()));
142+
143+
return row;
144+
}
145+
146+
public class ActionHolder {
147+
ImageView icon;
148+
TextView name;
149+
TextView description;
150+
}
151+
}
152+
153+
}

0 commit comments

Comments
 (0)