diff --git a/.idea/navEditor.xml b/.idea/navEditor.xml
index 8b8435a..1d9b984 100644
--- a/.idea/navEditor.xml
+++ b/.idea/navEditor.xml
@@ -87,6 +87,18 @@
+
+
+
+
+
+
+
@@ -130,6 +142,11 @@
+
+
+
+
+
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt
index ae1ae89..8d7b898 100755
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt
@@ -117,10 +117,9 @@ object Preferences : KotprefModel() {
var showXiaomiWarning by booleanPref(default = true)
// Glance
- var showGlance by booleanPref(default = true)
var enabledGlanceProviderOrder by stringPref(default = "")
var customNotes by stringPref(default = "")
- var showNextAlarm by booleanPref(default = true)
+ var showNextAlarm by booleanPref(default = false)
var showBatteryCharging by booleanPref(default = false)
var isBatteryLevelLow by booleanPref(default = false)
var isCharging by booleanPref(default = false)
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt
index 787614d..be80a25 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt
@@ -101,7 +101,7 @@ object GlanceProviderHelper {
val eventRepository = EventRepository(context)
BatteryHelper.updateBatteryInfo(context)
- val showGlance = Preferences.showGlance && (eventRepository.getEventsCount() == 0 || !Preferences.showEvents || Preferences.showEventsAsGlanceProvider)
+ val showGlance = (eventRepository.getEventsCount() == 0 || !Preferences.showEvents || Preferences.showEventsAsGlanceProvider)
&& (
(Preferences.showNotifications && ActiveNotificationsHelper.showLastNotification()) ||
(Preferences.showNextAlarm && AlarmHelper.getNextAlarm(context) != "") ||
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/tabs/CustomFontActivity.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/tabs/CustomFontActivity.kt
index 5fc3779..065ad75 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/tabs/CustomFontActivity.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/tabs/CustomFontActivity.kt
@@ -76,7 +76,7 @@ class CustomFontActivity : AppCompatActivity() {
injector.clicked(R.id.text) {
val dialog = BottomSheetMenu(this, header = item)
- listOf("100", "200", "regular", "500", "700", "800").forEachIndexed { index, s ->
+ listOf("100", "200", "regular", "500", "700", "800").forEachIndexed { _, s ->
dialog.addItem(SettingsStringHelper.getVariantLabel(this, s), s)
}
dialog.addOnSelectItemListener { value ->
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 71bfdc0..0274521 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
@@ -184,14 +184,14 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
binding.widgetDetail.clockBottomMarginLarge.isVisible =
Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.LARGE.value
- if ((Preferences.showClock && (binding.widgetDetail.time.alpha ?: 1f < 1f)) || (!Preferences.showClock && (binding.widgetDetail.time.alpha ?: 0f > 0f))) {
+ if ((Preferences.showClock && (binding.widgetDetail.time.alpha < 1f)) || (!Preferences.showClock && (binding.widgetDetail.time.alpha > 0f))) {
if (Preferences.showClock) {
binding.widgetDetail.timeContainer.layoutParams = binding.widgetDetail.timeContainer.layoutParams.apply {
height = RelativeLayout.LayoutParams.WRAP_CONTENT
}
binding.widgetDetail.timeContainer.measure(0, 0)
}
- val initialHeight = binding.widgetDetail.timeContainer.measuredHeight ?: 0
+ val initialHeight = binding.widgetDetail.timeContainer.measuredHeight
ValueAnimator.ofFloat(
if (Preferences.showClock) 0f else 1f,
if (Preferences.showClock) 1f else 0f
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 e667700..e63eb7b 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
@@ -94,7 +94,7 @@ class SettingsFragment : Fragment() {
viewModel.darkThemePreference.observe(viewLifecycleOwner, Observer {
AppCompatDelegate.setDefaultNightMode(it)
maintainScrollPosition {
- binding.theme?.text = when (it) {
+ binding.theme.text = when (it) {
AppCompatDelegate.MODE_NIGHT_NO -> getString(R.string.settings_subtitle_dark_theme_light)
AppCompatDelegate.MODE_NIGHT_YES -> getString(R.string.settings_subtitle_dark_theme_dark)
AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY -> getString(R.string.settings_subtitle_dark_theme_by_battery_saver)
@@ -105,7 +105,7 @@ class SettingsFragment : Fragment() {
})
viewModel.installedIntegrations.observe(viewLifecycleOwner, Observer {
- binding.integrationsCountLabel?.text =
+ binding.integrationsCountLabel.text =
getString(R.string.label_count_installed_integrations).format(
it)
})
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/CalendarFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/CalendarFragment.kt
index 547995e..6d76830 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/CalendarFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/CalendarFragment.kt
@@ -72,7 +72,6 @@ class CalendarFragment : Fragment() {
binding.showAllDayToggle.setCheckedImmediatelyNoEvent(Preferences.calendarAllDay)
binding.showOnlyBusyEventsToggle.setCheckedImmediatelyNoEvent(Preferences.showOnlyBusyEvents)
binding.showDiffTimeToggle.setCheckedImmediatelyNoEvent(Preferences.showDiffTime)
- binding.showMultipleEventsToggle.setCheckedImmediatelyNoEvent(Preferences.showNextEvent)
setupListener()
@@ -125,36 +124,6 @@ class CalendarFragment : Fragment() {
updateCalendar()
}
- viewModel.showNextEvent.observe(viewLifecycleOwner) {
- maintainScrollPosition {
- binding.showMultipleEventsLabel.text =
- if (it) getString(R.string.settings_visible) else getString(R.string.settings_not_visible)
- }
- }
-
- viewModel.calendarAppName.observe(viewLifecycleOwner) {
- maintainScrollPosition {
- binding.calendarAppLabel.text = when {
- Preferences.calendarAppName != "" -> Preferences.calendarAppName
- else -> {
- if (IntentHelper.getCalendarIntent(requireContext()).isDefaultSet(requireContext())) {
- getString(
- R.string.default_calendar_app
- )
- } else {
- getString(R.string.nothing)
- }
- }
- }
- }
- }
-
- viewModel.openEventDetails.observe(viewLifecycleOwner) {
- maintainScrollPosition {
- binding.openEventDetailsLabel.text = if (it) getString(R.string.default_event_app) else getString(R.string.default_calendar_app)
- }
- }
-
}
private fun setupListener() {
@@ -264,14 +233,6 @@ class CalendarFragment : Fragment() {
updateCalendar()
}
- binding.actionShowMultipleEvents.setOnClickListener {
- binding.showMultipleEventsToggle.isChecked = !binding.showMultipleEventsToggle.isChecked
- }
-
- binding.showMultipleEventsToggle.setOnCheckedChangeListener { _, isChecked ->
- Preferences.showNextEvent = isChecked
- }
-
binding.actionShowDiffTime.setOnClickListener {
binding.showDiffTimeToggle.isChecked = !binding.showDiffTimeToggle.isChecked
}
@@ -311,20 +272,6 @@ class CalendarFragment : Fragment() {
Preferences.showUntil = value
}.show()
}
-
- binding.actionOpenEventDetails.setOnClickListener {
- BottomSheetMenu(requireContext(), header = getString(R.string.settings_event_app_title)).setSelectedValue(Preferences.openEventDetails)
- .addItem(getString(R.string.default_event_app), true)
- .addItem(getString(R.string.default_calendar_app), false)
- .addOnSelectItemListener { value ->
- Preferences.openEventDetails = value
- }
- .show()
- }
-
- binding.actionCalendarApp.setOnClickListener {
- startActivityForResult(Intent(requireContext(), ChooseApplicationActivity::class.java), RequestCode.CALENDAR_APP_REQUEST_CODE.code)
- }
}
private fun updateCalendar() {
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt
index 0c20c9a..02f4b24 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt
@@ -18,7 +18,7 @@ import com.google.android.material.transition.MaterialSharedAxis
import com.tommasoberlose.anotherwidget.R
import com.tommasoberlose.anotherwidget.components.BottomSheetColorPicker
import com.tommasoberlose.anotherwidget.components.BottomSheetMenu
-import com.tommasoberlose.anotherwidget.databinding.FragmentClockBinding
+import com.tommasoberlose.anotherwidget.databinding.FragmentTabClockBinding
import com.tommasoberlose.anotherwidget.global.Constants
import com.tommasoberlose.anotherwidget.global.Preferences
import com.tommasoberlose.anotherwidget.global.RequestCode
@@ -45,7 +45,7 @@ class ClockFragment : Fragment() {
private lateinit var viewModel: MainViewModel
private lateinit var colors: IntArray
- private lateinit var binding: FragmentClockBinding
+ private lateinit var binding: FragmentTabClockBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -59,7 +59,7 @@ class ClockFragment : Fragment() {
): View {
viewModel = ViewModelProvider(activity as MainActivity).get(MainViewModel::class.java)
- binding = FragmentClockBinding.inflate(inflater)
+ binding = FragmentTabClockBinding.inflate(inflater)
subscribeUi(viewModel)
@@ -94,11 +94,6 @@ class ClockFragment : Fragment() {
binding.is24Format = DateFormat.is24HourFormat(requireContext())
binding.isDarkModeEnabled = activity?.isDarkTheme() == true
- viewModel.showBigClockWarning.observe(viewLifecycleOwner) {
- binding.largeClockWarning.isVisible = it
- binding.smallClockWarning.isVisible = !it
- }
-
viewModel.clockTextSize.observe(viewLifecycleOwner) {
maintainScrollPosition {
binding.clockTextSizeLabel.text = String.format("%.0fsp", it)
@@ -154,40 +149,9 @@ class ClockFragment : Fragment() {
}
}
}
-
- viewModel.clockBottomMargin.observe(viewLifecycleOwner) {
- maintainScrollPosition {
- binding.clockBottomMarginLabel.text = when (it) {
- Constants.ClockBottomMargin.NONE.value -> getString(R.string.settings_clock_bottom_margin_subtitle_none)
- Constants.ClockBottomMargin.SMALL.value -> getString(R.string.settings_clock_bottom_margin_subtitle_small)
- Constants.ClockBottomMargin.LARGE.value -> getString(R.string.settings_clock_bottom_margin_subtitle_large)
- else -> getString(R.string.settings_clock_bottom_margin_subtitle_medium)
- }
- }
- }
-
- viewModel.clockAppName.observe(viewLifecycleOwner) {
- maintainScrollPosition {
- binding.clockAppLabel.text = when {
- Preferences.clockAppName != "" -> Preferences.clockAppName
- else -> {
- if (IntentHelper.getClockIntent(requireContext()).isDefaultSet(requireContext())) {
- getString(
- R.string.default_clock_app
- )
- } else {
- getString(R.string.nothing)
- }
- }
- }
- }
- }
}
private fun setupListener() {
- binding.actionHideLargeClockWarning.setOnClickListener {
- Preferences.showBigClockWarning = false
- }
binding.actionClockTextSize.setOnClickListener {
val dialog = BottomSheetMenu(
@@ -236,39 +200,6 @@ class ClockFragment : Fragment() {
}
).show()
}
-
- binding.actionClockBottomMarginSize.setOnClickListener {
- BottomSheetMenu(
- requireContext(),
- header = getString(R.string.settings_clock_bottom_margin_title)
- ).setSelectedValue(Preferences.clockBottomMargin)
- .addItem(
- getString(R.string.settings_clock_bottom_margin_subtitle_none),
- Constants.ClockBottomMargin.NONE.value
- )
- .addItem(
- getString(R.string.settings_clock_bottom_margin_subtitle_small),
- Constants.ClockBottomMargin.SMALL.value
- )
- .addItem(
- getString(R.string.settings_clock_bottom_margin_subtitle_medium),
- Constants.ClockBottomMargin.MEDIUM.value
- )
- .addItem(
- getString(R.string.settings_clock_bottom_margin_subtitle_large),
- Constants.ClockBottomMargin.LARGE.value
- )
- .addOnSelectItemListener { value ->
- Preferences.clockBottomMargin = value
- }.show()
- }
-
- binding.actionClockApp.setOnClickListener {
- startActivityForResult(
- Intent(requireContext(), ChooseApplicationActivity::class.java),
- RequestCode.CLOCK_APP_REQUEST_CODE.code
- )
- }
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
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
new file mode 100644
index 0000000..c942192
--- /dev/null
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt
@@ -0,0 +1,192 @@
+package com.tommasoberlose.anotherwidget.ui.fragments.tabs
+
+import android.annotation.SuppressLint
+import android.content.Intent
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.databinding.DataBindingUtil
+import androidx.fragment.app.Fragment
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.lifecycleScope
+import com.chibatching.kotpref.blockingBulk
+import com.google.android.material.transition.MaterialSharedAxis
+import com.tommasoberlose.anotherwidget.R
+import com.tommasoberlose.anotherwidget.components.BottomSheetColorPicker
+import com.tommasoberlose.anotherwidget.components.BottomSheetMenu
+import com.tommasoberlose.anotherwidget.databinding.FragmentTabGesturesBinding
+import com.tommasoberlose.anotherwidget.databinding.FragmentTabLayoutBinding
+import com.tommasoberlose.anotherwidget.global.Constants
+import com.tommasoberlose.anotherwidget.global.Preferences
+import com.tommasoberlose.anotherwidget.global.RequestCode
+import com.tommasoberlose.anotherwidget.helpers.ColorHelper
+import com.tommasoberlose.anotherwidget.helpers.ColorHelper.toHexValue
+import com.tommasoberlose.anotherwidget.helpers.ColorHelper.toIntValue
+import com.tommasoberlose.anotherwidget.helpers.DateHelper
+import com.tommasoberlose.anotherwidget.helpers.IntentHelper
+import com.tommasoberlose.anotherwidget.ui.activities.tabs.CustomDateActivity
+import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
+import com.tommasoberlose.anotherwidget.ui.activities.tabs.ChooseApplicationActivity
+import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
+import com.tommasoberlose.anotherwidget.utils.isDarkTheme
+import com.tommasoberlose.anotherwidget.utils.isDefaultSet
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+import java.util.*
+
+class GesturesFragment : Fragment() {
+
+ companion object {
+ fun newInstance() = GesturesFragment()
+ }
+
+ private lateinit var viewModel: MainViewModel
+ private lateinit var colors: IntArray
+ private lateinit var binding: FragmentTabGesturesBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
+ returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false)
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+
+ viewModel = ViewModelProvider(activity as MainActivity).get(MainViewModel::class.java)
+ binding = FragmentTabGesturesBinding.inflate(inflater)
+
+ subscribeUi(viewModel)
+
+ binding.lifecycleOwner = this
+ binding.viewModel = viewModel
+
+ return binding.root
+ }
+
+ override fun onActivityCreated(savedInstanceState: Bundle?) {
+ super.onActivityCreated(savedInstanceState)
+
+ binding.showMultipleEventsToggle.setCheckedImmediatelyNoEvent(Preferences.showNextEvent)
+ setupListener()
+
+ binding.scrollView.viewTreeObserver?.addOnScrollChangedListener {
+ viewModel.fragmentScrollY.value = binding.scrollView.scrollY
+ }
+ }
+
+
+ @SuppressLint("DefaultLocale")
+ private fun subscribeUi(
+ viewModel: MainViewModel
+ ) {
+
+ viewModel.showNextEvent.observe(viewLifecycleOwner) {
+ maintainScrollPosition {
+ binding.showMultipleEventsLabel.text =
+ if (it) getString(R.string.settings_visible) else getString(R.string.settings_not_visible)
+ }
+ }
+
+ viewModel.calendarAppName.observe(viewLifecycleOwner) {
+ maintainScrollPosition {
+ binding.calendarAppLabel.text = when {
+ Preferences.calendarAppName != "" -> Preferences.calendarAppName
+ else -> {
+ if (IntentHelper.getCalendarIntent(requireContext()).isDefaultSet(requireContext())) {
+ getString(
+ R.string.default_calendar_app
+ )
+ } else {
+ getString(R.string.nothing)
+ }
+ }
+ }
+ }
+ }
+
+ viewModel.openEventDetails.observe(viewLifecycleOwner) {
+ maintainScrollPosition {
+ binding.openEventDetailsLabel.text = if (it) getString(R.string.default_event_app) else getString(R.string.default_calendar_app)
+ }
+ }
+
+ viewModel.clockAppName.observe(viewLifecycleOwner) {
+ maintainScrollPosition {
+ binding.clockAppLabel.text = when {
+ Preferences.clockAppName != "" -> Preferences.clockAppName
+ else -> {
+ if (IntentHelper.getClockIntent(requireContext()).isDefaultSet(requireContext())) {
+ getString(
+ R.string.default_clock_app
+ )
+ } else {
+ getString(R.string.nothing)
+ }
+ }
+ }
+ }
+ }
+
+ viewModel.weatherAppName.observe(viewLifecycleOwner) {
+ maintainScrollPosition {
+ binding.weatherAppLabel.text =
+ if (it != "") it else getString(R.string.default_weather_app)
+ }
+ }
+ }
+
+ private fun setupListener() {
+
+ binding.actionShowMultipleEvents.setOnClickListener {
+ binding.showMultipleEventsToggle.isChecked = !binding.showMultipleEventsToggle.isChecked
+ }
+
+ binding.showMultipleEventsToggle.setOnCheckedChangeListener { _, isChecked ->
+ Preferences.showNextEvent = isChecked
+ }
+
+ binding.actionOpenEventDetails.setOnClickListener {
+ BottomSheetMenu(requireContext(), header = getString(R.string.settings_event_app_title)).setSelectedValue(Preferences.openEventDetails)
+ .addItem(getString(R.string.default_event_app), true)
+ .addItem(getString(R.string.default_calendar_app), false)
+ .addOnSelectItemListener { value ->
+ Preferences.openEventDetails = value
+ }
+ .show()
+ }
+
+ binding.actionCalendarApp.setOnClickListener {
+ startActivityForResult(Intent(requireContext(), ChooseApplicationActivity::class.java), RequestCode.CALENDAR_APP_REQUEST_CODE.code)
+ }
+
+ binding.actionClockApp.setOnClickListener {
+ startActivityForResult(
+ Intent(requireContext(), ChooseApplicationActivity::class.java),
+ RequestCode.CLOCK_APP_REQUEST_CODE.code
+ )
+ }
+
+ binding.actionWeatherApp.setOnClickListener {
+ startActivityForResult(
+ Intent(requireContext(), ChooseApplicationActivity::class.java),
+ RequestCode.WEATHER_APP_REQUEST_CODE.code
+ )
+ }
+ }
+
+ private fun maintainScrollPosition(callback: () -> Unit) {
+ binding.scrollView.isScrollable = false
+ callback.invoke()
+ lifecycleScope.launch {
+ delay(200)
+ binding.scrollView.isScrollable = true
+ }
+ }
+}
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GlanceTabFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GlanceTabFragment.kt
index 923ac11..f0b0913 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GlanceTabFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GlanceTabFragment.kt
@@ -104,20 +104,18 @@ class GlanceTabFragment : Fragment() {
it.setImageDrawable(ContextCompat.getDrawable(requireContext(), item.icon))
}
.clicked(R.id.item) {
- if (Preferences.showGlance) {
- if (provider == Constants.GlanceProviderId.CUSTOM_INFO) {
- CustomNotesDialog(requireContext()){
- adapter.notifyItemRangeChanged(0, adapter.data.size)
- }.show()
- } else {
- dialog = GlanceSettingsDialog(requireActivity(), provider) {
- adapter.notifyItemRangeChanged(0, adapter.data.size)
- }
- dialog?.setOnDismissListener {
- dialog = null
- }
- dialog?.show()
+ if (provider == Constants.GlanceProviderId.CUSTOM_INFO) {
+ CustomNotesDialog(requireContext()){
+ adapter.notifyItemRangeChanged(0, adapter.data.size)
+ }.show()
+ } else {
+ dialog = GlanceSettingsDialog(requireActivity(), provider) {
+ adapter.notifyItemRangeChanged(0, adapter.data.size)
}
+ dialog?.setOnDismissListener {
+ dialog = null
+ }
+ dialog?.show()
}
}
var isVisible = false
@@ -356,7 +354,6 @@ class GlanceTabFragment : Fragment() {
private fun subscribeUi(
viewModel: MainViewModel,
) {
- binding.isGlanceVisible = Preferences.showGlance
}
private fun setupListener() {
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/LayoutFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/LayoutFragment.kt
index 9977161..5ea1174 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/LayoutFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/LayoutFragment.kt
@@ -102,6 +102,17 @@ class LayoutFragment : Fragment() {
}
}
+ viewModel.clockBottomMargin.observe(viewLifecycleOwner) {
+ maintainScrollPosition {
+ binding.clockBottomMarginLabel.text = when (it) {
+ Constants.ClockBottomMargin.NONE.value -> getString(R.string.settings_clock_bottom_margin_subtitle_none)
+ Constants.ClockBottomMargin.SMALL.value -> getString(R.string.settings_clock_bottom_margin_subtitle_small)
+ Constants.ClockBottomMargin.LARGE.value -> getString(R.string.settings_clock_bottom_margin_subtitle_large)
+ else -> getString(R.string.settings_clock_bottom_margin_subtitle_medium)
+ }
+ }
+ }
+
viewModel.backgroundCardColor.observe(viewLifecycleOwner) {
maintainScrollPosition {
if (Preferences.backgroundCardAlpha == "00") {
@@ -146,12 +157,6 @@ class LayoutFragment : Fragment() {
}
}
- viewModel.dateFormat.observe(viewLifecycleOwner) {
- maintainScrollPosition {
- binding.dateFormatLabel.text = DateHelper.getDateText(requireContext(), Calendar.getInstance())
- }
- }
-
viewModel.showDividers.observe(viewLifecycleOwner) {
maintainScrollPosition {
binding.showDividersLabel.text =
@@ -188,33 +193,30 @@ class LayoutFragment : Fragment() {
}.show()
}
- binding.actionDateFormat.setOnClickListener {
- val now = Calendar.getInstance()
- val dialog = BottomSheetMenu(requireContext(), header = getString(R.string.settings_date_format_title)).setSelectedValue(Preferences.dateFormat)
-
- dialog.addItem(DateHelper.getDefaultDateText(requireContext(), now), "")
- if (Preferences.dateFormat != "") {
- dialog.addItem(DateHelper.getDateText(requireContext(), now), Preferences.dateFormat)
- }
- dialog.addItem(getString(R.string.custom_date_format), "-")
-
- dialog.addOnSelectItemListener { value ->
- when (value) {
- "-" -> {
- startActivity(Intent(requireContext(), CustomDateActivity::class.java))
- }
- "" -> {
- Preferences.blockingBulk {
- isDateCapitalize = false
- isDateUppercase = false
- }
- Preferences.dateFormat = value
- }
- else -> {
- Preferences.dateFormat = value
- }
- }
- }.show()
+ binding.actionClockBottomMarginSize.setOnClickListener {
+ BottomSheetMenu(
+ requireContext(),
+ header = getString(R.string.settings_clock_bottom_margin_title)
+ ).setSelectedValue(Preferences.clockBottomMargin)
+ .addItem(
+ getString(R.string.settings_clock_bottom_margin_subtitle_none),
+ Constants.ClockBottomMargin.NONE.value
+ )
+ .addItem(
+ getString(R.string.settings_clock_bottom_margin_subtitle_small),
+ Constants.ClockBottomMargin.SMALL.value
+ )
+ .addItem(
+ getString(R.string.settings_clock_bottom_margin_subtitle_medium),
+ Constants.ClockBottomMargin.MEDIUM.value
+ )
+ .addItem(
+ getString(R.string.settings_clock_bottom_margin_subtitle_large),
+ Constants.ClockBottomMargin.LARGE.value
+ )
+ .addOnSelectItemListener { value ->
+ Preferences.clockBottomMargin = value
+ }.show()
}
binding.actionBackgroundColor.setOnClickListener {
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 8480754..0b21bc6 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
@@ -77,7 +77,6 @@ class PreferencesFragment : Fragment() {
binding.isCalendarEnabled = Preferences.showEvents
binding.isWeatherVisible = Preferences.showWeather
binding.isClockVisible = Preferences.showClock
- binding.isGlanceVisible = Preferences.showGlance
viewModel.showEvents.observe(viewLifecycleOwner) {
maintainScrollPosition {
@@ -104,13 +103,6 @@ class PreferencesFragment : Fragment() {
binding.isClockVisible = it
}
}
-
- viewModel.showGlance.observe(viewLifecycleOwner) {
- maintainScrollPosition {
- binding.isGlanceVisible = it
- }
- }
-
}
private fun setupListener() {
@@ -149,12 +141,13 @@ class PreferencesFragment : Fragment() {
binding.showClockSwitch.setOnCheckedChangeListener { _, enabled: Boolean ->
Preferences.showClock = enabled
}
+
binding.actionShowGlance.setOnClickListener {
Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_glanceTabFragment)
}
- binding.showGlanceSwitch.setOnCheckedChangeListener { _, enabled: Boolean ->
- Preferences.showGlance = enabled
+ binding.actionTabDefaultApp.setOnClickListener {
+ Navigation.findNavController(it).navigate(R.id.action_tabSelectorFragment_to_gesturesFragment)
}
}
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/TypographyFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/TypographyFragment.kt
index 906b457..4aa6b0d 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/TypographyFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/TypographyFragment.kt
@@ -10,6 +10,7 @@ import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
+import com.chibatching.kotpref.blockingBulk
import com.chibatching.kotpref.bulk
import com.google.android.material.transition.MaterialSharedAxis
import com.tommasoberlose.anotherwidget.R
@@ -22,9 +23,11 @@ import com.tommasoberlose.anotherwidget.global.RequestCode
import com.tommasoberlose.anotherwidget.helpers.ColorHelper
import com.tommasoberlose.anotherwidget.helpers.ColorHelper.toHexValue
import com.tommasoberlose.anotherwidget.helpers.ColorHelper.toIntValue
+import com.tommasoberlose.anotherwidget.helpers.DateHelper
import com.tommasoberlose.anotherwidget.helpers.SettingsStringHelper
import com.tommasoberlose.anotherwidget.ui.activities.tabs.CustomFontActivity
import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
+import com.tommasoberlose.anotherwidget.ui.activities.tabs.CustomDateActivity
import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
import com.tommasoberlose.anotherwidget.utils.isDarkTheme
@@ -32,6 +35,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
+import java.util.*
class TypographyFragment : Fragment() {
@@ -234,6 +238,12 @@ class TypographyFragment : Fragment() {
MainWidget.updateWidget(requireContext())
}
}
+
+ viewModel.dateFormat.observe(viewLifecycleOwner) {
+ maintainScrollPosition {
+ binding.dateFormatLabel.text = DateHelper.getDateText(requireContext(), Calendar.getInstance())
+ }
+ }
}
private fun setupListener() {
@@ -354,6 +364,35 @@ class TypographyFragment : Fragment() {
}
}.show()
}
+
+ binding.actionDateFormat.setOnClickListener {
+ val now = Calendar.getInstance()
+ val dialog = BottomSheetMenu(requireContext(), header = getString(R.string.settings_date_format_title)).setSelectedValue(Preferences.dateFormat)
+
+ dialog.addItem(DateHelper.getDefaultDateText(requireContext(), now), "")
+ if (Preferences.dateFormat != "") {
+ dialog.addItem(DateHelper.getDateText(requireContext(), now), Preferences.dateFormat)
+ }
+ dialog.addItem(getString(R.string.custom_date_format), "-")
+
+ dialog.addOnSelectItemListener { value ->
+ when (value) {
+ "-" -> {
+ startActivity(Intent(requireContext(), CustomDateActivity::class.java))
+ }
+ "" -> {
+ Preferences.blockingBulk {
+ isDateCapitalize = false
+ isDateUppercase = false
+ }
+ Preferences.dateFormat = value
+ }
+ else -> {
+ Preferences.dateFormat = value
+ }
+ }
+ }.show()
+ }
}
private fun maintainScrollPosition(callback: () -> Unit) {
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/WeatherFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/WeatherFragment.kt
index 2bbcb3f..b6e2b8a 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/WeatherFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/WeatherFragment.kt
@@ -132,13 +132,6 @@ class WeatherFragment : Fragment() {
}
checkLocationPermission()
}
-
- viewModel.weatherAppName.observe(viewLifecycleOwner) {
- maintainScrollPosition {
- binding.weatherAppLabel.text =
- if (it != "") it else getString(R.string.default_weather_app)
- }
- }
}
private fun checkLocationPermission() {
@@ -220,13 +213,6 @@ class WeatherFragment : Fragment() {
binding.actionWeatherIconPack.setOnClickListener {
IconPackSelector(requireContext(), header = getString(R.string.settings_weather_icon_pack_title)).show()
}
-
- binding.actionWeatherApp.setOnClickListener {
- startActivityForResult(
- Intent(requireContext(), ChooseApplicationActivity::class.java),
- RequestCode.WEATHER_APP_REQUEST_CODE.code
- )
- }
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/MainViewModel.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/MainViewModel.kt
index 7b0cc86..3833646 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/MainViewModel.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/MainViewModel.kt
@@ -75,7 +75,6 @@ class MainViewModel : ViewModel() {
val weatherProviderLocationError = Preferences.asLiveData(Preferences::weatherProviderLocationError)
// Glance
- val showGlance = Preferences.asLiveData(Preferences::showGlance)
val showMusic = Preferences.asLiveData(Preferences::showMusic)
val showNextAlarm = Preferences.asLiveData(Preferences::showNextAlarm)
val showBatteryCharging = Preferences.asLiveData(Preferences::showBatteryCharging)
diff --git a/app/src/main/res/layout/fragment_preferences.xml b/app/src/main/res/layout/fragment_preferences.xml
index 6339c97..383827a 100644
--- a/app/src/main/res/layout/fragment_preferences.xml
+++ b/app/src/main/res/layout/fragment_preferences.xml
@@ -14,9 +14,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/fragment_clock.xml b/app/src/main/res/layout/fragment_tab_clock.xml
similarity index 64%
rename from app/src/main/res/layout/fragment_clock.xml
rename to app/src/main/res/layout/fragment_tab_clock.xml
index d161c77..6225e2d 100644
--- a/app/src/main/res/layout/fragment_clock.xml
+++ b/app/src/main/res/layout/fragment_tab_clock.xml
@@ -28,45 +28,6 @@
android:paddingBottom="8dp"
android:focusable="true"
android:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_tab_layout.xml b/app/src/main/res/layout/fragment_tab_layout.xml
index 337dc87..bc7d8af 100644
--- a/app/src/main/res/layout/fragment_tab_layout.xml
+++ b/app/src/main/res/layout/fragment_tab_layout.xml
@@ -24,48 +24,11 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/navigation/settings_nav_graph.xml b/app/src/main/res/navigation/settings_nav_graph.xml
index 18a1593..f71cd28 100644
--- a/app/src/main/res/navigation/settings_nav_graph.xml
+++ b/app/src/main/res/navigation/settings_nav_graph.xml
@@ -45,9 +45,16 @@
+
+
\ No newline at end of file