diff --git a/app/src/main/kotlin/org/fossify/clock/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/clock/activities/MainActivity.kt
index 6f33aa8d..4379230d 100644
--- a/app/src/main/kotlin/org/fossify/clock/activities/MainActivity.kt
+++ b/app/src/main/kotlin/org/fossify/clock/activities/MainActivity.kt
@@ -141,7 +141,7 @@ class MainActivity : SimpleActivity() {
private fun refreshMenuItems() {
binding.mainToolbar.menu.apply {
- findItem(R.id.sort).isVisible = binding.viewPager.currentItem == TAB_ALARM
+ findItem(R.id.sort).isVisible = binding.viewPager.currentItem == getTabIndex(TAB_ALARM)
findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(org.fossify.commons.R.bool.hide_google_relations)
}
}
@@ -149,7 +149,7 @@ class MainActivity : SimpleActivity() {
override fun onNewIntent(intent: Intent) {
if (intent.extras?.containsKey(OPEN_TAB) == true) {
val tabToOpen = intent.getIntExtra(OPEN_TAB, TAB_CLOCK)
- binding.viewPager.setCurrentItem(tabToOpen, false)
+ binding.viewPager.setCurrentItem(getTabIndex(tabToOpen), false)
if (tabToOpen == TAB_TIMER) {
val timerId = intent.getIntExtra(TIMER_ID, INVALID_TIMER_ID)
(binding.viewPager.adapter as ViewPagerAdapter).updateTimerPosition(timerId)
@@ -180,8 +180,8 @@ class MainActivity : SimpleActivity() {
val newAlarmSound = storeNewYourAlarmSound(resultData)
when (binding.viewPager.currentItem) {
- TAB_ALARM -> getViewPagerAdapter()?.updateAlarmTabAlarmSound(newAlarmSound)
- TAB_TIMER -> getViewPagerAdapter()?.updateTimerTabAlarmSound(newAlarmSound)
+ TAB_ALARM_INDEX -> getViewPagerAdapter()?.updateAlarmTabAlarmSound(newAlarmSound)
+ TAB_TIMER_INDEX -> getViewPagerAdapter()?.updateTimerTabAlarmSound(newAlarmSound)
}
}
@@ -199,7 +199,7 @@ class MainActivity : SimpleActivity() {
refreshMenuItems()
}
- val tabToOpen = intent.getIntExtra(OPEN_TAB, config.lastUsedViewPagerPage)
+ val tabToOpen = intent.getIntExtra(OPEN_TAB, config.defaultTab)
intent.removeExtra(OPEN_TAB)
if (tabToOpen == TAB_TIMER) {
val timerId = intent.getIntExtra(TIMER_ID, INVALID_TIMER_ID)
@@ -211,7 +211,7 @@ class MainActivity : SimpleActivity() {
}
binding.viewPager.offscreenPageLimit = TABS_COUNT - 1
- binding.viewPager.currentItem = tabToOpen
+ binding.viewPager.currentItem = getTabIndex(tabToOpen)
}
private fun setupTabs() {
@@ -298,4 +298,14 @@ class MainActivity : SimpleActivity() {
startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true)
}
+
+ private fun getTabIndex(tabId: Int): Int {
+ return when (tabId) {
+ TAB_CLOCK -> TAB_CLOCK_INDEX
+ TAB_ALARM -> TAB_ALARM_INDEX
+ TAB_STOPWATCH -> TAB_STOPWATCH_INDEX
+ TAB_TIMER -> TAB_TIMER_INDEX
+ else -> config.lastUsedViewPagerPage
+ }
+ }
}
diff --git a/app/src/main/kotlin/org/fossify/clock/activities/SettingsActivity.kt b/app/src/main/kotlin/org/fossify/clock/activities/SettingsActivity.kt
index 79413d6b..8d531872 100644
--- a/app/src/main/kotlin/org/fossify/clock/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/org/fossify/clock/activities/SettingsActivity.kt
@@ -2,15 +2,23 @@ package org.fossify.clock.activities
import android.content.Intent
import android.os.Bundle
+import org.fossify.clock.R
import org.fossify.clock.databinding.ActivitySettingsBinding
import org.fossify.clock.extensions.config
import org.fossify.clock.helpers.DEFAULT_MAX_ALARM_REMINDER_SECS
import org.fossify.clock.helpers.DEFAULT_MAX_TIMER_REMINDER_SECS
+import org.fossify.clock.helpers.TAB_ALARM
+import org.fossify.clock.helpers.TAB_CLOCK
+import org.fossify.clock.helpers.TAB_STOPWATCH
+import org.fossify.clock.helpers.TAB_TIMER
+import org.fossify.commons.dialogs.RadioGroupDialog
import org.fossify.commons.extensions.*
import org.fossify.commons.helpers.IS_CUSTOMIZING_COLORS
import org.fossify.commons.helpers.MINUTE_SECONDS
+import org.fossify.commons.helpers.TAB_LAST_USED
import org.fossify.commons.helpers.NavigationIcon
import org.fossify.commons.helpers.isTiramisuPlus
+import org.fossify.commons.models.RadioItem
import java.util.Locale
import kotlin.system.exitProcess
@@ -34,6 +42,7 @@ class SettingsActivity : SimpleActivity() {
setupCustomizeColors()
setupUseEnglish()
setupLanguage()
+ setupDefaultTab()
setupPreventPhoneFromSleeping()
setupSundayFirst()
setupAlarmMaxReminder()
@@ -86,6 +95,34 @@ class SettingsActivity : SimpleActivity() {
}
}
+ private fun setupDefaultTab() {
+ binding.settingsDefaultTab.text = getDefaultTabText()
+ binding.settingsDefaultTabHolder.setOnClickListener {
+ val items = arrayListOf(
+ RadioItem(TAB_CLOCK, getString(R.string.clock)),
+ RadioItem(TAB_ALARM, getString(org.fossify.commons.R.string.alarm)),
+ RadioItem(TAB_STOPWATCH, getString(R.string.stopwatch)),
+ RadioItem(TAB_TIMER, getString(R.string.timer)),
+ RadioItem(TAB_LAST_USED, getString(org.fossify.commons.R.string.last_used_tab))
+ )
+
+ RadioGroupDialog(this@SettingsActivity, items, config.defaultTab) {
+ config.defaultTab = it as Int
+ binding.settingsDefaultTab.text = getDefaultTabText()
+ }
+ }
+ }
+
+ private fun getDefaultTabText() = getString(
+ when (config.defaultTab) {
+ TAB_CLOCK -> R.string.clock
+ TAB_ALARM -> org.fossify.commons.R.string.alarm
+ TAB_STOPWATCH -> R.string.stopwatch
+ TAB_TIMER -> R.string.timer
+ else -> org.fossify.commons.R.string.last_used_tab
+ }
+ )
+
private fun setupPreventPhoneFromSleeping() {
binding.settingsPreventPhoneFromSleeping.isChecked = config.preventPhoneFromSleeping
binding.settingsPreventPhoneFromSleepingHolder.setOnClickListener {
diff --git a/app/src/main/kotlin/org/fossify/clock/adapters/ViewPagerAdapter.kt b/app/src/main/kotlin/org/fossify/clock/adapters/ViewPagerAdapter.kt
index 17c8a0f8..d5cb5fba 100644
--- a/app/src/main/kotlin/org/fossify/clock/adapters/ViewPagerAdapter.kt
+++ b/app/src/main/kotlin/org/fossify/clock/adapters/ViewPagerAdapter.kt
@@ -34,34 +34,34 @@ class ViewPagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {
override fun getCount() = TABS_COUNT
private fun getFragment(position: Int) = when (position) {
- 0 -> ClockFragment()
- 1 -> AlarmFragment()
- 2 -> StopwatchFragment()
- 3 -> TimerFragment()
+ TAB_CLOCK_INDEX -> ClockFragment()
+ TAB_ALARM_INDEX -> AlarmFragment()
+ TAB_STOPWATCH_INDEX -> StopwatchFragment()
+ TAB_TIMER_INDEX -> TimerFragment()
else -> throw RuntimeException("Trying to fetch unknown fragment id $position")
}
fun showAlarmSortDialog() {
- (fragments[TAB_ALARM] as? AlarmFragment)?.showSortingDialog()
+ (fragments[TAB_ALARM_INDEX] as? AlarmFragment)?.showSortingDialog()
}
fun updateClockTabAlarm() {
- (fragments[TAB_CLOCK] as? ClockFragment)?.updateAlarm()
+ (fragments[TAB_CLOCK_INDEX] as? ClockFragment)?.updateAlarm()
}
fun updateAlarmTabAlarmSound(alarmSound: AlarmSound) {
- (fragments[TAB_ALARM] as? AlarmFragment)?.updateAlarmSound(alarmSound)
+ (fragments[TAB_ALARM_INDEX] as? AlarmFragment)?.updateAlarmSound(alarmSound)
}
fun updateTimerTabAlarmSound(alarmSound: AlarmSound) {
- (fragments[TAB_TIMER] as? TimerFragment)?.updateAlarmSound(alarmSound)
+ (fragments[TAB_TIMER_INDEX] as? TimerFragment)?.updateAlarmSound(alarmSound)
}
fun updateTimerPosition(timerId: Int) {
- (fragments[TAB_TIMER] as? TimerFragment)?.updatePosition(timerId)
+ (fragments[TAB_TIMER_INDEX] as? TimerFragment)?.updatePosition(timerId)
}
fun startStopWatch() {
- (fragments[TAB_STOPWATCH] as? StopwatchFragment)?.startStopWatch()
+ (fragments[TAB_STOPWATCH_INDEX] as? StopwatchFragment)?.startStopWatch()
}
}
diff --git a/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt b/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt
index c95ae299..a78eba9e 100644
--- a/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt
+++ b/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt
@@ -50,10 +50,15 @@ const val EARLY_ALARM_DISMISSAL_INTENT_ID = 10002
const val EARLY_ALARM_NOTIF_ID = 10003
const val OPEN_TAB = "open_tab"
-const val TAB_CLOCK = 0
-const val TAB_ALARM = 1
-const val TAB_STOPWATCH = 2
-const val TAB_TIMER = 3
+const val TAB_CLOCK = 1
+const val TAB_ALARM = 2
+const val TAB_STOPWATCH = 4
+const val TAB_TIMER = 8
+const val TAB_CLOCK_INDEX = 0
+const val TAB_ALARM_INDEX = 1
+const val TAB_STOPWATCH_INDEX = 2
+const val TAB_TIMER_INDEX = 3
+
const val TIMER_ID = "timer_id"
const val INVALID_TIMER_ID = -1
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 159fb86b..fc662aae 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -133,6 +133,29 @@
+
+
+
+
+
+
+
+