From ca51f591dea34167008863506675b8e7670f64d4 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 12 Feb 2022 18:49:38 +0100 Subject: [PATCH] Visual point to see if a database is modified --- .../keepass/activities/GroupActivity.kt | 31 +++++++--- .../keepass/view/NavigationDatabaseView.kt | 7 +++ .../res/drawable/ic_modified_white_12dp.xml | 13 ++++ app/src/main/res/layout/activity_group.xml | 33 +++++++--- .../main/res/layout/nav_header_database.xml | 16 ++++- art/ic_modified.svg | 61 +++++++++++++++++++ 6 files changed, 140 insertions(+), 21 deletions(-) create mode 100644 app/src/main/res/drawable/ic_modified_white_12dp.xml create mode 100644 art/ic_modified.svg 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 0fe96a46f..21cf1a50f 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt @@ -46,6 +46,7 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.view.GravityCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.isVisible import androidx.drawerlayout.widget.DrawerLayout import androidx.recyclerview.widget.RecyclerView import com.kunzisoft.keepass.R @@ -102,6 +103,7 @@ class GroupActivity : DatabaseLockActivity(), private var lockView: View? = null private var toolbar: Toolbar? = null private var databaseNameContainer: ViewGroup? = null + private var databaseModifiedView: ImageView? = null private var databaseColorView: ImageView? = null private var databaseNameView: TextView? = null private var searchView: SearchView? = null @@ -237,6 +239,7 @@ class GroupActivity : DatabaseLockActivity(), addNodeButtonView = findViewById(R.id.add_node_button) toolbar = findViewById(R.id.toolbar) databaseNameContainer = findViewById(R.id.database_name_container) + databaseModifiedView = findViewById(R.id.database_modified) databaseColorView = findViewById(R.id.database_color) databaseNameView = findViewById(R.id.database_name) searchFiltersView = findViewById(R.id.search_filters) @@ -575,12 +578,28 @@ class GroupActivity : DatabaseLockActivity(), mRootGroup = database?.rootGroup loadGroup() - // Search suggestion + // Update view database?.let { + mBreadcrumbAdapter?.iconDrawableFactory = it.iconDrawableFactory + } + databaseNavView?.apply { + if (!mMergeDataAllowed) { + menu.findItem(R.id.menu_merge_from)?.isVisible = false + } + } + refreshDatabaseViews() + invalidateOptionsMenu() + } + + private fun refreshDatabaseViews() { + mDatabase?.let { val databaseName = it.name.ifEmpty { getString(R.string.database) } databaseNavView?.setDatabaseName(databaseName) databaseNameView?.text = databaseName databaseNavView?.setDatabaseVersion(it.version) + val modified = it.dataModifiedSinceLastLoading + databaseNavView?.setDatabaseModifiedSinceLastLoading(modified) + databaseModifiedView?.isVisible = modified val customColor = it.customColor databaseNavView?.setDatabaseColor(customColor) if (customColor != null) { @@ -592,16 +611,7 @@ class GroupActivity : DatabaseLockActivity(), } else { databaseColorView?.visibility = View.GONE } - mBreadcrumbAdapter?.iconDrawableFactory = it.iconDrawableFactory } - - databaseNavView?.apply { - if (!mMergeDataAllowed) { - menu.findItem(R.id.menu_merge_from)?.isVisible = false - } - } - - invalidateOptionsMenu() } override fun onDatabaseActionFinished( @@ -749,6 +759,7 @@ class GroupActivity : DatabaseLockActivity(), } else { // Add breadcrumb setBreadcrumbNode(group) + refreshDatabaseViews() invalidateOptionsMenu() } initAddButton(group) diff --git a/app/src/main/java/com/kunzisoft/keepass/view/NavigationDatabaseView.kt b/app/src/main/java/com/kunzisoft/keepass/view/NavigationDatabaseView.kt index b0ab2277f..abc47ebfe 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/NavigationDatabaseView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/NavigationDatabaseView.kt @@ -7,6 +7,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.core.graphics.BlendModeColorFilterCompat import androidx.core.graphics.BlendModeCompat +import androidx.core.view.isVisible import com.google.android.material.navigation.NavigationView import com.kunzisoft.keepass.R @@ -17,6 +18,7 @@ class NavigationDatabaseView @JvmOverloads constructor(context: Context, private var databaseNavContainerView: View? = null private var databaseNavIconView: ImageView? = null + private var databaseNavModifiedView: ImageView? = null private var databaseNavColorView: ImageView? = null private var databaseNavNameView: TextView? = null private var databaseNavVersionView: TextView? = null @@ -24,6 +26,7 @@ class NavigationDatabaseView @JvmOverloads constructor(context: Context, init { inflateHeaderView(R.layout.nav_header_database) databaseNavIconView = databaseNavContainerView?.findViewById(R.id.nav_database_icon) + databaseNavModifiedView = databaseNavContainerView?.findViewById(R.id.nav_database_modified) databaseNavColorView = databaseNavContainerView?.findViewById(R.id.nav_database_color) databaseNavNameView = databaseNavContainerView?.findViewById(R.id.nav_database_name) databaseNavVersionView = databaseNavContainerView?.findViewById(R.id.nav_database_version) @@ -43,6 +46,10 @@ class NavigationDatabaseView @JvmOverloads constructor(context: Context, databaseNavVersionView?.text = version } + fun setDatabaseModifiedSinceLastLoading(modified: Boolean) { + databaseNavModifiedView?.isVisible = modified + } + fun setDatabaseColor(color: Int?) { if (color != null) { databaseNavColorView?.drawable?.colorFilter = BlendModeColorFilterCompat diff --git a/app/src/main/res/drawable/ic_modified_white_12dp.xml b/app/src/main/res/drawable/ic_modified_white_12dp.xml new file mode 100644 index 000000000..eba1bd509 --- /dev/null +++ b/app/src/main/res/drawable/ic_modified_white_12dp.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_group.xml b/app/src/main/res/layout/activity_group.xml index 70a53feca..b4b590f84 100644 --- a/app/src/main/res/layout/activity_group.xml +++ b/app/src/main/res/layout/activity_group.xml @@ -60,16 +60,31 @@ - + android:layout_marginStart="50dp" + android:layout_marginLeft="50dp"> + + + + + + app:layout_constraintEnd_toEndOf="parent" /> + + + + + image/svg+xml + + + + + + + + + + +