Refactor code to lock

This commit is contained in:
J-Jamet
2018-03-04 12:39:21 +01:00
parent f66500f535
commit a1ecc5b399
12 changed files with 75 additions and 151 deletions

View File

@@ -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;

View File

@@ -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));

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}

View File

@@ -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)

View File

@@ -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,

View File

@@ -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:
setEmptyViews();
App.getDB().clear();
break;
case KeePass.EXIT_LOCK:
setResult(KeePass.EXIT_LOCK);
setEmptyViews();
finish();
App.getDB().clear();
break;
if (!stopResult) {
switch (resultCode) {
case RESULT_EXIT_LOCK:
case Activity.RESULT_CANCELED:
setEmptyViews();
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);
}

View File

@@ -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();
}
}

View File

@@ -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 {

View File

@@ -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();
}
}