diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt index 5ab07809f..0c7cf8a82 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt @@ -125,6 +125,10 @@ class EntryActivity : LockingActivity() { entryContentsView?.applyFontVisibilityToFields(PreferencesUtil.fieldFontIsInVisibility(this)) entryProgress = findViewById(R.id.entry_progress) + findViewById(R.id.lock_button)?.setOnClickListener { + lockAndExit() + } + // Init the clipboard helper clipboardHelper = ClipboardHelper(this) firstLaunchOfActivity = true @@ -526,10 +530,6 @@ class EntryActivity : LockingActivity() { !mReadOnly && mAutoSaveEnable) } } - R.id.menu_lock -> { - lockAndExit() - return true - } R.id.menu_save_database -> { mProgressDialogThread?.startDatabaseSave(!mReadOnly) } diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt index 1ea62dcf0..0a6eea8be 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt @@ -112,6 +112,11 @@ class EntryEditActivity : LockingActivity(), .show(supportFragmentManager, "DatePickerFragment") } } + + findViewById(R.id.lock_button)?.setOnClickListener { + lockAndExit() + } + // Focus view to reinitialize timeout resetAppTimeoutWhenViewFocusedOrChanged(entryEditContentsView) @@ -416,10 +421,6 @@ class EntryEditActivity : LockingActivity(), override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { - R.id.menu_lock -> { - lockAndExit() - return true - } R.id.menu_save_database -> { mProgressDialogThread?.startDatabaseSave(!mReadOnly) } diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt index 28a2a397d..59229214d 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt @@ -89,6 +89,7 @@ class GroupActivity : LockingActivity(), // Views private var coordinatorLayout: CoordinatorLayout? = null + private var lockView: ImageView? = null private var toolbar: Toolbar? = null private var searchTitleView: View? = null private var toolbarAction: ToolbarAction? = null @@ -134,6 +135,11 @@ class GroupActivity : LockingActivity(), groupNameView = findViewById(R.id.group_name) toolbarAction = findViewById(R.id.toolbar_action) modeTitleView = findViewById(R.id.mode_title_view) + lockView = findViewById(R.id.lock_button) + + lockView?.setOnClickListener { + lockAndExit() + } toolbar?.title = "" setSupportActionBar(toolbar) @@ -753,12 +759,10 @@ class GroupActivity : LockingActivity(), if (!sortMenuEducationPerformed) { // lockMenuEducationPerformed - toolbar != null - && toolbar!!.findViewById(R.id.menu_lock) != null - && groupActivityEducation.checkAndPerformedLockMenuEducation( - toolbar!!.findViewById(R.id.menu_lock), + lockView != null + && groupActivityEducation.checkAndPerformedLockMenuEducation(lockView!!, { - onOptionsItemSelected(menu.findItem(R.id.menu_lock)) + lockAndExit() }, { performedNextEducation(groupActivityEducation, menu) @@ -777,10 +781,6 @@ class GroupActivity : LockingActivity(), R.id.menu_search -> //onSearchRequested(); return true - R.id.menu_lock -> { - lockAndExit() - return true - } R.id.menu_save_database -> { mProgressDialogThread?.startDatabaseSave(!mReadOnly) return true diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/NestedDatabaseSettingsFragment.kt b/app/src/main/java/com/kunzisoft/keepass/settings/NestedDatabaseSettingsFragment.kt index bb52f4ca2..b28e0d97d 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/NestedDatabaseSettingsFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/NestedDatabaseSettingsFragment.kt @@ -551,14 +551,10 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() { val settingActivity = activity as SettingsActivity? - when (item.itemId) { - R.id.menu_lock -> { - settingActivity?.lock() - return true - } + return when (item.itemId) { R.id.menu_save_database -> { settingActivity?.mProgressDialogThread?.startDatabaseSave(!mDatabaseReadOnly) - return true + true } else -> { @@ -566,7 +562,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() { settingActivity?.let { MenuUtil.onDefaultMenuOptionsItemSelected(it, item, mDatabaseReadOnly, true) } - return super.onOptionsItemSelected(item) + super.onOptionsItemSelected(item) } } } diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt b/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt index f2099c35a..8f0945d68 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt @@ -26,6 +26,8 @@ import android.content.Intent import android.net.Uri import android.os.Bundle import android.view.MenuItem +import android.view.View +import android.widget.ImageView import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.fragment.app.Fragment @@ -47,6 +49,7 @@ open class SettingsActivity private var coordinatorLayout: CoordinatorLayout? = null private var toolbar: Toolbar? = null + private var lockView: ImageView? = null companion object { @@ -84,6 +87,11 @@ open class SettingsActivity setSupportActionBar(toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) + lockView = findViewById(R.id.lock_button) + lockView?.setOnClickListener { + lockAndExit() + } + if (savedInstanceState == null) { supportFragmentManager.beginTransaction() .add(R.id.fragment_container, retrieveMainFragment()) @@ -154,6 +162,19 @@ open class SettingsActivity keyFile: Uri?) { } + private fun hideOrShowLockButton(key: NestedSettingsFragment.Screen) { + when (key) { + NestedSettingsFragment.Screen.DATABASE, + NestedSettingsFragment.Screen.DATABASE_MASTER_KEY, + NestedSettingsFragment.Screen.DATABASE_SECURITY -> { + lockView?.visibility = View.VISIBLE + } + else -> { + lockView?.visibility = View.GONE + } + } + } + override fun onBackPressed() { // this if statement is necessary to navigate through nested and main fragments if (supportFragmentManager.backStackEntryCount == 0) { @@ -162,6 +183,7 @@ open class SettingsActivity supportFragmentManager.popBackStack() } toolbar?.setTitle(R.string.settings) + hideOrShowLockButton(NestedSettingsFragment.Screen.APPLICATION) } private fun replaceFragment(key: NestedSettingsFragment.Screen) { @@ -173,6 +195,7 @@ open class SettingsActivity .commit() toolbar?.title = NestedSettingsFragment.retrieveTitle(resources, key) + hideOrShowLockButton(key) } override fun onNestedPreferenceSelected(key: NestedSettingsFragment.Screen) { diff --git a/app/src/main/res/drawable-v21/background_start_bottom_button.xml b/app/src/main/res/drawable-v21/background_start_bottom_button.xml new file mode 100644 index 000000000..72b17b97e --- /dev/null +++ b/app/src/main/res/drawable-v21/background_start_bottom_button.xml @@ -0,0 +1,21 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/background_start_bottom_button.xml b/app/src/main/res/drawable/background_start_bottom_button.xml new file mode 100644 index 000000000..0fd815054 --- /dev/null +++ b/app/src/main/res/drawable/background_start_bottom_button.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_entry.xml b/app/src/main/res/layout/activity_entry.xml index 50a14b69a..2bdd11e5f 100644 --- a/app/src/main/res/layout/activity_entry.xml +++ b/app/src/main/res/layout/activity_entry.xml @@ -126,4 +126,13 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_entry_edit.xml b/app/src/main/res/layout/activity_entry_edit.xml index 103b15fcf..4f4583ece 100644 --- a/app/src/main/res/layout/activity_entry_edit.xml +++ b/app/src/main/res/layout/activity_entry_edit.xml @@ -102,6 +102,15 @@ + + + + + app:layout_anchorGravity="end|bottom" /> . --> - + + \ No newline at end of file diff --git a/app/src/main/res/menu/database.xml b/app/src/main/res/menu/database.xml index ac9ff54ed..d94f86817 100644 --- a/app/src/main/res/menu/database.xml +++ b/app/src/main/res/menu/database.xml @@ -19,11 +19,6 @@ --> -