diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/SettingsModule.kt b/app/src/main/java/org/koitharu/kotatsu/settings/SettingsModule.kt index a888ad37b..d8b2c3b0e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/SettingsModule.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/SettingsModule.kt @@ -35,5 +35,5 @@ val settingsModule viewModel { OnboardViewModel(get()) } viewModel { SourcesSettingsViewModel(get()) } viewModel { NewSourcesViewModel(get()) } - viewModel { ToolsViewModel(get()) } - } \ No newline at end of file + viewModel { ToolsViewModel(get(), get()) } + } diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsFragment.kt index 6f4ec3ca9..a9987c6c1 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsFragment.kt @@ -13,6 +13,7 @@ import androidx.core.graphics.Insets import androidx.core.view.isVisible import androidx.core.view.updatePadding import androidx.core.widget.TextViewCompat +import com.google.android.material.R as materialR import com.google.android.material.color.MaterialColors import org.koin.androidx.viewmodel.ext.android.viewModel import org.koitharu.kotatsu.R @@ -25,10 +26,11 @@ import org.koitharu.kotatsu.settings.SettingsActivity import org.koitharu.kotatsu.settings.tools.model.StorageUsage import org.koitharu.kotatsu.utils.FileSize import org.koitharu.kotatsu.utils.ext.getThemeColor -import com.google.android.material.R as materialR - -class ToolsFragment : BaseFragment(), CompoundButton.OnCheckedChangeListener, View.OnClickListener { +class ToolsFragment : + BaseFragment(), + CompoundButton.OnCheckedChangeListener, + View.OnClickListener { private var updateChecker: AppUpdateChecker? = null private val viewModel by viewModel() @@ -43,8 +45,11 @@ class ToolsFragment : BaseFragment(), CompoundButton.OnChe binding.buttonDownloads.setOnClickListener(this) binding.cardUpdate.root.setOnClickListener(this) binding.cardUpdate.buttonDownload.setOnClickListener(this) - binding.incognito.setOnCheckedChangeListener(this) + binding.switchIncognito.setOnCheckedChangeListener(this) + viewModel.isIncognitoModeEnabled.observe(viewLifecycleOwner) { + binding.switchIncognito.isChecked = it + } viewModel.storageUsage.observe(viewLifecycleOwner, ::onStorageUsageChanged) } @@ -56,7 +61,7 @@ class ToolsFragment : BaseFragment(), CompoundButton.OnChe } override fun onCheckedChanged(button: CompoundButton?, isChecked: Boolean) { - // TODO Incognito enabling logic + viewModel.toggleIncognitoMode(isChecked) } override fun onWindowInsetsChanged(insets: Insets) { @@ -77,19 +82,19 @@ class ToolsFragment : BaseFragment(), CompoundButton.OnChe val pattern = getString(R.string.memory_usage_pattern) labelStorage.text = pattern.format( FileSize.BYTES.format(root.context, usage.savedManga.bytes), - getString(R.string.saved_manga) + getString(R.string.saved_manga), ) labelPagesCache.text = pattern.format( FileSize.BYTES.format(root.context, usage.pagesCache.bytes), - getString(R.string.pages_cache) + getString(R.string.pages_cache), ) labelOtherCache.text = pattern.format( FileSize.BYTES.format(root.context, usage.otherCache.bytes), - getString(R.string.other_cache) + getString(R.string.other_cache), ) labelAvailable.text = pattern.format( FileSize.BYTES.format(root.context, usage.available.bytes), - getString(R.string.available) + getString(R.string.available), ) TextViewCompat.setCompoundDrawableTintList(labelStorage, ColorStateList.valueOf(storageSegment.color)) TextViewCompat.setCompoundDrawableTintList(labelPagesCache, ColorStateList.valueOf(pagesSegment.color)) @@ -115,4 +120,4 @@ class ToolsFragment : BaseFragment(), CompoundButton.OnChe fun newInstance() = ToolsFragment() } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsViewModel.kt index a20393e69..1929b63ff 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsViewModel.kt @@ -5,12 +5,15 @@ import androidx.lifecycle.liveData import androidx.lifecycle.viewModelScope import kotlinx.coroutines.Dispatchers import org.koitharu.kotatsu.base.ui.BaseViewModel +import org.koitharu.kotatsu.core.prefs.AppSettings +import org.koitharu.kotatsu.core.prefs.observeAsLiveData import org.koitharu.kotatsu.local.data.CacheDir import org.koitharu.kotatsu.local.data.LocalStorageManager import org.koitharu.kotatsu.settings.tools.model.StorageUsage class ToolsViewModel( private val storageManager: LocalStorageManager, + private val settings: AppSettings, ) : BaseViewModel() { val storageUsage: LiveData = liveData( @@ -19,6 +22,16 @@ class ToolsViewModel( emit(collectStorageUsage()) } + val isIncognitoModeEnabled = settings.observeAsLiveData( + context = viewModelScope.coroutineContext + Dispatchers.Default, + key = AppSettings.KEY_INCOGNITO_MODE, + valueProducer = { isIncognitoModeEnabled }, + ) + + fun toggleIncognitoMode(isEnabled: Boolean) { + settings.isIncognitoModeEnabled = isEnabled + } + private suspend fun collectStorageUsage(): StorageUsage { val pagesCacheSize = storageManager.computeCacheSize(CacheDir.PAGES) val otherCacheSize = storageManager.computeCacheSize() - pagesCacheSize @@ -29,16 +42,19 @@ class ToolsViewModel( savedManga = StorageUsage.Item( bytes = storageSize, percent = (storageSize.toDouble() / totalBytes).toFloat(), - ), pagesCache = StorageUsage.Item( + ), + pagesCache = StorageUsage.Item( bytes = pagesCacheSize, percent = (pagesCacheSize.toDouble() / totalBytes).toFloat(), - ), otherCache = StorageUsage.Item( + ), + otherCache = StorageUsage.Item( bytes = otherCacheSize, percent = (otherCacheSize.toDouble() / totalBytes).toFloat(), - ), available = StorageUsage.Item( + ), + available = StorageUsage.Item( bytes = availableSpace, percent = (availableSpace.toDouble() / totalBytes).toFloat(), - ) + ), ) } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/fragment_tools.xml b/app/src/main/res/layout/fragment_tools.xml index df6cd6c81..3e9a5694e 100644 --- a/app/src/main/res/layout/fragment_tools.xml +++ b/app/src/main/res/layout/fragment_tools.xml @@ -39,16 +39,17 @@ android:layout_marginVertical="@dimen/margin_small" /> + android:textColor="?attr/colorControlNormal" /> Removed from \"%s\" Options Content not found or removed + Incognito mode