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.ContentUris
import android.content.ContentValues
import android.graphics.Color.parseColor
import android.net.Uri
import android.os.RemoteException
import android.provider.CalendarContract
@ -35,6 +34,20 @@ class LocalCalendar private constructor(
companion object {
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
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)
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")
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.content.ContentValues
import android.content.Context
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.os.RemoteException
import android.provider.CalendarContract
import at.bitfire.ical4android.AndroidTaskList
import at.bitfire.ical4android.AndroidTaskListFactory
import at.bitfire.ical4android.CalendarStorageException
@ -89,7 +87,7 @@ class LocalTaskList private constructor(
values.put(TaskLists.LIST_NAME, meta.name)
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
}

@ -13,7 +13,6 @@ import android.accounts.AccountManager
import android.app.LoaderManager
import android.content.*
import android.content.ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
import android.graphics.Color.parseColor
import android.net.Uri
import android.os.Build
import android.os.Bundle
@ -31,10 +30,10 @@ import at.bitfire.vcard4android.ContactsStorageException
import com.etebase.client.CollectionManager
import com.etebase.client.Utils
import com.etebase.client.exceptions.EtebaseException
import com.etesync.syncadapter.*
import com.etesync.journalmanager.Crypto
import com.etesync.journalmanager.Exceptions
import com.etesync.journalmanager.JournalAuthenticator
import com.etesync.syncadapter.*
import com.etesync.syncadapter.Constants.*
import com.etesync.syncadapter.log.Logger
import com.etesync.syncadapter.model.CollectionInfo
@ -399,7 +398,7 @@ class AccountActivity : BaseActivity(), Toolbar.OnMenuItemClickListener, PopupMe
val isAdmin = accessLevel == "adm"
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
?: "", color, isReadOnly, isAdmin, null)
}.filterNotNull()

@ -2,7 +2,6 @@ package com.etesync.syncadapter.ui.etebase
import android.app.Dialog
import android.app.ProgressDialog
import android.graphics.Color.parseColor
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@ -51,7 +50,7 @@ class CollectionMembersFragment : Fragment() {
val meta = cachedCollection.meta
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) {
Constants.ETEBASE_TYPE_CALENDAR -> {
colorSquare.setBackgroundColor(color)

@ -1,6 +1,5 @@
package com.etesync.syncadapter.ui.etebase
import android.graphics.Color.parseColor
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.text.TextUtils
@ -79,7 +78,7 @@ class EditCollectionFragment(private val cachedCollection: CachedCollection, pri
Constants.ETEBASE_TYPE_CALENDAR -> {
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.setOnClickListener {
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 -> {
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.setOnClickListener {
AmbilWarnaDialog(context, (colorSquare.background as ColorDrawable).color, true, object : AmbilWarnaDialog.OnAmbilWarnaListener {

@ -1,7 +1,6 @@
package com.etesync.syncadapter.ui.etebase
import android.content.DialogInterface
import android.graphics.Color.parseColor
import android.os.Bundle
import android.view.*
import android.widget.TextView
@ -67,7 +66,7 @@ class ViewCollectionFragment : Fragment() {
val isAdmin = col.accessLevel == "adm"
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) {
Constants.ETEBASE_TYPE_CALENDAR -> {
colorSquare.setBackgroundColor(color)

Loading…
Cancel
Save