match upstream name for direct play

This commit is contained in:
dkanada 2020-07-23 14:34:28 +09:00
commit 613edf239a
11 changed files with 68 additions and 69 deletions

View file

@ -11,45 +11,45 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.dkanada.gramophone.R; import com.dkanada.gramophone.R;
import com.dkanada.gramophone.model.DirectplayCodec; 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 List<DirectPlayCodec> directPlayCodecs;
public DirectplayCodecAdapter(List<DirectplayCodec> directplayCodecs) { public DirectPlayCodecAdapter(List<DirectPlayCodec> directPlayCodecs) {
this.directplayCodecs = directplayCodecs; this.directPlayCodecs = directPlayCodecs;
} }
@Override @Override
@NonNull @NonNull
public DirectplayCodecAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public DirectPlayCodecAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.preference_dialog_directplay_codecs_listitem, parent, false); View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.preference_dialog_direct_play_codecs_listitem, parent, false);
return new ViewHolder(view); return new ViewHolder(view);
} }
@SuppressLint("ClickableViewAccessibility") @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.title.setText(directPlayCodec.title);
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);
}); });
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
return directplayCodecs.size(); return directPlayCodecs.size();
} }
public List<DirectplayCodec> getDirectplayCodecs() { public List<DirectPlayCodec> getDirectPlayCodecs() {
return directplayCodecs; return directPlayCodecs;
} }
static class ViewHolder extends RecyclerView.ViewHolder { static class ViewHolder extends RecyclerView.ViewHolder {

View file

@ -1,12 +1,12 @@
package com.dkanada.gramophone.model; package com.dkanada.gramophone.model;
public class DirectplayCodec { public class DirectPlayCodec {
public String codecName; public String codecName;
public String title; public String title;
public String value; public String value;
public boolean selected; public boolean selected;
public DirectplayCodec(String codecName, String title, String value, boolean selected) { public DirectPlayCodec(String codecName, String title, String value, boolean selected) {
this.codecName = codecName; this.codecName = codecName;
this.title = title; this.title = title;
this.value = value; this.value = value;
@ -14,12 +14,11 @@ public class DirectplayCodec {
} }
public enum Codec { public enum Codec {
// These are all non-translatable so just keep them here.
FLAC("FLAC","flac|flac"), FLAC("FLAC","flac|flac"),
MP3("MP3", "mp3|mp3"), MP3("MP3", "mp3|mp3"),
AAC("AAC (.m4a)", "m4a|aac"), AAC("AAC", "m4a|aac"),
OPUS("OPUS (.mka)", "mka|opus"), OGG("OGG", "ogg|vorbis"),
VORBIS("VORBIS (.ogg)", "ogg|vorbis"); MKA("MKA", "mka|opus");
public final String title; public final String title;
public final String value; public final String value;

View file

@ -5,20 +5,20 @@ import android.util.AttributeSet;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEDialogPreference; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEDialogPreference;
public class DirectplayPreference extends ATEDialogPreference { public class DirectPlayPreference extends ATEDialogPreference {
public DirectplayPreference(Context context) { public DirectPlayPreference(Context context) {
super(context); super(context);
} }
public DirectplayPreference(Context context, AttributeSet attrs) { public DirectPlayPreference(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
} }
public DirectplayPreference(Context context, AttributeSet attrs, int defStyleAttr) { public DirectPlayPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr); super(context, attrs, defStyleAttr);
} }
public DirectplayPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { public DirectPlayPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes); super(context, attrs, defStyleAttr, defStyleRes);
} }
} }

View file

@ -11,36 +11,36 @@ import androidx.recyclerview.widget.RecyclerView;
import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.MaterialDialog;
import com.dkanada.gramophone.R; import com.dkanada.gramophone.R;
import com.dkanada.gramophone.adapter.DirectplayCodecAdapter; import com.dkanada.gramophone.adapter.DirectPlayCodecAdapter;
import com.dkanada.gramophone.util.PreferenceUtil; import com.dkanada.gramophone.util.PreferenceUtil;
public class DirectplayPreferenceDialog extends DialogFragment { public class DirectPlayPreferenceDialog extends DialogFragment {
public static DirectplayPreferenceDialog newInstance() { public static DirectPlayPreferenceDialog newInstance() {
return new DirectplayPreferenceDialog(); return new DirectPlayPreferenceDialog();
} }
private DirectplayCodecAdapter adapter; private DirectPlayCodecAdapter adapter;
@NonNull @NonNull
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = getActivity().getLayoutInflater().inflate(R.layout.preference_dialog_directplay_codecs, null); View view = getActivity().getLayoutInflater().inflate(R.layout.preference_dialog_direct_play_codecs, null);
adapter = new DirectplayCodecAdapter(PreferenceUtil.getInstance(getContext()).getDirectplayCodecs()); adapter = new DirectPlayCodecAdapter(PreferenceUtil.getInstance(getContext()).getDirectPlayCodecs());
RecyclerView recyclerView = view.findViewById(R.id.recycler_view); RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter); recyclerView.setAdapter(adapter);
return new MaterialDialog.Builder(getContext()) return new MaterialDialog.Builder(getContext())
.title(R.string.directplay_codecs) .title(R.string.direct_play_codecs)
.customView(view, false) .customView(view, false)
.positiveText(android.R.string.ok) .positiveText(android.R.string.ok)
.negativeText(android.R.string.cancel) .negativeText(android.R.string.cancel)
.autoDismiss(false) .autoDismiss(false)
.onNegative((dialog, action) -> dismiss()) .onNegative((dialog, action) -> dismiss())
.onPositive((dialog, action) -> { .onPositive((dialog, action) -> {
PreferenceUtil.getInstance(getContext()).setDirectplayCodecs(adapter.getDirectplayCodecs()); PreferenceUtil.getInstance(getContext()).setDirectPlayCodecs(adapter.getDirectPlayCodecs());
dismiss(); dismiss();
}) })
.build(); .build();

View file

@ -16,8 +16,8 @@ import android.view.MenuItem;
import android.view.View; import android.view.View;
import com.afollestad.materialdialogs.color.ColorChooserDialog; import com.afollestad.materialdialogs.color.ColorChooserDialog;
import com.dkanada.gramophone.preferences.DirectplayPreference; import com.dkanada.gramophone.preferences.DirectPlayPreference;
import com.dkanada.gramophone.preferences.DirectplayPreferenceDialog; import com.dkanada.gramophone.preferences.DirectPlayPreferenceDialog;
import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEColorPreference; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEColorPreference;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat;
@ -134,8 +134,8 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
return NowPlayingScreenPreferenceDialog.newInstance(); return NowPlayingScreenPreferenceDialog.newInstance();
} else if (preference instanceof LibraryPreference) { } else if (preference instanceof LibraryPreference) {
return LibraryPreferenceDialog.newInstance(); return LibraryPreferenceDialog.newInstance();
} else if (preference instanceof DirectplayPreference) { } else if (preference instanceof DirectPlayPreference) {
return DirectplayPreferenceDialog.newInstance(); return DirectPlayPreferenceDialog.newInstance();
} }
return super.onCreatePreferenceDialog(preference); return super.onCreatePreferenceDialog(preference);

View file

@ -14,7 +14,7 @@ import com.dkanada.gramophone.App;
import com.dkanada.gramophone.R; import com.dkanada.gramophone.R;
import com.dkanada.gramophone.model.Album; import com.dkanada.gramophone.model.Album;
import com.dkanada.gramophone.model.Artist; import com.dkanada.gramophone.model.Artist;
import com.dkanada.gramophone.model.DirectplayCodec; import com.dkanada.gramophone.model.DirectPlayCodec;
import com.dkanada.gramophone.model.Genre; import com.dkanada.gramophone.model.Genre;
import com.dkanada.gramophone.model.Song; import com.dkanada.gramophone.model.Song;
@ -43,17 +43,18 @@ public class MusicUtil {
builder.append("&MaxStreamingBitrate=").append(preferenceUtil.getMaximumBitrate()); builder.append("&MaxStreamingBitrate=").append(preferenceUtil.getMaximumBitrate());
boolean containerAdded = false; boolean containerAdded = false;
for (DirectplayCodec directplayCodec : preferenceUtil.getDirectplayCodecs()) { for (DirectPlayCodec directPlayCodec : preferenceUtil.getDirectPlayCodecs()) {
if (directplayCodec.selected){ if (directPlayCodec.selected){
if (!containerAdded){ if (!containerAdded){
builder.append("&Container="); builder.append("&Container=");
containerAdded = true; containerAdded = true;
} }
builder.append(directplayCodec.value).append(',');
builder.append(directPlayCodec.value).append(',');
} }
} }
if (containerAdded) { if (containerAdded) {
// Remove last comma // remove last comma
builder.deleteCharAt(builder.length() - 1); builder.deleteCharAt(builder.length() - 1);
} }

View file

@ -15,7 +15,7 @@ import com.dkanada.gramophone.R;
import com.dkanada.gramophone.helper.sort.SortMethod; import com.dkanada.gramophone.helper.sort.SortMethod;
import com.dkanada.gramophone.helper.sort.SortOrder; import com.dkanada.gramophone.helper.sort.SortOrder;
import com.dkanada.gramophone.model.CategoryInfo; import com.dkanada.gramophone.model.CategoryInfo;
import com.dkanada.gramophone.model.DirectplayCodec; import com.dkanada.gramophone.model.DirectPlayCodec;
import com.dkanada.gramophone.ui.fragments.player.NowPlayingScreen; import com.dkanada.gramophone.ui.fragments.player.NowPlayingScreen;
import java.lang.reflect.Type; import java.lang.reflect.Type;
@ -26,7 +26,7 @@ import java.util.Set;
public final class PreferenceUtil { public final class PreferenceUtil {
public static final String CATEGORIES = "library_categories"; public static final String CATEGORIES = "library_categories";
public static final String DIRECTPLAY_CODECS = "directplay_codecs"; public static final String DIRECT_PLAY_CODECS = "direct_play_codecs";
public static final String MAXIMUM_LIST_SIZE = "maximum_list_size"; public static final String MAXIMUM_LIST_SIZE = "maximum_list_size";
public static final String REMEMBER_LAST_TAB = "remember_last_tab"; public static final String REMEMBER_LAST_TAB = "remember_last_tab";
public static final String LAST_TAB = "last_tab"; public static final String LAST_TAB = "last_tab";
@ -423,37 +423,36 @@ public final class PreferenceUtil {
return defaultCategories; return defaultCategories;
} }
public List<DirectplayCodec> getDirectplayCodecs() { public List<DirectPlayCodec> getDirectPlayCodecs() {
DirectplayCodec.Codec[] codecs = DirectplayCodec.Codec.values(); DirectPlayCodec.Codec[] codecs = DirectPlayCodec.Codec.values();
Set<String> selectedCodecNames = new HashSet<>(); Set<String> selectedCodecNames = new HashSet<>();
for (DirectplayCodec.Codec codec : codecs){ for (DirectPlayCodec.Codec codec : codecs){
selectedCodecNames.add(codec.name()); selectedCodecNames.add(codec.name());
} }
selectedCodecNames = mPreferences.getStringSet(DIRECTPLAY_CODECS, selectedCodecNames); selectedCodecNames = mPreferences.getStringSet(DIRECT_PLAY_CODECS, selectedCodecNames);
ArrayList<DirectplayCodec> directplayCodecs = new ArrayList<>(); ArrayList<DirectPlayCodec> directPlayCodecs = new ArrayList<>();
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(name, codec.title, codec.value, selected));
} }
return directplayCodecs; return directPlayCodecs;
} }
public void setDirectplayCodecs(List<DirectplayCodec> directplayCodecs) { public void setDirectPlayCodecs(List<DirectPlayCodec> directPlayCodecs) {
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.codecName);
} }
} }
final SharedPreferences.Editor editor = mPreferences.edit(); final SharedPreferences.Editor editor = mPreferences.edit();
editor.putStringSet(DIRECTPLAY_CODECS, codecNames); editor.putStringSet(DIRECT_PLAY_CODECS, codecNames);
editor.apply(); editor.apply();
} }
} }

