mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 22:37:56 +01:00 
			
		
		
		
	More settings stuff (#8226)
* title size * move about screen to settings keeping shortcut inside more screen * more * shrink texts * scrollable create backup dialog choices * search back button * cleanups * delay changes that require activity recreate * lessen horizontal padding
This commit is contained in:
		| @@ -1,86 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.ui.more | ||||
|  | ||||
| import androidx.compose.runtime.Composable | ||||
| import eu.kanade.domain.ui.UiPreferences | ||||
| import eu.kanade.presentation.more.about.AboutScreen | ||||
| import eu.kanade.tachiyomi.BuildConfig | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.updater.AppUpdateChecker | ||||
| import eu.kanade.tachiyomi.data.updater.AppUpdateResult | ||||
| import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.pushController | ||||
| import eu.kanade.tachiyomi.util.lang.launchIO | ||||
| import eu.kanade.tachiyomi.util.lang.toDateTimestampString | ||||
| import eu.kanade.tachiyomi.util.lang.withUIContext | ||||
| import eu.kanade.tachiyomi.util.system.logcat | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| import logcat.LogPriority | ||||
| import uy.kohesive.injekt.injectLazy | ||||
| import java.text.DateFormat | ||||
| import java.text.SimpleDateFormat | ||||
| import java.util.Locale | ||||
| import java.util.TimeZone | ||||
|  | ||||
| class AboutController : BasicFullComposeController() { | ||||
|  | ||||
|     private val preferences: UiPreferences by injectLazy() | ||||
|     private val updateChecker by lazy { AppUpdateChecker() } | ||||
|  | ||||
|     @Composable | ||||
|     override fun ComposeContent() { | ||||
|         AboutScreen( | ||||
|             navigateUp = router::popCurrentController, | ||||
|             checkVersion = this::checkVersion, | ||||
|             getFormattedBuildTime = this::getFormattedBuildTime, | ||||
|             onClickLicenses = { router.pushController(LicensesController()) }, | ||||
|         ) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Checks version and shows a user prompt if an update is available. | ||||
|      */ | ||||
|     private fun checkVersion() { | ||||
|         if (activity == null) return | ||||
|  | ||||
|         activity!!.toast(R.string.update_check_look_for_updates) | ||||
|  | ||||
|         viewScope.launchIO { | ||||
|             try { | ||||
|                 val result = updateChecker.checkForUpdate(activity!!, isUserPrompt = true) | ||||
|                 withUIContext { | ||||
|                     when (result) { | ||||
|                         is AppUpdateResult.NewUpdate -> { | ||||
|                             NewUpdateDialogController(result).showDialog(router) | ||||
|                         } | ||||
|                         is AppUpdateResult.NoNewUpdate -> { | ||||
|                             activity?.toast(R.string.update_check_no_new_updates) | ||||
|                         } | ||||
|                         else -> {} | ||||
|                     } | ||||
|                 } | ||||
|             } catch (e: Exception) { | ||||
|                 withUIContext { activity?.toast(e.message) } | ||||
|                 logcat(LogPriority.ERROR, e) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun getFormattedBuildTime(): String { | ||||
|         return try { | ||||
|             val inputDf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'", Locale.US) | ||||
|             inputDf.timeZone = TimeZone.getTimeZone("UTC") | ||||
|             val buildTime = inputDf.parse(BuildConfig.BUILD_TIME) | ||||
|  | ||||
|             val outputDf = DateFormat.getDateTimeInstance( | ||||
|                 DateFormat.MEDIUM, | ||||
|                 DateFormat.SHORT, | ||||
|                 Locale.getDefault(), | ||||
|             ) | ||||
|             outputDf.timeZone = TimeZone.getDefault() | ||||
|  | ||||
|             buildTime!!.toDateTimestampString(UiPreferences.dateFormat(preferences.dateFormat().get())) | ||||
|         } catch (e: Exception) { | ||||
|             BuildConfig.BUILD_TIME | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -1,15 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.ui.more | ||||
|  | ||||
| import androidx.compose.runtime.Composable | ||||
| import eu.kanade.presentation.more.about.LicensesScreen | ||||
| import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController | ||||
|  | ||||
| class LicensesController : BasicFullComposeController() { | ||||
|  | ||||
|     @Composable | ||||
|     override fun ComposeContent() { | ||||
|         LicensesScreen( | ||||
|             navigateUp = router::popCurrentController, | ||||
|         ) | ||||
|     } | ||||
| } | ||||
| @@ -21,9 +21,9 @@ class MoreController : | ||||
|             presenter = presenter, | ||||
|             onClickDownloadQueue = { router.pushController(DownloadController()) }, | ||||
|             onClickCategories = { router.pushController(CategoryController()) }, | ||||
|             onClickBackupAndRestore = { router.pushController(SettingsMainController(toBackupScreen = true)) }, | ||||
|             onClickBackupAndRestore = { router.pushController(SettingsMainController.toBackupScreen()) }, | ||||
|             onClickSettings = { router.pushController(SettingsMainController()) }, | ||||
|             onClickAbout = { router.pushController(AboutController()) }, | ||||
|             onClickAbout = { router.pushController(SettingsMainController.toAboutScreen()) }, | ||||
|         ) | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -9,6 +9,7 @@ import cafe.adriel.voyager.core.stack.StackEvent | ||||
| import cafe.adriel.voyager.navigator.Navigator | ||||
| import cafe.adriel.voyager.transitions.ScreenTransition | ||||
| import eu.kanade.presentation.components.TwoPanelBox | ||||
| import eu.kanade.presentation.more.settings.screen.AboutScreen | ||||
| import eu.kanade.presentation.more.settings.screen.SettingsBackupScreen | ||||
| import eu.kanade.presentation.more.settings.screen.SettingsGeneralScreen | ||||
| import eu.kanade.presentation.more.settings.screen.SettingsMainScreen | ||||
| @@ -19,14 +20,10 @@ import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController | ||||
| import soup.compose.material.motion.animation.materialSharedAxisX | ||||
| import soup.compose.material.motion.animation.rememberSlideDistance | ||||
|  | ||||
| class SettingsMainController : BasicFullComposeController { | ||||
|  | ||||
|     @Suppress("unused") | ||||
|     constructor(bundle: Bundle) : this(bundle.getBoolean(TO_BACKUP_SCREEN)) | ||||
|  | ||||
|     constructor(toBackupScreen: Boolean = false) : super(bundleOf(TO_BACKUP_SCREEN to toBackupScreen)) | ||||
| class SettingsMainController(bundle: Bundle = bundleOf()) : BasicFullComposeController(bundle) { | ||||
|  | ||||
|     private val toBackupScreen = args.getBoolean(TO_BACKUP_SCREEN) | ||||
|     private val toAboutScreen = args.getBoolean(TO_ABOUT_SCREEN) | ||||
|  | ||||
|     @Composable | ||||
|     override fun ComposeContent() { | ||||
| @@ -34,7 +31,13 @@ class SettingsMainController : BasicFullComposeController { | ||||
|             val widthSizeClass = calculateWindowWidthSizeClass() | ||||
|             if (widthSizeClass == WindowWidthSizeClass.Compact) { | ||||
|                 Navigator( | ||||
|                     screen = if (toBackupScreen) SettingsBackupScreen() else SettingsMainScreen, | ||||
|                     screen = if (toBackupScreen) { | ||||
|                         SettingsBackupScreen() | ||||
|                     } else if (toAboutScreen) { | ||||
|                         AboutScreen() | ||||
|                     } else { | ||||
|                         SettingsMainScreen | ||||
|                     }, | ||||
|                     content = { | ||||
|                         CompositionLocalProvider(LocalBackPress provides this::back) { | ||||
|                             val slideDistance = rememberSlideDistance() | ||||
| @@ -52,7 +55,13 @@ class SettingsMainController : BasicFullComposeController { | ||||
|                 ) | ||||
|             } else { | ||||
|                 Navigator( | ||||
|                     screen = if (toBackupScreen) SettingsBackupScreen() else SettingsGeneralScreen(), | ||||
|                     screen = if (toBackupScreen) { | ||||
|                         SettingsBackupScreen() | ||||
|                     } else if (toAboutScreen) { | ||||
|                         AboutScreen() | ||||
|                     } else { | ||||
|                         SettingsGeneralScreen() | ||||
|                     }, | ||||
|                 ) { | ||||
|                     TwoPanelBox( | ||||
|                         startContent = { | ||||
| @@ -81,6 +90,17 @@ class SettingsMainController : BasicFullComposeController { | ||||
|     private fun back() { | ||||
|         activity?.onBackPressed() | ||||
|     } | ||||
|  | ||||
|     companion object { | ||||
|         fun toBackupScreen(): SettingsMainController { | ||||
|             return SettingsMainController(bundleOf(TO_BACKUP_SCREEN to true)) | ||||
|         } | ||||
|  | ||||
|         fun toAboutScreen(): SettingsMainController { | ||||
|             return SettingsMainController(bundleOf(TO_ABOUT_SCREEN to true)) | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| private const val TO_BACKUP_SCREEN = "to_backup_screen" | ||||
| private const val TO_ABOUT_SCREEN = "to_about_screen" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user