mirror of
https://github.com/etesync/android
synced 2025-02-22 20:42:04 +00:00
Add utilities to update and get the wanted tasks provider.
This commit is contained in:
parent
5fca068845
commit
52bf0b615c
@ -34,6 +34,7 @@ import com.etesync.syncadapter.ui.AccountsActivity
|
|||||||
import com.etesync.syncadapter.utils.HintManager
|
import com.etesync.syncadapter.utils.HintManager
|
||||||
import com.etesync.syncadapter.utils.LanguageUtils
|
import com.etesync.syncadapter.utils.LanguageUtils
|
||||||
import com.etesync.syncadapter.utils.NotificationUtils
|
import com.etesync.syncadapter.utils.NotificationUtils
|
||||||
|
import com.etesync.syncadapter.utils.TaskProviderHandling
|
||||||
import io.requery.Persistable
|
import io.requery.Persistable
|
||||||
import io.requery.android.sqlite.DatabaseSource
|
import io.requery.android.sqlite.DatabaseSource
|
||||||
import io.requery.meta.EntityModel
|
import io.requery.meta.EntityModel
|
||||||
@ -88,7 +89,7 @@ class App : Application() {
|
|||||||
|
|
||||||
OPENTASK_PROVIDERS.forEach {
|
OPENTASK_PROVIDERS.forEach {
|
||||||
// check whether a tasks app is currently installed
|
// check whether a tasks app is currently installed
|
||||||
PackageChangedReceiver.updateTaskSync(this@App, it)
|
TaskProviderHandling.updateTaskSync(this@App, it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,17 +8,12 @@
|
|||||||
|
|
||||||
package com.etesync.syncadapter
|
package com.etesync.syncadapter
|
||||||
|
|
||||||
import android.accounts.AccountManager
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.ContentResolver
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.provider.CalendarContract
|
|
||||||
import at.bitfire.ical4android.TaskProvider
|
import at.bitfire.ical4android.TaskProvider
|
||||||
import at.bitfire.ical4android.TaskProvider.ProviderName
|
import com.etesync.syncadapter.utils.TaskProviderHandling.Companion.updateTaskSync
|
||||||
import com.etesync.syncadapter.log.Logger
|
|
||||||
import com.etesync.syncadapter.resource.LocalTaskList
|
|
||||||
|
|
||||||
class PackageChangedReceiver : BroadcastReceiver() {
|
class PackageChangedReceiver : BroadcastReceiver() {
|
||||||
|
|
||||||
@ -30,29 +25,4 @@ class PackageChangedReceiver : BroadcastReceiver() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
|
||||||
|
|
||||||
internal fun updateTaskSync(context: Context, provider: ProviderName) {
|
|
||||||
val tasksInstalled = LocalTaskList.tasksProviderAvailable(context, provider)
|
|
||||||
Logger.log.info("Package (un)installed; ${provider.name} provider now available = $tasksInstalled")
|
|
||||||
|
|
||||||
for (account in AccountManager.get(context).getAccountsByType(App.accountType)) {
|
|
||||||
val settings = AccountSettings(context, account)
|
|
||||||
val calendarSyncInterval = settings.getSyncInterval(CalendarContract.AUTHORITY)
|
|
||||||
|
|
||||||
if (tasksInstalled) {
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ import com.etesync.syncadapter.model.ServiceEntity
|
|||||||
import com.etesync.syncadapter.resource.LocalTaskList
|
import com.etesync.syncadapter.resource.LocalTaskList
|
||||||
import com.etesync.syncadapter.ui.setup.BaseConfigurationFinder.Configuration
|
import com.etesync.syncadapter.ui.setup.BaseConfigurationFinder.Configuration
|
||||||
import com.etesync.syncadapter.utils.AndroidCompat
|
import com.etesync.syncadapter.utils.AndroidCompat
|
||||||
|
import com.etesync.syncadapter.utils.TaskProviderHandling
|
||||||
import okhttp3.HttpUrl
|
import okhttp3.HttpUrl
|
||||||
import java.util.logging.Level
|
import java.util.logging.Level
|
||||||
|
|
||||||
@ -157,10 +158,7 @@ class SetupEncryptionFragment : DialogFragment() {
|
|||||||
OPENTASK_PROVIDERS.forEach {
|
OPENTASK_PROVIDERS.forEach {
|
||||||
// enable task sync if OpenTasks is installed
|
// enable task sync if OpenTasks is installed
|
||||||
// further changes will be handled by PackageChangedReceiver
|
// further changes will be handled by PackageChangedReceiver
|
||||||
if (LocalTaskList.tasksProviderAvailable(context!!, it)) {
|
TaskProviderHandling.updateTaskSync(context!!, it)
|
||||||
ContentResolver.setIsSyncable(account, it.authority, 1)
|
|
||||||
settings.setSyncInterval(it.authority, Constants.DEFAULT_SYNC_INTERVAL.toLong())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ContentResolver.setIsSyncable(account, CalendarContract.AUTHORITY, 0)
|
ContentResolver.setIsSyncable(account, CalendarContract.AUTHORITY, 0)
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user