diff --git a/app/build.gradle b/app/build.gradle
index 4f5b7dee..71b0aff6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,15 +1,15 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 30
+ compileSdkVersion 31
buildToolsVersion '30.0.3'
ndkVersion '17.2.4988734'
defaultConfig {
applicationId "com.m2049r.xmrwallet"
minSdkVersion 21
- targetSdkVersion 30
- versionCode 1301
- versionName "2.3.1 'Doménikos'"
+ targetSdkVersion 31
+ versionCode 1303
+ versionName "2.3.3 'Baldaŭ'"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
@@ -120,38 +120,39 @@ static def getId(name) {
}
dependencies {
- implementation 'androidx.core:core:1.6.0'
- implementation 'androidx.appcompat:appcompat:1.3.1'
- implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.core:core:1.7.0'
+ implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.cardview:cardview:1.0.0'
- implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01'
- implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
+ implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
+ implementation 'androidx.preference:preference:1.2.0'
+
+ implementation 'com.google.android.material:material:1.5.0'
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
- implementation "com.squareup.okhttp3:okhttp:4.9.0"
- implementation "io.github.rburgst:okhttp-digest:2.5"
- implementation "com.jakewharton.timber:timber:4.7.1"
+ implementation "com.squareup.okhttp3:okhttp:4.9.3"
+ implementation "io.github.rburgst:okhttp-digest:2.6"
+ implementation "com.jakewharton.timber:timber:5.0.1"
implementation 'info.guardianproject.netcipher:netcipher:2.1.0'
//implementation 'info.guardianproject.netcipher:netcipher-okhttp3:2.1.0'
implementation fileTree(dir: 'libs/classes', include: ['*.jar'])
- implementation 'com.nulab-inc:zxcvbn:1.3.0'
+ implementation 'com.nulab-inc:zxcvbn:1.5.2'
implementation 'dnsjava:dnsjava:2.1.9'
implementation 'org.jitsi:dnssecjava:1.2.0'
- implementation 'org.slf4j:slf4j-nop:1.7.30'
+ implementation 'org.slf4j:slf4j-nop:1.7.36'
implementation 'com.github.brnunes:swipeablerecyclerview:1.0.2'
//noinspection GradleDependency
- testImplementation "junit:junit:$rootProject.ext.junitVersion"
- testImplementation "org.mockito:mockito-all:$rootProject.ext.mockitoVersion"
- testImplementation "com.squareup.okhttp3:mockwebserver:4.9.0"
- testImplementation 'org.json:json:20180813'
- testImplementation 'net.jodah:concurrentunit:0.4.4'
+ testImplementation "junit:junit:4.13.2"
+ testImplementation "org.mockito:mockito-all:1.10.19"
+ testImplementation "com.squareup.okhttp3:mockwebserver:4.9.3"
+ testImplementation 'org.json:json:20211205'
+ testImplementation 'net.jodah:concurrentunit:0.4.6'
- compileOnly 'org.projectlombok:lombok:1.18.16'
- annotationProcessor 'org.projectlombok:lombok:1.18.16'
+ compileOnly 'org.projectlombok:lombok:1.18.22'
+ annotationProcessor 'org.projectlombok:lombok:1.18.22'
}
-
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 017212ec..6056bba3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,7 +18,6 @@
-
@@ -36,15 +35,17 @@
android:label="@string/app_name"
android:preserveLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/MyMaterialTheme"
+ android:theme="@style/MyMaterialThemeClassic"
android:usesCleartextTraffic="true">
+
@@ -56,24 +57,25 @@
android:screenOrientation="behind" />
-
+
-
+
@@ -106,4 +108,5 @@
android:resource="@xml/filepaths" />
-
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java b/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java
index b72c35bc..1f1f9b19 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java
@@ -27,6 +27,7 @@ import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.Ndef;
import android.os.AsyncTask;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -180,7 +181,7 @@ public class BaseActivity extends SecureActivity
return;
nfcPendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
- 0);
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.FLAG_IMMUTABLE : 0);
}
private void processNfcIntent(Intent intent) {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/GenerateFragment.java b/app/src/main/java/com/m2049r/xmrwallet/GenerateFragment.java
index 42fe137b..6370e99d 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/GenerateFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/GenerateFragment.java
@@ -36,7 +36,6 @@ import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.LinearLayout;
-import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
@@ -58,7 +57,6 @@ import com.m2049r.xmrwallet.widget.Toolbar;
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.util.Objects;
import timber.log.Timber;
@@ -299,10 +297,10 @@ public class GenerateFragment extends Fragment {
if (etSeedOffset.getVisibility() == View.VISIBLE) {
etSeedOffset.getEditText().getText().clear();
etSeedOffset.setVisibility(View.GONE);
- bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_baseline_keyboard_arrow_down_24, 0, 0, 0);
+ bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_keyboard_arrow_down, 0, 0, 0);
} else {
etSeedOffset.setVisibility(View.VISIBLE);
- bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_baseline_keyboard_arrow_up_24, 0, 0, 0);
+ bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_keyboard_arrow_up, 0, 0, 0);
etSeedOffset.requestFocusFromTouch();
}
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/GenerateReviewFragment.java b/app/src/main/java/com/m2049r/xmrwallet/GenerateReviewFragment.java
index 368317cb..cb40b843 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/GenerateReviewFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/GenerateReviewFragment.java
@@ -46,7 +46,6 @@ import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import com.google.android.material.progressindicator.CircularProgressIndicator;
import com.google.android.material.switchmaterial.SwitchMaterial;
import com.google.android.material.textfield.TextInputLayout;
import com.m2049r.xmrwallet.ledger.Ledger;
@@ -200,10 +199,10 @@ public class GenerateReviewFragment extends Fragment {
void toggleAdvancedInfo() {
if (llAdvancedInfo.getVisibility() == View.VISIBLE) {
llAdvancedInfo.setVisibility(View.GONE);
- bAdvancedInfo.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_baseline_keyboard_arrow_down_24, 0, 0, 0);
+ bAdvancedInfo.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_keyboard_arrow_down, 0, 0, 0);
} else {
llAdvancedInfo.setVisibility(View.VISIBLE);
- bAdvancedInfo.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_baseline_keyboard_arrow_up_24, 0, 0, 0);
+ bAdvancedInfo.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_keyboard_arrow_up, 0, 0, 0);
scrollview.post(() -> scrollview.fullScroll(ScrollView.FOCUS_DOWN));
}
}
@@ -212,10 +211,10 @@ public class GenerateReviewFragment extends Fragment {
if (etSeedOffset.getVisibility() == View.VISIBLE) {
etSeedOffset.getEditText().getText().clear();
etSeedOffset.setVisibility(View.GONE);
- bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_baseline_keyboard_arrow_down_24, 0, 0, 0);
+ bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_keyboard_arrow_down, 0, 0, 0);
} else {
etSeedOffset.setVisibility(View.VISIBLE);
- bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_baseline_keyboard_arrow_up_24, 0, 0, 0);
+ bSeedOffset.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_keyboard_arrow_up, 0, 0, 0);
etSeedOffset.requestFocusFromTouch();
}
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java
index 0b630175..418dfb96 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java
@@ -26,6 +26,7 @@ import android.content.SharedPreferences;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.os.AsyncTask;
+import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -39,7 +40,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.app.AppCompatDelegate;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
@@ -49,24 +49,19 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.m2049r.xmrwallet.data.DefaultNodes;
import com.m2049r.xmrwallet.data.Node;
import com.m2049r.xmrwallet.data.NodeInfo;
-import com.m2049r.xmrwallet.dialog.AboutFragment;
import com.m2049r.xmrwallet.dialog.CreditsFragment;
import com.m2049r.xmrwallet.dialog.HelpFragment;
-import com.m2049r.xmrwallet.dialog.PrivacyFragment;
import com.m2049r.xmrwallet.ledger.Ledger;
import com.m2049r.xmrwallet.ledger.LedgerProgressDialog;
import com.m2049r.xmrwallet.model.NetworkType;
import com.m2049r.xmrwallet.model.Wallet;
import com.m2049r.xmrwallet.model.WalletManager;
import com.m2049r.xmrwallet.service.WalletService;
-import com.m2049r.xmrwallet.util.DayNightMode;
import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.util.KeyStoreHelper;
import com.m2049r.xmrwallet.util.LegacyStorageHelper;
-import com.m2049r.xmrwallet.util.LocaleHelper;
import com.m2049r.xmrwallet.util.MoneroThreadPoolExecutor;
import com.m2049r.xmrwallet.util.NetCipherHelper;
-import com.m2049r.xmrwallet.util.NightmodeHelper;
import com.m2049r.xmrwallet.util.ThemeHelper;
import com.m2049r.xmrwallet.util.ZipBackup;
import com.m2049r.xmrwallet.util.ZipRestore;
@@ -77,12 +72,8 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashSet;
-import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -90,7 +81,8 @@ import timber.log.Timber;
public class LoginActivity extends BaseActivity
implements LoginFragment.Listener, GenerateFragment.Listener,
- GenerateReviewFragment.Listener, GenerateReviewFragment.AcceptListener, NodeFragment.Listener {
+ GenerateReviewFragment.Listener, GenerateReviewFragment.AcceptListener,
+ NodeFragment.Listener, SettingsFragment.Listener {
private static final String GENERATE_STACK = "gen";
private static final String NODES_PREFS_NAME = "nodes";
@@ -293,6 +285,7 @@ public class LoginActivity extends BaseActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
Timber.d("onCreate()");
+ ThemeHelper.setPreferred(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
@@ -308,8 +301,8 @@ public class LoginActivity extends BaseActivity
case Toolbar.BUTTON_CLOSE:
finish();
break;
- case Toolbar.BUTTON_CREDITS:
- CreditsFragment.display(getSupportFragmentManager());
+ case Toolbar.BUTTON_SETTINGS:
+ startSettingsFragment();
break;
case Toolbar.BUTTON_NONE:
break;
@@ -785,6 +778,11 @@ public class LoginActivity extends BaseActivity
Timber.d("NodeFragment placed");
}
+ void startSettingsFragment() {
+ replaceFragment(new SettingsFragment(), null, null);
+ Timber.d("SettingsFragment placed");
+ }
+
void replaceFragment(Fragment newFragment, String stackName, Bundle extras) {
if (extras != null) {
newFragment.setArguments(extras);
@@ -1089,61 +1087,6 @@ public class LoginActivity extends BaseActivity
}
}
- public void onChangeLocale() {
- final ArrayList availableLocales = LocaleHelper.getAvailableLocales(LoginActivity.this);
- Collections.sort(availableLocales, (locale1, locale2) -> {
- String localeString1 = LocaleHelper.getDisplayName(locale1, true);
- String localeString2 = LocaleHelper.getDisplayName(locale2, true);
- return localeString1.compareTo(localeString2);
- });
-
- String[] localeDisplayNames = new String[1 + availableLocales.size()];
- localeDisplayNames[0] = getString(R.string.language_system_default);
- for (int i = 1; i < localeDisplayNames.length; i++) {
- localeDisplayNames[i] = LocaleHelper.getDisplayName(availableLocales.get(i - 1), true);
- }
-
- int currentLocaleIndex = 0;
- String currentLocaleTag = LocaleHelper.getPreferredLanguageTag(LoginActivity.this);
- if (!currentLocaleTag.isEmpty()) {
- Locale currentLocale = Locale.forLanguageTag(currentLocaleTag);
- String currentLocaleName = LocaleHelper.getDisplayName(currentLocale, true);
- currentLocaleIndex = Arrays.asList(localeDisplayNames).indexOf(currentLocaleName);
- if (currentLocaleIndex < 0) currentLocaleIndex = 0;
- }
-
- AlertDialog.Builder builder = new MaterialAlertDialogBuilder(LoginActivity.this);
- builder.setTitle(getString(R.string.menu_language));
- builder.setSingleChoiceItems(localeDisplayNames, currentLocaleIndex, (dialog, i) -> {
- dialog.dismiss();
-
- LocaleHelper.setAndSaveLocale(this,
- (i == 0) ? "" : availableLocales.get(i - 1).toLanguageTag());
- startActivity(getIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
- });
- builder.show();
- }
-
- public void onChangeTheme() {
- final DayNightMode currentDayNightSetting = DayNightMode.getValue(AppCompatDelegate.getDefaultNightMode());
- // selection will be empty if UNKNOWN
-
- AlertDialog.Builder builder = new MaterialAlertDialogBuilder(LoginActivity.this);
- builder.setTitle(getString(R.string.menu_daynight));
-
- String[] modeNames = getResources().getStringArray(R.array.daynight_themes);
-
- builder.setSingleChoiceItems(modeNames, currentDayNightSetting.ordinal(), (dialog, i) -> {
- dialog.dismiss();
- final DayNightMode mode = DayNightMode.values()[i];
- if (currentDayNightSetting != mode) {
- NightmodeHelper.setAndSavePreferredNightmode(LoginActivity.this, mode);
- LoginActivity.this.recreate();
- }
- });
- builder.show();
- }
-
@Override
public void onBackPressed() {
Fragment f = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
@@ -1192,9 +1135,6 @@ public class LoginActivity extends BaseActivity
} else if (id == R.id.action_details_changepw) {
onWalletChangePassword();
return true;
- } else if (id == R.id.action_license_info) {
- AboutFragment.display(getSupportFragmentManager());
- return true;
} else if (id == R.id.action_help_list) {
HelpFragment.display(getSupportFragmentManager(), R.string.help_list);
return true;
@@ -1208,18 +1148,6 @@ public class LoginActivity extends BaseActivity
((NodeFragment) f).restoreDefaultNodes();
}
return true;
- } else if (id == R.id.action_privacy_policy) {
- PrivacyFragment.display(getSupportFragmentManager());
- return true;
- } else if (id == R.id.action_language) {
- onChangeLocale();
- return true;
- } else if (id == R.id.action_theme) {
- onChangeTheme();
- return true;
- } else if (id == R.id.action_restore) {
- onWalletRestore();
- return true;
} else if (id == R.id.action_ledger_seed) {
Fragment f = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (f instanceof GenerateFragment) {
@@ -1333,7 +1261,8 @@ public class LoginActivity extends BaseActivity
registerReceiver(usbPermissionReceiver, new IntentFilter(ACTION_USB_PERMISSION));
usbManager.requestPermission(device,
PendingIntent.getBroadcast(this, 0,
- new Intent(ACTION_USB_PERMISSION), 0));
+ new Intent(ACTION_USB_PERMISSION),
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.FLAG_IMMUTABLE : 0));
}
} else {
Timber.d("no ledger device found");
diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java b/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java
index 4841639d..21b85bef 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/LoginFragment.java
@@ -38,7 +38,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
@@ -53,6 +52,7 @@ import com.m2049r.xmrwallet.util.KeyStoreHelper;
import com.m2049r.xmrwallet.util.NetCipherHelper;
import com.m2049r.xmrwallet.util.NodePinger;
import com.m2049r.xmrwallet.util.Notice;
+import com.m2049r.xmrwallet.util.ThemeHelper;
import com.m2049r.xmrwallet.widget.Toolbar;
import java.io.File;
@@ -143,7 +143,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
super.onResume();
Timber.d("onResume() %s", activityCallback.getFavouriteNodes().size());
activityCallback.setTitle(null);
- activityCallback.setToolbarButton(Toolbar.BUTTON_CREDITS);
+ activityCallback.setToolbarButton(Toolbar.BUTTON_SETTINGS);
activityCallback.showNet();
showNetwork();
//activityCallback.runOnNetCipher(this::pingSelectedNode);
@@ -163,12 +163,14 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
fabView = view.findViewById(R.id.fabView);
fabKey = view.findViewById(R.id.fabKey);
fabSeed = view.findViewById(R.id.fabSeed);
+ fabImport = view.findViewById(R.id.fabImport);
fabLedger = view.findViewById(R.id.fabLedger);
fabNewL = view.findViewById(R.id.fabNewL);
fabViewL = view.findViewById(R.id.fabViewL);
fabKeyL = view.findViewById(R.id.fabKeyL);
fabSeedL = view.findViewById(R.id.fabSeedL);
+ fabImportL = view.findViewById(R.id.fabImportL);
fabLedgerL = view.findViewById(R.id.fabLedgerL);
fab_pulse = AnimationUtils.loadAnimation(getContext(), R.anim.fab_pulse);
@@ -183,6 +185,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
fabView.setOnClickListener(this);
fabKey.setOnClickListener(this);
fabSeed.setOnClickListener(this);
+ fabImport.setOnClickListener(this);
fabLedger.setOnClickListener(this);
fabScreen.setOnClickListener(this);
@@ -294,9 +297,9 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
}
private boolean isFabOpen = false;
- private FloatingActionButton fab, fabNew, fabView, fabKey, fabSeed, fabLedger;
- private FrameLayout fabScreen;
- private RelativeLayout fabNewL, fabViewL, fabKeyL, fabSeedL, fabLedgerL;
+ private FloatingActionButton fab, fabNew, fabView, fabKey, fabSeed, fabImport, fabLedger;
+ private RelativeLayout fabScreen;
+ private RelativeLayout fabNewL, fabViewL, fabKeyL, fabSeedL, fabImportL, fabLedgerL;
private Animation fab_open, fab_close, rotate_forward, rotate_backward, fab_open_screen, fab_close_screen;
private Animation fab_pulse;
@@ -321,6 +324,8 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
fabKey.setClickable(false);
fabSeedL.startAnimation(fab_close);
fabSeed.setClickable(false);
+ fabImportL.startAnimation(fab_close);
+ fabImport.setClickable(false);
}
isFabOpen = false;
} else { // open the fab
@@ -333,6 +338,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
fabViewL.setVisibility(View.GONE);
fabKeyL.setVisibility(View.GONE);
fabSeedL.setVisibility(View.GONE);
+ fabImportL.setVisibility(View.GONE);
fabLedgerL.startAnimation(fab_open);
fabLedger.setClickable(true);
@@ -342,6 +348,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
fabViewL.setVisibility(View.VISIBLE);
fabKeyL.setVisibility(View.VISIBLE);
fabSeedL.setVisibility(View.VISIBLE);
+ fabImportL.setVisibility(View.VISIBLE);
fabNewL.startAnimation(fab_open);
fabNew.setClickable(true);
@@ -351,6 +358,8 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
fabKey.setClickable(true);
fabSeedL.startAnimation(fab_open);
fabSeed.setClickable(true);
+ fabImportL.startAnimation(fab_open);
+ fabImport.setClickable(true);
}
isFabOpen = true;
}
@@ -375,6 +384,9 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
} else if (id == R.id.fabSeed) {
animateFAB();
activityCallback.onAddWallet(GenerateFragment.TYPE_SEED);
+ } else if (id == R.id.fabImport) {
+ animateFAB();
+ activityCallback.onWalletRestore();
} else if (id == R.id.fabLedger) {
Timber.d("FAB_LEDGER");
animateFAB();
@@ -403,8 +415,8 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
private void setSubtext(String status) {
final Context ctx = getContext();
final Spanned text = Html.fromHtml(ctx.getString(R.string.status,
- Integer.toHexString(ContextCompat.getColor(ctx, R.color.monerujoGreen) & 0xFFFFFF),
- Integer.toHexString(ContextCompat.getColor(ctx, R.color.monerujoBackground) & 0xFFFFFF),
+ Integer.toHexString(ThemeHelper.getThemedColor(ctx, R.attr.positiveColor) & 0xFFFFFF),
+ Integer.toHexString(ThemeHelper.getThemedColor(ctx, android.R.attr.colorBackground) & 0xFFFFFF),
status, ""));
tvNodeInfo.setText(text);
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java b/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java
index 48af0529..06621ff7 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java
@@ -46,10 +46,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.widget.ShareActionProvider;
-import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
-import androidx.core.view.MenuItemCompat;
import androidx.fragment.app.Fragment;
import com.google.android.material.textfield.TextInputLayout;
@@ -89,6 +86,7 @@ public class ReceiveFragment extends Fragment {
private ImageView ivQrCodeFull;
private EditText etDummy;
private ImageButton bCopyAddress;
+ private MenuItem shareItem;
private Wallet wallet = null;
private boolean isMyWallet = false;
@@ -128,6 +126,7 @@ public class ReceiveFragment extends Fragment {
evAmount.setOnNewAmountListener(xmr -> {
Timber.d("new amount = %s", xmr);
generateQr();
+ if (shareRequested && (xmr != null)) share();
});
evAmount.setOnFailedExchangeListener(() -> {
@@ -211,39 +210,38 @@ public class ReceiveFragment extends Fragment {
setSharedElementEnterTransition(transform);
}
- private ShareActionProvider shareActionProvider;
+ private boolean shareRequested = false;
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, final MenuInflater inflater) {
inflater.inflate(R.menu.receive_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
- // Locate MenuItem with ShareActionProvider
- MenuItem item = menu.findItem(R.id.menu_item_share);
-
- // Fetch and store ShareActionProvider
- shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
-
- shareActionProvider.setOnShareTargetSelectedListener(new ShareActionProvider.OnShareTargetSelectedListener() {
- @Override
- public boolean onShareTargetSelected(ShareActionProvider shareActionProvider, Intent intent) {
- saveQrCode(); // save it only if we need it
- return false;
+ shareItem = menu.findItem(R.id.menu_item_share);
+ shareItem.setOnMenuItemClickListener(item -> {
+ if (shareRequested) return true;
+ shareRequested = true;
+ if (!qrValid) {
+ evAmount.doExchange();
+ } else {
+ share();
}
+ return true;
});
}
- private void setShareIntent() {
- if (shareActionProvider != null) {
- if (qrValid) {
- shareActionProvider.setShareIntent(getShareIntent());
- } else {
- shareActionProvider.setShareIntent(null);
- }
+ private void share() {
+ shareRequested = false;
+ if (saveQrCode()) {
+ final Intent sendIntent = getSendIntent();
+ if (sendIntent != null)
+ startActivity(Intent.createChooser(sendIntent, null));
+ } else {
+ Toast.makeText(getActivity(), getString(R.string.message_qr_failed), Toast.LENGTH_SHORT).show();
}
}
- private void saveQrCode() {
+ private boolean saveQrCode() {
if (!qrValid) throw new IllegalStateException("trying to save null qr code!");
File cachePath = new File(getActivity().getCacheDir(), "images");
@@ -255,33 +253,35 @@ public class ReceiveFragment extends Fragment {
Bitmap qrBitmap = ((BitmapDrawable) ivQrCode.getDrawable()).getBitmap();
qrBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
stream.close();
+ return true;
} catch (IOException ex) {
Timber.e(ex);
// make sure we don't share an old qr code
if (!png.delete()) throw new IllegalStateException("cannot delete old qr code");
// if we manage to delete it, the URI points to nothing and the user gets a toast with the error
}
+ return false;
}
- private Intent getShareIntent() {
- File imagePath = new File(getActivity().getCacheDir(), "images");
+ private Intent getSendIntent() {
+ File imagePath = new File(requireActivity().getCacheDir(), "images");
File png = new File(imagePath, "QR.png");
- Uri contentUri = FileProvider.getUriForFile(getActivity(),
- BuildConfig.APPLICATION_ID + ".fileprovider", png);
+ Uri contentUri = FileProvider.getUriForFile(requireActivity(), BuildConfig.APPLICATION_ID + ".fileprovider", png);
if (contentUri != null) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // temp permission for receiving app to read this file
- shareIntent.setDataAndType(contentUri, getActivity().getContentResolver().getType(contentUri));
+ shareIntent.setTypeAndNormalize("image/png");
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
- shareIntent.putExtra(Intent.EXTRA_TEXT, bcData.getUriString());
+ if (bcData != null)
+ shareIntent.putExtra(Intent.EXTRA_TEXT, bcData.getUriString());
return shareIntent;
}
return null;
}
void copyAddress() {
- Helper.clipBoardCopy(Objects.requireNonNull(getActivity()), getString(R.string.label_copy_address), subaddress.getAddress());
+ Helper.clipBoardCopy(requireActivity(), getString(R.string.label_copy_address), subaddress.getAddress());
Toast.makeText(getActivity(), getString(R.string.message_copy_address), Toast.LENGTH_SHORT).show();
}
@@ -291,7 +291,6 @@ public class ReceiveFragment extends Fragment {
if (qrValid) {
ivQrCode.setImageBitmap(null);
qrValid = false;
- setShareIntent();
if (isLoaded)
tvQrCode.setVisibility(View.VISIBLE);
}
@@ -300,7 +299,6 @@ public class ReceiveFragment extends Fragment {
void setQR(Bitmap qr) {
ivQrCode.setImageBitmap(qr);
qrValid = true;
- setShareIntent();
tvQrCode.setVisibility(View.GONE);
}
@@ -462,8 +460,8 @@ public class ReceiveFragment extends Fragment {
subaddress = newSubaddress;
final Context context = getContext();
Spanned label = Html.fromHtml(context.getString(R.string.receive_subaddress,
- Integer.toHexString(ContextCompat.getColor(context, R.color.monerujoGreen) & 0xFFFFFF),
- Integer.toHexString(ContextCompat.getColor(context, R.color.monerujoBackground) & 0xFFFFFF),
+ Integer.toHexString(ThemeHelper.getThemedColor(context, R.attr.positiveColor) & 0xFFFFFF),
+ Integer.toHexString(ThemeHelper.getThemedColor(context, android.R.attr.colorBackground) & 0xFFFFFF),
subaddress.getDisplayLabel(), subaddress.getAddress()));
tvAddress.setText(label);
generateQr();
diff --git a/app/src/main/java/com/m2049r/xmrwallet/SecureActivity.java b/app/src/main/java/com/m2049r/xmrwallet/SecureActivity.java
index 23db732e..238aeea1 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/SecureActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/SecureActivity.java
@@ -66,11 +66,7 @@ public abstract class SecureActivity extends AppCompatActivity {
Locale locale = LocaleHelper.getPreferredLocale(this);
if (locale != null) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
- config.setLocale(locale);
- } else {
- config.locale = locale;
- }
+ config.setLocale(locale);
}
return config;
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/SettingsFragment.java b/app/src/main/java/com/m2049r/xmrwallet/SettingsFragment.java
new file mode 100644
index 00000000..6a4bb5ad
--- /dev/null
+++ b/app/src/main/java/com/m2049r/xmrwallet/SettingsFragment.java
@@ -0,0 +1,125 @@
+package com.m2049r.xmrwallet;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+
+import androidx.annotation.StyleRes;
+import androidx.preference.ListPreference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+
+import com.m2049r.xmrwallet.dialog.AboutFragment;
+import com.m2049r.xmrwallet.dialog.CreditsFragment;
+import com.m2049r.xmrwallet.dialog.PrivacyFragment;
+import com.m2049r.xmrwallet.util.DayNightMode;
+import com.m2049r.xmrwallet.util.LocaleHelper;
+import com.m2049r.xmrwallet.util.NightmodeHelper;
+import com.m2049r.xmrwallet.util.ThemeHelper;
+import com.m2049r.xmrwallet.widget.Toolbar;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Locale;
+
+import timber.log.Timber;
+
+public class SettingsFragment extends PreferenceFragmentCompat
+ implements SharedPreferences.OnSharedPreferenceChangeListener {
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ setPreferencesFromResource(R.xml.root_preferences, rootKey);
+
+ findPreference(getString(R.string.about_info)).setOnPreferenceClickListener(preference -> {
+ AboutFragment.display(getParentFragmentManager());
+ return true;
+ });
+ findPreference(getString(R.string.privacy_info)).setOnPreferenceClickListener(preference -> {
+ PrivacyFragment.display(getParentFragmentManager());
+ return true;
+ });
+ findPreference(getString(R.string.credits_info)).setOnPreferenceClickListener(preference -> {
+ CreditsFragment.display(getParentFragmentManager());
+ return true;
+ });
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ if (key.equals(getString(R.string.preferred_locale))) {
+ activity.recreate();
+ } else if (key.equals(getString(R.string.preferred_nightmode))) {
+ NightmodeHelper.setNightMode(DayNightMode.valueOf(sharedPreferences.getString(key, "AUTO")));
+ } else if (key.equals(getString(R.string.preferred_theme))) {
+ ThemeHelper.setTheme((Activity) activity, sharedPreferences.getString(key, "Classic"));
+ activity.recreate();
+ }
+ }
+
+ private SettingsFragment.Listener activity;
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ if (context instanceof SettingsFragment.Listener) {
+ activity = (SettingsFragment.Listener) context;
+ } else {
+ throw new ClassCastException(context + " must implement Listener");
+ }
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ Timber.d("onResume()");
+ activity.setSubtitle(getString(R.string.menu_settings));
+ activity.setToolbarButton(Toolbar.BUTTON_BACK);
+ populateLanguages();
+ PreferenceManager.getDefaultSharedPreferences(requireContext())
+ .registerOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ PreferenceManager.getDefaultSharedPreferences(requireContext())
+ .unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ public interface Listener {
+ void setToolbarButton(int type);
+
+ void setSubtitle(String title);
+
+ void recreate();
+
+ void setTheme(@StyleRes final int resId);
+ }
+
+ public void populateLanguages() {
+ ListPreference language = findPreference(getString(R.string.preferred_locale));
+ assert language != null;
+
+ final ArrayList availableLocales = LocaleHelper.getAvailableLocales(requireContext());
+ Collections.sort(availableLocales, (locale1, locale2) -> {
+ String localeString1 = LocaleHelper.getDisplayName(locale1, true);
+ String localeString2 = LocaleHelper.getDisplayName(locale2, true);
+ return localeString1.compareTo(localeString2);
+ });
+
+ String[] localeDisplayNames = new String[1 + availableLocales.size()];
+ localeDisplayNames[0] = getString(R.string.language_system_default);
+ for (int i = 1; i < localeDisplayNames.length; i++) {
+ localeDisplayNames[i] = LocaleHelper.getDisplayName(availableLocales.get(i - 1), true);
+ }
+ language.setEntries(localeDisplayNames);
+
+ String[] languageTags = new String[1 + availableLocales.size()];
+ languageTags[0] = "";
+ for (int i = 1; i < languageTags.length; i++) {
+ languageTags[i] = availableLocales.get(i - 1).toLanguageTag();
+ }
+ language.setEntryValues(languageTags);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java b/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java
index cca468a6..2160651b 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java
@@ -35,7 +35,6 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
-import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.google.android.material.transition.MaterialContainerTransform;
@@ -220,8 +219,8 @@ public class TxFragment extends Fragment {
final Context ctx = getContext();
Spanned label = Html.fromHtml(ctx.getString(R.string.tx_account_formatted,
info.accountIndex, info.addressIndex,
- Integer.toHexString(ContextCompat.getColor(ctx, R.color.monerujoGreen) & 0xFFFFFF),
- Integer.toHexString(ContextCompat.getColor(ctx, R.color.monerujoBackground) & 0xFFFFFF),
+ Integer.toHexString(ThemeHelper.getThemedColor(ctx, R.attr.positiveColor) & 0xFFFFFF),
+ Integer.toHexString(ThemeHelper.getThemedColor(ctx, android.R.attr.colorBackground) & 0xFFFFFF),
subaddress.getDisplayLabel()));
tvAccount.setText(label);
tvAccount.setOnClickListener(v -> activityCallback.showSubaddress(v, info.addressIndex));
@@ -266,13 +265,13 @@ public class TxFragment extends Fragment {
if (info.isFailed) {
tvTxAmount.setText(getString(R.string.tx_list_amount_failed, Wallet.getDisplayAmount(info.amount)));
tvTxFee.setText(getString(R.string.tx_list_failed_text));
- setTxColour(ContextCompat.getColor(getContext(), R.color.tx_failed));
+ setTxColour(ThemeHelper.getThemedColor(getContext(), R.attr.neutralColor));
} else if (info.isPending) {
- setTxColour(ContextCompat.getColor(getContext(), R.color.tx_pending));
+ setTxColour(ThemeHelper.getThemedColor(getContext(), R.attr.neutralColor));
} else if (info.direction == TransactionInfo.Direction.Direction_In) {
- setTxColour(ContextCompat.getColor(getContext(), R.color.tx_plus));
+ setTxColour(ThemeHelper.getThemedColor(getContext(), R.attr.positiveColor));
} else {
- setTxColour(ContextCompat.getColor(getContext(), R.color.tx_minus));
+ setTxColour(ThemeHelper.getThemedColor(getContext(), R.attr.negativeColor));
}
Set destinations = new HashSet<>();
StringBuilder sb = new StringBuilder();
diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
index 0ff49ee4..e4ae88ed 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
@@ -356,6 +356,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
@Override
protected void onCreate(Bundle savedInstanceState) {
Timber.d("onCreate()");
+ ThemeHelper.setPreferred(this);
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// activity restarted
@@ -385,7 +386,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
case Toolbar.BUTTON_CLOSE:
finish();
break;
- case Toolbar.BUTTON_CREDITS:
+ case Toolbar.BUTTON_SETTINGS:
Toast.makeText(WalletActivity.this, getString(R.string.label_credits), Toast.LENGTH_SHORT).show();
case Toolbar.BUTTON_NONE:
default:
@@ -940,6 +941,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
Timber.d("onRequestPermissionsResult()");
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == Helper.PERMISSIONS_REQUEST_CAMERA) { // If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java b/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java
index 58566144..c271ec0f 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java
@@ -52,6 +52,7 @@ import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.util.ServiceHelper;
+import com.m2049r.xmrwallet.util.ThemeHelper;
import com.m2049r.xmrwallet.widget.Toolbar;
import java.text.NumberFormat;
@@ -111,7 +112,8 @@ public class WalletFragment extends Fragment
llBalance = view.findViewById(R.id.llBalance);
flExchange = view.findViewById(R.id.flExchange);
((ProgressBar) view.findViewById(R.id.pbExchange)).getIndeterminateDrawable().
- setColorFilter(getResources().getColor(R.color.progress_circle),
+ setColorFilter(
+ ThemeHelper.getThemedColor(getContext(), R.attr.colorPrimaryVariant),
android.graphics.PorterDuff.Mode.MULTIPLY);
tvProgress = view.findViewById(R.id.tvProgress);
diff --git a/app/src/main/java/com/m2049r/xmrwallet/XmrWalletApplication.java b/app/src/main/java/com/m2049r/xmrwallet/XmrWalletApplication.java
index 5257f141..3762fb18 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/XmrWalletApplication.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/XmrWalletApplication.java
@@ -22,6 +22,7 @@ import android.content.res.Configuration;
import android.os.Build;
import androidx.annotation.NonNull;
+import androidx.fragment.app.FragmentManager;
import com.m2049r.xmrwallet.model.NetworkType;
import com.m2049r.xmrwallet.util.LocaleHelper;
@@ -35,7 +36,7 @@ public class XmrWalletApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
-
+ FragmentManager.enableNewStateManager(false);
if (BuildConfig.DEBUG) {
Timber.plant(new Timber.DebugTree());
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/NodeInfo.java b/app/src/main/java/com/m2049r/xmrwallet/data/NodeInfo.java
index bab0b7ee..351e7941 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/data/NodeInfo.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/data/NodeInfo.java
@@ -267,14 +267,14 @@ public class NodeInfo extends Node {
public void showInfo(TextView view, String info, boolean isError) {
final Context ctx = view.getContext();
final Spanned text = Html.fromHtml(ctx.getString(R.string.status,
- Integer.toHexString(ContextCompat.getColor(ctx, R.color.monerujoGreen) & 0xFFFFFF),
- Integer.toHexString(ContextCompat.getColor(ctx, R.color.monerujoBackground) & 0xFFFFFF),
+ Integer.toHexString(ThemeHelper.getThemedColor(ctx, R.attr.positiveColor) & 0xFFFFFF),
+ Integer.toHexString(ThemeHelper.getThemedColor(ctx, android.R.attr.colorBackground) & 0xFFFFFF),
(hostAddress.isOnion() ? " .onion " : ""), " " + info));
view.setText(text);
if (isError)
view.setTextColor(ThemeHelper.getThemedColor(ctx, R.attr.colorError));
else
- view.setTextColor(ThemeHelper.getThemedColor(ctx, R.attr.colorPrimary));
+ view.setTextColor(ThemeHelper.getThemedColor(ctx, android.R.attr.textColorSecondary));
}
public void showInfo(TextView view) {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java
index 6c0faf14..41c13db8 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java
@@ -40,6 +40,7 @@ import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi;
import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl;
import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.util.ServiceHelper;
+import com.m2049r.xmrwallet.util.ThemeHelper;
import java.text.NumberFormat;
import java.util.Locale;
@@ -212,19 +213,27 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment {
if (status.isError()) {
tvXmrToStatus.setText(getString(R.string.info_send_xmrto_error, status.toString()));
statusResource = R.drawable.ic_error_red_24dp;
- pbXmrto.getIndeterminateDrawable().setColorFilter(0xff8b0000, android.graphics.PorterDuff.Mode.MULTIPLY);
+ pbXmrto.getIndeterminateDrawable().setColorFilter(
+ ThemeHelper.getThemedColor(getContext(), android.R.attr.colorError),
+ android.graphics.PorterDuff.Mode.MULTIPLY);
} else if (status.isSent() || status.isPaid()) {
tvXmrToStatus.setText(getString(R.string.info_send_xmrto_sent, btcData.getBtcSymbol()));
- statusResource = R.drawable.ic_success_green_24dp;
- pbXmrto.getIndeterminateDrawable().setColorFilter(0xFF417505, android.graphics.PorterDuff.Mode.MULTIPLY);
+ statusResource = R.drawable.ic_success;
+ pbXmrto.getIndeterminateDrawable().setColorFilter(
+ ThemeHelper.getThemedColor(getContext(), R.attr.positiveColor),
+ android.graphics.PorterDuff.Mode.MULTIPLY);
} else if (status.isWaiting()) {
tvXmrToStatus.setText(getString(R.string.info_send_xmrto_unpaid));
- statusResource = R.drawable.ic_pending_orange_24dp;
- pbXmrto.getIndeterminateDrawable().setColorFilter(0xFFFF6105, android.graphics.PorterDuff.Mode.MULTIPLY);
+ statusResource = R.drawable.ic_pending;
+ pbXmrto.getIndeterminateDrawable().setColorFilter(
+ ThemeHelper.getThemedColor(getContext(), R.attr.neutralColor),
+ android.graphics.PorterDuff.Mode.MULTIPLY);
} else if (status.isPending()) {
tvXmrToStatus.setText(getString(R.string.info_send_xmrto_paid));
- statusResource = R.drawable.ic_pending_orange_24dp;
- pbXmrto.getIndeterminateDrawable().setColorFilter(0xFFFF6105, android.graphics.PorterDuff.Mode.MULTIPLY);
+ statusResource = R.drawable.ic_pending;
+ pbXmrto.getIndeterminateDrawable().setColorFilter(
+ ThemeHelper.getThemedColor(getContext(), R.attr.neutralColor),
+ android.graphics.PorterDuff.Mode.MULTIPLY);
} else {
throw new IllegalStateException("status is broken: " + status.toString());
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java
index 14203c1f..ce82795b 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java
@@ -55,7 +55,6 @@ import com.m2049r.xmrwallet.widget.DotBar;
import com.m2049r.xmrwallet.widget.Toolbar;
import java.lang.ref.WeakReference;
-import java.util.Objects;
import timber.log.Timber;
@@ -202,14 +201,14 @@ public class SendFragment extends Fragment
CharSequence nextLabel = pagerAdapter.getPageTitle(position + 1);
bNext.setText(nextLabel);
if (nextLabel != null) {
- bNext.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_navigate_next_white_24dp, 0);
+ bNext.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_navigate_next, 0);
} else {
bNext.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
}
CharSequence prevLabel = pagerAdapter.getPageTitle(position - 1);
bPrev.setText(prevLabel);
if (prevLabel != null) {
- bPrev.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_navigate_prev_white_24dp, 0, 0, 0);
+ bPrev.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_navigate_prev, 0, 0, 0);
} else {
bPrev.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java b/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java
index 57f02850..baae49e1 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java
@@ -23,7 +23,6 @@ import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
-import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
@@ -230,21 +229,21 @@ public class NodeInfoAdapter extends RecyclerView.Adapter();
this.listener = listener;
Calendar cal = Calendar.getInstance();
@@ -253,8 +254,8 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter= Build.VERSION_CODES.M ? PendingIntent.FLAG_IMMUTABLE : 0);
String channelId = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? createNotificationChannel() : "";
Notification notification = new NotificationCompat.Builder(this, channelId)
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java b/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java
index c5c6c5bf..4cd90cfc 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java
@@ -395,7 +395,7 @@ public class Helper {
final TextView tvOpenPrompt = promptsView.findViewById(R.id.tvOpenPrompt);
final Drawable icFingerprint = context.getDrawable(R.drawable.ic_fingerprint);
final Drawable icError = context.getDrawable(R.drawable.ic_error_red_36dp);
- final Drawable icInfo = context.getDrawable(R.drawable.ic_info_green_36dp);
+ final Drawable icInfo = context.getDrawable(R.drawable.ic_info_white_24dp);
final boolean fingerprintAuthCheck = FingerprintHelper.isFingerPassValid(context, wallet);
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/LocaleHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/LocaleHelper.java
index b98e5da3..fb79cf98 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/LocaleHelper.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/LocaleHelper.java
@@ -27,7 +27,6 @@ import java.util.ArrayList;
import java.util.Locale;
public class LocaleHelper {
- private static final String PREFERRED_LOCALE_KEY = "preferred_locale";
private static Locale SYSTEM_DEFAULT_LOCALE = Locale.getDefault();
public static ArrayList getAvailableLocales(Context context) {
@@ -93,12 +92,13 @@ public class LocaleHelper {
public static String getPreferredLanguageTag(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
- .getString(PREFERRED_LOCALE_KEY, "");
+ .getString("preferred_locale", "");
+ // cannot access getString here as it's done BEFORE string locale is set
}
@SuppressLint("ApplySharedPref")
private static void savePreferredLangaugeTag(Context context, String locale) {
PreferenceManager.getDefaultSharedPreferences(context).edit()
- .putString(PREFERRED_LOCALE_KEY, locale).commit();
+ .putString(context.getString(R.string.preferred_locale), locale).commit();
}
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/NightmodeHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/NightmodeHelper.java
index e80b8589..afe4ce4f 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/NightmodeHelper.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/NightmodeHelper.java
@@ -16,32 +16,37 @@
package com.m2049r.xmrwallet.util;
+import android.annotation.SuppressLint;
import android.content.Context;
+import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import androidx.appcompat.app.AppCompatDelegate;
-public class NightmodeHelper {
- private static final String PREFERRED_NIGHTMODE_KEY = "preferred_nightmode";
+import com.m2049r.xmrwallet.R;
+public class NightmodeHelper {
public static DayNightMode getPreferredNightmode(Context context) {
return DayNightMode.valueOf(PreferenceManager.getDefaultSharedPreferences(context)
- .getString(PREFERRED_NIGHTMODE_KEY, "UNKNOWN"));
+ .getString(context.getString(R.string.preferred_nightmode), "UNKNOWN"));
}
public static void setPreferredNightmode(Context context) {
final DayNightMode mode = DayNightMode.valueOf(PreferenceManager.getDefaultSharedPreferences(context)
- .getString(PREFERRED_NIGHTMODE_KEY, "UNKNOWN"));
- if (mode == DayNightMode.UNKNOWN) setAndSavePreferredNightmode(context, DayNightMode.AUTO);
- setNightMode(mode);
+ .getString(context.getString(R.string.preferred_nightmode), "UNKNOWN"));
+ if (mode == DayNightMode.UNKNOWN)
+ setAndSavePreferredNightmode(context, DayNightMode.AUTO);
+ else
+ setNightMode(mode);
}
public static void setAndSavePreferredNightmode(Context context, DayNightMode mode) {
PreferenceManager.getDefaultSharedPreferences(context).edit()
- .putString(PREFERRED_NIGHTMODE_KEY, mode.name()).apply();
+ .putString(context.getString(R.string.preferred_nightmode), mode.name()).apply();
setNightMode(mode);
}
+ @SuppressLint("WrongConstant")
public static void setNightMode(DayNightMode mode) {
AppCompatDelegate.setDefaultNightMode(mode.getNightMode());
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/Notice.java b/app/src/main/java/com/m2049r/xmrwallet/util/Notice.java
index 673e37a2..727c3959 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/Notice.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/Notice.java
@@ -98,12 +98,7 @@ public class Notice {
final FragmentManager fragmentManager =
((FragmentActivity) context).getSupportFragmentManager();
- ll.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- HelpFragment.display(fragmentManager, helpResId);
- }
- });
+ ll.setOnClickListener(v -> HelpFragment.display(fragmentManager, helpResId));
ImageButton ib = ll.findViewById(R.id.ibClose);
ib.setOnClickListener(new View.OnClickListener() {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/RestoreHeight.java b/app/src/main/java/com/m2049r/xmrwallet/util/RestoreHeight.java
index 1619bf26..00e59521 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/RestoreHeight.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/RestoreHeight.java
@@ -127,6 +127,18 @@ public class RestoreHeight {
blockheight.put("2021-01-01", 2264584L);
blockheight.put("2021-02-01", 2286892L);
blockheight.put("2021-03-01", 2307079L);
+ blockheight.put("2021-04-01", 2329385L);
+ blockheight.put("2021-05-01", 2351004L);
+ blockheight.put("2021-06-01", 2373306L);
+ blockheight.put("2021-07-01", 2394882L);
+ blockheight.put("2021-08-01", 2417162L);
+ blockheight.put("2021-09-01", 2439490L);
+ blockheight.put("2021-10-01", 2461020L);
+ blockheight.put("2021-11-01", 2483377L);
+ blockheight.put("2021-12-01", 2504932L);
+ blockheight.put("2022-01-01", 2527316L);
+ blockheight.put("2022-02-01", 2549605L);
+ blockheight.put("2022-03-01", 2569711L);
}
public long getHeight(String date) {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/ThemeHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/ThemeHelper.java
index 20f8c484..21ff7330 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/ThemeHelper.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/ThemeHelper.java
@@ -16,11 +16,16 @@
package com.m2049r.xmrwallet.util;
+import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
+import android.preference.PreferenceManager;
import android.util.TypedValue;
import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+
+import com.m2049r.xmrwallet.R;
public class ThemeHelper {
static public int getThemedResourceId(Context ctx, int attrId) {
@@ -39,4 +44,22 @@ public class ThemeHelper {
else
return Color.BLACK;
}
+
+ public static void setTheme(@NonNull Activity activity, @NonNull String theme) {
+ switch (theme) {
+ case "Classic":
+ activity.setTheme(R.style.MyMaterialThemeClassic);
+ break;
+ case "Oled":
+ activity.setTheme(R.style.MyMaterialThemeOled);
+ break;
+ }
+ }
+
+ public static void setPreferred(Activity activity) {
+ final String theme = PreferenceManager.getDefaultSharedPreferences(activity)
+ .getString(activity.getString(R.string.preferred_theme), "Classic");
+ setTheme(activity, theme);
+ }
+
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeEditText.java b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeEditText.java
index 26ff14b7..00b1b19b 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeEditText.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeEditText.java
@@ -41,6 +41,7 @@ import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.util.ServiceHelper;
+import com.m2049r.xmrwallet.util.ThemeHelper;
import java.util.ArrayList;
import java.util.Arrays;
@@ -224,7 +225,7 @@ public class ExchangeEditText extends LinearLayout {
// make progress circle gray
pbExchange.getIndeterminateDrawable().
- setColorFilter(getResources().getColor(R.color.progress_circle),
+ setColorFilter(ThemeHelper.getThemedColor(getContext(), R.attr.colorPrimaryVariant),
android.graphics.PorterDuff.Mode.MULTIPLY);
sCurrencyA.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/widget/Toolbar.java b/app/src/main/java/com/m2049r/xmrwallet/widget/Toolbar.java
index c7f4d90e..768f8a8f 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/widget/Toolbar.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/widget/Toolbar.java
@@ -46,7 +46,7 @@ public class Toolbar extends MaterialToolbar {
ImageView toolbarImage;
TextView toolbarTitle;
TextView toolbarSubtitle;
- ImageButton bCredits;
+ ImageButton bSettings;
public Toolbar(Context context) {
super(context);
@@ -88,12 +88,10 @@ public class Toolbar extends MaterialToolbar {
toolbarTitle = findViewById(R.id.toolbarTitle);
toolbarSubtitle = findViewById(R.id.toolbarSubtitle);
- bCredits = findViewById(R.id.bCredits);
- bCredits.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- if (onButtonListener != null) {
- onButtonListener.onButton(buttonType);
- }
+ bSettings = findViewById(R.id.bSettings);
+ bSettings.setOnClickListener(v -> {
+ if (onButtonListener != null) {
+ onButtonListener.onButton(buttonType);
}
});
}
@@ -117,37 +115,37 @@ public class Toolbar extends MaterialToolbar {
public final static int BUTTON_NONE = 0;
public final static int BUTTON_BACK = 1;
public final static int BUTTON_CLOSE = 2;
- public final static int BUTTON_CREDITS = 3;
+ public final static int BUTTON_SETTINGS = 3;
public final static int BUTTON_CANCEL = 4;
- int buttonType = BUTTON_CREDITS;
+ int buttonType = BUTTON_SETTINGS;
public void setButton(int type) {
switch (type) {
case BUTTON_BACK:
Timber.d("BUTTON_BACK");
- bCredits.setImageResource(R.drawable.ic_arrow_back_white_24dp);
- bCredits.setVisibility(View.VISIBLE);
+ bSettings.setImageResource(R.drawable.ic_arrow_back);
+ bSettings.setVisibility(View.VISIBLE);
break;
case BUTTON_CLOSE:
Timber.d("BUTTON_CLOSE");
- bCredits.setImageResource(R.drawable.ic_close_white_24dp);
- bCredits.setVisibility(View.VISIBLE);
+ bSettings.setImageResource(R.drawable.ic_close_white_24dp);
+ bSettings.setVisibility(View.VISIBLE);
break;
- case BUTTON_CREDITS:
- Timber.d("BUTTON_CREDITS");
- bCredits.setImageResource(R.drawable.ic_favorite_white_24dp);
- bCredits.setVisibility(View.VISIBLE);
+ case BUTTON_SETTINGS:
+ Timber.d("BUTTON_SETTINGS");
+ bSettings.setImageResource(R.drawable.ic_settings);
+ bSettings.setVisibility(View.VISIBLE);
break;
case BUTTON_CANCEL:
Timber.d("BUTTON_CANCEL");
- bCredits.setImageResource(R.drawable.ic_close_white_24dp);
- bCredits.setVisibility(View.VISIBLE);
+ bSettings.setImageResource(R.drawable.ic_close_white_24dp);
+ bSettings.setVisibility(View.VISIBLE);
break;
case BUTTON_NONE:
default:
Timber.d("BUTTON_NONE");
- bCredits.setVisibility(View.INVISIBLE);
+ bSettings.setVisibility(View.INVISIBLE);
}
buttonType = type;
}
diff --git a/app/src/main/res/color/btn_color_selector.xml b/app/src/main/res/color/btn_color_selector.xml
index 3a736463..a863d40b 100644
--- a/app/src/main/res/color/btn_color_selector.xml
+++ b/app/src/main/res/color/btn_color_selector.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/app/src/main/res/drawable-v24/ic_check_circle.xml b/app/src/main/res/drawable-v24/ic_check_circle.xml
index 5be895b4..7c0c48e0 100644
--- a/app/src/main/res/drawable-v24/ic_check_circle.xml
+++ b/app/src/main/res/drawable-v24/ic_check_circle.xml
@@ -13,10 +13,10 @@
android:startY="74.0"
android:type="linear">
diff --git a/app/src/main/res/drawable-v24/ic_check_circle_xmr.xml b/app/src/main/res/drawable-v24/ic_check_circle_xmr.xml
index 311c65a4..342a70b2 100644
--- a/app/src/main/res/drawable-v24/ic_check_circle_xmr.xml
+++ b/app/src/main/res/drawable-v24/ic_check_circle_xmr.xml
@@ -17,10 +17,10 @@
android:startY="58.0"
android:type="linear">
diff --git a/app/src/main/res/drawable-v24/ic_xmrto_btc_off.xml b/app/src/main/res/drawable-v24/ic_xmrto_btc_off.xml
new file mode 100644
index 00000000..bacf2e4a
--- /dev/null
+++ b/app/src/main/res/drawable-v24/ic_xmrto_btc_off.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/app/src/main/res/drawable-v24/ic_xmrto_dash_off.xml b/app/src/main/res/drawable-v24/ic_xmrto_dash_off.xml
new file mode 100644
index 00000000..8d52acf7
--- /dev/null
+++ b/app/src/main/res/drawable-v24/ic_xmrto_dash_off.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable-v24/ic_xmrto_doge_off.xml b/app/src/main/res/drawable-v24/ic_xmrto_doge_off.xml
new file mode 100644
index 00000000..dc12f6b4
--- /dev/null
+++ b/app/src/main/res/drawable-v24/ic_xmrto_doge_off.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/app/src/main/res/drawable-v24/ic_xmrto_eth_off.xml b/app/src/main/res/drawable-v24/ic_xmrto_eth_off.xml
new file mode 100644
index 00000000..8e58eca1
--- /dev/null
+++ b/app/src/main/res/drawable-v24/ic_xmrto_eth_off.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable-v24/ic_xmrto_ltc_off.xml b/app/src/main/res/drawable-v24/ic_xmrto_ltc_off.xml
new file mode 100644
index 00000000..ffdc3bbc
--- /dev/null
+++ b/app/src/main/res/drawable-v24/ic_xmrto_ltc_off.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/backgound_seed.xml b/app/src/main/res/drawable/backgound_seed.xml
index 5bd552a3..b15241e3 100644
--- a/app/src/main/res/drawable/backgound_seed.xml
+++ b/app/src/main/res/drawable/backgound_seed.xml
@@ -1,7 +1,6 @@
-
diff --git a/app/src/main/res/drawable/backgound_toolbar_mainnet.xml b/app/src/main/res/drawable/backgound_toolbar_mainnet.xml
index 5d19b551..87168c36 100644
--- a/app/src/main/res/drawable/backgound_toolbar_mainnet.xml
+++ b/app/src/main/res/drawable/backgound_toolbar_mainnet.xml
@@ -1,7 +1,4 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/backgound_toolbar_streetmode.xml b/app/src/main/res/drawable/backgound_toolbar_streetmode.xml
index 9d8cf866..d354b603 100644
--- a/app/src/main/res/drawable/backgound_toolbar_streetmode.xml
+++ b/app/src/main/res/drawable/backgound_toolbar_streetmode.xml
@@ -1,7 +1,4 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_green.xml b/app/src/main/res/drawable/button_green.xml
index ce3d520f..7bcc5944 100644
--- a/app/src/main/res/drawable/button_green.xml
+++ b/app/src/main/res/drawable/button_green.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gradient_all.xml b/app/src/main/res/drawable/gradient_all.xml
index 64fe882c..0c1e5371 100644
--- a/app/src/main/res/drawable/gradient_all.xml
+++ b/app/src/main/res/drawable/gradient_all.xml
@@ -3,7 +3,7 @@
android:shape="rectangle">
diff --git a/app/src/main/res/drawable/gradient_oval.xml b/app/src/main/res/drawable/gradient_oval.xml
index c9b7c53d..a2ec4b7e 100644
--- a/app/src/main/res/drawable/gradient_oval.xml
+++ b/app/src/main/res/drawable/gradient_oval.xml
@@ -3,7 +3,7 @@
android:shape="oval">
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gradient_street.xml b/app/src/main/res/drawable/gradient_street.xml
index ea15a5c6..13d38c7e 100644
--- a/app/src/main/res/drawable/gradient_street.xml
+++ b/app/src/main/res/drawable/gradient_street.xml
@@ -3,7 +3,7 @@
android:shape="rectangle">
diff --git a/app/src/main/res/drawable/gradient_street_efab.xml b/app/src/main/res/drawable/gradient_street_efab.xml
index 4f5b0728..fecef8c0 100644
--- a/app/src/main/res/drawable/gradient_street_efab.xml
+++ b/app/src/main/res/drawable/gradient_street_efab.xml
@@ -3,8 +3,8 @@
android:shape="rectangle">
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_account_balance_wallet_black_24dp.xml b/app/src/main/res/drawable/ic_account_balance_wallet_black_24dp.xml
index 9f5c21cb..23c3e5d2 100644
--- a/app/src/main/res/drawable/ic_account_balance_wallet_black_24dp.xml
+++ b/app/src/main/res/drawable/ic_account_balance_wallet_black_24dp.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_add_white_24dp.xml b/app/src/main/res/drawable/ic_add.xml
similarity index 65%
rename from app/src/main/res/drawable/ic_add_white_24dp.xml
rename to app/src/main/res/drawable/ic_add.xml
index ba7fc6e4..e249c3e0 100644
--- a/app/src/main/res/drawable/ic_add_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_add.xml
@@ -1,9 +1,9 @@
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_add_circle_outline.xml b/app/src/main/res/drawable/ic_add_circle.xml
similarity index 90%
rename from app/src/main/res/drawable/ic_add_circle_outline.xml
rename to app/src/main/res/drawable/ic_add_circle.xml
index e0be2e8e..2c0d372e 100644
--- a/app/src/main/res/drawable/ic_add_circle_outline.xml
+++ b/app/src/main/res/drawable/ic_add_circle.xml
@@ -4,6 +4,6 @@
android:viewportWidth="20.0"
android:viewportHeight="20.0">
diff --git a/app/src/main/res/drawable/ic_add_circle_white.xml b/app/src/main/res/drawable/ic_add_circle_white.xml
deleted file mode 100644
index ef7dc50f..00000000
--- a/app/src/main/res/drawable/ic_add_circle_white.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_all_inclusive_24dp.xml b/app/src/main/res/drawable/ic_all_inclusive.xml
similarity index 94%
rename from app/src/main/res/drawable/ic_all_inclusive_24dp.xml
rename to app/src/main/res/drawable/ic_all_inclusive.xml
index d21f7dd1..92f9867f 100644
--- a/app/src/main/res/drawable/ic_all_inclusive_24dp.xml
+++ b/app/src/main/res/drawable/ic_all_inclusive.xml
@@ -4,6 +4,6 @@
android:viewportHeight="24.0"
android:viewportWidth="24.0">
diff --git a/app/src/main/res/drawable/ic_arrow_back_white_24dp.xml b/app/src/main/res/drawable/ic_arrow_back.xml
similarity index 58%
rename from app/src/main/res/drawable/ic_arrow_back_white_24dp.xml
rename to app/src/main/res/drawable/ic_arrow_back.xml
index eb28317c..858c605e 100644
--- a/app/src/main/res/drawable/ic_arrow_back_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_arrow_back.xml
@@ -1,9 +1,10 @@
+ android:tint="?attr/colorControlNormal"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_baseline_cancel_24.xml b/app/src/main/res/drawable/ic_baseline_cancel_24.xml
deleted file mode 100644
index 583a772b..00000000
--- a/app/src/main/res/drawable/ic_baseline_cancel_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_baseline_launch_24.xml b/app/src/main/res/drawable/ic_baseline_launch_24.xml
deleted file mode 100644
index 455b503a..00000000
--- a/app/src/main/res/drawable/ic_baseline_launch_24.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_check_circle.xml b/app/src/main/res/drawable/ic_check_circle.xml
index d59e8e7f..d820d9bd 100644
--- a/app/src/main/res/drawable/ic_check_circle.xml
+++ b/app/src/main/res/drawable/ic_check_circle.xml
@@ -4,6 +4,6 @@
android:viewportHeight="74.0"
android:viewportWidth="74.0">
diff --git a/app/src/main/res/drawable/ic_check_circle_xmr.xml b/app/src/main/res/drawable/ic_check_circle_xmr.xml
index b90fbff9..645bdf10 100644
--- a/app/src/main/res/drawable/ic_check_circle_xmr.xml
+++ b/app/src/main/res/drawable/ic_check_circle_xmr.xml
@@ -4,7 +4,7 @@
android:viewportHeight="58.0"
android:viewportWidth="58.0">
diff --git a/app/src/main/res/drawable/ic_check_gray_24dp.xml b/app/src/main/res/drawable/ic_check_gray_24dp.xml
deleted file mode 100644
index d1d3bbbd..00000000
--- a/app/src/main/res/drawable/ic_check_gray_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_close_white_24dp.xml b/app/src/main/res/drawable/ic_close_white_24dp.xml
index 2b2a1aaf..927a9426 100644
--- a/app/src/main/res/drawable/ic_close_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_close_white_24dp.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_done_all.xml b/app/src/main/res/drawable/ic_done_all.xml
index a3152b05..80c1ad86 100644
--- a/app/src/main/res/drawable/ic_done_all.xml
+++ b/app/src/main/res/drawable/ic_done_all.xml
@@ -7,7 +7,7 @@
android:translateX="0.000000"
android:translateY="+7.000000">
diff --git a/app/src/main/res/drawable/ic_error_red_24dp.xml b/app/src/main/res/drawable/ic_error_red_24dp.xml
index 5b0e5c83..70e38a93 100644
--- a/app/src/main/res/drawable/ic_error_red_24dp.xml
+++ b/app/src/main/res/drawable/ic_error_red_24dp.xml
@@ -4,6 +4,6 @@
android:viewportHeight="24.0"
android:viewportWidth="24.0">
diff --git a/app/src/main/res/drawable/ic_eye.xml b/app/src/main/res/drawable/ic_eye.xml
index 43559d34..c7f3ef75 100644
--- a/app/src/main/res/drawable/ic_eye.xml
+++ b/app/src/main/res/drawable/ic_eye.xml
@@ -2,18 +2,11 @@
-
-
-
-
+
-
-
+ android:strokeWidth="1" />
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_favorite_24dp.xml b/app/src/main/res/drawable/ic_favorite_24dp.xml
index 8cf1412c..933147e9 100644
--- a/app/src/main/res/drawable/ic_favorite_24dp.xml
+++ b/app/src/main/res/drawable/ic_favorite_24dp.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_favorite_border_24dp.xml b/app/src/main/res/drawable/ic_favorite_border_24dp.xml
index 4710d95a..a26a6bab 100644
--- a/app/src/main/res/drawable/ic_favorite_border_24dp.xml
+++ b/app/src/main/res/drawable/ic_favorite_border_24dp.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_favorite_white_24dp.xml b/app/src/main/res/drawable/ic_favorite_white_24dp.xml
deleted file mode 100644
index 3c8ccd17..00000000
--- a/app/src/main/res/drawable/ic_favorite_white_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_fingerprint.xml b/app/src/main/res/drawable/ic_fingerprint.xml
index 9c51b700..30d9186d 100644
--- a/app/src/main/res/drawable/ic_fingerprint.xml
+++ b/app/src/main/res/drawable/ic_fingerprint.xml
@@ -5,21 +5,21 @@
android:viewportHeight="36.0">
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_help_white_24dp.xml b/app/src/main/res/drawable/ic_help_white_24dp.xml
index db59fe78..1f732001 100644
--- a/app/src/main/res/drawable/ic_help_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_help_white_24dp.xml
@@ -1,9 +1,10 @@
diff --git a/app/src/main/res/drawable/ic_import.xml b/app/src/main/res/drawable/ic_import.xml
new file mode 100644
index 00000000..62c1d5e9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_import.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_info_green_36dp.xml b/app/src/main/res/drawable/ic_info_green_36dp.xml
deleted file mode 100644
index 230b5963..00000000
--- a/app/src/main/res/drawable/ic_info_green_36dp.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_info_white_24dp.xml b/app/src/main/res/drawable/ic_info_white_24dp.xml
index c9f33b31..9f60ef94 100644
--- a/app/src/main/res/drawable/ic_info_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_info_white_24dp.xml
@@ -4,6 +4,6 @@
android:viewportHeight="24.0"
android:viewportWidth="24.0">
diff --git a/app/src/main/res/drawable/ic_key.xml b/app/src/main/res/drawable/ic_key.xml
index ac50e393..6252c725 100644
--- a/app/src/main/res/drawable/ic_key.xml
+++ b/app/src/main/res/drawable/ic_key.xml
@@ -12,7 +12,7 @@
android:translateX="219.000000"
android:translateY="136.000000">
+
+
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
index ed893783..85c122df 100644
--- a/app/src/main/res/drawable/ic_launcher_background.xml
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -4,23 +4,26 @@
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
index ec890349..2c2fd4b4 100644
--- a/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -3,10 +3,10 @@
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_ledger_restore.xml b/app/src/main/res/drawable/ic_ledger_restore.xml
index 6dc023fe..be8b6913 100644
--- a/app/src/main/res/drawable/ic_ledger_restore.xml
+++ b/app/src/main/res/drawable/ic_ledger_restore.xml
@@ -1,8 +1,8 @@
+ android:viewportWidth="529.82"
+ android:viewportHeight="184.59">
diff --git a/app/src/main/res/drawable/ic_logo_horizontol_xmrujo.xml b/app/src/main/res/drawable/ic_logo_horizontol_xmrujo.xml
index 0486b492..ec2cdd42 100644
--- a/app/src/main/res/drawable/ic_logo_horizontol_xmrujo.xml
+++ b/app/src/main/res/drawable/ic_logo_horizontol_xmrujo.xml
@@ -1,33 +1,34 @@
diff --git a/app/src/main/res/drawable/ic_monero_bw.xml b/app/src/main/res/drawable/ic_monero_bw.xml
index 1b4cef11..29100129 100644
--- a/app/src/main/res/drawable/ic_monero_bw.xml
+++ b/app/src/main/res/drawable/ic_monero_bw.xml
@@ -4,9 +4,9 @@
android:viewportWidth="256"
android:viewportHeight="256">
diff --git a/app/src/main/res/drawable/ic_monerujo.xml b/app/src/main/res/drawable/ic_monerujo.xml
index b700071d..88d43061 100644
--- a/app/src/main/res/drawable/ic_monerujo.xml
+++ b/app/src/main/res/drawable/ic_monerujo.xml
@@ -2,18 +2,12 @@
+ android:viewportWidth="1270"
+ android:viewportHeight="1270">
-
diff --git a/app/src/main/res/drawable/ic_navigate_next_white_24dp.xml b/app/src/main/res/drawable/ic_navigate_next.xml
similarity index 79%
rename from app/src/main/res/drawable/ic_navigate_next_white_24dp.xml
rename to app/src/main/res/drawable/ic_navigate_next.xml
index e15024dc..435fc04d 100644
--- a/app/src/main/res/drawable/ic_navigate_next_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_navigate_next.xml
@@ -1,8 +1,8 @@
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_navigate_next_black_24dp.xml b/app/src/main/res/drawable/ic_navigate_next_black_24dp.xml
deleted file mode 100644
index e15024dc..00000000
--- a/app/src/main/res/drawable/ic_navigate_next_black_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_navigate_prev_white_24dp.xml b/app/src/main/res/drawable/ic_navigate_prev.xml
similarity index 100%
rename from app/src/main/res/drawable/ic_navigate_prev_white_24dp.xml
rename to app/src/main/res/drawable/ic_navigate_prev.xml
diff --git a/app/src/main/res/drawable/ic_new.xml b/app/src/main/res/drawable/ic_new.xml
index eb0b47bb..0c861aee 100644
--- a/app/src/main/res/drawable/ic_new.xml
+++ b/app/src/main/res/drawable/ic_new.xml
@@ -2,18 +2,11 @@
-
-
-
-
+
-
-
+ android:strokeWidth="1" />
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_nfc_black_24dp.xml b/app/src/main/res/drawable/ic_nfc.xml
similarity index 78%
rename from app/src/main/res/drawable/ic_nfc_black_24dp.xml
rename to app/src/main/res/drawable/ic_nfc.xml
index 6acbf783..2821ae80 100644
--- a/app/src/main/res/drawable/ic_nfc_black_24dp.xml
+++ b/app/src/main/res/drawable/ic_nfc.xml
@@ -1,9 +1,9 @@
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_pending_orange_24dp.xml b/app/src/main/res/drawable/ic_pending.xml
similarity index 73%
rename from app/src/main/res/drawable/ic_pending_orange_24dp.xml
rename to app/src/main/res/drawable/ic_pending.xml
index 5f748fdb..bca0e0af 100644
--- a/app/src/main/res/drawable/ic_pending_orange_24dp.xml
+++ b/app/src/main/res/drawable/ic_pending.xml
@@ -1,9 +1,9 @@
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_refresh_24dp.xml b/app/src/main/res/drawable/ic_refresh_24dp.xml
deleted file mode 100644
index 2184bbfd..00000000
--- a/app/src/main/res/drawable/ic_refresh_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_refresh_black_24dp.xml b/app/src/main/res/drawable/ic_refresh_black_24dp.xml
deleted file mode 100644
index c5ae344f..00000000
--- a/app/src/main/res/drawable/ic_refresh_black_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_renew_24dp.xml b/app/src/main/res/drawable/ic_renew.xml
similarity index 100%
rename from app/src/main/res/drawable/ic_renew_24dp.xml
rename to app/src/main/res/drawable/ic_renew.xml
diff --git a/app/src/main/res/drawable/ic_seed.xml b/app/src/main/res/drawable/ic_seed.xml
index ba295044..6d714f63 100644
--- a/app/src/main/res/drawable/ic_seed.xml
+++ b/app/src/main/res/drawable/ic_seed.xml
@@ -5,17 +5,17 @@
android:viewportHeight="6.3500004">
+ android:fillColor="#000"/>
+ android:fillColor="#000"/>
+ android:fillColor="#000"/>
+ android:fillColor="#000"/>
+ android:fillColor="#000"/>
diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml
new file mode 100644
index 00000000..a7c7678d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_settings.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_share_white_24dp.xml b/app/src/main/res/drawable/ic_share.xml
similarity index 87%
rename from app/src/main/res/drawable/ic_share_white_24dp.xml
rename to app/src/main/res/drawable/ic_share.xml
index a918453f..c2a49267 100644
--- a/app/src/main/res/drawable/ic_share_white_24dp.xml
+++ b/app/src/main/res/drawable/ic_share.xml
@@ -1,9 +1,10 @@
diff --git a/app/src/main/res/drawable/ic_sideshift_circle.xml b/app/src/main/res/drawable/ic_sideshift_circle.xml
index 366f959d..f894205f 100644
--- a/app/src/main/res/drawable/ic_sideshift_circle.xml
+++ b/app/src/main/res/drawable/ic_sideshift_circle.xml
@@ -4,9 +4,9 @@
android:viewportWidth="80.52"
android:viewportHeight="80.46">
>
+ android:fillColor="?colorPrimary"
+ android:pathData="M66.07,9.67A40,40 0,0 0,9.69 66.11Z" />
diff --git a/app/src/main/res/drawable/ic_sideshift_white.xml b/app/src/main/res/drawable/ic_sideshift_white.xml
index 76d8891b..549c445f 100644
--- a/app/src/main/res/drawable/ic_sideshift_white.xml
+++ b/app/src/main/res/drawable/ic_sideshift_white.xml
@@ -4,45 +4,45 @@
android:viewportWidth="648"
android:viewportHeight="80">
diff --git a/app/src/main/res/drawable/ic_smiley_ecstatic_filled.xml b/app/src/main/res/drawable/ic_smiley_ecstatic_filled.xml
index 5599f408..d6361528 100644
--- a/app/src/main/res/drawable/ic_smiley_ecstatic_filled.xml
+++ b/app/src/main/res/drawable/ic_smiley_ecstatic_filled.xml
@@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
diff --git a/app/src/main/res/drawable/ic_smiley_gunther_filled.xml b/app/src/main/res/drawable/ic_smiley_gunther_filled.xml
index b984c882..73a1202b 100644
--- a/app/src/main/res/drawable/ic_smiley_gunther_filled.xml
+++ b/app/src/main/res/drawable/ic_smiley_gunther_filled.xml
@@ -4,9 +4,9 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
diff --git a/app/src/main/res/drawable/ic_smiley_happy_filled.xml b/app/src/main/res/drawable/ic_smiley_happy_filled.xml
index 2a90da42..ebd638d8 100644
--- a/app/src/main/res/drawable/ic_smiley_happy_filled.xml
+++ b/app/src/main/res/drawable/ic_smiley_happy_filled.xml
@@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
diff --git a/app/src/main/res/drawable/ic_smiley_meh_filled.xml b/app/src/main/res/drawable/ic_smiley_meh_filled.xml
index 057e41e8..6936876b 100644
--- a/app/src/main/res/drawable/ic_smiley_meh_filled.xml
+++ b/app/src/main/res/drawable/ic_smiley_meh_filled.xml
@@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
diff --git a/app/src/main/res/drawable/ic_smiley_neutral_filled.xml b/app/src/main/res/drawable/ic_smiley_neutral_filled.xml
index 13cff5b6..ca1b805a 100644
--- a/app/src/main/res/drawable/ic_smiley_neutral_filled.xml
+++ b/app/src/main/res/drawable/ic_smiley_neutral_filled.xml
@@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
diff --git a/app/src/main/res/drawable/ic_smiley_sad_filled.xml b/app/src/main/res/drawable/ic_smiley_sad_filled.xml
index db30f3ef..1f7a4983 100644
--- a/app/src/main/res/drawable/ic_smiley_sad_filled.xml
+++ b/app/src/main/res/drawable/ic_smiley_sad_filled.xml
@@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
diff --git a/app/src/main/res/drawable/ic_success_green_24dp.xml b/app/src/main/res/drawable/ic_success.xml
similarity index 87%
rename from app/src/main/res/drawable/ic_success_green_24dp.xml
rename to app/src/main/res/drawable/ic_success.xml
index a8300b8c..0bc71eef 100644
--- a/app/src/main/res/drawable/ic_success_green_24dp.xml
+++ b/app/src/main/res/drawable/ic_success.xml
@@ -4,6 +4,6 @@
android:viewportHeight="24.0"
android:viewportWidth="24.0">
diff --git a/app/src/main/res/drawable/ic_signal_wifi_1_bar_24dp.xml b/app/src/main/res/drawable/ic_wifi_1_bar.xml
similarity index 85%
rename from app/src/main/res/drawable/ic_signal_wifi_1_bar_24dp.xml
rename to app/src/main/res/drawable/ic_wifi_1_bar.xml
index a6aab842..fa525ec8 100644
--- a/app/src/main/res/drawable/ic_signal_wifi_1_bar_24dp.xml
+++ b/app/src/main/res/drawable/ic_wifi_1_bar.xml
@@ -5,9 +5,9 @@
android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_signal_wifi_2_bar_24dp.xml b/app/src/main/res/drawable/ic_wifi_2_bar.xml
similarity index 85%
rename from app/src/main/res/drawable/ic_signal_wifi_2_bar_24dp.xml
rename to app/src/main/res/drawable/ic_wifi_2_bar.xml
index 3b180880..9a967097 100644
--- a/app/src/main/res/drawable/ic_signal_wifi_2_bar_24dp.xml
+++ b/app/src/main/res/drawable/ic_wifi_2_bar.xml
@@ -5,9 +5,9 @@
android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_signal_wifi_3_bar_24dp.xml b/app/src/main/res/drawable/ic_wifi_3_bar.xml
similarity index 86%
rename from app/src/main/res/drawable/ic_signal_wifi_3_bar_24dp.xml
rename to app/src/main/res/drawable/ic_wifi_3_bar.xml
index 0252ebcf..40872576 100644
--- a/app/src/main/res/drawable/ic_signal_wifi_3_bar_24dp.xml
+++ b/app/src/main/res/drawable/ic_wifi_3_bar.xml
@@ -5,9 +5,9 @@
android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_signal_wifi_4_bar_24dp.xml b/app/src/main/res/drawable/ic_wifi_4_bar.xml
similarity index 89%
rename from app/src/main/res/drawable/ic_signal_wifi_4_bar_24dp.xml
rename to app/src/main/res/drawable/ic_wifi_4_bar.xml
index 645e9fff..0277e813 100644
--- a/app/src/main/res/drawable/ic_signal_wifi_4_bar_24dp.xml
+++ b/app/src/main/res/drawable/ic_wifi_4_bar.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_wifi_lock_black_24dp.xml b/app/src/main/res/drawable/ic_wifi_lock.xml
similarity index 93%
rename from app/src/main/res/drawable/ic_wifi_lock_black_24dp.xml
rename to app/src/main/res/drawable/ic_wifi_lock.xml
index a12c2c7b..63f47c93 100644
--- a/app/src/main/res/drawable/ic_wifi_lock_black_24dp.xml
+++ b/app/src/main/res/drawable/ic_wifi_lock.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_signal_wifi_off_24dp.xml b/app/src/main/res/drawable/ic_wifi_off.xml
similarity index 91%
rename from app/src/main/res/drawable/ic_signal_wifi_off_24dp.xml
rename to app/src/main/res/drawable/ic_wifi_off.xml
index 9ef5e210..a4905df4 100644
--- a/app/src/main/res/drawable/ic_signal_wifi_off_24dp.xml
+++ b/app/src/main/res/drawable/ic_wifi_off.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
diff --git a/app/src/main/res/drawable/ic_xmrto_btc_off.xml b/app/src/main/res/drawable/ic_xmrto_btc_off.xml
index 5a49d3da..a0d67147 100644
--- a/app/src/main/res/drawable/ic_xmrto_btc_off.xml
+++ b/app/src/main/res/drawable/ic_xmrto_btc_off.xml
@@ -4,11 +4,11 @@
android:viewportWidth="32"
android:viewportHeight="32">
diff --git a/app/src/main/res/drawable/ic_xmrto_dash_off.xml b/app/src/main/res/drawable/ic_xmrto_dash_off.xml
index 28a712fd..e1836260 100644
--- a/app/src/main/res/drawable/ic_xmrto_dash_off.xml
+++ b/app/src/main/res/drawable/ic_xmrto_dash_off.xml
@@ -4,12 +4,12 @@
android:viewportWidth="32"
android:viewportHeight="32">
diff --git a/app/src/main/res/drawable/ic_xmrto_doge_off.xml b/app/src/main/res/drawable/ic_xmrto_doge_off.xml
index 51f0639a..c6c6a3b5 100644
--- a/app/src/main/res/drawable/ic_xmrto_doge_off.xml
+++ b/app/src/main/res/drawable/ic_xmrto_doge_off.xml
@@ -4,11 +4,11 @@
android:viewportWidth="32"
android:viewportHeight="32">
diff --git a/app/src/main/res/drawable/ic_xmrto_eth_off.xml b/app/src/main/res/drawable/ic_xmrto_eth_off.xml
index 04da5f01..55c71619 100644
--- a/app/src/main/res/drawable/ic_xmrto_eth_off.xml
+++ b/app/src/main/res/drawable/ic_xmrto_eth_off.xml
@@ -4,35 +4,35 @@
android:viewportWidth="32"
android:viewportHeight="32">
diff --git a/app/src/main/res/drawable/ic_xmrto_logo.xml b/app/src/main/res/drawable/ic_xmrto_logo.xml
index b4bc3f29..17058e2d 100644
--- a/app/src/main/res/drawable/ic_xmrto_logo.xml
+++ b/app/src/main/res/drawable/ic_xmrto_logo.xml
@@ -4,48 +4,48 @@
android:viewportWidth="404.08"
android:viewportHeight="115">
diff --git a/app/src/main/res/drawable/ic_xmrto_ltc_off.xml b/app/src/main/res/drawable/ic_xmrto_ltc_off.xml
index 663c2476..a78f33f0 100644
--- a/app/src/main/res/drawable/ic_xmrto_ltc_off.xml
+++ b/app/src/main/res/drawable/ic_xmrto_ltc_off.xml
@@ -4,11 +4,11 @@
android:viewportWidth="32"
android:viewportHeight="32">
diff --git a/app/src/main/res/drawable/selector_login.xml b/app/src/main/res/drawable/selector_login.xml
index 668fd24f..b62ad953 100644
--- a/app/src/main/res/drawable/selector_login.xml
+++ b/app/src/main/res/drawable/selector_login.xml
@@ -2,13 +2,13 @@
-
-
+
-
-
+
diff --git a/app/src/main/res/drawable/texture_cash.png b/app/src/main/res/drawable/texture_cash.png
deleted file mode 100644
index bcd550b0..00000000
Binary files a/app/src/main/res/drawable/texture_cash.png and /dev/null differ
diff --git a/app/src/main/res/layout/fragment_generate.xml b/app/src/main/res/layout/fragment_generate.xml
index 8b2a2a99..cf6e4a8f 100644
--- a/app/src/main/res/layout/fragment_generate.xml
+++ b/app/src/main/res/layout/fragment_generate.xml
@@ -33,12 +33,12 @@
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/header_top_first"
- app:boxStrokeErrorColor="@color/monerujoPrimary"
+ android:layout_marginBottom="@dimen/header_top_first"
+ app:boxStrokeErrorColor="?colorPrimary"
app:errorEnabled="true"
app:errorIconDrawable="@drawable/ic_smiley_gunther_filled"
- app:errorIconTint="@color/monerujoPrimary"
- app:errorTextColor="@color/monerujoPrimary">
+ app:errorIconTint="?colorPrimary"
+ app:errorTextColor="?colorPrimary">
+ app:icon="@drawable/ic_keyboard_arrow_down" />
+ android:layout_marginStart="8dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginEnd="8dp">
+ android:src="@drawable/ic_renew" />
+ app:drawableStartCompat="@drawable/ic_nfc" />
diff --git a/app/src/main/res/layout/fragment_review.xml b/app/src/main/res/layout/fragment_review.xml
index 6c1ac1b6..29af8dd2 100644
--- a/app/src/main/res/layout/fragment_review.xml
+++ b/app/src/main/res/layout/fragment_review.xml
@@ -89,7 +89,7 @@
android:layout_gravity="center"
android:background="?android:selectableItemBackground"
android:text="@string/label_seed_offset_encrypt"
- app:icon="@drawable/ic_baseline_keyboard_arrow_down_24" />
+ app:icon="@drawable/ic_keyboard_arrow_down" />
+ app:icon="@drawable/ic_keyboard_arrow_down" />
diff --git a/app/src/main/res/layout/fragment_send_address.xml b/app/src/main/res/layout/fragment_send_address.xml
index 8a857278..375e0f0e 100644
--- a/app/src/main/res/layout/fragment_send_address.xml
+++ b/app/src/main/res/layout/fragment_send_address.xml
@@ -214,7 +214,7 @@
android:gravity="center"
android:text="@string/nfc_tag_tap"
android:visibility="visible"
- app:drawableStartCompat="@drawable/ic_nfc_black_24dp" />
+ app:drawableStartCompat="@drawable/ic_nfc" />
diff --git a/app/src/main/res/layout/fragment_send_amount.xml b/app/src/main/res/layout/fragment_send_amount.xml
index 7d70d95e..94d4a967 100644
--- a/app/src/main/res/layout/fragment_send_amount.xml
+++ b/app/src/main/res/layout/fragment_send_amount.xml
@@ -29,7 +29,7 @@
android:layout_alignParentEnd="true"
android:paddingStart="12dp"
android:paddingEnd="12dp"
- android:src="@drawable/ic_all_inclusive_24dp"
+ android:src="@drawable/ic_all_inclusive"
android:visibility="visible" />
@@ -45,7 +45,7 @@
android:id="@+id/rlSweep"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:visibility="gone">
+ android:visibility="visible">
+ android:src="@drawable/ic_all_inclusive" />
+ card_view:drawableEndCompat="@drawable/ic_launch_external" />
diff --git a/app/src/main/res/layout/fragment_subaddress.xml b/app/src/main/res/layout/fragment_subaddress.xml
index ef34160e..e526d150 100644
--- a/app/src/main/res/layout/fragment_subaddress.xml
+++ b/app/src/main/res/layout/fragment_subaddress.xml
@@ -65,7 +65,7 @@
android:layout_gravity="bottom|end"
android:backgroundTint="@android:color/transparent"
android:backgroundTintMode="src_in"
- android:src="@drawable/ic_add_white_24dp"
+ android:src="@drawable/ic_add"
app:borderWidth="0dp"
app:elevation="0dp"
app:fabSize="normal"
diff --git a/app/src/main/res/layout/fragment_tx_info.xml b/app/src/main/res/layout/fragment_tx_info.xml
index 95a256fa..22963177 100644
--- a/app/src/main/res/layout/fragment_tx_info.xml
+++ b/app/src/main/res/layout/fragment_tx_info.xml
@@ -100,7 +100,6 @@
android:gravity="start"
android:padding="8dp"
android:selectAllOnFocus="true"
- android:textColor="@color/gradientLeft"
android:textIsSelectable="true"
tools:text="1.008 BTC" />
@@ -171,7 +170,7 @@
android:drawablePadding="8dp"
android:gravity="center"
android:text="@string/label_send_btc_xmrto_info"
- card_view:drawableEndCompat="@drawable/ic_baseline_launch_24" />
+ card_view:drawableEndCompat="@drawable/ic_launch_external" />
diff --git a/app/src/main/res/layout/fragment_wallet.xml b/app/src/main/res/layout/fragment_wallet.xml
index ad58b2c7..668f3b31 100644
--- a/app/src/main/res/layout/fragment_wallet.xml
+++ b/app/src/main/res/layout/fragment_wallet.xml
@@ -11,14 +11,16 @@
android:layout_gravity="bottom"
android:scaleType="centerCrop" />
-
@@ -126,33 +128,42 @@
android:layout_height="wrap_content"
android:indeterminate="true"
android:visibility="invisible" />
-
-
+ android:layout_marginRight="8dp"
+ android:clipToPadding="false"
+ android:transitionGroup="true"
+ app:layoutManager="LinearLayoutManager"
+ tools:listitem="@layout/item_transaction" />
-
+
+
+ android:layout_height="1dp"
+ android:background="?android:attr/listDivider" />
@@ -161,7 +172,8 @@
style="@style/MoneroButton.Wallet"
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_margin="8dp"
+ android:layout_marginStart="8dp"
+ android:layout_marginEnd="8dp"
android:layout_weight="1"
android:enabled="false"
android:text="@string/label_wallet_receive"
@@ -173,14 +185,16 @@
style="@style/MoneroButton.Wallet"
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_margin="8dp"
+ android:layout_marginStart="8dp"
+ android:layout_marginEnd="8dp"
android:layout_weight="1"
android:enabled="false"
android:text="@string/label_wallet_send"
android:transitionName="@string/send_btn_transition_name"
app:icon="@drawable/ic_send" />
-
-
-
+
+
+
+
diff --git a/app/src/main/res/layout/item_node.xml b/app/src/main/res/layout/item_node.xml
index e3ac81f5..873d1b6e 100644
--- a/app/src/main/res/layout/item_node.xml
+++ b/app/src/main/res/layout/item_node.xml
@@ -67,5 +67,5 @@
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"
android:layout_marginEnd="8dp"
- android:src="@drawable/ic_signal_wifi_4_bar_24dp" />
+ android:src="@drawable/ic_wifi_4_bar" />
diff --git a/app/src/main/res/layout/item_subaddress.xml b/app/src/main/res/layout/item_subaddress.xml
index 059f11dc..5348a287 100644
--- a/app/src/main/res/layout/item_subaddress.xml
+++ b/app/src/main/res/layout/item_subaddress.xml
@@ -39,7 +39,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/tvAddress"
- android:textColor="@color/tx_plus"
+ android:textColor="?attr/positiveColor"
app:layout_constraintBottom_toBottomOf="@id/tvName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
diff --git a/app/src/main/res/layout/item_transaction.xml b/app/src/main/res/layout/item_transaction.xml
index f0075658..9edf678d 100644
--- a/app/src/main/res/layout/item_transaction.xml
+++ b/app/src/main/res/layout/item_transaction.xml
@@ -11,7 +11,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:padding="8dp">
+ android:paddingTop="12dp"
+ android:paddingBottom="12dp"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp">
+ android:src="@drawable/ic_navigate_next" />
diff --git a/app/src/main/res/layout/item_wallet.xml b/app/src/main/res/layout/item_wallet.xml
index 0b918a14..4d18aef9 100644
--- a/app/src/main/res/layout/item_wallet.xml
+++ b/app/src/main/res/layout/item_wallet.xml
@@ -9,7 +9,9 @@
+ android:background="@drawable/selector_login"
+ android:paddingTop="8dp"
+ android:paddingBottom="8dp">
-
-
+ android:layout_above="@id/fabViewL"
+ android:layout_alignEnd="@id/fabImportL">
+ android:layout_above="@id/fabKeyL"
+ android:layout_alignEnd="@id/fabImportL">
+ android:layout_above="@id/fabSeedL"
+ android:layout_alignEnd="@id/fabImportL">
+ android:layout_above="@id/fabImportL"
+ android:layout_alignEnd="@id/fabImportL">
+
+
+
+
+
+
+
+
-
+
@@ -190,11 +221,12 @@
android:layout_gravity="bottom|end"
android:backgroundTint="@android:color/transparent"
android:backgroundTintMode="src_in"
- android:src="@drawable/ic_add_white_24dp"
+ android:src="@drawable/ic_add"
app:borderWidth="0dp"
app:elevation="0dp"
app:fabSize="normal"
- app:pressedTranslationZ="0dp" />
+ app:pressedTranslationZ="0dp"
+ app:tint="?attr/toolbarTextColor" />
-
+
diff --git a/app/src/main/res/layout/prompt_changepw.xml b/app/src/main/res/layout/prompt_changepw.xml
index c533024e..7d8e8f7f 100644
--- a/app/src/main/res/layout/prompt_changepw.xml
+++ b/app/src/main/res/layout/prompt_changepw.xml
@@ -15,11 +15,11 @@
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- app:boxStrokeErrorColor="@color/monerujoPrimary"
+ app:boxStrokeErrorColor="?colorPrimary"
app:errorEnabled="true"
app:errorIconDrawable="@drawable/ic_smiley_gunther_filled"
- app:errorIconTint="@color/monerujoPrimary"
- app:errorTextColor="@color/monerujoPrimary">
+ app:errorIconTint="?colorPrimary"
+ app:errorTextColor="?colorPrimary">
+ android:src="@drawable/ic_close_white_24dp"
+ app:tint="?colorOnSecondary" />
diff --git a/app/src/main/res/layout/view_toolbar.xml b/app/src/main/res/layout/view_toolbar.xml
index a40209f8..0c16bbde 100644
--- a/app/src/main/res/layout/view_toolbar.xml
+++ b/app/src/main/res/layout/view_toolbar.xml
@@ -1,14 +1,16 @@
+ android:background="?android:attr/selectableItemBackgroundBorderless"
+ android:padding="2dp"
+ android:src="@drawable/ic_settings"
+ app:tint="?attr/toolbarTextColor" />
+ android:visibility="visible"
+ app:tint="?attr/toolbarTextColor" />
\ No newline at end of file
diff --git a/app/src/main/res/menu/list_menu.xml b/app/src/main/res/menu/list_menu.xml
index 33e2f6b6..f660304a 100644
--- a/app/src/main/res/menu/list_menu.xml
+++ b/app/src/main/res/menu/list_menu.xml
@@ -2,40 +2,10 @@
\ No newline at end of file
diff --git a/app/src/main/res/menu/receive_menu.xml b/app/src/main/res/menu/receive_menu.xml
index 51c92c7e..e3ece5c4 100644
--- a/app/src/main/res/menu/receive_menu.xml
+++ b/app/src/main/res/menu/receive_menu.xml
@@ -4,8 +4,9 @@
+ app:showAsAction="always" />
\ No newline at end of file
diff --git a/app/src/main/res/menu/tx_info_menu.xml b/app/src/main/res/menu/tx_info_menu.xml
index 0587eed9..710ac36a 100644
--- a/app/src/main/res/menu/tx_info_menu.xml
+++ b/app/src/main/res/menu/tx_info_menu.xml
@@ -4,7 +4,7 @@
diff --git a/app/src/main/res/values-cat/strings.xml b/app/src/main/res/values-cat/strings.xml
index 48c3fab9..bad25c1e 100644
--- a/app/src/main/res/values-cat/strings.xml
+++ b/app/src/main/res/values-cat/strings.xml
@@ -434,4 +434,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index adbfbe18..0e6ce4aa 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -435,4 +435,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 78542466..be5074b9 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -436,4 +436,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml
index 6db51898..f6469732 100644
--- a/app/src/main/res/values-eo/strings.xml
+++ b/app/src/main/res/values-eo/strings.xml
@@ -436,4 +436,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 067eb577..4881b1e5 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -427,4 +427,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index 1bddbd91..59116af4 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -434,4 +434,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index c0d7b00d..1a1c4f94 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -440,4 +440,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 877d0457..8d3b1638 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -438,4 +438,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index b65a7e71..607a48fc 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -439,4 +439,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index ad491ad7..379034eb 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -439,4 +439,17 @@
タッチして詳細情報を見る
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index 7760a570..4ff22222 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -436,4 +436,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-night-v23/styles.xml b/app/src/main/res/values-night-v23/styles.xml
new file mode 100644
index 00000000..331c4506
--- /dev/null
+++ b/app/src/main/res/values-night-v23/styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night-v27/styles.xml b/app/src/main/res/values-night-v27/styles.xml
new file mode 100644
index 00000000..01650499
--- /dev/null
+++ b/app/src/main/res/values-night-v27/styles.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 54d5cbc5..8216c428 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -1,17 +1,63 @@
- #430078
- @color/monerujoBackground
+
+ #ffffff
+ @color/oled_textColorPrimary
+ @color/oled_gradientTopColor
+ @color/oled_colorBackground
+ @color/oled_colorOnBackground
+ @color/oled_gradientTopColor
+ @color/oled_gradientBottomColor
+ #F4F4F4
+ @color/oled_negativeColor
+ #FF104E
+ #3FF3A5
+ #FF104E
+ #838383
+ #7E37F1
+ @color/oled_colorBackground
+ #000000
+ #1B1B1B
+ #070707
+ #7E7E7E
+ #E0E0E0
+ #B6B6B6
+ #090909
+ @color/oled_favouriteColor
+ @color/oled_colorPrimaryVariant
+ @color/oled_colorOnPrimary
+ @color/oled_favouriteColor
+ #ffffff
- @color/monerujoPrimary
-
- #200C22
- #FFF6EF
- #CCC3BD
- #FF6252
- #27C79C
- #FF1A80
- #20FF1A80
- #2D1A2E
+
+ #ffffff
+ #FFF6EF
+ @color/classic_gradientTopColor
+ @color/classic_colorBackground
+ #430078
+ #4E018A
+ #87009F
+ #ffffff
+ @color/classic_negativeColor
+ @color/classic_negativeColor
+ #27C79C
+ #FF1A80
+ #ffffff
+ #FFAB1A
+ @color/classic_colorBackground
+ #200C22
+ #ffffff
+ @color/classic_colorBackground
+ @color/classic_textColorPrimary
+ #FFF6EF
+ #CCC3BD
+ @color/classic_colorBackground
+ @color/classic_negativeColor
+ #F6FFEF
+ @color/classic_colorBackground
+ @color/classic_negativeColor
+ #FFF6EF
+ #FFF6EF
+ #2A142C
diff --git a/app/src/main/res/values-night/styles.xml b/app/src/main/res/values-night/styles.xml
index 74ce628b..f8995194 100644
--- a/app/src/main/res/values-night/styles.xml
+++ b/app/src/main/res/values-night/styles.xml
@@ -1,34 +1,13 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 0743afc1..36faf705 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -436,4 +436,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index ce28cbeb..67688cda 100755
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -429,4 +429,17 @@ aqui.
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 90d44934..a71b0967 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -440,4 +440,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 1ae3c8bb..a5529888 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -436,4 +436,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 867abdbb..fb9e1285 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -440,4 +440,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index bbf75676..e1bf73c4 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -437,4 +437,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index b6eedda2..8e8b44a2 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -435,4 +435,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 694c3753..8bfc334a 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -428,4 +428,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 93665d75..ad6796f5 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -440,4 +440,17 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-v23/styles.xml b/app/src/main/res/values-v23/styles.xml
new file mode 100644
index 00000000..2706f119
--- /dev/null
+++ b/app/src/main/res/values-v23/styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-v27/styles.xml b/app/src/main/res/values-v27/styles.xml
new file mode 100644
index 00000000..798a43da
--- /dev/null
+++ b/app/src/main/res/values-v27/styles.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index aafeac1a..36c80792 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -360,4 +360,17 @@
点击以查看详情
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index a6003f1e..32f5f27a 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -435,4 +435,17 @@
點選以獲得詳細資訊
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
new file mode 100644
index 00000000..ec8b9ad5
--- /dev/null
+++ b/app/src/main/res/values/arrays.xml
@@ -0,0 +1,13 @@
+
+
+ - AUTO
+ - DAY
+ - NIGHT
+
+
+
+ - Classic
+ - Oled
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index faaca86f..4d0e9b43 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -10,4 +10,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index bb315d09..708f928a 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,35 +1,63 @@
- #FF006B
- #FF6105
+
+ #000000
+ @color/oled_textColorPrimary
+ @color/oled_gradientTopColor
+ @color/oled_colorBackground
+ #eeeeee
+ @color/oled_gradientTopColor
+ @color/oled_colorBackground
+ @color/oled_colorOnBackground
+ #FFDB72
+ @color/oled_favouriteColor
+ #27C79C
+ #FF3C79
+ #171717
+ #3DC2FF
+ #000000
+ #ffffff
+ #232323
+ @color/oled_colorBackground
+ @color/oled_colorOnBackground
+ #2E2E2E
+ #6A6A6A
+ #ffffff
+ @color/oled_negativeColor
+ @color/oled_colorBackground
+ @color/oled_colorOnBackground
+ @color/oled_negativeColor
+ @color/oled_colorBackground
- @color/monerujoOrange
- @color/monerujoPink
-
- @color/monerujoBackground
-
- #FFF6EF
- #2D1A2E
- #CCC3BD
- #FA5544
- #00C691
- #F0006B
- #20F0006B
- #FFFDFB
-
- @color/monerujoGreen
- @color/monerujoOrange
- #D81F0759
- #D819001E
-
- @color/monerujoPrimary
- @color/monerujoPrimaryVariant
-
- @color/monerujoPrimaryVariant
- @color/monerujoPrimaryVariant
- @color/monerujoGreen
- @color/monerujoOrange
-
- #1f4e97
+
+ #0C080C
+ #392F39
+ @color/classic_gradientTopColor
+ #FF6105
+ #FF006B
+ #D81F0759
+ #D819001E
+ #FFF6EF
+ @color/classic_gradientBottomColor
+ @color/classic_gradientBottomColor
+ #00C691
+ @color/classic_gradientBottomColor
+ @color/classic_positiveColor
+ #1f4e97
+ @color/classic_colorOnBackground
+ #FFF6EF
+ #0C080C
+ #FFF6EF
+ #2D1A2E
+ #2D1A2E
+ #825985
+ #FFF6EF
+ @color/classic_gradientBottomColor
+ #BC0050
+ #FFF6EF
+ @color/classic_gradientBottomColor
+ #FFF6EF
+ #573059
+ #FFF6EF
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a9534970..efd5f4ed 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -510,4 +510,24 @@
Seed encryption (EXPERIMENTAL)
Seed Offset Phrase (optional)
+
+ preferred_theme
+ preferred_nightmode
+ preferred_locale
+ about_info
+ privacy_info
+ credits_info
+
+ Settings
+ Interface
+ Information
+ Day / Night
+
+ Style
+
+ - Classic
+ - Baldaŭ
+
+
+ Failed to create QR for sharing!
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index f1427dc0..11639113 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -4,27 +4,68 @@
+
+
+