mirror of
https://github.com/yuliskov/SmartTube.git
synced 2026-05-13 00:10:05 -05:00
dialog refactor
This commit is contained in:
+5
-5
@@ -118,11 +118,11 @@ public class PlayerUiManager extends PlayerEventListenerHelper {
|
||||
createCheckedOptions();
|
||||
createSingleOptions();
|
||||
|
||||
mSettingsPresenter.showDialog(() -> {
|
||||
enableUiAutoHideTimeout();
|
||||
|
||||
updateBackgroundPlayback();
|
||||
});
|
||||
mSettingsPresenter.showDialog(mActivity.getString(R.string.playback_settings),
|
||||
() -> {
|
||||
enableUiAutoHideTimeout();
|
||||
updateBackgroundPlayback();
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,4 +26,5 @@
|
||||
<string name="option_background_playback_off">Отключено</string>
|
||||
<string name="option_background_playback_all">Видео и аудио</string>
|
||||
<string name="option_background_playback_only_audio">Только аудио</string>
|
||||
<string name="playback_settings">Настройки воспроизведения</string>
|
||||
</resources>
|
||||
@@ -26,4 +26,5 @@
|
||||
<string name="option_background_playback_off">Disabled</string>
|
||||
<string name="option_background_playback_all">Video and audio</string>
|
||||
<string name="option_background_playback_only_audio">Only audio</string>
|
||||
<string name="playback_settings">Playback settings</string>
|
||||
</resources>
|
||||
+17
-32
@@ -1,17 +1,13 @@
|
||||
package com.liskovsoft.smartyoutubetv2.tv.ui.settings;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.leanback.preference.LeanbackListPreferenceDialogFragment;
|
||||
import androidx.leanback.preference.LeanbackPreferenceDialogFragment;
|
||||
import androidx.leanback.preference.LeanbackPreferenceFragment;
|
||||
import androidx.leanback.preference.LeanbackSettingsFragment;
|
||||
import androidx.preference.DialogPreference;
|
||||
import androidx.preference.MultiSelectListPreference;
|
||||
import androidx.preference.MultiSelectListPreferenceDialogFragment;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceFragment;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
@@ -26,7 +22,7 @@ import java.util.List;
|
||||
|
||||
public class AppSettingsFragment extends LeanbackSettingsFragment
|
||||
implements DialogPreference.TargetFragment, VideoSettingsView {
|
||||
private PrefFragment mPreferenceFragment;
|
||||
private AppPreferenceFragment mPreferenceFragment;
|
||||
private VideoSettingsPresenter mSettingsPresenter;
|
||||
|
||||
@Override
|
||||
@@ -75,8 +71,8 @@ public class AppSettingsFragment extends LeanbackSettingsFragment
|
||||
return mPreferenceFragment.findPreference(charSequence);
|
||||
}
|
||||
|
||||
private PrefFragment buildPreferenceFragment() {
|
||||
return new PrefFragment();
|
||||
private AppPreferenceFragment buildPreferenceFragment() {
|
||||
return new AppPreferenceFragment();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -89,37 +85,26 @@ public class AppSettingsFragment extends LeanbackSettingsFragment
|
||||
mPreferenceFragment.setTitle(title);
|
||||
}
|
||||
|
||||
//@Override
|
||||
//public boolean onPreferenceDisplayDialog(@NonNull PreferenceFragment caller, Preference pref) {
|
||||
// if (pref instanceof StringListPreference) {
|
||||
// StringListPreference listPreference = (StringListPreference) pref;
|
||||
// LeanbackPreferenceDialogFragment f = StringListPreferenceDialogFragment.newInstanceStringList(listPreference.getKey());
|
||||
// f.setTargetFragment(caller, 0);
|
||||
// startPreferenceFragment(f);
|
||||
//
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// return super.onPreferenceDisplayDialog(caller, pref);
|
||||
//}
|
||||
@Override
|
||||
public boolean onPreferenceDisplayDialog(@NonNull PreferenceFragment caller, Preference pref) {
|
||||
if (pref instanceof StringListPreference) {
|
||||
StringListPreference listPreference = (StringListPreference) pref;
|
||||
LeanbackPreferenceDialogFragment f = StringListPreferenceDialogFragment.newInstanceStringList(listPreference.getKey());
|
||||
f.setTargetFragment(caller, 0);
|
||||
startPreferenceFragment(f);
|
||||
|
||||
public static class PrefFragment extends LeanbackPreferenceFragment {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onPreferenceDisplayDialog(caller, pref);
|
||||
}
|
||||
|
||||
public static class AppPreferenceFragment extends LeanbackPreferenceFragment {
|
||||
private List<SettingsCategory> mCategories;
|
||||
private Context mStyledContext;
|
||||
private SettingsFragmentHelper mManager;
|
||||
private String mTitle;
|
||||
|
||||
@Override
|
||||
public void onDisplayPreferenceDialog(Preference preference) {
|
||||
//if (preference instanceof StringListPreference) {
|
||||
// StringListPreferenceDialogFragment f = StringListPreferenceDialogFragment.newInstanceStringList(preference.getKey());
|
||||
// f.setTargetFragment(this, 0);
|
||||
// f.show(getFragmentManager(), DIALOG_FRAGMENT_TAG);
|
||||
//}
|
||||
|
||||
super.onDisplayPreferenceDialog(preference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle bundle, String s) {
|
||||
mStyledContext = (Context) Helpers.getField(this, "mStyledContext");
|
||||
|
||||
+39
-30
@@ -1,6 +1,7 @@
|
||||
package com.liskovsoft.smartyoutubetv2.tv.ui.settings;
|
||||
|
||||
import android.content.Context;
|
||||
import androidx.preference.DialogPreference;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.MultiSelectListPreference;
|
||||
import androidx.preference.Preference;
|
||||
@@ -16,13 +17,13 @@ import java.util.Set;
|
||||
public class SettingsFragmentHelper {
|
||||
private final Context mStyledContext;
|
||||
|
||||
public static class ListPrefData {
|
||||
public static class ListPreferenceData {
|
||||
public final CharSequence[] entries;
|
||||
public final CharSequence[] values;
|
||||
public final String defaultValue;
|
||||
public final Set<String> defaultValues;
|
||||
|
||||
public ListPrefData(CharSequence[] entries, CharSequence[] values, String defaultValue, Set<String> defaultValues) {
|
||||
public ListPreferenceData(CharSequence[] entries, CharSequence[] values, String defaultValue, Set<String> defaultValues) {
|
||||
this.entries = entries;
|
||||
this.values = values;
|
||||
this.defaultValue = defaultValue;
|
||||
@@ -54,7 +55,7 @@ public class SettingsFragmentHelper {
|
||||
private Preference createStringListPreference(SettingsCategory category) {
|
||||
MultiSelectListPreference pref = new StringListPreference(mStyledContext);
|
||||
|
||||
initMultiSelectListPref(category, pref);
|
||||
initMultiSelectListPreference(category, pref);
|
||||
|
||||
return pref;
|
||||
}
|
||||
@@ -83,16 +84,16 @@ public class SettingsFragmentHelper {
|
||||
|
||||
if (category.items.size() == 1) {
|
||||
OptionItem item = category.items.get(0);
|
||||
SwitchPreference pref = new SwitchPreference(mStyledContext);
|
||||
pref.setPersistent(false);
|
||||
pref.setTitle(item.getTitle());
|
||||
pref.setDefaultValue(item.isSelected());
|
||||
pref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
Preference preference = new SwitchPreference(mStyledContext);
|
||||
preference.setPersistent(false);
|
||||
preference.setTitle(item.getTitle());
|
||||
preference.setDefaultValue(item.isSelected());
|
||||
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
||||
item.onSelect((boolean) newValue);
|
||||
return true;
|
||||
});
|
||||
|
||||
result = pref;
|
||||
result = preference;
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -100,11 +101,24 @@ public class SettingsFragmentHelper {
|
||||
|
||||
public Preference createRadioListPreference(SettingsCategory category) {
|
||||
ListPreference pref = new ListPreference(mStyledContext);
|
||||
pref.setPersistent(false);
|
||||
pref.setTitle(category.title);
|
||||
pref.setKey(category.toString());
|
||||
|
||||
ListPrefData prefData = createListPrefData(category.items);
|
||||
initSingleSelectListPreference(category, pref);
|
||||
|
||||
return pref;
|
||||
}
|
||||
|
||||
public Preference createCheckedListPreference(SettingsCategory category) {
|
||||
MultiSelectListPreference pref = new MultiSelectListPreference(mStyledContext);
|
||||
|
||||
initMultiSelectListPreference(category, pref);
|
||||
|
||||
return pref;
|
||||
}
|
||||
|
||||
private void initSingleSelectListPreference(SettingsCategory category, ListPreference pref) {
|
||||
initDialogPreference(category, pref);
|
||||
|
||||
ListPreferenceData prefData = createListPreferenceData(category.items);
|
||||
|
||||
pref.setEntries(prefData.entries);
|
||||
pref.setEntryValues(prefData.values);
|
||||
@@ -120,24 +134,12 @@ public class SettingsFragmentHelper {
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
return pref;
|
||||
}
|
||||
|
||||
public Preference createCheckedListPreference(SettingsCategory category) {
|
||||
MultiSelectListPreference pref = new MultiSelectListPreference(mStyledContext);
|
||||
private void initMultiSelectListPreference(SettingsCategory category, MultiSelectListPreference pref) {
|
||||
initDialogPreference(category, pref);
|
||||
|
||||
initMultiSelectListPref(category, pref);
|
||||
|
||||
return pref;
|
||||
}
|
||||
|
||||
private void initMultiSelectListPref(SettingsCategory category, MultiSelectListPreference pref) {
|
||||
pref.setPersistent(false);
|
||||
pref.setTitle(category.title);
|
||||
pref.setKey(category.toString());
|
||||
|
||||
ListPrefData prefData = createListPrefData(category.items);
|
||||
ListPreferenceData prefData = createListPreferenceData(category.items);
|
||||
|
||||
pref.setEntries(prefData.entries);
|
||||
pref.setEntryValues(prefData.values);
|
||||
@@ -162,7 +164,7 @@ public class SettingsFragmentHelper {
|
||||
});
|
||||
}
|
||||
|
||||
public ListPrefData createListPrefData(List<OptionItem> items) {
|
||||
public ListPreferenceData createListPreferenceData(List<OptionItem> items) {
|
||||
CharSequence[] titles = new CharSequence[items.size()];
|
||||
CharSequence[] hashes = new CharSequence[items.size()];
|
||||
String defaultValue = null;
|
||||
@@ -183,6 +185,13 @@ public class SettingsFragmentHelper {
|
||||
}
|
||||
}
|
||||
|
||||
return new ListPrefData(titles, hashes, defaultValue, defaultValues);
|
||||
return new ListPreferenceData(titles, hashes, defaultValue, defaultValues);
|
||||
}
|
||||
|
||||
private void initDialogPreference(SettingsCategory category, DialogPreference pref) {
|
||||
pref.setPersistent(false);
|
||||
pref.setTitle(category.title);
|
||||
pref.setDialogTitle(category.title);
|
||||
pref.setKey(category.toString());
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -94,7 +94,7 @@ public class StringListPreferenceDialogFragment extends LeanbackListPreferenceDi
|
||||
|
||||
@Override
|
||||
public Adapter<ViewHolder> onCreateAdapter() {
|
||||
return new AdapterMulti(mEntries, mEntryValues, mInitialSelections);
|
||||
return new AdapterMultiStrings(mEntries, mEntryValues, mInitialSelections);
|
||||
}
|
||||
|
||||
public class AdapterMultiStrings extends RecyclerView.Adapter<ViewHolder>
|
||||
|
||||
+3
@@ -50,12 +50,15 @@ public class AppUpdateManager implements AppUpdateCheckerListener {
|
||||
}
|
||||
|
||||
private void showUpdateDialog(String versionName, List<String> changelog, String apkPath) {
|
||||
mSettingsPresenter.clear();
|
||||
|
||||
mSettingsPresenter.appendStrings(mContext.getString(R.string.update_changelog), createChangelogOptions(changelog));
|
||||
mSettingsPresenter.appendButton(
|
||||
UiOptionItem.from(mContext.getString(R.string.install_update), optionItem -> {
|
||||
mUpdateChecker.installUpdate();
|
||||
mUpdateInstalled = true;
|
||||
}, false));
|
||||
|
||||
mSettingsPresenter.showDialog(String.format("%s %s", mContext.getString(R.string.app_name), versionName), ()->{
|
||||
if (!mUpdateInstalled) {
|
||||
mUpdateChecker.onUserCancel();
|
||||
|
||||
Reference in New Issue
Block a user