Skip to content

Commit 5b5b782

Browse files
committed
Release 2.2. Add Night theme
1 parent 9b75f7a commit 5b5b782

75 files changed

Lines changed: 354 additions & 135 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ android {
99
applicationId "com.mcal.disassembler"
1010
minSdkVersion 14
1111
targetSdkVersion 29
12-
versionCode 21
13-
versionName "2.1"
12+
versionCode 22
13+
versionName "2.2"
1414
/*ndk {
1515
abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a', 'x86_64'
1616
}*/

app/src/main/java/com/mcal/disassembler/App.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import android.annotation.SuppressLint
44
import android.app.Application
55
import android.content.Context
66
import android.content.SharedPreferences
7+
import androidx.appcompat.app.AppCompatDelegate
78
import androidx.preference.PreferenceManager
89
import com.mcal.disassembler.data.Database
10+
import com.mcal.disassembler.data.Preferences
911
import org.jetbrains.annotations.Nullable
1012

1113
class App : Application() {
@@ -14,6 +16,11 @@ class App : Application() {
1416
context = this
1517
preferences = PreferenceManager.getDefaultSharedPreferences(this)
1618
Database(getContext())
19+
if (Preferences.isNightModeEnabled()) {
20+
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
21+
} else {
22+
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
23+
}
1724
}
1825

1926
companion object {

app/src/main/java/com/mcal/disassembler/activities/ClassActivity.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ private void setupToolbar(String title) {
9797
getSupportActionBar().setDisplayShowHomeEnabled(true);
9898
}
9999

100+
@NotNull
100101
private List<Map<String, Object>> getData() {
101102
List<Map<String, Object>> list = new ArrayList<>();
102103
Map<String, Object> map;
@@ -106,10 +107,10 @@ private List<Map<String, Object>> getData() {
106107
for (int i = 0; i < classThis.getSymbols().size(); ++i) {
107108
map = new HashMap<>();
108109
if (classThis.getSymbols().get(i).getType() == 1)
109-
map.put("img", R.drawable.box_blue);
110+
map.put("img", R.drawable.ic_box_blue);
110111
else if (classThis.getSymbols().get(i).getType() == 2)
111-
map.put("img", R.drawable.box_red);
112-
else map.put("img", R.drawable.box_pink);
112+
map.put("img", R.drawable.ic_box_red);
113+
else map.put("img", R.drawable.ic_box_green);
113114
map.put("title", classThis.getSymbols().get(i).getDemangledName());
114115
map.put("info", classThis.getSymbols().get(i).getName());
115116
map.put("type", classThis.getSymbols().get(i).getType());
@@ -144,15 +145,17 @@ private DisassemblerVtable findVtable() {
144145
return VtableDumper.dump(path, getZTVName(name));
145146
}
146147

147-
private String getZTVName(String mangledName) {
148+
@NotNull
149+
private String getZTVName(@NotNull String mangledName) {
148150
StringBuilder ret = new StringBuilder("_ZTV");
149151
String[] names = mangledName.split("::");
150152
for (String str : names)
151153
ret.append(str.length()).append(str);
152154
return ret.toString();
153155
}
154156

155-
private String getSaveName(String mangledName) {
157+
@NotNull
158+
private String getSaveName(@NotNull String mangledName) {
156159
StringBuilder ret = new StringBuilder();
157160
String[] names = mangledName.split("::");
158161
boolean isFirstName = true;
@@ -233,7 +236,7 @@ static class ViewHolder {
233236

234237
private final class ItemClickListener implements OnItemClickListener {
235238
@Override
236-
public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
239+
public void onItemClick(AdapterView<?> arg0, @NotNull View view, int arg2, long arg3) {
237240
Bundle bundle = new Bundle();
238241
bundle.putString("demangledName", (String) (((ViewHolder) view.getTag()).title.getText()));
239242
bundle.putString("name", (String) (((ViewHolder) view.getTag()).info.getText()));

app/src/main/java/com/mcal/disassembler/activities/MainActivity.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,30 @@
11
package com.mcal.disassembler.activities;
22

33
import android.Manifest;
4+
import android.annotation.SuppressLint;
45
import android.app.ProgressDialog;
56
import android.content.Intent;
67
import android.content.pm.PackageManager;
78
import android.database.Cursor;
89
import android.os.Build;
910
import android.os.Bundle;
1011
import android.provider.Settings;
12+
import android.view.Menu;
13+
import android.view.MenuItem;
1114
import android.view.View;
1215
import android.widget.LinearLayout;
1316

17+
import androidx.annotation.NonNull;
1418
import androidx.appcompat.app.AppCompatActivity;
19+
import androidx.appcompat.app.AppCompatDelegate;
1520
import androidx.recyclerview.widget.LinearLayoutManager;
1621
import androidx.recyclerview.widget.RecyclerView;
1722

1823
import com.google.android.material.appbar.MaterialToolbar;
1924
import com.mcal.disassembler.R;
2025
import com.mcal.disassembler.adapters.ListAdapter;
2126
import com.mcal.disassembler.data.Database;
27+
import com.mcal.disassembler.data.Preferences;
2228
import com.mcal.disassembler.data.RecentsManager;
2329
import com.mcal.disassembler.interfaces.MainView;
2430
import com.mcal.disassembler.nativeapi.DisassemblerDumper;
@@ -68,6 +74,29 @@ public void onCreate(Bundle savedInstanceState) {
6874
//setupList();
6975
}
7076

77+
@Override
78+
public boolean onCreateOptionsMenu(Menu menu) {
79+
getMenuInflater().inflate(R.menu.menu_main, menu);
80+
return super.onCreateOptionsMenu(menu);
81+
}
82+
83+
@SuppressLint("WrongConstant")
84+
@Override
85+
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
86+
if (item.getItemId() == R.id.night_mode) {
87+
if (Preferences.isNightModeEnabled()) {
88+
Preferences.setNightModeEnabled(false);
89+
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
90+
getDelegate().applyDayNight();
91+
} else {
92+
Preferences.setNightModeEnabled(true);
93+
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
94+
getDelegate().applyDayNight();
95+
}
96+
}
97+
return super.onOptionsItemSelected(item);
98+
}
99+
71100
@SuppressWarnings("ConstantConditions")
72101
private void setupToolbar(String title) {
73102
toolbar = findViewById(R.id.toolbar);

app/src/main/java/com/mcal/disassembler/activities/SearchActivity.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ public class SearchActivity extends AppCompatActivity {
4242
private List<Map<String, Object>> data;
4343
private String path;
4444
private ListView list;
45+
private MaterialToolbar toolbar;
46+
4547
@SuppressLint("HandlerLeak")
4648
Handler mHandler = new Handler() {
4749
@Override
@@ -67,7 +69,6 @@ public void handleMessage(Message msg) {
6769
}
6870
}
6971
};
70-
private MaterialToolbar toolbar;
7172

7273
@Override
7374
public void onCreate(Bundle savedInstanceState) {
@@ -109,6 +110,7 @@ public void run() {
109110
}.start();
110111
}
111112

113+
@NotNull
112114
private List<Map<String, Object>> search_datas(String key, boolean usePattern) {
113115
List<Map<String, Object>> list = new ArrayList<>();
114116
Map<String, Object> map;
@@ -124,10 +126,10 @@ private List<Map<String, Object>> search_datas(String key, boolean usePattern) {
124126
for (int i = 0; i < searchResult.size(); ++i) {
125127
map = new HashMap<>();
126128
if (searchResult.get(i).getType() == 1)
127-
map.put("img", R.drawable.box_blue);
129+
map.put("img", R.drawable.ic_box_blue);
128130
else if (searchResult.get(i).getType() == 2)
129-
map.put("img", R.drawable.box_red);
130-
else map.put("img", R.drawable.box_pink);
131+
map.put("img", R.drawable.ic_box_red);
132+
else map.put("img", R.drawable.ic_box_green);
131133
map.put("title", searchResult.get(i).getDemangledName());
132134
map.put("info", searchResult.get(i).getName());
133135
map.put("type", searchResult.get(i).getType());
@@ -155,7 +157,7 @@ static class ViewHolder {
155157

156158
private final class ItemClickListener implements OnItemClickListener {
157159
@Override
158-
public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
160+
public void onItemClick(AdapterView<?> arg0, @NotNull View view, int arg2, long arg3) {
159161
Bundle bundle = new Bundle();
160162
bundle.putString("demangledName", (String) (((ViewHolder) view.getTag()).title.getText()));
161163
bundle.putString("name", (String) (((ViewHolder) view.getTag()).info.getText()));

app/src/main/java/com/mcal/disassembler/activities/SymbolActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ public void onCreate(Bundle savedInstanceState) {
4040

4141
AppCompatImageView imageTitile = findViewById(R.id.symbolactivityImageView);
4242
if (type == 1)
43-
imageTitile.setImageResource(R.drawable.box_blue);
43+
imageTitile.setImageResource(R.drawable.ic_box_blue);
4444
else if (type == 2)
45-
imageTitile.setImageResource(R.drawable.box_red);
45+
imageTitile.setImageResource(R.drawable.ic_box_red);
4646
else
47-
imageTitile.setImageResource(R.drawable.box_pink);
47+
imageTitile.setImageResource(R.drawable.ic_box_green);
4848

4949
AppCompatTextView textName = findViewById(R.id.symbolactivityTextViewName);
5050
textName.setText(name);

app/src/main/java/com/mcal/disassembler/activities/SymbolsActivity.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,17 @@ private void setupToolbar(String title) {
5858
getSupportActionBar().setDisplayShowHomeEnabled(true);
5959
}
6060

61+
@NotNull
6162
private List<Map<String, Object>> getData() {
6263
List<Map<String, Object>> list = new ArrayList<>();
6364
Map<String, Object> map;
6465
for (int i = 0; i < Dumper.symbols.size(); ++i) {
6566
map = new HashMap<>();
6667
if (Dumper.symbols.get(i).getType() == 1)
67-
map.put("img", R.drawable.box_blue);
68+
map.put("img", R.drawable.ic_box_blue);
6869
else if (Dumper.symbols.get(i).getType() == 2)
69-
map.put("img", R.drawable.box_red);
70-
else map.put("img", R.drawable.box_pink);
70+
map.put("img", R.drawable.ic_box_red);
71+
else map.put("img", R.drawable.ic_box_green);
7172
map.put("title", Dumper.symbols.get(i).getDemangledName());
7273
map.put("info", Dumper.symbols.get(i).getName());
7374
map.put("type", Dumper.symbols.get(i).getType());
@@ -119,7 +120,7 @@ static class ViewHolder {
119120

120121
private final class ItemClickListener implements OnItemClickListener {
121122
@Override
122-
public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
123+
public void onItemClick(AdapterView<?> arg0, @NotNull View view, int arg2, long arg3) {
123124
Bundle bundle = new Bundle();
124125
bundle.putString("demangledName", (String) (((ViewHolder) view.getTag()).title.getText()));
125126
bundle.putString("name", (String) (((ViewHolder) view.getTag()).info.getText()));

app/src/main/java/com/mcal/disassembler/activities/VtableActivity.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ public void save(View view) {
9090
new SnackBar(this, getString(R.string.done)).show();
9191
}
9292

93+
@NotNull
9394
private List<Map<String, Object>> getData() {
9495
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
9596
Map<String, Object> map;
@@ -98,7 +99,7 @@ private List<Map<String, Object>> getData() {
9899
return list;
99100
for (int i = 0; i < vtable.getVtables().size(); ++i) {
100101
map = new HashMap<>();
101-
map.put("img", R.drawable.box_blue);
102+
map.put("img", R.drawable.ic_box_blue);
102103
map.put("title", vtable.getVtables().get(i).getDemangledName());
103104
map.put("info", vtable.getVtables().get(i).getName());
104105
map.put("type", vtable.getVtables().get(i).getType());
@@ -126,7 +127,7 @@ static class ViewHolder {
126127

127128
private final class ItemClickListener implements OnItemClickListener {
128129
@Override
129-
public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
130+
public void onItemClick(AdapterView<?> arg0, @NotNull View view, int arg2, long arg3) {
130131
Bundle bundle = new Bundle();
131132
bundle.putString("demangledName", (String) (((ViewHolder) view.getTag()).title.getText()));
132133
bundle.putString("name", (String) (((ViewHolder) view.getTag()).info.getText()));

app/src/main/java/com/mcal/disassembler/adapters/ListAdapter.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import com.mcal.disassembler.data.RecentsManager;
1616
import com.mcal.disassembler.interfaces.MainView;
1717

18+
import org.jetbrains.annotations.NotNull;
19+
1820
import java.util.ArrayList;
1921

2022
public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder> implements Filterable {
@@ -39,7 +41,7 @@ public int getItemCount() {
3941
}
4042

4143
@Override
42-
public void onBindViewHolder(final ListAdapter.ViewHolder holder, final int position) {
44+
public void onBindViewHolder(@NotNull final ListAdapter.ViewHolder holder, final int position) {
4345
final String text = paths.get(position);
4446

4547
holder.itemText.setText(text);
@@ -54,7 +56,7 @@ public void onBindViewHolder(final ListAdapter.ViewHolder holder, final int posi
5456
}
5557

5658
@Override
57-
public ListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int p2) {
59+
public ListAdapter.ViewHolder onCreateViewHolder(@NotNull ViewGroup parent, int p2) {
5860
View item = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
5961
return new ViewHolder(item);
6062
}

app/src/main/java/com/mcal/disassembler/data/Database.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import android.database.sqlite.SQLiteOpenHelper;
66
import android.util.Log;
77

8+
import org.jetbrains.annotations.NotNull;
9+
810
public final class Database extends SQLiteOpenHelper {
911

1012
private static SQLiteDatabase database;
@@ -19,7 +21,7 @@ static SQLiteDatabase getDatabase() {
1921
}
2022

2123
@Override
22-
public void onCreate(SQLiteDatabase db) {
24+
public void onCreate(@NotNull SQLiteDatabase db) {
2325
db.execSQL("CREATE TABLE Recents (Path TEXT PRIMARY KEY)");
2426
}
2527

0 commit comments

Comments
 (0)