From e58fef66aab72425cb8975d8d77063ce6201d11b Mon Sep 17 00:00:00 2001 From: Tommaso Berlose Date: Fri, 22 May 2020 19:18:29 +0200 Subject: [PATCH] Close #148 --- .../anotherwidget/global/Preferences.kt | 1 + .../anotherwidget/helpers/DateHelper.kt | 16 ++++-- .../ui/activities/CustomDateActivity.kt | 53 ++++++++++++++++-- .../ui/fragments/GeneralTabFragment.kt | 7 +++ .../ui/viewmodels/CustomDateViewModel.kt | 3 +- .../main/res/drawable-hdpi/ic_capitalize.png | Bin 0 -> 471 bytes .../main/res/drawable-mdpi/ic_capitalize.png | Bin 0 -> 355 bytes .../main/res/drawable-xhdpi/ic_capitalize.png | Bin 0 -> 592 bytes .../res/drawable-xxhdpi/ic_capitalize.png | Bin 0 -> 773 bytes .../res/drawable-xxxhdpi/ic_capitalize.png | Bin 0 -> 1119 bytes .../main/res/layout/activity_custom_date.xml | 6 +- 11 files changed, 71 insertions(+), 15 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_capitalize.png create mode 100644 app/src/main/res/drawable-mdpi/ic_capitalize.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_capitalize.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_capitalize.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_capitalize.png 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 033ad2d..1bc691b 100755 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt @@ -31,6 +31,7 @@ object Preferences : KotprefModel() { var customLocationAdd by stringPref(key = "PREF_CUSTOM_LOCATION_ADD", default = "") var dateFormat by stringPref(default = "") var isDateCapitalize by booleanPref(default = true) + var isDateUppercase by booleanPref(default = false) var weatherRefreshPeriod by intPref(key = "PREF_WEATHER_REFRESH_PERIOD", default = 1) var showUntil by intPref(key = "PREF_SHOW_UNTIL", default = 1) var calendarAppName by stringPref(key = "PREF_CALENDAR_APP_NAME", default = "") diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/DateHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/DateHelper.kt index 1539736..7c3a480 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/DateHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/DateHelper.kt @@ -2,7 +2,6 @@ package com.tommasoberlose.anotherwidget.helpers import android.content.Context import android.text.format.DateUtils -import android.util.Log import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.utils.getCapWordString import java.lang.Exception @@ -17,7 +16,11 @@ object DateHelper { } catch (e: Exception) { getDefaultDateText(context, date) } - if (Preferences.isDateCapitalize) text.getCapWordString() else text + when { + Preferences.isDateUppercase -> text.toUpperCase(Locale.getDefault()) + Preferences.isDateCapitalize -> text.getCapWordString() + else -> text + } } else { val flags: Int = DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH @@ -25,17 +28,20 @@ object DateHelper { SimpleDateFormat("EEEE", Locale.getDefault()).format(date.time), DateUtils.formatDateTime(context, date.timeInMillis, flags) ) - if (Preferences.isDateCapitalize) text.getCapWordString() else text + when { + Preferences.isDateUppercase -> text.toUpperCase(Locale.getDefault()) + Preferences.isDateCapitalize -> text.getCapWordString() + else -> text + } } } fun getDefaultDateText(context: Context, date: Calendar): String { val flags: Int = DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH - val text = "%s, %s".format( + return "%s, %s".format( SimpleDateFormat("EEEE", Locale.getDefault()).format(date.time), DateUtils.formatDateTime(context, date.timeInMillis, flags) ) - return if (Preferences.isDateCapitalize) text.getCapWordString() else text } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/CustomDateActivity.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/CustomDateActivity.kt index a643052..6038f26 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/CustomDateActivity.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/CustomDateActivity.kt @@ -6,12 +6,14 @@ import android.os.Bundle import android.util.Log import android.view.View import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat import androidx.core.view.isVisible import androidx.databinding.DataBindingUtil import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager +import com.chibatching.kotpref.blockingBulk import com.chibatching.kotpref.bulk import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.databinding.ActivityCustomDateBinding @@ -90,10 +92,14 @@ class CustomDateActivity : AppCompatActivity() { "__" } - if (Preferences.isDateCapitalize) { + if (viewModel.isDateCapitalize.value == true) { text = text.getCapWordString() } + if (viewModel.isDateUppercase.value == true) { + text = text.toUpperCase(Locale.getDefault()) + } + withContext(Dispatchers.Main) { action_save.isVisible = text != ERROR_STRING loader.visibility = View.INVISIBLE @@ -105,8 +111,30 @@ class CustomDateActivity : AppCompatActivity() { viewModel.isDateCapitalize.observe(this, Observer { viewModel.dateInput.value = viewModel.dateInput.value - binding.isdCapitalizeEnabled = it + updateCapitalizeUi() }) + + viewModel.isDateUppercase.observe(this, Observer { + viewModel.dateInput.value = viewModel.dateInput.value + updateCapitalizeUi() + }) + } + + private fun updateCapitalizeUi() { + when { + viewModel.isDateUppercase.value == true -> { + action_capitalize.setImageDrawable(ContextCompat.getDrawable(this@CustomDateActivity, R.drawable.round_publish)) + action_capitalize.alpha = 1f + } + viewModel.isDateCapitalize.value == true -> { + action_capitalize.setImageDrawable(ContextCompat.getDrawable(this@CustomDateActivity, R.drawable.ic_capitalize)) + action_capitalize.alpha = 1f + } + else -> { + action_capitalize.setImageDrawable(ContextCompat.getDrawable(this@CustomDateActivity, R.drawable.round_publish)) + action_capitalize.alpha = 0.3f + } + } } private fun setupListener() { @@ -115,12 +143,29 @@ class CustomDateActivity : AppCompatActivity() { } action_save.setOnClickListener { - Preferences.dateFormat = viewModel.dateInput.value ?: "" + Preferences.blockingBulk { + dateFormat = viewModel.dateInput.value ?: "" + isDateCapitalize = viewModel.isDateCapitalize.value ?: true + isDateUppercase = viewModel.isDateUppercase.value ?: false + } finish() } action_capitalize.setOnClickListener { - Preferences.isDateCapitalize = !Preferences.isDateCapitalize + when { + viewModel.isDateUppercase.value == true -> { + viewModel.isDateCapitalize.value = false + viewModel.isDateUppercase.value = false + } + viewModel.isDateCapitalize.value == true -> { + viewModel.isDateCapitalize.value = false + viewModel.isDateUppercase.value = true + } + else -> { + viewModel.isDateCapitalize.value = true + viewModel.isDateUppercase.value = false + } + } } action_capitalize.setOnLongClickListener { diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralTabFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralTabFragment.kt index 0312559..4b03e8e 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralTabFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralTabFragment.kt @@ -12,6 +12,7 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope +import com.chibatching.kotpref.blockingBulk import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.components.BottomSheetColorPicker import com.tommasoberlose.anotherwidget.components.BottomSheetMenu @@ -256,6 +257,12 @@ class GeneralTabFragment : Fragment() { dialog.addOnSelectItemListener { value -> if (value == "-") { startActivity(Intent(requireContext(), CustomDateActivity::class.java)) + } else if (value == "") { + Preferences.blockingBulk { + isDateCapitalize = false + isDateUppercase = false + } + Preferences.dateFormat = value } else { Preferences.dateFormat = value } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/CustomDateViewModel.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/CustomDateViewModel.kt index f116b46..2caf3e8 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/CustomDateViewModel.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/CustomDateViewModel.kt @@ -8,5 +8,6 @@ import com.tommasoberlose.anotherwidget.global.Preferences class CustomDateViewModel(application: Application) : AndroidViewModel(application) { val dateInput: MutableLiveData = MutableLiveData(if (Preferences.dateFormat == "") "EEEE, MMM dd" else Preferences.dateFormat) - val isDateCapitalize = Preferences.asLiveData(Preferences::isDateCapitalize) + val isDateCapitalize = MutableLiveData(Preferences.isDateCapitalize) + val isDateUppercase = MutableLiveData(Preferences.isDateUppercase) } \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/ic_capitalize.png b/app/src/main/res/drawable-hdpi/ic_capitalize.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf11573891077def62494e7441973dee3b6cb0a GIT binary patch literal 471 zcmV;|0Vw{7P)n+Y!_{USYEqs3VSYnQUaGO0oD62QF-h zSQkL&@v>=l2fs@i|ErNr;0-P}4Zh+gzSlw>#-VF?fr~xOe_{sjYoKa@0_Hiwp?(n# z&DKEG00qR`KF;)lg;O`$j;}3HEO5Z=?o2k7*r|XjUi3CVQ_X7{&nSBGKM=3)Q^~nf zpexO5Y74W=5K!^@zGP6PK=XK#i6!~Fc$#UH0$sv8#17R&?9g?5%MO5QX7yy@7#XpsBHmCO(P?g6|+2n5lu987RJkAc&7*qKUDo27-a$oq`^bab~&~ zc9Csp7?|qwSDorh&yYuN$ol>bFo_9#6;>FDzT>SP-&8?}FJY!oyb629Z5`4ESixMM zfJa=H0J?Omgi5XJtI4z2Nc3|&l~h=|i>9%Qtt5JiBfR7wC4dm$#35n>#E9LphqD|c z2MAks(yYX*qyuuCW~*IYfXbF_#COvOi%z=i>H@4Gnpw}h4vI>m`Ik)@bOBbek0~s+ zRB(q^9N?;7KnTxc4EHU71$^Qmf&PT$np`btJ6PHE*?>eCeZWWR#cz+p`|&}X^}K*WZV@|FaifX_Iq_w*DV|z&G~_Fc}}=W|;s0002ovPDHLkV1lIt Bo}K^z literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_capitalize.png b/app/src/main/res/drawable-xhdpi/ic_capitalize.png new file mode 100644 index 0000000000000000000000000000000000000000..00a8aa3d31c316a4da29ff84f5d45df36b43bd88 GIT binary patch literal 592 zcmV-W0fV%`}K=a_S3^BAZzdz2(#gAV)TX$*B~eL^gxSsRSS{HRo}5!d6+j#mAbs zhATOjnFv+_up9TWuQb~!^Pb@-Ugr2M0oaQN*p(9~!S)r7;CX`WUy~Am^*D_a%Otcj zCoo>O>_b9#a08!n{FDHM|2S#)AQtnV@hB%S4z=v#|L8@^6>@ouQh-Uh=Dt)^iCx7> zLo)(oO7OS&*nw8nMhT4)DyhJ~B%$wEl~{xySe&=$S>kK# eKuOhV&iMtbr&}>i=N|z80000mG^P@m6QAh>1Sp{p0TLiz5s`wVASuX4 zKnn8lQw@@Wq#z%G$_lbubOW#wSPcBC8g2gK7S}i61Mt!lm$wG31?)4+;|*Y+qTvCw z5ZG4awY||};75sD51>WB))J>3Y@Pt$OZ<8OnZNbG>JrBdZQcQ|O8t2Onf)4I6|k%{ zh)Q;!f%m}Mo<+J+ZnLwjS3$FrNu@{xsB)uN>3f@Kh1>@A_fk<$KzD#WnTg*8 z_GZovoz?@;65tAOa9}1kfTO_Ifp)IxtpORFbHK5}s4oMjTS96L=z4*2##x$@4iy3( zY}OLckeZW9q*+aB0mvTZH#44ADJbLD?df))b_-A&(0oncP#E*guii}71e9t5BOz65 zCTjx9X#%4lRcj_|0g5chxe%)q?r1=EHfD8UXcL$VAvMoh0Q=EvXJR2E8qj9oDPZ-d z$FS{@Ex@xV=h1+k0~@1)D_rLVu&L1YKeK2+w#n7|FwqVPZSyT;L<8CZJOHBC%}v(c z4cG}h%r!{Oi%!IjqYsa^CRR*vZZA1R40|bIe0&7#>3Oa6n0ZoQ(STCPN4@>gEbeBG zM&tx2At3=0pj4Haeq9QZf}|iH0V&AGPc=vil7f5$q#z$Z)gUQI3i1(1SicVVZ-@Qw zVqMiJ|5?2CcE<(agfqE|z)9yC+2*YQSzu>?-N5qfDF00S1l$A84zzPk?*YgaaBE`$ zN)Q(y0rK6HQjioR1^Ea_K|X$}K~j(uU{UjQaSW-5dpqa!YX3lyv^H|)i zJ)ggR@3nnvZFe^BJ|C4`Z=YU!etq#b%i1Fbp$pENRI8{nNX%zpRA7+MPMBk7MI0Ts znYoQonepfE+ZA(TFL&GRZ+L(9{<^}b{>w}TqBB^1*xa&3=g0QeGoL#7S+s)NhB@x} zxs{9wOdB={+LiB}_L1d?=>z9;N=3{QD!dykExSuZUUL>$FJJnM&44X}wWnAm>RgZ= zV|b(f&L*~ogPJep8g$(M)c<;LE%fZ0>1Rt7q7Ux0cHo-Lp~L(n$!1DhOie!1`(iyW z=7uZkkIu8EF&D+IsO-3J&nm|#U##!K?eNa3J!cO?LXQ~(3qvw%&t-RZmWFd&K8(}M z-S0EpE9pzANa&SSurD-cvTkJUE&Ja1_`uFP=BKyZyuy~iR={xMn$nq-&;ILgX+15v zUyY&YnLOh*GybZ7%NuPhEP3CoTq>N!sPO1LbD8?QO7})*Q->9d2OPFtKDLC*`V*hR z(Xv|%A&Ktu7OMrD77qT7C=WlvZe z+TH@y%Q0l!?#s5`#1?R>?9Q!;stuF2J-*hrh9Tl+pSATShJ;+}b#GRfFz|1Ce5%ij zNrL~4{1M%!N374^Tz+!z;%2GY8~%l7YBDG{#2$F~rsyTh9c~%sx)&|~rMHSSEIpu_ zugme%q1%oHlHF49^?SpDO**uFvW4sq@9qDmtw%aQ5OiZ=X1| z>E#FF7?~EI(BM@_4ZM|qb$8U})k#uTj0#UpLgxrGh#d9hlw}AC38D#Gxu5yzHb?P0l Qz=DIp)78&qol`;+0Qf_{R{#J2 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_custom_date.xml b/app/src/main/res/layout/activity_custom_date.xml index f420b93..bb4fcf1 100644 --- a/app/src/main/res/layout/activity_custom_date.xml +++ b/app/src/main/res/layout/activity_custom_date.xml @@ -5,9 +5,6 @@ -