Don't look at this commit, it'll spoil the secret 🤫

This commit is contained in:
MrLetsplay 2023-12-19 19:25:52 +01:00
parent 018843f78b
commit 013e23dc11
Signed by: mr
SSH Key Fingerprint: SHA256:92jBH80vpXyaZHjaIl47pjRq+Yt7XGTArqQg1V7hSqg
39 changed files with 209 additions and 20 deletions

View File

@ -69,12 +69,12 @@ dependencies {
} }
implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.10.0' implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.lifecycle:lifecycle-livedata:2.6.2' implementation 'androidx.lifecycle:lifecycle-livedata:2.6.2'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.6.2' implementation 'androidx.lifecycle:lifecycle-viewmodel:2.6.2'
implementation 'androidx.navigation:navigation-fragment:2.7.5' implementation 'androidx.navigation:navigation-fragment:2.7.6'
implementation 'androidx.navigation:navigation-ui:2.7.5' implementation 'androidx.navigation:navigation-ui:2.7.6'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
@ -82,9 +82,9 @@ dependencies {
implementation 'com.cringe_studios:CringeAuthenticatorLibrary:1.6' implementation 'com.cringe_studios:CringeAuthenticatorLibrary:1.6'
implementation 'com.google.mlkit:barcode-scanning:17.2.0' implementation 'com.google.mlkit:barcode-scanning:17.2.0'
implementation 'com.google.code.gson:gson:2.10.1' implementation 'com.google.code.gson:gson:2.10.1'
implementation 'androidx.activity:activity:1.8.1' implementation 'androidx.activity:activity:1.8.2'
def camerax_version = "1.3.0" def camerax_version = "1.3.1"
implementation "androidx.camera:camera-core:${camerax_version}" implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}" implementation "androidx.camera:camera-camera2:${camerax_version}"
implementation "androidx.camera:camera-lifecycle:${camerax_version}" implementation "androidx.camera:camera-lifecycle:${camerax_version}"
@ -93,7 +93,7 @@ dependencies {
implementation "androidx.camera:camera-view:${camerax_version}" implementation "androidx.camera:camera-view:${camerax_version}"
implementation "androidx.camera:camera-extensions:${camerax_version}" implementation "androidx.camera:camera-extensions:${camerax_version}"
implementation "androidx.exifinterface:exifinterface:1.3.6" implementation "androidx.exifinterface:exifinterface:1.3.7"
implementation 'com.google.protobuf:protobuf-javalite:3.24.3' implementation 'com.google.protobuf:protobuf-javalite:3.24.3'

View File

@ -20,20 +20,29 @@
android:screenOrientation="sensorPortrait" android:screenOrientation="sensorPortrait"
android:resizeableActivity="false" android:resizeableActivity="false"
android:name=".IntroActivity" android:name=".IntroActivity"
android:label="@string/app_name"
android:theme="@style/Theme.CringeAuthenticator" android:theme="@style/Theme.CringeAuthenticator"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity-alias
android:name=".IntroActivityCringe"
android:targetActivity=".IntroActivity"
android:icon="@mipmap/ic_launcher_cringe"
android:exported="true"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.CringeAuthenticator.None" android:theme="@style/Theme.CringeAuthenticator.None"
android:configChanges="orientation|screenSize" android:configChanges="orientation|screenSize"
android:windowSoftInputMode="adjustPan" > android:windowSoftInputMode="adjustPan" >

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

View File

@ -1,5 +1,7 @@
package com.cringe_studios.code_guard; package com.cringe_studios.code_guard;
import android.content.ComponentName;
import android.content.pm.PackageManager;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.Menu; import android.view.Menu;
@ -13,6 +15,7 @@ import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.SearchView;
import androidx.core.util.Consumer; import androidx.core.util.Consumer;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@ -244,6 +247,10 @@ public class MainActivity extends BaseActivity {
setSupportActionBar(binding.toolbar); setSupportActionBar(binding.toolbar);
if(SettingsUtil.isHamburgerModeEnabled(this)) {
binding.fabMenu.setImageDrawable(AppCompatResources.getDrawable(this, R.drawable.ic_hamburger));
}
binding.fabMenu.setOnClickListener(view -> NavigationUtil.openMenu(this, null)); binding.fabMenu.setOnClickListener(view -> NavigationUtil.openMenu(this, null));
if(SettingsUtil.isFirstLaunch(this) && SettingsUtil.getGroups(this).isEmpty()) { if(SettingsUtil.isFirstLaunch(this) && SettingsUtil.getGroups(this).isEmpty()) {
@ -262,6 +269,20 @@ public class MainActivity extends BaseActivity {
} }
} }
public void updateIcon() {
boolean cringeIcon = SettingsUtil.isCringeIconEnabled(this);
getPackageManager().setComponentEnabledSetting(
new ComponentName(this, "com.cringe_studios.code_guard.IntroActivity"),
cringeIcon ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED : PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(
new ComponentName(this, "com.cringe_studios.code_guard.IntroActivityCringe"),
!cringeIcon ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED : PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
public void navigateToMainGroup() { public void navigateToMainGroup() {
List<String> groups = SettingsUtil.getGroups(this); List<String> groups = SettingsUtil.getGroups(this);
if(!groups.isEmpty()) { if(!groups.isEmpty()) {

View File

@ -170,11 +170,6 @@ public class SettingsFragment extends NamedFragment {
binding.settingsShowImages.setChecked(SettingsUtil.isShowImages(requireContext())); binding.settingsShowImages.setChecked(SettingsUtil.isShowImages(requireContext()));
binding.settingsShowImages.setOnCheckedChangeListener((view, checked) -> SettingsUtil.setShowImages(requireContext(), checked)); binding.settingsShowImages.setOnCheckedChangeListener((view, checked) -> SettingsUtil.setShowImages(requireContext(), checked));
String[] themeNames = new String[Theme.values().length];
for(int i = 0; i < Theme.values().length; i++) {
themeNames[i] = getResources().getString(Theme.values()[i].getName());
}
binding.settingsEnableIntroVideo.setChecked(SettingsUtil.isIntroVideoEnabled(requireContext())); binding.settingsEnableIntroVideo.setChecked(SettingsUtil.isIntroVideoEnabled(requireContext()));
binding.settingsEnableIntroVideo.setOnCheckedChangeListener((view, checked) -> SettingsUtil.setEnableIntroVideo(requireContext(), checked)); binding.settingsEnableIntroVideo.setOnCheckedChangeListener((view, checked) -> SettingsUtil.setEnableIntroVideo(requireContext(), checked));
@ -184,12 +179,21 @@ public class SettingsFragment extends NamedFragment {
requireActivity().recreate(); requireActivity().recreate();
}); });
List<Theme> themes = new ArrayList<>(Arrays.asList(Theme.values()));
if(!SettingsUtil.isSuperSecretSettingsEnabled(requireContext())) themes.remove(Theme.KETCHUP_MUSTARD);
int selectedIndex = themes.indexOf(SettingsUtil.getTheme(requireContext()));
String[] themeNames = new String[themes.size()];
for(int i = 0; i < themes.size(); i++) {
themeNames[i] = getResources().getString(themes.get(i).getName());
}
binding.settingsTheme.setAdapter(new ArrayAdapter<>(requireContext(), android.R.layout.simple_list_item_1, themeNames)); binding.settingsTheme.setAdapter(new ArrayAdapter<>(requireContext(), android.R.layout.simple_list_item_1, themeNames));
binding.settingsTheme.setSelection(SettingsUtil.getTheme(requireContext()).ordinal()); binding.settingsTheme.setSelection(selectedIndex == -1 ? 0 : selectedIndex);
binding.settingsTheme.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { binding.settingsTheme.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override @Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Theme theme = Theme.values()[position]; Theme theme = themes.get(position);
if(theme == SettingsUtil.getTheme(requireContext())) return; if(theme == SettingsUtil.getTheme(requireContext())) return;
SettingsUtil.setTheme(requireContext(), theme); SettingsUtil.setTheme(requireContext(), theme);
@ -300,6 +304,20 @@ public class SettingsFragment extends NamedFragment {
.show(); .show();
}); });
binding.settingsSuperSecretSettings.setVisibility(SettingsUtil.isSuperSecretSettingsEnabled(requireContext()) ? View.VISIBLE : View.GONE);
binding.settingsHamburgerMode.setChecked(SettingsUtil.isHamburgerModeEnabled(requireContext()));
binding.settingsHamburgerMode.setOnCheckedChangeListener((view, checked) -> {
SettingsUtil.setEnableHamburgerMode(requireContext(), checked);
requireActivity().recreate();
});
binding.settingsUseCringeIcon.setChecked(SettingsUtil.isCringeIconEnabled(requireContext()));
binding.settingsUseCringeIcon.setOnCheckedChangeListener((view, checked) -> {
SettingsUtil.setEnableCringeIcon(requireContext(), checked);
((MainActivity) requireActivity()).updateIcon();
});
return binding.getRoot(); return binding.getRoot();
} }

View File

@ -1,14 +1,29 @@
package com.cringe_studios.code_guard.model; package com.cringe_studios.code_guard.model;
import android.util.Log;
import com.cringe_studios.cringe_authenticator_library.OTP; import com.cringe_studios.cringe_authenticator_library.OTP;
import com.cringe_studios.cringe_authenticator_library.OTPAlgorithm; import com.cringe_studios.cringe_authenticator_library.OTPAlgorithm;
import com.cringe_studios.cringe_authenticator_library.OTPException; import com.cringe_studios.cringe_authenticator_library.OTPException;
import com.cringe_studios.cringe_authenticator_library.OTPType; import com.cringe_studios.cringe_authenticator_library.OTPType;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects;
public class OTPData implements Serializable { public class OTPData implements Serializable {
private static final OTPData SECRET_OTP = new OTPData(
"Cringe Studios",
"JG-Cody",
OTPType.HOTP,
"IFGU6TSHKVJQ",
OTPAlgorithm.SHA384,
7,
0,
69,
true
);
public static final String IMAGE_DATA_NONE = "none"; public static final String IMAGE_DATA_NONE = "none";
private String name; private String name;
@ -116,4 +131,32 @@ public class OTPData implements Serializable {
} }
} }
@Override
public String toString() {
return "OTPData{" +
"name='" + name + '\'' +
", issuer='" + issuer + '\'' +
", type=" + type +
", secret='" + secret + '\'' +
", algorithm=" + algorithm +
", digits=" + digits +
", period=" + period +
", counter=" + counter +
", checksum=" + checksum +
", imageData='" + imageData + '\'' +
", otp=" + otp +
'}';
}
public static boolean isSecretOTP(OTPData data) {
return data.digits == SECRET_OTP.digits
&& data.counter == SECRET_OTP.counter
&& data.checksum == SECRET_OTP.checksum
&& Objects.equals(data.name, SECRET_OTP.name)
&& Objects.equals(data.issuer, SECRET_OTP.issuer)
&& data.type == SECRET_OTP.type
&& Objects.equals(data.secret, SECRET_OTP.secret)
&& data.algorithm == SECRET_OTP.algorithm;
}
} }

