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 @@ + + + + + + + +