|
|
|
@@ -1,19 +1,29 @@
|
|
|
|
|
package ru.vtosters.lite.ui.fragments;
|
|
|
|
|
|
|
|
|
|
import static ru.vtosters.lite.utils.AndroidUtils.edit;
|
|
|
|
|
import static ru.vtosters.lite.utils.AndroidUtils.isTablet;
|
|
|
|
|
import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer;
|
|
|
|
|
import static ru.vtosters.lite.utils.Preferences.milkshake;
|
|
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
|
import android.content.Intent;
|
|
|
|
|
import android.content.res.ColorStateList;
|
|
|
|
|
import android.graphics.Color;
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
|
import android.widget.LinearLayout;
|
|
|
|
|
|
|
|
|
|
import androidx.appcompat.app.AlertDialog;
|
|
|
|
|
import androidx.preference.Preference;
|
|
|
|
|
|
|
|
|
|
import com.vk.core.util.ToastUtils;
|
|
|
|
|
import com.vk.navigation.Navigator;
|
|
|
|
|
import com.vtosters.lite.R;
|
|
|
|
|
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
|
|
|
|
|
import com.vtosters.lite.ui.EditText;
|
|
|
|
|
|
|
|
|
|
import ru.vtosters.lite.themes.ColorReferences;
|
|
|
|
|
import ru.vtosters.lite.themes.ThemesCore;
|
|
|
|
|
import ru.vtosters.lite.ui.PreferencesUtil;
|
|
|
|
|
import ru.vtosters.lite.utils.AndroidUtils;
|
|
|
|
|
import ru.vtosters.lite.utils.LifecycleUtils;
|
|
|
|
|
import ru.vtosters.lite.utils.Preferences;
|
|
|
|
|
import ru.vtosters.lite.utils.ThemesUtils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
|
|
|
@@ -26,6 +36,7 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void prefs() {
|
|
|
|
|
findPreference("accent_color").setOnPreferenceClickListener(new AccentDialog());
|
|
|
|
|
findPreference("navbar").setOnPreferenceClickListener(new restart());
|
|
|
|
|
findPreference("milkshake").setOnPreferenceClickListener(new restart());
|
|
|
|
|
findPreference("darktheme").setOnPreferenceChangeListener(new restartdark());
|
|
|
|
@@ -35,9 +46,9 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
|
|
|
|
findPreference("dockbar_accent").setOnPreferenceClickListener(new restart());
|
|
|
|
|
findPreference("dockcounter").setOnPreferenceClickListener(new restart());
|
|
|
|
|
findPreference("newsfeed_notif").setOnPreferenceClickListener(new restart());
|
|
|
|
|
findPreference("newsfeed_notif").setVisible(milkshake());
|
|
|
|
|
findPreference("newsfeed_notif").setVisible(Preferences.milkshake());
|
|
|
|
|
|
|
|
|
|
if (isTablet()) {
|
|
|
|
|
if (AndroidUtils.isTablet()) {
|
|
|
|
|
findPreference("dockbarsett").setVisible(false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -50,7 +61,7 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
|
|
|
|
public static class restart implements Preference.OnPreferenceClickListener {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onPreferenceClick(Preference preference) {
|
|
|
|
|
restartApplicationWithTimer();
|
|
|
|
|
LifecycleUtils.restartApplicationWithTimer();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -58,8 +69,8 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
|
|
|
|
public static class restartlight implements Preference.OnPreferenceChangeListener {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object o) {
|
|
|
|
|
edit().putString("lighttheme", o.toString()).commit();
|
|
|
|
|
restartApplicationWithTimer();
|
|
|
|
|
AndroidUtils.edit().putString("lighttheme", o.toString()).commit();
|
|
|
|
|
LifecycleUtils.restartApplicationWithTimer();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -67,8 +78,8 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
|
|
|
|
public static class restartdark implements Preference.OnPreferenceChangeListener {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object o) {
|
|
|
|
|
edit().putString("darktheme", o.toString()).commit();
|
|
|
|
|
restartApplicationWithTimer();
|
|
|
|
|
AndroidUtils.edit().putString("darktheme", o.toString()).commit();
|
|
|
|
|
LifecycleUtils.restartApplicationWithTimer();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -83,4 +94,58 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private class AccentDialog implements Preference.OnPreferenceClickListener {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onPreferenceClick(Preference preference) {
|
|
|
|
|
LinearLayout linearLayout = new LinearLayout(requireContext());
|
|
|
|
|
|
|
|
|
|
final EditText editText = new EditText(requireContext());
|
|
|
|
|
editText.setHint("Акцент");
|
|
|
|
|
editText.setText(ThemesUtils.hex(AndroidUtils.getPreferences().getInt("accent_color", ColorReferences.stockAccent)));
|
|
|
|
|
editText.setHintTextColor(PreferencesUtil.getSTextColor(requireActivity()));
|
|
|
|
|
editText.setBackgroundTintList(ColorStateList.valueOf(PreferencesUtil.getTextColor(requireActivity())));
|
|
|
|
|
|
|
|
|
|
linearLayout.addView(editText);
|
|
|
|
|
editText.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
|
|
|
|
|
ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) editText.getLayoutParams());
|
|
|
|
|
margin.setMargins(AndroidUtils.dp2px(24f), 0, AndroidUtils.dp2px(24f), 0);
|
|
|
|
|
editText.setLayoutParams(margin);
|
|
|
|
|
|
|
|
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
|
|
|
|
|
builder.setTitle("Акценты");
|
|
|
|
|
builder.setMessage("Это изменит цвет иконки таббара, ссылки и.т.д.\nДанная функция еще в разработке, поэтому возможны недокрасы!\n\nЦвет указывается в формате #RRGGBB (#9600FF).\n\nЧтобы вернуть стандартный акцент ВК, оставьте это поле пустым.");
|
|
|
|
|
builder.setView(linearLayout);
|
|
|
|
|
builder.setPositiveButton("OK", (dialog, which) -> {
|
|
|
|
|
String color = editText.getText().toString();
|
|
|
|
|
if (color.equals("")) {
|
|
|
|
|
AndroidUtils.edit().putInt("theme_accent", ColorReferences.stockAccent).apply();
|
|
|
|
|
ToastUtils.a("Функция отключена.");
|
|
|
|
|
ThemesCore.clear();
|
|
|
|
|
ThemesUtils.setTheme(ThemesUtils.getCurrentTheme(), requireActivity());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (!color.startsWith("#")) {
|
|
|
|
|
ToastUtils.a("Цвет надо вводить в HEX-формате!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (color.length() != 7) {
|
|
|
|
|
ToastUtils.a("Неправильная длина цвета (прозрачность не поддерживается)");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
Color.parseColor(color);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
ToastUtils.a("Ошибка: неправильный формат цвета.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AndroidUtils.edit().putInt("accent_color", Color.parseColor(color)).apply();
|
|
|
|
|
ThemesCore.setThemedColors(Color.parseColor(color));
|
|
|
|
|
ThemesUtils.setTheme(ThemesUtils.getCurrentTheme(), requireActivity());
|
|
|
|
|
});
|
|
|
|
|
builder.show();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|