Fix #282, bug fixes

This commit is contained in:
Tommaso Berlose 2021-01-24 12:48:34 +01:00
parent 57eecd630d
commit 81578f5f4a
9 changed files with 56 additions and 14 deletions

Binary file not shown.

View File

@ -0,0 +1,31 @@
package com.tommasoberlose.anotherwidget.components
import android.view.View
class OnSingleClickListener : View.OnClickListener {
private val onClickListener: View.OnClickListener
constructor(listener: View.OnClickListener) {
onClickListener = listener
}
constructor(listener: (View) -> Unit) {
onClickListener = View.OnClickListener { listener.invoke(it) }
}
override fun onClick(v: View) {
val currentTimeMillis = System.currentTimeMillis()
if (currentTimeMillis >= previousClickTimeMillis + DELAY_MILLIS) {
previousClickTimeMillis = currentTimeMillis
onClickListener.onClick(v)
}
}
companion object {
private const val DELAY_MILLIS = 200L
private var previousClickTimeMillis = 0L
}
}

View File

@ -94,7 +94,7 @@ class MainFragment : Fragment() {
navHost?.navController?.addOnDestinationChangedListener { controller, destination, _ -> navHost?.navController?.addOnDestinationChangedListener { controller, destination, _ ->
val show = destination.id != R.id.tabSelectorFragment val show = destination.id != R.id.tabSelectorFragment
binding.actionBack.animate().alpha(if (show) 1f else 0f).setDuration(200).translationX((if (show) 0f else 4f).convertDpToPixel(requireContext())).start() binding.actionBack.animate().alpha(if (show) 1f else 0f).setDuration(200).translationX((if (show) 0f else 4f).convertDpToPixel(requireContext())).start()
binding.actionBack.setOnClickListener { binding.actionBack.setOnSingleClickListener {
controller.navigateUp() controller.navigateUp()
} }
binding.actionBack.isClickable = show binding.actionBack.isClickable = show
@ -105,7 +105,7 @@ class MainFragment : Fragment() {
binding.fragmentTitle.text = if (show) destination.label.toString() else getString(R.string.app_name) binding.fragmentTitle.text = if (show) destination.label.toString() else getString(R.string.app_name)
} }
binding.actionSettings.setOnClickListener { binding.actionSettings.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_appMainFragment_to_appSettingsFragment,) Navigation.findNavController(it).navigate(R.id.action_appMainFragment_to_appSettingsFragment,)
} }

View File

@ -36,6 +36,7 @@ import com.tommasoberlose.anotherwidget.ui.activities.settings.SupportDevActivit
import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission
import com.tommasoberlose.anotherwidget.utils.openURI import com.tommasoberlose.anotherwidget.utils.openURI
import com.tommasoberlose.anotherwidget.utils.setOnSingleClickListener
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -76,7 +77,7 @@ class SettingsFragment : Fragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)
binding.actionBack.setOnClickListener { binding.actionBack.setOnSingleClickListener {
Navigation.findNavController(it).popBackStack() Navigation.findNavController(it).popBackStack()
} }

View File

