summaryrefslogtreecommitdiff
path: root/src/com/android/calendar/OtherPreferences.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/calendar/OtherPreferences.kt')
-rw-r--r--src/com/android/calendar/OtherPreferences.kt184
1 files changed, 184 insertions, 0 deletions
diff --git a/src/com/android/calendar/OtherPreferences.kt b/src/com/android/calendar/OtherPreferences.kt
new file mode 100644
index 00000000..f1507ccf
--- /dev/null
+++ b/src/com/android/calendar/OtherPreferences.kt
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.calendar
+
+import android.app.Activity
+import android.app.Dialog
+import android.app.TimePickerDialog
+import android.content.ComponentName
+import android.content.Intent
+import android.content.SharedPreferences
+import android.os.Bundle
+import android.preference.CheckBoxPreference
+import android.preference.ListPreference
+import android.preference.Preference
+import android.preference.Preference.OnPreferenceChangeListener
+import android.preference.PreferenceFragment
+import android.preference.PreferenceManager
+import android.preference.PreferenceScreen
+import android.text.format.DateFormat
+import android.text.format.Time
+import android.util.Log
+import android.widget.TimePicker
+
+class OtherPreferences : PreferenceFragment(), OnPreferenceChangeListener {
+ private var mCopyDb: Preference? = null
+ private var mQuietHours: CheckBoxPreference? = null
+ private var mQuietHoursStart: Preference? = null
+ private var mQuietHoursEnd: Preference? = null
+ private var mTimePickerDialog: TimePickerDialog? = null
+ private var mQuietHoursStartListener: TimeSetListener? = null
+ private var mQuietHoursStartDialog: TimePickerDialog? = null
+ private var mQuietHoursEndListener: TimeSetListener? = null
+ private var mQuietHoursEndDialog: TimePickerDialog? = null
+ private var mIs24HourMode = false
+
+ @Override
+ override fun onCreate(icicle: Bundle?) {
+ super.onCreate(icicle)
+ val manager: PreferenceManager = getPreferenceManager()
+ manager.setSharedPreferencesName(SHARED_PREFS_NAME)
+ val prefs: SharedPreferences = manager.getSharedPreferences()
+ addPreferencesFromResource(R.xml.other_preferences)
+ mCopyDb = findPreference(KEY_OTHER_COPY_DB)
+ val activity: Activity = getActivity()
+ if (activity == null) {
+ Log.d(TAG, "Activity was null")
+ }
+ mIs24HourMode = DateFormat.is24HourFormat(activity)
+ mQuietHours = findPreference(KEY_OTHER_QUIET_HOURS) as CheckBoxPreference?
+ val startHour: Int = prefs.getInt(KEY_OTHER_QUIET_HOURS_START_HOUR,
+ QUIET_HOURS_DEFAULT_START_HOUR)
+ val startMinute: Int = prefs.getInt(KEY_OTHER_QUIET_HOURS_START_MINUTE,
+ QUIET_HOURS_DEFAULT_START_MINUTE)
+ mQuietHoursStart = findPreference(KEY_OTHER_QUIET_HOURS_START)
+ mQuietHoursStartListener = TimeSetListener(START_LISTENER)
+ mQuietHoursStartDialog = TimePickerDialog(
+ activity, mQuietHoursStartListener,
+ startHour, startMinute, mIs24HourMode)
+ mQuietHoursStart?.setSummary(formatTime(startHour, startMinute))
+ val endHour: Int = prefs.getInt(KEY_OTHER_QUIET_HOURS_END_HOUR,
+ QUIET_HOURS_DEFAULT_END_HOUR)
+ val endMinute: Int = prefs.getInt(KEY_OTHER_QUIET_HOURS_END_MINUTE,
+ QUIET_HOURS_DEFAULT_END_MINUTE)
+ mQuietHoursEnd = findPreference(KEY_OTHER_QUIET_HOURS_END)
+ mQuietHoursEndListener = TimeSetListener(END_LISTENER)
+ mQuietHoursEndDialog = TimePickerDialog(
+ activity, mQuietHoursEndListener,
+ endHour, endMinute, mIs24HourMode)
+ mQuietHoursEnd?.setSummary(formatTime(endHour, endMinute))
+ }
+
+ @Override
+ override fun onPreferenceChange(preference: Preference?, objValue: Any?): Boolean {
+ return true
+ }
+
+ @Override
+ override fun onPreferenceTreeClick(screen: PreferenceScreen?, preference: Preference): Boolean {
+ if (preference === mCopyDb) {
+ val intent = Intent(Intent.ACTION_MAIN)
+ intent.setComponent(ComponentName("com.android.providers.calendar",
+ "com.android.providers.calendar.CalendarDebugActivity"))
+ startActivity(intent)
+ } else if (preference === mQuietHoursStart) {
+ if (mTimePickerDialog == null) {
+ mTimePickerDialog = mQuietHoursStartDialog
+ mTimePickerDialog?.show()
+ } else {
+ Log.v(TAG, "not null")
+ }
+ } else if (preference === mQuietHoursEnd) {
+ if (mTimePickerDialog == null) {
+ mTimePickerDialog = mQuietHoursEndDialog
+ mTimePickerDialog?.show()
+ } else {
+ Log.v(TAG, "not null")
+ }
+ } else {
+ return super.onPreferenceTreeClick(screen, preference)
+ }
+ return true
+ }
+
+ private inner class TimeSetListener(private val mListenerId: Int) :
+ TimePickerDialog.OnTimeSetListener {
+ @Override
+ override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) {
+ mTimePickerDialog = null
+ val prefs: SharedPreferences = getPreferenceManager().getSharedPreferences()
+ val editor: SharedPreferences.Editor = prefs.edit()
+ val summary = formatTime(hourOfDay, minute)
+ when (mListenerId) {
+ START_LISTENER -> {
+ mQuietHoursStart?.setSummary(summary)
+ editor.putInt(KEY_OTHER_QUIET_HOURS_START_HOUR, hourOfDay)
+ editor.putInt(KEY_OTHER_QUIET_HOURS_START_MINUTE, minute)
+ }
+ END_LISTENER -> {
+ mQuietHoursEnd?.setSummary(summary)
+ editor.putInt(KEY_OTHER_QUIET_HOURS_END_HOUR, hourOfDay)
+ editor.putInt(KEY_OTHER_QUIET_HOURS_END_MINUTE, minute)
+ }
+ else -> Log.d(TAG, "Set time for unknown listener: $mListenerId")
+ }
+ editor.commit()
+ }
+ }
+
+ /**
+ * @param hourOfDay the hour of the day (0-24)
+ * @param minute
+ * @return human-readable string formatted based on 24-hour mode.
+ */
+ private fun formatTime(hourOfDay: Int, minute: Int): String {
+ val time = Time()
+ time.hour = hourOfDay
+ time.minute = minute
+ val format = if (mIs24HourMode) format24Hour else format12Hour
+ return time.format(format)
+ }
+
+ companion object {
+ private const val TAG = "CalendarOtherPreferences"
+
+ // The name of the shared preferences file. This name must be maintained for
+ // historical reasons, as it's what PreferenceManager assigned the first
+ // time the file was created.
+ const val SHARED_PREFS_NAME = "com.android.calendar_preferences"
+
+ // Must be the same keys that are used in the other_preferences.xml file.
+ const val KEY_OTHER_COPY_DB = "preferences_copy_db"
+ const val KEY_OTHER_QUIET_HOURS = "preferences_reminders_quiet_hours"
+ const val KEY_OTHER_REMINDERS_RESPONDED = "preferences_reminders_responded"
+ const val KEY_OTHER_QUIET_HOURS_START = "preferences_reminders_quiet_hours_start"
+ const val KEY_OTHER_QUIET_HOURS_START_HOUR = "preferences_reminders_quiet_hours_start_hour"
+ const val KEY_OTHER_QUIET_HOURS_START_MINUTE =
+ "preferences_reminders_quiet_hours_start_minute"
+ const val KEY_OTHER_QUIET_HOURS_END = "preferences_reminders_quiet_hours_end"
+ const val KEY_OTHER_QUIET_HOURS_END_HOUR = "preferences_reminders_quiet_hours_end_hour"
+ const val KEY_OTHER_QUIET_HOURS_END_MINUTE = "preferences_reminders_quiet_hours_end_minute"
+ const val KEY_OTHER_1 = "preferences_tardis_1"
+ const val QUIET_HOURS_DEFAULT_START_HOUR = 22
+ const val QUIET_HOURS_DEFAULT_START_MINUTE = 0
+ const val QUIET_HOURS_DEFAULT_END_HOUR = 8
+ const val QUIET_HOURS_DEFAULT_END_MINUTE = 0
+ private const val START_LISTENER = 1
+ private const val END_LISTENER = 2
+ private const val format24Hour = "%H:%M"
+ private const val format12Hour = "%I:%M%P"
+ }
+} \ No newline at end of file