View File

@ -3,6 +3,7 @@ package com.cringe_studios.code_guard.util;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.util.Log; import android.util.Log;
import android.widget.Toast;
import com.cringe_studios.code_guard.BaseActivity; import com.cringe_studios.code_guard.BaseActivity;
import com.cringe_studios.code_guard.R; import com.cringe_studios.code_guard.R;
@ -56,6 +57,11 @@ public class OTPDatabase {
for(int i = 0; i < data.length; i++) { for(int i = 0; i < data.length; i++) {
OTPData o = data[i]; OTPData o = data[i];
if(OTPData.isSecretOTP(o) && !SettingsUtil.isSuperSecretSettingsEnabled(context)) {
SettingsUtil.setEnableSuperSecretSettings(context, true);
Toast.makeText(context, R.string.super_secret_settings_unlocked, Toast.LENGTH_LONG).show();
}
for (OTPData o2 : os) { for (OTPData o2 : os) {
if (Objects.equals(o.getName(), o2.getName()) && Objects.equals(o.getIssuer(), o2.getIssuer())) { if (Objects.equals(o.getName(), o2.getName()) && Objects.equals(o.getIssuer(), o2.getIssuer())) {
anyDuplicates = true; anyDuplicates = true;

View File

@ -235,12 +235,28 @@ public class SettingsUtil {
} }
} }
public static void enableSuperSecretHamburgers(Context ctx) { public static void setEnableSuperSecretSettings(Context ctx, boolean enable) {
ctx.getSharedPreferences(GENERAL_PREFS_NAME, Context.MODE_PRIVATE).edit().putBoolean("iLikeHamburgers", true).apply(); ctx.getSharedPreferences(GENERAL_PREFS_NAME, Context.MODE_PRIVATE).edit().putBoolean("superSecretSettings", enable).apply();
} }
public static boolean isSuperSecretHamburgersEnabled(Context ctx) { public static boolean isSuperSecretSettingsEnabled(Context ctx) {
return ctx.getSharedPreferences(GENERAL_PREFS_NAME, Context.MODE_PRIVATE).getBoolean("iLikeHamburgers", false); return ctx.getSharedPreferences(GENERAL_PREFS_NAME, Context.MODE_PRIVATE).getBoolean("superSecretSettings", false);
}
public static void setEnableHamburgerMode(Context ctx, boolean enable) {
ctx.getSharedPreferences(GENERAL_PREFS_NAME, Context.MODE_PRIVATE).edit().putBoolean("hamburgerMode", enable).apply();
}
public static boolean isHamburgerModeEnabled(Context ctx) {
return ctx.getSharedPreferences(GENERAL_PREFS_NAME, Context.MODE_PRIVATE).getBoolean("hamburgerMode", false);
}
public static void setEnableCringeIcon(Context ctx, boolean enable) {
ctx.getSharedPreferences(GENERAL_PREFS_NAME, Context.MODE_PRIVATE).edit().putBoolean("cringeIcon", enable).apply();
}
public static boolean isCringeIconEnabled(Context ctx) {
return ctx.getSharedPreferences(GENERAL_PREFS_NAME, Context.MODE_PRIVATE).getBoolean("cringeIcon", false);
} }
} }

View File

@ -14,6 +14,7 @@ public enum Theme {
BLUE_YELLOW(R.string.theme_blue_yellow, R.style.Theme_CringeAuthenticator_Blue_Yellow, R.drawable.background_blue_yellow_light, R.drawable.background_blue_yellow), BLUE_YELLOW(R.string.theme_blue_yellow, R.style.Theme_CringeAuthenticator_Blue_Yellow, R.drawable.background_blue_yellow_light, R.drawable.background_blue_yellow),
GREEN_YELLOW(R.string.theme_green_yellow, R.style.Theme_CringeAuthenticator_Green_Yellow, R.drawable.background_green_yellow_light, R.drawable.background_green_yellow), GREEN_YELLOW(R.string.theme_green_yellow, R.style.Theme_CringeAuthenticator_Green_Yellow, R.drawable.background_green_yellow_light, R.drawable.background_green_yellow),
ORANGE_TURQUOISE(R.string.theme_orange_turquoise, R.style.Theme_CringeAuthenticator_Orange_Turquoise, R.drawable.background_orange_turquoise_light, R.drawable.background_orange_turquoise), ORANGE_TURQUOISE(R.string.theme_orange_turquoise, R.style.Theme_CringeAuthenticator_Orange_Turquoise, R.drawable.background_orange_turquoise_light, R.drawable.background_orange_turquoise),
KETCHUP_MUSTARD(R.string.theme_ketchup_mustard, R.style.Theme_CringeAuthenticator_Ketchup_Mustard, R.drawable.background_red_blue_light, R.drawable.background_red_blue),
; ;
@StringRes @StringRes

View File

@ -206,6 +206,40 @@
android:text="@string/settings_icon_packs_manage" android:text="@string/settings_icon_packs_manage"
android:textAllCaps="false" /> android:textAllCaps="false" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginVertical="10dp"
android:background="@drawable/theme_gradient" />
<LinearLayout
android:id="@+id/settings_super_secret_settings"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/settings_super_secret_settings"
android:gravity="center"
android:textSize="16sp"
android:textStyle="bold" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/settings_hamburger_mode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/settings_hamburger_mode" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/settings_use_cringe_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/settings_cringe_icon" />
</LinearLayout>
<Space <Space
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="76dp" /> android:layout_height="76dp" />

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_cringe_background"/>
<foreground android:drawable="@mipmap/ic_launcher_cringe_foreground"/>
</adaptive-icon>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_cringe_background"/>
<foreground android:drawable="@mipmap/ic_launcher_cringe_foreground"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -169,4 +169,9 @@
<string name="biometric_encryption_unavailable">Biometrische Authentifizierung ist deaktiviert, da sie auf deinem Gerät nicht eingerichtet oder nicht verfügbar ist</string> <string name="biometric_encryption_unavailable">Biometrische Authentifizierung ist deaktiviert, da sie auf deinem Gerät nicht eingerichtet oder nicht verfügbar ist</string>
<string name="locale_system_default">Systemstandard</string> <string name="locale_system_default">Systemstandard</string>
<string name="no_groups">Es existieren momentan keine Gruppen. Öffne das Menü und drücke auf das \'+\'-Symbol, um eine Gruppe zu erstellen</string> <string name="no_groups">Es existieren momentan keine Gruppen. Öffne das Menü und drücke auf das \'+\'-Symbol, um eine Gruppe zu erstellen</string>
<string name="theme_ketchup_mustard">Ketchup/Senf</string>
<string name="super_secret_settings_unlocked">Supergeheime Einstellungen wurden freigeschaltet</string>
<string name="settings_super_secret_settings">Supergeheime Einstellungen</string>
<string name="settings_hamburger_mode">Ich mag Hamburger 🍔</string>
<string name="settings_cringe_icon">Extra-Cringe-Symbol verwenden</string>
</resources> </resources>

View File

@ -155,4 +155,9 @@
<string name="biometric_encryption_unavailable">L\'authentification biométrique est désactivée car elle n\'est pas configurée ou n\'est pas disponible sur votre appareil.</string> <string name="biometric_encryption_unavailable">L\'authentification biométrique est désactivée car elle n\'est pas configurée ou n\'est pas disponible sur votre appareil.</string>
<string name="locale_system_default">Défaut du système</string> <string name="locale_system_default">Défaut du système</string>
<string name="no_groups">Il n\'existe pas encore de groupe. Ouvrez le menu et appuyez sur le bouton \"+\" pour en créer un.</string> <string name="no_groups">Il n\'existe pas encore de groupe. Ouvrez le menu et appuyez sur le bouton \"+\" pour en créer un.</string>
<string name="theme_ketchup_mustard">Ketchup/Moutarde</string>
<string name="super_secret_settings_unlocked">Les paramètres super secrets ont été débloqués</string>
<string name="settings_super_secret_settings">Paramètres super secrets</string>
<string name="settings_hamburger_mode">J\'aime les hamburgers 🍔</string>
<string name="settings_cringe_icon">Utiliser l\'icône de l\'humour supplémentaire</string>
</resources> </resources>

View File

@ -155,4 +155,9 @@
<string name="biometric_encryption_unavailable">Uwierzytelnianie biometryczne jest wyłączone, ponieważ nie zostało skonfigurowane lub nie jest dostępne na urządzeniu.Uwierzytelnianie biometryczne jest wyłączone, ponieważ nie zostało skonfigurowane lub nie jest dostępne na urządzeniu.</string> <string name="biometric_encryption_unavailable">Uwierzytelnianie biometryczne jest wyłączone, ponieważ nie zostało skonfigurowane lub nie jest dostępne na urządzeniu.Uwierzytelnianie biometryczne jest wyłączone, ponieważ nie zostało skonfigurowane lub nie jest dostępne na urządzeniu.</string>
<string name="locale_system_default">Domyślne ustawienia systemu</string> <string name="locale_system_default">Domyślne ustawienia systemu</string>
<string name="no_groups">Nie istnieją jeszcze żadne grupy. Otwórz menu i naciśnij przycisk \"+\", aby ją utworzyć.</string> <string name="no_groups">Nie istnieją jeszcze żadne grupy. Otwórz menu i naciśnij przycisk \"+\", aby ją utworzyć.</string>
<string name="theme_ketchup_mustard">Ketchup/Musztarda</string>
<string name="super_secret_settings_unlocked">Super tajne ustawienia zostały odblokowane</string>
<string name="settings_super_secret_settings">Super tajne ustawienia</string>
<string name="settings_hamburger_mode">Lubię hamburgery 🍔</string>
<string name="settings_cringe_icon">Użyj dodatkowej ikony cringe</string>
</resources> </resources>

View File

@ -155,4 +155,9 @@
<string name="biometric_encryption_unavailable">Біометрична автентифікація вимкнена, оскільки вона не налаштована або недоступна на вашому пристрої</string> <string name="biometric_encryption_unavailable">Біометрична автентифікація вимкнена, оскільки вона не налаштована або недоступна на вашому пристрої</string>
<string name="locale_system_default">Система за замовчуванням</string> <string name="locale_system_default">Система за замовчуванням</string>
<string name="no_groups">Ще не існує жодної групи. Відкрийте меню і натисніть кнопку \"+\", щоб створити групу</string> <string name="no_groups">Ще не існує жодної групи. Відкрийте меню і натисніть кнопку \"+\", щоб створити групу</string>
<string name="theme_ketchup_mustard">Кетчуп/гірчиця</string>
<string name="super_secret_settings_unlocked">Суперсекретні налаштування розблоковано</string>
<string name="settings_super_secret_settings">Суперсекретні налаштування</string>
<string name="settings_hamburger_mode">Я люблю гамбургери 🍔</string>
<string name="settings_cringe_icon">Використовуйте додаткову піктограму обтиснення</string>
</resources> </resources>

View File

@ -16,4 +16,6 @@
<color name="color_yellow">#FFE500</color> <color name="color_yellow">#FFE500</color>
<color name="color_turquoise">#00FFF7</color> <color name="color_turquoise">#00FFF7</color>
<color name="color_green">#00FF0A</color> <color name="color_green">#00FF0A</color>
<color name="color_pure_red">#FF0000</color>
<color name="color_pure_yellow">#FFFF00</color>
</resources> </resources>

View File

@ -82,6 +82,7 @@
<string name="theme_blue_yellow">Blue/Yellow</string> <string name="theme_blue_yellow">Blue/Yellow</string>
<string name="theme_green_yellow">Green/Yellow</string> <string name="theme_green_yellow">Green/Yellow</string>
<string name="theme_orange_turquoise">Orange/Turquoise</string> <string name="theme_orange_turquoise">Orange/Turquoise</string>
<string name="theme_ketchup_mustard">Ketchup/Mustard</string>
<string name="appearance_dark">Dark</string> <string name="appearance_dark">Dark</string>
<string name="appearance_light">Light</string> <string name="appearance_light">Light</string>
<string name="appearance_follow_system">System default</string> <string name="appearance_follow_system">System default</string>
@ -186,4 +187,8 @@
<item>Rename imported</item> <item>Rename imported</item>
</string-array> </string-array>
<string name="language">Language</string> <string name="language">Language</string>
<string name="super_secret_settings_unlocked">Super secret settings have been unlocked</string>
<string name="settings_super_secret_settings">Super Secret Settings</string>
<string name="settings_hamburger_mode">I like hamburgers 🍔</string>
<string name="settings_cringe_icon">Use extra cringe icon</string>
</resources> </resources>

View File

@ -50,6 +50,10 @@
<item name="colorTheme1">@color/color_orange</item> <item name="colorTheme1">@color/color_orange</item>
<item name="colorTheme2">@color/color_turquoise</item> <item name="colorTheme2">@color/color_turquoise</item>
</style> </style>
<style name="Theme.CringeAuthenticator.Ketchup_Mustard">
<item name="colorTheme1">@color/color_pure_red</item>
<item name="colorTheme2">@color/color_pure_yellow</item>
</style>
<style name="Theme.CringeAuthenticator.Minimalist" parent=""> <style name="Theme.CringeAuthenticator.Minimalist" parent="">
<item name="dialogBackground">?android:attr/colorBackground</item> <item name="dialogBackground">?android:attr/colorBackground</item>
<item name="menuBackground">?android:attr/colorBackground</item> <item name="menuBackground">?android:attr/colorBackground</item>