Ui updates
This commit is contained in:
@@ -6,24 +6,23 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.FragmentManager
|
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 com.google.android.material.slider.Slider
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
import org.koitharu.kotatsu.base.ui.AlertDialogFragment
|
import org.koitharu.kotatsu.base.ui.BaseBottomSheet
|
||||||
import org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup
|
|
||||||
import org.koitharu.kotatsu.core.prefs.AppSettings
|
import org.koitharu.kotatsu.core.prefs.AppSettings
|
||||||
import org.koitharu.kotatsu.core.prefs.ListMode
|
import org.koitharu.kotatsu.core.prefs.ListMode
|
||||||
import org.koitharu.kotatsu.databinding.DialogListModeBinding
|
import org.koitharu.kotatsu.databinding.DialogListModeBinding
|
||||||
import org.koitharu.kotatsu.utils.ext.setValueRounded
|
import org.koitharu.kotatsu.utils.ext.setValueRounded
|
||||||
import org.koitharu.kotatsu.utils.progress.IntPercentLabelFormatter
|
import org.koitharu.kotatsu.utils.progress.IntPercentLabelFormatter
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class ListModeSelectDialog :
|
class ListModeBottomSheet :
|
||||||
AlertDialogFragment<DialogListModeBinding>(),
|
BaseBottomSheet<DialogListModeBinding>(),
|
||||||
CheckableButtonGroup.OnCheckedChangeListener,
|
Slider.OnChangeListener,
|
||||||
Slider.OnChangeListener {
|
MaterialButtonToggleGroup.OnButtonCheckedListener {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var settings: AppSettings
|
lateinit var settings: AppSettings
|
||||||
@@ -33,13 +32,6 @@ class ListModeSelectDialog :
|
|||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
) = DialogListModeBinding.inflate(inflater, container, false)
|
) = 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?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
val mode = settings.listMode
|
val mode = settings.listMode
|
||||||
@@ -53,10 +45,10 @@ class ListModeSelectDialog :
|
|||||||
binding.sliderGrid.setValueRounded(settings.gridSize.toFloat())
|
binding.sliderGrid.setValueRounded(settings.gridSize.toFloat())
|
||||||
binding.sliderGrid.addOnChangeListener(this)
|
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) {
|
val mode = when (checkedId) {
|
||||||
R.id.button_list -> ListMode.LIST
|
R.id.button_list -> ListMode.LIST
|
||||||
R.id.button_list_detailed -> ListMode.DETAILED_LIST
|
R.id.button_list_detailed -> ListMode.DETAILED_LIST
|
||||||
@@ -78,6 +70,6 @@ class ListModeSelectDialog :
|
|||||||
|
|
||||||
private const val TAG = "ListModeSelectDialog"
|
private const val TAG = "ListModeSelectDialog"
|
||||||
|
|
||||||
fun show(fm: FragmentManager) = ListModeSelectDialog().show(fm, TAG)
|
fun show(fm: FragmentManager) = ListModeBottomSheet().show(fm, TAG)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,9 +17,10 @@ class MangaListMenuProvider(
|
|||||||
|
|
||||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) {
|
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) {
|
||||||
R.id.action_list_mode -> {
|
R.id.action_list_mode -> {
|
||||||
ListModeSelectDialog.show(fragment.childFragmentManager)
|
ListModeBottomSheet.show(fragment.childFragmentManager)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,11 +152,7 @@ class MainActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onFragmentChanged(fragment: Fragment, fromUser: Boolean) {
|
override fun onFragmentChanged(fragment: Fragment, fromUser: Boolean) {
|
||||||
if (fragment is ShelfFragment) {
|
adjustFabVisibility(topFragment = fragment)
|
||||||
binding.fab?.show()
|
|
||||||
} else {
|
|
||||||
binding.fab?.hide()
|
|
||||||
}
|
|
||||||
if (fromUser) {
|
if (fromUser) {
|
||||||
binding.appbar.setExpanded(true)
|
binding.appbar.setExpanded(true)
|
||||||
}
|
}
|
||||||
@@ -329,18 +325,18 @@ class MainActivity :
|
|||||||
topFragment: Fragment? = navigationDelegate.primaryFragment,
|
topFragment: Fragment? = navigationDelegate.primaryFragment,
|
||||||
isSearchOpened: Boolean = isSearchOpened(),
|
isSearchOpened: Boolean = isSearchOpened(),
|
||||||
) {
|
) {
|
||||||
val fab = binding.fab
|
val fab = binding.fab ?: return
|
||||||
if (
|
if (
|
||||||
isResumeEnabled &&
|
isResumeEnabled &&
|
||||||
!actionModeDelegate.isActionModeStarted &&
|
!actionModeDelegate.isActionModeStarted &&
|
||||||
!isSearchOpened &&
|
!isSearchOpened &&
|
||||||
topFragment is ShelfFragment
|
topFragment is ShelfFragment
|
||||||
) {
|
) {
|
||||||
if (fab?.isVisible == false) {
|
if (!fab.isVisible) {
|
||||||
fab.show()
|
fab.show()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (fab?.isVisible == true) {
|
if (fab.isVisible) {
|
||||||
fab.hide()
|
fab.hide()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:animateLayoutChanges="true"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup
|
|
||||||
android:id="@+id/checkableGroup"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_margin="16dp"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:weightSum="3">
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/button_list"
|
|
||||||
style="@style/Widget.Kotatsu.ToggleButton"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:text="@string/list"
|
|
||||||
app:icon="@drawable/ic_list" />
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/button_list_detailed"
|
|
||||||
style="@style/Widget.Kotatsu.ToggleButton"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="12dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:text="@string/detailed_list"
|
|
||||||
app:icon="@drawable/ic_list_detailed" />
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/button_grid"
|
|
||||||
style="@style/Widget.Kotatsu.ToggleButton"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:text="@string/grid"
|
|
||||||
app:icon="@drawable/ic_grid" />
|
|
||||||
|
|
||||||
</org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/textView_grid_title"
|
|
||||||
style="?materialAlertDialogTitleTextStyle"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingLeft="?attr/dialogPreferredPadding"
|
|
||||||
android:paddingRight="?attr/dialogPreferredPadding"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:text="@string/grid_size"
|
|
||||||
android:visibility="gone"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<com.google.android.material.slider.Slider
|
|
||||||
android:id="@+id/slider_grid"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="16dp"
|
|
||||||
android:stepSize="5"
|
|
||||||
android:valueFrom="50"
|
|
||||||
android:valueTo="150"
|
|
||||||
android:visibility="gone"
|
|
||||||
app:labelBehavior="floating"
|
|
||||||
app:tickVisible="false"
|
|
||||||
tools:value="100"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
@@ -1,75 +1,103 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<ScrollView
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
android:animateLayoutChanges="true"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<org.koitharu.kotatsu.base.ui.widgets.BottomSheetHeaderBar
|
||||||
|
android:id="@+id/headerBar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:animateLayoutChanges="true"
|
app:title="@string/options" />
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/checkableGroup"
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginVertical="16dp"
|
android:orientation="vertical"
|
||||||
android:layout_marginHorizontal="?attr/dialogPreferredPadding"
|
android:paddingBottom="@dimen/margin_normal">
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<TextView
|
||||||
android:id="@+id/button_list"
|
|
||||||
style="@style/Widget.Kotatsu.ToggleButton"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/list"
|
android:layout_marginHorizontal="@dimen/margin_normal"
|
||||||
app:icon="@drawable/ic_list" />
|
android:layout_marginTop="@dimen/margin_normal"
|
||||||
|
android:text="@string/list_mode"
|
||||||
|
android:textAppearance="?textAppearanceTitleSmall" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButtonToggleGroup
|
||||||
android:id="@+id/button_list_detailed"
|
android:id="@+id/checkableGroup"
|
||||||
style="@style/Widget.Kotatsu.ToggleButton"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/detailed_list"
|
android:layout_marginHorizontal="@dimen/margin_normal"
|
||||||
app:icon="@drawable/ic_list_detailed" />
|
android:layout_marginTop="@dimen/margin_small"
|
||||||
|
android:baselineAligned="false"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
app:selectionRequired="true"
|
||||||
|
app:singleSelection="true">
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/button_grid"
|
android:id="@+id/button_list"
|
||||||
style="@style/Widget.Kotatsu.ToggleButton"
|
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/list"
|
||||||
|
app:icon="@drawable/ic_list" />
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/button_list_detailed"
|
||||||
|
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/detailed_list"
|
||||||
|
app:icon="@drawable/ic_list_detailed" />
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/button_grid"
|
||||||
|
style="@style/Widget.Kotatsu.ToggleButton.Vertical"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/grid"
|
||||||
|
app:icon="@drawable/ic_grid" />
|
||||||
|
|
||||||
|
</com.google.android.material.button.MaterialButtonToggleGroup>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textView_grid_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/grid"
|
android:layout_marginHorizontal="@dimen/margin_normal"
|
||||||
app:icon="@drawable/ic_grid" />
|
android:layout_marginTop="@dimen/margin_normal"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="@string/grid_size"
|
||||||
|
android:textAppearance="?textAppearanceTitleSmall"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
</org.koitharu.kotatsu.base.ui.widgets.CheckableButtonGroup>
|
<com.google.android.material.slider.Slider
|
||||||
|
android:id="@+id/slider_grid"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="16dp"
|
||||||
|
android:stepSize="5"
|
||||||
|
android:valueFrom="50"
|
||||||
|
android:valueTo="150"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:labelBehavior="floating"
|
||||||
|
app:tickVisible="false"
|
||||||
|
tools:value="100"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
<TextView
|
</LinearLayout>
|
||||||
android:id="@+id/textView_grid_title"
|
</androidx.core.widget.NestedScrollView>
|
||||||
style="?materialAlertDialogTitleTextStyle"
|
</LinearLayout>
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingHorizontal="?attr/dialogPreferredPadding"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:text="@string/grid_size"
|
|
||||||
android:visibility="gone"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<com.google.android.material.slider.Slider
|
|
||||||
android:id="@+id/slider_grid"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="16dp"
|
|
||||||
android:stepSize="5"
|
|
||||||
android:valueFrom="50"
|
|
||||||
android:valueTo="150"
|
|
||||||
android:visibility="gone"
|
|
||||||
app:labelBehavior="floating"
|
|
||||||
app:tickVisible="false"
|
|
||||||
tools:value="100"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</ScrollView>
|
|
||||||
|
|||||||
Reference in New Issue
Block a user