View file

@ -93,13 +93,13 @@
<string name="pref_header_colors">Colors</string> <string name="pref_header_colors">Colors</string>
<string name="pref_header_now_playing_screen">Now Playing</string> <string name="pref_header_now_playing_screen">Now Playing</string>
<string name="pref_header_audio">Audio</string> <string name="pref_header_audio">Audio</string>
<string name="pref_header_directplay">Directplay</string> <string name="pref_header_directplay">Direct Play</string>
<string name="pref_header_images">Images</string> <string name="pref_header_images">Images</string>
<string name="pref_header_library">Library</string> <string name="pref_header_library">Library</string>
<string name="pref_header_lockscreen">Lockscreen</string> <string name="pref_header_lockscreen">Lockscreen</string>
<string name="pref_header_notification">Notification</string> <string name="pref_header_notification">Notification</string>
<string name="directplay_codecs">Directplay Codecs</string> <string name="direct_play_codecs">Direct Play Codecs</string>
<string name="library_categories">Categories</string> <string name="library_categories">Categories</string>
<string name="primary_color">Primary Color</string> <string name="primary_color">Primary Color</string>
<string name="accent_color">Accent Color</string> <string name="accent_color">Accent Color</string>
@ -137,7 +137,7 @@
<string name="pref_summary_colored_app_shortcuts">Colors the app shortcuts in the primary color.</string> <string name="pref_summary_colored_app_shortcuts">Colors the app shortcuts in the primary color.</string>
<string name="pref_summary_remember_last_tab">Go to the last opened tab on launch.</string> <string name="pref_summary_remember_last_tab">Go to the last opened tab on launch.</string>
<string name="pref_summary_library_categories">Configure visibility and order of display categories.</string> <string name="pref_summary_library_categories">Configure visibility and order of display categories.</string>
<string name="pref_summary_directplay_codecs">Disable directplay codecs to force transcoding.</string> <string name="pref_summary_direct_play_codecs">Disable direct play codecs to force transcoding.</string>
<string name="delete_action">Delete</string> <string name="delete_action">Delete</string>
<string name="remove_action">Remove</string> <string name="remove_action">Remove</string>

View file

@ -4,11 +4,11 @@
<com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_directplay"> <com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_directplay">
<com.dkanada.gramophone.preferences.DirectplayPreference <com.dkanada.gramophone.preferences.DirectPlayPreference
app:iconSpaceReserved="false" app:iconSpaceReserved="false"
android:key="directplay_codecs" android:key="direct_play_codecs"
android:summary="@string/pref_summary_directplay_codecs" android:summary="@string/pref_summary_direct_play_codecs"
android:title="@string/directplay_codecs" /> android:title="@string/direct_play_codecs" />
</com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory> </com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory>