checker ui localized

This commit is contained in:
Yuriy Liskov
2020-09-25 23:36:09 +03:00
parent db3d33a3b3
commit 27e5ada39b
5 changed files with 60 additions and 17 deletions

View File

@@ -13,7 +13,7 @@ import java.util.List;
import java.util.Set;
public class PreferenceFragmentHelper {
private final Context mContext;
private final Context mStyledContext;
public static class ListPrefData {
public final CharSequence[] entries;
@@ -29,22 +29,33 @@ public class PreferenceFragmentHelper {
}
}
public PreferenceFragmentHelper(Context context) {
mContext = context;
public PreferenceFragmentHelper(Context styledContext) {
mStyledContext = styledContext;
}
public Preference createPreference(SettingsCategory category) {
switch (category.type) {
case SettingsCategory.TYPE_CHECKBOX_LIST:
return createCheckedListPreference(category);
case SettingsCategory.TYPE_RADIO_LIST:
return createRadioListPreference(category);
case SettingsCategory.TYPE_STRING_LIST:
return createStringListPreference(category);
case SettingsCategory.TYPE_SINGLE_SWITCH:
return createSwitchPreference(category);
case SettingsCategory.TYPE_SINGLE_BUTTON:
return createButtonPreference(category);
case SettingsCategory.TYPE_STRING_LIST:
}
return createRadioListPreference(category);
throw new IllegalStateException("Can't find matched preference for type: " + category.type);
}
private Preference createStringListPreference(SettingsCategory category) {
MultiSelectListPreference pref = new StringListPreference(mStyledContext);
initMultiSelectListPref(category, pref);
return pref;
}
public Preference createButtonPreference(SettingsCategory category) {
@@ -52,7 +63,7 @@ public class PreferenceFragmentHelper {
if (category.items.size() == 1) {
OptionItem item = category.items.get(0);
Preference preference = new Preference(mContext);
Preference preference = new Preference(mStyledContext);
preference.setPersistent(false);
preference.setTitle(item.getTitle());
preference.setOnPreferenceClickListener(pref -> {
@@ -71,7 +82,7 @@ public class PreferenceFragmentHelper {
if (category.items.size() == 1) {
OptionItem item = category.items.get(0);
SwitchPreference pref = new SwitchPreference(mContext);
SwitchPreference pref = new SwitchPreference(mStyledContext);
pref.setPersistent(false);
pref.setTitle(item.getTitle());
pref.setDefaultValue(item.isSelected());
@@ -87,7 +98,7 @@ public class PreferenceFragmentHelper {
}
public Preference createRadioListPreference(SettingsCategory category) {
ListPreference pref = new ListPreference(mContext);
ListPreference pref = new ListPreference(mStyledContext);
pref.setPersistent(false);
pref.setTitle(category.title);
pref.setKey(category.toString());
@@ -113,7 +124,14 @@ public class PreferenceFragmentHelper {
}
public Preference createCheckedListPreference(SettingsCategory category) {
MultiSelectListPreference pref = new MultiSelectListPreference(mContext);
MultiSelectListPreference pref = new MultiSelectListPreference(mStyledContext);
initMultiSelectListPref(category, pref);
return pref;
}
private void initMultiSelectListPref(SettingsCategory category, MultiSelectListPreference pref) {
pref.setPersistent(false);
pref.setTitle(category.title);
pref.setKey(category.toString());
@@ -141,8 +159,6 @@ public class PreferenceFragmentHelper {
return true;
});
return pref;
}
public ListPrefData createListPrefData(List<OptionItem> items) {

View File

@@ -0,0 +1,23 @@
package com.liskovsoft.smartyoutubetv2.tv.ui.playback.settings;
import android.content.Context;
import android.util.AttributeSet;
import androidx.preference.MultiSelectListPreference;
public class StringListPreference extends MultiSelectListPreference {
public StringListPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public StringListPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public StringListPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public StringListPreference(Context context) {
super(context);
}
}

View File

@@ -41,22 +41,22 @@ public class AppUpdateManager implements AppUpdateCheckerListener {
public void start() {
mUpdateInstalled = false;
mUpdateChecker.checkForUpdates(UPDATE_MANIFEST_URL);
mUpdateChecker.forceCheckForUpdates(UPDATE_MANIFEST_URL);
}
@Override
public void onUpdateFound(String versionName, List<String> changelog, String apkPath) {
showUpdateDialog(String.format("%s %s", mContext.getString(R.string.app_name), versionName), changelog, apkPath);
showUpdateDialog(versionName, changelog, apkPath);
}
private void showUpdateDialog(String title, List<String> textItems, String apkPath) {
mSettingsPresenter.appendStrings("Changelog", createChangelogOptions(textItems));
private void showUpdateDialog(String versionName, List<String> changelog, String apkPath) {
mSettingsPresenter.appendStrings(mContext.getString(R.string.update_changelog), createChangelogOptions(changelog));
mSettingsPresenter.appendButton(
UiOptionItem.from("Install update", optionItem -> {
UiOptionItem.from(mContext.getString(R.string.install_update), optionItem -> {
mUpdateChecker.installUpdate();
mUpdateInstalled = true;
}, false));
mSettingsPresenter.showDialog(title, ()->{
mSettingsPresenter.showDialog(String.format("%s %s", mContext.getString(R.string.app_name), versionName), ()->{
if (!mUpdateInstalled) {
mUpdateChecker.onUserCancel();
}

View File

@@ -3,4 +3,6 @@
<string name="signin_view_title">Код загружается…</string>
<string name="signin_view_description">Чтобы войти в аккаунт введите этот код на странице %s</string>
<string name="signin_view_action_text">Готово</string>
<string name="update_changelog">Изменения</string>
<string name="install_update">Установить обновление</string>
</resources>

View File

@@ -117,4 +117,6 @@
<string name="action_channel">Open Channel</string>
<string name="action_playlist_add">Add to Playlist</string>
<string name="action_video_stats">Video Stats</string>
<string name="update_changelog">Changelog</string>
<string name="install_update">Install update</string>
</resources>