mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Implement nicer UI for migrate list sorting
This commit is contained in:
		@@ -8,7 +8,13 @@ import androidx.compose.foundation.layout.asPaddingValues
 | 
			
		||||
import androidx.compose.foundation.layout.navigationBars
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.lazy.items
 | 
			
		||||
import androidx.compose.material3.Button
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.outlined.ArrowDownward
 | 
			
		||||
import androidx.compose.material.icons.outlined.ArrowUpward
 | 
			
		||||
import androidx.compose.material.icons.outlined.Numbers
 | 
			
		||||
import androidx.compose.material.icons.outlined.SortByAlpha
 | 
			
		||||
import androidx.compose.material3.Icon
 | 
			
		||||
import androidx.compose.material3.IconButton
 | 
			
		||||
import androidx.compose.material3.MaterialTheme
 | 
			
		||||
import androidx.compose.material3.Text
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
@@ -75,25 +81,35 @@ fun MigrateSourceList(
 | 
			
		||||
    ScrollbarLazyColumn(
 | 
			
		||||
        contentPadding = bottomNavPaddingValues + WindowInsets.navigationBars.asPaddingValues() + topPaddingValues,
 | 
			
		||||
    ) {
 | 
			
		||||
        stickyHeader {
 | 
			
		||||
            Row {
 | 
			
		||||
                Button(onClick = onToggleSortingMode) {
 | 
			
		||||
                    Text(sortingMode.toString())
 | 
			
		||||
        stickyHeader(key = "header") {
 | 
			
		||||
            Row(
 | 
			
		||||
                modifier = Modifier
 | 
			
		||||
                    .animateItemPlacement()
 | 
			
		||||
                    .padding(start = horizontalPadding),
 | 
			
		||||
                verticalAlignment = Alignment.CenterVertically,
 | 
			
		||||
            ) {
 | 
			
		||||
                Text(
 | 
			
		||||
                    text = stringResource(R.string.migration_selection_prompt),
 | 
			
		||||
                    modifier = Modifier.weight(1f),
 | 
			
		||||
                    style = MaterialTheme.typography.header,
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
                IconButton(onClick = onToggleSortingMode) {
 | 
			
		||||
                    when (sortingMode) {
 | 
			
		||||
                        SetMigrateSorting.Mode.ALPHABETICAL -> Icon(Icons.Outlined.SortByAlpha, contentDescription = stringResource(R.string.action_sort_alpha))
 | 
			
		||||
                        SetMigrateSorting.Mode.TOTAL -> Icon(Icons.Outlined.Numbers, contentDescription = stringResource(R.string.action_sort_total))
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                Button(onClick = onToggleSortingDirection) {
 | 
			
		||||
                    Text(sortingDirection.toString())
 | 
			
		||||
                IconButton(onClick = onToggleSortingDirection) {
 | 
			
		||||
                    when (sortingDirection) {
 | 
			
		||||
                        SetMigrateSorting.Direction.ASCENDING -> Icon(Icons.Outlined.ArrowUpward, contentDescription = stringResource(R.string.action_asc))
 | 
			
		||||
                        SetMigrateSorting.Direction.DESCENDING -> Icon(Icons.Outlined.ArrowDownward, contentDescription = stringResource(R.string.action_desc))
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        item(key = "title") {
 | 
			
		||||
            Text(
 | 
			
		||||
                text = stringResource(R.string.migration_selection_prompt),
 | 
			
		||||
                modifier = Modifier
 | 
			
		||||
                    .animateItemPlacement()
 | 
			
		||||
                    .padding(horizontal = horizontalPadding, vertical = 8.dp),
 | 
			
		||||
                style = MaterialTheme.typography.header,
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        items(
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ import nucleus.presenter.Presenter
 | 
			
		||||
 | 
			
		||||
abstract class FullComposeController<P : Presenter<*>>(bundle: Bundle? = null) :
 | 
			
		||||
    NucleusController<ComposeControllerBinding, P>(bundle),
 | 
			
		||||
    FullComposeContentController {
 | 
			
		||||
    ComposeContentController {
 | 
			
		||||
 | 
			
		||||
    override fun createBinding(inflater: LayoutInflater) =
 | 
			
		||||
        ComposeControllerBinding.inflate(inflater)
 | 
			
		||||
@@ -31,7 +31,7 @@ abstract class FullComposeController<P : Presenter<*>>(bundle: Bundle? = null) :
 | 
			
		||||
 */
 | 
			
		||||
abstract class BasicFullComposeController(bundle: Bundle? = null) :
 | 
			
		||||
    BaseController<ComposeControllerBinding>(bundle),
 | 
			
		||||
    FullComposeContentController {
 | 
			
		||||
    ComposeContentController {
 | 
			
		||||
 | 
			
		||||
    override fun createBinding(inflater: LayoutInflater) =
 | 
			
		||||
        ComposeControllerBinding.inflate(inflater)
 | 
			
		||||
@@ -47,6 +47,6 @@ abstract class BasicFullComposeController(bundle: Bundle? = null) :
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface FullComposeContentController {
 | 
			
		||||
interface ComposeContentController {
 | 
			
		||||
    @Composable fun ComposeContent()
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -41,9 +41,9 @@ import eu.kanade.tachiyomi.data.updater.AppUpdateResult
 | 
			
		||||
import eu.kanade.tachiyomi.databinding.MainActivityBinding
 | 
			
		||||
import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.ComposeContentController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.FabController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.FullComposeContentController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.RootController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.pushController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.setRoot
 | 
			
		||||
@@ -599,9 +599,9 @@ class MainActivity : BaseActivity() {
 | 
			
		||||
            binding.fabLayout.rootFab.hide()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val isFullComposeController = internalTo is FullComposeContentController
 | 
			
		||||
        binding.appbar.isVisible = !isFullComposeController
 | 
			
		||||
        binding.controllerContainer.enableScrollingBehavior(!isFullComposeController)
 | 
			
		||||
        val isComposeController = internalTo is ComposeContentController
 | 
			
		||||
        binding.appbar.isVisible = !isComposeController
 | 
			
		||||
        binding.controllerContainer.enableScrollingBehavior(!isComposeController)
 | 
			
		||||
 | 
			
		||||
        if (!isTablet()) {
 | 
			
		||||
            // Save lift state
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user