style: improve layout heirarchy
Further improve the layout heirarchy, shrinking some items so that the layout is more compact and scrollable.
This commit is contained in:
parent
1f9d23863f
commit
21a24f2496
13 changed files with 40 additions and 43 deletions
|
@ -33,7 +33,7 @@ import androidx.fragment.app.activityViewModels
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import org.oxycblt.auxio.MainActivity
|
import org.oxycblt.auxio.MainActivity
|
||||||
import org.oxycblt.auxio.R
|
import org.oxycblt.auxio.R
|
||||||
import org.oxycblt.auxio.databinding.DialogBlacklistBinding
|
import org.oxycblt.auxio.databinding.DialogExcludedBinding
|
||||||
import org.oxycblt.auxio.logD
|
import org.oxycblt.auxio.logD
|
||||||
import org.oxycblt.auxio.playback.PlaybackViewModel
|
import org.oxycblt.auxio.playback.PlaybackViewModel
|
||||||
import org.oxycblt.auxio.settings.ui.LifecycleDialog
|
import org.oxycblt.auxio.settings.ui.LifecycleDialog
|
||||||
|
@ -56,7 +56,7 @@ class ExcludedDialog : LifecycleDialog() {
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
val binding = DialogBlacklistBinding.inflate(inflater)
|
val binding = DialogExcludedBinding.inflate(inflater)
|
||||||
|
|
||||||
val adapter = ExcludedEntryAdapter { path ->
|
val adapter = ExcludedEntryAdapter { path ->
|
||||||
blacklistModel.removePath(path)
|
blacklistModel.removePath(path)
|
||||||
|
@ -68,7 +68,7 @@ class ExcludedDialog : LifecycleDialog() {
|
||||||
|
|
||||||
// --- UI SETUP ---
|
// --- UI SETUP ---
|
||||||
|
|
||||||
binding.blacklistRecycler.adapter = adapter
|
binding.excludedRecycler.adapter = adapter
|
||||||
|
|
||||||
// Now that the dialog exists, we get the view manually when the dialog is shown
|
// Now that the dialog exists, we get the view manually when the dialog is shown
|
||||||
// and override its click-listener so that the dialog does not auto-dismiss when we
|
// and override its click-listener so that the dialog does not auto-dismiss when we
|
||||||
|
@ -95,7 +95,7 @@ class ExcludedDialog : LifecycleDialog() {
|
||||||
blacklistModel.paths.observe(viewLifecycleOwner) { paths ->
|
blacklistModel.paths.observe(viewLifecycleOwner) { paths ->
|
||||||
adapter.submitList(paths)
|
adapter.submitList(paths)
|
||||||
|
|
||||||
binding.blacklistEmptyText.isVisible = paths.isEmpty()
|
binding.excludedEmpty.isVisible = paths.isEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
logD("Dialog created.")
|
logD("Dialog created.")
|
||||||
|
@ -104,7 +104,7 @@ class ExcludedDialog : LifecycleDialog() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onConfigDialog(builder: AlertDialog.Builder) {
|
override fun onConfigDialog(builder: AlertDialog.Builder) {
|
||||||
builder.setTitle(R.string.set_blacklist)
|
builder.setTitle(R.string.set_excluded)
|
||||||
|
|
||||||
// Dont set the click listener here, we do some custom black magic in onCreateView instead.
|
// Dont set the click listener here, we do some custom black magic in onCreateView instead.
|
||||||
builder.setNeutralButton(R.string.lbl_add, null)
|
builder.setNeutralButton(R.string.lbl_add, null)
|
||||||
|
|
|
@ -21,7 +21,7 @@ package org.oxycblt.auxio.excluded
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import org.oxycblt.auxio.databinding.ItemBlacklistEntryBinding
|
import org.oxycblt.auxio.databinding.ItemExcludedDirBinding
|
||||||
import org.oxycblt.auxio.inflater
|
import org.oxycblt.auxio.inflater
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,7 +36,7 @@ class ExcludedEntryAdapter(
|
||||||
override fun getItemCount() = paths.size
|
override fun getItemCount() = paths.size
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
return ViewHolder(ItemBlacklistEntryBinding.inflate(parent.context.inflater))
|
return ViewHolder(ItemExcludedDirBinding.inflate(parent.context.inflater))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
|
@ -50,7 +50,7 @@ class ExcludedEntryAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class ViewHolder(
|
inner class ViewHolder(
|
||||||
private val binding: ItemBlacklistEntryBinding
|
private val binding: ItemExcludedDirBinding
|
||||||
) : RecyclerView.ViewHolder(binding.root) {
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
init {
|
init {
|
||||||
binding.root.layoutParams = RecyclerView.LayoutParams(
|
binding.root.layoutParams = RecyclerView.LayoutParams(
|
||||||
|
@ -59,9 +59,9 @@ class ExcludedEntryAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun bind(path: String) {
|
fun bind(path: String) {
|
||||||
binding.blacklistTitle.text = path
|
binding.excludedPath.text = path
|
||||||
binding.blacklistTitle.requestLayout()
|
binding.excludedPath.requestLayout()
|
||||||
binding.blacklistClear.setOnClickListener {
|
binding.excludedClear.setOnClickListener {
|
||||||
onClear(path)
|
onClear(path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
android:paddingTop="@dimen/spacing_small">
|
android:paddingTop="@dimen/spacing_small">
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/blacklist_recycler"
|
android:id="@+id/excluded_recycler"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
@ -18,10 +18,10 @@
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
tools:itemCount="1"
|
tools:itemCount="1"
|
||||||
tools:listitem="@layout/item_blacklist_entry" />
|
tools:listitem="@layout/item_excluded_dir" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/blacklist_empty_text"
|
android:id="@+id/excluded_empty"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/inter_semibold"
|
android:fontFamily="@font/inter_semibold"
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/album_cover"
|
android:id="@+id/album_cover"
|
||||||
style="@style/Widget.ImageView.Large"
|
style="@style/Widget.ImageView.Normal"
|
||||||
android:contentDescription="@{@string/desc_album_cover(album.name)}"
|
android:contentDescription="@{@string/desc_album_cover(album.name)}"
|
||||||
app:albumArt="@{album}"
|
app:albumArt="@{album}"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
|
|
@ -9,19 +9,19 @@
|
||||||
android:focusable="false">
|
android:focusable="false">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/blacklist_title"
|
android:id="@+id/excluded_path"
|
||||||
style="@style/ItemText.Primary"
|
style="@style/ItemText.Primary"
|
||||||
android:layout_marginStart="0dp"
|
android:layout_marginStart="0dp"
|
||||||
android:layout_marginEnd="@dimen/spacing_medium"
|
android:layout_marginEnd="@dimen/spacing_medium"
|
||||||
android:maxLines="@null"
|
android:maxLines="@null"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/blacklist_clear"
|
app:layout_constraintEnd_toStartOf="@+id/excluded_clear"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="/storage/emulated/0/directory" />
|
tools:text="/storage/emulated/0/directory" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/blacklist_clear"
|
android:id="@+id/excluded_clear"
|
||||||
style="@style/Widget.Button.Unbounded"
|
style="@style/Widget.Button.Unbounded"
|
||||||
android:layout_width="@dimen/size_clear"
|
android:layout_width="@dimen/size_clear"
|
||||||
android:layout_height="@dimen/size_clear"
|
android:layout_height="@dimen/size_clear"
|
|
@ -89,8 +89,8 @@
|
||||||
<string name="set_content">Content</string>
|
<string name="set_content">Content</string>
|
||||||
<string name="set_save">Wiedergabezustand abspeichern</string>
|
<string name="set_save">Wiedergabezustand abspeichern</string>
|
||||||
<string name="set_save_desc">Der aktuell Wiedergabezustand jetzt abspeichern</string>
|
<string name="set_save_desc">Der aktuell Wiedergabezustand jetzt abspeichern</string>
|
||||||
<string name="set_blacklist">Ausgeschlossene Ordner</string>
|
<string name="set_excluded">Ausgeschlossene Ordner</string>
|
||||||
<string name="set_blacklist_desc">Die Inhalte der ausgeschlossene Ordner sind versteckt von deiner Musikbibliothek</string>
|
<string name="set_excluded_desc">Die Inhalte der ausgeschlossene Ordner sind versteckt von deiner Musikbibliothek</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="err_no_music">Keine Musik gefunden</string>
|
<string name="err_no_music">Keine Musik gefunden</string>
|
||||||
|
|
|
@ -92,8 +92,8 @@
|
||||||
<string name="set_content">Contenido</string>
|
<string name="set_content">Contenido</string>
|
||||||
<string name="set_save">Guardar estado de reproducción</string>
|
<string name="set_save">Guardar estado de reproducción</string>
|
||||||
<string name="set_save_desc">Guardar el estado actual de la reproducción ahora</string>
|
<string name="set_save_desc">Guardar el estado actual de la reproducción ahora</string>
|
||||||
<string name="set_blacklist">Carpetas excluidas</string>
|
<string name="set_excluded">Carpetas excluidas</string>
|
||||||
<string name="set_blacklist_desc">El contenido de las carpetas excluidas se oculta de la biblioteca</string>
|
<string name="set_excluded_desc">El contenido de las carpetas excluidas se oculta de la biblioteca</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="err_no_music">No se encontró música</string>
|
<string name="err_no_music">No se encontró música</string>
|
||||||
|
|
|
@ -90,8 +90,8 @@
|
||||||
<string name="set_content">Inhoud</string>
|
<string name="set_content">Inhoud</string>
|
||||||
<string name="set_save">Afspeelstatus opslaan</string>
|
<string name="set_save">Afspeelstatus opslaan</string>
|
||||||
<string name="set_save_desc">Sla de huidige afspeelstatus nu op </string>
|
<string name="set_save_desc">Sla de huidige afspeelstatus nu op </string>
|
||||||
<string name="set_blacklist">Uitgesloten mappen </string>
|
<string name="set_excluded">Uitgesloten mappen </string>
|
||||||
<string name="set_blacklist_desc">De inhoud van uitgesloten mappen wordt verborgen voor uw bibliotheek</string>
|
<string name="set_excluded_desc">De inhoud van uitgesloten mappen wordt verborgen voor uw bibliotheek</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="err_no_music">Geen muziek aangetroffen</string>
|
<string name="err_no_music">Geen muziek aangetroffen</string>
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<!-- TODO: Rejig these dimens to line up with the 8dp grid. -->
|
<!--
|
||||||
|
TODO: Redo these dimens to line up with the 8dp grid. Tiny spacing can be used for
|
||||||
|
internal elements, but micro spacing needs to be phased out. Certain dimens need to
|
||||||
|
be flattened and buttons need to become at least 48x48
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- Spacing Namespace | Dimens for padding/margin attributes -->
|
<!-- Spacing Namespace | Dimens for padding/margin attributes -->
|
||||||
<dimen name="spacing_micro">2dp</dimen>
|
<dimen name="spacing_micro">2dp</dimen>
|
||||||
|
@ -13,9 +17,6 @@
|
||||||
<dimen name="spacing_huge">64dp</dimen>
|
<dimen name="spacing_huge">64dp</dimen>
|
||||||
<dimen name="spacing_insane">128dp</dimen>
|
<dimen name="spacing_insane">128dp</dimen>
|
||||||
|
|
||||||
<!-- Height Namespace | Height for UI elements -->
|
|
||||||
<dimen name="height_widget_button">32dp</dimen>
|
|
||||||
|
|
||||||
<!-- Width Namespace | Width for UI elements -->
|
<!-- Width Namespace | Width for UI elements -->
|
||||||
<dimen name="width_track_number">32dp</dimen>
|
<dimen name="width_track_number">32dp</dimen>
|
||||||
<dimen name="width_fast_scroll">20dp</dimen>
|
<dimen name="width_fast_scroll">20dp</dimen>
|
||||||
|
@ -26,12 +27,11 @@
|
||||||
|
|
||||||
<dimen name="size_cover_compact">48dp</dimen>
|
<dimen name="size_cover_compact">48dp</dimen>
|
||||||
<dimen name="size_cover_normal">56dp</dimen>
|
<dimen name="size_cover_normal">56dp</dimen>
|
||||||
<dimen name="size_cover_large">64dp</dimen>
|
<dimen name="size_cover_huge_land">128dp</dimen>
|
||||||
<dimen name="size_cover_huge">264dp</dimen>
|
<dimen name="size_cover_huge">264dp</dimen>
|
||||||
<dimen name="size_cover_huge_land">136dp</dimen>
|
|
||||||
|
|
||||||
<dimen name="size_play_pause">72dp</dimen>
|
<dimen name="size_play_pause">72dp</dimen>
|
||||||
<dimen name="size_play_pause_compact">36dp</dimen>
|
<dimen name="size_unbounded">36dp</dimen>
|
||||||
<dimen name="size_scroll_thumb">48dp</dimen>
|
<dimen name="size_scroll_thumb">48dp</dimen>
|
||||||
<dimen name="size_clear">32dp</dimen>
|
<dimen name="size_clear">32dp</dimen>
|
||||||
|
|
||||||
|
@ -48,5 +48,6 @@
|
||||||
<!-- Misc -->
|
<!-- Misc -->
|
||||||
<dimen name="elevation_small">2dp</dimen>
|
<dimen name="elevation_small">2dp</dimen>
|
||||||
<dimen name="elevation_normal">4dp</dimen>
|
<dimen name="elevation_normal">4dp</dimen>
|
||||||
|
|
||||||
<dimen name="offset_thumb">4dp</dimen>
|
<dimen name="offset_thumb">4dp</dimen>
|
||||||
</resources>
|
</resources>
|
|
@ -97,8 +97,8 @@
|
||||||
<string name="set_content">Content</string>
|
<string name="set_content">Content</string>
|
||||||
<string name="set_save">Save playback state</string>
|
<string name="set_save">Save playback state</string>
|
||||||
<string name="set_save_desc">Save the current playback state now</string>
|
<string name="set_save_desc">Save the current playback state now</string>
|
||||||
<string name="set_blacklist">Excluded Folders</string>
|
<string name="set_excluded">Excluded Folders</string>
|
||||||
<string name="set_blacklist_desc">The content of excluded folders is hidden from your library</string>
|
<string name="set_excluded_desc">The content of excluded folders is hidden from your library</string>
|
||||||
|
|
||||||
<!-- Error Namespace | Error Labels -->
|
<!-- Error Namespace | Error Labels -->
|
||||||
<string name="err_no_music">No music found</string>
|
<string name="err_no_music">No music found</string>
|
||||||
|
|
|
@ -48,10 +48,11 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Component.AppWidget.Button.Base" parent="Widget.AppCompat.Button.Borderless">
|
<style name="Widget.Component.AppWidget.Button.Base" parent="Widget.AppCompat.Button.Borderless">
|
||||||
<item name="android:layout_height">@dimen/height_widget_button</item>
|
<item name="android:layout_height">@dimen/size_unbounded</item>
|
||||||
<item name="android:layout_width">0dp</item>
|
<item name="android:layout_width">0dp</item>
|
||||||
<item name="android:layout_weight">1</item>
|
<item name="android:layout_weight">1</item>
|
||||||
<item name="android:scaleType">fitCenter</item>
|
<item name="android:scaleType">fitCenter</item>
|
||||||
|
<item name="android:padding">@dimen/spacing_tiny</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Component.AppWidget.Button" parent="Widget.Component.AppWidget.Button.Base">
|
<style name="Widget.Component.AppWidget.Button" parent="Widget.Component.AppWidget.Button.Base">
|
||||||
|
|
|
@ -54,11 +54,6 @@
|
||||||
<item name="android:layout_height">@dimen/size_cover_normal</item>
|
<item name="android:layout_height">@dimen/size_cover_normal</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Widget.ImageView.Large" parent="">
|
|
||||||
<item name="android:layout_width">@dimen/size_cover_large</item>
|
|
||||||
<item name="android:layout_height">@dimen/size_cover_large</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="Widget.ImageView.Full" parent="">
|
<style name="Widget.ImageView.Full" parent="">
|
||||||
<item name="android:layout_width">0dp</item>
|
<item name="android:layout_width">0dp</item>
|
||||||
<item name="android:layout_height">0dp</item>
|
<item name="android:layout_height">0dp</item>
|
||||||
|
@ -180,8 +175,8 @@
|
||||||
<!-- BUTTON STYLES -->
|
<!-- BUTTON STYLES -->
|
||||||
|
|
||||||
<style name="Widget.Button.Unbounded" parent="Widget.AppCompat.Button.Borderless">
|
<style name="Widget.Button.Unbounded" parent="Widget.AppCompat.Button.Borderless">
|
||||||
<item name="android:layout_width">@dimen/size_play_pause_compact</item>
|
<item name="android:layout_width">@dimen/size_unbounded</item>
|
||||||
<item name="android:layout_height">@dimen/size_play_pause_compact</item>
|
<item name="android:layout_height">@dimen/size_unbounded</item>
|
||||||
<item name="android:background">@drawable/ui_unbounded_ripple</item>
|
<item name="android:background">@drawable/ui_unbounded_ripple</item>
|
||||||
<item name="android:scaleType">fitCenter</item>
|
<item name="android:scaleType">fitCenter</item>
|
||||||
<item name="android:padding">@dimen/spacing_micro</item>
|
<item name="android:padding">@dimen/spacing_micro</item>
|
||||||
|
|
|
@ -149,8 +149,8 @@
|
||||||
<Preference
|
<Preference
|
||||||
app:iconSpaceReserved="false"
|
app:iconSpaceReserved="false"
|
||||||
app:key="KEY_BLACKLIST"
|
app:key="KEY_BLACKLIST"
|
||||||
app:summary="@string/set_blacklist_desc"
|
app:summary="@string/set_excluded_desc"
|
||||||
app:title="@string/set_blacklist" />
|
app:title="@string/set_excluded" />
|
||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
Loading…
Reference in a new issue