Fix parsing of #RRGGBBAA collection colors.

pull/131/head
Tom Hacohen 4 years ago
parent 3e7e90d466
commit d768ab69cd

@ -13,7 +13,6 @@ import android.content.ContentProviderClient
import android.content.ContentProviderOperation import android.content.ContentProviderOperation
import android.content.ContentUris import android.content.ContentUris
import android.content.ContentValues import android.content.ContentValues
import android.graphics.Color.parseColor
import android.net.Uri import android.net.Uri
import android.os.RemoteException import android.os.RemoteException
import android.provider.CalendarContract import android.provider.CalendarContract
@ -35,6 +34,20 @@ class LocalCalendar private constructor(
companion object { companion object {
val defaultColor = -0x743cb6 // light green 500 - should be "8BC349"? val defaultColor = -0x743cb6 // light green 500 - should be "8BC349"?
fun parseColor(color_: String?): Int {
if (color_.isNullOrBlank()) {
return defaultColor
}
val color = color_.replaceFirst("^#".toRegex(), "")
if (color.length == 8) {
return (color.substring(0, 6).toLong(16) or (color.substring(6, 8).toLong(16) shl 24)).toInt()
} else if (color.length == 6) {
return (color.toLong(16) or (0xFF000000)).toInt()
} else {
return defaultColor
}
}
val COLUMN_CTAG = Calendars.CAL_SYNC1 val COLUMN_CTAG = Calendars.CAL_SYNC1
fun create(account: Account, provider: ContentProviderClient, journalEntity: JournalEntity): Uri { fun create(account: Account, provider: ContentProviderClient, journalEntity: JournalEntity): Uri {
@ -111,7 +124,7 @@ class LocalCalendar private constructor(
values.put(Calendars.CALENDAR_DISPLAY_NAME, meta.name) values.put(Calendars.CALENDAR_DISPLAY_NAME, meta.name)
if (withColor) if (withColor)
values.put(Calendars.CALENDAR_COLOR, if (!meta.color.isNullOrBlank()) parseColor(meta.color) else defaultColor) values.put(Calendars.CALENDAR_COLOR, parseColor(meta.color))
if (col.accessLevel == "ro") if (col.accessLevel == "ro")
values.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_READ) values.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_READ)

@ -11,11 +11,9 @@ package com.etesync.syncadapter.resource
import android.accounts.Account import android.accounts.Account
import android.content.ContentValues import android.content.ContentValues
import android.content.Context import android.content.Context
import android.graphics.Color
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.RemoteException import android.os.RemoteException
import android.provider.CalendarContract
import at.bitfire.ical4android.AndroidTaskList import at.bitfire.ical4android.AndroidTaskList
import at.bitfire.ical4android.AndroidTaskListFactory import at.bitfire.ical4android.AndroidTaskListFactory
import at.bitfire.ical4android.CalendarStorageException import at.bitfire.ical4android.CalendarStorageException
@ -89,7 +87,7 @@ class LocalTaskList private constructor(
values.put(TaskLists.LIST_NAME, meta.name) values.put(TaskLists.LIST_NAME, meta.name)
if (withColor) if (withColor)
values.put(TaskLists.LIST_COLOR, if (!meta.color.isNullOrBlank()) Color.parseColor(meta.color) else defaultColor) values.put(TaskLists.LIST_COLOR, LocalCalendar.parseColor(meta.color))
return values return values
} }

@ -13,7 +13,6 @@ import android.accounts.AccountManager
import android.app.LoaderManager import android.app.LoaderManager
import android.content.* import android.content.*
import android.content.ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE import android.content.ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
import android.graphics.Color.parseColor
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
@ -31,10 +30,10 @@ import at.bitfire.vcard4android.ContactsStorageException
import com.etebase.client.CollectionManager import com.etebase.client.CollectionManager
import com.etebase.client.Utils import com.etebase.client.Utils
import com.etebase.client.exceptions.EtebaseException import com.etebase.client.exceptions.EtebaseException
import com.etesync.syncadapter.*
import com.etesync.journalmanager.Crypto import com.etesync.journalmanager.Crypto
import com.etesync.journalmanager.Exceptions import com.etesync.journalmanager.Exceptions
import com.etesync.journalmanager.JournalAuthenticator import com.etesync.journalmanager.JournalAuthenticator
import com.etesync.syncadapter.*
import com.etesync.syncadapter.Constants.* import com.etesync.syncadapter.Constants.*
import com.etesync.syncadapter.log.Logger import com.etesync.syncadapter.log.Logger
import com.etesync.syncadapter.model.CollectionInfo import com.etesync.syncadapter.model.CollectionInfo
@ -399,7 +398,7 @@ class AccountActivity : BaseActivity(), Toolbar.OnMenuItemClickListener, PopupMe
val isAdmin = accessLevel == "adm" val isAdmin = accessLevel == "adm"
val metaColor = meta.color val metaColor = meta.color
val color = if (!metaColor.isNullOrBlank()) parseColor(metaColor) else null val color = if (!metaColor.isNullOrBlank()) LocalCalendar.parseColor(metaColor) else null
CollectionListItemInfo(it.col.uid, type, meta.name, meta.description CollectionListItemInfo(it.col.uid, type, meta.name, meta.description
?: "", color, isReadOnly, isAdmin, null) ?: "", color, isReadOnly, isAdmin, null)
}.filterNotNull() }.filterNotNull()

@ -2,7 +2,6 @@ package com.etesync.syncadapter.ui.etebase
import android.app.Dialog import android.app.Dialog
import android.app.ProgressDialog import android.app.ProgressDialog
import android.graphics.Color.parseColor
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -51,7 +50,7 @@ class CollectionMembersFragment : Fragment() {
val meta = cachedCollection.meta val meta = cachedCollection.meta
val colorSquare = v.findViewById<View>(R.id.color) val colorSquare = v.findViewById<View>(R.id.color)
val color = if (!meta.color.isNullOrBlank()) parseColor(meta.color) else LocalCalendar.defaultColor val color = LocalCalendar.parseColor(meta.color)
when (meta.collectionType) { when (meta.collectionType) {
Constants.ETEBASE_TYPE_CALENDAR -> { Constants.ETEBASE_TYPE_CALENDAR -> {
colorSquare.setBackgroundColor(color) colorSquare.setBackgroundColor(color)

@ -1,6 +1,5 @@
package com.etesync.syncadapter.ui.etebase package com.etesync.syncadapter.ui.etebase
import android.graphics.Color.parseColor
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
@ -79,7 +78,7 @@ class EditCollectionFragment(private val cachedCollection: CachedCollection, pri
Constants.ETEBASE_TYPE_CALENDAR -> { Constants.ETEBASE_TYPE_CALENDAR -> {
title.setHint(R.string.create_calendar_display_name_hint) title.setHint(R.string.create_calendar_display_name_hint)
val color = if (!meta.color.isNullOrBlank()) parseColor(meta.color) else LocalCalendar.defaultColor val color = LocalCalendar.parseColor(meta.color)
colorSquare.setBackgroundColor(color) colorSquare.setBackgroundColor(color)
colorSquare.setOnClickListener { colorSquare.setOnClickListener {
AmbilWarnaDialog(context, (colorSquare.background as ColorDrawable).color, true, object : AmbilWarnaDialog.OnAmbilWarnaListener { AmbilWarnaDialog(context, (colorSquare.background as ColorDrawable).color, true, object : AmbilWarnaDialog.OnAmbilWarnaListener {
@ -94,7 +93,7 @@ class EditCollectionFragment(private val cachedCollection: CachedCollection, pri
Constants.ETEBASE_TYPE_TASKS -> { Constants.ETEBASE_TYPE_TASKS -> {
title.setHint(R.string.create_tasklist_display_name_hint) title.setHint(R.string.create_tasklist_display_name_hint)
val color = if (!meta.color.isNullOrBlank()) parseColor(meta.color) else LocalCalendar.defaultColor val color = LocalCalendar.parseColor(meta.color)
colorSquare.setBackgroundColor(color) colorSquare.setBackgroundColor(color)
colorSquare.setOnClickListener { colorSquare.setOnClickListener {
AmbilWarnaDialog(context, (colorSquare.background as ColorDrawable).color, true, object : AmbilWarnaDialog.OnAmbilWarnaListener { AmbilWarnaDialog(context, (colorSquare.background as ColorDrawable).color, true, object : AmbilWarnaDialog.OnAmbilWarnaListener {

@ -1,7 +1,6 @@
package com.etesync.syncadapter.ui.etebase package com.etesync.syncadapter.ui.etebase
import android.content.DialogInterface import android.content.DialogInterface
import android.graphics.Color.parseColor
import android.os.Bundle import android.os.Bundle
import android.view.* import android.view.*
import android.widget.TextView import android.widget.TextView
@ -67,7 +66,7 @@ class ViewCollectionFragment : Fragment() {
val isAdmin = col.accessLevel == "adm" val isAdmin = col.accessLevel == "adm"
val colorSquare = container.findViewById<View>(R.id.color) val colorSquare = container.findViewById<View>(R.id.color)
val color = if (!meta.color.isNullOrBlank()) parseColor(meta.color) else LocalCalendar.defaultColor val color = LocalCalendar.parseColor(meta.color)
when (meta.collectionType) { when (meta.collectionType) {
Constants.ETEBASE_TYPE_CALENDAR -> { Constants.ETEBASE_TYPE_CALENDAR -> {
colorSquare.setBackgroundColor(color) colorSquare.setBackgroundColor(color)

Loading…
Cancel
Save