jtxBoard collections: honor "Manage calendar colors" account setting (bitfireAT/davx5#427)

Signed-off-by: Arnau Mora <arnyminerz@proton.me>
This commit is contained in:
Arnau Mora 2023-10-31 08:10:54 -07:00 committed by Ricki Hirner
parent 1a36ee2d60
commit ca26155eed
No known key found for this signature in database
GPG key ID: 79A019FCAAEDD3AA
2 changed files with 12 additions and 8 deletions

View file

@ -7,6 +7,7 @@ package at.bitfire.davdroid.resource
import android.accounts.Account
import android.content.ContentProviderClient
import android.content.ContentValues
import at.bitfire.davdroid.Constants
import at.bitfire.davdroid.db.*
import at.bitfire.davdroid.db.Collection
import at.bitfire.davdroid.log.Logger
@ -24,11 +25,11 @@ class LocalJtxCollection(account: Account, client: ContentProviderClient, id: Lo
companion object {
fun create(account: Account, client: ContentProviderClient, info: Collection, owner: Principal?) {
val values = valuesFromCollection(info, account, owner)
val values = valuesFromCollection(info, account, owner, true)
create(account, client, values)
}
fun valuesFromCollection(info: Collection, account: Account, owner: Principal?) =
fun valuesFromCollection(info: Collection, account: Account, owner: Principal?, withColor: Boolean) =
ContentValues().apply {
put(JtxContract.JtxCollection.URL, info.url.toString())
put(JtxContract.JtxCollection.DISPLAYNAME, info.displayName ?: DavUtils.lastSegmentOfUrl(info.url))
@ -37,7 +38,8 @@ class LocalJtxCollection(account: Account, client: ContentProviderClient, id: Lo
put(JtxContract.JtxCollection.OWNER, owner.url.toString())
else Logger.log.log(Level.SEVERE, "No collection owner given. Will create jtx collection without owner")
put(JtxContract.JtxCollection.OWNER_DISPLAYNAME, owner?.displayName)
put(JtxContract.JtxCollection.COLOR, info.color)
if (withColor)
put(JtxContract.JtxCollection.COLOR, info.color ?: Constants.DAVDROID_GREEN_RGBA)
put(JtxContract.JtxCollection.SUPPORTSVEVENT, info.supportsVEVENT)
put(JtxContract.JtxCollection.SUPPORTSVJOURNAL, info.supportsVJOURNAL)
put(JtxContract.JtxCollection.SUPPORTSVTODO, info.supportsVTODO)
@ -55,8 +57,8 @@ class LocalJtxCollection(account: Account, client: ContentProviderClient, id: Lo
get() = SyncState.fromString(syncstate)
set(value) { syncstate = value.toString() }
fun updateCollection(info: Collection, owner: Principal?) {
val values = valuesFromCollection(info, account, owner)
fun updateCollection(info: Collection, owner: Principal?, withColor: Boolean) {
val values = valuesFromCollection(info, account, owner, withColor)
update(values)
}

View file

@ -52,7 +52,7 @@ class JtxSyncer(context: Context): Syncer(context) {
val accountSettings = AccountSettings(context, account)
// sync list of collections
updateLocalCollections(account, provider)
updateLocalCollections(account, provider, accountSettings)
// sync contents of collections
val collections = JtxCollection.find(account, provider, context, LocalJtxCollection.Factory, null, null)
@ -69,7 +69,7 @@ class JtxSyncer(context: Context): Syncer(context) {
Logger.log.info("jtx sync complete")
}
private fun updateLocalCollections(account: Account, client: ContentProviderClient) {
private fun updateLocalCollections(account: Account, client: ContentProviderClient, settings: AccountSettings) {
val service = db.serviceDao().getByAccountAndType(account.name, Service.TYPE_CALDAV)
val remoteCollections = mutableMapOf<HttpUrl, Collection>()
@ -77,6 +77,8 @@ class JtxSyncer(context: Context): Syncer(context) {
for (collection in db.collectionDao().getSyncJtxCollections(service.id))
remoteCollections[collection.url] = collection
val updateColors = settings.getManageCalendarColors()
for (jtxCollection in JtxCollection.find(account, client, context, LocalJtxCollection.Factory, null, null))
jtxCollection.url?.let { strUrl ->
val url = strUrl.toHttpUrl()
@ -88,7 +90,7 @@ class JtxSyncer(context: Context): Syncer(context) {
// remote CollectionInfo found for this local collection, update data
Logger.log.log(Level.FINE, "Updating local collection $url", info)
val owner = info.ownerId?.let { db.principalDao().get(it) }
jtxCollection.updateCollection(info, owner)
jtxCollection.updateCollection(info, owner, updateColors)
// we already have a local task list for this remote collection, don't take into consideration anymore
remoteCollections -= url
}