mirror of
https://github.com/bitfireAT/davx5-ose
synced 2024-07-23 19:50:18 +00:00
jtxBoard collections: honor "Manage calendar colors" account setting (bitfireAT/davx5#427)
Signed-off-by: Arnau Mora <arnyminerz@proton.me>
This commit is contained in:
parent
1a36ee2d60
commit
ca26155eed
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue