mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-17 00:03:57 +00:00
Compare commits
15 Commits
v5.25.0-de
...
v5.25.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7cfd80bfe | ||
|
|
2990dc6d4e | ||
|
|
c0e52bb6b3 | ||
|
|
93fdd6f538 | ||
|
|
decd249f20 | ||
|
|
d79cb3eea8 | ||
|
|
584b00fd87 | ||
|
|
795016abce | ||
|
|
dc1dbd50a8 | ||
|
|
2984d7362d | ||
|
|
627aed4010 | ||
|
|
4ab1f0cfa9 | ||
|
|
86e8e61ab2 | ||
|
|
e286dab74e | ||
|
|
712a82439f |
45
CHANGELOG.md
45
CHANGELOG.md
@@ -1,3 +1,48 @@
|
||||
# [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5))
|
||||
* **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16))
|
||||
|
||||
# [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5))
|
||||
* **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16))
|
||||
|
||||
# [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5))
|
||||
* **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16))
|
||||
|
||||
# [5.25.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.7...v5.25.0-dev.8) (2025-05-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Hide ADB status:** Resolve app crash on startup ([#5029](https://github.com/ReVanced/revanced-patches/issues/5029)) ([1abebd5](https://github.com/ReVanced/revanced-patches/commit/1abebd5f3b73250c6638d2d8a274b92ea8268924))
|
||||
|
||||
# [5.25.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.6...v5.25.0-dev.7) (2025-05-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Open Shorts in regular player:** Do not exit app when pressing back button in regular player ([#5020](https://github.com/ReVanced/revanced-patches/issues/5020)) ([3384f8d](https://github.com/ReVanced/revanced-patches/commit/3384f8dd0ff2a345f2e387f4ed1570079a83ccb6))
|
||||
|
||||
# [5.25.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.5...v5.25.0-dev.6) (2025-05-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Yuka - Unlock premium:** Remove broken patch that is no longer supported ([#5018](https://github.com/ReVanced/revanced-patches/issues/5018)) ([fac6e59](https://github.com/ReVanced/revanced-patches/commit/fac6e59d281e21e57abdcfc899cd1aeb18e5c2b8))
|
||||
|
||||
# [5.25.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.4...v5.25.0-dev.5) (2025-05-22)
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.preference.Preference;
|
||||
import android.preference.PreferenceGroup;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.util.Pair;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewParent;
|
||||
@@ -557,14 +558,14 @@ public class Utils {
|
||||
);
|
||||
}
|
||||
|
||||
public static boolean isDarkModeEnabled(Context context) {
|
||||
Configuration config = context.getResources().getConfiguration();
|
||||
public static boolean isDarkModeEnabled() {
|
||||
Configuration config = Resources.getSystem().getConfiguration();
|
||||
final int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
|
||||
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
|
||||
}
|
||||
|
||||
public static boolean isLandscapeOrientation() {
|
||||
final int orientation = context.getResources().getConfiguration().orientation;
|
||||
final int orientation = Resources.getSystem().getConfiguration().orientation;
|
||||
return orientation == Configuration.ORIENTATION_LANDSCAPE;
|
||||
}
|
||||
|
||||
@@ -640,7 +641,11 @@ public class Utils {
|
||||
|| networkType == NetworkType.OTHER;
|
||||
}
|
||||
|
||||
@SuppressLint({"MissingPermission", "deprecation"}) // Permission already included in YouTube.
|
||||
/**
|
||||
* Calling extension code must ensure the target app has the
|
||||
* <code>ACCESS_NETWORK_STATE</code> app manifest permission.
|
||||
*/
|
||||
@SuppressWarnings({"deprecation", "MissingPermission"})
|
||||
public static NetworkType getNetworkType() {
|
||||
Context networkContext = getContext();
|
||||
if (networkContext == null) {
|
||||
@@ -852,6 +857,20 @@ public class Utils {
|
||||
return getResourceColor(colorString);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts dip value to actual device pixels.
|
||||
*
|
||||
* @param dip The density-independent pixels value
|
||||
* @return The device pixel value
|
||||
*/
|
||||
public static int dipToPixels(float dip) {
|
||||
return (int) TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP,
|
||||
dip,
|
||||
Resources.getSystem().getDisplayMetrics()
|
||||
);
|
||||
}
|
||||
|
||||
public static int clamp(int value, int lower, int upper) {
|
||||
return Math.max(lower, Math.min(value, upper));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,442 @@
|
||||
package app.revanced.extension.shared.settings.preference;
|
||||
|
||||
import static app.revanced.extension.shared.StringRef.str;
|
||||
import static app.revanced.extension.shared.Utils.getResourceIdentifier;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextWatcher;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.text.style.RelativeSizeSpan;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewParent;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.Setting;
|
||||
import app.revanced.extension.shared.settings.StringSetting;
|
||||
|
||||
/**
|
||||
* A custom preference for selecting a color via a hexadecimal code or a color picker dialog.
|
||||
* Extends {@link EditTextPreference} to display a colored dot in the widget area,
|
||||
* reflecting the currently selected color. The dot is dimmed when the preference is disabled.
|
||||
*/
|
||||
@SuppressWarnings({"unused", "deprecation"})
|
||||
public class ColorPickerPreference extends EditTextPreference {
|
||||
|
||||
/**
|
||||
* Character to show the color appearance.
|
||||
*/
|
||||
public static final String COLOR_DOT_STRING = "⬤";
|
||||
|
||||
/**
|
||||
* Length of a valid color string of format #RRGGBB.
|
||||
*/
|
||||
public static final int COLOR_STRING_LENGTH = 7;
|
||||
|
||||
/**
|
||||
* Matches everything that is not a hex number/letter.
|
||||
*/
|
||||
private static final Pattern PATTERN_NOT_HEX = Pattern.compile("[^0-9A-Fa-f]");
|
||||
|
||||
/**
|
||||
* Alpha for dimming when the preference is disabled.
|
||||
*/
|
||||
private static final float DISABLED_ALPHA = 0.5f; // 50%
|
||||
|
||||
/**
|
||||
* View displaying a colored dot in the widget area.
|
||||
*/
|
||||
private View widgetColorDot;
|
||||
|
||||
/**
|
||||
* Current color in RGB format (without alpha).
|
||||
*/
|
||||
@ColorInt
|
||||
private int currentColor;
|
||||
|
||||
/**
|
||||
* Associated setting for storing the color value.
|
||||
*/
|
||||
private StringSetting colorSetting;
|
||||
|
||||
/**
|
||||
* Dialog TextWatcher for the EditText to monitor color input changes.
|
||||
*/
|
||||
private TextWatcher colorTextWatcher;
|
||||
|
||||
/**
|
||||
* Dialog TextView displaying a colored dot for the selected color preview in the dialog.
|
||||
*/
|
||||
private TextView dialogColorPreview;
|
||||
|
||||
/**
|
||||
* Dialog color picker view.
|
||||
*/
|
||||
private ColorPickerView dialogColorPickerView;
|
||||
|
||||
/**
|
||||
* Removes non valid hex characters, converts to all uppercase,
|
||||
* and adds # character to the start if not present.
|
||||
*/
|
||||
public static String cleanupColorCodeString(String colorString) {
|
||||
// Remove non-hex chars, convert to uppercase, and ensure correct length
|
||||
String result = "#" + PATTERN_NOT_HEX.matcher(colorString)
|
||||
.replaceAll("").toUpperCase(Locale.ROOT);
|
||||
|
||||
if (result.length() < COLOR_STRING_LENGTH) {
|
||||
return result;
|
||||
}
|
||||
|
||||
return result.substring(0, COLOR_STRING_LENGTH);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param color RGB color, without an alpha channel.
|
||||
* @return #RRGGBB hex color string
|
||||
*/
|
||||
public static String getColorString(@ColorInt int color) {
|
||||
String colorString = String.format("#%06X", color);
|
||||
if ((color & 0xFF000000) != 0) {
|
||||
// Likely a bug somewhere.
|
||||
Logger.printException(() -> "getColorString: color has alpha channel: " + colorString);
|
||||
}
|
||||
return colorString;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a Spanned object for a colored dot using SpannableString.
|
||||
*
|
||||
* @param color The RGB color (without alpha).
|
||||
* @return A Spanned object with the colored dot.
|
||||
*/
|
||||
public static Spanned getColorDot(@ColorInt int color) {
|
||||
SpannableString spannable = new SpannableString(COLOR_DOT_STRING);
|
||||
spannable.setSpan(new ForegroundColorSpan(color | 0xFF000000), 0, COLOR_DOT_STRING.length(),
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
spannable.setSpan(new RelativeSizeSpan(1.5f), 0, 1,
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
return spannable;
|
||||
}
|
||||
|
||||
public ColorPickerPreference(Context context) {
|
||||
super(context);
|
||||
init();
|
||||
}
|
||||
|
||||
public ColorPickerPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init();
|
||||
}
|
||||
|
||||
public ColorPickerPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the preference by setting up the EditText, loading the color, and set the widget layout.
|
||||
*/
|
||||
private void init() {
|
||||
colorSetting = (StringSetting) Setting.getSettingFromPath(getKey());
|
||||
if (colorSetting == null) {
|
||||
Logger.printException(() -> "Could not find color setting for: " + getKey());
|
||||
}
|
||||
|
||||
EditText editText = getEditText();
|
||||
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS
|
||||
| InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
editText.setAutofillHints((String) null);
|
||||
}
|
||||
|
||||
// Set the widget layout to a custom layout containing the colored dot.
|
||||
setWidgetLayoutResource(getResourceIdentifier("revanced_color_dot_widget", "layout"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the selected color and updates the UI and settings.
|
||||
*
|
||||
* @param colorString The color in hexadecimal format (e.g., "#RRGGBB").
|
||||
* @throws IllegalArgumentException If the color string is invalid.
|
||||
*/
|
||||
@Override
|
||||
public final void setText(String colorString) {
|
||||
try {
|
||||
Logger.printDebug(() -> "setText: " + colorString);
|
||||
super.setText(colorString);
|
||||
|
||||
currentColor = Color.parseColor(colorString) & 0x00FFFFFF;
|
||||
if (colorSetting != null) {
|
||||
colorSetting.save(getColorString(currentColor));
|
||||
}
|
||||
updateColorPreview();
|
||||
updateWidgetColorDot();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
// This code is reached if the user pastes settings json with an invalid color
|
||||
// since this preference is updated with the new setting text.
|
||||
Logger.printDebug(() -> "Parse color error: " + colorString, ex);
|
||||
Utils.showToastShort(str("revanced_settings_color_invalid"));
|
||||
setText(colorSetting.resetToDefault());
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "setText failure: " + colorString, ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
widgetColorDot = view.findViewById(getResourceIdentifier(
|
||||
"revanced_color_dot_widget", "id"));
|
||||
widgetColorDot.setBackgroundResource(getResourceIdentifier(
|
||||
"revanced_settings_circle_background", "drawable"));
|
||||
widgetColorDot.getBackground().setTint(currentColor | 0xFF000000);
|
||||
widgetColorDot.setAlpha(isEnabled() ? 1.0f : DISABLED_ALPHA);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a layout with a color preview and EditText for hex color input.
|
||||
*
|
||||
* @param context The context for creating the layout.
|
||||
* @return A LinearLayout containing the color preview and EditText.
|
||||
*/
|
||||
private LinearLayout createDialogLayout(Context context) {
|
||||
LinearLayout layout = new LinearLayout(context);
|
||||
layout.setOrientation(LinearLayout.VERTICAL);
|
||||
layout.setPadding(70, 0, 70, 0);
|
||||
|
||||
// Inflate color picker.
|
||||
View colorPicker = LayoutInflater.from(context).inflate(
|
||||
getResourceIdentifier("revanced_color_picker", "layout"), null);
|
||||
dialogColorPickerView = colorPicker.findViewById(
|
||||
getResourceIdentifier("color_picker_view", "id"));
|
||||
dialogColorPickerView.setColor(currentColor);
|
||||
layout.addView(colorPicker);
|
||||
|
||||
// Horizontal layout for preview and EditText.
|
||||
LinearLayout inputLayout = new LinearLayout(context);
|
||||
inputLayout.setOrientation(LinearLayout.HORIZONTAL);
|
||||
inputLayout.setPadding(0, 20, 0, 0);
|
||||
|
||||
dialogColorPreview = new TextView(context);
|
||||
inputLayout.addView(dialogColorPreview);
|
||||
updateColorPreview();
|
||||
|
||||
EditText editText = getEditText();
|
||||
ViewParent parent = editText.getParent();
|
||||
if (parent instanceof ViewGroup parentViewGroup) {
|
||||
parentViewGroup.removeView(editText);
|
||||
}
|
||||
editText.setLayoutParams(new LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT
|
||||
));
|
||||
String currentColorString = getColorString(currentColor);
|
||||
editText.setText(currentColorString);
|
||||
editText.setSelection(currentColorString.length());
|
||||
editText.setTypeface(Typeface.MONOSPACE);
|
||||
colorTextWatcher = createColorTextWatcher(dialogColorPickerView);
|
||||
editText.addTextChangedListener(colorTextWatcher);
|
||||
inputLayout.addView(editText);
|
||||
|
||||
// Add a dummy view to take up remaining horizontal space,
|
||||
// otherwise it will show an oversize underlined text view.
|
||||
View paddingView = new View(context);
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
0,
|
||||
LinearLayout.LayoutParams.MATCH_PARENT,
|
||||
1f
|
||||
);
|
||||
paddingView.setLayoutParams(params);
|
||||
inputLayout.addView(paddingView);
|
||||
|
||||
layout.addView(inputLayout);
|
||||
|
||||
// Set up color picker listener with debouncing.
|
||||
// Add listener last to prevent callbacks from set calls above.
|
||||
dialogColorPickerView.setOnColorChangedListener(color -> {
|
||||
// Check if it actually changed, since this callback
|
||||
// can be caused by updates in afterTextChanged().
|
||||
if (currentColor == color) {
|
||||
return;
|
||||
}
|
||||
|
||||
String updatedColorString = getColorString(color);
|
||||
Logger.printDebug(() -> "onColorChanged: " + updatedColorString);
|
||||
currentColor = color;
|
||||
editText.setText(updatedColorString);
|
||||
editText.setSelection(updatedColorString.length());
|
||||
|
||||
updateColorPreview();
|
||||
updateWidgetColorDot();
|
||||
});
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the color preview TextView with a colored dot.
|
||||
*/
|
||||
private void updateColorPreview() {
|
||||
if (dialogColorPreview != null) {
|
||||
dialogColorPreview.setText(getColorDot(currentColor));
|
||||
}
|
||||
}
|
||||
|
||||
private void updateWidgetColorDot() {
|
||||
if (widgetColorDot != null) {
|
||||
widgetColorDot.getBackground().setTint(currentColor | 0xFF000000);
|
||||
widgetColorDot.setAlpha(isEnabled() ? 1.0f : DISABLED_ALPHA);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a TextWatcher to monitor changes in the EditText for color input.
|
||||
*
|
||||
* @return A TextWatcher that updates the color preview on valid input.
|
||||
*/
|
||||
private TextWatcher createColorTextWatcher(ColorPickerView colorPickerView) {
|
||||
return new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable edit) {
|
||||
try {
|
||||
String colorString = edit.toString();
|
||||
|
||||
String sanitizedColorString = cleanupColorCodeString(colorString);
|
||||
if (!sanitizedColorString.equals(colorString)) {
|
||||
edit.replace(0, colorString.length(), sanitizedColorString);
|
||||
return;
|
||||
}
|
||||
|
||||
if (sanitizedColorString.length() != COLOR_STRING_LENGTH) {
|
||||
// User is still typing out the color.
|
||||
return;
|
||||
}
|
||||
|
||||
final int newColor = Color.parseColor(colorString);
|
||||
if (currentColor != newColor) {
|
||||
Logger.printDebug(() -> "afterTextChanged: " + sanitizedColorString);
|
||||
currentColor = newColor;
|
||||
updateColorPreview();
|
||||
updateWidgetColorDot();
|
||||
colorPickerView.setColor(newColor);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
// Should never be reached since input is validated before using.
|
||||
Logger.printException(() -> "afterTextChanged failure", ex);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares the dialog builder with a custom view and reset button.
|
||||
*
|
||||
* @param builder The AlertDialog.Builder to configure.
|
||||
*/
|
||||
@Override
|
||||
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
|
||||
Utils.setEditTextDialogTheme(builder);
|
||||
LinearLayout dialogLayout = createDialogLayout(builder.getContext());
|
||||
builder.setView(dialogLayout);
|
||||
final int originalColor = currentColor;
|
||||
|
||||
builder.setNeutralButton(str("revanced_settings_reset_color"), null);
|
||||
|
||||
builder.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||
try {
|
||||
String colorString = getEditText().getText().toString();
|
||||
|
||||
if (colorString.length() != COLOR_STRING_LENGTH) {
|
||||
Utils.showToastShort(str("revanced_settings_color_invalid"));
|
||||
setText(getColorString(originalColor));
|
||||
return;
|
||||
}
|
||||
|
||||
setText(colorString);
|
||||
} catch (Exception ex) {
|
||||
// Should never happen due to a bad color string,
|
||||
// since the text is validated and fixed while the user types.
|
||||
Logger.printException(() -> "setPositiveButton failure", ex);
|
||||
}
|
||||
});
|
||||
|
||||
builder.setNegativeButton(android.R.string.cancel, (dialog, which) -> {
|
||||
try {
|
||||
// Restore the original color.
|
||||
setText(getColorString(originalColor));
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "setNegativeButton failure", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void showDialog(Bundle state) {
|
||||
super.showDialog(state);
|
||||
|
||||
AlertDialog dialog = (AlertDialog) getDialog();
|
||||
dialog.setCanceledOnTouchOutside(false);
|
||||
|
||||
// Do not close dialog when reset is pressed.
|
||||
Button button = dialog.getButton(AlertDialog.BUTTON_NEUTRAL);
|
||||
button.setOnClickListener(view -> {
|
||||
try {
|
||||
final int defaultColor = Color.parseColor(colorSetting.defaultValue) & 0x00FFFFFF;
|
||||
// Setting view color causes listener callback into this class.
|
||||
dialogColorPickerView.setColor(defaultColor);
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "setOnClickListener failure", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDialogClosed(boolean positiveResult) {
|
||||
super.onDialogClosed(positiveResult);
|
||||
|
||||
if (colorTextWatcher != null) {
|
||||
getEditText().removeTextChangedListener(colorTextWatcher);
|
||||
colorTextWatcher = null;
|
||||
}
|
||||
|
||||
dialogColorPreview = null;
|
||||
dialogColorPickerView = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {
|
||||
super.setEnabled(enabled);
|
||||
updateWidgetColorDot();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,500 @@
|
||||
package app.revanced.extension.shared.settings.preference;
|
||||
|
||||
import static app.revanced.extension.shared.Utils.dipToPixels;
|
||||
import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.getColorString;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.ComposeShader;
|
||||
import android.graphics.LinearGradient;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.Shader;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
|
||||
/**
|
||||
* A custom color picker view that allows the user to select a color using a hue slider and a saturation-value selector.
|
||||
* This implementation is density-independent and responsive across different screen sizes and DPIs.
|
||||
*
|
||||
* <p>
|
||||
* This view displays two main components for color selection:
|
||||
* <ul>
|
||||
* <li><b>Hue Bar:</b> A vertical bar on the right that allows the user to select the hue component of the color.
|
||||
* <li><b>Saturation-Value Selector:</b> A rectangular area that allows the user to select the saturation and value (brightness)
|
||||
* components of the color based on the selected hue.
|
||||
* </ul>
|
||||
*
|
||||
* <p>
|
||||
* The view uses {@link LinearGradient} and {@link ComposeShader} to create the color gradients for the hue bar and the
|
||||
* saturation-value selector. It also uses {@link Paint} to draw the selectors (draggable handles).
|
||||
*
|
||||
* <p>
|
||||
* The selected color can be retrieved using {@link #getColor()} and can be set using {@link #setColor(int)}.
|
||||
* An {@link OnColorChangedListener} can be registered to receive notifications when the selected color changes.
|
||||
*/
|
||||
public class ColorPickerView extends View {
|
||||
|
||||
/**
|
||||
* Interface definition for a callback to be invoked when the selected color changes.
|
||||
*/
|
||||
public interface OnColorChangedListener {
|
||||
/**
|
||||
* Called when the selected color has changed.
|
||||
*
|
||||
* Important: Callback color uses RGB format with zero alpha channel.
|
||||
*
|
||||
* @param color The new selected color.
|
||||
*/
|
||||
void onColorChanged(@ColorInt int color);
|
||||
}
|
||||
|
||||
/** Expanded touch area for the hue bar to increase the touch-sensitive area. */
|
||||
public static final float TOUCH_EXPANSION = dipToPixels(20f);
|
||||
|
||||
private static final float MARGIN_BETWEEN_AREAS = dipToPixels(24);
|
||||
private static final float VIEW_PADDING = dipToPixels(16);
|
||||
private static final float HUE_BAR_WIDTH = dipToPixels(12);
|
||||
private static final float HUE_CORNER_RADIUS = dipToPixels(6);
|
||||
private static final float SELECTOR_RADIUS = dipToPixels(12);
|
||||
private static final float SELECTOR_STROKE_WIDTH = 8;
|
||||
/**
|
||||
* Hue fill radius. Use slightly smaller radius for the selector handle fill,
|
||||
* otherwise the anti-aliasing causes the fill color to bleed past the selector outline.
|
||||
*/
|
||||
private static final float SELECTOR_FILL_RADIUS = SELECTOR_RADIUS - SELECTOR_STROKE_WIDTH / 2;
|
||||
/** Thin dark outline stroke width for the selector rings. */
|
||||
private static final float SELECTOR_EDGE_STROKE_WIDTH = 1;
|
||||
public static final float SELECTOR_EDGE_RADIUS =
|
||||
SELECTOR_RADIUS + SELECTOR_STROKE_WIDTH / 2 + SELECTOR_EDGE_STROKE_WIDTH / 2;
|
||||
|
||||
/** Selector outline inner color. */
|
||||
@ColorInt
|
||||
private static final int SELECTOR_OUTLINE_COLOR = Color.WHITE;
|
||||
|
||||
/** Dark edge color for the selector rings. */
|
||||
@ColorInt
|
||||
private static final int SELECTOR_EDGE_COLOR = Color.parseColor("#CFCFCF");
|
||||
|
||||
private static final int[] HUE_COLORS = new int[361];
|
||||
static {
|
||||
for (int i = 0; i < 361; i++) {
|
||||
HUE_COLORS[i] = Color.HSVToColor(new float[]{i, 1, 1});
|
||||
}
|
||||
}
|
||||
|
||||
/** Hue bar. */
|
||||
private final Paint huePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
/** Saturation-value selector. */
|
||||
private final Paint saturationValuePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
/** Draggable selector. */
|
||||
private final Paint selectorPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
{
|
||||
selectorPaint.setStrokeWidth(SELECTOR_STROKE_WIDTH);
|
||||
}
|
||||
|
||||
/** Bounds of the hue bar. */
|
||||
private final RectF hueRect = new RectF();
|
||||
/** Bounds of the saturation-value selector. */
|
||||
private final RectF saturationValueRect = new RectF();
|
||||
|
||||
/** HSV color calculations to avoid allocations during drawing. */
|
||||
private final float[] hsvArray = {1, 1, 1};
|
||||
|
||||
/** Current hue value (0-360). */
|
||||
private float hue = 0f;
|
||||
/** Current saturation value (0-1). */
|
||||
private float saturation = 1f;
|
||||
/** Current value (brightness) value (0-1). */
|
||||
private float value = 1f;
|
||||
|
||||
/** The currently selected color in RGB format with no alpha channel. */
|
||||
@ColorInt
|
||||
private int selectedColor;
|
||||
|
||||
private OnColorChangedListener colorChangedListener;
|
||||
|
||||
/** Track if we're currently dragging the hue or saturation handle. */
|
||||
private boolean isDraggingHue;
|
||||
private boolean isDraggingSaturation;
|
||||
|
||||
public ColorPickerView(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public ColorPickerView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public ColorPickerView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
final float DESIRED_ASPECT_RATIO = 0.8f; // height = width * 0.8
|
||||
|
||||
final int minWidth = Utils.dipToPixels(250);
|
||||
final int minHeight = (int) (minWidth * DESIRED_ASPECT_RATIO);
|
||||
|
||||
int width = resolveSize(minWidth, widthMeasureSpec);
|
||||
int height = resolveSize(minHeight, heightMeasureSpec);
|
||||
|
||||
// Ensure minimum dimensions for usability
|
||||
width = Math.max(width, minWidth);
|
||||
height = Math.max(height, minHeight);
|
||||
|
||||
// Adjust height to maintain desired aspect ratio if possible
|
||||
final int desiredHeight = (int) (width * DESIRED_ASPECT_RATIO);
|
||||
if (MeasureSpec.getMode(heightMeasureSpec) != MeasureSpec.EXACTLY) {
|
||||
height = desiredHeight;
|
||||
}
|
||||
|
||||
setMeasuredDimension(width, height);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the size of the view changes.
|
||||
* This method calculates and sets the bounds of the hue bar and saturation-value selector.
|
||||
* It also creates the necessary shaders for the gradients.
|
||||
*/
|
||||
@Override
|
||||
protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) {
|
||||
super.onSizeChanged(width, height, oldWidth, oldHeight);
|
||||
|
||||
// Calculate bounds with hue bar on the right
|
||||
final float effectiveWidth = width - (2 * VIEW_PADDING);
|
||||
final float selectorWidth = effectiveWidth - HUE_BAR_WIDTH - MARGIN_BETWEEN_AREAS;
|
||||
|
||||
// Adjust rectangles to account for padding and density-independent dimensions
|
||||
saturationValueRect.set(
|
||||
VIEW_PADDING,
|
||||
VIEW_PADDING,
|
||||
VIEW_PADDING + selectorWidth,
|
||||
height - VIEW_PADDING
|
||||
);
|
||||
|
||||
hueRect.set(
|
||||
width - VIEW_PADDING - HUE_BAR_WIDTH,
|
||||
VIEW_PADDING,
|
||||
width - VIEW_PADDING,
|
||||
height - VIEW_PADDING
|
||||
);
|
||||
|
||||
// Update the shaders.
|
||||
updateHueShader();
|
||||
updateSaturationValueShader();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the hue full spectrum (0-360 degrees).
|
||||
*/
|
||||
private void updateHueShader() {
|
||||
LinearGradient hueShader = new LinearGradient(
|
||||
hueRect.left, hueRect.top,
|
||||
hueRect.left, hueRect.bottom,
|
||||
HUE_COLORS,
|
||||
null,
|
||||
Shader.TileMode.CLAMP
|
||||
);
|
||||
|
||||
huePaint.setShader(hueShader);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the shader for the saturation-value selector based on the currently selected hue.
|
||||
* This method creates a combined shader that blends a saturation gradient with a value gradient.
|
||||
*/
|
||||
private void updateSaturationValueShader() {
|
||||
// Create a saturation-value gradient based on the current hue.
|
||||
// Calculate the start color (white with the selected hue) for the saturation gradient.
|
||||
final int startColor = Color.HSVToColor(new float[]{hue, 0f, 1f});
|
||||
|
||||
// Calculate the middle color (fully saturated color with the selected hue) for the saturation gradient.
|
||||
final int midColor = Color.HSVToColor(new float[]{hue, 1f, 1f});
|
||||
|
||||
// Create a linear gradient for the saturation from startColor to midColor (horizontal).
|
||||
LinearGradient satShader = new LinearGradient(
|
||||
saturationValueRect.left, saturationValueRect.top,
|
||||
saturationValueRect.right, saturationValueRect.top,
|
||||
startColor,
|
||||
midColor,
|
||||
Shader.TileMode.CLAMP
|
||||
);
|
||||
|
||||
// Create a linear gradient for the value (brightness) from white to black (vertical).
|
||||
//noinspection ExtractMethodRecommender
|
||||
LinearGradient valShader = new LinearGradient(
|
||||
saturationValueRect.left, saturationValueRect.top,
|
||||
saturationValueRect.left, saturationValueRect.bottom,
|
||||
Color.WHITE,
|
||||
Color.BLACK,
|
||||
Shader.TileMode.CLAMP
|
||||
);
|
||||
|
||||
// Combine the saturation and value shaders using PorterDuff.Mode.MULTIPLY to create the final color.
|
||||
ComposeShader combinedShader = new ComposeShader(satShader, valShader, PorterDuff.Mode.MULTIPLY);
|
||||
|
||||
// Set the combined shader for the saturation-value paint.
|
||||
saturationValuePaint.setShader(combinedShader);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws the color picker view on the canvas.
|
||||
* This method draws the saturation-value selector, the hue bar with rounded corners,
|
||||
* and the draggable handles.
|
||||
*
|
||||
* @param canvas The canvas on which to draw.
|
||||
*/
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
// Draw the saturation-value selector rectangle.
|
||||
canvas.drawRect(saturationValueRect, saturationValuePaint);
|
||||
|
||||
// Draw the hue bar.
|
||||
canvas.drawRoundRect(hueRect, HUE_CORNER_RADIUS, HUE_CORNER_RADIUS, huePaint);
|
||||
|
||||
final float hueSelectorX = hueRect.centerX();
|
||||
final float hueSelectorY = hueRect.top + (hue / 360f) * hueRect.height();
|
||||
|
||||
final float satSelectorX = saturationValueRect.left + saturation * saturationValueRect.width();
|
||||
final float satSelectorY = saturationValueRect.top + (1 - value) * saturationValueRect.height();
|
||||
|
||||
// Draw the saturation and hue selector handle filled with the selected color.
|
||||
hsvArray[0] = hue;
|
||||
final int hueHandleColor = Color.HSVToColor(0xFF, hsvArray);
|
||||
selectorPaint.setStyle(Paint.Style.FILL_AND_STROKE);
|
||||
|
||||
selectorPaint.setColor(hueHandleColor);
|
||||
canvas.drawCircle(hueSelectorX, hueSelectorY, SELECTOR_FILL_RADIUS, selectorPaint);
|
||||
|
||||
selectorPaint.setColor(selectedColor | 0xFF000000);
|
||||
canvas.drawCircle(satSelectorX, satSelectorY, SELECTOR_FILL_RADIUS, selectorPaint);
|
||||
|
||||
// Draw white outlines for the handles.
|
||||
selectorPaint.setColor(SELECTOR_OUTLINE_COLOR);
|
||||
selectorPaint.setStyle(Paint.Style.STROKE);
|
||||
selectorPaint.setStrokeWidth(SELECTOR_STROKE_WIDTH);
|
||||
canvas.drawCircle(hueSelectorX, hueSelectorY, SELECTOR_RADIUS, selectorPaint);
|
||||
canvas.drawCircle(satSelectorX, satSelectorY, SELECTOR_RADIUS, selectorPaint);
|
||||
|
||||
// Draw thin dark outlines for the handles at the outer edge of the white outline.
|
||||
selectorPaint.setColor(SELECTOR_EDGE_COLOR);
|
||||
selectorPaint.setStrokeWidth(SELECTOR_EDGE_STROKE_WIDTH);
|
||||
canvas.drawCircle(hueSelectorX, hueSelectorY, SELECTOR_EDGE_RADIUS, selectorPaint);
|
||||
canvas.drawCircle(satSelectorX, satSelectorY, SELECTOR_EDGE_RADIUS, selectorPaint);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles touch events on the view.
|
||||
* This method determines whether the touch event occurred within the hue bar or the saturation-value selector,
|
||||
* updates the corresponding values (hue, saturation, value), and invalidates the view to trigger a redraw.
|
||||
* <p>
|
||||
* In addition to testing if the touch is within the strict rectangles, an expanded hit area (by selectorRadius)
|
||||
* is used so that the draggable handles remain active even when half of the handle is outside the drawn bounds.
|
||||
*
|
||||
* @param event The motion event.
|
||||
* @return True if the event was handled, false otherwise.
|
||||
*/
|
||||
@SuppressLint("ClickableViewAccessibility") // performClick is not overridden, but not needed in this case.
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
try {
|
||||
final float x = event.getX();
|
||||
final float y = event.getY();
|
||||
final int action = event.getAction();
|
||||
Logger.printDebug(() -> "onTouchEvent action: " + action + " x: " + x + " y: " + y);
|
||||
|
||||
// Define touch expansion for the hue bar.
|
||||
RectF expandedHueRect = new RectF(
|
||||
hueRect.left - TOUCH_EXPANSION,
|
||||
hueRect.top,
|
||||
hueRect.right + TOUCH_EXPANSION,
|
||||
hueRect.bottom
|
||||
);
|
||||
|
||||
switch (action) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
// Calculate current handle positions.
|
||||
final float hueSelectorX = hueRect.centerX();
|
||||
final float hueSelectorY = hueRect.top + (hue / 360f) * hueRect.height();
|
||||
|
||||
final float satSelectorX = saturationValueRect.left + saturation * saturationValueRect.width();
|
||||
final float valSelectorY = saturationValueRect.top + (1 - value) * saturationValueRect.height();
|
||||
|
||||
// Create hit areas for both handles.
|
||||
RectF hueHitRect = new RectF(
|
||||
hueSelectorX - SELECTOR_RADIUS,
|
||||
hueSelectorY - SELECTOR_RADIUS,
|
||||
hueSelectorX + SELECTOR_RADIUS,
|
||||
hueSelectorY + SELECTOR_RADIUS
|
||||
);
|
||||
RectF satValHitRect = new RectF(
|
||||
satSelectorX - SELECTOR_RADIUS,
|
||||
valSelectorY - SELECTOR_RADIUS,
|
||||
satSelectorX + SELECTOR_RADIUS,
|
||||
valSelectorY + SELECTOR_RADIUS
|
||||
);
|
||||
|
||||
// Check if the touch started on a handle or within the expanded hue bar area.
|
||||
if (hueHitRect.contains(x, y)) {
|
||||
isDraggingHue = true;
|
||||
updateHueFromTouch(y);
|
||||
} else if (satValHitRect.contains(x, y)) {
|
||||
isDraggingSaturation = true;
|
||||
updateSaturationValueFromTouch(x, y);
|
||||
} else if (expandedHueRect.contains(x, y)) {
|
||||
// Handle touch within the expanded hue bar area.
|
||||
isDraggingHue = true;
|
||||
updateHueFromTouch(y);
|
||||
} else if (saturationValueRect.contains(x, y)) {
|
||||
isDraggingSaturation = true;
|
||||
updateSaturationValueFromTouch(x, y);
|
||||
}
|
||||
break;
|
||||
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
// Continue updating values even if touch moves outside the view.
|
||||
if (isDraggingHue) {
|
||||
updateHueFromTouch(y);
|
||||
} else if (isDraggingSaturation) {
|
||||
updateSaturationValueFromTouch(x, y);
|
||||
}
|
||||
break;
|
||||
|
||||
case MotionEvent.ACTION_UP:
|
||||
case MotionEvent.ACTION_CANCEL:
|
||||
isDraggingHue = false;
|
||||
isDraggingSaturation = false;
|
||||
break;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "onTouchEvent failure", ex);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the hue value based on touch position, clamping to valid range.
|
||||
*
|
||||
* @param y The y-coordinate of the touch position.
|
||||
*/
|
||||
private void updateHueFromTouch(float y) {
|
||||
// Clamp y to the hue rectangle bounds.
|
||||
final float clampedY = Utils.clamp(y, hueRect.top, hueRect.bottom);
|
||||
final float updatedHue = ((clampedY - hueRect.top) / hueRect.height()) * 360f;
|
||||
if (hue == updatedHue) {
|
||||
return;
|
||||
}
|
||||
|
||||
hue = updatedHue;
|
||||
updateSaturationValueShader();
|
||||
updateSelectedColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates saturation and value based on touch position, clamping to valid range.
|
||||
*
|
||||
* @param x The x-coordinate of the touch position.
|
||||
* @param y The y-coordinate of the touch position.
|
||||
*/
|
||||
private void updateSaturationValueFromTouch(float x, float y) {
|
||||
// Clamp x and y to the saturation-value rectangle bounds.
|
||||
final float clampedX = Utils.clamp(x, saturationValueRect.left, saturationValueRect.right);
|
||||
final float clampedY = Utils.clamp(y, saturationValueRect.top, saturationValueRect.bottom);
|
||||
|
||||
final float updatedSaturation = (clampedX - saturationValueRect.left) / saturationValueRect.width();
|
||||
final float updatedValue = 1 - ((clampedY - saturationValueRect.top) / saturationValueRect.height());
|
||||
|
||||
if (saturation == updatedSaturation && value == updatedValue) {
|
||||
return;
|
||||
}
|
||||
saturation = updatedSaturation;
|
||||
value = updatedValue;
|
||||
updateSelectedColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the selected color and notifies listeners.
|
||||
*/
|
||||
private void updateSelectedColor() {
|
||||
final int updatedColor = Color.HSVToColor(0, new float[]{hue, saturation, value});
|
||||
|
||||
if (selectedColor != updatedColor) {
|
||||
selectedColor = updatedColor;
|
||||
|
||||
if (colorChangedListener != null) {
|
||||
colorChangedListener.onColorChanged(updatedColor);
|
||||
}
|
||||
}
|
||||
|
||||
// Must always redraw, otherwise if saturation is pure grey or black
|
||||
// then the hue slider cannot be changed.
|
||||
invalidate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the currently selected color.
|
||||
*
|
||||
* @param color The color to set in either ARGB or RGB format.
|
||||
*/
|
||||
public void setColor(@ColorInt int color) {
|
||||
color &= 0x00FFFFFF;
|
||||
if (selectedColor == color) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Update the selected color.
|
||||
selectedColor = color;
|
||||
Logger.printDebug(() -> "setColor: " + getColorString(selectedColor));
|
||||
|
||||
// Convert the ARGB color to HSV values.
|
||||
float[] hsv = new float[3];
|
||||
Color.colorToHSV(color, hsv);
|
||||
|
||||
// Update the hue, saturation, and value.
|
||||
hue = hsv[0];
|
||||
saturation = hsv[1];
|
||||
value = hsv[2];
|
||||
|
||||
// Update the saturation-value shader based on the new hue.
|
||||
updateSaturationValueShader();
|
||||
|
||||
// Notify the listener if it's set.
|
||||
if (colorChangedListener != null) {
|
||||
colorChangedListener.onColorChanged(selectedColor);
|
||||
}
|
||||
|
||||
// Invalidate the view to trigger a redraw.
|
||||
invalidate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the currently selected color.
|
||||
*
|
||||
* @return The selected color in RGB format with no alpha channel.
|
||||
*/
|
||||
@ColorInt
|
||||
public int getColor() {
|
||||
return selectedColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the listener to be notified when the selected color changes.
|
||||
*
|
||||
* @param listener The listener to set.
|
||||
*/
|
||||
public void setOnColorChangedListener(OnColorChangedListener listener) {
|
||||
colorChangedListener = listener;
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,6 @@ import android.app.Dialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
@@ -54,7 +53,7 @@ public class ReVancedAboutPreference extends Preference {
|
||||
}
|
||||
|
||||
protected boolean isDarkModeEnabled() {
|
||||
return Utils.isDarkModeEnabled(getContext());
|
||||
return Utils.isDarkModeEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,7 +2,6 @@ package app.revanced.extension.tiktok;
|
||||
|
||||
import static app.revanced.extension.shared.Utils.isDarkModeEnabled;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
@@ -43,8 +42,8 @@ public class Utils {
|
||||
private static final @ColorInt int TEXT_LIGHT_MODE_SUMMARY
|
||||
= Color.argb(255, 80, 80, 80);
|
||||
|
||||
public static void setTitleAndSummaryColor(Context context, View view) {
|
||||
final boolean darkModeEnabled = isDarkModeEnabled(context);
|
||||
public static void setTitleAndSummaryColor(View view) {
|
||||
final boolean darkModeEnabled = isDarkModeEnabled();
|
||||
|
||||
TextView title = view.findViewById(android.R.id.title);
|
||||
title.setTextColor(darkModeEnabled
|
||||
|
||||
@@ -101,7 +101,7 @@ public class DownloadPathPreference extends DialogPreference {
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
Utils.setTitleAndSummaryColor(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,6 +22,6 @@ public class InputTextPreference extends EditTextPreference {
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
Utils.setTitleAndSummaryColor(view);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ public class RangeValuePreference extends DialogPreference {
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
Utils.setTitleAndSummaryColor(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -48,6 +48,6 @@ public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
Utils.setTitleAndSummaryColor(view);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,6 @@ public class TogglePreference extends SwitchPreference {
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
Utils.setTitleAndSummaryColor(view);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ public final class NavigationButtonsPatch {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Utils.isDarkModeEnabled(Utils.getContext())
|
||||
return Utils.isDarkModeEnabled()
|
||||
? !DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK
|
||||
: !DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,8 @@ public class OpenShortsInRegularPlayerPatch {
|
||||
|
||||
private static WeakReference<Activity> mainActivityRef = new WeakReference<>(null);
|
||||
|
||||
private static volatile boolean overrideBackPressToExit;
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
@@ -38,6 +40,18 @@ public class OpenShortsInRegularPlayerPatch {
|
||||
mainActivityRef = new WeakReference<>(activity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean overrideBackPressToExit(boolean original) {
|
||||
if (overrideBackPressToExit) {
|
||||
Logger.printDebug(() -> "Overriding back press to exit activity");
|
||||
return false;
|
||||
}
|
||||
|
||||
return original;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
@@ -45,6 +59,7 @@ public class OpenShortsInRegularPlayerPatch {
|
||||
try {
|
||||
ShortsPlayerType type = Settings.SHORTS_PLAYER_TYPE.get();
|
||||
if (type == ShortsPlayerType.SHORTS_PLAYER) {
|
||||
overrideBackPressToExit = false;
|
||||
return false; // Default unpatched behavior.
|
||||
}
|
||||
|
||||
@@ -61,13 +76,17 @@ public class OpenShortsInRegularPlayerPatch {
|
||||
// set to open in the regular player, so it's ignored as
|
||||
// checking the map makes the patch more complicated.
|
||||
Logger.printDebug(() -> "Ignoring Short with no videoId");
|
||||
overrideBackPressToExit = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (NavigationButton.getSelectedNavigationButton() == NavigationButton.SHORTS) {
|
||||
overrideBackPressToExit = false;
|
||||
return false; // Always use Shorts player for the Shorts nav button.
|
||||
}
|
||||
|
||||
overrideBackPressToExit = true;
|
||||
|
||||
final boolean forceFullScreen = (type == ShortsPlayerType.REGULAR_PLAYER_FULLSCREEN);
|
||||
OpenVideosFullscreenHookPatch.setOpenNextVideoFullscreen(forceFullScreen);
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ public class OpenVideosFullscreenHookPatch {
|
||||
}
|
||||
|
||||
if (!isFullScreenPatchIncluded()) {
|
||||
return false;
|
||||
return original;
|
||||
}
|
||||
|
||||
return Settings.OPEN_VIDEOS_FULLSCREEN_PORTRAIT.get();
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
@@ -33,8 +31,7 @@ public final class WideSearchbarPatch {
|
||||
final int paddingRight = searchBarView.getPaddingRight();
|
||||
final int paddingTop = searchBarView.getPaddingTop();
|
||||
final int paddingBottom = searchBarView.getPaddingBottom();
|
||||
final int paddingStart = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
|
||||
8, Resources.getSystem().getDisplayMetrics());
|
||||
final int paddingStart = Utils.dipToPixels(8);
|
||||
|
||||
if (Utils.isRightToLeftLocale()) {
|
||||
searchBarView.setPadding(paddingLeft, paddingTop, paddingStart, paddingBottom);
|
||||
|
||||
@@ -20,13 +20,16 @@ import app.revanced.extension.youtube.settings.Settings;
|
||||
public class ProgressBarDrawable extends Drawable {
|
||||
|
||||
private final Paint paint = new Paint();
|
||||
{
|
||||
paint.setColor(SeekbarColorPatch.getSeekbarColor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(@NonNull Canvas canvas) {
|
||||
if (Settings.HIDE_SEEKBAR_THUMBNAIL.get()) {
|
||||
return;
|
||||
}
|
||||
paint.setColor(SeekbarColorPatch.getSeekbarColor());
|
||||
|
||||
canvas.drawRect(getBounds(), paint);
|
||||
}
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@ public final class SeekbarColorPatch {
|
||||
//noinspection ConstantConditions
|
||||
if (false) { // Set true to force slow animation for development.
|
||||
final int longAnimation = Utils.getResourceIdentifier(
|
||||
Utils.isDarkModeEnabled(Utils.getContext())
|
||||
Utils.isDarkModeEnabled()
|
||||
? "startup_animation_5s_30fps_dark"
|
||||
: "startup_animation_5s_30fps_light",
|
||||
"raw");
|
||||
|
||||
@@ -21,8 +21,6 @@ import android.text.Spanned;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.text.style.ImageSpan;
|
||||
import android.text.style.ReplacementSpan;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.TypedValue;
|
||||
|
||||
import androidx.annotation.GuardedBy;
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -120,16 +118,13 @@ public class ReturnYouTubeDislike {
|
||||
private static final ShapeDrawable leftSeparatorShape;
|
||||
|
||||
static {
|
||||
DisplayMetrics dp = Objects.requireNonNull(Utils.getContext()).getResources().getDisplayMetrics();
|
||||
|
||||
leftSeparatorBounds = new Rect(0, 0,
|
||||
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1.2f, dp),
|
||||
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 14, dp));
|
||||
final int middleSeparatorSize =
|
||||
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3.7f, dp);
|
||||
Utils.dipToPixels(1.2f),
|
||||
Utils.dipToPixels(14f));
|
||||
final int middleSeparatorSize = Utils.dipToPixels(3.7f);
|
||||
middleSeparatorBounds = new Rect(0, 0, middleSeparatorSize, middleSeparatorSize);
|
||||
|
||||
leftSeparatorShapePaddingPixels = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8.4f, dp);
|
||||
leftSeparatorShapePaddingPixels = Utils.dipToPixels(8.4f);
|
||||
|
||||
leftSeparatorShape = new ShapeDrawable(new RectShape());
|
||||
leftSeparatorShape.setBounds(leftSeparatorBounds);
|
||||
|
||||
@@ -6,7 +6,6 @@ import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.preference.PreferenceFragment;
|
||||
import android.util.TypedValue;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toolbar;
|
||||
@@ -119,8 +118,7 @@ public class LicenseActivityHook {
|
||||
toolbar.setNavigationIcon(ReVancedPreferenceFragment.getBackButtonDrawable());
|
||||
toolbar.setTitle(getResourceIdentifier("revanced_settings_title", "string"));
|
||||
|
||||
final int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16,
|
||||
Utils.getContext().getResources().getDisplayMetrics());
|
||||
final int margin = Utils.dipToPixels(16);
|
||||
toolbar.setTitleMarginStart(margin);
|
||||
toolbar.setTitleMarginEnd(margin);
|
||||
TextView toolbarTextView = Utils.getChildView(toolbar, false,
|
||||
|
||||
@@ -17,7 +17,6 @@ import android.preference.SwitchPreference;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.TextUtils;
|
||||
import android.text.style.BackgroundColorSpan;
|
||||
import android.util.TypedValue;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowInsets;
|
||||
import android.widget.TextView;
|
||||
@@ -245,9 +244,7 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
|
||||
toolbar.setNavigationIcon(getBackButtonDrawable());
|
||||
toolbar.setNavigationOnClickListener(view -> preferenceScreenDialog.dismiss());
|
||||
|
||||
final int margin = (int) TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP, 16, getResources().getDisplayMetrics()
|
||||
);
|
||||
final int margin = Utils.dipToPixels(16);
|
||||
toolbar.setTitleMargin(margin, 0, margin, 0);
|
||||
|
||||
TextView toolbarTextView = Utils.getChildView(toolbar,
|
||||
|
||||
@@ -5,7 +5,6 @@ import static app.revanced.extension.shared.StringRef.str;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Rect;
|
||||
import android.text.TextUtils;
|
||||
import android.util.TypedValue;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -727,15 +726,11 @@ public class SegmentPlaybackController {
|
||||
}
|
||||
}
|
||||
|
||||
private static int highlightSegmentTimeBarScreenWidth = -1; // actual pixel width to use
|
||||
private static int getHighlightSegmentTimeBarScreenWidth() {
|
||||
if (highlightSegmentTimeBarScreenWidth == -1) {
|
||||
highlightSegmentTimeBarScreenWidth = (int) TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP, HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH,
|
||||
Objects.requireNonNull(Utils.getContext()).getResources().getDisplayMetrics());
|
||||
}
|
||||
return highlightSegmentTimeBarScreenWidth;
|
||||
}
|
||||
/**
|
||||
* Actual screen pixel width to use for the highlight segment time bar.
|
||||
*/
|
||||
private static final int highlightSegmentTimeBarScreenWidth
|
||||
= Utils.dipToPixels(HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH);
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
@@ -757,7 +752,7 @@ public class SegmentPlaybackController {
|
||||
final float left = leftPadding + segment.start * videoMillisecondsToPixels;
|
||||
final float right;
|
||||
if (segment.category == SegmentCategory.HIGHLIGHT) {
|
||||
right = left + getHighlightSegmentTimeBarScreenWidth();
|
||||
right = left + highlightSegmentTimeBarScreenWidth;
|
||||
} else {
|
||||
right = leftPadding + segment.end * videoMillisecondsToPixels;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package app.revanced.extension.youtube.sponsorblock.objects;
|
||||
|
||||
import static app.revanced.extension.shared.StringRef.sf;
|
||||
import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.COLOR_DOT_STRING;
|
||||
import static app.revanced.extension.youtube.settings.Settings.*;
|
||||
|
||||
import android.graphics.Color;
|
||||
@@ -9,7 +10,9 @@ import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.TextUtils;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.text.style.RelativeSizeSpan;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@@ -134,7 +137,8 @@ public enum SegmentCategory {
|
||||
updateEnabledCategories();
|
||||
}
|
||||
|
||||
public static int applyOpacityToColor(int color, float opacity) {
|
||||
@ColorInt
|
||||
public static int applyOpacityToColor(@ColorInt int color, float opacity) {
|
||||
if (opacity < 0 || opacity > 1.0f) {
|
||||
throw new IllegalArgumentException("Invalid opacity: " + opacity);
|
||||
}
|
||||
@@ -165,29 +169,28 @@ public enum SegmentCategory {
|
||||
/**
|
||||
* Skipped segment toast, if the skip occurred in the first quarter of the video
|
||||
*/
|
||||
@NonNull
|
||||
public final StringRef skippedToastBeginning;
|
||||
/**
|
||||
* Skipped segment toast, if the skip occurred in the middle half of the video
|
||||
*/
|
||||
@NonNull
|
||||
public final StringRef skippedToastMiddle;
|
||||
/**
|
||||
* Skipped segment toast, if the skip occurred in the last quarter of the video
|
||||
*/
|
||||
@NonNull
|
||||
public final StringRef skippedToastEnd;
|
||||
|
||||
@NonNull
|
||||
public final Paint paint;
|
||||
|
||||
/**
|
||||
* Category color with opacity applied.
|
||||
*/
|
||||
@ColorInt
|
||||
private int color;
|
||||
|
||||
/**
|
||||
* Value must be changed using {@link #setBehaviour(CategoryBehaviour)}.
|
||||
* Caller must also {@link #updateEnabledCategories()}.
|
||||
*/
|
||||
@NonNull
|
||||
public CategoryBehaviour behaviour = CategoryBehaviour.IGNORE;
|
||||
|
||||
SegmentCategory(String keyValue, StringRef title, StringRef description,
|
||||
@@ -247,7 +250,7 @@ public enum SegmentCategory {
|
||||
}
|
||||
}
|
||||
|
||||
public void setBehaviour(@NonNull CategoryBehaviour behaviour) {
|
||||
public void setBehaviour(CategoryBehaviour behaviour) {
|
||||
this.behaviour = Objects.requireNonNull(behaviour);
|
||||
this.behaviorSetting.save(behaviour.reVancedKeyValue);
|
||||
}
|
||||
@@ -273,6 +276,10 @@ public enum SegmentCategory {
|
||||
return opacitySetting.get();
|
||||
}
|
||||
|
||||
public float getOpacityDefault() {
|
||||
return opacitySetting.defaultValue;
|
||||
}
|
||||
|
||||
public void resetColorAndOpacity() {
|
||||
setColor(colorSetting.defaultValue);
|
||||
setOpacity(opacitySetting.defaultValue);
|
||||
@@ -291,10 +298,19 @@ public enum SegmentCategory {
|
||||
/**
|
||||
* @return Integer color of #RRGGBB format.
|
||||
*/
|
||||
@ColorInt
|
||||
public int getColorNoOpacity() {
|
||||
return color & 0x00FFFFFF;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Integer color of #RRGGBB format.
|
||||
*/
|
||||
@ColorInt
|
||||
public int getColorNoOpacityDefault() {
|
||||
return Color.parseColor(colorSetting.defaultValue) & 0x00FFFFFF;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Hex color string of #RRGGBB format with no opacity level.
|
||||
*/
|
||||
@@ -302,22 +318,27 @@ public enum SegmentCategory {
|
||||
return String.format(Locale.US, "#%06X", getColorNoOpacity());
|
||||
}
|
||||
|
||||
private static SpannableString getCategoryColorDotSpan(String text, int color) {
|
||||
SpannableString dotSpan = new SpannableString('⬤' + text);
|
||||
private static SpannableString getCategoryColorDotSpan(String text, @ColorInt int color) {
|
||||
SpannableString dotSpan = new SpannableString(COLOR_DOT_STRING + text);
|
||||
dotSpan.setSpan(new ForegroundColorSpan(color), 0, 1,
|
||||
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
return dotSpan;
|
||||
}
|
||||
|
||||
public static SpannableString getCategoryColorDot(int color) {
|
||||
return getCategoryColorDotSpan("", color);
|
||||
public static SpannableString getCategoryColorDot(@ColorInt int color) {
|
||||
SpannableString dotSpan = new SpannableString(COLOR_DOT_STRING);
|
||||
dotSpan.setSpan(new ForegroundColorSpan(color), 0, 1,
|
||||
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
dotSpan.setSpan(new RelativeSizeSpan(1.5f), 0, 1,
|
||||
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
return dotSpan;
|
||||
}
|
||||
|
||||
public SpannableString getCategoryColorDot() {
|
||||
return getCategoryColorDot(color);
|
||||
}
|
||||
|
||||
public SpannableString getTitleWithColorDot(int categoryColor) {
|
||||
public SpannableString getTitleWithColorDot(@ColorInt int categoryColor) {
|
||||
return getCategoryColorDotSpan(" " + title, categoryColor);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,35 +1,46 @@
|
||||
package app.revanced.extension.youtube.sponsorblock.objects;
|
||||
|
||||
import static app.revanced.extension.shared.StringRef.str;
|
||||
import static app.revanced.extension.shared.Utils.getResourceIdentifier;
|
||||
import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.getColorString;
|
||||
import static app.revanced.extension.youtube.sponsorblock.objects.SegmentCategory.applyOpacityToColor;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import android.preference.ListPreference;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.GridLayout;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.preference.ColorPickerPreference;
|
||||
import app.revanced.extension.shared.settings.preference.ColorPickerView;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class SegmentCategoryListPreference extends ListPreference {
|
||||
private final SegmentCategory category;
|
||||
private TextView colorDotView;
|
||||
private EditText colorEditText;
|
||||
private EditText opacityEditText;
|
||||
|
||||
/**
|
||||
* #RRGGBB
|
||||
* RGB format (no alpha).
|
||||
*/
|
||||
@ColorInt
|
||||
private int categoryColor;
|
||||
/**
|
||||
* [0, 1]
|
||||
@@ -37,6 +48,11 @@ public class SegmentCategoryListPreference extends ListPreference {
|
||||
private float categoryOpacity;
|
||||
private int selectedDialogEntryIndex;
|
||||
|
||||
private TextView dialogColorDotView;
|
||||
private EditText dialogColorEditText;
|
||||
private EditText dialogOpacityEditText;
|
||||
private ColorPickerView dialogColorPickerView;
|
||||
|
||||
public SegmentCategoryListPreference(Context context, SegmentCategory category) {
|
||||
super(context);
|
||||
this.category = Objects.requireNonNull(category);
|
||||
@@ -67,8 +83,20 @@ public class SegmentCategoryListPreference extends ListPreference {
|
||||
categoryOpacity = category.getOpacity();
|
||||
|
||||
Context context = builder.getContext();
|
||||
LinearLayout mainLayout = new LinearLayout(context);
|
||||
mainLayout.setOrientation(LinearLayout.VERTICAL);
|
||||
mainLayout.setPadding(70, 0, 70, 0);
|
||||
|
||||
// Inflate the color picker view.
|
||||
View colorPickerContainer = LayoutInflater.from(context)
|
||||
.inflate(getResourceIdentifier("revanced_color_picker", "layout"), null);
|
||||
dialogColorPickerView = colorPickerContainer.findViewById(
|
||||
getResourceIdentifier("color_picker_view", "id"));
|
||||
dialogColorPickerView.setColor(categoryColor);
|
||||
mainLayout.addView(colorPickerContainer);
|
||||
|
||||
// Grid layout for color and opacity inputs.
|
||||
GridLayout gridLayout = new GridLayout(context);
|
||||
gridLayout.setPadding(70, 0, 150, 0); // Padding for the entire layout.
|
||||
gridLayout.setColumnCount(3);
|
||||
gridLayout.setRowCount(2);
|
||||
|
||||
@@ -84,19 +112,22 @@ public class SegmentCategoryListPreference extends ListPreference {
|
||||
gridParams.rowSpec = GridLayout.spec(0); // First row.
|
||||
gridParams.columnSpec = GridLayout.spec(1); // Second column.
|
||||
gridParams.setMargins(0, 0, 10, 0);
|
||||
colorDotView = new TextView(context);
|
||||
colorDotView.setLayoutParams(gridParams);
|
||||
gridLayout.addView(colorDotView);
|
||||
dialogColorDotView = new TextView(context);
|
||||
dialogColorDotView.setLayoutParams(gridParams);
|
||||
gridLayout.addView(dialogColorDotView);
|
||||
updateCategoryColorDot();
|
||||
|
||||
gridParams = new GridLayout.LayoutParams();
|
||||
gridParams.rowSpec = GridLayout.spec(0); // First row.
|
||||
gridParams.columnSpec = GridLayout.spec(2); // Third column.
|
||||
colorEditText = new EditText(context);
|
||||
colorEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
|
||||
colorEditText.setTextLocale(Locale.US);
|
||||
colorEditText.setText(category.getColorString());
|
||||
colorEditText.addTextChangedListener(new TextWatcher() {
|
||||
dialogColorEditText = new EditText(context);
|
||||
dialogColorEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS
|
||||
| InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
|
||||
dialogColorEditText.setAutofillHints((String) null);
|
||||
dialogColorEditText.setTypeface(Typeface.MONOSPACE);
|
||||
dialogColorEditText.setTextLocale(Locale.US);
|
||||
dialogColorEditText.setText(getColorString(categoryColor));
|
||||
dialogColorEditText.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
@@ -109,28 +140,30 @@ public class SegmentCategoryListPreference extends ListPreference {
|
||||
public void afterTextChanged(Editable edit) {
|
||||
try {
|
||||
String colorString = edit.toString();
|
||||
final int colorStringLength = colorString.length();
|
||||
String normalizedColorString = ColorPickerPreference.cleanupColorCodeString(colorString);
|
||||
|
||||
if (!colorString.startsWith("#")) {
|
||||
edit.insert(0, "#"); // Recursively calls back into this method.
|
||||
if (!normalizedColorString.equals(colorString)) {
|
||||
edit.replace(0, colorString.length(), normalizedColorString);
|
||||
return;
|
||||
}
|
||||
|
||||
final int maxColorStringLength = 7; // #RRGGBB
|
||||
if (colorStringLength > maxColorStringLength) {
|
||||
edit.delete(maxColorStringLength, colorStringLength);
|
||||
if (normalizedColorString.length() != ColorPickerPreference.COLOR_STRING_LENGTH) {
|
||||
// User is still typing out the color.
|
||||
return;
|
||||
}
|
||||
|
||||
categoryColor = Color.parseColor(colorString);
|
||||
updateCategoryColorDot();
|
||||
} catch (IllegalArgumentException ex) {
|
||||
// Ignore.
|
||||
// Remove the alpha channel.
|
||||
final int newColor = Color.parseColor(colorString) & 0x00FFFFFF;
|
||||
// Changing view color causes callback into this class.
|
||||
dialogColorPickerView.setColor(newColor);
|
||||
} catch (Exception ex) {
|
||||
// Should never be reached since input is validated before using.
|
||||
Logger.printException(() -> "colorEditText afterTextChanged failure", ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
colorEditText.setLayoutParams(gridParams);
|
||||
gridLayout.addView(colorEditText);
|
||||
dialogColorEditText.setLayoutParams(gridParams);
|
||||
gridLayout.addView(dialogColorEditText);
|
||||
|
||||
gridParams = new GridLayout.LayoutParams();
|
||||
gridParams.rowSpec = GridLayout.spec(1); // Second row.
|
||||
@@ -143,9 +176,13 @@ public class SegmentCategoryListPreference extends ListPreference {
|
||||
gridParams = new GridLayout.LayoutParams();
|
||||
gridParams.rowSpec = GridLayout.spec(1); // Second row.
|
||||
gridParams.columnSpec = GridLayout.spec(2); // Third column.
|
||||
opacityEditText = new EditText(context);
|
||||
opacityEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
|
||||
opacityEditText.addTextChangedListener(new TextWatcher() {
|
||||
dialogOpacityEditText = new EditText(context);
|
||||
dialogOpacityEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL
|
||||
| InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
|
||||
dialogOpacityEditText.setAutofillHints((String) null);
|
||||
dialogOpacityEditText.setTypeface(Typeface.MONOSPACE);
|
||||
dialogOpacityEditText.setTextLocale(Locale.US);
|
||||
dialogOpacityEditText.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
@@ -183,31 +220,40 @@ public class SegmentCategoryListPreference extends ListPreference {
|
||||
}
|
||||
|
||||
updateCategoryColorDot();
|
||||
} catch (NumberFormatException ex) {
|
||||
} catch (Exception ex) {
|
||||
// Should never happen.
|
||||
Logger.printException(() -> "Could not parse opacity string", ex);
|
||||
Logger.printException(() -> "opacityEditText afterTextChanged failure", ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
opacityEditText.setLayoutParams(gridParams);
|
||||
gridLayout.addView(opacityEditText);
|
||||
dialogOpacityEditText.setLayoutParams(gridParams);
|
||||
gridLayout.addView(dialogOpacityEditText);
|
||||
updateOpacityText();
|
||||
|
||||
builder.setView(gridLayout);
|
||||
mainLayout.addView(gridLayout);
|
||||
|
||||
// Set up color picker listener.
|
||||
// Do last to prevent listener callbacks while setting up view.
|
||||
dialogColorPickerView.setOnColorChangedListener(color -> {
|
||||
if (categoryColor == color) {
|
||||
return;
|
||||
}
|
||||
categoryColor = color;
|
||||
String hexColor = getColorString(color);
|
||||
Logger.printDebug(() -> "onColorChanged: " + hexColor);
|
||||
|
||||
updateCategoryColorDot();
|
||||
dialogColorEditText.setText(hexColor);
|
||||
dialogColorEditText.setSelection(hexColor.length());
|
||||
});
|
||||
|
||||
builder.setView(mainLayout);
|
||||
builder.setTitle(category.title.toString());
|
||||
|
||||
builder.setPositiveButton(android.R.string.ok, (dialog, which) -> {
|
||||
onClick(dialog, DialogInterface.BUTTON_POSITIVE);
|
||||
});
|
||||
builder.setNeutralButton(str("revanced_sb_reset_color"), (dialog, which) -> {
|
||||
try {
|
||||
category.resetColorAndOpacity();
|
||||
updateUI();
|
||||
Utils.showToastShort(str("revanced_sb_color_reset"));
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "setNeutralButton failure", ex);
|
||||
}
|
||||
});
|
||||
builder.setNeutralButton(str("revanced_settings_reset_color"), null);
|
||||
builder.setNegativeButton(android.R.string.cancel, null);
|
||||
|
||||
selectedDialogEntryIndex = findIndexOfValue(getValue());
|
||||
@@ -218,6 +264,25 @@ public class SegmentCategoryListPreference extends ListPreference {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void showDialog(Bundle state) {
|
||||
super.showDialog(state);
|
||||
|
||||
// Do not close dialog when reset is pressed.
|
||||
Button button = ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_NEUTRAL);
|
||||
button.setOnClickListener(view -> {
|
||||
try {
|
||||
// Setting view color causes callback to update the UI.
|
||||
dialogColorPickerView.setColor(category.getColorNoOpacityDefault());
|
||||
|
||||
categoryOpacity = category.getOpacityDefault();
|
||||
updateOpacityText();
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "setOnClickListener failure", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDialogClosed(boolean positiveResult) {
|
||||
try {
|
||||
@@ -230,43 +295,42 @@ public class SegmentCategoryListPreference extends ListPreference {
|
||||
}
|
||||
|
||||
try {
|
||||
String colorString = colorEditText.getText().toString();
|
||||
if (!colorString.equals(category.getColorString()) || categoryOpacity != category.getOpacity()) {
|
||||
category.setColor(colorString);
|
||||
category.setOpacity(categoryOpacity);
|
||||
Utils.showToastShort(str("revanced_sb_color_changed"));
|
||||
}
|
||||
category.setColor(dialogColorEditText.getText().toString());
|
||||
category.setOpacity(categoryOpacity);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
Utils.showToastShort(str("revanced_sb_color_invalid"));
|
||||
Utils.showToastShort(str("revanced_settings_color_invalid"));
|
||||
}
|
||||
|
||||
updateUI();
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "onDialogClosed failure", ex);
|
||||
} finally {
|
||||
dialogColorDotView = null;
|
||||
dialogColorEditText = null;
|
||||
dialogOpacityEditText = null;
|
||||
dialogColorPickerView = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void applyOpacityToCategoryColor() {
|
||||
categoryColor = applyOpacityToColor(categoryColor, categoryOpacity);
|
||||
@ColorInt
|
||||
private int applyOpacityToCategoryColor() {
|
||||
return applyOpacityToColor(categoryColor, categoryOpacity);
|
||||
}
|
||||
|
||||
public void updateUI() {
|
||||
categoryColor = category.getColorNoOpacity();
|
||||
categoryOpacity = category.getOpacity();
|
||||
applyOpacityToCategoryColor();
|
||||
|
||||
setTitle(category.getTitleWithColorDot(categoryColor));
|
||||
setTitle(category.getTitleWithColorDot(applyOpacityToCategoryColor()));
|
||||
}
|
||||
|
||||
private void updateCategoryColorDot() {
|
||||
applyOpacityToCategoryColor();
|
||||
|
||||
colorDotView.setText(SegmentCategory.getCategoryColorDot(categoryColor));
|
||||
dialogColorDotView.setText(SegmentCategory.getCategoryColorDot(applyOpacityToCategoryColor()));
|
||||
}
|
||||
|
||||
private void updateOpacityText() {
|
||||
opacityEditText.setText(String.format(Locale.US, "%.2f", categoryOpacity));
|
||||
dialogOpacityEditText.setText(String.format(Locale.US, "%.2f", categoryOpacity));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -277,4 +341,4 @@ public class SegmentCategoryListPreference extends ListPreference {
|
||||
// This is required otherwise the ReVanced preference fragment
|
||||
// sets all ListPreference summaries to show the current selection.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -421,7 +421,7 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
|
||||
.setTitle(apiUrl.getTitle())
|
||||
.setView(editText)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.setNeutralButton(str("revanced_sb_reset"), urlChangeListener)
|
||||
.setNeutralButton(str("revanced_settings_reset"), urlChangeListener)
|
||||
.setPositiveButton(android.R.string.ok, urlChangeListener)
|
||||
.show();
|
||||
return true;
|
||||
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.25.0-dev.5
|
||||
version = 5.25.0-dev.9
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
public final class FixFacebookLoginPatchKt {
|
||||
public static final fun getFixFacebookLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/all/misc/activity/exportall/ExportAllActivitiesPatchKt {
|
||||
public static final fun getExportAllActivitiesPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ val hideAdbStatusPatch = bytecodePatch(
|
||||
.takeIf { it.opcode == Opcode.INVOKE_STATIC }
|
||||
?.getReference<MethodReference>()
|
||||
?.takeIf {
|
||||
it.anyMethodSignatureMatches(it,
|
||||
it.anyMethodSignatureMatches(
|
||||
SETTINGS_GLOBAL_GET_INT_OR_THROW_METHOD_REFERENCE,
|
||||
SETTINGS_GLOBAL_GET_INT_OR_DEFAULT_METHOD_REFERENCE
|
||||
)
|
||||
|
||||
@@ -7,7 +7,5 @@ import app.revanced.patcher.patch.bytecodePatch
|
||||
val spoofSignaturePatch = bytecodePatch(
|
||||
description = "Spoofs the signature of the app fix various functions of the app.",
|
||||
) {
|
||||
compatibleWith("com.spotify.music")
|
||||
|
||||
dependsOn(spoofPackageInfoPatch)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package app.revanced.patches.spotify.misc.fix.login
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
|
||||
internal val katanaProxyLoginMethodHandlerClassFingerprint = fingerprint {
|
||||
strings("katana_proxy_auth")
|
||||
}
|
||||
|
||||
internal val katanaProxyLoginMethodTryAuthorizeFingerprint = fingerprint {
|
||||
strings("e2e")
|
||||
literal { 0 }
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package app.revanced.patches.spotify.misc.fix.login
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.util.returnEarly
|
||||
|
||||
@Suppress("unused")
|
||||
val fixFacebookLoginPatch = bytecodePatch(
|
||||
name = "Fix Facebook login",
|
||||
description =
|
||||
"Fix logging in with Facebook when the app is patched by always opening the login in a web browser window.",
|
||||
) {
|
||||
compatibleWith("com.spotify.music")
|
||||
|
||||
execute {
|
||||
// The Facebook SDK tries to handle the login using the Facebook app in case it is installed.
|
||||
// However, the Facebook app does signature checks with the app that is requesting the authentication,
|
||||
// which ends up making the Facebook server reject with an invalid key hash for the app signature.
|
||||
// Override the Faceboook SDK to always handle the login using the web browser, which does not perform
|
||||
// signature checks.
|
||||
|
||||
val katanaProxyLoginMethodHandlerClass = katanaProxyLoginMethodHandlerClassFingerprint.originalClassDef
|
||||
// Always return 0 (no Intent was launched) as the result of trying to authorize with the Facebook app to
|
||||
// make the login fallback to a web browser window.
|
||||
katanaProxyLoginMethodTryAuthorizeFingerprint
|
||||
.match(katanaProxyLoginMethodHandlerClass)
|
||||
.method
|
||||
.returnEarly(0)
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,9 @@ private val swipeControlsResourcePatch = resourcePatch {
|
||||
summaryKey = null,
|
||||
),
|
||||
TextPreference("revanced_swipe_overlay_background_opacity", inputType = InputType.NUMBER),
|
||||
TextPreference("revanced_swipe_overlay_progress_color", inputType = InputType.TEXT_CAP_CHARACTERS),
|
||||
TextPreference("revanced_swipe_overlay_progress_color",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference",
|
||||
inputType = InputType.TEXT_CAP_CHARACTERS),
|
||||
TextPreference("revanced_swipe_text_overlay_size", inputType = InputType.NUMBER),
|
||||
TextPreference("revanced_swipe_overlay_timeout", inputType = InputType.NUMBER),
|
||||
TextPreference("revanced_swipe_threshold", inputType = InputType.NUMBER),
|
||||
|
||||
@@ -15,9 +15,6 @@ internal val openVideosFullscreenPortraitFingerprint = fingerprint {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to enable opening regular videos fullscreen.
|
||||
*/
|
||||
internal val openVideosFullscreenHookPatchExtensionFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC)
|
||||
returns("Z")
|
||||
|
||||
@@ -53,4 +53,12 @@ internal val shortsPlaybackIntentFingerprint = fingerprint {
|
||||
"ReelWatchFragmentArgs",
|
||||
"reels_fragment_descriptor"
|
||||
)
|
||||
}
|
||||
|
||||
internal val exitVideoPlayerFingerprint = fingerprint {
|
||||
returns("V")
|
||||
parameters()
|
||||
literal {
|
||||
mdx_drawer_layout_id
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,16 @@
|
||||
package app.revanced.patches.youtube.layout.shortsplayer
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.mapping.get
|
||||
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
|
||||
import app.revanced.patches.shared.misc.mapping.resourceMappings
|
||||
import app.revanced.patches.shared.misc.settings.preference.ListPreference
|
||||
import app.revanced.patches.youtube.layout.player.fullscreen.openVideosFullscreenHookPatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
@@ -19,12 +24,29 @@ import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
|
||||
import app.revanced.util.findFreeRegister
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/OpenShortsInRegularPlayerPatch;"
|
||||
|
||||
internal var mdx_drawer_layout_id = -1L
|
||||
private set
|
||||
|
||||
private val openShortsInRegularPlayerResourcePatch = resourcePatch {
|
||||
dependsOn(resourceMappingPatch)
|
||||
|
||||
execute {
|
||||
mdx_drawer_layout_id = resourceMappings[
|
||||
"id",
|
||||
"mdx_drawer_layout",
|
||||
]
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("unused")
|
||||
val openShortsInRegularPlayerPatch = bytecodePatch(
|
||||
name = "Open Shorts in regular player",
|
||||
@@ -36,7 +58,8 @@ val openShortsInRegularPlayerPatch = bytecodePatch(
|
||||
addResourcesPatch,
|
||||
openVideosFullscreenHookPatch,
|
||||
navigationBarHookPatch,
|
||||
versionCheckPatch
|
||||
versionCheckPatch,
|
||||
openShortsInRegularPlayerResourcePatch
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
@@ -127,5 +150,28 @@ val openShortsInRegularPlayerPatch = bytecodePatch(
|
||||
${extensionInstructions(0, 1)}
|
||||
"""
|
||||
)
|
||||
|
||||
// Fix issue with back button exiting the app instead of minimizing the player.
|
||||
// Without this change this issue can be difficult to reproduce, but seems to occur
|
||||
// most often with 'open video in regular player' and not open in fullscreen player.
|
||||
exitVideoPlayerFingerprint.method.apply {
|
||||
// Method call for Activity.finish()
|
||||
val finishIndex = indexOfFirstInstructionOrThrow {
|
||||
val reference = getReference<MethodReference>()
|
||||
reference?.name == "finish"
|
||||
}
|
||||
|
||||
// Index of PlayerType.isWatchWhileMaximizedOrFullscreen()
|
||||
val index = indexOfFirstInstructionReversedOrThrow(finishIndex, Opcode.MOVE_RESULT)
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
index + 1,
|
||||
"""
|
||||
invoke-static { v$register }, ${EXTENSION_CLASS_DESCRIPTOR}->overrideBackPressToExit(Z)Z
|
||||
move-result v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,14 +89,15 @@ val themePatch = bytecodePatch(
|
||||
execute {
|
||||
val preferences = mutableSetOf<BasePreference>(
|
||||
SwitchPreference("revanced_seekbar_custom_color"),
|
||||
TextPreference("revanced_seekbar_custom_color_primary", inputType = InputType.TEXT_CAP_CHARACTERS),
|
||||
TextPreference("revanced_seekbar_custom_color_primary",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference",
|
||||
inputType = InputType.TEXT_CAP_CHARACTERS),
|
||||
)
|
||||
|
||||
if (is_19_25_or_greater) {
|
||||
preferences += TextPreference(
|
||||
"revanced_seekbar_custom_color_accent",
|
||||
inputType = InputType.TEXT_CAP_CHARACTERS
|
||||
)
|
||||
preferences += TextPreference("revanced_seekbar_custom_color_accent",
|
||||
tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference",
|
||||
inputType = InputType.TEXT_CAP_CHARACTERS)
|
||||
}
|
||||
|
||||
PreferenceScreen.SEEKBAR.addPreferences(
|
||||
|
||||
@@ -74,6 +74,7 @@ private val settingsResourcePatch = resourcePatch {
|
||||
|
||||
arrayOf(
|
||||
ResourceGroup("drawable",
|
||||
"revanced_settings_circle_background.xml",
|
||||
"revanced_settings_cursor.xml",
|
||||
"revanced_settings_icon.xml",
|
||||
"revanced_settings_screen_00_about.xml",
|
||||
@@ -91,6 +92,8 @@ private val settingsResourcePatch = resourcePatch {
|
||||
"revanced_settings_screen_12_video.xml",
|
||||
),
|
||||
ResourceGroup("layout",
|
||||
"revanced_color_dot_widget.xml",
|
||||
"revanced_color_picker.xml",
|
||||
"revanced_preference_with_icon_no_search_result.xml",
|
||||
"revanced_search_suggestion_item.xml",
|
||||
"revanced_settings_with_toolbar.xml"),
|
||||
|
||||
@@ -3,10 +3,10 @@ package app.revanced.patches.yuka.misc.unlockpremium
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
|
||||
@Deprecated("This patch no longer works and will be removed in the future.")
|
||||
@Suppress("unused")
|
||||
val unlockPremiumPatch = bytecodePatch(
|
||||
name = "Unlock premium",
|
||||
) {
|
||||
val unlockPremiumPatch = bytecodePatch {
|
||||
|
||||
compatibleWith("io.yuka.android"("4.29"))
|
||||
|
||||
execute {
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">الإعدادات</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">هل ترغب في المتابعة؟</string>
|
||||
<string name="revanced_settings_reset">إعادة التعيين</string>
|
||||
<string name="revanced_settings_reset_color">إعادة تعيين اللون</string>
|
||||
<string name="revanced_settings_color_invalid">لون غير صالح</string>
|
||||
<string name="revanced_settings_restart_title">تحديث وإعادة التشغيل</string>
|
||||
<string name="revanced_settings_restart">إعادة التشغيل</string>
|
||||
<string name="revanced_settings_import">استيراد</string>
|
||||
@@ -365,9 +367,6 @@ Second \"item\" text"</string>
|
||||
|
||||
هذه الميزة متاحة فقط للأجهزة القديمة"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">يتم عرض إعلانات ملء الشاشة</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">إخفاء الإعلانات الزرية</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">تم إخفاء الإعلانات الزرية</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">يتم عرض الإعلانات الزرية</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">إخفاء تسمية الترقية المدفوعة</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">تم إخفاء تسمية الترقية المدفوعة</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">يتم عرض تسمية الترقية المدفوعة</string>
|
||||
@@ -1099,11 +1098,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s ثانية</string>
|
||||
<string name="revanced_sb_color_opacity_label">الشفافية:</string>
|
||||
<string name="revanced_sb_color_dot_label">اللون:</string>
|
||||
<string name="revanced_sb_color_changed">تم تغيير اللون</string>
|
||||
<string name="revanced_sb_color_reset">إعادة ضبط اللون</string>
|
||||
<string name="revanced_sb_color_invalid">رمز اللون غير صالح</string>
|
||||
<string name="revanced_sb_reset_color">إعادة تعيين اللون</string>
|
||||
<string name="revanced_sb_reset">إعادة التعيين</string>
|
||||
<string name="revanced_sb_about_title">لمحة</string>
|
||||
<string name="revanced_sb_about_api_summary">يتم توفير البيانات بواسطة SponsorBlock API. انقر هنا لمعرفة المزيد ومشاهدة التنزيلات لمنصات أخرى</string>
|
||||
</patch>
|
||||
|
||||
@@ -365,9 +365,6 @@ Məhdudiyyətlər
|
||||
|
||||
Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Tam ekran reklamları göstərilir</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Düyməli reklamları gizlət</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Düyməli reklamlar gizlədilir</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Düyməli reklamlar göstərilir</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Ödənişli tanıtım etiketini gizlət</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Ödənişli reklam etiketi gizlədilib</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Ödənişli reklam etiketi göstərilir</string>
|
||||
@@ -1098,11 +1095,6 @@ Təqdim etməyə hazırdır?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s saniyə</string>
|
||||
<string name="revanced_sb_color_opacity_label">Qeyri-şəffaflıq:</string>
|
||||
<string name="revanced_sb_color_dot_label">Rəng:</string>
|
||||
<string name="revanced_sb_color_changed">Rəng dəyişdirildi</string>
|
||||
<string name="revanced_sb_color_reset">Rəngi sıfırla</string>
|
||||
<string name="revanced_sb_color_invalid">Etibarsız rəng kodu</string>
|
||||
<string name="revanced_sb_reset_color">Rəngi sıfırla</string>
|
||||
<string name="revanced_sb_reset">Sıfırlayın</string>
|
||||
<string name="revanced_sb_about_title">Haqqında</string>
|
||||
<string name="revanced_sb_about_api_summary">Məlumat SponsorBlock API tərəfindən təqdim edilir. Daha ətraflı öyrənmək və digər platformalar üzrə yükləmələrə baxmaq üçün bura toxunun</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Налады</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Вы хочаце працягнуць?</string>
|
||||
<string name="revanced_settings_reset">Скінуць</string>
|
||||
<string name="revanced_settings_reset_color">Скінуць колер</string>
|
||||
<string name="revanced_settings_color_invalid">Несапраўдны колер</string>
|
||||
<string name="revanced_settings_restart_title">Абнавіце і перазагрузіце</string>
|
||||
<string name="revanced_settings_restart">Перазапуск</string>
|
||||
<string name="revanced_settings_import">Імпарт</string>
|
||||
@@ -365,9 +367,6 @@ Second \"item\" text"</string>
|
||||
|
||||
Гэтая функцыя даступная толькі для старых прылад"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Адлюстроўваецца поўнаэкранная рэклама</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Схаваць рэкламу на кнопках</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Аб\"явы на кнопках схаваныя</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Паказваюцца аб\"явы на кнопках</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Схаваць метку аплачанай акцыі</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Пазнака платнай акцыі схавана</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Адлюстроўваецца ярлык платнай акцыі</string>
|
||||
@@ -1100,11 +1099,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s секунд</string>
|
||||
<string name="revanced_sb_color_opacity_label">Непразрыстасць:</string>
|
||||
<string name="revanced_sb_color_dot_label">колер:</string>
|
||||
<string name="revanced_sb_color_changed">Колер змяніўся</string>
|
||||
<string name="revanced_sb_color_reset">Скід колеру</string>
|
||||
<string name="revanced_sb_color_invalid">Няправільны код колеру</string>
|
||||
<string name="revanced_sb_reset_color">Скінуць колер</string>
|
||||
<string name="revanced_sb_reset">Скінуць</string>
|
||||
<string name="revanced_sb_about_title">Пра праграму</string>
|
||||
<string name="revanced_sb_about_api_summary">Дадзеныя прадастаўляюцца API SponsorBlock. Націсніце тут, каб даведацца больш і паглядзець спампоўкі для іншых платформаў</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Настройки</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Искате ли да продължите?</string>
|
||||
<string name="revanced_settings_reset">Възстанови</string>
|
||||
<string name="revanced_settings_reset_color">Нулиране на цвета</string>
|
||||
<string name="revanced_settings_color_invalid">Невалиден цвят</string>
|
||||
<string name="revanced_settings_restart_title">Рестартирай и опресни</string>
|
||||
<string name="revanced_settings_restart">Рестартиране</string>
|
||||
<string name="revanced_settings_import">Импортиране</string>
|
||||
@@ -365,9 +367,6 @@ Second \"item\" text"</string>
|
||||
|
||||
Тази функция е налична само за по-стари устройства"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Рекламите в режим на цял екран са показани</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Скриване на рекламни бутони</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Бутонираните реклами са скрити</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Бутонираните реклами са показани</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Скриване на платените промоции</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Промоционалните етикети са скрити</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Промоционалните етикети се показват</string>
|
||||
@@ -1099,11 +1098,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s секунди</string>
|
||||
<string name="revanced_sb_color_opacity_label">Непрозрачност:</string>
|
||||
<string name="revanced_sb_color_dot_label">Цвят:</string>
|
||||
<string name="revanced_sb_color_changed">Цветът е променен</string>
|
||||
<string name="revanced_sb_color_reset">Възстанови цвета</string>
|
||||
<string name="revanced_sb_color_invalid">Невалидна стойност за цвета</string>
|
||||
<string name="revanced_sb_reset_color">Възстановяване на цвят</string>
|
||||
<string name="revanced_sb_reset">Възстанови</string>
|
||||
<string name="revanced_sb_about_title">За програмата</string>
|
||||
<string name="revanced_sb_about_api_summary">Данните са предоставени от SponsorBlock API. Докоснете тук за повече информация и изтеглияния</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">সেটিংস</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">আপনি কি এগিয়ে যেতে ইচ্ছুক?</string>
|
||||
<string name="revanced_settings_reset">আবার সেট করুন</string>
|
||||
<string name="revanced_settings_reset_color">রঙ রিসেট করুন</string>
|
||||
<string name="revanced_settings_color_invalid">অবৈধ রঙ</string>
|
||||
<string name="revanced_settings_restart_title">রিফ্রেশ করুন এবং আবার চালু করুন</string>
|
||||
<string name="revanced_settings_restart">আবার চালু করুন</string>
|
||||
<string name="revanced_settings_import">আমদানি করুন</string>
|
||||
@@ -365,9 +367,6 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
|
||||
এই বৈশিষ্ট্যটি কেবল পুরনো ডিভাইসের জন্য উপলব্ধ"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">পূর্ণ স্ক্রীন বিজ্ঞাপন প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">বোতামযুক্ত বিজ্ঞাপন লুকান</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">বোতামযুক্ত বিজ্ঞাপন লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">বোতামযুক্ত বিজ্ঞাপন প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">অর্থের বিনিময়ে প্রচার অন্তর্ভুক্ত রয়েছে ব্যানার লুকান</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">অর্থের বিনিময়ে প্রচার অন্তর্ভুক্ত রয়েছে ব্যানার লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">অর্থের বিনিময়ে প্রচার অন্তর্ভুক্ত রয়েছে ব্যানার প্রদর্শিত হয়েছে</string>
|
||||
@@ -1099,11 +1098,6 @@ YouTube সেটিংসে অটো প্লে পরিবর্তন
|
||||
<string name="revanced_sb_stats_saved_second_format">%s সেকেন্ড</string>
|
||||
<string name="revanced_sb_color_opacity_label">স্বচ্ছতা:</string>
|
||||
<string name="revanced_sb_color_dot_label">রং:</string>
|
||||
<string name="revanced_sb_color_changed">রং পরিবর্তন করা হয়েছে</string>
|
||||
<string name="revanced_sb_color_reset">রং আবার সেট করুন</string>
|
||||
<string name="revanced_sb_color_invalid">রংয়ের ভুল কোড</string>
|
||||
<string name="revanced_sb_reset_color">রং আবার সেট করুন</string>
|
||||
<string name="revanced_sb_reset">পুনরায় সেট করুন</string>
|
||||
<string name="revanced_sb_about_title">সম্পর্কিত</string>
|
||||
<string name="revanced_sb_about_api_summary">ডেটা SponsorBlock API দ্বারা সরবরাহ করা হয়। আরও জানতে এবং অন্যান্য প্ল্যাটফর্মের ডাউনলোড দেখতে এখানে ট্যাপ করুন</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Configuració</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Vols continuar?</string>
|
||||
<string name="revanced_settings_reset">Restablir</string>
|
||||
<string name="revanced_settings_reset_color">Restablir el color</string>
|
||||
<string name="revanced_settings_color_invalid">Color no vàlid</string>
|
||||
<string name="revanced_settings_restart_title">Actualitza i reinicia</string>
|
||||
<string name="revanced_settings_restart">Reinicia</string>
|
||||
<string name="revanced_settings_import">Importa</string>
|
||||
@@ -365,9 +367,6 @@ Limitacions
|
||||
|
||||
Aquesta funció només està disponible per a dispositius antics"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Els anuncis de pantalla completa es mostren</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Amaga els anuncis amb botó</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Els anuncis amb botó estan amagats</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Els anuncis amb botó es mostren</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Amaga l\'etiqueta de promoció de pagament</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">L\'etiqueta de promoció de pagament està amagada</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Es mostra l\'etiqueta de promoció de pagament</string>
|
||||
@@ -1098,11 +1097,6 @@ Preparat per enviar?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s segons</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacitat:</string>
|
||||
<string name="revanced_sb_color_dot_label">Color:</string>
|
||||
<string name="revanced_sb_color_changed">Color canviat</string>
|
||||
<string name="revanced_sb_color_reset">Color restablert</string>
|
||||
<string name="revanced_sb_color_invalid">Codi de color invàlid</string>
|
||||
<string name="revanced_sb_reset_color">Restableix el color</string>
|
||||
<string name="revanced_sb_reset">Restablir</string>
|
||||
<string name="revanced_sb_about_title">Quant a</string>
|
||||
<string name="revanced_sb_about_api_summary">Les dades són proporcionades per l\'API de SponsorBlock. Toca aquí per a saber-ne més i veure les descàrregues per a altres plataformes</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Nastavení</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Přejete si pokračovat?</string>
|
||||
<string name="revanced_settings_reset">Výchozí</string>
|
||||
<string name="revanced_settings_reset_color">Obnovit barvu</string>
|
||||
<string name="revanced_settings_color_invalid">Neplatná barva</string>
|
||||
<string name="revanced_settings_restart_title">Obnovit a restartovat</string>
|
||||
<string name="revanced_settings_restart">Restartovat</string>
|
||||
<string name="revanced_settings_import">Importovat</string>
|
||||
@@ -365,9 +367,6 @@ Omezení:
|
||||
|
||||
Tato funkce je dostupná pouze pro starší zařízení"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Celostránkové reklamy jsou zobrazeny</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Skrýt reklamy s tlačítky</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Reklamy s tlačítky jsou skryty</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Reklamy s tlačítky jsou zobrazeny</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Skrýt štítek placené propagace</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Štítek placené propagace je skryt</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Štítek placené propagace je zobrazen</string>
|
||||
@@ -1098,11 +1097,6 @@ Jste připraveni k odeslání?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekund</string>
|
||||
<string name="revanced_sb_color_opacity_label">Průhlednost:</string>
|
||||
<string name="revanced_sb_color_dot_label">Barva:</string>
|
||||
<string name="revanced_sb_color_changed">Barva změněna</string>
|
||||
<string name="revanced_sb_color_reset">Barva resetována</string>
|
||||
<string name="revanced_sb_color_invalid">Neplatný kód barvy</string>
|
||||
<string name="revanced_sb_reset_color">Resetovat barvu</string>
|
||||
<string name="revanced_sb_reset">Výchozí</string>
|
||||
<string name="revanced_sb_about_title">O aplikaci</string>
|
||||
<string name="revanced_sb_about_api_summary">Data poskytuje rozhraní API SponsorBlock. Klepněte zde, abyste se dozvěděli více a zobrazili si soubory ke stažení pro další platformy</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Indstillinger</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Ønsker du at fortsætte?</string>
|
||||
<string name="revanced_settings_reset">Nulstil</string>
|
||||
<string name="revanced_settings_reset_color">Nulstil farve</string>
|
||||
<string name="revanced_settings_color_invalid">Ugyldig farve</string>
|
||||
<string name="revanced_settings_restart_title">Opdater og genstart</string>
|
||||
<string name="revanced_settings_restart">Genstart</string>
|
||||
<string name="revanced_settings_import">Importer</string>
|
||||
@@ -338,9 +340,6 @@ Begrænsninger
|
||||
|
||||
Denne funktion er kun tilgængelig for ældre enheder"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Fuldskærms annoncer vises</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Skjul knapfyldte annoncer</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Knappede annoncer er skjult</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Knappede annoncer vises</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Skjul betalt kampagneetiket</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Betalt reklamemærke er skjult</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Betalt salgsfremmende mærke er vist</string>
|
||||
@@ -1048,11 +1047,6 @@ Er du klar til at indsende?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekunder</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacitet:</string>
|
||||
<string name="revanced_sb_color_dot_label">Farve:</string>
|
||||
<string name="revanced_sb_color_changed">Farve ændret</string>
|
||||
<string name="revanced_sb_color_reset">Nulstil farve</string>
|
||||
<string name="revanced_sb_color_invalid">Ugyldig farvekode</string>
|
||||
<string name="revanced_sb_reset_color">Nulstil farve</string>
|
||||
<string name="revanced_sb_reset">Nulstil</string>
|
||||
<string name="revanced_sb_about_title">Om</string>
|
||||
<string name="revanced_sb_about_api_summary">Data leveres af SponsorBlock API. Tryk her for at få flere oplysninger og se downloads til andre platforme</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Einstellungen</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Möchtest du fortfahren?</string>
|
||||
<string name="revanced_settings_reset">Zurücksetzen</string>
|
||||
<string name="revanced_settings_reset_color">Farbe zurücksetzen</string>
|
||||
<string name="revanced_settings_color_invalid">Ungültige Farbe</string>
|
||||
<string name="revanced_settings_restart_title">Aktualisieren und neu starten</string>
|
||||
<string name="revanced_settings_restart">Neustart</string>
|
||||
<string name="revanced_settings_import">Importieren</string>
|
||||
@@ -360,9 +362,6 @@ Einschränkungen
|
||||
|
||||
Diese Funktion ist nur für ältere Geräte verfügbar"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Vollbild-Anzeigen werden angezeigt</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Verknüpfte Werbung ausblenden</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Verknüpfte Anzeigen sind ausgeblendet</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Verknüpfte Werbung wird angezeigt</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Bezahltes Werbe-Label ausblenden</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Bezahltes Werbelabel ist ausgeblendet</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Bezahltes Werbe-Label wird angezeigt</string>
|
||||
@@ -1092,11 +1091,6 @@ Bereit zum Einreichen?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s Sekunden</string>
|
||||
<string name="revanced_sb_color_opacity_label">Deckkraft:</string>
|
||||
<string name="revanced_sb_color_dot_label">Farbe:</string>
|
||||
<string name="revanced_sb_color_changed">Farbe geändert</string>
|
||||
<string name="revanced_sb_color_reset">Farbe zurücksetzen</string>
|
||||
<string name="revanced_sb_color_invalid">Ungültiger Farbcode</string>
|
||||
<string name="revanced_sb_reset_color">Farbe zurücksetzen</string>
|
||||
<string name="revanced_sb_reset">Zurücksetzen</string>
|
||||
<string name="revanced_sb_about_title">Über</string>
|
||||
<string name="revanced_sb_about_api_summary">Daten werden von der SponsorBlock API bereitgestellt. Tippe hier, um mehr zu erfahren und Downloads für andere Plattformen zu sehen</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Ρυθμίσεις</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Θέλετε να συνεχίσετε;</string>
|
||||
<string name="revanced_settings_reset">Επαναφορά</string>
|
||||
<string name="revanced_settings_reset_color">Επαναφορά χρώματος</string>
|
||||
<string name="revanced_settings_color_invalid">Μη έγκυρο χρώμα</string>
|
||||
<string name="revanced_settings_restart_title">Ανανέωση και επανεκκίνηση</string>
|
||||
<string name="revanced_settings_restart">Επανεκκίνηση</string>
|
||||
<string name="revanced_settings_import">Εισαγωγή</string>
|
||||
@@ -367,9 +369,6 @@ Second \"item\" text"</string>
|
||||
|
||||
Αυτή η λειτουργία είναι διαθέσιμη μόνο για παλιότερες συσκευές"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Οι διαφημίσεις πλήρους οθόνης εμφανίζονται</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Διαφημίσεις κουμπιών</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Κρυμμένες</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Ετικέτες προώθησης επί πληρωμή</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Κρυμμένες</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Εμφανίζονται</string>
|
||||
@@ -1100,11 +1099,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s δευτερόλεπτα</string>
|
||||
<string name="revanced_sb_color_opacity_label">Αδιαφάνεια:</string>
|
||||
<string name="revanced_sb_color_dot_label">Χρώμα:</string>
|
||||
<string name="revanced_sb_color_changed">Το χρώμα άλλαξε</string>
|
||||
<string name="revanced_sb_color_reset">Το χρώμα επαναφέρθηκε</string>
|
||||
<string name="revanced_sb_color_invalid">Μη έγκυρος κωδικός χρώματος</string>
|
||||
<string name="revanced_sb_reset_color">Επαναφορά χρώματος</string>
|
||||
<string name="revanced_sb_reset">Επαναφορά</string>
|
||||
<string name="revanced_sb_about_title">Σχετικά με</string>
|
||||
<string name="revanced_sb_about_api_summary">Τα δεδομένα παρέχονται από το SponsorBlock API. Πατήστε για να μάθετε περισσότερα και να δείτε λήψεις για άλλες πλατφόρμες</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Ajustes</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">¿Desea continuar?</string>
|
||||
<string name="revanced_settings_reset">Restablecer</string>
|
||||
<string name="revanced_settings_reset_color">Restablecer color</string>
|
||||
<string name="revanced_settings_color_invalid">Color no válido</string>
|
||||
<string name="revanced_settings_restart_title">Actualizar y reiniciar</string>
|
||||
<string name="revanced_settings_restart">Reiniciar</string>
|
||||
<string name="revanced_settings_import">Importar</string>
|
||||
@@ -362,9 +364,6 @@ Limitaciones
|
||||
|
||||
Esta función solo está disponible para dispositivos antiguos"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Se muestran anuncios a pantalla completa</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Ocultar anuncios botonados</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Los anuncios botonados están ocultos</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Se muestran anuncios botonados</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Ocultar etiqueta de promoción de pago</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Etiqueta de promoción pagada está oculta</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Etiqueta de promoción pagada se muestra</string>
|
||||
@@ -1087,11 +1086,6 @@ Ya existe"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s segundos</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacidad:</string>
|
||||
<string name="revanced_sb_color_dot_label">Color:</string>
|
||||
<string name="revanced_sb_color_changed">Color cambiado</string>
|
||||
<string name="revanced_sb_color_reset">Restablecer color</string>
|
||||
<string name="revanced_sb_color_invalid">Código de color inválido</string>
|
||||
<string name="revanced_sb_reset_color">Reiniciar color</string>
|
||||
<string name="revanced_sb_reset">Restablecer</string>
|
||||
<string name="revanced_sb_about_title">Acerca de</string>
|
||||
<string name="revanced_sb_about_api_summary">Los datos son proporcionados por la API de SponsorBlock. Pulsa aquí para aprender más y ver las descargas para otras plataformas</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Seaded</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Kas soovite jätkata?</string>
|
||||
<string name="revanced_settings_reset">Lähtesta</string>
|
||||
<string name="revanced_settings_reset_color">Lähtesta värv</string>
|
||||
<string name="revanced_settings_color_invalid">Vigane värv</string>
|
||||
<string name="revanced_settings_restart_title">Värskenda ja taaskäivita</string>
|
||||
<string name="revanced_settings_restart">Taaskäivita</string>
|
||||
<string name="revanced_settings_import">Impordi</string>
|
||||
@@ -365,9 +367,6 @@ Piirangud
|
||||
|
||||
See funktsioon on saadaval ainult vanemates seadmetes"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Täisekraanireklaamid kuvatakse</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Peida nuppudega reklaamid</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Nuppudega reklaamid on peidetud</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Nuked onukleitud reklaamid näidatakse</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Peida makstud edendamise silt</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Makstud edendamise silt on peidus</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Makstud edendamise silt on näidatud</string>
|
||||
@@ -1099,11 +1098,6 @@ Kas olete esitamiseks valmis?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekundit</string>
|
||||
<string name="revanced_sb_color_opacity_label">Läbipaistmatus:</string>
|
||||
<string name="revanced_sb_color_dot_label">Värv:</string>
|
||||
<string name="revanced_sb_color_changed">Värv muudetud</string>
|
||||
<string name="revanced_sb_color_reset">Värv lähtestatud</string>
|
||||
<string name="revanced_sb_color_invalid">Vigane värvikood</string>
|
||||
<string name="revanced_sb_reset_color">Lähtesta värv</string>
|
||||
<string name="revanced_sb_reset">Lähtesta</string>
|
||||
<string name="revanced_sb_about_title">Teave</string>
|
||||
<string name="revanced_sb_about_api_summary">Andmed on pärit SponsorBlock API-st. Puudutage siia, et saada lisateavet ja vaadata allalaadimisi teistele platvormidele</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Asetukset</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Haluatko jatkaa?</string>
|
||||
<string name="revanced_settings_reset">Nollaa</string>
|
||||
<string name="revanced_settings_reset_color">Nollaa väri</string>
|
||||
<string name="revanced_settings_restart_title">Päivitä ja käynnistä uudelleen</string>
|
||||
<string name="revanced_settings_restart">Käynnistä uudelleen</string>
|
||||
<string name="revanced_settings_import">Tuo</string>
|
||||
@@ -360,9 +361,6 @@ Rajoitukset
|
||||
|
||||
Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Koko näytön mainokset näytetään</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Piilota painikkeelliset mainokset</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Painikkeelliset mainokset on piilotettu</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Painikkeelliset mainokset näytetään</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Piilota maksetun mainostuksen tunniste</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Maksetun mainostuksen tunniste on piilotettu</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Maksetun mainostuksen tunniste näytetään</string>
|
||||
@@ -1091,11 +1089,6 @@ Oletko valmis lähettämään?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekuntia</string>
|
||||
<string name="revanced_sb_color_opacity_label">Läpikuultamattomuus:</string>
|
||||
<string name="revanced_sb_color_dot_label">Väri:</string>
|
||||
<string name="revanced_sb_color_changed">Väri vaihdettu</string>
|
||||
<string name="revanced_sb_color_reset">Väri nollattu</string>
|
||||
<string name="revanced_sb_color_invalid">Virheellinen värikoodi</string>
|
||||
<string name="revanced_sb_reset_color">Nollaa väri</string>
|
||||
<string name="revanced_sb_reset">Nollaa</string>
|
||||
<string name="revanced_sb_about_title">Tietoja</string>
|
||||
<string name="revanced_sb_about_api_summary">Tiedot tarjoaa SponsorBlock API. Napauta tätä saadaksesi lisätietoja ja nähdäksesi lataukset muille alustoille</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Mga Setting</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Gusto mo bang magpatuloy?</string>
|
||||
<string name="revanced_settings_reset">I-reset</string>
|
||||
<string name="revanced_settings_reset_color">I-reset ang kulay</string>
|
||||
<string name="revanced_settings_color_invalid">Hindi wasto ang kulay</string>
|
||||
<string name="revanced_settings_restart_title">I-refresh at i-restart</string>
|
||||
<string name="revanced_settings_restart">I-restart</string>
|
||||
<string name="revanced_settings_import">Angkat</string>
|
||||
@@ -365,9 +367,6 @@ Mga limitasyon
|
||||
|
||||
Ang tampok na ito ay magagamit lamang para sa mga mas lumang device"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Ipinapakita ang mga fullscreen na ad</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Itago ang mga naka-button na ad</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Nakatago ang mga naka-button na ad</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Ipinapakita ang mga naka-button na ad</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Itago ang may bayad na label ng promosyon</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Nakatago ang label ng bayad na promosyon</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Ipinapakita ang may bayad na label ng promosyon</string>
|
||||
@@ -1097,11 +1096,6 @@ Isumite na ba?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s segundo</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacity:</string>
|
||||
<string name="revanced_sb_color_dot_label">Kulay:</string>
|
||||
<string name="revanced_sb_color_changed">Nagbago ang kulay</string>
|
||||
<string name="revanced_sb_color_reset">Pag-reset ng kulay</string>
|
||||
<string name="revanced_sb_color_invalid">Di-wastong code ng kulay</string>
|
||||
<string name="revanced_sb_reset_color">I-reset ang kulay</string>
|
||||
<string name="revanced_sb_reset">I-reset</string>
|
||||
<string name="revanced_sb_about_title">Tungkol</string>
|
||||
<string name="revanced_sb_about_api_summary">Ang data ay ibinibigay ng SponsorBlock API. Mag-tap dito para matuto pa at makakita ng mga download para sa iba pang platform</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Paramètres</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Voulez-vous continuer ?</string>
|
||||
<string name="revanced_settings_reset">Réinitialiser</string>
|
||||
<string name="revanced_settings_reset_color">Réinitialiser la couleur</string>
|
||||
<string name="revanced_settings_color_invalid">Couleur invalide</string>
|
||||
<string name="revanced_settings_restart_title">Actualiser et redémarrer</string>
|
||||
<string name="revanced_settings_restart">Redémarrer</string>
|
||||
<string name="revanced_settings_import">Importer</string>
|
||||
@@ -365,9 +367,6 @@ Limitations
|
||||
|
||||
Cette fonctionnalité est disponible uniquement pour les appareils anciens"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Les annonces plein écran sont affichées</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Masquer les annonces au format bouton</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Les annonces au format bouton sont masquées</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Les annonces au format bouton sont affichées</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Masquer la bannière de promotion rémunérée</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">La bannière \"Inclut une promotion rémunérée\" est masquée</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">La bannière \"Inclut une promotion rémunérée\" est affichée</string>
|
||||
@@ -1098,11 +1097,6 @@ Prêt à soumettre ?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s secondes</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacité :</string>
|
||||
<string name="revanced_sb_color_dot_label">Couleur :</string>
|
||||
<string name="revanced_sb_color_changed">Couleur modifiée</string>
|
||||
<string name="revanced_sb_color_reset">Couleur réinitialisée</string>
|
||||
<string name="revanced_sb_color_invalid">Code couleur invalide</string>
|
||||
<string name="revanced_sb_reset_color">Réinitialiser la couleur</string>
|
||||
<string name="revanced_sb_reset">Réinitialiser</string>
|
||||
<string name="revanced_sb_about_title">À propos</string>
|
||||
<string name="revanced_sb_about_api_summary">Les données sont fournies par l\'API SponsorBlock. Appuyez ici pour en savoir plus et pour voir les téléchargements pour les autres plateformes.</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Socruithe</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Ar mhaith leat dul ar aghaidh?</string>
|
||||
<string name="revanced_settings_reset">Athshocraigh</string>
|
||||
<string name="revanced_settings_reset_color">Dath a athshocrú</string>
|
||||
<string name="revanced_settings_color_invalid">Dath neamhbhailí</string>
|
||||
<string name="revanced_settings_restart_title">Athnuachan agus atosaigh</string>
|
||||
<string name="revanced_settings_restart">Athosaigh</string>
|
||||
<string name="revanced_settings_import">Iompórtáil</string>
|
||||
@@ -365,9 +367,6 @@ Teorainneacha
|
||||
|
||||
Níl an ghné seo ar fáil ach do ghléasanna níos sine"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Taispeántar fógraí lánscáileáin</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Folaigh fógraí cnaipe</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Tá fógraí cnaipe i bhfolach</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Taispeántar fógraí cnaipe</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Folaigh lipéad chun cinn íoctha</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Tá an lipéad promóisin íoctha i bhfolach</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Taispeántar lipéad promóisin íoctha</string>
|
||||
@@ -1099,11 +1098,6 @@ Maithe chun cur isteach?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s soicindí</string>
|
||||
<string name="revanced_sb_color_opacity_label">Teimhneacht:</string>
|
||||
<string name="revanced_sb_color_dot_label">Dath:</string>
|
||||
<string name="revanced_sb_color_changed">Athraigh dath</string>
|
||||
<string name="revanced_sb_color_reset">Athshocrú dath</string>
|
||||
<string name="revanced_sb_color_invalid">Cód dath neamhbhailí</string>
|
||||
<string name="revanced_sb_reset_color">Athshocraigh dath</string>
|
||||
<string name="revanced_sb_reset">Athshocraigh</string>
|
||||
<string name="revanced_sb_about_title">Maidir</string>
|
||||
<string name="revanced_sb_about_api_summary">Soláthraíonn an API SponsorBlock sonraí. Tapáil anseo chun níos mó a fhoghlaim agus íoslódálacha a fheiceáil d\'ardáin eile</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Beállítások</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Szeretné folytatni?</string>
|
||||
<string name="revanced_settings_reset">Visszaállítás</string>
|
||||
<string name="revanced_settings_reset_color">Szín alaphelyzetbe állítása</string>
|
||||
<string name="revanced_settings_color_invalid">Érvénytelen szín</string>
|
||||
<string name="revanced_settings_restart_title">Frissítés és újraindítás</string>
|
||||
<string name="revanced_settings_restart">Újraindítás</string>
|
||||
<string name="revanced_settings_import">Importálás</string>
|
||||
@@ -365,9 +367,6 @@ Korlátozások
|
||||
|
||||
Ez a funkció csak régebbi eszközökön érhető el"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">A teljes képernyős hirdetések láthatók</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Gomb hirdetések elrejtése</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">A gomb hirdetések el vannak rejtve</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">A gomb hirdetések láthatók</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Fizetett promóció címke elrejtése</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">A fizetett promóciós címke el van rejtve</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">A fizetett promóciós címke meg van jelenítve</string>
|
||||
@@ -1098,11 +1097,6 @@ Készen állsz a beküldésre?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s másodperc</string>
|
||||
<string name="revanced_sb_color_opacity_label">Áttetszőség:</string>
|
||||
<string name="revanced_sb_color_dot_label">Szín:</string>
|
||||
<string name="revanced_sb_color_changed">A szín megváltoztatva</string>
|
||||
<string name="revanced_sb_color_reset">Szín alaphelyzetbe</string>
|
||||
<string name="revanced_sb_color_invalid">Érvénytelen színkód</string>
|
||||
<string name="revanced_sb_reset_color">Színek visszaállítása</string>
|
||||
<string name="revanced_sb_reset">Visszaállítás</string>
|
||||
<string name="revanced_sb_about_title">Rólunk</string>
|
||||
<string name="revanced_sb_about_api_summary">Az adatokat a SponsorBlock API biztosítja. Koppintson ide, ha többet szeretne megtudni és megtekintené a letöltéseket más platformokra</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Կարգավորումներ</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Դուք ցանկանում եք շարունակել?</string>
|
||||
<string name="revanced_settings_reset">Վերականգնել</string>
|
||||
<string name="revanced_settings_reset_color">Գույնը վերականգնել</string>
|
||||
<string name="revanced_settings_color_invalid">Անվավեր գույն</string>
|
||||
<string name="revanced_settings_restart_title">Թարմացնել և վերագործարկել</string>
|
||||
<string name="revanced_settings_restart">Վերսկսել</string>
|
||||
<string name="revanced_settings_import">Ներմուծել</string>
|
||||
@@ -365,9 +367,6 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
|
||||
|
||||
Այս հատկությունը հասանելի է միայն հին սարքերի համար"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Լի էկրանի գովազդները երևում են</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Թաքցնել կոճակավորված գովազդները</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Կոճակավորված գովազդները թաքցված են</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Կոճակավորված գովազդները երևում են</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Թաքցնել վճարված խթանման նշանը</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Վճարված խթանման նշանը թաքցված է</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Վճարված խթանման նշանը երևում է</string>
|
||||
@@ -1099,11 +1098,6 @@ Seekbar thumbnails-ները կօգտագործեն նույն որակը, ինչ
|
||||
<string name="revanced_sb_stats_saved_second_format">%s վայրկյան</string>
|
||||
<string name="revanced_sb_color_opacity_label">Թափանցիկություն․</string>
|
||||
<string name="revanced_sb_color_dot_label">Գույն։</string>
|
||||
<string name="revanced_sb_color_changed">Գույնը փոխվել է</string>
|
||||
<string name="revanced_sb_color_reset">Գույնը վերագործարկվել է</string>
|
||||
<string name="revanced_sb_color_invalid">Անվավեր գույնի կոդ</string>
|
||||
<string name="revanced_sb_reset_color">Վերագործարկել գույնը</string>
|
||||
<string name="revanced_sb_reset">Վերագործարկել</string>
|
||||
<string name="revanced_sb_about_title">Ծրագրի մասին</string>
|
||||
<string name="revanced_sb_about_api_summary">Տվյալները մատուցվում են SponsorBlock API-ի կողմից։ Սեղմեք այստեղ՝ ավելի շատ իմանալու և այլ հարթակների համար ներբեռնումները տեսնելու</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Pengaturan</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Apakah Anda ingin melanjutkan?</string>
|
||||
<string name="revanced_settings_reset">Setel ulang</string>
|
||||
<string name="revanced_settings_reset_color">Setel ulang warna</string>
|
||||
<string name="revanced_settings_color_invalid">Warna tidak sah</string>
|
||||
<string name="revanced_settings_restart_title">Segarkan dan mulai ulang</string>
|
||||
<string name="revanced_settings_restart">Mulai ulang</string>
|
||||
<string name="revanced_settings_import">Impor</string>
|
||||
@@ -365,9 +367,6 @@ Keterbatasan
|
||||
|
||||
Fitur ini hanya tersedia untuk perangkat yang lebih lama"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Iklan layar penuh ditampilkan</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Sembunyikan iklan bertombol</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Iklan bertombol disembunyikan</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Iklan bertombol ditampilkan</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Sembunyikan label promosi berbayar</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Label promosi berbayar disembunyikan</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Label promosi berbayar ditampilkan</string>
|
||||
@@ -1098,11 +1097,6 @@ Siap mengirim?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s detik</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opasitas:</string>
|
||||
<string name="revanced_sb_color_dot_label">Warna:</string>
|
||||
<string name="revanced_sb_color_changed">Warna berubah</string>
|
||||
<string name="revanced_sb_color_reset">Reset warna</string>
|
||||
<string name="revanced_sb_color_invalid">Kode warna tidak sah</string>
|
||||
<string name="revanced_sb_reset_color">Atur ulang warna</string>
|
||||
<string name="revanced_sb_reset">Setel ulang</string>
|
||||
<string name="revanced_sb_about_title">Tentang</string>
|
||||
<string name="revanced_sb_about_api_summary">Data disediakan oleh API SponsorBlock. Tekan di sini untuk mempelajari lebih lanjut dan melihat hasil pengunduhan untuk platform lain</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Impostazioni</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Sei sicuro di voler continuare?</string>
|
||||
<string name="revanced_settings_reset">Reimposta</string>
|
||||
<string name="revanced_settings_reset_color">Reimposta colore</string>
|
||||
<string name="revanced_settings_color_invalid">Colore non valido</string>
|
||||
<string name="revanced_settings_restart_title">Aggiorna e riavvia</string>
|
||||
<string name="revanced_settings_restart">Riavvia</string>
|
||||
<string name="revanced_settings_import">Importa</string>
|
||||
@@ -365,9 +367,6 @@ Note:
|
||||
|
||||
Questa funzione è disponibile solo per i dispositivi più vecchi"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Le pubblicità a schermo intero sono visibili</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Nascondi le pubblicità a pulsante</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Le pubblicità a pulsante sono nascoste</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Le pubblicità a pulsante sono visibili</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Nascondi l\'etichetta della promozione a pagamento</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">L\'etichetta della promozione a pagamento è nascosta</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">L\'etichetta della promozione a pagamento è visibile</string>
|
||||
@@ -1098,11 +1097,6 @@ Pronto per l'invio?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s secondi</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacità:</string>
|
||||
<string name="revanced_sb_color_dot_label">Colore:</string>
|
||||
<string name="revanced_sb_color_changed">Colore modificato</string>
|
||||
<string name="revanced_sb_color_reset">Ripristino colore</string>
|
||||
<string name="revanced_sb_color_invalid">Codice colore non valido</string>
|
||||
<string name="revanced_sb_reset_color">Ripristina colore</string>
|
||||
<string name="revanced_sb_reset">Reimposta</string>
|
||||
<string name="revanced_sb_about_title">Informazioni</string>
|
||||
<string name="revanced_sb_about_api_summary">I dati sono forniti dall\'API di SponsorBlock. Tocca qui per saperne di più e vedere i download per altre piattaforme</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">הגדרות</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">האם ברצונך להמשיך?</string>
|
||||
<string name="revanced_settings_reset">איפוס</string>
|
||||
<string name="revanced_settings_reset_color">אפס צבע</string>
|
||||
<string name="revanced_settings_restart_title">רענן והפעל מחדש</string>
|
||||
<string name="revanced_settings_restart">הפעלה מחדש</string>
|
||||
<string name="revanced_settings_import">ייבוא</string>
|
||||
@@ -349,9 +350,6 @@ Second \"item\" text"</string>
|
||||
|
||||
תכונה זו זמינה רק עבור מכשירים ישנים יותר"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">מודעות מסך מלא מוצגות</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">הסתר מודעות מכופתרות</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">מודעות מכפותרות מוסתרות</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">מודעות מכפותרות מוצגות</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">הסתר תווית קידום מכירות בתשלום</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">תווית קידום מכירות בתשלום מוסתרת</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">תווית קידום מכירות בתשלום מוצגת</string>
|
||||
@@ -1063,11 +1061,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s שניות</string>
|
||||
<string name="revanced_sb_color_opacity_label">אטימות:</string>
|
||||
<string name="revanced_sb_color_dot_label">צבע:</string>
|
||||
<string name="revanced_sb_color_changed">צבע שונה</string>
|
||||
<string name="revanced_sb_color_reset">צבע אופס</string>
|
||||
<string name="revanced_sb_color_invalid">קוד צבע לא חוקי</string>
|
||||
<string name="revanced_sb_reset_color">אפס צבע</string>
|
||||
<string name="revanced_sb_reset">איפוס</string>
|
||||
<string name="revanced_sb_about_title">אודות</string>
|
||||
<string name="revanced_sb_about_api_summary">הנתונים מסופקים על ידי SponsorBlock API. הקש כאן כדי ללמוד עוד ולראות הורדות עבור פלטפורמות אחרות</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">設定</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">続行しますか?</string>
|
||||
<string name="revanced_settings_reset">リセット</string>
|
||||
<string name="revanced_settings_reset_color">色をリセット</string>
|
||||
<string name="revanced_settings_color_invalid">色の値が無効です</string>
|
||||
<string name="revanced_settings_restart_title">更新して再起動</string>
|
||||
<string name="revanced_settings_restart">再起動</string>
|
||||
<string name="revanced_settings_import">インポート</string>
|
||||
@@ -368,9 +370,6 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
|
||||
この機能は、古いデバイスでのみ利用できます"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">全画面広告は、アプリ起動時に表示されます</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">ボタン付き広告を非表示</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">ボタン付き広告は表示されません</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">ボタン付き広告は表示されます</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">「プロモーションを含みます」ボタンを非表示</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">「プロモーションを含みます」ボタンはプレーヤー画面に表示されません</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">「プロモーションを含みます」ボタンはプレーヤー画面に表示されます</string>
|
||||
@@ -1099,11 +1098,6 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ
|
||||
<string name="revanced_sb_stats_saved_second_format">%s 秒</string>
|
||||
<string name="revanced_sb_color_opacity_label">透明度:</string>
|
||||
<string name="revanced_sb_color_dot_label">色:</string>
|
||||
<string name="revanced_sb_color_changed">色を変更しました</string>
|
||||
<string name="revanced_sb_color_reset">色がリセットされました</string>
|
||||
<string name="revanced_sb_color_invalid">色の値が無効です</string>
|
||||
<string name="revanced_sb_reset_color">色をリセット</string>
|
||||
<string name="revanced_sb_reset">リセット</string>
|
||||
<string name="revanced_sb_about_title">SponsorBlock について</string>
|
||||
<string name="revanced_sb_about_api_summary">SponsorBlock APIによって提供されるデータです。詳細はこちらをタップしてください。</string>
|
||||
</patch>
|
||||
|
||||
@@ -21,20 +21,22 @@ Second \"item\" text"</string>
|
||||
<resources>
|
||||
<app id="shared">
|
||||
<patch id="misc.checks.checkEnvironmentPatch">
|
||||
<string name="revanced_check_environment_failed_title">환경 검사에 실패함</string>
|
||||
<string name="revanced_check_environment_failed_title">환경 검사에 실패하였습니다</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">공식 홈페이지 열기</string>
|
||||
<string name="revanced_check_environment_dialog_ignore_button">닫기</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>이 앱은 사용자가 패치하지 않은 것 같습니다.</h5><br>이 앱은 제대로 작동하지 않을 수 있으며, <b>사용 시 해롭거나 심지어 위험할 수도 있습니다</b>.<br><br>이러한 검사는 이 앱이 사전에 패치되었거나 다른 사람으로부터 받은 것임을 의미합니다:<br><br><small>%1$s</small><br>검증되고 안전한 앱을 사용하고 있는지 확인하려면 <b>이 앱을 삭제하고 직접 패치하는 것</b>을 강력히 권장합니다.<p><br>이 경고는 두 번만 표시됩니다.</string>
|
||||
<string name="revanced_check_environment_not_same_patching_device">다른 기기에서 패치됨</string>
|
||||
<string name="revanced_check_environment_manager_not_expected_installer">ReVanced Manager에 의해 설치되지 않음</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time">10분 이상 전에 패치됨</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_days">%s 일 전에 패치됨</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">APK 빌드 날짜가 손상됨</string>
|
||||
<string name="revanced_check_environment_not_same_patching_device">다른 기기에서 패치되었습니다</string>
|
||||
<string name="revanced_check_environment_manager_not_expected_installer">ReVanced Manager에 의해 설치되지 않았습니다</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time">10분 이상 전에 패치되었습니다</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_days">%s 일 전에 패치되었습니다</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">APK 빌드 날짜가 손상되었습니다</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_submenu_title">설정</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">계속하시겠습니까?</string>
|
||||
<string name="revanced_settings_reset">초기화</string>
|
||||
<string name="revanced_settings_reset_color">색상 초기화</string>
|
||||
<string name="revanced_settings_color_invalid">잘못된 색상입니다</string>
|
||||
<string name="revanced_settings_restart_title">새로고침 및 다시 시작</string>
|
||||
<string name="revanced_settings_restart">다시 시작</string>
|
||||
<string name="revanced_settings_import">가져오기</string>
|
||||
@@ -245,7 +247,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_title">AI 생성 동영상 요약 섹션 숨기기</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">AI 생성 동영상 요약 섹션이 숨겨집니다</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">AI 생성 동영상 요약 섹션이 표시됩니다</string>
|
||||
<string name="revanced_hide_ask_section_title">요청 버튼 숨기기</string>
|
||||
<string name="revanced_hide_ask_section_title">요청 섹션 숨기기</string>
|
||||
<string name="revanced_hide_ask_section_summary_on">요청 섹션이 숨겨집니다</string>
|
||||
<string name="revanced_hide_ask_section_summary_off">요청 섹션이 표시됩니다</string>
|
||||
<string name="revanced_hide_attributes_section_title">속성 섹션 숨기기</string>
|
||||
@@ -368,9 +370,6 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
|
||||
이 설정은 구형 기기에서만 사용할 수 있습니다"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">전체 화면 광고가 표시됩니다</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">버튼형 광고 숨기기</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">버튼형 광고가 숨겨집니다</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">버튼형 광고가 표시됩니다</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">유료 광고 포함 라벨 숨기기</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">유료 광고 포함 라벨이 숨겨집니다</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">유료 광고 포함 라벨이 표시됩니다</string>
|
||||
@@ -488,13 +487,13 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_swipe_volume_sensitivity_title">볼륨 스와이프 민감도</string>
|
||||
<string name="revanced_swipe_volume_sensitivity_summary">스와이프할 때마다 볼륨이 얼마나 변경되는지를 지정할 수 있습니다</string>
|
||||
<string name="revanced_swipe_overlay_style_title">스와이프 오버레이 스타일</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_1">가로 오버레이</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_2">가로 오버레이 (최소화 - 상단)</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_3">가로 오버레이 (최소화 - 중앙)</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_4">원형 오버레이</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_5">원형 오버레이 (최소화)</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_6">세로 오버레이</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_7">세로 오버레이 (최소화)</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_1">가로</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_2">가로 (최소화 - 상단)</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_3">가로 (최소화 - 중앙)</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_4">원형</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_5">원형 (최소화)</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_6">세로</string>
|
||||
<string name="revanced_swipe_overlay_style_entry_7">세로 (최소화)</string>
|
||||
<string name="revanced_swipe_change_video_title">스와이프 제스처로 동영상 전환 활성화하기</string>
|
||||
<string name="revanced_swipe_change_video_summary_on">전체 화면 중앙에서 위로/아래로 스와이프하여 다음/이전 동영상으로 전환합니다</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">전체 화면 중앙에서 위로/아래로 스와이프하여 다음/이전 동영상으로 전환하지 않습니다</string>
|
||||
@@ -1099,11 +1098,6 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
|
||||
<string name="revanced_sb_stats_saved_second_format">%s 초</string>
|
||||
<string name="revanced_sb_color_opacity_label">불투명도:</string>
|
||||
<string name="revanced_sb_color_dot_label">색상:</string>
|
||||
<string name="revanced_sb_color_changed">설정한 색상을 적용하였습니다</string>
|
||||
<string name="revanced_sb_color_reset">색상을 초기화하였습니다</string>
|
||||
<string name="revanced_sb_color_invalid">잘못된 헥스 코드입니다</string>
|
||||
<string name="revanced_sb_reset_color">색상 초기화</string>
|
||||
<string name="revanced_sb_reset">초기화</string>
|
||||
<string name="revanced_sb_about_title">정보</string>
|
||||
<string name="revanced_sb_about_api_summary">건너뛸 구간의 데이터는 SponsorBlock API에 의해 제공됩니다. 자세한 내용을 보려면 여기를 누르세요</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Nustatymai</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Ar norite tęsti?</string>
|
||||
<string name="revanced_settings_reset">Atstatyti</string>
|
||||
<string name="revanced_settings_reset_color">Atkurti spalvą</string>
|
||||
<string name="revanced_settings_color_invalid">Neteisinga spalva</string>
|
||||
<string name="revanced_settings_restart_title">Atnaujinti ir paleisti iš naujo</string>
|
||||
<string name="revanced_settings_restart">Paleisti iš naujo</string>
|
||||
<string name="revanced_settings_import">Importuoti</string>
|
||||
@@ -365,9 +367,6 @@ Apribojimai
|
||||
|
||||
Ši funkcija yra prieinama tik senesniuose įrenginiuose"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Viso ekrano reklamos yra rodomos</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Slėpti reklamas su mygtukais</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Reklamos su mygtukais yra paslėptos</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Reklamos su mygtukais yra rodomos</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Slėpti apmokėtos reklamos etiketę</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Apmokėtos reklamos etiketė yra paslėpta</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Apmokėtos reklamos etiketė yra rodoma</string>
|
||||
@@ -1098,11 +1097,6 @@ Ar paruošta pateikti?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekundės</string>
|
||||
<string name="revanced_sb_color_opacity_label">Neskaidrumas:</string>
|
||||
<string name="revanced_sb_color_dot_label">Spalva:</string>
|
||||
<string name="revanced_sb_color_changed">Spalva pakeista</string>
|
||||
<string name="revanced_sb_color_reset">Spalva atstatyta</string>
|
||||
<string name="revanced_sb_color_invalid">Netinkamas spalvos kodas</string>
|
||||
<string name="revanced_sb_reset_color">Atstatyti spalvą</string>
|
||||
<string name="revanced_sb_reset">Atstatyti</string>
|
||||
<string name="revanced_sb_about_title">Apie</string>
|
||||
<string name="revanced_sb_about_api_summary">Duomenys pateikiami per \"SponsorBlock\" API. Bakstelėkite čia, kad sužinotumėte daugiau ir pamatytumėte atsisiuntimus kitoms platformoms</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Iestatījumi</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Vai vēlaties turpināt?</string>
|
||||
<string name="revanced_settings_reset">Atiestatīt</string>
|
||||
<string name="revanced_settings_reset_color">Atiestatīt krāsu</string>
|
||||
<string name="revanced_settings_color_invalid">Nederīga krāsa</string>
|
||||
<string name="revanced_settings_restart_title">Atjaunināt un restartēt</string>
|
||||
<string name="revanced_settings_restart">Restartēt</string>
|
||||
<string name="revanced_settings_import">Importēt</string>
|
||||
@@ -365,9 +367,6 @@ Ierobežojumi
|
||||
|
||||
Šī funkcija ir pieejama tikai vecākiem ierīcēm"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Pilnekrāna reklāmas ir redzamas</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Paslēpt reklāmas ar pogām</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Reklāmas ar pogām ir paslēptas</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Reklāmas ar pogām ir redzamas</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Paslēpt apmaksātas reklāmas etiķeti</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Apmaksātas reklāmas etiķete ir paslēpta</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Apmaksātas reklāmas etiķete ir redzama</string>
|
||||
@@ -1098,11 +1097,6 @@ Vai esat gatavs iesniegt?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekundes</string>
|
||||
<string name="revanced_sb_color_opacity_label">Necaurredzamība:</string>
|
||||
<string name="revanced_sb_color_dot_label">Krāsa:</string>
|
||||
<string name="revanced_sb_color_changed">Krāsa mainīta</string>
|
||||
<string name="revanced_sb_color_reset">Krāsa atiestatīta</string>
|
||||
<string name="revanced_sb_color_invalid">Nederīgs krāsas kods</string>
|
||||
<string name="revanced_sb_reset_color">Atiestatīt krāsu</string>
|
||||
<string name="revanced_sb_reset">Atiestatīt</string>
|
||||
<string name="revanced_sb_about_title">Par</string>
|
||||
<string name="revanced_sb_about_api_summary">Dati tiek sniegti no SponsorBlock API. Pieskarieties šeit, lai uzzinātu vairāk un skatītu lejupielādes citām platformām</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Instellingen</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Wilt u doorgaan?</string>
|
||||
<string name="revanced_settings_reset">Terugzetten</string>
|
||||
<string name="revanced_settings_reset_color">Kleur opnieuw instellen</string>
|
||||
<string name="revanced_settings_color_invalid">Ongeldige kleur</string>
|
||||
<string name="revanced_settings_restart_title">Vernieuwen en opnieuw starten</string>
|
||||
<string name="revanced_settings_restart">Opnieuw starten</string>
|
||||
<string name="revanced_settings_import">Importeren</string>
|
||||
@@ -365,9 +367,6 @@ Beperkingen
|
||||
|
||||
Deze functie is alleen beschikbaar voor oudere apparaten"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Volledig scherm advertenties worden getoond</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Advertenties met knoppen verbergen</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Advertenties met knoppen zijn verborgen</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Advertenties met knoppen worden getoond</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Betaalde promotielabel verbergen</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Betaalde promotielabel is verborgen</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Betaalde promotielabel wordt getoond</string>
|
||||
@@ -1099,11 +1098,6 @@ Klaar om in te dienen?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s seconden</string>
|
||||
<string name="revanced_sb_color_opacity_label">Ondoorzichtigheid:</string>
|
||||
<string name="revanced_sb_color_dot_label">Kleur:</string>
|
||||
<string name="revanced_sb_color_changed">Kleur gewijzigd</string>
|
||||
<string name="revanced_sb_color_reset">Kleur gereset</string>
|
||||
<string name="revanced_sb_color_invalid">Ongeldige kleurcode</string>
|
||||
<string name="revanced_sb_reset_color">Kleur resetten</string>
|
||||
<string name="revanced_sb_reset">Herstellen naar standaard</string>
|
||||
<string name="revanced_sb_about_title">Over</string>
|
||||
<string name="revanced_sb_about_api_summary">Gegevens worden geleverd door de SponsorBlock API. Tik hier om meer te weten te komen en downloads te bekijken voor andere platforms</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Ustawienia</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Czy chcesz kontynuować?</string>
|
||||
<string name="revanced_settings_reset">Zresetuj</string>
|
||||
<string name="revanced_settings_reset_color">Zresetuj kolor</string>
|
||||
<string name="revanced_settings_color_invalid">Nieprawidłowy kolor</string>
|
||||
<string name="revanced_settings_restart_title">Odśwież i uruchom ponownie</string>
|
||||
<string name="revanced_settings_restart">Uruchom ponownie</string>
|
||||
<string name="revanced_settings_import">Zaimportuj</string>
|
||||
@@ -365,9 +367,6 @@ Ograniczenia
|
||||
|
||||
Ta funkcja jest dostępna tylko dla starszych urządzeń"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Reklamy pełnoekranowe są widoczne</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Reklamy z przyciskami</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Reklamy z przyciskami są ukryte</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Reklamy z przyciskami są widoczne</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Etykiety płatnej promocji</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Etykiety płatnej promocji są ukryte</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Etykiety płatnej promocji są widoczne</string>
|
||||
@@ -1099,11 +1098,6 @@ Gotowy do przesłania?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekund</string>
|
||||
<string name="revanced_sb_color_opacity_label">Krycie:</string>
|
||||
<string name="revanced_sb_color_dot_label">Kolor:</string>
|
||||
<string name="revanced_sb_color_changed">Zmieniono kolor</string>
|
||||
<string name="revanced_sb_color_reset">Zresetowano kolor</string>
|
||||
<string name="revanced_sb_color_invalid">Nieprawidłowy kod koloru</string>
|
||||
<string name="revanced_sb_reset_color">Resetuj kolor</string>
|
||||
<string name="revanced_sb_reset">Resetuj</string>
|
||||
<string name="revanced_sb_about_title">O aplikacji</string>
|
||||
<string name="revanced_sb_about_api_summary">Dane są dostarczane przez API SponsorBlock. Dotknij tutaj, aby dowiedzieć się więcej i pobrać na inne platformy</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Configurações</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Você deseja prosseguir?</string>
|
||||
<string name="revanced_settings_reset">Resetar</string>
|
||||
<string name="revanced_settings_reset_color">Redefinir cor</string>
|
||||
<string name="revanced_settings_color_invalid">Cor inválida</string>
|
||||
<string name="revanced_settings_restart_title">Atualizar e reiniciar</string>
|
||||
<string name="revanced_settings_restart">Reiniciar</string>
|
||||
<string name="revanced_settings_import">Importar</string>
|
||||
@@ -363,9 +365,6 @@ Linitações
|
||||
|
||||
Este recurso está disponível apenas para dispositivos mais antigos"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Anúncios em tela cheia não estão ocultos</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Ocultar anúncios com botões</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Os anúncios com botões estão ocultos</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Anúncios com botões não estão ocultos</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Ocultar o rótulo de promoção paga</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">O rótulo de promoção paga está oculto</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">O rótulo de promoção paga é mostrada</string>
|
||||
@@ -847,7 +846,7 @@ Configurações → Reprodução → Reproduzir próximo vídeo automaticamente"
|
||||
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Recarregue o vídeo para votar usando o Return YouTube Dislike</string>
|
||||
<!-- Video likes have been set to hidden by the video uploader. -->
|
||||
<string name="revanced_ryd_video_likes_hidden_by_video_owner">Oculto pelo proprietário</string>
|
||||
<string name="revanced_ryd_enabled_summary_on">Não gostei está oculto</string>
|
||||
<string name="revanced_ryd_enabled_summary_on">Não gostei é mostrado</string>
|
||||
<string name="revanced_ryd_enabled_summary_off">Não gostei não está oculto</string>
|
||||
<string name="revanced_ryd_shorts_title">Mostrar não gostei no Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">"\"Não gostei\" nos Shorts são mostrados
|
||||
@@ -1096,11 +1095,6 @@ Pronto para enviar?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s segundos</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacidade:</string>
|
||||
<string name="revanced_sb_color_dot_label">Cor:</string>
|
||||
<string name="revanced_sb_color_changed">Cor alterada</string>
|
||||
<string name="revanced_sb_color_reset">Redefinir cor</string>
|
||||
<string name="revanced_sb_color_invalid">Código de cor inválido</string>
|
||||
<string name="revanced_sb_reset_color">Redefinir cor</string>
|
||||
<string name="revanced_sb_reset">Resetar</string>
|
||||
<string name="revanced_sb_about_title">Sobre</string>
|
||||
<string name="revanced_sb_about_api_summary">Os dados são fornecidos pela API do SponsorBlock. Toque aqui para aprender mais e ver como baixar para outras plataformas</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Configurações</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Desejas continuar?</string>
|
||||
<string name="revanced_settings_reset">Repor</string>
|
||||
<string name="revanced_settings_reset_color">Redefinir cor</string>
|
||||
<string name="revanced_settings_color_invalid">Cor inválida</string>
|
||||
<string name="revanced_settings_restart_title">Atualizar e reiniciar</string>
|
||||
<string name="revanced_settings_restart">Reiniciar</string>
|
||||
<string name="revanced_settings_import">Importar</string>
|
||||
@@ -365,9 +367,6 @@ Limitações
|
||||
|
||||
Tính năng này chỉ khả dụng cho các thiết bị cũ"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Os anúncios são visíveis em ecrã cheia</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Esconder anúncios com botão</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Anúncios com botões estão escondidos</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Os anúncios com botões são visíveis</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Ocultar rótulo de promoção paga</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">O rótulo de promoção pago está oculto</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Rótulo de promoção pago é mostrado</string>
|
||||
@@ -1099,11 +1098,6 @@ Pronto para enviar?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s segundos</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacidade:</string>
|
||||
<string name="revanced_sb_color_dot_label">Cor:</string>
|
||||
<string name="revanced_sb_color_changed">Cor alterada</string>
|
||||
<string name="revanced_sb_color_reset">Redefinir cor</string>
|
||||
<string name="revanced_sb_color_invalid">Código de cor inválido</string>
|
||||
<string name="revanced_sb_reset_color">Redefinir cor</string>
|
||||
<string name="revanced_sb_reset">Repor</string>
|
||||
<string name="revanced_sb_about_title">Sobre</string>
|
||||
<string name="revanced_sb_about_api_summary">Os dados são fornecidos pela API do SponsorBlock. Toque aqui para aprender mais e ver downloads para outras plataformas</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Setări</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Doriți să continuați?</string>
|
||||
<string name="revanced_settings_reset">Resetare</string>
|
||||
<string name="revanced_settings_reset_color">Resetează culoarea</string>
|
||||
<string name="revanced_settings_color_invalid">Culoare nevalidă</string>
|
||||
<string name="revanced_settings_restart_title">Reîmprospătare și repornire</string>
|
||||
<string name="revanced_settings_restart">Repornire</string>
|
||||
<string name="revanced_settings_import">Importare</string>
|
||||
@@ -365,9 +367,6 @@ Limitări
|
||||
|
||||
Această funcție este disponibilă numai pentru dispozitivele mai vechi"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Reclame pe ecran complet sunt afișate</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Ascunde reclame butoane</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Reclame nastate sunt ascunse</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Reclame buttonate sunt afișate</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Ascunde eticheta promoției cu plată</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Eticheta promoției plătite este ascunsă</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Eticheta promoției plătite este afișată</string>
|
||||
@@ -1098,11 +1097,6 @@ Ești gata să trimiți?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s secunde</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacitate:</string>
|
||||
<string name="revanced_sb_color_dot_label">Culoare:</string>
|
||||
<string name="revanced_sb_color_changed">Culoare schimbată</string>
|
||||
<string name="revanced_sb_color_reset">Resetare culoare</string>
|
||||
<string name="revanced_sb_color_invalid">Cod culoare nevalid</string>
|
||||
<string name="revanced_sb_reset_color">Resetare culoare</string>
|
||||
<string name="revanced_sb_reset">Resetează</string>
|
||||
<string name="revanced_sb_about_title">Despre</string>
|
||||
<string name="revanced_sb_about_api_summary">Datele sunt furnizate de API-ul SponsorBlock. Apasă aici pentru a afla mai multe și a vedea descărcările pentru alte platforme</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Настройки</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Вы хотите продолжить?</string>
|
||||
<string name="revanced_settings_reset">Сбросить</string>
|
||||
<string name="revanced_settings_reset_color">Сбросить цвет</string>
|
||||
<string name="revanced_settings_color_invalid">Неверный цвет</string>
|
||||
<string name="revanced_settings_restart_title">Обновить и перезапустить</string>
|
||||
<string name="revanced_settings_restart">Перезапустить</string>
|
||||
<string name="revanced_settings_import">Импортировать</string>
|
||||
@@ -365,9 +367,6 @@ Second \"item\" text"</string>
|
||||
|
||||
Данная опция доступна только для старых устройств"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Полноэкранная реклама при запуске приложения показана</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Скрыть кнопочную рекламу</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Кнопочная реклама в ленте скрыта</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Кнопочная реклама в ленте показана</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Скрыть метку платной акции</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Метка платной акции в плеере скрыта</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Метка платной акции в плеере показана</string>
|
||||
@@ -1099,11 +1098,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s секунд</string>
|
||||
<string name="revanced_sb_color_opacity_label">Непрозрачность:</string>
|
||||
<string name="revanced_sb_color_dot_label">Цвет:</string>
|
||||
<string name="revanced_sb_color_changed">Цвет изменен</string>
|
||||
<string name="revanced_sb_color_reset">Цвет сброшен</string>
|
||||
<string name="revanced_sb_color_invalid">Неверный код цвета</string>
|
||||
<string name="revanced_sb_reset_color">Сбросить цвет</string>
|
||||
<string name="revanced_sb_reset">Сбросить</string>
|
||||
<string name="revanced_sb_about_title">Об интеграции</string>
|
||||
<string name="revanced_sb_about_api_summary">Данные предоставлены SponsorBlock API. Нажмите для дополнительной информации и просмотра загрузок для других платформ</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Nastavenia</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Chcete pokračovať?</string>
|
||||
<string name="revanced_settings_reset">Resetovať</string>
|
||||
<string name="revanced_settings_reset_color">Obnovi farbu</string>
|
||||
<string name="revanced_settings_color_invalid">Neplatn farba</string>
|
||||
<string name="revanced_settings_restart_title">Obnovte a reštartujte</string>
|
||||
<string name="revanced_settings_restart">Reštart</string>
|
||||
<string name="revanced_settings_import">Importovať</string>
|
||||
@@ -358,9 +360,6 @@ Slová s veľkými písmenami v strede musia byť zadané s použitím veľkých
|
||||
|
||||
Táto funkcia je dostupná len pre staršie zariadenia"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Zobrazujú sa reklamy na celú obrazovku</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Skryť zapnuté reklamy</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Zapnuté reklamy sú skryté</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Zobrazujú sa reklamy s tlačidlami</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Skryť štítok platenej propagácie</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Štítok platenej propagácie je skrytý</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Zobrazuje sa štítok platenej propagácie</string>
|
||||
@@ -1089,11 +1088,6 @@ Pripravené na odoslanie?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekúnd</string>
|
||||
<string name="revanced_sb_color_opacity_label">Priehľadnosť:</string>
|
||||
<string name="revanced_sb_color_dot_label">Farba:</string>
|
||||
<string name="revanced_sb_color_changed">Farba bola zmenená</string>
|
||||
<string name="revanced_sb_color_reset">Farba bola resetovaná</string>
|
||||
<string name="revanced_sb_color_invalid">Neplatný kód farby</string>
|
||||
<string name="revanced_sb_reset_color">Obnoviť farbu</string>
|
||||
<string name="revanced_sb_reset">Resetovať</string>
|
||||
<string name="revanced_sb_about_title">Informácie</string>
|
||||
<string name="revanced_sb_about_api_summary">Údaje poskytuje SponsorBlock API. Klepnutím sem sa dozviete viac a zobrazíte súbory na stiahnutie pre iné platformy</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Nastavitve</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Ali želite nadaljevati?</string>
|
||||
<string name="revanced_settings_reset">Ponastavi</string>
|
||||
<string name="revanced_settings_reset_color">Ponastavi barvo</string>
|
||||
<string name="revanced_settings_color_invalid">Neveljavna barva</string>
|
||||
<string name="revanced_settings_restart_title">Osveži in ponovno zaženi</string>
|
||||
<string name="revanced_settings_restart">Ponovno zaženi</string>
|
||||
<string name="revanced_settings_import">Uvozi</string>
|
||||
@@ -365,9 +367,6 @@ Omejitve
|
||||
|
||||
Ta funkcija je na voljo samo za starejše naprave"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Oglasi na celotnem zaslonu so prikazani</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Skrij oglase z gumbi</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Oglasi z gumbi so skriti</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Oglasi z gumbi so prikazani</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Skrij nalepko plačane promocije</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Nalepka plačane promocije je skrita</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Nalepka plačane promocije je prikazana</string>
|
||||
@@ -1098,11 +1097,6 @@ Ali ste pripravljeni na oddajo?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekund</string>
|
||||
<string name="revanced_sb_color_opacity_label">Prosojnost:</string>
|
||||
<string name="revanced_sb_color_dot_label">Barva:</string>
|
||||
<string name="revanced_sb_color_changed">Barva spremenjena</string>
|
||||
<string name="revanced_sb_color_reset">Barva ponastavljena</string>
|
||||
<string name="revanced_sb_color_invalid">Neveljavna koda barve</string>
|
||||
<string name="revanced_sb_reset_color">Ponastavi barvo</string>
|
||||
<string name="revanced_sb_reset">Ponastavi</string>
|
||||
<string name="revanced_sb_about_title">O programu</string>
|
||||
<string name="revanced_sb_about_api_summary">Podatki so zagotovljeni s strani SponsorBlock API. Tapnite tukaj, da izveste več in si ogledate prenose za druge platforme</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Cilësimet</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Dëshironi të vazhdoni?</string>
|
||||
<string name="revanced_settings_reset">Rivendos</string>
|
||||
<string name="revanced_settings_reset_color">Rikthe ngjyrën</string>
|
||||
<string name="revanced_settings_color_invalid">Ngjyrë e pavlefshme</string>
|
||||
<string name="revanced_settings_restart_title">Rifresko dhe rifillo</string>
|
||||
<string name="revanced_settings_restart">Rifillo</string>
|
||||
<string name="revanced_settings_import">Importo</string>
|
||||
@@ -365,9 +367,6 @@ Kufizime
|
||||
|
||||
Kjo veçori është e disponueshme vetëm për pajisje më të vjetra"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Reklamimet me ekran të plotë janë të dukshme</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Fsheh reklamimet me butona</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Reklamimet me butona janë të fshehur</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Reklamimet me butona janë të dukshme</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Fsheh etiketën e promovimit të paguar</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Etiketë e promovimit të paguar është e fshehur</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Etiketë e promovimit të paguar është e dukshme</string>
|
||||
@@ -1097,11 +1096,6 @@ Gati per te dhene?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekonda</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opaciteti:</string>
|
||||
<string name="revanced_sb_color_dot_label">Ngjyra:</string>
|
||||
<string name="revanced_sb_color_changed">Ngjyra është ndryshuar</string>
|
||||
<string name="revanced_sb_color_reset">Ngjyra u rikthye</string>
|
||||
<string name="revanced_sb_color_invalid">Kod ngjyre i pavlefshëm</string>
|
||||
<string name="revanced_sb_reset_color">Rikthe ngjyrën</string>
|
||||
<string name="revanced_sb_reset">Rikthe</string>
|
||||
<string name="revanced_sb_about_title">Rreth</string>
|
||||
<string name="revanced_sb_about_api_summary">Të dhënat janë siguruar nga API e SponsorBlock. Prekni këtu për të mësuar më shumë dhe për të parë shkarkimet për platformat e tjera</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Podešavanja</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Želite li da nastavite?</string>
|
||||
<string name="revanced_settings_reset">Resetuj</string>
|
||||
<string name="revanced_settings_reset_color">Poništi boju</string>
|
||||
<string name="revanced_settings_color_invalid">Nevažeća boja</string>
|
||||
<string name="revanced_settings_restart_title">Osvežite i restartujte</string>
|
||||
<string name="revanced_settings_restart">Restartuj</string>
|
||||
<string name="revanced_settings_import">Uvoz</string>
|
||||
@@ -365,9 +367,6 @@ Ograničenja
|
||||
|
||||
Ova funkcija je dostupna samo za starije uređaje"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Oglasi preko celog ekrana su prikazani</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Sakrij oglase u obliku dugmadi</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Oglasi u obliku dugmadi su skriveni</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Oglasi u obliku dugmadi su prikazani</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Sakrij oznaku plaćene promocije</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Oznaka plaćeme promocije je skrivena</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Oznaka plaćene promocije je prikazana</string>
|
||||
@@ -1098,11 +1097,6 @@ Spreman za podnošenje?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekundi</string>
|
||||
<string name="revanced_sb_color_opacity_label">Neprozirnost:</string>
|
||||
<string name="revanced_sb_color_dot_label">Boja:</string>
|
||||
<string name="revanced_sb_color_changed">Boja promenjena</string>
|
||||
<string name="revanced_sb_color_reset">Boja resetovana</string>
|
||||
<string name="revanced_sb_color_invalid">Nevažeći kôd boje</string>
|
||||
<string name="revanced_sb_reset_color">Resetuj boju</string>
|
||||
<string name="revanced_sb_reset">Resetuj</string>
|
||||
<string name="revanced_sb_about_title">O programu</string>
|
||||
<string name="revanced_sb_about_api_summary">Podatke obezbeđuje SponsorBlock API. Dodirnite ovde da saznate više i vidite preuzimanja za druge platforme</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Подешавања</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Желите ли да наставите?</string>
|
||||
<string name="revanced_settings_reset">Ресетуј</string>
|
||||
<string name="revanced_settings_reset_color">Врати подразумевану боју</string>
|
||||
<string name="revanced_settings_color_invalid">Неисправна боја</string>
|
||||
<string name="revanced_settings_restart_title">Освежите и рестартујте</string>
|
||||
<string name="revanced_settings_restart">Рестартуј</string>
|
||||
<string name="revanced_settings_import">Увоз</string>
|
||||
@@ -365,9 +367,6 @@ Second \"item\" text"</string>
|
||||
|
||||
Ова функција је доступна само за старије уређаје"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Огласи преко целог екрана су приказани</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Сакриј огласе у облику дугмади</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Огласи у облику дугмади су скривени</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Огласи у облику дугмади су приказани</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Сакриј ознаку плаћене промоције</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Ознака плаћене промоције је скривена</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Ознака плаћене промоције је приказана</string>
|
||||
@@ -1098,11 +1097,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s секунди</string>
|
||||
<string name="revanced_sb_color_opacity_label">Непрозирност:</string>
|
||||
<string name="revanced_sb_color_dot_label">Боја:</string>
|
||||
<string name="revanced_sb_color_changed">Боја промењена</string>
|
||||
<string name="revanced_sb_color_reset">Боја ресетована</string>
|
||||
<string name="revanced_sb_color_invalid">Неважећи кôд боје</string>
|
||||
<string name="revanced_sb_reset_color">Ресетуј боју</string>
|
||||
<string name="revanced_sb_reset">Ресетуј</string>
|
||||
<string name="revanced_sb_about_title">О програму</string>
|
||||
<string name="revanced_sb_about_api_summary">Податке обезбеђује SponsorBlock API. Додирните овде да сазнате више и видите преузимања за друге платформе</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Inställningar</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Vill du fortsätta?</string>
|
||||
<string name="revanced_settings_reset">Återställ</string>
|
||||
<string name="revanced_settings_reset_color">Återställ färg</string>
|
||||
<string name="revanced_settings_color_invalid">Ogiltig färg</string>
|
||||
<string name="revanced_settings_restart_title">Uppdatera och starta om</string>
|
||||
<string name="revanced_settings_restart">Starta om</string>
|
||||
<string name="revanced_settings_import">Importera</string>
|
||||
@@ -365,9 +367,6 @@ Begränsningar
|
||||
|
||||
Den här funktionen är endast tillgänglig för äldre enheter"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Fullskärmsannonser är synliga</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Dölj knappannonser</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Knappannonser är dolda</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Knappannonser är synliga</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Dölj betald kampanjetikett</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Betald kampanjetikett är dold</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Betald kampanjetikett är synlig</string>
|
||||
@@ -1098,11 +1097,6 @@ Redo att skicka in?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s sekunder</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacitet:</string>
|
||||
<string name="revanced_sb_color_dot_label">Färg:</string>
|
||||
<string name="revanced_sb_color_changed">Färg ändrad</string>
|
||||
<string name="revanced_sb_color_reset">Färg återställning</string>
|
||||
<string name="revanced_sb_color_invalid">Ogiltig färgkod</string>
|
||||
<string name="revanced_sb_reset_color">Återställ färg</string>
|
||||
<string name="revanced_sb_reset">Återställ</string>
|
||||
<string name="revanced_sb_about_title">Om</string>
|
||||
<string name="revanced_sb_about_api_summary">Data tillhandahålls av SponsorBlock API. Tryck här för att läsa mer och se nedladdningar för andra plattformar</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">การตั้งค่า</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">คุณต้องการดำเนินการต่อหรือไม่?</string>
|
||||
<string name="revanced_settings_reset">รีเซ็ต</string>
|
||||
<string name="revanced_settings_reset_color">รีเซ็ตสี</string>
|
||||
<string name="revanced_settings_color_invalid">สีไม่ถูกต้อง</string>
|
||||
<string name="revanced_settings_restart_title">รีเฟรชและเริ่มต้นใหม่</string>
|
||||
<string name="revanced_settings_restart">เริ่มต้นใหม่</string>
|
||||
<string name="revanced_settings_import">นำเข้า</string>
|
||||
@@ -365,9 +367,6 @@ Second \"item\" text"</string>
|
||||
|
||||
คุณสมบัตินี้มีเฉพาะสําหรับอุปกรณ์รุ่นเก่า"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">โฆษณาแบบเต็มหน้าจอจะแสดง</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">ซ่อนโฆษณาแบบมีปุ่ม</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">โฆษณาแบบมีปุ่มถูกซ่อน</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">โฆษณาแบบมีปุ่มจะแสดง</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">ซ่อนป้ายโฆษณาที่จ่ายเงิน</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">ป้ายโฆษณาที่จ่ายเงินถูกซ่อน</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">ป้ายโฆษณาที่จ่ายเงินจะแสดง</string>
|
||||
@@ -1097,11 +1096,6 @@ User id ของคุณเหมือนกับรหัสผ่าน
|
||||
<string name="revanced_sb_stats_saved_second_format">%s วินาที</string>
|
||||
<string name="revanced_sb_color_opacity_label">ความทึบ:</string>
|
||||
<string name="revanced_sb_color_dot_label">สี:</string>
|
||||
<string name="revanced_sb_color_changed">เปลื่ยนสีแล้ว</string>
|
||||
<string name="revanced_sb_color_reset">สีเปลื่ยนเป็นค่าเริ่มต้นแล้ว</string>
|
||||
<string name="revanced_sb_color_invalid">รหัสสีไม่ถูกต้อง</string>
|
||||
<string name="revanced_sb_reset_color">รีเซ็ตสี</string>
|
||||
<string name="revanced_sb_reset">รีเซ็ต</string>
|
||||
<string name="revanced_sb_about_title">เกี่ยวกับ</string>
|
||||
<string name="revanced_sb_about_api_summary">ข้อมูลนี้มาจาก SponsorBlock API แตะที่นี่เพื่อเรียนรู้เพิ่มเติมและดูการดาวน์โหลดสำหรับแพลตฟอร์มอื่น ๆ</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Ayarlar</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Devam etmek istiyor musunuz?</string>
|
||||
<string name="revanced_settings_reset">Sıfırla</string>
|
||||
<string name="revanced_settings_reset_color">Rengi sıfırla</string>
|
||||
<string name="revanced_settings_color_invalid">Geçersiz renk</string>
|
||||
<string name="revanced_settings_restart_title">Yenile ve yeniden başlat</string>
|
||||
<string name="revanced_settings_restart">Yeniden başlat</string>
|
||||
<string name="revanced_settings_import">İçe aktar</string>
|
||||
@@ -365,9 +367,6 @@ Sınırlamalar
|
||||
|
||||
Bu özellik yalnızca eski cihazlarda kullanılabilir"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Tam ekran reklamlar görünür</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Düğmeli reklamları gizle</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Düğmeli reklamlar gizli</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Düğmeli reklamlar görünür</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Ücretli tanıtım etiketini gizle</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Ücretli tanıtım etiketi gizli</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Ücretli tanıtım etiketi görünür</string>
|
||||
@@ -1099,11 +1098,6 @@ Göndermeye hazır mısınız?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s saniye</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opaklık:</string>
|
||||
<string name="revanced_sb_color_dot_label">Renk:</string>
|
||||
<string name="revanced_sb_color_changed">Renk değiştirildi</string>
|
||||
<string name="revanced_sb_color_reset">Renk sıfırlandı</string>
|
||||
<string name="revanced_sb_color_invalid">Geçersiz renk kodu</string>
|
||||
<string name="revanced_sb_reset_color">Rengi sıfırla</string>
|
||||
<string name="revanced_sb_reset">Sıfırla</string>
|
||||
<string name="revanced_sb_about_title">Hakkında</string>
|
||||
<string name="revanced_sb_about_api_summary">Veri, SponsorBlock API\'sinden sağlanır. Daha fazla bilgi ve diğer platformlar için indirmeleri görmek için dokunun</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Налаштування</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Бажаєте продовжити?</string>
|
||||
<string name="revanced_settings_reset">Скинути</string>
|
||||
<string name="revanced_settings_reset_color">Скинути колір</string>
|
||||
<string name="revanced_settings_color_invalid">Недійсний колір</string>
|
||||
<string name="revanced_settings_restart_title">Оновити та перезавантажити?</string>
|
||||
<string name="revanced_settings_restart">Перезавантажити</string>
|
||||
<string name="revanced_settings_import">Імпортувати</string>
|
||||
@@ -366,9 +368,6 @@ Second \"item\" text"</string>
|
||||
|
||||
Ця функція доступна тільки для старих пристроїв"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Повноекранна реклама показується</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Приховати рекламу з кнопкою</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Рекламу з кнопкою приховано</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Реклама з кнопкою показується</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Приховати \"Містить пряму рекламу\"</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Мітку \"Містить пряму рекламу\" приховано</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Мітка \"Містить пряму рекламу\" показується</string>
|
||||
@@ -1099,11 +1098,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s секунд(и)</string>
|
||||
<string name="revanced_sb_color_opacity_label">Непрозорість:</string>
|
||||
<string name="revanced_sb_color_dot_label">Колір:</string>
|
||||
<string name="revanced_sb_color_changed">Колір змінено</string>
|
||||
<string name="revanced_sb_color_reset">Колір скинуто</string>
|
||||
<string name="revanced_sb_color_invalid">Невірний код кольору</string>
|
||||
<string name="revanced_sb_reset_color">Скинути колір</string>
|
||||
<string name="revanced_sb_reset">Скинути</string>
|
||||
<string name="revanced_sb_about_title">Про інтеграцію</string>
|
||||
<string name="revanced_sb_about_api_summary">Дані надаються через API SponsorBlock. Натисніть тут, щоб дізнатися більше та побачити завантаження для інших платформ</string>
|
||||
</patch>
|
||||
@@ -1141,13 +1135,13 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_change_start_page_title">Змінити початкову сторінку</string>
|
||||
<string name="revanced_change_start_page_entry_default">За замовчуванням</string>
|
||||
<string name="revanced_change_start_page_entry_all_subscriptions">Усі підписки</string>
|
||||
<string name="revanced_change_start_page_entry_browse">Усі підписки</string>
|
||||
<string name="revanced_change_start_page_entry_browse">Перегляд каналів</string>
|
||||
<string name="revanced_change_start_page_entry_courses">Навчання</string>
|
||||
<string name="revanced_change_start_page_entry_explore">Навігатор</string>
|
||||
<string name="revanced_change_start_page_entry_fashion">Мода і краса</string>
|
||||
<string name="revanced_change_start_page_entry_explore">Що нового</string>
|
||||
<string name="revanced_change_start_page_entry_fashion">Мода та краса</string>
|
||||
<string name="revanced_change_start_page_entry_gaming">Ігри</string>
|
||||
<string name="revanced_change_start_page_entry_history">Історія</string>
|
||||
<string name="revanced_change_start_page_entry_library">Бібліотека</string>
|
||||
<string name="revanced_change_start_page_entry_library">Вкладка \"Ви\"</string>
|
||||
<string name="revanced_change_start_page_entry_liked_videos">Відео, які сподобалися</string>
|
||||
<string name="revanced_change_start_page_entry_live">Прямі трансляції</string>
|
||||
<string name="revanced_change_start_page_entry_movies">Фільми</string>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">Thiết lập</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Bạn có muốn tiếp tục không?</string>
|
||||
<string name="revanced_settings_reset">Đặt lại</string>
|
||||
<string name="revanced_settings_reset_color">Đặt lại màu</string>
|
||||
<string name="revanced_settings_color_invalid">Màu không hợp lệ</string>
|
||||
<string name="revanced_settings_restart_title">Làm mới và khởi động lại</string>
|
||||
<string name="revanced_settings_restart">Khởi động lại</string>
|
||||
<string name="revanced_settings_import">Nhập</string>
|
||||
@@ -365,9 +367,6 @@ Hạn chế
|
||||
|
||||
Tính năng này chỉ khả dụng cho các thiết bị cũ hơn"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Quảng cáo toàn màn hình được hiển thị</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Ẩn quảng cáo có nút</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Quảng cáo có nút đã bị ẩn</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Quảng cáo có nút được hiển thị</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Ẩn nhãn quảng cáo được tài trợ</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Nhãn quảng cáo được tài trợ đã bị ẩn</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Nhãn quảng cáo được tài trợ được hiển thị</string>
|
||||
@@ -1098,11 +1097,6 @@ Bạn đã sẵn sàng gửi?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s giây</string>
|
||||
<string name="revanced_sb_color_opacity_label">Độ mờ:</string>
|
||||
<string name="revanced_sb_color_dot_label">Màu:</string>
|
||||
<string name="revanced_sb_color_changed">Màu sắc đã được thay đổi</string>
|
||||
<string name="revanced_sb_color_reset">Đặt lại màu sắc</string>
|
||||
<string name="revanced_sb_color_invalid">Mã màu không hợp lệ</string>
|
||||
<string name="revanced_sb_reset_color">Đặt lại màu</string>
|
||||
<string name="revanced_sb_reset">Đặt lại</string>
|
||||
<string name="revanced_sb_about_title">Giới thiệu</string>
|
||||
<string name="revanced_sb_about_api_summary">Dữ liệu được cung cấp bởi API SponsorBlock. Nhấn vào đây để tìm hiểu thêm và xem các bản tải cho các nền tảng khác</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_submenu_title">设置</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">您想要继续吗?</string>
|
||||
<string name="revanced_settings_reset">重置</string>
|
||||
<string name="revanced_settings_reset_color">重置颜色</string>
|
||||
<string name="revanced_settings_color_invalid">无效的颜色</string>
|
||||
<string name="revanced_settings_restart_title">刷新并重启</string>
|
||||
<string name="revanced_settings_restart">重启</string>
|
||||
<string name="revanced_settings_import">导入</string>
|
||||
@@ -365,9 +367,6 @@ Second \"item\" text"</string>
|
||||
|
||||
此功能仅适用于旧设备"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">全屏广告已显示</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">隐藏信息流视频广告</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">按钮广告已隐藏</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">按钮广告已显示</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">隐藏付费推广标签</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">付费推广标签已隐藏</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">付费推广标签已显示</string>
|
||||
@@ -1103,11 +1102,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s 秒</string>
|
||||
<string name="revanced_sb_color_opacity_label">不透明度:</string>
|
||||
<string name="revanced_sb_color_dot_label">颜色:</string>
|
||||
<string name="revanced_sb_color_changed">已更改颜色</string>
|
||||
<string name="revanced_sb_color_reset">重置颜色</string>
|
||||
<string name="revanced_sb_color_invalid">无效的颜色代码</string>
|
||||
<string name="revanced_sb_reset_color">重置颜色</string>
|
||||
<string name="revanced_sb_reset">重置</string>
|
||||
<string name="revanced_sb_about_title">关于</string>
|
||||
<string name="revanced_sb_about_api_summary">数据由 SponsorBlock API 提供。点击这里了解更多信息并查看其他平台的下载内容</string>
|
||||
</patch>
|
||||
|
||||
@@ -355,9 +355,6 @@ Second \"item\" text"</string>
|
||||
|
||||
此功能僅適用於舊版裝置"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">已顯示全螢幕廣告</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">隱藏按鈕型廣告</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">已隱藏按鈕型廣告</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">已顯示按鈕型廣告</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">隱藏付費推廣標籤</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">已隱藏付費推廣標籤</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">已顯示付費推廣標籤</string>
|
||||
@@ -1075,11 +1072,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s 秒</string>
|
||||
<string name="revanced_sb_color_opacity_label">不透明度:</string>
|
||||
<string name="revanced_sb_color_dot_label">顏色:</string>
|
||||
<string name="revanced_sb_color_changed">已變更顏色</string>
|
||||
<string name="revanced_sb_color_reset">重設顏色</string>
|
||||
<string name="revanced_sb_color_invalid">無效的顏色代碼</string>
|
||||
<string name="revanced_sb_reset_color">重設顏色</string>
|
||||
<string name="revanced_sb_reset">重設</string>
|
||||
<string name="revanced_sb_about_title">關於</string>
|
||||
<string name="revanced_sb_about_api_summary">資料由 SponsorBlock API 提供。輕觸這裡來了解更多資訊和查看其他平台的下載</string>
|
||||
</patch>
|
||||
|
||||
@@ -35,6 +35,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_title" translatable="false">ReVanced</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Do you wish to proceed?</string>
|
||||
<string name="revanced_settings_reset">Reset</string>
|
||||
<string name="revanced_settings_reset_color">Reset color</string>
|
||||
<string name="revanced_settings_color_invalid">Invalid color</string>
|
||||
<string name="revanced_settings_restart_title">Refresh and restart</string>
|
||||
<string name="revanced_settings_restart">Restart</string>
|
||||
<string name="revanced_settings_import">Import</string>
|
||||
@@ -1161,11 +1163,6 @@ Ready to submit?"</string>
|
||||
<string name="revanced_sb_stats_saved_second_format">%s seconds</string>
|
||||
<string name="revanced_sb_color_opacity_label">Opacity:</string>
|
||||
<string name="revanced_sb_color_dot_label">Color:</string>
|
||||
<string name="revanced_sb_color_changed">Color changed</string>
|
||||
<string name="revanced_sb_color_reset">Color reset</string>
|
||||
<string name="revanced_sb_color_invalid">Invalid color code</string>
|
||||
<string name="revanced_sb_reset_color">Reset color</string>
|
||||
<string name="revanced_sb_reset">Reset</string>
|
||||
<string name="revanced_sb_about_title">About</string>
|
||||
<string name="revanced_sb_about_api_title" translatable="false">sponsor.ajay.app</string>
|
||||
<string name="revanced_sb_about_api_summary">Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms</string>
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<solid android:color="#FF0000" />
|
||||
<size
|
||||
android:width="20dp"
|
||||
android:height="20dp" />
|
||||
</shape>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_gravity="center"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
<View
|
||||
android:id="@+id/revanced_color_dot_widget"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_gravity="center"
|
||||
android:background="@drawable/revanced_settings_circle_background"
|
||||
android:elevation="2dp"
|
||||
android:translationZ="2dp"
|
||||
android:outlineProvider="background" />
|
||||
</FrameLayout>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<app.revanced.extension.shared.settings.preference.ColorPickerView
|
||||
android:id="@+id/color_picker_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp" />
|
||||
</LinearLayout>
|
||||
Reference in New Issue
Block a user