select all calendars at first Caldav Sync

This commit is contained in:
tibbi 2017-08-13 16:25:29 +02:00
parent e0177f355c
commit 25f38916f1
5 changed files with 20 additions and 13 deletions

View File

@ -98,10 +98,10 @@ class SettingsActivity : SimpleActivity() {
settings_caldav_sync.isChecked = config.caldavSync
settings_caldav_sync_holder.setOnClickListener {
if (config.caldavSync) {
toggleCaldavSync()
toggleCaldavSync(false)
} else {
if (hasCalendarPermission()) {
toggleCaldavSync()
toggleCaldavSync(true)
} else {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_CALENDAR), CALENDAR_PERMISSION)
}
@ -109,12 +109,12 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun toggleCaldavSync() {
settings_caldav_sync.toggle()
config.caldavSync = settings_caldav_sync.isChecked
if (config.caldavSync) {
private fun toggleCaldavSync(enable: Boolean) {
settings_caldav_sync.isChecked = enable
config.caldavSync = enable
if (enable) {
SelectCalendarsDialog(this) {
config.isFirstCaldavSync = false
}
}
}
@ -298,7 +298,7 @@ class SettingsActivity : SimpleActivity() {
if (requestCode == CALENDAR_PERMISSION) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
toggleCaldavSync()
toggleCaldavSync(true)
}
}
}

View File

@ -14,13 +14,14 @@ import kotlinx.android.synthetic.main.calendar_item_account.view.*
import kotlinx.android.synthetic.main.calendar_item_calendar.view.*
import kotlinx.android.synthetic.main.dialog_select_calendars.view.*
class SelectCalendarsDialog(val activity: Activity, val callback: (calendars: Int) -> Unit) : AlertDialog.Builder(activity) {
class SelectCalendarsDialog(val activity: Activity, val callback: () -> Unit) : AlertDialog.Builder(activity) {
var prevAccount = ""
var dialog: AlertDialog
var view = (activity.layoutInflater.inflate(R.layout.dialog_select_calendars, null) as ViewGroup)
init {
val ids = activity.config.caldavSyncedCalendarIDs.split(",") as ArrayList<String>
val isFirstCaldavSync = activity.config.isFirstCaldavSync
val calendars = activity.getCalDAVCalendars()
val sorted = calendars.sortedWith(compareBy({ it.accountName }, { it.displayName }))
sorted.forEach {
@ -29,7 +30,7 @@ class SelectCalendarsDialog(val activity: Activity, val callback: (calendars: In
addCalendarItem(false, it.accountName)
}
addCalendarItem(true, it.displayName, it.id, ids.contains(it.id.toString()))
addCalendarItem(true, it.displayName, it.id, ids.contains(it.id.toString()) || isFirstCaldavSync)
}
dialog = AlertDialog.Builder(activity)
@ -74,5 +75,6 @@ class SelectCalendarsDialog(val activity: Activity, val callback: (calendars: In
}
activity.config.caldavSyncedCalendarIDs = TextUtils.join(",", calendarIDs)
callback()
}
}

View File

@ -78,6 +78,10 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getString(CALDAV_SYNCED_CALENDAR_IDS, "")
set(calendarIDs) = prefs.edit().putString(CALDAV_SYNCED_CALENDAR_IDS, calendarIDs).apply()
var isFirstCaldavSync: Boolean
get() = prefs.getBoolean(IS_FIRST_CALDAV_SYNC, true)
set(isFirstCaldavSync) = prefs.edit().putBoolean(IS_FIRST_CALDAV_SYNC, isFirstCaldavSync).apply()
fun addDisplayEventType(type: String) {
addDisplayEventTypes(HashSet<String>(Arrays.asList(type)))
}

View File

@ -43,6 +43,7 @@ val DISPLAY_EVENT_TYPES = "display_event_types"
val FONT_SIZE = "font_size"
val CALDAV_SYNC = "caldav_sync"
val CALDAV_SYNCED_CALENDAR_IDS = "caldav_synced_calendar_ids"
val IS_FIRST_CALDAV_SYNC = "is_first_caldav_sync"
val SYNC_ACCOUNT_NAME = "sync_account_name"
val SNOOZE_DELAY = "snooze_delay"
val DISPLAY_PAST_EVENTS = "display_past_events"

View File

@ -3,14 +3,14 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_select_calendars_scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:paddingTop="@dimen/activity_margin">
<LinearLayout
android:id="@+id/dialog_select_calendars_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="@dimen/activity_margin">
android:orientation="vertical">
</LinearLayout>
</ScrollView>