mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Lock button with toolbar
This commit is contained in:
@@ -84,6 +84,7 @@ class EntryEditActivity : LockingActivity(),
|
||||
private var entryEditContentsView: EntryEditContentsView? = null
|
||||
private var entryEditAddToolBar: ActionMenuView? = null
|
||||
private var validateButton: View? = null
|
||||
private var lockView: View? = null
|
||||
|
||||
// Education
|
||||
private var entryEditActivityEducation: EntryEditActivityEducation? = null
|
||||
@@ -116,6 +117,11 @@ class EntryEditActivity : LockingActivity(),
|
||||
}
|
||||
}
|
||||
|
||||
lockView = findViewById(R.id.lock_button)
|
||||
lockView?.setOnClickListener {
|
||||
lockAndExit()
|
||||
}
|
||||
|
||||
// Focus view to reinitialize timeout
|
||||
resetAppTimeoutWhenViewFocusedOrChanged(coordinatorLayout)
|
||||
|
||||
@@ -221,10 +227,6 @@ class EntryEditActivity : LockingActivity(),
|
||||
|
||||
setOnMenuItemClickListener { item ->
|
||||
when (item.itemId) {
|
||||
R.id.menu_lock -> {
|
||||
lockAndExit()
|
||||
true
|
||||
}
|
||||
R.id.menu_generate_password -> {
|
||||
openPasswordGenerator()
|
||||
true
|
||||
@@ -262,6 +264,16 @@ class EntryEditActivity : LockingActivity(),
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
lockView?.visibility = if (PreferencesUtil.showLockDatabaseButton(this)) {
|
||||
View.VISIBLE
|
||||
} else {
|
||||
View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
private fun populateViewsWithEntry(newEntry: Entry) {
|
||||
// Don't start the field reference manager, we want to see the raw ref
|
||||
mDatabase?.stopManageEntry(newEntry)
|
||||
|
||||
@@ -108,6 +108,8 @@ class GroupActivity : LockingActivity(),
|
||||
private var mCurrentGroupIsASearch: Boolean = false
|
||||
private var mRequestStartupSearch = true
|
||||
|
||||
private var actionNodeMode: ActionMode? = null
|
||||
|
||||
// To manage history in selection mode
|
||||
private var mSelectionModeCountBackStack = 0
|
||||
|
||||
@@ -511,7 +513,8 @@ class GroupActivity : LockingActivity(),
|
||||
}
|
||||
|
||||
override fun onScrolled(dy: Int) {
|
||||
addNodeButtonView?.hideButtonOnScrollListener(dy)
|
||||
if (actionNodeMode == null)
|
||||
addNodeButtonView?.hideOrShowButtonOnScrollListener(dy)
|
||||
}
|
||||
|
||||
override fun onNodeClick(node: Node) {
|
||||
@@ -554,18 +557,28 @@ class GroupActivity : LockingActivity(),
|
||||
}
|
||||
}
|
||||
|
||||
private var actionNodeMode: ActionMode? = null
|
||||
|
||||
private fun finishNodeAction() {
|
||||
actionNodeMode?.finish()
|
||||
actionNodeMode = null
|
||||
addNodeButtonView?.showButton()
|
||||
}
|
||||
|
||||
override fun onNodeSelected(nodes: List<Node>): Boolean {
|
||||
if (nodes.isNotEmpty()) {
|
||||
if (actionNodeMode == null || toolbarAction?.getSupportActionModeCallback() == null) {
|
||||
mListNodesFragment?.actionNodesCallback(nodes, this)?.let {
|
||||
mListNodesFragment?.actionNodesCallback(nodes, this, object: ActionMode.Callback {
|
||||
override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
|
||||
return true
|
||||
}
|
||||
override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
|
||||
return true
|
||||
}
|
||||
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
|
||||
return false
|
||||
}
|
||||
override fun onDestroyActionMode(mode: ActionMode?) {
|
||||
actionNodeMode = null
|
||||
addNodeButtonView?.showButton()
|
||||
}
|
||||
})?.let {
|
||||
actionNodeMode = toolbarAction?.startSupportActionMode(it)
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -266,14 +266,15 @@ class ListNodesFragment : StylishFragment(), SortDialogFragment.SortSelectionLis
|
||||
}
|
||||
|
||||
fun actionNodesCallback(nodes: List<Node>,
|
||||
menuListener: NodesActionMenuListener?) : ActionMode.Callback {
|
||||
menuListener: NodesActionMenuListener?,
|
||||
actionModeCallback: ActionMode.Callback) : ActionMode.Callback {
|
||||
|
||||
return object : ActionMode.Callback {
|
||||
|
||||
override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
|
||||
nodeActionSelectionMode = false
|
||||
nodeActionPasteMode = PasteMode.UNDEFINED
|
||||
return true
|
||||
return actionModeCallback.onCreateActionMode(mode, menu)
|
||||
}
|
||||
|
||||
override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
|
||||
@@ -318,7 +319,7 @@ class ListNodesFragment : StylishFragment(), SortDialogFragment.SortSelectionLis
|
||||
// Add the number of items selected in title
|
||||
mode?.title = nodes.size.toString()
|
||||
|
||||
return true
|
||||
return actionModeCallback.onPrepareActionMode(mode, menu)
|
||||
}
|
||||
|
||||
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
|
||||
@@ -348,7 +349,7 @@ class ListNodesFragment : StylishFragment(), SortDialogFragment.SortSelectionLis
|
||||
nodeActionSelectionMode = false
|
||||
returnValue
|
||||
}
|
||||
else -> false
|
||||
else -> actionModeCallback.onActionItemClicked(mode, item)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -358,6 +359,7 @@ class ListNodesFragment : StylishFragment(), SortDialogFragment.SortSelectionLis
|
||||
mAdapter?.unselectActionNodes()
|
||||
nodeActionPasteMode = PasteMode.UNDEFINED
|
||||
nodeActionSelectionMode = false
|
||||
actionModeCallback.onDestroyActionMode(mode)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ class AddNodeButtonView @JvmOverloads constructor(context: Context,
|
||||
return super.onTouchEvent(event)
|
||||
}
|
||||
|
||||
fun hideButtonOnScrollListener(dy: Int) {
|
||||
fun hideOrShowButtonOnScrollListener(dy: Int) {
|
||||
if (state == State.CLOSE) {
|
||||
if (dy > 0 && addButtonView?.visibility == View.VISIBLE) {
|
||||
hideButton()
|
||||
|
||||
@@ -73,6 +73,10 @@
|
||||
android:layout_gravity="bottom" >
|
||||
<androidx.appcompat.widget.ActionMenuView
|
||||
android:id="@+id/entry_edit_bottom_menu_bar"
|
||||
android:paddingStart="48dp"
|
||||
android:paddingLeft="48dp"
|
||||
android:paddingEnd="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="?attr/actionBarSize"/>
|
||||
</com.google.android.material.bottomappbar.BottomAppBar>
|
||||
@@ -88,4 +92,10 @@
|
||||
app:useCompatPadding="true"
|
||||
style="@style/KeepassDXStyle.Fab"/>
|
||||
|
||||
<include
|
||||
layout="@layout/view_button_lock"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_gravity="start|bottom" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
@@ -142,13 +142,6 @@
|
||||
android:background="?android:attr/windowBackground" />
|
||||
</LinearLayout>
|
||||
|
||||
<include
|
||||
layout="@layout/view_button_lock"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
app:layout_anchor="@+id/node_list_container"
|
||||
app:layout_anchorGravity="start|bottom" />
|
||||
|
||||
<com.kunzisoft.keepass.view.AddNodeButtonView
|
||||
android:id="@+id/add_node_button"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -161,10 +154,20 @@
|
||||
android:id="@+id/toolbar_action"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:elevation="4dp"
|
||||
android:paddingStart="48dp"
|
||||
android:paddingLeft="48dp"
|
||||
android:paddingEnd="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:theme="?attr/actionToolbarAppearance"
|
||||
android:background="?attr/colorAccent"
|
||||
tools:targetApi="lollipop" />
|
||||
android:background="?attr/colorAccent" />
|
||||
|
||||
<include
|
||||
layout="@layout/view_button_lock"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -21,11 +21,6 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
tools:ignore="AlwaysShowAction">
|
||||
<item android:id="@+id/menu_lock"
|
||||
android:icon="@drawable/ic_lock_white_24dp"
|
||||
android:title="@string/lock"
|
||||
android:orderInCategory="91"
|
||||
app:showAsAction="always" />
|
||||
<item android:id="@+id/menu_add_field"
|
||||
android:icon="@drawable/ic_new_field_white_24dp"
|
||||
android:title="@string/entry_add_field"
|
||||
|
||||
Reference in New Issue
Block a user