display container and codec in dialog

This commit is contained in:
dkanada 2020-10-22 01:56:57 +09:00
commit 868c8fb96d
5 changed files with 62 additions and 47 deletions

View file

@ -1,6 +1,5 @@
package com.dkanada.gramophone.adapter; package com.dkanada.gramophone.adapter;
import android.annotation.SuppressLint;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -16,7 +15,7 @@ import com.dkanada.gramophone.model.DirectPlayCodec;
import java.util.List; import java.util.List;
public class DirectPlayCodecAdapter extends RecyclerView.Adapter<DirectPlayCodecAdapter.ViewHolder> { public class DirectPlayCodecAdapter extends RecyclerView.Adapter<DirectPlayCodecAdapter.ViewHolder> {
private List<DirectPlayCodec> directPlayCodecs; private final List<DirectPlayCodec> directPlayCodecs;
public DirectPlayCodecAdapter(List<DirectPlayCodec> directPlayCodecs) { public DirectPlayCodecAdapter(List<DirectPlayCodec> directPlayCodecs) {
this.directPlayCodecs = directPlayCodecs; this.directPlayCodecs = directPlayCodecs;
@ -29,17 +28,17 @@ public class DirectPlayCodecAdapter extends RecyclerView.Adapter<DirectPlayCodec
return new ViewHolder(view); return new ViewHolder(view);
} }
@SuppressLint("ClickableViewAccessibility")
@Override @Override
public void onBindViewHolder(@NonNull DirectPlayCodecAdapter.ViewHolder holder, int position) { public void onBindViewHolder(@NonNull DirectPlayCodecAdapter.ViewHolder holder, int position) {
DirectPlayCodec directPlayCodec = directPlayCodecs.get(position); DirectPlayCodec directPlayCodec = directPlayCodecs.get(position);
holder.checkBox.setChecked(directPlayCodec.selected); holder.checkbox.setChecked(directPlayCodec.selected);
holder.title.setText(directPlayCodec.title); holder.container.setText(directPlayCodec.codec.container);
holder.codec.setText(directPlayCodec.codec.codec);
holder.itemView.setOnClickListener(v -> { holder.itemView.setOnClickListener(v -> {
directPlayCodec.selected = !directPlayCodec.selected; directPlayCodec.selected = !directPlayCodec.selected;
holder.checkBox.setChecked(directPlayCodec.selected); holder.checkbox.setChecked(directPlayCodec.selected);
}); });
} }
@ -53,13 +52,16 @@ public class DirectPlayCodecAdapter extends RecyclerView.Adapter<DirectPlayCodec
} }
static class ViewHolder extends RecyclerView.ViewHolder { static class ViewHolder extends RecyclerView.ViewHolder {
public CheckBox checkBox; public CheckBox checkbox;
public TextView title; public TextView container;
public TextView codec;
public ViewHolder(View view) { public ViewHolder(View view) {
super(view); super(view);
checkBox = view.findViewById(R.id.checkbox);
title = view.findViewById(R.id.title); checkbox = view.findViewById(R.id.checkbox);
container = view.findViewById(R.id.container);
codec = view.findViewById(R.id.codec);
} }
} }
} }

View file

@ -1,33 +1,31 @@
package com.dkanada.gramophone.model; package com.dkanada.gramophone.model;
public class DirectPlayCodec { public class DirectPlayCodec {
public String codecName; public Codec codec;
public String title;
public String value;
public boolean selected; public boolean selected;
public DirectPlayCodec(String codecName, String title, String value, boolean selected) { public DirectPlayCodec(Codec codec, boolean selected) {
this.codecName = codecName; this.codec = codec;
this.title = title;
this.value = value;
this.selected = selected; this.selected = selected;
} }
public enum Codec { public enum Codec {
FLAC("FLAC","flac|flac"), FLAC("FLAC", "FLAC", "flac|flac"),
MP3("MP3", "mp3|mp3"), MP3("MP3", "MP3", "mp3|mp3"),
OPUS("Opus", "opus|opus"), OPUS("Opus", "Opus", "opus|opus"),
AAC("M4A-AAC", "m4a|aac"), AAC("M4A", "AAC", "m4a|aac"),
OGG("OGG-Vorbis", "ogg|vorbis"), VORBIS("OGG", "Vorbis", "ogg|vorbis"),
OOPUS("OGG-Opus", "ogg|opus"), OGG("OGG", "Opus", "ogg|opus"),
MKA("MKA-Opus", "mka|opus"); MKA("MKA", "Opus", "mka|opus");
public final String title; public final String container;
public final String codec;
public final String value; public final String value;
Codec(String title, String value) { Codec(String container, String codec, String value) {
this.container = container;
this.codec = codec;
this.value = value; this.value = value;
this.title = title;
} }
} }
} }

