Lock button with toolbar

This commit is contained in:
J-Jamet
2020-08-04 11:38:54 +02:00
parent c285411371
commit ce6f7729c5
7 changed files with 65 additions and 30 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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