diff --git a/database/build.gradle b/database/build.gradle index 4a0a79d2a..4b5309dd6 100644 --- a/database/build.gradle +++ b/database/build.gradle @@ -34,8 +34,6 @@ android { dependencies { implementation "androidx.core:core-ktx:$android_core_version" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' - // Color - implementation 'com.github.Kunzisoft:AndroidClearChroma:2.6' // Time implementation 'joda-time:joda-time:2.10.13' // Apache Commons diff --git a/database/src/main/java/com/kunzisoft/keepass/database/element/Database.kt b/database/src/main/java/com/kunzisoft/keepass/database/element/Database.kt index 86b8674d3..2363db339 100644 --- a/database/src/main/java/com/kunzisoft/keepass/database/element/Database.kt +++ b/database/src/main/java/com/kunzisoft/keepass/database/element/Database.kt @@ -19,9 +19,7 @@ */ package com.kunzisoft.keepass.database.element -import android.graphics.Color import android.util.Log -import com.kunzisoft.androidclearchroma.ChromaUtil import com.kunzisoft.keepass.database.crypto.EncryptionAlgorithm import com.kunzisoft.keepass.database.crypto.kdf.KdfEngine import com.kunzisoft.keepass.database.element.binary.AttachmentPool @@ -54,6 +52,8 @@ import com.kunzisoft.keepass.database.search.SearchParameters import com.kunzisoft.keepass.hardware.HardwareKey import com.kunzisoft.keepass.tasks.ProgressTaskUpdater import com.kunzisoft.keepass.utils.* +import com.kunzisoft.keepass.utils.StringUtil.toFormattedColorInt +import com.kunzisoft.keepass.utils.StringUtil.toFormattedColorString import java.io.* import java.util.* @@ -236,18 +236,14 @@ open class Database { var colorInt: Int? = null mDatabaseKDBX?.color?.let { try { - colorInt = Color.parseColor(it) - } catch (e: Exception) {} + colorInt = it.toFormattedColorInt() + } catch (_: Exception) {} } return mDatabaseKDB?.color ?: colorInt } set(value) { mDatabaseKDB?.color = value - mDatabaseKDBX?.color = if (value == null) { - "" - } else { - ChromaUtil.getFormattedColorString(value, false) - } + mDatabaseKDBX?.color = value?.toFormattedColorString() ?: "" mDatabaseKDBX?.settingsChanged = DateInstant() dataModifiedSinceLastLoading = true } diff --git a/database/src/main/java/com/kunzisoft/keepass/database/element/Entry.kt b/database/src/main/java/com/kunzisoft/keepass/database/element/Entry.kt index d7c6d9211..30994746e 100644 --- a/database/src/main/java/com/kunzisoft/keepass/database/element/Entry.kt +++ b/database/src/main/java/com/kunzisoft/keepass/database/element/Entry.kt @@ -19,10 +19,8 @@ */ package com.kunzisoft.keepass.database.element -import android.graphics.Color import android.os.Parcel import android.os.Parcelable -import com.kunzisoft.androidclearchroma.ChromaUtil import com.kunzisoft.keepass.database.element.binary.AttachmentPool import com.kunzisoft.keepass.database.element.database.DatabaseKDBX import com.kunzisoft.keepass.database.element.database.DatabaseVersioned @@ -38,8 +36,9 @@ import com.kunzisoft.keepass.database.element.node.Type import com.kunzisoft.keepass.model.EntryInfo import com.kunzisoft.keepass.otp.OtpElement import com.kunzisoft.keepass.otp.OtpEntryFields -import java.util.* -import kotlin.collections.ArrayList +import com.kunzisoft.keepass.utils.StringUtil.toFormattedColorInt +import com.kunzisoft.keepass.utils.StringUtil.toFormattedColorString +import java.util.UUID class Entry : Node, EntryVersionedInterface { @@ -246,17 +245,13 @@ class Entry : Node, EntryVersionedInterface { var colorInt: Int? = null entryKDBX?.backgroundColor?.let { try { - colorInt = Color.parseColor(it) - } catch (e: Exception) {} + colorInt = it.toFormattedColorInt() + } catch (_: Exception) {} } return colorInt } set(value) { - entryKDBX?.backgroundColor = if (value == null) { - "" - } else { - ChromaUtil.getFormattedColorString(value, false) - } + entryKDBX?.backgroundColor = value?.toFormattedColorString() ?: "" } var foregroundColor: Int? @@ -264,17 +259,13 @@ class Entry : Node, EntryVersionedInterface { var colorInt: Int? = null entryKDBX?.foregroundColor?.let { try { - colorInt = Color.parseColor(it) - } catch (e: Exception) {} + colorInt = it.toFormattedColorInt() + } catch (_: Exception) {} } return colorInt } set(value) { - entryKDBX?.foregroundColor = if (value == null) { - "" - } else { - ChromaUtil.getFormattedColorString(value, false) - } + entryKDBX?.foregroundColor = value?.toFormattedColorString() ?: "" } var customData: CustomData diff --git a/database/src/main/java/com/kunzisoft/keepass/utils/StringUtil.kt b/database/src/main/java/com/kunzisoft/keepass/utils/StringUtil.kt index 90aeb12ac..335a2de32 100644 --- a/database/src/main/java/com/kunzisoft/keepass/utils/StringUtil.kt +++ b/database/src/main/java/com/kunzisoft/keepass/utils/StringUtil.kt @@ -1,5 +1,6 @@ package com.kunzisoft.keepass.utils + object StringUtil { fun String.removeLineChars(): String { @@ -11,4 +12,25 @@ object StringUtil { } fun ByteArray.toHexString() = joinToString("") { "%02X".format(it) } + + fun Int.toFormattedColorString(showAlpha: Boolean = false): String { + return if (showAlpha) + String.format("#%08X", this) + else + String.format("#%06X", 16777215 and this) + } + + fun String.toFormattedColorInt(): Int { + if (this[0] == '#') { + // Use a long to avoid rollovers on #ffXXXXXX + var color = this.substring(1).toLong(16) + if (this.length == 7) { + // Set the alpha value + color = color or 0x00000000ff000000L + } else require(this.length == 9) {"Unknown color" } + return color.toInt() + } + throw IllegalArgumentException("Unknown color") + } + } \ No newline at end of file