From 3a3fac2a48032f2b804f8646ad88c90fd342cc99 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 1 Nov 2016 23:12:44 +0100 Subject: [PATCH] some more work on the default event reminder setting --- .../simplemobiletools/calendar/Config.java | 18 ++++++++ .../simplemobiletools/calendar/Constants.java | 9 ++++ .../calendar/activities/EventActivity.kt | 43 +++++++++---------- .../calendar/activities/MainActivity.kt | 2 +- .../calendar/activities/SettingsActivity.kt | 37 +++++++++++++++- app/src/main/res/layout/activity_event.xml | 20 ++++----- app/src/main/res/layout/activity_settings.xml | 29 ++++++------- 7 files changed, 106 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/com/simplemobiletools/calendar/Config.java b/app/src/main/java/com/simplemobiletools/calendar/Config.java index 77503168e..97f45066c 100644 --- a/app/src/main/java/com/simplemobiletools/calendar/Config.java +++ b/app/src/main/java/com/simplemobiletools/calendar/Config.java @@ -64,4 +64,22 @@ public class Config { public void setStoredView(int view) { mPrefs.edit().putInt(Constants.VIEW, view).apply(); } + + public int getDefaultReminderType() { + return mPrefs.getInt(Constants.REMINDER_TYPE, Constants.REMINDER_AT_START); + } + + public void setDefaultReminderType(int type) { + mPrefs.edit().putInt(Constants.REMINDER_TYPE, type).apply(); + } + + public int getDefaultReminderMinutes() { + return mPrefs.getInt(Constants.REMINDER_MINUTES, 0); + } + + public void setDefaultReminderMinutes(int mins) { + if (mins == 0) + setDefaultReminderType(Constants.REMINDER_AT_START); + mPrefs.edit().putInt(Constants.REMINDER_MINUTES, mins).apply(); + } } diff --git a/app/src/main/java/com/simplemobiletools/calendar/Constants.java b/app/src/main/java/com/simplemobiletools/calendar/Constants.java index e25d244e9..f80e1b523 100644 --- a/app/src/main/java/com/simplemobiletools/calendar/Constants.java +++ b/app/src/main/java/com/simplemobiletools/calendar/Constants.java @@ -13,12 +13,19 @@ public class Constants { public static final int YEARLY_VIEW = 2; public static final int EVENTS_LIST_VIEW = 3; + public static final int REMINDER_OFF = -1; + public static final int REMINDER_AT_START = 0; + public static final int REMINDER_CUSTOM = 1; + public static final int DAY = 86400; public static final int WEEK = 604800; public static final int BIWEEK = 1209600; public static final int MONTH = 2592000; // exact value not taken into account, Joda is used for adding months and years public static final int YEAR = 31536000; + public static final int HOUR_MINS = 60; + public static final int DAY_MINS = 1440; + // Shared Preferences public static final String PREFS_KEY = "Calendar"; public static final String IS_FIRST_RUN = "is_first_run"; @@ -26,6 +33,8 @@ public class Constants { public static final String SUNDAY_FIRST = "sunday_first"; public static final String WEEK_NUMBERS = "week_numbers"; public static final String VIEW = "view"; + public static final String REMINDER_TYPE = "reminder_type"; + public static final String REMINDER_MINUTES = "reminder_minutes"; public static final String WIDGET_BG_COLOR = "widget_bg_color"; public static final String WIDGET_TEXT_COLOR = "widget_text_color"; public static final String LAST_OTHER_REMINDER_MINS = "last_other_reminder_mins"; diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt index e6919b241..cbdb39c6a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/EventActivity.kt @@ -18,9 +18,6 @@ import org.joda.time.DateTime import org.joda.time.DateTimeZone class EventActivity : SimpleActivity(), DBHelper.EventsListener { - val HOUR_MINS = 60 - val DAY_MINS = 1440 - private var mWasReminderInit: Boolean = false private var mWasEndDateSet: Boolean = false private var mWasEndTimeSet: Boolean = false @@ -93,13 +90,13 @@ class EventActivity : SimpleActivity(), DBHelper.EventsListener { title = resources.getString(R.string.new_event) mEventStartDateTime = Formatter.getDateTimeFromCode(dayCode).withZoneRetainFields(DateTimeZone.getDefault()).withHourOfDay(13) mEventEndDateTime = mEventStartDateTime - event_reminder_other.setText(mConfig.lastOtherReminderMins.toString()) + custom_reminder_value.setText(mConfig.lastOtherReminderMins.toString()) } private fun setupReminder() { when (mEvent.reminderMinutes) { - -1 -> event_reminder.setSelection(0) - 0 -> event_reminder.setSelection(1) + Constants.REMINDER_OFF -> event_reminder.setSelection(0) + Constants.REMINDER_AT_START -> event_reminder.setSelection(1) else -> { event_reminder.setSelection(2) toggleCustomReminderVisibility(true) @@ -136,8 +133,8 @@ class EventActivity : SimpleActivity(), DBHelper.EventsListener { if (event_reminder.selectedItemPosition == event_reminder.count - 1) { toggleCustomReminderVisibility(true) - event_reminder_other.requestFocus() - showKeyboard(event_reminder_other) + custom_reminder_value.requestFocus() + showKeyboard(custom_reminder_value) } else { hideKeyboard() toggleCustomReminderVisibility(false) @@ -147,22 +144,22 @@ class EventActivity : SimpleActivity(), DBHelper.EventsListener { private fun setupReminderPeriod() { val mins = mEvent.reminderMinutes var value = mins - if (mins % DAY_MINS == 0) { - value = mins / DAY_MINS - settings_custom_reminder_other_period.setSelection(2) - } else if (mins % HOUR_MINS == 0) { - value = mins / HOUR_MINS - settings_custom_reminder_other_period.setSelection(1) + if (mins % Constants.DAY_MINS == 0) { + value = mins / Constants.DAY_MINS + custom_reminder_other_period.setSelection(2) + } else if (mins % Constants.HOUR_MINS == 0) { + value = mins / Constants.HOUR_MINS + custom_reminder_other_period.setSelection(1) } else { - settings_custom_reminder_other_period.setSelection(0) + custom_reminder_other_period.setSelection(0) } - event_reminder_other.setText(value.toString()) + custom_reminder_value.setText(value.toString()) } fun toggleCustomReminderVisibility(show: Boolean) { - settings_custom_reminder_other_period.beVisibleIf(show) - settings_custom_reminder_other_val.beVisibleIf(show) - event_reminder_other.beVisibleIf(show) + custom_reminder_other_period.beVisibleIf(show) + custom_reminder_other_val.beVisibleIf(show) + custom_reminder_value.beVisibleIf(show) } override fun onCreateOptionsMenu(menu: Menu): Boolean { @@ -242,13 +239,13 @@ class EventActivity : SimpleActivity(), DBHelper.EventsListener { 0 -> -1 1 -> 0 else -> { - val value = event_reminder_other.value + val value = custom_reminder_value.value if (value.isEmpty()) 0 - val multiplier = when (settings_custom_reminder_other_period.selectedItemPosition) { - 1 -> HOUR_MINS - 2 -> DAY_MINS + val multiplier = when (custom_reminder_other_period.selectedItemPosition) { + 1 -> Constants.HOUR_MINS + 2 -> Constants.DAY_MINS else -> 1 } Integer.valueOf(value) * multiplier 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 710377900..398ce0e82 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt @@ -93,7 +93,7 @@ class MainActivity : SimpleActivity(), EventListFragment.DeleteListener, ChangeV private fun updateView(view: Int) { mIsMonthSelected = view == Constants.MONTHLY_VIEW - mConfig.view = view + mConfig.storedView = view updateViewPager() } 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 b51dbabec..60fc7faf2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/SettingsActivity.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.support.v4.app.TaskStackBuilder import android.view.View import android.widget.AdapterView +import com.simplemobiletools.calendar.Constants import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.extensions.beVisibleIf import com.simplemobiletools.calendar.extensions.hideKeyboard @@ -39,7 +40,7 @@ class SettingsActivity : SimpleActivity() { } private fun setupWeekNumbers() { - settings_week_numbers!!.isChecked = mConfig.displayWeekNumbers + settings_week_numbers.isChecked = mConfig.displayWeekNumbers settings_week_numbers_holder.setOnClickListener { settings_week_numbers.toggle() mConfig.displayWeekNumbers = settings_week_numbers.isChecked @@ -47,6 +48,16 @@ class SettingsActivity : SimpleActivity() { } private fun setupEventReminder() { + val reminderType = mConfig.defaultReminderType + val reminderMinutes = mConfig.defaultReminderMinutes + settings_default_reminder.setSelection(when (reminderType) { + Constants.REMINDER_OFF -> 0 + Constants.REMINDER_AT_START -> 1 + else -> 2 + }) + setupReminderPeriod(reminderMinutes) + settings_custom_reminder_holder.beVisibleIf(reminderType == 2) + settings_default_reminder.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onNothingSelected(p0: AdapterView<*>?) { } @@ -54,13 +65,35 @@ class SettingsActivity : SimpleActivity() { override fun onItemSelected(p0: AdapterView<*>?, p1: View?, itemIndex: Int, p3: Long) { settings_custom_reminder_holder.beVisibleIf(itemIndex == 2) if (itemIndex == 2) - showKeyboard(settings_custom_reminder_other) + showKeyboard(custom_reminder_value) else hideKeyboard() + + mConfig.defaultReminderType = when (itemIndex) { + 0 -> Constants.REMINDER_OFF + 1 -> Constants.REMINDER_AT_START + else -> Constants.REMINDER_CUSTOM + } } } } + private fun setupReminderPeriod(mins: Int) { + var value = mins + if (mins == 0) { + custom_reminder_other_period.setSelection(0) + } else if (mins % Constants.DAY_MINS == 0) { + value = mins / Constants.DAY_MINS + custom_reminder_other_period.setSelection(2) + } else if (mins % Constants.HOUR_MINS == 0) { + value = mins / Constants.HOUR_MINS + custom_reminder_other_period.setSelection(1) + } else { + custom_reminder_other_period.setSelection(0) + } + custom_reminder_value.setText(value.toString()) + } + private fun restartActivity() { TaskStackBuilder.create(applicationContext).addNextIntentWithParentStack(intent).startActivities() } diff --git a/app/src/main/res/layout/activity_event.xml b/app/src/main/res/layout/activity_event.xml index 4dd1b3f70..2603d5a80 100644 --- a/app/src/main/res/layout/activity_event.xml +++ b/app/src/main/res/layout/activity_event.xml @@ -128,7 +128,7 @@ android:padding="@dimen/activity_margin"/> @@ -166,7 +166,7 @@ android:id="@+id/event_repetition_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_below="@+id/event_reminder_other" + android:layout_below="@+id/custom_reminder_value" android:layout_marginTop="@dimen/activity_margin" android:text="@string/repetition" android:textSize="@dimen/day_text_size"/> diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 412c2d2e5..089ef7a4f 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -118,43 +118,40 @@ android:id="@+id/settings_custom_reminder_holder" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginLeft="@dimen/settings_padding" android:layout_marginTop="@dimen/settings_padding" - android:paddingLeft="@dimen/activity_margin" android:visibility="gone"> + android:textSize="@dimen/day_text_size"/> + android:paddingLeft="@dimen/activity_margin"/> + android:text="@string/before"/>