diff --git a/feature_navigation/src/main/AndroidManifest.xml b/feature_navigation/src/main/AndroidManifest.xml
index d010ff5..9da9788 100644
--- a/feature_navigation/src/main/AndroidManifest.xml
+++ b/feature_navigation/src/main/AndroidManifest.xml
@@ -24,13 +24,6 @@
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Transparent.NoActionBar.Dark"
tools:ignore="LockedOrientationActivity" />
-
-
-
diff --git a/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/main_page_profile/ProfileFragment.kt b/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/main_page_profile/ProfileFragment.kt
index 3040cdb..cdb65ec 100644
--- a/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/main_page_profile/ProfileFragment.kt
+++ b/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/main_page_profile/ProfileFragment.kt
@@ -18,7 +18,7 @@ import com.majorik.moviebox.feature.navigation.domain.tmdbModels.account.Account
import com.majorik.moviebox.feature.navigation.presentation.dialogs.LogoutDialog
import com.majorik.moviebox.feature.navigation.presentation.main_page_profile.adapters.ProfileMoviesAdapter
import com.majorik.moviebox.feature.navigation.presentation.main_page_profile.adapters.ProfileTVsAdapter
-import com.majorik.moviebox.feature.navigation.presentation.settings.SettingsActivity
+import com.majorik.moviebox.feature.navigation.presentation.settings.SettingsFragment
import kotlinx.coroutines.flow.collectLatest
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -147,7 +147,7 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) {
}
viewBinding.btnSettings.setSafeOnClickListener {
- context?.startActivityWithAnim(SettingsActivity::class.java)
+ findNavController().navigate(ProfileFragmentDirections.actionToSettings())
}
}
diff --git a/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/SettingsActivity.kt b/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/SettingsActivity.kt
deleted file mode 100644
index 19ddd4f..0000000
--- a/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/SettingsActivity.kt
+++ /dev/null
@@ -1,97 +0,0 @@
-package com.majorik.moviebox.feature.navigation.presentation.settings
-
-import android.app.usage.StorageStatsManager
-import android.content.Context
-import android.content.pm.PackageStats
-import android.os.Build
-import android.os.Bundle
-import android.os.Process
-import android.os.storage.StorageManager
-import android.text.format.Formatter
-import android.view.View
-import com.majorik.library.base.base.BaseSlidingActivity
-import com.majorik.library.base.extensions.setSafeOnClickListener
-import com.majorik.library.base.extensions.setWindowTransparency
-import com.majorik.library.base.extensions.startActivityWithAnim
-import com.majorik.library.base.extensions.updateMargin
-import com.majorik.moviebox.feature.navigation.presentation.language.LanguageActivity
-import com.majorik.moviebox.feature.navigation.presentation.settings.clear_dialog.ClearCacheDialog
-import com.majorik.moviebox.feature.navigation.presentation.settings.clear_dialog.ClearDialogListener
-import com.orhanobut.logger.Logger
-import kotlinx.android.synthetic.main.activity_settings.*
-import com.majorik.moviebox.feature.navigation.R
-
-class SettingsActivity : BaseSlidingActivity(), ClearDialogListener {
-
- override fun getRootView(): View = window.decorView.rootView
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_settings)
-
- setWindowTransparency(::updateMargins)
-
- calculateCache()
-
- setClickListeners()
- setCurrentLanguage()
- }
-
- private fun updateMargins(statusBarSize: Int, @Suppress("UNUSED_PARAMETER") navigationBarSize: Int) {
- settings_toolbar.updateMargin(top = statusBarSize)
- }
-
- override fun onSlidingStarted() {}
-
- override fun onSlidingFinished() {}
-
- override fun canSlideDown(): Boolean = true
-
- override fun onResume() {
- super.onResume()
-
- settings_cache_size.text = Formatter.formatShortFileSize(this, calculateCache())
- }
-
- override fun onDialogDismiss() {
- settings_cache_size.text = Formatter.formatShortFileSize(this, calculateCache())
- }
-
- private fun setClickListeners() {
- btn_clear_cache.setSafeOnClickListener {
- ClearCacheDialog.newInstance(settings_cache_size.text.toString())
- .show(supportFragmentManager, "clear_dialog")
- }
-
- btn_change_lang.setSafeOnClickListener {
- startActivityWithAnim(LanguageActivity::class.java)
- }
- }
-
- @OptIn(ExperimentalStdlibApi::class)
- private fun setCurrentLanguage() {
- val currentLanguage = getCurrentLanguage()
- tv_current_language.text = currentLanguage.getDisplayName(currentLanguage).capitalize(currentLanguage)
- }
-
- private fun calculateCache(): Long {
- val cacheSize: Long
-
- if (Build.VERSION.SDK_INT >= 26) {
- val ssm = getSystemService(Context.STORAGE_STATS_SERVICE) as StorageStatsManager
- val user = Process.myUserHandle()
-
- val sm = ssm.queryStatsForPackage(StorageManager.UUID_DEFAULT, this.packageName, user)
-
- cacheSize = sm.cacheBytes
- } else {
- val p = PackageStats(packageName)
-
- cacheSize = p.cacheSize
- }
-
- Logger.i("getCacheBytes ${Formatter.formatShortFileSize(this, cacheSize)}")
-
- return cacheSize
- }
-}
diff --git a/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/SettingsFragment.kt b/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/SettingsFragment.kt
new file mode 100644
index 0000000..0f52377
--- /dev/null
+++ b/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/SettingsFragment.kt
@@ -0,0 +1,91 @@
+package com.majorik.moviebox.feature.navigation.presentation.settings
+
+import android.app.usage.StorageStatsManager
+import android.content.Context
+import android.content.pm.PackageStats
+import android.os.Build
+import android.os.Bundle
+import android.os.Process
+import android.os.storage.StorageManager
+import android.text.format.Formatter
+import android.view.View
+import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.findNavController
+import by.kirich1409.viewbindingdelegate.viewBinding
+import com.akexorcist.localizationactivity.ui.LocalizationActivity
+import com.majorik.library.base.extensions.getCurrentLocale
+import com.majorik.library.base.extensions.setSafeOnClickListener
+import com.majorik.library.base.extensions.updateMargin
+import com.majorik.moviebox.feature.navigation.R
+import com.majorik.moviebox.feature.navigation.databinding.FragmentSettingsBinding
+import com.majorik.moviebox.feature.navigation.presentation.settings.clear_dialog.ClearCacheDialog
+import com.majorik.moviebox.feature.navigation.presentation.settings.clear_dialog.ClearDialogListener
+import com.orhanobut.logger.Logger
+
+class SettingsFragment : Fragment(R.layout.fragment_settings), ClearDialogListener {
+
+ private val viewBinding: FragmentSettingsBinding by viewBinding()
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ calculateCache()
+
+ setClickListeners()
+ setCurrentLanguage()
+ }
+
+ override fun onResume() {
+ super.onResume()
+
+ viewBinding.settingsCacheSize.text = Formatter.formatShortFileSize(context, calculateCache())
+ }
+
+ override fun onDialogDismiss() {
+ viewBinding.settingsCacheSize.text = Formatter.formatShortFileSize(context, calculateCache())
+ }
+
+ private fun setClickListeners() {
+ viewBinding.btnClearCache.setSafeOnClickListener {
+ findNavController().navigate(SettingsFragmentDirections.actionToClearCache(viewBinding.settingsCacheSize.text.toString()))
+ }
+
+ viewBinding.btnChangeLang.setSafeOnClickListener {
+// startActivityWithAnim(LanguageActivity::class.java)
+ }
+
+ viewBinding.btnBack.setOnClickListener {
+ findNavController().popBackStack()
+ }
+ }
+
+ @OptIn(ExperimentalStdlibApi::class)
+ private fun setCurrentLanguage() {
+ val currentLanguage = (activity as? LocalizationActivity)?.getCurrentLanguage() ?: context?.getCurrentLocale()
+ viewBinding.tvCurrentLanguage.text =
+ currentLanguage?.getDisplayName(currentLanguage)?.capitalize(currentLanguage) ?: ""
+ }
+
+ private fun calculateCache(): Long {
+ if (activity == null) return 0L
+
+ val cacheSize: Long
+
+ cacheSize = if (Build.VERSION.SDK_INT >= 26) {
+ val ssm = requireActivity().getSystemService(Context.STORAGE_STATS_SERVICE) as? StorageStatsManager
+ val user = Process.myUserHandle()
+
+ val sm = ssm?.queryStatsForPackage(StorageManager.UUID_DEFAULT, requireActivity().packageName, user)
+
+ sm?.cacheBytes ?: 0L
+ } else {
+ val p = PackageStats(requireActivity().packageName)
+
+ p.cacheSize
+ }
+
+ Logger.i("getCacheBytes ${Formatter.formatShortFileSize(context, cacheSize)}")
+
+ return cacheSize
+ }
+}
diff --git a/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/clear_dialog/ClearCacheDialog.kt b/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/clear_dialog/ClearCacheDialog.kt
index 2235a48..f0a9e32 100644
--- a/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/clear_dialog/ClearCacheDialog.kt
+++ b/feature_navigation/src/main/java/com/majorik/moviebox/feature/navigation/presentation/settings/clear_dialog/ClearCacheDialog.kt
@@ -10,29 +10,16 @@ import android.view.View
import android.view.ViewGroup
import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.DialogFragment
+import androidx.navigation.fragment.navArgs
import com.majorik.library.base.extensions.setSafeOnClickListener
import com.majorik.library.base.utils.FontSpan
import com.majorik.moviebox.feature.navigation.R
import com.majorik.moviebox.R as AppResources
import kotlinx.android.synthetic.main.dialog_clear_cache.*
-class ClearCacheDialog : DialogFragment() {
+class ClearCacheDialog : DialogFragment(R.layout.dialog_clear_cache) {
- private var cacheSize: String = ""
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- cacheSize = arguments?.getString(CACHE_SIZE_ARG) ?: ""
- }
-
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- return inflater.inflate(R.layout.dialog_clear_cache, container, false)
- }
+ private val args: ClearCacheDialogArgs by navArgs()
override fun onStart() {
super.onStart()
@@ -47,7 +34,7 @@ class ClearCacheDialog : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- cache_size.text = getString(R.string.navigation_cache_size_with_format, cacheSize)
+ cache_size.text = getString(R.string.navigation_cache_size_with_format, args.cacheSize ?: "")
setSpannableCacheSizeText()
btn_cancel.setOnClickListener {
@@ -72,7 +59,7 @@ class ClearCacheDialog : DialogFragment() {
AppResources.font.cc_montserrat_semibold
)
),
- cache_size.text.length - cacheSize.length,
+ cache_size.text.length - args.cacheSize.length,
cache_size.text.length,
Spanned.SPAN_EXCLUSIVE_INCLUSIVE
)
@@ -80,15 +67,4 @@ class ClearCacheDialog : DialogFragment() {
}
}
}
-
- companion object {
- const val CACHE_SIZE_ARG = "cache_size"
-
- fun newInstance(cacheSizeFormattedToString: String?) =
- ClearCacheDialog().apply {
- arguments = Bundle().apply {
- putString(CACHE_SIZE_ARG, cacheSizeFormattedToString)
- }
- }
- }
}
diff --git a/feature_navigation/src/main/res/layout/activity_settings.xml b/feature_navigation/src/main/res/layout/fragment_settings.xml
similarity index 92%
rename from feature_navigation/src/main/res/layout/activity_settings.xml
rename to feature_navigation/src/main/res/layout/fragment_settings.xml
index 6fdc652..24b1734 100644
--- a/feature_navigation/src/main/res/layout/activity_settings.xml
+++ b/feature_navigation/src/main/res/layout/fragment_settings.xml
@@ -6,31 +6,38 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
- tools:context="com.majorik.moviebox.feature.navigation.presentation.settings.SettingsActivity">
+ tools:context="com.majorik.moviebox.feature.navigation.presentation.settings.SettingsFragment">
-
+ app:layout_constraintTop_toTopOf="parent">
-
+
+
+
+
+
+
+
+
+
+
+
+