Don't look at this commit, it'll spoil the secret 🤫
@ -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'
|
||||||
|
|
||||||
|
@ -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" >
|
||||||
|
BIN
app/src/main/ic_launcher_cringe-playstore.png
Normal file
After Width: | Height: | Size: 316 KiB |
@ -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()) {
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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" />
|
||||||
|
@ -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>
|
@ -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>
|
BIN
app/src/main/res/mipmap-hdpi/ic_launcher_cringe.webp
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
app/src/main/res/mipmap-hdpi/ic_launcher_cringe_background.webp
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
app/src/main/res/mipmap-hdpi/ic_launcher_cringe_foreground.webp
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
app/src/main/res/mipmap-hdpi/ic_launcher_cringe_round.webp
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
app/src/main/res/mipmap-mdpi/ic_launcher_cringe.webp
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
app/src/main/res/mipmap-mdpi/ic_launcher_cringe_background.webp
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
app/src/main/res/mipmap-mdpi/ic_launcher_cringe_foreground.webp
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
app/src/main/res/mipmap-mdpi/ic_launcher_cringe_round.webp
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_cringe.webp
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_cringe_background.webp
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_cringe_foreground.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_cringe_round.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_cringe.webp
Normal file
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 22 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_cringe_round.webp
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_cringe.webp
Normal file
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 38 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_cringe_round.webp
Normal file
After Width: | Height: | Size: 32 KiB |
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
||||||
|