@ -100,7 +100,7 @@ class GesturesFragment : Fragment() {
maintainScrollPosition { maintainScrollPosition {
binding.calendarAppLabel.text = when { binding.calendarAppLabel.text = when {
it == IntentHelper.DO_NOTHING_OPTION -> getString(R.string.gestures_do_nothing) it == IntentHelper.DO_NOTHING_OPTION -> getString(R.string.gestures_do_nothing)
it == IntentHelper.REFRESH_WIDGET_OPTION -> "None, the widget will be refreshed" it == IntentHelper.REFRESH_WIDGET_OPTION -> getString(R.string.gestures_refresh_widget)
it != IntentHelper.DEFAULT_OPTION -> it it != IntentHelper.DEFAULT_OPTION -> it
else -> { else -> {
if (IntentHelper.getCalendarIntent(requireContext()).isDefaultSet(requireContext())) { if (IntentHelper.getCalendarIntent(requireContext()).isDefaultSet(requireContext())) {
@ -125,7 +125,7 @@ class GesturesFragment : Fragment() {
maintainScrollPosition { maintainScrollPosition {
binding.clockAppLabel.text = when { binding.clockAppLabel.text = when {
it == IntentHelper.DO_NOTHING_OPTION -> getString(R.string.gestures_do_nothing) it == IntentHelper.DO_NOTHING_OPTION -> getString(R.string.gestures_do_nothing)
it == IntentHelper.REFRESH_WIDGET_OPTION -> "None, the widget will be refreshed" it == IntentHelper.REFRESH_WIDGET_OPTION -> getString(R.string.gestures_refresh_widget)
it != IntentHelper.DEFAULT_OPTION -> it it != IntentHelper.DEFAULT_OPTION -> it
else -> { else -> {
if (IntentHelper.getClockIntent(requireContext()).isDefaultSet(requireContext())) { if (IntentHelper.getClockIntent(requireContext()).isDefaultSet(requireContext())) {
@ -144,7 +144,7 @@ class GesturesFragment : Fragment() {
maintainScrollPosition { maintainScrollPosition {
binding.weatherAppLabel.text = when { binding.weatherAppLabel.text = when {
it == IntentHelper.DO_NOTHING_OPTION -> getString(R.string.gestures_do_nothing) it == IntentHelper.DO_NOTHING_OPTION -> getString(R.string.gestures_do_nothing)
it == IntentHelper.REFRESH_WIDGET_OPTION -> "None, the widget will be refreshed" it == IntentHelper.REFRESH_WIDGET_OPTION -> getString(R.string.gestures_refresh_widget)
it != IntentHelper.DEFAULT_OPTION -> it it != IntentHelper.DEFAULT_OPTION -> it
else -> getString(R.string.default_weather_app) else -> getString(R.string.default_weather_app)
} }

View File

@ -106,15 +106,15 @@ class PreferencesFragment : Fragment() {
private fun setupListener() { private fun setupListener() {
binding.actionTypography.setOnClickListener { binding.actionTypography.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_typographyTabFragment) Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_typographyTabFragment)
} }
binding.actionGeneralSettings.setOnClickListener { binding.actionGeneralSettings.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_generalTabFragment) Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_generalTabFragment)
} }
binding.actionShowEvents.setOnClickListener { binding.actionShowEvents.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_calendarTabFragment) Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_calendarTabFragment)
} }
@ -126,7 +126,7 @@ class PreferencesFragment : Fragment() {
} }
} }
binding.actionShowWeather.setOnClickListener { binding.actionShowWeather.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_weatherTabFragment) Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_weatherTabFragment)
} }
@ -139,7 +139,7 @@ class PreferencesFragment : Fragment() {
} }
} }
binding.actionShowClock.setOnClickListener { binding.actionShowClock.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_clockTabFragment) Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_clockTabFragment)
} }
@ -147,11 +147,11 @@ class PreferencesFragment : Fragment() {
Preferences.showClock = enabled Preferences.showClock = enabled
} }
binding.actionShowGlance.setOnClickListener { binding.actionShowGlance.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_glanceTabFragment) Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_glanceTabFragment)
} }
binding.actionTabDefaultApp.setOnClickListener { binding.actionTabDefaultApp.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_gesturesFragment) Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_gesturesFragment)
} }
} }

View File

@ -26,6 +26,7 @@ import androidx.browser.customtabs.CustomTabColorSchemeParams
import androidx.core.animation.addListener import androidx.core.animation.addListener
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.R
import com.tommasoberlose.anotherwidget.components.OnSingleClickListener
import java.util.* import java.util.*
@ -254,3 +255,11 @@ fun Locale.isMetric(): Boolean {
else -> true else -> true
} }
} }
fun View.setOnSingleClickListener(l: View.OnClickListener) {
setOnClickListener(OnSingleClickListener(l))
}
fun View.setOnSingleClickListener(l: (View) -> Unit) {
setOnClickListener(OnSingleClickListener(l))
}

View File

@ -358,4 +358,5 @@
<string name="layout_settings_subtitle">Widget spacing and tweaks</string> <string name="layout_settings_subtitle">Widget spacing and tweaks</string>
<string name="smart_content_header">Smart content</string> <string name="smart_content_header">Smart content</string>
<string name="spacing_settings_header">Spacing</string> <string name="spacing_settings_header">Spacing</string>
<string name="gestures_refresh_widget">None, the widget will be refreshed</string>
</resources> </resources>

View File

@ -10,7 +10,7 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:4.1.1' classpath 'com.android.tools.build:gradle:4.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.4' classpath 'com.google.gms:google-services:4.3.4'