diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeSelectDialog.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeBottomSheet.kt similarity index 72% rename from app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeSelectDialog.kt rename to app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeBottomSheet.kt index 3728c57b2..042d30bc3 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeSelectDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeBottomSheet.kt @@ -6,24 +6,23 @@ import android.view.View import android.view.ViewGroup import androidx.core.view.isVisible import androidx.fragment.app.FragmentManager -import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.button.MaterialButtonToggleGroup import com.google.android.material.slider.Slider import dagger.hilt.android.AndroidEntryPoint -import javax.inject.Inject import org.koitharu.kotatsu.R -import org.koitharu.kotatsu.base.ui.AlertDialogFragment -import org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup +import org.koitharu.kotatsu.base.ui.BaseBottomSheet import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.prefs.ListMode import org.koitharu.kotatsu.databinding.DialogListModeBinding import org.koitharu.kotatsu.utils.ext.setValueRounded import org.koitharu.kotatsu.utils.progress.IntPercentLabelFormatter +import javax.inject.Inject @AndroidEntryPoint -class ListModeSelectDialog : - AlertDialogFragment(), - CheckableButtonGroup.OnCheckedChangeListener, - Slider.OnChangeListener { +class ListModeBottomSheet : + BaseBottomSheet(), + Slider.OnChangeListener, + MaterialButtonToggleGroup.OnButtonCheckedListener { @Inject lateinit var settings: AppSettings @@ -33,13 +32,6 @@ class ListModeSelectDialog : container: ViewGroup?, ) = DialogListModeBinding.inflate(inflater, container, false) - override fun onBuildDialog(builder: MaterialAlertDialogBuilder): MaterialAlertDialogBuilder { - return super.onBuildDialog(builder) - .setTitle(R.string.list_mode) - .setPositiveButton(R.string.done, null) - .setCancelable(true) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val mode = settings.listMode @@ -53,10 +45,10 @@ class ListModeSelectDialog : binding.sliderGrid.setValueRounded(settings.gridSize.toFloat()) binding.sliderGrid.addOnChangeListener(this) - binding.checkableGroup.onCheckedChangeListener = this + binding.checkableGroup.addOnButtonCheckedListener(this) } - override fun onCheckedChanged(group: CheckableButtonGroup, checkedId: Int) { + override fun onButtonChecked(group: MaterialButtonToggleGroup?, checkedId: Int, isChecked: Boolean) { val mode = when (checkedId) { R.id.button_list -> ListMode.LIST R.id.button_list_detailed -> ListMode.DETAILED_LIST @@ -78,6 +70,6 @@ class ListModeSelectDialog : private const val TAG = "ListModeSelectDialog" - fun show(fm: FragmentManager) = ListModeSelectDialog().show(fm, TAG) + fun show(fm: FragmentManager) = ListModeBottomSheet().show(fm, TAG) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListMenuProvider.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListMenuProvider.kt index 592ed9369..fcc52e1d2 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListMenuProvider.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListMenuProvider.kt @@ -17,9 +17,10 @@ class MangaListMenuProvider( override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) { R.id.action_list_mode -> { - ListModeSelectDialog.show(fragment.childFragmentManager) + ListModeBottomSheet.show(fragment.childFragmentManager) true } + else -> false } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt index 03b0a90c5..0a036c51c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -152,11 +152,7 @@ class MainActivity : } override fun onFragmentChanged(fragment: Fragment, fromUser: Boolean) { - if (fragment is ShelfFragment) { - binding.fab?.show() - } else { - binding.fab?.hide() - } + adjustFabVisibility(topFragment = fragment) if (fromUser) { binding.appbar.setExpanded(true) } @@ -329,18 +325,18 @@ class MainActivity : topFragment: Fragment? = navigationDelegate.primaryFragment, isSearchOpened: Boolean = isSearchOpened(), ) { - val fab = binding.fab + val fab = binding.fab ?: return if ( isResumeEnabled && !actionModeDelegate.isActionModeStarted && !isSearchOpened && topFragment is ShelfFragment ) { - if (fab?.isVisible == false) { + if (!fab.isVisible) { fab.show() } } else { - if (fab?.isVisible == true) { + if (fab.isVisible) { fab.hide() } } diff --git a/app/src/main/res/layout-land/dialog_list_mode.xml b/app/src/main/res/layout-land/dialog_list_mode.xml deleted file mode 100644 index f103a0ac3..000000000 --- a/app/src/main/res/layout-land/dialog_list_mode.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_list_mode.xml b/app/src/main/res/layout/dialog_list_mode.xml index af859eb04..3c32a3fc9 100644 --- a/app/src/main/res/layout/dialog_list_mode.xml +++ b/app/src/main/res/layout/dialog_list_mode.xml @@ -1,75 +1,103 @@ - + android:layout_height="wrap_content" + android:animateLayoutChanges="true" + android:orientation="vertical"> - + app:title="@string/options" /> - + + + android:orientation="vertical" + android:paddingBottom="@dimen/margin_normal"> - + android:layout_marginHorizontal="@dimen/margin_normal" + android:layout_marginTop="@dimen/margin_normal" + android:text="@string/list_mode" + android:textAppearance="?textAppearanceTitleSmall" /> - + android:layout_marginHorizontal="@dimen/margin_normal" + android:layout_marginTop="@dimen/margin_small" + android:baselineAligned="false" + android:orientation="horizontal" + app:selectionRequired="true" + app:singleSelection="true"> - + - + - + - + + + + + - - + + +