mirror of https://github.com/etesync/android
commit
dc3db43d70
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright © Ricki Hirner (bitfire web engineering).
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Public License v3.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
package com.etesync.syncadapter.syncadapter
|
||||
|
||||
import at.bitfire.ical4android.TaskProvider
|
||||
|
||||
/**
|
||||
* Synchronization manager for CalDAV collections; handles tasks ({@code VTODO}).
|
||||
*/
|
||||
class TasksOrgSyncAdapterService: SyncAdapterService() {
|
||||
|
||||
override fun syncAdapter() =
|
||||
TasksSyncAdapterService.TasksSyncAdapter(this, TaskProvider.ProviderName.TasksOrg)
|
||||
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package com.etesync.syncadapter.utils
|
||||
|
||||
import android.accounts.AccountManager
|
||||
import android.content.ContentResolver
|
||||
import android.content.Context
|
||||
import android.provider.CalendarContract
|
||||
import at.bitfire.ical4android.TaskProvider
|
||||
import com.etesync.syncadapter.AccountSettings
|
||||
import com.etesync.syncadapter.App
|
||||
import com.etesync.syncadapter.log.Logger
|
||||
import com.etesync.syncadapter.resource.LocalTaskList
|
||||
import org.jetbrains.anko.defaultSharedPreferences
|
||||
|
||||
class TaskProviderHandling {
|
||||
companion object {
|
||||
fun getWantedTaskSyncProvider(context: Context): TaskProvider.ProviderName? {
|
||||
val openTasksAvailable = LocalTaskList.tasksProviderAvailable(context, TaskProvider.ProviderName.OpenTasks)
|
||||
val tasksOrgAvailable = LocalTaskList.tasksProviderAvailable(context, TaskProvider.ProviderName.TasksOrg)
|
||||
|
||||
if (openTasksAvailable && tasksOrgAvailable) {
|
||||
if (context.defaultSharedPreferences.getBoolean(App.PREFER_TASKSORG, false))
|
||||
return TaskProvider.ProviderName.TasksOrg
|
||||
else
|
||||
return TaskProvider.ProviderName.OpenTasks
|
||||
} else {
|
||||
if (openTasksAvailable)
|
||||
return TaskProvider.ProviderName.OpenTasks
|
||||
else if (tasksOrgAvailable)
|
||||
return TaskProvider.ProviderName.TasksOrg
|
||||
else
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
fun updateTaskSync(context: Context, provider: TaskProvider.ProviderName) {
|
||||
for (account in AccountManager.get(context).getAccountsByType(App.accountType)) {
|
||||
val settings = AccountSettings(context, account)
|
||||
val calendarSyncInterval = settings.getSyncInterval(CalendarContract.AUTHORITY)
|
||||
val wantedProvider = getWantedTaskSyncProvider(context)
|
||||
val shouldSync = wantedProvider == provider
|
||||
|
||||
Logger.log.info("Package (un)installed; Syncing (${shouldSync}) for ${provider.name}")
|
||||
if (shouldSync) {
|
||||
if (calendarSyncInterval == null) {
|
||||
// do nothing atm
|
||||
} else if (ContentResolver.getIsSyncable(account, provider.authority) <= 0) {
|
||||
ContentResolver.setIsSyncable(account, provider.authority, 1)
|
||||
settings.setSyncInterval(provider.authority, calendarSyncInterval)
|
||||
}
|
||||
} else {
|
||||
ContentResolver.setIsSyncable(account, provider.authority, 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
<!--
|
||||
~ Copyright © Ricki Hirner (bitfire web engineering).
|
||||
~ All rights reserved. This program and the accompanying materials
|
||||
~ are made available under the terms of the GNU Public License v3.0
|
||||
~ which accompanies this distribution, and is available at
|
||||
~ http://www.gnu.org/licenses/gpl.html
|
||||
-->
|
||||
|
||||
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:accountType="@string/account_type"
|
||||
android:contentAuthority="org.tasks.opentasks"
|
||||
android:supportsUploading="true" />
|
@ -1 +1 @@
|
||||
Subproject commit c0459f905571ab2e08e8af9ac40a96200d8cb862
|
||||
Subproject commit 0a070c7866792756d90be429522127ef9108eff8
|
Loading…
Reference in new issue