From 66c5e686233e89064e06d89798bf5ec454d2df3f Mon Sep 17 00:00:00 2001 From: knusprjg Date: Mon, 22 Oct 2018 20:50:44 +0200 Subject: [PATCH] - Added "default view" option to settings that allows user to choose which calender view is launched when pressing at the top bar of the events list widget (closes #424) - Removed "OPEN_MONTH" extra boolean for selected view and replaced it with more versatile integer to achieve more flexibility - Added two more strings so far only in english and german --- .../calendar/activities/MainActivity.kt | 6 ++-- .../calendar/activities/SettingsActivity.kt | 30 ++++++++++++++++ .../calendar/activities/SplashActivity.kt | 7 ++-- .../calendar/helpers/Config.kt | 4 +++ .../calendar/helpers/Constants.kt | 4 ++- .../calendar/helpers/MyWidgetListProvider.kt | 9 ++--- .../helpers/MyWidgetMonthlyProvider.kt | 2 +- app/src/main/res/layout/activity_settings.xml | 34 +++++++++++++++++++ app/src/main/res/values-de/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 10 files changed, 86 insertions(+), 14 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt index 03b99dd6d..da283f6fd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt @@ -251,12 +251,12 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { private fun checkOpenIntents(): Boolean { val dayCodeToOpen = intent.getStringExtra(DAY_CODE) ?: "" - val openMonth = intent.getBooleanExtra(OPEN_MONTH, false) - intent.removeExtra(OPEN_MONTH) + val viewToOpen = intent.getIntExtra(VIEW_TO_OPEN, DAILY_VIEW) + intent.removeExtra(VIEW_TO_OPEN) intent.removeExtra(DAY_CODE) if (dayCodeToOpen.isNotEmpty()) { calendar_fab.beVisible() - config.storedView = if (openMonth) MONTHLY_VIEW else DAILY_VIEW + if (viewToOpen != LAST_VIEW) {config.storedView = viewToOpen} updateViewPager(dayCodeToOpen) return true } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt index c0e6f56d4..25a71b965 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt @@ -67,6 +67,7 @@ class SettingsActivity : SimpleActivity() { setupDisplayPastEvents() setupFontSize() setupCustomizeWidgetColors() + setupDefaultView() setupDimEvents() updateTextColors(settings_holder) checkPrimaryColor() @@ -501,6 +502,35 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupDefaultView() { + settings_default_view.text = getDefaultViewText() + settings_default_view_holder.setOnClickListener { + val items = arrayListOf( + RadioItem(DAILY_VIEW, res.getString(R.string.daily_view)), + RadioItem(WEEKLY_VIEW, res.getString(R.string.weekly_view)), + RadioItem(MONTHLY_VIEW, res.getString(R.string.monthly_view)), + RadioItem(YEARLY_VIEW, res.getString(R.string.yearly_view)), + RadioItem(EVENTS_LIST_VIEW, res.getString(R.string.simple_event_list)), + RadioItem(LAST_VIEW, res.getString(R.string.last_view))) + + RadioGroupDialog(this@SettingsActivity, items, config.defaultView) { + config.defaultView = it as Int + settings_default_view.text = getDefaultViewText() + updateWidgets() + updateListWidget() + } + } + } + + private fun getDefaultViewText() = getString(when (config.defaultView) { + DAILY_VIEW -> R.string.daily_view + WEEKLY_VIEW -> R.string.weekly_view + MONTHLY_VIEW -> R.string.monthly_view + YEARLY_VIEW -> R.string.yearly_view + EVENTS_LIST_VIEW -> R.string.simple_event_list + else -> R.string.last_view + }) + private fun setupDimEvents() { settings_dim_past_events.isChecked = config.dimPastEvents settings_dim_past_events_holder.setOnClickListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SplashActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SplashActivity.kt index 34025f507..b89b88d15 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SplashActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SplashActivity.kt @@ -1,10 +1,7 @@ package com.simplemobiletools.calendar.activities import android.content.Intent -import com.simplemobiletools.calendar.helpers.DAY_CODE -import com.simplemobiletools.calendar.helpers.EVENT_ID -import com.simplemobiletools.calendar.helpers.EVENT_OCCURRENCE_TS -import com.simplemobiletools.calendar.helpers.OPEN_MONTH +import com.simplemobiletools.calendar.helpers.* import com.simplemobiletools.commons.activities.BaseSplashActivity class SplashActivity : BaseSplashActivity() { @@ -12,7 +9,7 @@ class SplashActivity : BaseSplashActivity() { when { intent.extras?.containsKey(DAY_CODE) == true -> Intent(this, MainActivity::class.java).apply { putExtra(DAY_CODE, intent.getStringExtra(DAY_CODE)) - putExtra(OPEN_MONTH, intent.getBooleanExtra(OPEN_MONTH, false)) + putExtra(VIEW_TO_OPEN, intent.getIntExtra(VIEW_TO_OPEN, LAST_VIEW)) startActivity(this) } intent.extras?.containsKey(EVENT_ID) == true -> Intent(this, MainActivity::class.java).apply { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt index 021c78bdf..a2140bdd1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Config.kt @@ -76,6 +76,10 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getInt(FONT_SIZE, FONT_SIZE_MEDIUM) set(size) = prefs.edit().putInt(FONT_SIZE, size).apply() + var defaultView: Int + get() = prefs.getInt(DEFAULT_VIEW, DAILY_VIEW) + set(size) = prefs.edit().putInt(DEFAULT_VIEW, size).apply() + var caldavSync: Boolean get() = prefs.getBoolean(CALDAV_SYNC, false) set(caldavSync) { diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt index ce736e0e7..ca8d8a109 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/Constants.kt @@ -14,13 +14,14 @@ const val WEEK_START_TIMESTAMP = "week_start_timestamp" const val NEW_EVENT_SET_HOUR_DURATION = "new_event_set_hour_duration" const val WEEK_START_DATE_TIME = "week_start_date_time" const val CALDAV = "Caldav" -const val OPEN_MONTH = "open_month" +const val VIEW_TO_OPEN = "view_to_open" const val MONTHLY_VIEW = 1 const val YEARLY_VIEW = 2 const val EVENTS_LIST_VIEW = 3 const val WEEKLY_VIEW = 4 const val DAILY_VIEW = 5 +const val LAST_VIEW = 6 const val REMINDER_OFF = -1 @@ -46,6 +47,7 @@ const val LAST_EVENT_REMINDER_MINUTES_2 = "reminder_minutes_2" const val LAST_EVENT_REMINDER_MINUTES_3 = "reminder_minutes_3" const val DISPLAY_EVENT_TYPES = "display_event_types" const val FONT_SIZE = "font_size" +const val DEFAULT_VIEW = "default_view" const val CALDAV_SYNC = "caldav_sync" const val CALDAV_SYNCED_CALENDAR_IDS = "caldav_synced_calendar_ids" const val LAST_USED_CALDAV_CALENDAR = "last_used_caldav_calendar" diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/MyWidgetListProvider.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/MyWidgetListProvider.kt index 2e2903d86..57548aad4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/MyWidgetListProvider.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/MyWidgetListProvider.kt @@ -18,7 +18,7 @@ import org.joda.time.DateTime class MyWidgetListProvider : AppWidgetProvider() { private val NEW_EVENT = "new_event" - private val LAUNCH_TODAY = "launch_today" + private val LAUNCH_CAL = "launch_cal" override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) { performUpdate(context) @@ -44,7 +44,7 @@ class MyWidgetListProvider : AppWidgetProvider() { views.setImageViewBitmap(R.id.widget_event_new_event, context.resources.getColoredBitmap(R.drawable.ic_plus, textColor)) setupIntent(context, views, NEW_EVENT, R.id.widget_event_new_event) - setupIntent(context, views, LAUNCH_TODAY, R.id.widget_event_list_today) + setupIntent(context, views, LAUNCH_CAL, R.id.widget_event_list_today) Intent(context, WidgetService::class.java).apply { data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME)) @@ -74,14 +74,15 @@ class MyWidgetListProvider : AppWidgetProvider() { override fun onReceive(context: Context, intent: Intent) { when (intent.action) { NEW_EVENT -> context.launchNewEventIntent() - LAUNCH_TODAY -> launchDayActivity(context) + LAUNCH_CAL -> launchCalenderInDefaultView(context) else -> super.onReceive(context, intent) } } - private fun launchDayActivity(context: Context) { + private fun launchCalenderInDefaultView(context: Context) { (context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java)).apply { putExtra(DAY_CODE, Formatter.getDayCodeFromDateTime(DateTime())) + putExtra(VIEW_TO_OPEN, context.config.defaultView) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(this) } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/MyWidgetMonthlyProvider.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/MyWidgetMonthlyProvider.kt index 06ca36113..ce1b699cf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/MyWidgetMonthlyProvider.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/MyWidgetMonthlyProvider.kt @@ -49,7 +49,7 @@ class MyWidgetMonthlyProvider : AppWidgetProvider() { private fun setupAppOpenIntent(context: Context, views: RemoteViews, id: Int, dayCode: String) { (context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java)).apply { putExtra(DAY_CODE, dayCode) - putExtra(OPEN_MONTH, true) + putExtra(VIEW_TO_OPEN, MONTHLY_VIEW) val pendingIntent = PendingIntent.getActivity(context, Integer.parseInt(dayCode.substring(0, 6)), this, 0) views.setOnClickPendingIntent(id, pendingIntent) } diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 14f5c73fa..7d408a270 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -849,6 +849,40 @@ + + + + + + + + Standarderinnerung 1 Standarderinnerung 2 Standarderinnerung 3 + Letzte Ansicht + Standardansicht CalDAV diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b1de5682b..4ab8585d0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -168,6 +168,8 @@ Default reminder 1 Default reminder 2 Default reminder 3 + Default view + Last view CalDAV