diff --git a/app/build.gradle b/app/build.gradle index 6a437ed..831e6b1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -60,7 +60,7 @@ android { viewBinding true } lintOptions { - disable 'ObsoleteLintCustomCheck' + disable 'ObsoleteLintCustomCheck', 'IconMissingDensityFolder' enable 'ConvertToWebp', 'DuplicateStrings', 'EasterEgg', 'ExpensiveAssertion', 'IconExpectedSize', 'ImplicitSamInstance', 'InvalidPackage', 'KotlinPropertyAccess', 'LambdaLast', 'MinSdkTooLow', 'NegativeMargin', 'NoHardKeywords', 'Registered', 'RequiredSize', 'UnknownNullness', 'WrongThreadInterprocedural' } testOptions { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2fbb0bb..26f6c08 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -13,6 +14,7 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true" + tools:ignore="UnusedAttribute" android:theme="@style/Theme.Mealient"> { } } return callbackFlow.asLiveData() +} + +fun Activity.setSystemUiVisibility(isVisible: Boolean) { + Timber.v("setSystemUiVisibility() called with: isVisible = $isVisible") + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) setSystemUiVisibilityV30(isVisible) + else setSystemUiVisibilityV1(isVisible) +} + +@Suppress("DEPRECATION") +private fun Activity.setSystemUiVisibilityV1(isVisible: Boolean) { + Timber.v("setSystemUiVisibilityV1() called with: isVisible = $isVisible") + window.decorView.systemUiVisibility = if (isVisible) 0 else View.SYSTEM_UI_FLAG_FULLSCREEN +} + +@RequiresApi(Build.VERSION_CODES.R) +private fun Activity.setSystemUiVisibilityV30(isVisible: Boolean) { + Timber.v("setSystemUiVisibilityV30() called with: isVisible = $isVisible") + val systemBars = WindowInsets.Type.systemBars() + window.insetsController?.apply { if (isVisible) show(systemBars) else hide(systemBars) } + ?: Timber.w("setSystemUiVisibilityV30: insets controller is null") +} + +fun AppCompatActivity.setActionBarVisibility(isVisible: Boolean) { + Timber.v("setActionBarVisibility() called with: isVisible = $isVisible") + supportActionBar?.apply { if (isVisible) show() else hide() } + ?: Timber.w("setActionBarVisibility: action bar is null") } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerFragment.kt index 329552b..d256b15 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerFragment.kt @@ -59,11 +59,9 @@ class DisclaimerFragment : Fragment() { } viewModel.okayCountDown.observe(viewLifecycleOwner) { Timber.d("onViewCreated: new count $it") - binding.okay.text = if (it > 0) { - getString(R.string.fragment_disclaimer_button_okay_timer, it) - } else { - getString(R.string.fragment_disclaimer_button_okay) - } + binding.okay.text = if (it > 0) resources.getQuantityString( + R.plurals.fragment_disclaimer_button_okay_timer, it, it + ) else getString(R.string.fragment_disclaimer_button_okay) binding.okay.isClickable = it == 0 } viewModel.startCountDown() diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt index 375d556..eb79a25 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/splash/SplashFragment.kt @@ -10,6 +10,8 @@ import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint import gq.kirmanak.mealient.databinding.FragmentSplashBinding +import gq.kirmanak.mealient.ui.setActionBarVisibility +import gq.kirmanak.mealient.ui.setSystemUiVisibility import timber.log.Timber @AndroidEntryPoint @@ -44,14 +46,7 @@ class SplashFragment : Fragment() { private fun changeFullscreenState(isFullscreen: Boolean) { Timber.v("changeFullscreenState() called with: isFullscreen = $isFullscreen") - - val supportActionBar = (activity as? AppCompatActivity)?.supportActionBar - Timber.d("changeFullscreenState: action bar = $supportActionBar") - if (isFullscreen) supportActionBar?.hide() - else supportActionBar?.show() - - val decorView = activity?.window?.decorView - Timber.d("changeFullscreenState: decorView = $decorView") - decorView?.systemUiVisibility = if (isFullscreen) View.SYSTEM_UI_FLAG_FULLSCREEN else 0 + (activity as? AppCompatActivity)?.setActionBarVisibility(!isFullscreen) + activity?.setSystemUiVisibility(!isFullscreen) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_splash_screen_background.xml b/app/src/main/res/drawable/ic_splash_screen_background.xml index 80ea554..e3007b4 100644 --- a/app/src/main/res/drawable/ic_splash_screen_background.xml +++ b/app/src/main/res/drawable/ic_splash_screen_background.xml @@ -1,11 +1,10 @@ - diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 65bd9d3..0000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index a6f1bed..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index fbc3cda..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index cdba034..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 6011930..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 49643d5..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/values-ru/plurals.xml b/app/src/main/res/values-ru/plurals.xml new file mode 100644 index 0000000..846844a --- /dev/null +++ b/app/src/main/res/values-ru/plurals.xml @@ -0,0 +1,8 @@ + + + + Хорошо (%d секунда) + Хорошо (%d секунды) + Хорошо (%d секунд) + + \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 89b7636..d4480d0 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -9,10 +9,8 @@ Загрузка Ингредиенты Инструкции - Хорошо (%d секунд) Шаг: %d Хорошо - ДИСКЛЕЙМЕР Этот проект разрабатывается независимо от основного проекта Meale. Он не связан с разработчиками Mealie. О любых проблемах следует писать в репозиторий Mealient, НЕ в репозиторий Mealie. E-mail не может быть пустым Пароль не может быть пустым diff --git a/app/src/main/res/values/plurals.xml b/app/src/main/res/values/plurals.xml new file mode 100644 index 0000000..5d42832 --- /dev/null +++ b/app/src/main/res/values/plurals.xml @@ -0,0 +1,7 @@ + + + + Okay (%d second) + Okay (%d seconds) + + \ 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 d0c8216..7ae98d5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,9 +11,7 @@ @string/content_description_view_holder_recipe_image Ingredients Instructions - Okay (%d seconds) This project is developed independently from the core Mealie project. It is NOT associated with the core Mealie developers. Any issues must be reported to the Mealient repository, NOT the Mealie repository. - DISCLAIMER Okay Step: %d E-mail can\'t be empty