Show UUID in group

This commit is contained in:
J-Jamet
2021-12-16 20:52:49 +01:00
parent 7eeed8f670
commit 7fda40c983
12 changed files with 60 additions and 27 deletions

View File

@@ -23,6 +23,7 @@ import android.app.Dialog
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.ViewGroup
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
@@ -30,6 +31,7 @@ import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.Database import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.icon.IconImage import com.kunzisoft.keepass.database.element.icon.IconImage
import com.kunzisoft.keepass.model.GroupInfo import com.kunzisoft.keepass.model.GroupInfo
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.view.DateTimeFieldView import com.kunzisoft.keepass.view.DateTimeFieldView
class GroupDialogFragment : DatabaseDialogFragment() { class GroupDialogFragment : DatabaseDialogFragment() {
@@ -45,6 +47,8 @@ class GroupDialogFragment : DatabaseDialogFragment() {
private lateinit var expirationView: DateTimeFieldView private lateinit var expirationView: DateTimeFieldView
private lateinit var creationView: TextView private lateinit var creationView: TextView
private lateinit var modificationView: TextView private lateinit var modificationView: TextView
private lateinit var uuidContainerView: ViewGroup
private lateinit var uuidReferenceView: TextView
override fun onDatabaseRetrieved(database: Database?) { override fun onDatabaseRetrieved(database: Database?) {
super.onDatabaseRetrieved(database) super.onDatabaseRetrieved(database)
@@ -64,6 +68,8 @@ class GroupDialogFragment : DatabaseDialogFragment() {
expirationView = root.findViewById(R.id.group_expiration) expirationView = root.findViewById(R.id.group_expiration)
creationView = root.findViewById(R.id.group_created) creationView = root.findViewById(R.id.group_created)
modificationView = root.findViewById(R.id.group_modified) modificationView = root.findViewById(R.id.group_modified)
uuidContainerView = root.findViewById(R.id.group_UUID_container)
uuidReferenceView = root.findViewById(R.id.group_UUID_reference)
// Retrieve the textColor to tint the icon // Retrieve the textColor to tint the icon
val ta = activity.theme.obtainStyledAttributes(intArrayOf(R.attr.colorAccent)) val ta = activity.theme.obtainStyledAttributes(intArrayOf(R.attr.colorAccent))
@@ -96,6 +102,15 @@ class GroupDialogFragment : DatabaseDialogFragment() {
expirationView.dateTime = mGroupInfo.expiryTime expirationView.dateTime = mGroupInfo.expiryTime
creationView.text = mGroupInfo.creationTime.getDateTimeString(resources) creationView.text = mGroupInfo.creationTime.getDateTimeString(resources)
modificationView.text = mGroupInfo.lastModificationTime.getDateTimeString(resources) modificationView.text = mGroupInfo.lastModificationTime.getDateTimeString(resources)
val uuid = mGroupInfo.id
if (uuid == null || uuid.isEmpty()) {
uuidContainerView.visibility = View.GONE
} else {
uuidReferenceView.text = uuid
uuidContainerView.apply {
visibility = if (PreferencesUtil.showUUID(context)) View.VISIBLE else View.GONE
}
}
val builder = AlertDialog.Builder(activity) val builder = AlertDialog.Builder(activity)
builder.setView(root) builder.setView(root)

View File

@@ -42,7 +42,6 @@ class EntryFragment: DatabaseFragment() {
private var attachmentsAdapter: EntryAttachmentsItemsAdapter? = null private var attachmentsAdapter: EntryAttachmentsItemsAdapter? = null
private lateinit var uuidContainerView: View private lateinit var uuidContainerView: View
private lateinit var uuidView: TextView
private lateinit var uuidReferenceView: TextView private lateinit var uuidReferenceView: TextView
private var mClipboardHelper: ClipboardHelper? = null private var mClipboardHelper: ClipboardHelper? = null
@@ -88,7 +87,6 @@ class EntryFragment: DatabaseFragment() {
uuidContainerView.apply { uuidContainerView.apply {
visibility = if (PreferencesUtil.showUUID(context)) View.VISIBLE else View.GONE visibility = if (PreferencesUtil.showUUID(context)) View.VISIBLE else View.GONE
} }
uuidView = view.findViewById(R.id.entry_UUID)
uuidReferenceView = view.findViewById(R.id.entry_UUID_reference) uuidReferenceView = view.findViewById(R.id.entry_UUID_reference)
mEntryViewModel.entryInfoHistory.observe(viewLifecycleOwner) { entryInfoHistory -> mEntryViewModel.entryInfoHistory.observe(viewLifecycleOwner) { entryInfoHistory ->
@@ -200,7 +198,6 @@ class EntryFragment: DatabaseFragment() {
} }
private fun assignUUID(uuid: UUID?) { private fun assignUUID(uuid: UUID?) {
uuidView.text = uuid?.toString()
uuidReferenceView.text = UuidUtil.toHexString(uuid) uuidReferenceView.text = UuidUtil.toHexString(uuid)
} }

View File

@@ -31,6 +31,7 @@ import com.kunzisoft.keepass.database.element.node.*
import com.kunzisoft.keepass.model.EntryInfo import com.kunzisoft.keepass.model.EntryInfo
import com.kunzisoft.keepass.model.GroupInfo import com.kunzisoft.keepass.model.GroupInfo
import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.utils.UuidUtil
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
@@ -453,6 +454,7 @@ class Group : Node, GroupVersionedInterface<Group, Entry> {
fun getGroupInfo(): GroupInfo { fun getGroupInfo(): GroupInfo {
val groupInfo = GroupInfo() val groupInfo = GroupInfo()
groupInfo.id = groupKDB?.nodeId ?.toString() ?: UuidUtil.toHexString(groupKDBX?.nodeId?.id)
groupInfo.title = title groupInfo.title = title
groupInfo.icon = icon groupInfo.icon = icon
groupInfo.creationTime = creationTime groupInfo.creationTime = creationTime

View File

@@ -7,6 +7,7 @@ import com.kunzisoft.keepass.database.element.icon.IconImageStandard.Companion.F
class GroupInfo : NodeInfo { class GroupInfo : NodeInfo {
var id: String? = null
var notes: String? = null var notes: String? = null
init { init {
@@ -16,11 +17,13 @@ class GroupInfo : NodeInfo {
constructor(): super() constructor(): super()
constructor(parcel: Parcel): super(parcel) { constructor(parcel: Parcel): super(parcel) {
id = parcel.readString()
notes = parcel.readString() notes = parcel.readString()
} }
override fun writeToParcel(parcel: Parcel, flags: Int) { override fun writeToParcel(parcel: Parcel, flags: Int) {
super.writeToParcel(parcel, flags) super.writeToParcel(parcel, flags)
parcel.writeString(id)
parcel.writeString(notes) parcel.writeString(notes)
} }
@@ -29,6 +32,7 @@ class GroupInfo : NodeInfo {
if (other !is GroupInfo) return false if (other !is GroupInfo) return false
if (!super.equals(other)) return false if (!super.equals(other)) return false
if (id != other.id) return false
if (notes != other.notes) return false if (notes != other.notes) return false
return true return true
@@ -36,6 +40,7 @@ class GroupInfo : NodeInfo {
override fun hashCode(): Int { override fun hashCode(): Int {
var result = super.hashCode() var result = super.hashCode()
result = 31 * result + (id?.hashCode() ?: 0)
result = 31 * result + (notes?.hashCode() ?: 0) result = 31 * result + (notes?.hashCode() ?: 0)
return result return result
} }

View File

@@ -73,7 +73,7 @@ class TextFieldView @JvmOverloads constructor(context: Context,
} }
private val valueView = AppCompatTextView(context).apply { private val valueView = AppCompatTextView(context).apply {
setTextAppearance(context, setTextAppearance(context,
R.style.KeepassDXStyle_TextAppearance_TextEntryItem) R.style.KeepassDXStyle_TextAppearance_TextNode)
layoutParams = LayoutParams( layoutParams = LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT).also { LayoutParams.WRAP_CONTENT).also {

View File

@@ -77,7 +77,7 @@
android:id="@+id/entry_created" android:id="@+id/entry_created"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" /> style="@style/KeepassDXStyle.TextAppearance.TextNode" />
<!-- Modified --> <!-- Modified -->
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
@@ -90,7 +90,7 @@
android:id="@+id/entry_modified" android:id="@+id/entry_modified"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" /> style="@style/KeepassDXStyle.TextAppearance.TextNode" />
<!-- Accessed --> <!-- Accessed -->
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
@@ -127,16 +127,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/entry_UUID" android:text="@string/entry_UUID"
style="@style/KeepassDXStyle.TextAppearance.LabelTextStyle" /> style="@style/KeepassDXStyle.TextAppearance.LabelTextStyle" />
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/entry_UUID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textIsSelectable="true"
style="@style/KeepassDXStyle.TextAppearance.LabelTextStyle" />
</HorizontalScrollView>
<HorizontalScrollView <HorizontalScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@@ -145,7 +135,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textIsSelectable="true" android:textIsSelectable="true"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" /> style="@style/KeepassDXStyle.TextAppearance.TextNode" />
</HorizontalScrollView> </HorizontalScrollView>
</LinearLayout> </LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>

View File

@@ -82,7 +82,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="textMultiLine" android:inputType="textMultiLine"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" /> style="@style/KeepassDXStyle.TextAppearance.TextNode" />
<!-- Expiration --> <!-- Expiration -->
<com.kunzisoft.keepass.view.DateTimeFieldView <com.kunzisoft.keepass.view.DateTimeFieldView
@@ -101,7 +101,7 @@
android:id="@+id/group_created" android:id="@+id/group_created"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" /> style="@style/KeepassDXStyle.TextAppearance.TextNode" />
<!-- Modified --> <!-- Modified -->
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
@@ -114,7 +114,31 @@
android:id="@+id/group_modified" android:id="@+id/group_modified"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" /> style="@style/KeepassDXStyle.TextAppearance.TextNode" />
<!-- UUID -->
<LinearLayout
android:id="@+id/group_UUID_container"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/group_UUID_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/entry_UUID"
style="@style/KeepassDXStyle.TextAppearance.LabelTextStyle" />
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/group_UUID_reference"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textIsSelectable="true"
style="@style/KeepassDXStyle.TextAppearance.TextNode" />
</HorizontalScrollView>
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>

View File

@@ -54,7 +54,7 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/item_attachment_title" android:id="@+id/item_attachment_title"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" style="@style/KeepassDXStyle.TextAppearance.TextNode"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_toStartOf="@+id/item_attachment_size_container" android:layout_toStartOf="@+id/item_attachment_size_container"

View File

@@ -29,7 +29,7 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/entry_history_last_modified" android:id="@+id/entry_history_last_modified"
tools:text = "Last Modified" tools:text = "Last Modified"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" style="@style/KeepassDXStyle.TextAppearance.TextNode"
android:gravity="center" android:gravity="center"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -38,7 +38,7 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/entry_history_title" android:id="@+id/entry_history_title"
tools:text = "Title" tools:text = "Title"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" style="@style/KeepassDXStyle.TextAppearance.TextNode"
android:maxLines="6" android:maxLines="6"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center" android:gravity="center"
@@ -49,7 +49,7 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/entry_history_username" android:id="@+id/entry_history_username"
tools:text = "Username" tools:text = "Username"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" style="@style/KeepassDXStyle.TextAppearance.TextNode"
android:maxLines="6" android:maxLines="6"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center" android:gravity="center"

View File

@@ -26,6 +26,6 @@
android:id="@+id/date_time_value" android:id="@+id/date_time_value"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" /> style="@style/KeepassDXStyle.TextAppearance.TextNode" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@@ -20,7 +20,7 @@
android:focusable="false" android:focusable="false"
android:cursorVisible="false" android:cursorVisible="false"
android:focusableInTouchMode="false" android:focusableInTouchMode="false"
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem" style="@style/KeepassDXStyle.TextAppearance.TextNode"
tools:text="2020-03-04 05:00" /> tools:text="2020-03-04 05:00" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<androidx.appcompat.widget.SwitchCompat <androidx.appcompat.widget.SwitchCompat

View File

@@ -481,7 +481,7 @@
<item name="android:textSize">12sp</item> <item name="android:textSize">12sp</item>
<item name="android:textStyle">bold</item> <item name="android:textStyle">bold</item>
</style> </style>
<style name="KeepassDXStyle.TextAppearance.TextEntryItem" parent="KeepassDXStyle.TextAppearance"> <style name="KeepassDXStyle.TextAppearance.TextNode" parent="KeepassDXStyle.TextAppearance">
<item name="android:layout_marginTop">4dp</item> <item name="android:layout_marginTop">4dp</item>
<item name="android:layout_marginBottom">4dp</item> <item name="android:layout_marginBottom">4dp</item>
<item name="android:paddingLeft">8dp</item> <item name="android:paddingLeft">8dp</item>