From 2b0ace315d82b543793339818f72c45866cdfdbd Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 28 Feb 2018 22:31:29 +0100 Subject: [PATCH] add a toggle for displaying other timezones in the first tab --- .../clock/activities/MainActivity.kt | 2 + .../clock/activities/SettingsActivity.kt | 9 +++++ .../clock/adapters/ViewPagerAdapter.kt | 15 +++++-- .../clock/fragments/AlarmFragment.kt | 6 ++- .../clock/fragments/ClockFragment.kt | 30 ++++++++++++-- .../clock/fragments/MyViewPagerFragment.kt | 9 +++++ .../clock/fragments/StopwatchFragment.kt | 6 ++- .../simplemobiletools/clock/helpers/Config.kt | 4 ++ .../clock/helpers/Constants.kt | 1 + app/src/main/res/layout/activity_settings.xml | 23 +++++++++++ app/src/main/res/layout/fragment_clock.xml | 40 +++++++++++++++++++ app/src/main/res/values-sk/strings.xml | 5 +++ app/src/main/res/values/strings.xml | 5 +++ 13 files changed, 145 insertions(+), 10 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/clock/fragments/MyViewPagerFragment.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/clock/activities/MainActivity.kt index 1dc5cb68..a6d9edcf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/activities/MainActivity.kt @@ -58,6 +58,8 @@ class MainActivity : SimpleActivity() { if (config.preventPhoneFromSleeping) { window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } + + (viewpager.adapter as? ViewPagerAdapter)?.activityResumed() } override fun onPause() { diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/clock/activities/SettingsActivity.kt index 7c03c699..e4a49712 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/activities/SettingsActivity.kt @@ -24,6 +24,7 @@ class SettingsActivity : SimpleActivity() { setupAvoidWhatsNew() setupPreventPhoneFromSleeping() setupShowSeconds() + setupDisplayOtherTimeZones() updateTextColors(settings_holder) setupSectionColors() } @@ -74,4 +75,12 @@ class SettingsActivity : SimpleActivity() { config.showSeconds = settings_show_seconds.isChecked } } + + private fun setupDisplayOtherTimeZones() { + settings_display_other_timezones.isChecked = config.displayOtherTimeZones + settings_display_other_timezones_holder.setOnClickListener { + settings_display_other_timezones.toggle() + config.displayOtherTimeZones = settings_display_other_timezones.isChecked + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/adapters/ViewPagerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/ViewPagerAdapter.kt index a1674ce3..99920731 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/adapters/ViewPagerAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/ViewPagerAdapter.kt @@ -5,15 +5,18 @@ import android.view.View import android.view.ViewGroup import com.simplemobiletools.clock.R import com.simplemobiletools.clock.activities.SimpleActivity +import com.simplemobiletools.clock.fragments.MyViewPagerFragment import com.simplemobiletools.clock.helpers.TABS_COUNT class ViewPagerAdapter(val activity: SimpleActivity) : PagerAdapter() { + private val fragments = HashMap() override fun instantiateItem(container: ViewGroup, position: Int): Any { val layout = getFragment(position) - val view = activity.layoutInflater.inflate(layout, container, false) - container.addView(view) - return view + val fragment = activity.layoutInflater.inflate(layout, container, false) as MyViewPagerFragment + fragments[position] = fragment + container.addView(fragment) + return fragment } override fun destroyItem(container: ViewGroup, position: Int, item: Any) { @@ -28,4 +31,10 @@ class ViewPagerAdapter(val activity: SimpleActivity) : PagerAdapter() { 1 -> R.layout.fragment_alarm else -> R.layout.fragment_stopwatch } + + fun activityResumed() { + fragments.values.forEach { + it.onActivityResume() + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt index 9fb7fa35..6407f15f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/AlarmFragment.kt @@ -2,13 +2,15 @@ package com.simplemobiletools.clock.fragments import android.content.Context import android.util.AttributeSet -import android.widget.RelativeLayout import com.simplemobiletools.commons.extensions.updateTextColors import kotlinx.android.synthetic.main.fragment_alarm.view.* -class AlarmFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) { +class AlarmFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) { override fun onFinishInflate() { super.onFinishInflate() context.updateTextColors(alarm_fragment) } + + override fun onActivityResume() { + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/ClockFragment.kt b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/ClockFragment.kt index 43ce58cd..32ece181 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/ClockFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/ClockFragment.kt @@ -3,14 +3,16 @@ package com.simplemobiletools.clock.fragments import android.content.Context import android.os.Handler import android.util.AttributeSet -import android.widget.RelativeLayout import com.simplemobiletools.clock.R import com.simplemobiletools.clock.extensions.config +import com.simplemobiletools.commons.extensions.beVisibleIf +import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor +import com.simplemobiletools.commons.extensions.underlineText import com.simplemobiletools.commons.extensions.updateTextColors import kotlinx.android.synthetic.main.fragment_clock.view.* import java.util.* -class ClockFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) { +class ClockFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) { private val ONE_SECOND = 1000L private var passedSeconds = 0 private var calendar = Calendar.getInstance() @@ -19,11 +21,25 @@ class ClockFragment(context: Context, attributeSet: AttributeSet) : RelativeLayo override fun onFinishInflate() { super.onFinishInflate() - context.updateTextColors(clock_fragment) val offset = calendar.timeZone.rawOffset passedSeconds = ((calendar.timeInMillis + offset) / 1000).toInt() updateCurrentTime() updateDate() + + time_zones_placeholder_2.apply { + underlineText() + setOnClickListener { + placeholderClicked() + } + } + + setupViews() + } + + private fun setupViews() { + time_zones_holder.beVisibleIf(context.config.displayOtherTimeZones) + context.updateTextColors(clock_fragment) + time_zones_placeholder_2.setTextColor(context.getAdjustedPrimaryColor()) } private fun updateCurrentTime() { @@ -69,4 +85,12 @@ class ClockFragment(context: Context, attributeSet: AttributeSet) : RelativeLayo super.onDetachedFromWindow() updateHandler.removeCallbacksAndMessages(null) } + + private fun placeholderClicked() { + + } + + override fun onActivityResume() { + setupViews() + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/MyViewPagerFragment.kt new file mode 100644 index 00000000..5ee6b533 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/MyViewPagerFragment.kt @@ -0,0 +1,9 @@ +package com.simplemobiletools.clock.fragments + +import android.content.Context +import android.util.AttributeSet +import android.widget.RelativeLayout + +abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) { + abstract fun onActivityResume() +} diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/StopwatchFragment.kt b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/StopwatchFragment.kt index ae1da256..c123525d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/fragments/StopwatchFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/fragments/StopwatchFragment.kt @@ -2,13 +2,15 @@ package com.simplemobiletools.clock.fragments import android.content.Context import android.util.AttributeSet -import android.widget.RelativeLayout import com.simplemobiletools.commons.extensions.updateTextColors import kotlinx.android.synthetic.main.fragment_stopwatch.view.* -class StopwatchFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) { +class StopwatchFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) { override fun onFinishInflate() { super.onFinishInflate() context.updateTextColors(stopwatch_fragment) } + + override fun onActivityResume() { + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Config.kt index e82b4a31..3c587904 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Config.kt @@ -11,4 +11,8 @@ class Config(context: Context) : BaseConfig(context) { var showSeconds: Boolean get() = prefs.getBoolean(SHOW_SECONDS, true) set(showSeconds) = prefs.edit().putBoolean(SHOW_SECONDS, showSeconds).apply() + + var displayOtherTimeZones: Boolean + get() = prefs.getBoolean(DISPLAY_OTHER_TIME_ZONES, false) + set(displayOtherTimeZones) = prefs.edit().putBoolean(DISPLAY_OTHER_TIME_ZONES, displayOtherTimeZones).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt index d6655013..82e70043 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt @@ -2,5 +2,6 @@ package com.simplemobiletools.clock.helpers // shared preferences const val SHOW_SECONDS = "show_seconds" +const val DISPLAY_OTHER_TIME_ZONES = "display_other_time_zones" const val TABS_COUNT = 3 diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 189c0554..fc0de156 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -142,5 +142,28 @@ android:text="@string/show_seconds"/> + + + + + + diff --git a/app/src/main/res/layout/fragment_clock.xml b/app/src/main/res/layout/fragment_clock.xml index f8f8e784..ab815b28 100644 --- a/app/src/main/res/layout/fragment_clock.xml +++ b/app/src/main/res/layout/fragment_clock.xml @@ -1,6 +1,7 @@ + + + + + + + + diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index cd9b297f..291ec09b 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -2,11 +2,16 @@ Jednoduché hodinky Hodinky + + Zdá sa, že ste nezvolil žiadne dodatočné časové pásma. + Pridať nové časové pásma + Okno s časom Okno s budíkom Okno so stopkami Zobraziť sekundy + Povoliť zobrazenie dodatočných časových pásiem + Seems like you haven\'t selected any extra time zones. + Add new time zones + Clock tab Alarm tab Stopwatch tab Show seconds + Allow displaying other time zones