mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-04-27 01:06:14 +00:00
Refactor night mode code a bit
This commit is contained in:
parent
a140ba8506
commit
782f24342c
7 changed files with 92 additions and 66 deletions
|
@ -3,7 +3,6 @@ package me.impy.aegis;
|
|||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
@ -12,7 +11,7 @@ import android.widget.TextView;
|
|||
|
||||
import me.impy.aegis.crypto.KeyInfo;
|
||||
|
||||
public class AddProfileActivity extends AppCompatActivity {
|
||||
public class AddProfileActivity extends AegisActivity {
|
||||
private KeyProfile _keyProfile;
|
||||
|
||||
private EditText _profileName;
|
||||
|
@ -21,14 +20,10 @@ public class AddProfileActivity extends AppCompatActivity {
|
|||
private TextView _textPeriod;
|
||||
private TextView _textOtp;
|
||||
|
||||
private AegisApplication _app;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
_app = (AegisApplication) getApplication();
|
||||
|
||||
setPreferredTheme();
|
||||
setContentView(R.layout.activity_add_profile);
|
||||
|
||||
_profileName = findViewById(R.id.addProfileName);
|
||||
|
@ -60,6 +55,15 @@ public class AddProfileActivity extends AppCompatActivity {
|
|||
//_profileName.setText(_keyProfile.Info.getAccountName());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setPreferredTheme(boolean nightMode) {
|
||||
if (nightMode) {
|
||||
setTheme(R.style.AppTheme_Dark_TransparentActionBar);
|
||||
} else {
|
||||
setTheme(R.style.AppTheme_Default_TransparentActionBar);
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeForm() {
|
||||
KeyInfo info = _keyProfile.getEntry().getInfo();
|
||||
_profileName.setText(info.getAccountName());
|
||||
|
@ -81,12 +85,4 @@ public class AddProfileActivity extends AppCompatActivity {
|
|||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void setPreferredTheme() {
|
||||
if (_app.getPreferences().getBoolean("pref_night_mode", false)) {
|
||||
setTheme(R.style.AppTheme_Dark_TransparentActionBar);
|
||||
} else {
|
||||
setTheme(R.style.AppTheme_Default_TransparentActionBar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
23
app/src/main/java/me/impy/aegis/AegisActivity.java
Normal file
23
app/src/main/java/me/impy/aegis/AegisActivity.java
Normal file
|
@ -0,0 +1,23 @@
|
|||
package me.impy.aegis;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
|
||||
public abstract class AegisActivity extends AppCompatActivity {
|
||||
private AegisApplication _app;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
_app = (AegisApplication) getApplication();
|
||||
|
||||
boolean nightMode = _app.getPreferences().getBoolean("pref_night_mode", false);
|
||||
setPreferredTheme(nightMode);
|
||||
}
|
||||
|
||||
protected AegisApplication getApp() {
|
||||
return _app;
|
||||
}
|
||||
|
||||
protected abstract void setPreferredTheme(boolean nightMode);
|
||||
}
|
|
@ -4,7 +4,6 @@ import android.content.DialogInterface;
|
|||
import android.content.Intent;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
@ -28,7 +27,7 @@ import me.impy.aegis.crypto.slots.SlotCollection;
|
|||
import me.impy.aegis.helpers.FingerprintUiHelper;
|
||||
import me.impy.aegis.helpers.AuthHelper;
|
||||
|
||||
public class AuthActivity extends AppCompatActivity implements FingerprintUiHelper.Callback, SlotCollectionTask.Callback {
|
||||
public class AuthActivity extends AegisActivity implements FingerprintUiHelper.Callback, SlotCollectionTask.Callback {
|
||||
public static final int RESULT_OK = 0;
|
||||
public static final int RESULT_EXCEPTION = 1;
|
||||
|
||||
|
@ -76,6 +75,15 @@ public class AuthActivity extends AppCompatActivity implements FingerprintUiHelp
|
|||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setPreferredTheme(boolean nightMode) {
|
||||
if (nightMode) {
|
||||
setTheme(R.style.AppTheme_Dark);
|
||||
} else {
|
||||
setTheme(R.style.AppTheme_Default);
|
||||
}
|
||||
}
|
||||
|
||||
private void showError() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle("Decryption error");
|
||||
|
|
|
@ -14,7 +14,6 @@ import android.os.Build;
|
|||
import android.support.design.widget.BottomSheetDialog;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
@ -41,7 +40,7 @@ import me.impy.aegis.importers.DatabaseImporter;
|
|||
import me.impy.aegis.helpers.SimpleItemTouchHelperCallback;
|
||||
import me.impy.aegis.util.ByteInputStream;
|
||||
|
||||
public class MainActivity extends AppCompatActivity implements KeyProfileAdapter.Listener {
|
||||
public class MainActivity extends AegisActivity implements KeyProfileAdapter.Listener {
|
||||
// activity request codes
|
||||
private static final int CODE_GET_KEYINFO = 0;
|
||||
private static final int CODE_ADD_KEYINFO = 1;
|
||||
|
@ -68,14 +67,6 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
_app = (AegisApplication) getApplication();
|
||||
_db = _app.getDatabaseManager();
|
||||
|
||||
// set the theme
|
||||
if (_app.getPreferences().getBoolean("pref_night_mode", false)) {
|
||||
_nightMode = true;
|
||||
setTheme(R.style.AppTheme_Dark_NoActionBar);
|
||||
} else {
|
||||
setPreferredTheme();
|
||||
}
|
||||
|
||||
// set up the main view
|
||||
setContentView(R.layout.activity_main);
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
|
@ -108,9 +99,7 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
try {
|
||||
_db.load();
|
||||
if (!_db.isUnlocked()) {
|
||||
Intent intent = new Intent(this, AuthActivity.class);
|
||||
intent.putExtra("slots", _db.getFile().getSlots());
|
||||
startActivityForResult(intent, CODE_DECRYPT);
|
||||
startAuthActivity();
|
||||
}
|
||||
} catch (FileNotFoundException e) {
|
||||
// start the intro if the db file was not found
|
||||
|
@ -130,6 +119,16 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setPreferredTheme(boolean nightMode) {
|
||||
if (nightMode) {
|
||||
setTheme(R.style.AppTheme_Dark_NoActionBar);
|
||||
} else if (_nightMode) {
|
||||
setTheme(R.style.AppTheme_Default_NoActionBar);
|
||||
}
|
||||
_nightMode = nightMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
switch (requestCode) {
|
||||
|
@ -353,7 +352,7 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Toast.makeText(this, "An error occurred while trying to load/decrypt the database", Toast.LENGTH_LONG).show();
|
||||
recreate();
|
||||
startAuthActivity();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -367,7 +366,7 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Toast.makeText(this, "An error occurred while trying to decrypt the database", Toast.LENGTH_LONG).show();
|
||||
recreate();
|
||||
startAuthActivity();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -400,7 +399,12 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
setPreferredTheme();
|
||||
|
||||
boolean nightMode = _app.getPreferences().getBoolean("pref_night_mode", false);
|
||||
if (nightMode != _nightMode) {
|
||||
setPreferredTheme(nightMode);
|
||||
recreate();
|
||||
}
|
||||
}
|
||||
|
||||
private BottomSheetDialog createBottomSheet(KeyProfile profile) {
|
||||
|
@ -485,15 +489,19 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
e.printStackTrace();
|
||||
Toast.makeText(this, "An error occurred while trying to lock the database", Toast.LENGTH_LONG).show();
|
||||
}
|
||||
Intent intent = new Intent(this, AuthActivity.class);
|
||||
intent.putExtra("slots", _db.getFile().getSlots());
|
||||
startActivityForResult(intent, CODE_DECRYPT);
|
||||
startAuthActivity();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void startAuthActivity() {
|
||||
Intent intent = new Intent(this, AuthActivity.class);
|
||||
intent.putExtra("slots", _db.getFile().getSlots());
|
||||
startActivityForResult(intent, CODE_DECRYPT);
|
||||
}
|
||||
|
||||
private void initializeAppShortcuts() {
|
||||
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
|
||||
return;
|
||||
|
@ -523,23 +531,6 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
}
|
||||
}
|
||||
|
||||
private void setPreferredTheme() {
|
||||
boolean restart = false;
|
||||
if (_app.getPreferences().getBoolean("pref_night_mode", false)) {
|
||||
if (!_nightMode) {
|
||||
setTheme(R.style.AppTheme_Dark_NoActionBar);
|
||||
restart = true;
|
||||
}
|
||||
} else if (_nightMode) {
|
||||
setTheme(R.style.AppTheme_Default_NoActionBar);
|
||||
restart = true;
|
||||
}
|
||||
|
||||
if (restart) {
|
||||
recreate();
|
||||
}
|
||||
}
|
||||
|
||||
private void saveDatabase() {
|
||||
try {
|
||||
_db.save();
|
||||
|
@ -564,7 +555,7 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
}
|
||||
|
||||
private void updateLockIcon() {
|
||||
// hide the lock icon if the database is not encrypted
|
||||
// hide the lock icon if the database is not unlocked
|
||||
if (_menu != null && _db.isUnlocked()) {
|
||||
MenuItem item = _menu.findItem(R.id.action_lock);
|
||||
item.setVisible(_db.getFile().isEncrypted());
|
||||
|
|
|
@ -7,23 +7,23 @@ import android.preference.PreferenceFragment;
|
|||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class PreferencesActivity extends AppCompatActivity {
|
||||
public class PreferencesActivity extends AegisActivity {
|
||||
public static final int ACTION_EXPORT = 0;
|
||||
|
||||
private AegisApplication _app;
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferencesFragment()).commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
_app = (AegisApplication) getApplication();
|
||||
|
||||
if (_app.getPreferences().getBoolean("pref_night_mode", false)) {
|
||||
protected void setPreferredTheme(boolean nightMode) {
|
||||
if (nightMode) {
|
||||
setTheme(R.style.AppTheme_Dark);
|
||||
} else {
|
||||
setTheme(R.style.AppTheme_Default);
|
||||
}
|
||||
|
||||
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferencesFragment()).commit();
|
||||
}
|
||||
|
||||
public static class PreferencesFragment extends PreferenceFragment {
|
||||
|
|
|
@ -20,13 +20,13 @@ import me.impy.aegis.crypto.KeyInfo;
|
|||
import me.impy.aegis.db.DatabaseEntry;
|
||||
import me.impy.aegis.helpers.SquareFinderView;
|
||||
|
||||
public class ScannerActivity extends Activity implements ZXingScannerView.ResultHandler {
|
||||
public class ScannerActivity extends AegisActivity implements ZXingScannerView.ResultHandler {
|
||||
private static final int CODE_ASK_PERMS = 0;
|
||||
|
||||
private ZXingScannerView _scannerView;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle state) {
|
||||
protected void onCreate(Bundle state) {
|
||||
super.onCreate(state);
|
||||
|
||||
_scannerView = new ZXingScannerView(this) {
|
||||
|
@ -42,6 +42,11 @@ public class ScannerActivity extends Activity implements ZXingScannerView.Result
|
|||
ActivityCompat.requestPermissions(ScannerActivity.this, new String[]{Manifest.permission.CAMERA}, CODE_ASK_PERMS);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setPreferredTheme(boolean nightMode) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
tools:layout_editor_absoluteX="8dp">
|
||||
<TextView
|
||||
android:text="@string/authentication"
|
||||
android:textColor="?attr/primaryText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="24sp"
|
||||
|
@ -28,7 +29,8 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/textView4"
|
||||
android:text="@string/authentication_enter_password"/>
|
||||
android:text="@string/authentication_enter_password"
|
||||
android:textColor="?attr/secondaryText"/>
|
||||
<EditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -59,7 +61,8 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="15dp"
|
||||
android:text="Touch sensor"/>
|
||||
android:text="Touch sensor"
|
||||
android:textColor="?attr/secondaryText"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
|
Loading…
Add table
Reference in a new issue