View file

@ -49,7 +49,7 @@ public class MusicUtil {
containerAdded = true; containerAdded = true;
} }
builder.append(directPlayCodec.value).append(','); builder.append(directPlayCodec.codec.value).append(',');
} }
} }

View file

@ -432,6 +432,7 @@ public final class PreferenceUtil {
Set<String> selectedCodecNames = new HashSet<>(); Set<String> selectedCodecNames = new HashSet<>();
for (DirectPlayCodec.Codec codec : codecs) { for (DirectPlayCodec.Codec codec : codecs) {
// this will be the default value
selectedCodecNames.add(codec.name()); selectedCodecNames.add(codec.name());
} }
@ -441,7 +442,7 @@ public final class PreferenceUtil {
for (DirectPlayCodec.Codec codec : codecs) { for (DirectPlayCodec.Codec codec : codecs) {
String name = codec.name(); String name = codec.name();
boolean selected = selectedCodecNames.contains(name); boolean selected = selectedCodecNames.contains(name);
directPlayCodecs.add(new DirectPlayCodec(name, codec.title, codec.value, selected)); directPlayCodecs.add(new DirectPlayCodec(codec, selected));
} }
return directPlayCodecs; return directPlayCodecs;
@ -451,7 +452,7 @@ public final class PreferenceUtil {
Set<String> codecNames = new HashSet<>(); Set<String> codecNames = new HashSet<>();
for (DirectPlayCodec directPlayCodec : directPlayCodecs) { for (DirectPlayCodec directPlayCodec : directPlayCodecs) {
if (directPlayCodec.selected) { if (directPlayCodec.selected) {
codecNames.add(directPlayCodec.codecName); codecNames.add(directPlayCodec.codec.toString());
} }
} }

View file

@ -1,18 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout 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" 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:descendantFocusability="blocksDescendants" android:descendantFocusability="blocksDescendants"
android:focusable="true" android:focusable="true"
android:foreground="?attr/rectSelector" android:foreground="?attr/rectSelector"
android:minHeight="@dimen/md_listitem_height" android:minHeight="24dp"
android:orientation="horizontal" android:paddingEnd="12dp"
android:paddingEnd="@dimen/md_dialog_frame_margin" android:paddingBottom="8dp"
android:paddingLeft="@dimen/md_dialog_frame_margin" android:paddingTop="8dp"
android:paddingRight="@dimen/md_dialog_frame_margin" android:paddingStart="20dp">
android:paddingStart="@dimen/md_dialog_frame_margin"
tools:gravity="start|center_vertical">
<com.kabouzeid.appthemehelper.common.views.ATECheckBox <com.kabouzeid.appthemehelper.common.views.ATECheckBox
android:id="@+id/checkbox" android:id="@+id/checkbox"
@ -21,21 +20,36 @@
android:background="@null" android:background="@null"
android:clickable="false" android:clickable="false"
android:focusable="false" android:focusable="false"
android:gravity="center_vertical" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/title" android:id="@+id/container"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:layout_margin="8dp"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center_vertical"
android:minHeight="@dimen/md_listitem_height"
android:paddingBottom="@dimen/md_listitem_vertical_margin_choice"
android:paddingStart="@dimen/md_listitem_control_margin"
android:paddingTop="@dimen/md_listitem_vertical_margin_choice"
android:singleLine="true" android:singleLine="true"
android:textSize="@dimen/md_listitem_textsize" android:textSize="@dimen/md_listitem_textsize"
app:layout_constraintStart_toEndOf="@id/checkbox"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Item" /> tools:text="Item" />
</LinearLayout> <TextView
android:id="@+id/codec"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingStart="6dp"
android:paddingBottom="1dp"
android:paddingEnd="6dp"
android:ellipsize="end"
android:singleLine="true"
android:textSize="12sp"
android:textColor="?android:textColorSecondary"
app:layout_constraintStart_toEndOf="@id/container"
app:layout_constraintBottom_toBottomOf="@id/container"
tools:text="Item" />
</androidx.constraintlayout.widget.ConstraintLayout>