new color engine now is optional
This commit is contained in:
@@ -38,7 +38,7 @@ public class MainActivityInjector {
|
|||||||
NotificationChannels.createChannels();
|
NotificationChannels.createChannels();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Preferences.isNewBuild() && !ThemesUtils.isMonetTheme() && ThemesManager.canApplyCustomAccent()) {
|
if (Preferences.isNewBuild() && !ThemesUtils.isMonetTheme() && ThemesManager.canApplyCustomAccent() && ThemesUtils.useNewColorEngine()) {
|
||||||
Preferences.updateBuildNumber();
|
Preferences.updateBuildNumber();
|
||||||
updateBinsAndTmpArchive(activity);
|
updateBinsAndTmpArchive(activity);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ public class ThemesHacks {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int getHackedColor(@NonNull Context context, @ColorRes int color) {
|
public static int getHackedColor(@NonNull Context context, @ColorRes int color) {
|
||||||
|
|
||||||
if (ThemesUtils.isCustomAccentEnabled()) {
|
if (ThemesUtils.isCustomAccentEnabled()) {
|
||||||
if (Preferences.getBoolValue("logColors", false)) {
|
if (Preferences.getBoolValue("logColors", false)) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ public class ThemesManager {
|
|||||||
initPaths(app);
|
initPaths(app);
|
||||||
validateModApk();
|
validateModApk();
|
||||||
|
|
||||||
if (!Preferences.isNewBuild() && !ThemesUtils.isMonetTheme() && canApplyCustomAccent()) {
|
if (!Preferences.isNewBuild() && !ThemesUtils.isMonetTheme() && canApplyCustomAccent() && ThemesUtils.useNewColorEngine()) {
|
||||||
ResourcesLoader.init(app);
|
ResourcesLoader.init(app);
|
||||||
ResourcesLoader.load(app, modApk.getAbsolutePath(), false);
|
ResourcesLoader.load(app, modApk.getAbsolutePath(), false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class ViewInjector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static View inject(View view, int i, boolean z) {
|
public static View inject(View view, int i, boolean z) {
|
||||||
if (ThemesUtils.isMonetTheme()) {
|
if (ThemesUtils.isCustomAccentEnabled()) {
|
||||||
for (BaseHook hook : hooks) {
|
for (BaseHook hook : hooks) {
|
||||||
hook.inject(view, i, z);
|
hook.inject(view, i, z);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import com.vtosters.lite.R;
|
import com.vtosters.lite.R;
|
||||||
|
|
||||||
|
import ru.vtosters.lite.themes.hooks.TextViewHook;
|
||||||
import ru.vtosters.lite.ui.adapters.CategorizedAdapter;
|
import ru.vtosters.lite.ui.adapters.CategorizedAdapter;
|
||||||
import ru.vtosters.lite.ui.components.DockBarEditorManager;
|
import ru.vtosters.lite.ui.components.DockBarEditorManager;
|
||||||
import ru.vtosters.lite.ui.components.ItemMovingCallback;
|
import ru.vtosters.lite.ui.components.ItemMovingCallback;
|
||||||
@@ -57,6 +58,8 @@ public class DockBarEditorFragment extends BaseToolbarFragment {
|
|||||||
restartApplication();
|
restartApplication();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
new TextViewHook().inject(save, 0, false);
|
||||||
|
|
||||||
var saveParams = LayoutUtils.createLinear(0, -2);
|
var saveParams = LayoutUtils.createLinear(0, -2);
|
||||||
saveParams.weight = 1.0f;
|
saveParams.weight = 1.0f;
|
||||||
buttonsContainer.addView(save, saveParams);
|
buttonsContainer.addView(save, saveParams);
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import androidx.recyclerview.widget.ItemTouchHelper;
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import com.vtosters.lite.R;
|
import com.vtosters.lite.R;
|
||||||
|
import ru.vtosters.lite.themes.hooks.TextViewHook;
|
||||||
import ru.vtosters.lite.ui.adapters.CategorizedAdapter;
|
import ru.vtosters.lite.ui.adapters.CategorizedAdapter;
|
||||||
import ru.vtosters.lite.ui.components.ItemMovingCallback;
|
import ru.vtosters.lite.ui.components.ItemMovingCallback;
|
||||||
import ru.vtosters.lite.ui.components.SuperAppEditorManager;
|
import ru.vtosters.lite.ui.components.SuperAppEditorManager;
|
||||||
@@ -66,6 +67,8 @@ public class SuperAppEditorFragment extends BaseToolbarFragment {
|
|||||||
restartApplication();
|
restartApplication();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
new TextViewHook().inject(save, 0, false);
|
||||||
|
|
||||||
var saveParams = LayoutUtils.createLinear(0, -2);
|
var saveParams = LayoutUtils.createLinear(0, -2);
|
||||||
saveParams.weight = 1.0f;
|
saveParams.weight = 1.0f;
|
||||||
buttonsContainer.addView(save, saveParams);
|
buttonsContainer.addView(save, saveParams);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import com.vtosters.lite.R;
|
|||||||
|
|
||||||
import b.h.g.k.VKProgressDialog;
|
import b.h.g.k.VKProgressDialog;
|
||||||
import ru.vtosters.lite.concurrent.VTExecutors;
|
import ru.vtosters.lite.concurrent.VTExecutors;
|
||||||
|
import ru.vtosters.lite.themes.ThemesCore;
|
||||||
import ru.vtosters.lite.themes.ThemesManager;
|
import ru.vtosters.lite.themes.ThemesManager;
|
||||||
import ru.vtosters.lite.themes.palettes.PalettesManager;
|
import ru.vtosters.lite.themes.palettes.PalettesManager;
|
||||||
import ru.vtosters.lite.ui.dialogs.PalettesBottomSheetDialog;
|
import ru.vtosters.lite.ui.dialogs.PalettesBottomSheetDialog;
|
||||||
@@ -49,7 +50,7 @@ public class ThemesFragment extends TrackedMaterialPreferenceToolbarFragment {
|
|||||||
findPreference("systememoji").setSummary(getGlobalContext().getString(R.string.systememojisum) + " \uD83D\uDE00\uD83D\uDE01\uD83E\uDD11\uD83E\uDD75\uD83D\uDC4D");
|
findPreference("systememoji").setSummary(getGlobalContext().getString(R.string.systememojisum) + " \uD83D\uDE00\uD83D\uDE01\uD83E\uDD11\uD83E\uDD75\uD83D\uDC4D");
|
||||||
|
|
||||||
var invalidateThemeCache = findPreference("invalidate_theme_cache");
|
var invalidateThemeCache = findPreference("invalidate_theme_cache");
|
||||||
if (ThemesUtils.getReservedAccent() != Color.TRANSPARENT && Preferences.dev())
|
if (ThemesUtils.getReservedAccent() != Color.TRANSPARENT && Preferences.dev() && ThemesUtils.useNewColorEngine())
|
||||||
invalidateThemeCache.setOnPreferenceClickListener(preference -> {
|
invalidateThemeCache.setOnPreferenceClickListener(preference -> {
|
||||||
setAccentColor(ThemesUtils.getReservedAccent());
|
setAccentColor(ThemesUtils.getReservedAccent());
|
||||||
return true;
|
return true;
|
||||||
@@ -156,8 +157,12 @@ public class ThemesFragment extends TrackedMaterialPreferenceToolbarFragment {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setNegativeButton(R.string.reset, (dialog, which) -> {
|
.setNegativeButton(R.string.reset, (dialog, which) -> {
|
||||||
ThemesManager.deleteModification();
|
if (ThemesUtils.useNewColorEngine()) {
|
||||||
ThemesUtils.reserveAccentColor(Color.TRANSPARENT, false);
|
ThemesManager.deleteModification();
|
||||||
|
ThemesUtils.reserveAccentColor(Color.TRANSPARENT, false);
|
||||||
|
} else {
|
||||||
|
ThemesUtils.setCustomAccentColor(0, false);
|
||||||
|
}
|
||||||
restart();
|
restart();
|
||||||
})
|
})
|
||||||
.setPositiveButton(R.string.cancel, null)
|
.setPositiveButton(R.string.cancel, null)
|
||||||
@@ -203,29 +208,35 @@ public class ThemesFragment extends TrackedMaterialPreferenceToolbarFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setAccentColor(int color) {
|
void setAccentColor(int color) {
|
||||||
final VKProgressDialog dialog = new VKProgressDialog(requireContext());
|
if (ThemesUtils.useNewColorEngine()) {
|
||||||
dialog.setCancelable(false);
|
final VKProgressDialog dialog = new VKProgressDialog(requireContext());
|
||||||
dialog.setMessage("Применение акцента...");
|
dialog.setCancelable(false);
|
||||||
dialog.show();
|
dialog.setMessage("Применение акцента...");
|
||||||
|
dialog.show();
|
||||||
|
|
||||||
VTExecutors.getIoExecutor().execute(() -> {
|
VTExecutors.getIoExecutor().execute(() -> {
|
||||||
try {
|
try {
|
||||||
ThemesUtils.reserveAccentColor(color, true);
|
ThemesUtils.reserveAccentColor(color, true);
|
||||||
ThemesManager.generateModApk(color);
|
ThemesManager.generateModApk(color);
|
||||||
requireActivity().runOnUiThread(this::restart);
|
requireActivity().runOnUiThread(this::restart);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Log.e("ThemesFragment", e + "");
|
Log.e("ThemesFragment", e + "");
|
||||||
ThemesManager.deleteModification();
|
ThemesManager.deleteModification();
|
||||||
requireActivity().runOnUiThread(() -> {
|
requireActivity().runOnUiThread(() -> {
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
new VkAlertDialog.Builder(requireContext())
|
new VkAlertDialog.Builder(requireContext())
|
||||||
.setTitle("Ошибка")
|
.setTitle("Ошибка")
|
||||||
.setMessage("Ошибка при применении акцента:\n" + e)
|
.setMessage("Ошибка при применении акцента:\n" + e)
|
||||||
.setPositiveButton("OK", null)
|
.setPositiveButton("OK", null)
|
||||||
.show();
|
.show();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
ThemesUtils.setCustomAccentColor(color, false);
|
||||||
|
ThemesCore.setThemedColors(color);
|
||||||
|
restart();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void restart() {
|
void restart() {
|
||||||
|
|||||||
@@ -29,9 +29,7 @@ import com.vtosters.lite.R;
|
|||||||
import com.vtosters.lite.data.ThemeTracker;
|
import com.vtosters.lite.data.ThemeTracker;
|
||||||
import ru.vtosters.lite.deviceinfo.OEMDetector;
|
import ru.vtosters.lite.deviceinfo.OEMDetector;
|
||||||
import ru.vtosters.lite.hooks.VKUIHook;
|
import ru.vtosters.lite.hooks.VKUIHook;
|
||||||
import ru.vtosters.lite.hooks.ui.SystemThemeChangerHook;
|
|
||||||
import ru.vtosters.lite.themes.ThemesHacks;
|
import ru.vtosters.lite.themes.ThemesHacks;
|
||||||
import ru.vtosters.lite.themes.ThemesManager;
|
|
||||||
import ru.vtosters.lite.ui.wallpapers.WallpapersHooks;
|
import ru.vtosters.lite.ui.wallpapers.WallpapersHooks;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@@ -49,7 +47,7 @@ public class ThemesUtils {
|
|||||||
} // Apply VKTheme and ImTheme (hard applying without dynamic theme changing)
|
} // Apply VKTheme and ImTheme (hard applying without dynamic theme changing)
|
||||||
|
|
||||||
public static boolean isCustomAccentEnabled() {
|
public static boolean isCustomAccentEnabled() {
|
||||||
return ThemesUtils.isMonetTheme() || ThemesManager.canApplyCustomAccent();
|
return ThemesUtils.isMonetTheme() || !useNewColorEngine();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColorStateList getAccenedColorStateList() {
|
public static ColorStateList getAccenedColorStateList() {
|
||||||
@@ -92,8 +90,13 @@ public class ThemesUtils {
|
|||||||
return getBoolValue("amoledtheme", false);
|
return getBoolValue("amoledtheme", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean useNewColorEngine() {
|
||||||
|
return getBoolValue("useNewColorEngine", false);
|
||||||
|
}
|
||||||
|
|
||||||
public static int getAccentColor() {
|
public static int getAccentColor() {
|
||||||
return getColorFromAttr(R.attr.accent);
|
var color = Preferences.getPreferences().getInt("accent_color", getColorFromAttr(R.attr.accent));
|
||||||
|
return color == 0 || useNewColorEngine() || isMonetTheme() ? getColorFromAttr(R.attr.accent) : color;
|
||||||
} // Color accent
|
} // Color accent
|
||||||
|
|
||||||
//region Used for migrating accent color to new version
|
//region Used for migrating accent color to new version
|
||||||
|
|||||||
@@ -22,13 +22,6 @@
|
|||||||
android:key="useGenius"
|
android:key="useGenius"
|
||||||
android:summary="Получать тексты с сервиса Genius"
|
android:summary="Получать тексты с сервиса Genius"
|
||||||
android:title="Тексты с Genius"/>
|
android:title="Тексты с Genius"/>
|
||||||
<!-- <com.vtosters.lite.ui.SummaryListPreference
|
|
||||||
android:defaultValue="system"
|
|
||||||
android:dialogTitle="@string/debug_experimental_language_summary"
|
|
||||||
android:entries="@array/language"
|
|
||||||
android:entryValues="@array/lang_value"
|
|
||||||
android:key="lang_value"
|
|
||||||
android:title="@string/debug_experimental_language" /> -->
|
|
||||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||||
android:defaultValue="true"
|
android:defaultValue="true"
|
||||||
android:key="useNewSettings"
|
android:key="useNewSettings"
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
android:summary="@string/accent_color_summ"
|
android:summary="@string/accent_color_summ"
|
||||||
android:icon="@drawable/bg_accent_circle"
|
android:icon="@drawable/bg_accent_circle"
|
||||||
android:title="@string/accent_color_title"/>
|
android:title="@string/accent_color_title"/>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="invalidate_theme_cache"
|
android:key="invalidate_theme_cache"
|
||||||
android:title="Инвалидация кэша темы" />
|
android:title="Инвалидация кэша темы" />
|
||||||
@@ -87,5 +86,10 @@
|
|||||||
android:key="VKUI_INJ"
|
android:key="VKUI_INJ"
|
||||||
android:summary="@string/appearance_other_color_webview_summary"
|
android:summary="@string/appearance_other_color_webview_summary"
|
||||||
android:title="@string/vkuiinj"/>
|
android:title="@string/vkuiinj"/>
|
||||||
|
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:key="useNewColorEngine"
|
||||||
|
android:summary="Может быть нестабильно"
|
||||||
|
android:title="Использовать новый движок акцентов"/>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
@@ -343,6 +343,12 @@
|
|||||||
|
|
||||||
invoke-super {p0, p1, p2}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
|
invoke-super {p0, p1, p2}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
|
||||||
|
|
||||||
|
move-result-object p2
|
||||||
|
|
||||||
|
const/4 v0, 0x1
|
||||||
|
|
||||||
|
invoke-static {p2, p1, v0}, Lru/vtosters/lite/themes/ViewInjector;->inject(Landroid/view/View;IZ)Landroid/view/View;
|
||||||
|
|
||||||
move-result-object p1
|
move-result-object p1
|
||||||
|
|
||||||
return-object p1
|
return-object p1
|
||||||
@@ -353,6 +359,10 @@
|
|||||||
|
|
||||||
invoke-super {p0, p1, p2, p3}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;
|
invoke-super {p0, p1, p2, p3}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;
|
||||||
|
|
||||||
|
move-result-object p2
|
||||||
|
|
||||||
|
invoke-static {p2, p1, p3}, Lru/vtosters/lite/themes/ViewInjector;->inject(Landroid/view/View;IZ)Landroid/view/View;
|
||||||
|
|
||||||
move-result-object p1
|
move-result-object p1
|
||||||
|
|
||||||
return-object p1
|
return-object p1
|
||||||
@@ -365,6 +375,14 @@
|
|||||||
|
|
||||||
move-result-object p1
|
move-result-object p1
|
||||||
|
|
||||||
|
const/4 p2, -0x1
|
||||||
|
|
||||||
|
const/4 v0, 0x1
|
||||||
|
|
||||||
|
invoke-static {p1, p2, v0}, Lru/vtosters/lite/themes/ViewInjector;->inject(Landroid/view/View;IZ)Landroid/view/View;
|
||||||
|
|
||||||
|
move-result-object p1
|
||||||
|
|
||||||
return-object p1
|
return-object p1
|
||||||
.end method
|
.end method
|
||||||
|
|
||||||
@@ -375,5 +393,11 @@
|
|||||||
|
|
||||||
move-result-object p1
|
move-result-object p1
|
||||||
|
|
||||||
|
const/4 p2, -0x1
|
||||||
|
|
||||||
|
invoke-static {p1, p2, p3}, Lru/vtosters/lite/themes/ViewInjector;->inject(Landroid/view/View;IZ)Landroid/view/View;
|
||||||
|
|
||||||
|
move-result-object p1
|
||||||
|
|
||||||
return-object p1
|
return-object p1
|
||||||
.end method
|
.end method
|
||||||
@@ -157,7 +157,7 @@
|
|||||||
.method public getResources()Landroid/content/res/Resources;
|
.method public getResources()Landroid/content/res/Resources;
|
||||||
.registers 3
|
.registers 3
|
||||||
|
|
||||||
invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->isMonetTheme()Z
|
invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->isCustomAccentEnabled()Z
|
||||||
|
|
||||||
move-result v1
|
move-result v1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user