diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index e62f585..9aff3fb 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/OnSingleClickListener.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/OnSingleClickListener.kt
new file mode 100644
index 0000000..6462ec2
--- /dev/null
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/OnSingleClickListener.kt
@@ -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
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt
index 613cad6..0bae616 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt
@@ -94,7 +94,7 @@ class MainFragment : Fragment() {
navHost?.navController?.addOnDestinationChangedListener { controller, destination, _ ->
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.setOnClickListener {
+ binding.actionBack.setOnSingleClickListener {
controller.navigateUp()
}
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.actionSettings.setOnClickListener {
+ binding.actionSettings.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_appMainFragment_to_appSettingsFragment,)
}
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/SettingsFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/SettingsFragment.kt
index a6fc9e5..ccb0bef 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/SettingsFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/SettingsFragment.kt
@@ -36,6 +36,7 @@ import com.tommasoberlose.anotherwidget.ui.activities.settings.SupportDevActivit
import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission
import com.tommasoberlose.anotherwidget.utils.openURI
+import com.tommasoberlose.anotherwidget.utils.setOnSingleClickListener
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@@ -76,7 +77,7 @@ class SettingsFragment : Fragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
- binding.actionBack.setOnClickListener {
+ binding.actionBack.setOnSingleClickListener {
Navigation.findNavController(it).popBackStack()
}
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt
index 4f9fa61..d16aff1 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt
@@ -100,7 +100,7 @@ class GesturesFragment : Fragment() {
maintainScrollPosition {
binding.calendarAppLabel.text = when {
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
else -> {
if (IntentHelper.getCalendarIntent(requireContext()).isDefaultSet(requireContext())) {
@@ -125,7 +125,7 @@ class GesturesFragment : Fragment() {
maintainScrollPosition {
binding.clockAppLabel.text = when {
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
else -> {
if (IntentHelper.getClockIntent(requireContext()).isDefaultSet(requireContext())) {
@@ -144,7 +144,7 @@ class GesturesFragment : Fragment() {
maintainScrollPosition {
binding.weatherAppLabel.text = when {
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
else -> getString(R.string.default_weather_app)
}
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/PreferencesFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/PreferencesFragment.kt
index 92b89b5..3c6c9d2 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/PreferencesFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/PreferencesFragment.kt
@@ -106,15 +106,15 @@ class PreferencesFragment : Fragment() {
private fun setupListener() {
- binding.actionTypography.setOnClickListener {
+ binding.actionTypography.setOnSingleClickListener {
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)
}
- binding.actionShowEvents.setOnClickListener {
+ binding.actionShowEvents.setOnSingleClickListener {
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)
}
@@ -139,7 +139,7 @@ class PreferencesFragment : Fragment() {
}
}
- binding.actionShowClock.setOnClickListener {
+ binding.actionShowClock.setOnSingleClickListener {
Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_clockTabFragment)
}
@@ -147,11 +147,11 @@ class PreferencesFragment : Fragment() {
Preferences.showClock = enabled
}
- binding.actionShowGlance.setOnClickListener {
+ binding.actionShowGlance.setOnSingleClickListener {
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)
}
}
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/utils/Extensions.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/utils/Extensions.kt
index 129e0e4..707f29b 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/utils/Extensions.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/utils/Extensions.kt
@@ -26,6 +26,7 @@ import androidx.browser.customtabs.CustomTabColorSchemeParams
import androidx.core.animation.addListener
import androidx.core.view.isVisible
import com.tommasoberlose.anotherwidget.R
+import com.tommasoberlose.anotherwidget.components.OnSingleClickListener
import java.util.*
@@ -253,4 +254,12 @@ fun Locale.isMetric(): Boolean {
"US", "LR", "MM", "GB" -> false
else -> true
}
+}
+
+fun View.setOnSingleClickListener(l: View.OnClickListener) {
+ setOnClickListener(OnSingleClickListener(l))
+}
+
+fun View.setOnSingleClickListener(l: (View) -> Unit) {
+ setOnClickListener(OnSingleClickListener(l))
}
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f407e3f..3d2c9b0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -358,4 +358,5 @@
Widget spacing and tweaks
Smart content
Spacing
+ None, the widget will be refreshed
diff --git a/build.gradle b/build.gradle
index 19b085b..abafc28 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,7 +10,7 @@ buildscript {
}
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 'com.google.gms:google-services:4.3.4'