mirror of
https://github.com/gitnex-org/gitnex.git
synced 2026-03-22 13:05:25 -05:00
Move appearance to bottom sheet
This commit is contained in:
@@ -127,9 +127,6 @@
|
||||
android:name=".activities.CommitDetailActivity"
|
||||
android:configChanges="orientation|screenSize|smallestScreenSize|density|screenLayout|keyboard|keyboardHidden|navigation"
|
||||
android:theme="@android:style/Theme.NoTitleBar"/>
|
||||
<activity
|
||||
android:name=".activities.SettingsAppearanceActivity"
|
||||
android:configChanges="orientation|screenSize|smallestScreenSize|density|screenLayout|keyboard|keyboardHidden|navigation"/>
|
||||
<activity
|
||||
android:name=".activities.ProfileActivity"
|
||||
android:configChanges="orientation|screenSize|smallestScreenSize|density|screenLayout|keyboard|keyboardHidden|navigation"/>
|
||||
|
||||
@@ -1,463 +0,0 @@
|
||||
package org.mian.gitnex.activities;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.timepicker.MaterialTimePicker;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Locale;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.databinding.ActivitySettingsAppearanceBinding;
|
||||
import org.mian.gitnex.fragments.SettingsFragment;
|
||||
import org.mian.gitnex.helpers.AppDatabaseSettings;
|
||||
import org.mian.gitnex.helpers.AppUtil;
|
||||
import org.mian.gitnex.helpers.FontsOverride;
|
||||
import org.mian.gitnex.helpers.SnackBar;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
*/
|
||||
public class SettingsAppearanceActivity extends BaseActivity {
|
||||
|
||||
private static String[] customFontList;
|
||||
private static int customFontSelectedChoice;
|
||||
private static String[] themeList;
|
||||
private static int themeSelectedChoice;
|
||||
private static int langSelectedChoice;
|
||||
private static String[] fragmentTabsAnimationList;
|
||||
private static int fragmentTabsAnimationSelectedChoice;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
ActivitySettingsAppearanceBinding activitySettingsAppearanceBinding =
|
||||
ActivitySettingsAppearanceBinding.inflate(getLayoutInflater());
|
||||
setContentView(activitySettingsAppearanceBinding.getRoot());
|
||||
|
||||
LinkedHashMap<String, String> lang = new LinkedHashMap<>();
|
||||
lang.put("sys", getString(R.string.settingsLanguageSystem));
|
||||
for (String langCode : getResources().getStringArray(R.array.languages)) {
|
||||
lang.put(langCode, getLanguageDisplayName(langCode));
|
||||
}
|
||||
|
||||
customFontList = getResources().getStringArray(R.array.fonts);
|
||||
|
||||
fragmentTabsAnimationList = getResources().getStringArray(R.array.fragmentTabsAnimation);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S || "S".equals(Build.VERSION.CODENAME)) {
|
||||
themeList = getResources().getStringArray(R.array.themesAndroid12);
|
||||
} else {
|
||||
themeList = getResources().getStringArray(R.array.themes);
|
||||
}
|
||||
|
||||
activitySettingsAppearanceBinding.topAppBar.setNavigationOnClickListener(v -> finish());
|
||||
|
||||
String lightMinute =
|
||||
String.valueOf(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_THEME_AUTO_LIGHT_MIN_KEY));
|
||||
String lightHour =
|
||||
String.valueOf(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_THEME_AUTO_LIGHT_HOUR_KEY));
|
||||
if (lightMinute.length() == 1) {
|
||||
lightMinute = "0" + lightMinute;
|
||||
}
|
||||
if (lightHour.length() == 1) {
|
||||
lightHour = "0" + lightHour;
|
||||
}
|
||||
|
||||
String darkMinute =
|
||||
String.valueOf(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_THEME_AUTO_DARK_MIN_KEY));
|
||||
String darkHour =
|
||||
String.valueOf(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_THEME_AUTO_DARK_HOUR_KEY));
|
||||
if (darkMinute.length() == 1) {
|
||||
darkMinute = "0" + darkMinute;
|
||||
}
|
||||
if (darkHour.length() == 1) {
|
||||
darkHour = "0" + darkHour;
|
||||
}
|
||||
|
||||
fragmentTabsAnimationSelectedChoice =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_TABS_ANIMATION_KEY));
|
||||
customFontSelectedChoice =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_FONT_KEY));
|
||||
themeSelectedChoice =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_THEME_KEY));
|
||||
|
||||
activitySettingsAppearanceBinding.lightThemeSelectedTime.setText(
|
||||
ctx.getResources()
|
||||
.getString(R.string.settingsThemeTimeSelectedHint, lightHour, lightMinute));
|
||||
activitySettingsAppearanceBinding.darkThemeSelectedTime.setText(
|
||||
ctx.getResources()
|
||||
.getString(R.string.settingsThemeTimeSelectedHint, darkHour, darkMinute));
|
||||
activitySettingsAppearanceBinding.customFontSelected.setText(
|
||||
customFontList[customFontSelectedChoice]);
|
||||
activitySettingsAppearanceBinding.themeSelected.setText(themeList[themeSelectedChoice]);
|
||||
activitySettingsAppearanceBinding.fragmentTabsAnimationFrameSelected.setText(
|
||||
fragmentTabsAnimationList[fragmentTabsAnimationSelectedChoice]);
|
||||
|
||||
if (themeList[themeSelectedChoice].startsWith("Auto")) {
|
||||
activitySettingsAppearanceBinding.darkThemeTimeSelectionFrame.setVisibility(
|
||||
View.VISIBLE);
|
||||
activitySettingsAppearanceBinding.lightThemeTimeSelectionFrame.setVisibility(
|
||||
View.VISIBLE);
|
||||
} else {
|
||||
activitySettingsAppearanceBinding.darkThemeTimeSelectionFrame.setVisibility(View.GONE);
|
||||
activitySettingsAppearanceBinding.lightThemeTimeSelectionFrame.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
activitySettingsAppearanceBinding.switchCounterBadge.setChecked(
|
||||
Boolean.parseBoolean(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_COUNTER_KEY)));
|
||||
|
||||
// counter badge switcher
|
||||
activitySettingsAppearanceBinding.switchCounterBadge.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx, String.valueOf(isChecked), AppDatabaseSettings.APP_COUNTER_KEY);
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
activitySettingsAppearanceBinding.counterBadgeFrame.setOnClickListener(
|
||||
v ->
|
||||
activitySettingsAppearanceBinding.switchCounterBadge.setChecked(
|
||||
!activitySettingsAppearanceBinding.switchCounterBadge.isChecked()));
|
||||
|
||||
// hide email and language in user profile screen switcher
|
||||
activitySettingsAppearanceBinding.switchHideEmailLangInProfile.setChecked(
|
||||
Boolean.parseBoolean(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx,
|
||||
AppDatabaseSettings.APP_USER_PROFILE_HIDE_EMAIL_LANGUAGE_KEY)));
|
||||
|
||||
activitySettingsAppearanceBinding.switchHideEmailLangInProfile.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(isChecked),
|
||||
AppDatabaseSettings.APP_USER_PROFILE_HIDE_EMAIL_LANGUAGE_KEY);
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
activitySettingsAppearanceBinding.hideEmailLangInProfileFrame.setOnClickListener(
|
||||
v ->
|
||||
activitySettingsAppearanceBinding.switchHideEmailLangInProfile.setChecked(
|
||||
!activitySettingsAppearanceBinding.switchHideEmailLangInProfile
|
||||
.isChecked()));
|
||||
|
||||
// hide email in app navigation drawer switcher
|
||||
activitySettingsAppearanceBinding.switchHideEmailNavDrawer.setChecked(
|
||||
Boolean.parseBoolean(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_USER_HIDE_EMAIL_IN_NAV_KEY)));
|
||||
|
||||
activitySettingsAppearanceBinding.switchHideEmailNavDrawer.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(isChecked),
|
||||
AppDatabaseSettings.APP_USER_HIDE_EMAIL_IN_NAV_KEY);
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
activitySettingsAppearanceBinding.hideEmailNavDrawerFrame.setOnClickListener(
|
||||
v ->
|
||||
activitySettingsAppearanceBinding.switchHideEmailNavDrawer.setChecked(
|
||||
!activitySettingsAppearanceBinding.switchHideEmailNavDrawer
|
||||
.isChecked()));
|
||||
|
||||
// show labels in lists(issues, pr) - default is color dots
|
||||
activitySettingsAppearanceBinding.switchLabelsInListBadge.setChecked(
|
||||
Boolean.parseBoolean(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_LABELS_IN_LIST_KEY)));
|
||||
|
||||
activitySettingsAppearanceBinding.switchLabelsInListBadge.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(isChecked),
|
||||
AppDatabaseSettings.APP_LABELS_IN_LIST_KEY);
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
activitySettingsAppearanceBinding.labelsInListFrame.setOnClickListener(
|
||||
v ->
|
||||
activitySettingsAppearanceBinding.switchLabelsInListBadge.setChecked(
|
||||
!activitySettingsAppearanceBinding.switchLabelsInListBadge
|
||||
.isChecked()));
|
||||
|
||||
// theme selection dialog
|
||||
activitySettingsAppearanceBinding.themeSelectionFrame.setOnClickListener(
|
||||
view -> {
|
||||
MaterialAlertDialogBuilder materialAlertDialogBuilder =
|
||||
new MaterialAlertDialogBuilder(ctx)
|
||||
.setTitle(R.string.themeSelectorDialogTitle)
|
||||
.setSingleChoiceItems(
|
||||
themeList,
|
||||
themeSelectedChoice,
|
||||
(dialogInterfaceTheme, i) -> {
|
||||
themeSelectedChoice = i;
|
||||
activitySettingsAppearanceBinding.themeSelected
|
||||
.setText(themeList[i]);
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(i),
|
||||
AppDatabaseSettings.APP_THEME_KEY);
|
||||
|
||||
SettingsFragment.refreshParent = true;
|
||||
this.recreate();
|
||||
this.overridePendingTransition(0, 0);
|
||||
dialogInterfaceTheme.dismiss();
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
|
||||
materialAlertDialogBuilder.create().show();
|
||||
});
|
||||
|
||||
activitySettingsAppearanceBinding.lightThemeTimeSelectionFrame.setOnClickListener(
|
||||
view -> lightTimePicker());
|
||||
|
||||
activitySettingsAppearanceBinding.darkThemeTimeSelectionFrame.setOnClickListener(
|
||||
view -> darkTimePicker());
|
||||
|
||||
// custom font dialog
|
||||
activitySettingsAppearanceBinding.customFontFrame.setOnClickListener(
|
||||
view -> {
|
||||
MaterialAlertDialogBuilder materialAlertDialogBuilder =
|
||||
new MaterialAlertDialogBuilder(ctx)
|
||||
.setTitle(R.string.settingsCustomFontSelectorDialogTitle)
|
||||
.setCancelable(customFontSelectedChoice != -1)
|
||||
.setSingleChoiceItems(
|
||||
customFontList,
|
||||
customFontSelectedChoice,
|
||||
(dialogInterfaceCustomFont, i) -> {
|
||||
customFontSelectedChoice = i;
|
||||
activitySettingsAppearanceBinding.customFontSelected
|
||||
.setText(customFontList[i]);
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(i),
|
||||
AppDatabaseSettings.APP_FONT_KEY);
|
||||
|
||||
new Handler()
|
||||
.postDelayed(
|
||||
() -> {
|
||||
AppUtil.typeface =
|
||||
null; // reset typeface
|
||||
FontsOverride.setDefaultFont(
|
||||
this);
|
||||
SettingsFragment.refreshParent =
|
||||
true;
|
||||
this.recreate();
|
||||
this.overridePendingTransition(
|
||||
0, 0);
|
||||
},
|
||||
1000);
|
||||
|
||||
dialogInterfaceCustomFont.dismiss();
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
|
||||
materialAlertDialogBuilder.create().show();
|
||||
});
|
||||
|
||||
// fragment tabs animation dialog
|
||||
activitySettingsAppearanceBinding.fragmentTabsAnimationFrame.setOnClickListener(
|
||||
view -> {
|
||||
MaterialAlertDialogBuilder materialAlertDialogBuilder =
|
||||
new MaterialAlertDialogBuilder(ctx)
|
||||
.setTitle(R.string.fragmentTabsAnimationHeader)
|
||||
.setCancelable(fragmentTabsAnimationSelectedChoice != -1)
|
||||
.setSingleChoiceItems(
|
||||
fragmentTabsAnimationList,
|
||||
fragmentTabsAnimationSelectedChoice,
|
||||
(dialogInterfaceTabsAnimation, i) -> {
|
||||
fragmentTabsAnimationSelectedChoice = i;
|
||||
activitySettingsAppearanceBinding
|
||||
.fragmentTabsAnimationFrameSelected.setText(
|
||||
fragmentTabsAnimationList[i]);
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(i),
|
||||
AppDatabaseSettings.APP_TABS_ANIMATION_KEY);
|
||||
|
||||
SettingsFragment.refreshParent = true;
|
||||
this.recreate();
|
||||
this.overridePendingTransition(0, 0);
|
||||
dialogInterfaceTabsAnimation.dismiss();
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
|
||||
materialAlertDialogBuilder.create().show();
|
||||
});
|
||||
|
||||
// language selector dialog
|
||||
activitySettingsAppearanceBinding.helpTranslate.setOnClickListener(
|
||||
v12 ->
|
||||
AppUtil.openUrlInBrowser(
|
||||
this, getResources().getString(R.string.crowdInLink)));
|
||||
|
||||
String[] locale =
|
||||
AppDatabaseSettings.getSettingsValue(ctx, AppDatabaseSettings.APP_LOCALE_KEY)
|
||||
.split("\\|");
|
||||
langSelectedChoice = Integer.parseInt(locale[0]);
|
||||
activitySettingsAppearanceBinding.tvLanguageSelected.setText(
|
||||
lang.get(lang.keySet().toArray(new String[0])[langSelectedChoice]));
|
||||
|
||||
// language dialog
|
||||
activitySettingsAppearanceBinding.langFrame.setOnClickListener(
|
||||
view -> {
|
||||
MaterialAlertDialogBuilder materialAlertDialogBuilder =
|
||||
new MaterialAlertDialogBuilder(ctx)
|
||||
.setTitle(R.string.settingsLanguageSelectorDialogTitle)
|
||||
.setCancelable(langSelectedChoice != -1)
|
||||
.setNeutralButton(getString(R.string.cancelButton), null)
|
||||
.setSingleChoiceItems(
|
||||
lang.values().toArray(new String[0]),
|
||||
langSelectedChoice,
|
||||
(dialogInterface, i) -> {
|
||||
String selectedLanguage =
|
||||
lang.keySet().toArray(new String[0])[i];
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
i + "|" + selectedLanguage,
|
||||
AppDatabaseSettings.APP_LOCALE_KEY);
|
||||
|
||||
SettingsFragment.refreshParent = true;
|
||||
this.overridePendingTransition(0, 0);
|
||||
dialogInterface.dismiss();
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
this.recreate();
|
||||
});
|
||||
|
||||
materialAlertDialogBuilder.create().show();
|
||||
});
|
||||
}
|
||||
|
||||
public void lightTimePicker() {
|
||||
|
||||
int hour =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_THEME_AUTO_LIGHT_HOUR_KEY));
|
||||
int minute =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_THEME_AUTO_LIGHT_MIN_KEY));
|
||||
|
||||
MaterialTimePicker materialTimePicker =
|
||||
new MaterialTimePicker.Builder().setHour(hour).setMinute(minute).build();
|
||||
|
||||
materialTimePicker.addOnPositiveButtonClickListener(
|
||||
selection -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(materialTimePicker.getHour()),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_LIGHT_HOUR_KEY);
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(materialTimePicker.getMinute()),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_LIGHT_MIN_KEY);
|
||||
SettingsFragment.refreshParent = true;
|
||||
overridePendingTransition(0, 0);
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
recreate();
|
||||
});
|
||||
|
||||
materialTimePicker.show(getSupportFragmentManager(), "fragmentManager");
|
||||
}
|
||||
|
||||
public void darkTimePicker() {
|
||||
|
||||
int hour =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_THEME_AUTO_DARK_HOUR_KEY));
|
||||
int minute =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
ctx, AppDatabaseSettings.APP_THEME_AUTO_DARK_MIN_KEY));
|
||||
|
||||
MaterialTimePicker materialTimePicker =
|
||||
new MaterialTimePicker.Builder().setHour(hour).setMinute(minute).build();
|
||||
|
||||
materialTimePicker.addOnPositiveButtonClickListener(
|
||||
selection -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(materialTimePicker.getHour()),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_DARK_HOUR_KEY);
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
ctx,
|
||||
String.valueOf(materialTimePicker.getMinute()),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_DARK_MIN_KEY);
|
||||
SettingsFragment.refreshParent = true;
|
||||
overridePendingTransition(0, 0);
|
||||
SnackBar.success(
|
||||
ctx,
|
||||
findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
recreate();
|
||||
});
|
||||
|
||||
materialTimePicker.show(getSupportFragmentManager(), "fragmentManager");
|
||||
}
|
||||
|
||||
private static String getLanguageDisplayName(String langCode) {
|
||||
Locale english = new Locale("en");
|
||||
|
||||
String[] multiCodeLang = langCode.split("-");
|
||||
String countryCode;
|
||||
if (langCode.contains("-")) {
|
||||
langCode = multiCodeLang[0];
|
||||
countryCode = multiCodeLang[1];
|
||||
} else {
|
||||
countryCode = "";
|
||||
}
|
||||
|
||||
Locale translated = new Locale(langCode, countryCode);
|
||||
return String.format(
|
||||
"%s (%s)",
|
||||
translated.getDisplayName(translated), translated.getDisplayName(english));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,492 @@
|
||||
package org.mian.gitnex.fragments;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
||||
import com.google.android.material.chip.Chip;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.timepicker.MaterialTimePicker;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Locale;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.databinding.BottomSheetSettingsAppearanceBinding;
|
||||
import org.mian.gitnex.helpers.AppDatabaseSettings;
|
||||
import org.mian.gitnex.helpers.AppUtil;
|
||||
import org.mian.gitnex.helpers.FontsOverride;
|
||||
import org.mian.gitnex.helpers.SnackBar;
|
||||
|
||||
/**
|
||||
* @author mmarif
|
||||
*/
|
||||
public class BottomSheetSettingsAppearanceFragment extends BottomSheetDialogFragment {
|
||||
|
||||
private static final String TAG = "BottomSheetSettingsAppearance";
|
||||
private BottomSheetSettingsAppearanceBinding binding;
|
||||
private static int customFontSelectedChoice;
|
||||
private static String[] themeList;
|
||||
private static int themeSelectedChoice;
|
||||
private static int langSelectedChoice;
|
||||
private static int fragmentTabsAnimationSelectedChoice;
|
||||
private LinkedHashMap<String, String> lang;
|
||||
|
||||
@Nullable @Override
|
||||
public View onCreateView(
|
||||
@NonNull LayoutInflater inflater,
|
||||
@Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
binding = BottomSheetSettingsAppearanceBinding.inflate(inflater, container, false);
|
||||
|
||||
lang = new LinkedHashMap<>();
|
||||
lang.put("sys", getString(R.string.settingsLanguageSystem));
|
||||
for (String langCode : getResources().getStringArray(R.array.languages)) {
|
||||
lang.put(langCode, getLanguageDisplayName(langCode));
|
||||
}
|
||||
|
||||
String[] customFontList = getResources().getStringArray(R.array.fonts);
|
||||
String[] fragmentTabsAnimationList =
|
||||
getResources().getStringArray(R.array.fragmentTabsAnimation);
|
||||
themeList =
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.S || "S".equals(Build.VERSION.CODENAME)
|
||||
? getResources().getStringArray(R.array.themesAndroid12)
|
||||
: getResources().getStringArray(R.array.themes);
|
||||
|
||||
customFontSelectedChoice =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(), AppDatabaseSettings.APP_FONT_KEY));
|
||||
themeSelectedChoice =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(), AppDatabaseSettings.APP_THEME_KEY));
|
||||
fragmentTabsAnimationSelectedChoice =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(), AppDatabaseSettings.APP_TABS_ANIMATION_KEY));
|
||||
String[] locale =
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(), AppDatabaseSettings.APP_LOCALE_KEY)
|
||||
.split("\\|");
|
||||
langSelectedChoice = Integer.parseInt(locale[0]);
|
||||
|
||||
String lightMinute =
|
||||
String.valueOf(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_LIGHT_MIN_KEY));
|
||||
String lightHour =
|
||||
String.valueOf(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_LIGHT_HOUR_KEY));
|
||||
lightMinute = lightMinute.length() == 1 ? "0" + lightMinute : lightMinute;
|
||||
lightHour = lightHour.length() == 1 ? "0" + lightHour : lightHour;
|
||||
|
||||
String darkMinute =
|
||||
String.valueOf(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(), AppDatabaseSettings.APP_THEME_AUTO_DARK_MIN_KEY));
|
||||
String darkHour =
|
||||
String.valueOf(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_DARK_HOUR_KEY));
|
||||
darkMinute = darkMinute.length() == 1 ? "0" + darkMinute : darkMinute;
|
||||
darkHour = darkHour.length() == 1 ? "0" + darkHour : darkHour;
|
||||
|
||||
for (int i = 0; i < themeList.length; i++) {
|
||||
Chip chip = (Chip) inflater.inflate(R.layout.chip_item, binding.themeChipGroup, false);
|
||||
chip.setId(View.generateViewId());
|
||||
chip.setText(themeList[i]);
|
||||
chip.setCheckable(true);
|
||||
chip.setClickable(true);
|
||||
chip.setFocusable(true);
|
||||
if (i == themeSelectedChoice) chip.setChecked(true);
|
||||
binding.themeChipGroup.addView(chip);
|
||||
}
|
||||
|
||||
for (int i = 0; i < customFontList.length; i++) {
|
||||
Chip chip =
|
||||
(Chip) inflater.inflate(R.layout.chip_item, binding.customFontChipGroup, false);
|
||||
chip.setId(View.generateViewId());
|
||||
chip.setText(customFontList[i]);
|
||||
chip.setCheckable(true);
|
||||
chip.setClickable(true);
|
||||
chip.setFocusable(true);
|
||||
if (i == customFontSelectedChoice) chip.setChecked(true);
|
||||
binding.customFontChipGroup.addView(chip);
|
||||
}
|
||||
|
||||
for (int i = 0; i < fragmentTabsAnimationList.length; i++) {
|
||||
Chip chip =
|
||||
(Chip)
|
||||
inflater.inflate(
|
||||
R.layout.chip_item,
|
||||
binding.fragmentTabsAnimationChipGroup,
|
||||
false);
|
||||
chip.setId(View.generateViewId());
|
||||
chip.setText(fragmentTabsAnimationList[i]);
|
||||
chip.setCheckable(true);
|
||||
chip.setClickable(true);
|
||||
chip.setFocusable(true);
|
||||
if (i == fragmentTabsAnimationSelectedChoice) chip.setChecked(true);
|
||||
binding.fragmentTabsAnimationChipGroup.addView(chip);
|
||||
}
|
||||
|
||||
binding.lightThemeSelectedTime.setText(
|
||||
getResources()
|
||||
.getString(R.string.settingsThemeTimeSelectedHint, lightHour, lightMinute));
|
||||
binding.darkThemeSelectedTime.setText(
|
||||
getResources()
|
||||
.getString(R.string.settingsThemeTimeSelectedHint, darkHour, darkMinute));
|
||||
binding.tvLanguageSelected.setText(
|
||||
lang.get(lang.keySet().toArray(new String[0])[langSelectedChoice]));
|
||||
binding.switchCounterBadge.setChecked(
|
||||
Boolean.parseBoolean(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(), AppDatabaseSettings.APP_COUNTER_KEY)));
|
||||
binding.switchHideEmailLangInProfile.setChecked(
|
||||
Boolean.parseBoolean(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(),
|
||||
AppDatabaseSettings.APP_USER_PROFILE_HIDE_EMAIL_LANGUAGE_KEY)));
|
||||
binding.switchHideEmailNavDrawer.setChecked(
|
||||
Boolean.parseBoolean(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(),
|
||||
AppDatabaseSettings.APP_USER_HIDE_EMAIL_IN_NAV_KEY)));
|
||||
binding.switchLabelsInListBadge.setChecked(
|
||||
Boolean.parseBoolean(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(), AppDatabaseSettings.APP_LABELS_IN_LIST_KEY)));
|
||||
|
||||
binding.lightThemeTimeSelectionFrame.setVisibility(
|
||||
themeList[themeSelectedChoice].startsWith("Auto") ? View.VISIBLE : View.GONE);
|
||||
binding.darkThemeTimeSelectionFrame.setVisibility(
|
||||
themeList[themeSelectedChoice].startsWith("Auto") ? View.VISIBLE : View.GONE);
|
||||
|
||||
binding.themeChipGroup.setOnCheckedStateChangeListener(
|
||||
(group, checkedIds) -> {
|
||||
Log.d(TAG, "Theme chip checked: " + checkedIds);
|
||||
if (checkedIds.size() == 1) {
|
||||
int newSelection = getThemeChipPosition(checkedIds.get(0));
|
||||
Log.d(TAG, "Theme new selection: " + newSelection);
|
||||
if (newSelection != themeSelectedChoice) {
|
||||
themeSelectedChoice = newSelection;
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(newSelection),
|
||||
AppDatabaseSettings.APP_THEME_KEY);
|
||||
binding.lightThemeTimeSelectionFrame.setVisibility(
|
||||
themeList[newSelection].startsWith("Auto")
|
||||
? View.VISIBLE
|
||||
: View.GONE);
|
||||
binding.darkThemeTimeSelectionFrame.setVisibility(
|
||||
themeList[newSelection].startsWith("Auto")
|
||||
? View.VISIBLE
|
||||
: View.GONE);
|
||||
SettingsFragment.refreshParent = true;
|
||||
requireActivity().recreate();
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity().findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
binding.lightThemeTimeSelectionFrame.setOnClickListener(v -> lightTimePicker());
|
||||
binding.darkThemeTimeSelectionFrame.setOnClickListener(v -> darkTimePicker());
|
||||
|
||||
binding.customFontChipGroup.setOnCheckedStateChangeListener(
|
||||
(group, checkedIds) -> {
|
||||
Log.d(TAG, "Font chip checked: " + checkedIds);
|
||||
if (checkedIds.size() == 1) {
|
||||
int newSelection = getCustomFontChipPosition(checkedIds.get(0));
|
||||
Log.d(TAG, "Font new selection: " + newSelection);
|
||||
if (newSelection != customFontSelectedChoice) {
|
||||
customFontSelectedChoice = newSelection;
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(newSelection),
|
||||
AppDatabaseSettings.APP_FONT_KEY);
|
||||
new Handler()
|
||||
.postDelayed(
|
||||
() -> {
|
||||
AppUtil.typeface = null; // reset typeface
|
||||
FontsOverride.setDefaultFont(requireContext());
|
||||
SettingsFragment.refreshParent = true;
|
||||
requireActivity().recreate();
|
||||
},
|
||||
1000);
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity().findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
binding.fragmentTabsAnimationChipGroup.setOnCheckedStateChangeListener(
|
||||
(group, checkedIds) -> {
|
||||
Log.d(TAG, "Tabs animation chip checked: " + checkedIds);
|
||||
if (checkedIds.size() == 1) {
|
||||
int newSelection = getFragmentTabsAnimationChipPosition(checkedIds.get(0));
|
||||
Log.d(TAG, "Tabs animation new selection: " + newSelection);
|
||||
if (newSelection != fragmentTabsAnimationSelectedChoice) {
|
||||
fragmentTabsAnimationSelectedChoice = newSelection;
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(newSelection),
|
||||
AppDatabaseSettings.APP_TABS_ANIMATION_KEY);
|
||||
SettingsFragment.refreshParent = true;
|
||||
requireActivity().recreate();
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity().findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
binding.counterBadgeFrame.setOnClickListener(
|
||||
v ->
|
||||
binding.switchCounterBadge.setChecked(
|
||||
!binding.switchCounterBadge.isChecked()));
|
||||
binding.switchCounterBadge.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(isChecked),
|
||||
AppDatabaseSettings.APP_COUNTER_KEY);
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity().findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
|
||||
binding.hideEmailLangInProfileFrame.setOnClickListener(
|
||||
v ->
|
||||
binding.switchHideEmailLangInProfile.setChecked(
|
||||
!binding.switchHideEmailLangInProfile.isChecked()));
|
||||
binding.switchHideEmailLangInProfile.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(isChecked),
|
||||
AppDatabaseSettings.APP_USER_PROFILE_HIDE_EMAIL_LANGUAGE_KEY);
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity().findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
|
||||
binding.hideEmailNavDrawerFrame.setOnClickListener(
|
||||
v ->
|
||||
binding.switchHideEmailNavDrawer.setChecked(
|
||||
!binding.switchHideEmailNavDrawer.isChecked()));
|
||||
binding.switchHideEmailNavDrawer.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(isChecked),
|
||||
AppDatabaseSettings.APP_USER_HIDE_EMAIL_IN_NAV_KEY);
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity().findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
|
||||
binding.labelsInListFrame.setOnClickListener(
|
||||
v ->
|
||||
binding.switchLabelsInListBadge.setChecked(
|
||||
!binding.switchLabelsInListBadge.isChecked()));
|
||||
binding.switchLabelsInListBadge.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(isChecked),
|
||||
AppDatabaseSettings.APP_LABELS_IN_LIST_KEY);
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity().findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
|
||||
binding.langFrame.setOnClickListener(
|
||||
v -> {
|
||||
MaterialAlertDialogBuilder builder =
|
||||
new MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.settingsLanguageSelectorDialogTitle)
|
||||
.setCancelable(langSelectedChoice != -1)
|
||||
.setNeutralButton(R.string.cancelButton, null)
|
||||
.setSingleChoiceItems(
|
||||
lang.values().toArray(new String[0]),
|
||||
langSelectedChoice,
|
||||
(dialog, i) -> {
|
||||
String selectedLanguage =
|
||||
lang.keySet().toArray(new String[0])[i];
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
i + "|" + selectedLanguage,
|
||||
AppDatabaseSettings.APP_LOCALE_KEY);
|
||||
SettingsFragment.refreshParent = true;
|
||||
requireActivity().recreate();
|
||||
dialog.dismiss();
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity()
|
||||
.findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
builder.create().show();
|
||||
});
|
||||
|
||||
binding.helpTranslate.setOnClickListener(
|
||||
v ->
|
||||
AppUtil.openUrlInBrowser(
|
||||
requireContext(), getResources().getString(R.string.crowdInLink)));
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
private void lightTimePicker() {
|
||||
int hour =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_LIGHT_HOUR_KEY));
|
||||
int minute =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_LIGHT_MIN_KEY));
|
||||
MaterialTimePicker picker =
|
||||
new MaterialTimePicker.Builder().setHour(hour).setMinute(minute).build();
|
||||
picker.addOnPositiveButtonClickListener(
|
||||
v -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(picker.getHour()),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_LIGHT_HOUR_KEY);
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(picker.getMinute()),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_LIGHT_MIN_KEY);
|
||||
SettingsFragment.refreshParent = true;
|
||||
requireActivity().recreate();
|
||||
String minuteStr =
|
||||
picker.getMinute() < 10
|
||||
? "0" + picker.getMinute()
|
||||
: String.valueOf(picker.getMinute());
|
||||
String hourStr =
|
||||
picker.getHour() < 10
|
||||
? "0" + picker.getHour()
|
||||
: String.valueOf(picker.getHour());
|
||||
binding.lightThemeSelectedTime.setText(
|
||||
getResources()
|
||||
.getString(
|
||||
R.string.settingsThemeTimeSelectedHint,
|
||||
hourStr,
|
||||
minuteStr));
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity().findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
picker.show(getParentFragmentManager(), "lightTimePicker");
|
||||
}
|
||||
|
||||
private void darkTimePicker() {
|
||||
int hour =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_DARK_HOUR_KEY));
|
||||
int minute =
|
||||
Integer.parseInt(
|
||||
AppDatabaseSettings.getSettingsValue(
|
||||
requireContext(), AppDatabaseSettings.APP_THEME_AUTO_DARK_MIN_KEY));
|
||||
MaterialTimePicker picker =
|
||||
new MaterialTimePicker.Builder().setHour(hour).setMinute(minute).build();
|
||||
picker.addOnPositiveButtonClickListener(
|
||||
v -> {
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(picker.getHour()),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_DARK_HOUR_KEY);
|
||||
AppDatabaseSettings.updateSettingsValue(
|
||||
requireContext(),
|
||||
String.valueOf(picker.getMinute()),
|
||||
AppDatabaseSettings.APP_THEME_AUTO_DARK_MIN_KEY);
|
||||
SettingsFragment.refreshParent = true;
|
||||
requireActivity().recreate();
|
||||
String minuteStr =
|
||||
picker.getMinute() < 10
|
||||
? "0" + picker.getMinute()
|
||||
: String.valueOf(picker.getMinute());
|
||||
String hourStr =
|
||||
picker.getHour() < 10
|
||||
? "0" + picker.getHour()
|
||||
: String.valueOf(picker.getHour());
|
||||
binding.darkThemeSelectedTime.setText(
|
||||
getResources()
|
||||
.getString(
|
||||
R.string.settingsThemeTimeSelectedHint,
|
||||
hourStr,
|
||||
minuteStr));
|
||||
SnackBar.success(
|
||||
requireContext(),
|
||||
requireActivity().findViewById(android.R.id.content),
|
||||
getString(R.string.settingsSave));
|
||||
});
|
||||
picker.show(getParentFragmentManager(), "darkTimePicker");
|
||||
}
|
||||
|
||||
private int getThemeChipPosition(int checkedId) {
|
||||
for (int i = 0; i < binding.themeChipGroup.getChildCount(); i++) {
|
||||
Chip chip = (Chip) binding.themeChipGroup.getChildAt(i);
|
||||
if (chip.getId() == checkedId) return i;
|
||||
}
|
||||
return themeSelectedChoice;
|
||||
}
|
||||
|
||||
private int getCustomFontChipPosition(int checkedId) {
|
||||
for (int i = 0; i < binding.customFontChipGroup.getChildCount(); i++) {
|
||||
Chip chip = (Chip) binding.customFontChipGroup.getChildAt(i);
|
||||
if (chip.getId() == checkedId) return i;
|
||||
}
|
||||
return customFontSelectedChoice;
|
||||
}
|
||||
|
||||
private int getFragmentTabsAnimationChipPosition(int checkedId) {
|
||||
for (int i = 0; i < binding.fragmentTabsAnimationChipGroup.getChildCount(); i++) {
|
||||
Chip chip = (Chip) binding.fragmentTabsAnimationChipGroup.getChildAt(i);
|
||||
if (chip.getId() == checkedId) return i;
|
||||
}
|
||||
return fragmentTabsAnimationSelectedChoice;
|
||||
}
|
||||
|
||||
private String getLanguageDisplayName(String langCode) {
|
||||
Locale english = new Locale("en");
|
||||
String[] multiCodeLang = langCode.split("-");
|
||||
String countryCode = langCode.contains("-") ? multiCodeLang[1] : "";
|
||||
langCode = multiCodeLang[0];
|
||||
Locale translated = new Locale(langCode, countryCode);
|
||||
return String.format(
|
||||
"%s (%s)",
|
||||
translated.getDisplayName(translated), translated.getDisplayName(english));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
binding = null;
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,6 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.activities.SettingsAppearanceActivity;
|
||||
import org.mian.gitnex.databinding.FragmentSettingsBinding;
|
||||
|
||||
/**
|
||||
@@ -43,7 +42,9 @@ public class SettingsFragment extends Fragment {
|
||||
.show(getChildFragmentManager(), "BottomSheetSettingsGeneral"));
|
||||
|
||||
fragmentSettingsBinding.appearanceFrame.setOnClickListener(
|
||||
v1 -> startActivity(new Intent(ctx, SettingsAppearanceActivity.class)));
|
||||
v1 ->
|
||||
new BottomSheetSettingsAppearanceFragment()
|
||||
.show(getChildFragmentManager(), "BottomSheetSettingsAppearance"));
|
||||
|
||||
fragmentSettingsBinding.codeEditorFrame.setOnClickListener(
|
||||
v1 ->
|
||||
|
||||
@@ -1,405 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appBarLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||
style="?attr/collapsingToolbarLayoutLargeStyle"
|
||||
android:layout_width="match_parent"
|
||||
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
app:contentScrim="?attr/primaryBackgroundColor"
|
||||
android:layout_height="?attr/collapsingToolbarLayoutLargeSize">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/topAppBar"
|
||||
android:layout_width="match_parent"
|
||||
android:elevation="0dp"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:title="@string/settingsAppearanceHeader"
|
||||
app:layout_collapseMode="pin"
|
||||
app:navigationIcon="@drawable/ic_close" />
|
||||
|
||||
</com.google.android.material.appbar.CollapsingToolbarLayout>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/dimen16dp">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/themeSelectionFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:layout_marginTop="@dimen/dimen8dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/themeHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/themeSelectionHeaderText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/themeSelected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/themeSelectionSelectedText"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lightThemeTimeSelectionFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lightThemeTimeHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsLightThemeTimeSelectorHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lightThemeSelectedTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsThemeTimeSelectedHint"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/darkThemeTimeSelectionFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/darkThemeTimeHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsDarkThemeTimeSelectorHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/darkThemeSelectedTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsThemeTimeSelectedHint"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/customFontFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/customFontHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsCustomFontHeaderText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/customFontSelected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsCustomFontDefault"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/fragmentTabsAnimationFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/fragmentTabsAnimationFrameHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/fragmentTabsAnimationHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/fragmentTabsAnimationFrameSelected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/fadeOut"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/counterBadgeFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCounterBadgeHeader"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/settingsCounterBadges"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switchCounterBadge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/settingsCounterBadges" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/labelsInListFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLabelsInListHeader"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:paddingStart="@dimen/dimen0dp"
|
||||
android:text="@string/settingsLabelsInListHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/switchLabelsInListBadge"
|
||||
app:layout_constraintBaseline_toBaselineOf="@id/switchLabelsInListBadge"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switchLabelsInListBadge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/settingsLabelsInListHeader"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dimen96dp"
|
||||
android:text="@string/settingsLabelsInListHint"
|
||||
android:textColor="?attr/hintColor"
|
||||
android:textSize="@dimen/dimen12sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/hideEmailLangInProfileFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvHideEmailLangInProfileHeader"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:paddingStart="@dimen/dimen0dp"
|
||||
android:text="@string/hideEmailLangInProfileHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/switchHideEmailLangInProfile"
|
||||
app:layout_constraintBaseline_toBaselineOf="@id/switchHideEmailLangInProfile"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switchHideEmailLangInProfile"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/hideEmailLangInProfileHeader"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dimen96dp"
|
||||
android:text="@string/hideEmailLangInProfileHint"
|
||||
android:textColor="?attr/hintColor"
|
||||
android:textSize="@dimen/dimen12sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/hideEmailNavDrawerFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvHideEmailNavDrawerHeader"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:paddingStart="@dimen/dimen0dp"
|
||||
android:text="@string/hideEmailNavDrawerHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/switchHideEmailNavDrawer"
|
||||
app:layout_constraintBaseline_toBaselineOf="@id/switchHideEmailNavDrawer"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switchHideEmailNavDrawer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/hideEmailNavDrawerHeader"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dimen96dp"
|
||||
android:text="@string/hideEmailNavDrawerHint"
|
||||
android:textColor="?attr/hintColor"
|
||||
android:textSize="@dimen/dimen12sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/langFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguageHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsLanguageSelectorHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguageSelected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsLanguageSelectedHeaderDefault"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/helpTranslate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="web"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:paddingTop="@dimen/dimen12dp"
|
||||
android:text="@string/settingsHelpTranslateText"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
402
app/src/main/res/layout/bottom_sheet_settings_appearance.xml
Normal file
402
app/src/main/res/layout/bottom_sheet_settings_appearance.xml
Normal file
@@ -0,0 +1,402 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.core.widget.NestedScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/dimen6dp"
|
||||
android:paddingBottom="@dimen/dimen12dp">
|
||||
|
||||
<View
|
||||
android:layout_width="@dimen/dimen32dp"
|
||||
android:layout_height="@dimen/dimen6dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginBottom="@dimen/dimen8dp"
|
||||
android:background="@drawable/bottom_sheet_handle"
|
||||
android:backgroundTint="?attr/primaryTextColor" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/headerFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/dimen8dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bottomSheetHeader"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/settingsAppearanceHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen18sp"/>
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
style="?attr/materialCardViewFilledStyle"
|
||||
android:layout_width="@dimen/dimen28dp"
|
||||
android:layout_height="@dimen/dimen4dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="@dimen/dimen8dp"
|
||||
android:layout_marginBottom="@dimen/dimen16dp"
|
||||
app:cardCornerRadius="@dimen/dimen24dp"
|
||||
app:cardElevation="@dimen/dimen0dp">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/fabColor" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/themeSelectionFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/themeHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/themeSelectionHeaderText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:id="@+id/themeChipGroup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen8dp"
|
||||
app:singleSelection="true"
|
||||
app:selectionRequired="true" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lightThemeTimeSelectionFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lightThemeTimeHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsLightThemeTimeSelectorHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lightThemeSelectedTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:text="@string/settingsThemeTimeSelectedHint"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/darkThemeTimeSelectionFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/darkThemeTimeHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsDarkThemeTimeSelectorHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/darkThemeSelectedTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:text="@string/settingsThemeTimeSelectedHint"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/customFontFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/customFontHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsCustomFontHeaderText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:id="@+id/customFontChipGroup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen8dp"
|
||||
app:singleSelection="true"
|
||||
app:selectionRequired="true" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/fragmentTabsAnimationFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/fragmentTabsAnimationFrameHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/fragmentTabsAnimationHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:id="@+id/fragmentTabsAnimationChipGroup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen8dp"
|
||||
app:singleSelection="true"
|
||||
app:selectionRequired="true" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/counterBadgeFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCounterBadgeHeader"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.90"
|
||||
android:text="@string/settingsCounterBadges"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switchCounterBadge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/settingsCounterBadges"
|
||||
style="@style/m3SwitchStyle"
|
||||
android:layout_weight="0.10" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/labelsInListFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLabelsInListHeader"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.90"
|
||||
android:text="@string/settingsLabelsInListHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switchLabelsInListBadge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/settingsLabelsInListHeader"
|
||||
style="@style/m3SwitchStyle"
|
||||
android:layout_weight="0.10" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:text="@string/settingsLabelsInListHint"
|
||||
android:textColor="?attr/hintColor"
|
||||
android:textSize="@dimen/dimen12sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/hideEmailLangInProfileFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvHideEmailLangInProfileHeader"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.90"
|
||||
android:text="@string/hideEmailLangInProfileHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switchHideEmailLangInProfile"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/hideEmailLangInProfileHeader"
|
||||
style="@style/m3SwitchStyle"
|
||||
android:layout_weight="0.10" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:text="@string/hideEmailLangInProfileHint"
|
||||
android:textColor="?attr/hintColor"
|
||||
android:textSize="@dimen/dimen12sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/hideEmailNavDrawerFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvHideEmailNavDrawerHeader"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.90"
|
||||
android:text="@string/hideEmailNavDrawerHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/switchHideEmailNavDrawer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/hideEmailNavDrawerHeader"
|
||||
style="@style/m3SwitchStyle"
|
||||
android:layout_weight="0.10" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:text="@string/hideEmailNavDrawerHint"
|
||||
android:textColor="?attr/hintColor"
|
||||
android:textSize="@dimen/dimen12sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/langFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguageHeaderSelector"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsLanguageSelectorHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLanguageSelected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:text="@string/settingsLanguageSelectedHeaderDefault"
|
||||
android:textColor="?attr/selectedTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/helpTranslate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:layout_marginBottom="@dimen/dimen16dp"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:layout_marginEnd="@dimen/dimen16dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:text="@string/settingsHelpTranslateText"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
9
app/src/main/res/layout/chip_item.xml
Normal file
9
app/src/main/res/layout/chip_item.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.google.android.material.chip.Chip
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/CustomChipFilter"
|
||||
android:checkable="true"
|
||||
android:clickable="true"
|
||||
android:focusable="true" />
|
||||
@@ -39,7 +39,6 @@
|
||||
<item>Pitch Black</item>
|
||||
<item>@string/followSystem</item>
|
||||
<item>@string/followSystemBlack</item>
|
||||
|
||||
</string-array>
|
||||
|
||||
<string-array name="themesAndroid12">
|
||||
|
||||
Reference in New Issue
Block a user