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" />
+