mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Refactor code to lock
This commit is contained in:
@@ -56,6 +56,7 @@ import com.keepassdroid.database.PwDatabase;
|
||||
import com.keepassdroid.database.PwEntry;
|
||||
import com.keepassdroid.database.exception.SamsungClipboardException;
|
||||
import com.keepassdroid.intents.Intents;
|
||||
import com.keepassdroid.password.PasswordActivity;
|
||||
import com.keepassdroid.settings.PrefsUtil;
|
||||
import com.keepassdroid.tasks.UIToastTask;
|
||||
import com.keepassdroid.utils.EmptyUtils;
|
||||
@@ -63,7 +64,6 @@ import com.keepassdroid.utils.MenuUtil;
|
||||
import com.keepassdroid.utils.Types;
|
||||
import com.keepassdroid.utils.Util;
|
||||
import com.keepassdroid.view.EntryContentsView;
|
||||
import com.kunzisoft.keepass.KeePass;
|
||||
import com.kunzisoft.keepass.R;
|
||||
|
||||
import java.util.Date;
|
||||
@@ -74,7 +74,7 @@ import java.util.UUID;
|
||||
|
||||
import static com.keepassdroid.settings.PrefsUtil.isClipboardNotificationsEnable;
|
||||
|
||||
public class EntryActivity extends LockCloseHideActivity {
|
||||
public class EntryActivity extends LockingHideActivity {
|
||||
public static final String KEY_ENTRY = "entry";
|
||||
|
||||
public static final int NOTIFY_USERNAME = 1;
|
||||
@@ -91,7 +91,7 @@ public class EntryActivity extends LockCloseHideActivity {
|
||||
private BroadcastReceiver mIntentReceiver;
|
||||
protected boolean readOnly = false;
|
||||
|
||||
public static void Launch(Activity act, PwEntry pw) {
|
||||
public static void launch(Activity act, PwEntry pw) {
|
||||
Intent intent = new Intent(act, EntryActivity.class);
|
||||
intent.putExtra(KEY_ENTRY, Types.UUIDtoBytes(pw.getUUID()));
|
||||
act.startActivityForResult(intent, EntryEditActivity.ADD_OR_UPDATE_ENTRY_REQUEST_CODE);
|
||||
@@ -120,8 +120,6 @@ public class EntryActivity extends LockCloseHideActivity {
|
||||
|
||||
mShowPassword = !PrefsUtil.isPasswordMask(this);
|
||||
|
||||
setResult(KeePass.EXIT_NORMAL);
|
||||
|
||||
// Get Entry from UUID
|
||||
Intent i = getIntent();
|
||||
UUID uuid = Types.bytestoUUID(i.getByteArrayExtra(KEY_ENTRY));
|
||||
@@ -388,7 +386,7 @@ public class EntryActivity extends LockCloseHideActivity {
|
||||
|
||||
case R.id.menu_lock:
|
||||
App.setShutdown();
|
||||
setResult(KeePass.EXIT_LOCK);
|
||||
setResult(PasswordActivity.RESULT_EXIT_LOCK);
|
||||
finish();
|
||||
return true;
|
||||
|
||||
|
||||
@@ -59,7 +59,6 @@ import com.keepassdroid.utils.MenuUtil;
|
||||
import com.keepassdroid.utils.Types;
|
||||
import com.keepassdroid.utils.Util;
|
||||
import com.keepassdroid.view.EntryEditNewField;
|
||||
import com.kunzisoft.keepass.KeePass;
|
||||
import com.kunzisoft.keepass.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -68,7 +67,7 @@ import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class EntryEditActivity extends LockCloseHideActivity
|
||||
public class EntryEditActivity extends LockingHideActivity
|
||||
implements IconPickerDialogFragment.IconPickerListener,
|
||||
GeneratePasswordDialogFragment.GeneratePasswordListener {
|
||||
|
||||
@@ -123,7 +122,6 @@ public class EntryEditActivity extends LockCloseHideActivity
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.entry_edit);
|
||||
setResult(KeePass.EXIT_NORMAL);
|
||||
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
toolbar.setTitle(getString(R.string.app_name));
|
||||
|
||||
@@ -54,10 +54,10 @@ import com.keepassdroid.dialog.ReadOnlyDialog;
|
||||
import com.keepassdroid.fragments.AssignMasterKeyDialogFragment;
|
||||
import com.keepassdroid.fragments.GroupEditDialogFragment;
|
||||
import com.keepassdroid.fragments.IconPickerDialogFragment;
|
||||
import com.keepassdroid.password.PasswordActivity;
|
||||
import com.keepassdroid.search.SearchResultsActivity;
|
||||
import com.keepassdroid.tasks.ProgressTask;
|
||||
import com.keepassdroid.view.ListNodesWithAddButtonView;
|
||||
import com.kunzisoft.keepass.KeePass;
|
||||
import com.kunzisoft.keepass.R;
|
||||
|
||||
public class GroupActivity extends ListNodesActivity
|
||||
@@ -76,11 +76,11 @@ public class GroupActivity extends ListNodesActivity
|
||||
|
||||
private static final String TAG = "Group Activity:";
|
||||
|
||||
public static void Launch(Activity act) {
|
||||
Launch(act, null);
|
||||
public static void launch(Activity act) {
|
||||
launch(act, null);
|
||||
}
|
||||
|
||||
public static void Launch(Activity act, PwGroup group) {
|
||||
public static void launch(Activity act, PwGroup group) {
|
||||
Intent intent = new Intent(act, GroupActivity.class);
|
||||
if ( group != null ) {
|
||||
intent.putExtra(KEY_ENTRY, group.getId());
|
||||
@@ -175,10 +175,10 @@ public class GroupActivity extends ListNodesActivity
|
||||
mAdapter.registerANodeToUpdate(node);
|
||||
switch (node.getType()) {
|
||||
case GROUP:
|
||||
GroupActivity.Launch(GroupActivity.this, (PwGroup) node);
|
||||
GroupActivity.launch(GroupActivity.this, (PwGroup) node);
|
||||
break;
|
||||
case ENTRY:
|
||||
EntryActivity.Launch(GroupActivity.this, (PwEntry) node);
|
||||
EntryActivity.launch(GroupActivity.this, (PwEntry) node);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
@@ -296,7 +296,7 @@ public class GroupActivity extends ListNodesActivity
|
||||
|
||||
case R.id.menu_lock:
|
||||
App.setShutdown();
|
||||
setResult(KeePass.EXIT_LOCK);
|
||||
setResult(PasswordActivity.RESULT_EXIT_LOCK);
|
||||
finish();
|
||||
return true;
|
||||
|
||||
|
||||
@@ -53,10 +53,9 @@ import com.keepassdroid.tasks.UIToastTask;
|
||||
import com.keepassdroid.utils.MenuUtil;
|
||||
import com.keepassdroid.database.SortNodeEnum;
|
||||
import com.keepassdroid.view.AssignPasswordHelper;
|
||||
import com.kunzisoft.keepass.KeePass;
|
||||
import com.kunzisoft.keepass.R;
|
||||
|
||||
public abstract class ListNodesActivity extends LockCloseListActivity
|
||||
public abstract class ListNodesActivity extends LockingActivity
|
||||
implements AssignMasterKeyDialogFragment.AssignPasswordDialogListener,
|
||||
NodeAdapter.OnNodeClickCallback,
|
||||
SortDialogFragment.SortSelectionListener {
|
||||
@@ -87,7 +86,6 @@ public abstract class ListNodesActivity extends LockCloseListActivity
|
||||
ActivityCompat.invalidateOptionsMenu(this);
|
||||
|
||||
setContentView(R.layout.list_nodes);
|
||||
setResult(KeePass.EXIT_NORMAL);
|
||||
|
||||
mCurrentGroup = initCurrentGroup();
|
||||
|
||||
@@ -139,10 +137,10 @@ public abstract class ListNodesActivity extends LockCloseListActivity
|
||||
mAdapter.registerANodeToUpdate(node);
|
||||
switch (node.getType()) {
|
||||
case GROUP:
|
||||
GroupActivity.Launch(this, (PwGroup) node);
|
||||
GroupActivity.launch(this, (PwGroup) node);
|
||||
break;
|
||||
case ENTRY:
|
||||
EntryActivity.Launch(this, (PwEntry) node);
|
||||
EntryActivity.launch(this, (PwEntry) node);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* Copyright 2017 Brian Pellin, Jeremy Jamet / Kunzisoft.
|
||||
*
|
||||
* This file is part of KeePass DX.
|
||||
*
|
||||
* KeePass DX is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* KeePass DX is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.keepassdroid.activities;
|
||||
|
||||
import com.keepassdroid.compat.BuildCompat;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.WindowManager.LayoutParams;
|
||||
|
||||
/**
|
||||
* Locking Close Activity that sets FLAG_SECURE to prevent screenshots, and from
|
||||
* appearing in the recent app preview
|
||||
* @author Brian Pellin
|
||||
*
|
||||
*/
|
||||
public abstract class LockCloseHideActivity extends LockCloseActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Several gingerbread devices have problems with FLAG_SECURE
|
||||
int ver = BuildCompat.getSdkVersion();
|
||||
if (ver >= BuildCompat.VERSION_CODE_ICE_CREAM_SANDWICH || ver < BuildCompat.VERSION_CODE_GINGERBREAD) {
|
||||
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
/*
|
||||
* Copyright 2017 Brian Pellin, Jeremy Jamet / Kunzisoft.
|
||||
*
|
||||
* This file is part of KeePass DX.
|
||||
*
|
||||
* KeePass DX is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* KeePass DX is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.keepassdroid.activities;
|
||||
|
||||
import com.keepassdroid.timeout.TimeoutHelper;
|
||||
|
||||
public abstract class LockCloseListActivity extends LockingActivity {
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
TimeoutHelper.checkShutdown(this);
|
||||
}
|
||||
}
|
||||
@@ -21,8 +21,27 @@ package com.keepassdroid.activities;
|
||||
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.WindowManager;
|
||||
|
||||
public abstract class LockCloseActivity extends LockingActivity {
|
||||
import com.keepassdroid.compat.BuildCompat;
|
||||
|
||||
/**
|
||||
* Locking Hide Activity that sets FLAG_SECURE to prevent screenshots, and from
|
||||
* appearing in the recent app preview
|
||||
*/
|
||||
public abstract class LockingHideActivity extends LockingActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Several gingerbread devices have problems with FLAG_SECURE
|
||||
int ver = BuildCompat.getSdkVersion();
|
||||
if (ver >= BuildCompat.VERSION_CODE_ICE_CREAM_SANDWICH || ver < BuildCompat.VERSION_CODE_GINGERBREAD) {
|
||||
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc) Workaround for HTC Linkify issues
|
||||
* @see android.app.Activity#startActivity(android.content.Intent)
|
||||
@@ -130,7 +130,7 @@ public class FileSelectActivity extends StylishActivity implements
|
||||
public void onClick(View v) {
|
||||
String fileName = openFileNameView.getText().toString();
|
||||
try {
|
||||
PasswordActivity.Launch(FileSelectActivity.this, fileName);
|
||||
PasswordActivity.launch(FileSelectActivity.this, fileName);
|
||||
}
|
||||
catch (ContentFileNotFoundException e) {
|
||||
Toast.makeText(FileSelectActivity.this,
|
||||
@@ -185,7 +185,7 @@ public class FileSelectActivity extends StylishActivity implements
|
||||
|
||||
if (db.exists()) {
|
||||
try {
|
||||
PasswordActivity.Launch(FileSelectActivity.this, path);
|
||||
PasswordActivity.launch(FileSelectActivity.this, path);
|
||||
} catch (Exception e) {
|
||||
// Ignore exception
|
||||
}
|
||||
@@ -193,7 +193,7 @@ public class FileSelectActivity extends StylishActivity implements
|
||||
}
|
||||
else {
|
||||
try {
|
||||
PasswordActivity.Launch(FileSelectActivity.this, dbUri.toString());
|
||||
PasswordActivity.launch(FileSelectActivity.this, dbUri.toString());
|
||||
} catch (Exception e) {
|
||||
// Ignore exception
|
||||
}
|
||||
@@ -377,7 +377,7 @@ public class FileSelectActivity extends StylishActivity implements
|
||||
fileHistory.createFile(mUri, getFilename());
|
||||
mAdapter.notifyDataSetChanged();
|
||||
updateTitleFileListView();
|
||||
GroupActivity.Launch(FileSelectActivity.this);
|
||||
GroupActivity.launch(FileSelectActivity.this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -388,7 +388,7 @@ public class FileSelectActivity extends StylishActivity implements
|
||||
@Override
|
||||
public void afterOpenFile(String fileName, String keyFile) {
|
||||
try {
|
||||
PasswordActivity.Launch(FileSelectActivity.this,
|
||||
PasswordActivity.launch(FileSelectActivity.this,
|
||||
fileName, keyFile);
|
||||
} catch (ContentFileNotFoundException e) {
|
||||
Toast.makeText(FileSelectActivity.this,
|
||||
|
||||
@@ -69,7 +69,6 @@ import com.keepassdroid.utils.MenuUtil;
|
||||
import com.keepassdroid.utils.UriUtil;
|
||||
import com.keepassdroid.view.FingerPrintDialog;
|
||||
import com.keepassdroid.view.KeyFileHelper;
|
||||
import com.kunzisoft.keepass.KeePass;
|
||||
import com.kunzisoft.keepass.R;
|
||||
|
||||
import java.io.File;
|
||||
@@ -91,6 +90,8 @@ public class PasswordActivity extends LockingActivity
|
||||
implements FingerPrintHelper.FingerPrintCallback, UriIntentInitTaskCallback {
|
||||
|
||||
public static final String KEY_DEFAULT_FILENAME = "defaultFileName";
|
||||
public static final int RESULT_EXIT_LOCK = 1450;
|
||||
|
||||
private static final String KEY_PASSWORD = "password";
|
||||
private static final String KEY_LAUNCH_IMMEDIATELY = "launchImmediately";
|
||||
|
||||
@@ -122,13 +123,13 @@ public class PasswordActivity extends LockingActivity
|
||||
|
||||
private KeyFileHelper keyFileHelper;
|
||||
|
||||
public static void Launch(
|
||||
public static void launch(
|
||||
Activity act,
|
||||
String fileName) throws FileNotFoundException {
|
||||
Launch(act, fileName, "");
|
||||
launch(act, fileName, "");
|
||||
}
|
||||
|
||||
public static void Launch(
|
||||
public static void launch(
|
||||
Activity act,
|
||||
String fileName,
|
||||
String keyFile) throws FileNotFoundException {
|
||||
@@ -147,12 +148,11 @@ public class PasswordActivity extends LockingActivity
|
||||
}
|
||||
}
|
||||
|
||||
Intent i = new Intent(act, PasswordActivity.class);
|
||||
i.putExtra(UriIntentInitTask.KEY_FILENAME, fileName);
|
||||
i.putExtra(UriIntentInitTask.KEY_KEYFILE, keyFile);
|
||||
|
||||
act.startActivityForResult(i, 0);
|
||||
|
||||
Intent intent = new Intent(act, PasswordActivity.class);
|
||||
intent.putExtra(UriIntentInitTask.KEY_FILENAME, fileName);
|
||||
intent.putExtra(UriIntentInitTask.KEY_KEYFILE, keyFile);
|
||||
// only to avoid visible flickering when redirecting
|
||||
act.startActivityForResult(intent, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -162,8 +162,9 @@ public class PasswordActivity extends LockingActivity
|
||||
Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
|
||||
boolean stopResult = false;
|
||||
if (keyFileHelper != null) {
|
||||
keyFileHelper.onActivityResultCallback(requestCode, resultCode, data,
|
||||
stopResult = keyFileHelper.onActivityResultCallback(requestCode, resultCode, data,
|
||||
new KeyFileHelper.KeyFileCallback() {
|
||||
@Override
|
||||
public void onKeyFileResultCallback(Uri uri) {
|
||||
@@ -174,18 +175,14 @@ public class PasswordActivity extends LockingActivity
|
||||
});
|
||||
}
|
||||
|
||||
switch (requestCode) {
|
||||
case KeePass.EXIT_NORMAL:
|
||||
if (!stopResult) {
|
||||
switch (resultCode) {
|
||||
case RESULT_EXIT_LOCK:
|
||||
case Activity.RESULT_CANCELED:
|
||||
setEmptyViews();
|
||||
App.getDB().clear();
|
||||
break;
|
||||
|
||||
case KeePass.EXIT_LOCK:
|
||||
setResult(KeePass.EXIT_LOCK);
|
||||
setEmptyViews();
|
||||
finish();
|
||||
App.getDB().clear();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -778,12 +775,12 @@ public class PasswordActivity extends LockingActivity
|
||||
public void onClick(
|
||||
DialogInterface dialog,
|
||||
int which) {
|
||||
GroupActivity.Launch(PasswordActivity.this);
|
||||
GroupActivity.launch(PasswordActivity.this);
|
||||
}
|
||||
|
||||
});
|
||||
} else if (mSuccess) {
|
||||
GroupActivity.Launch(PasswordActivity.this);
|
||||
GroupActivity.launch(PasswordActivity.this);
|
||||
} else {
|
||||
displayMessage(PasswordActivity.this);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import android.app.Activity;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import com.kunzisoft.keepass.KeePass;
|
||||
import com.keepassdroid.password.PasswordActivity;
|
||||
import com.kunzisoft.keepass.R;
|
||||
import com.keepassdroid.app.App;
|
||||
import com.keepassdroid.compat.EditorCompat;
|
||||
@@ -88,7 +88,7 @@ public class TimeoutHelper {
|
||||
|
||||
public static void checkShutdown(Activity act) {
|
||||
if ( App.isShutdown() && App.getDB().Loaded() ) {
|
||||
act.setResult(KeePass.EXIT_LOCK);
|
||||
act.setResult(PasswordActivity.RESULT_EXIT_LOCK);
|
||||
act.finish();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,7 +147,12 @@ public class KeyFileHelper {
|
||||
browserDialog.show();
|
||||
}
|
||||
|
||||
public void onActivityResultCallback(
|
||||
/**
|
||||
* To use in onActivityResultCallback in Fragment or Activity
|
||||
* @param keyFileCallback Callback retrieve from data
|
||||
* @return true if requestCode was captured, false elsechere
|
||||
*/
|
||||
public boolean onActivityResultCallback(
|
||||
int requestCode,
|
||||
int resultCode,
|
||||
Intent data,
|
||||
@@ -164,7 +169,7 @@ public class KeyFileHelper {
|
||||
if (keyFileCallback != null)
|
||||
keyFileCallback.onKeyFileResultCallback(keyUri);
|
||||
}
|
||||
break;
|
||||
return true;
|
||||
case GET_CONTENT:
|
||||
case OPEN_DOC:
|
||||
if (resultCode == RESULT_OK) {
|
||||
@@ -189,8 +194,9 @@ public class KeyFileHelper {
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public interface KeyFileCallback {
|
||||
|
||||
@@ -21,20 +21,11 @@ package com.kunzisoft.keepass;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.keepassdroid.fileselect.FileSelectActivity;
|
||||
|
||||
public class KeePass extends Activity {
|
||||
|
||||
public static final int EXIT_NORMAL = 0;
|
||||
public static final int EXIT_LOCK = 1;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
@@ -43,19 +34,14 @@ public class KeePass extends Activity {
|
||||
|
||||
private void startFileSelect() {
|
||||
Intent intent = new Intent(this, FileSelectActivity.class);
|
||||
// only to avoid visible flickering when redirecting
|
||||
startActivityForResult(intent, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
|
||||
if (resultCode == EXIT_NORMAL) {
|
||||
if (resultCode == Activity.RESULT_CANCELED) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user