* Support multiple colour themes
* Fix sharing
* Add settings
* Fantastic UI tweaks
This commit is contained in:
m2049r 2022-03-09 19:10:30 +01:00 committed by GitHub
parent 7b96baeca7
commit cdb29bbc2e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
174 changed files with 1419 additions and 755 deletions

View File

@ -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'
}

View File

@ -18,7 +18,6 @@
<intent>
<action android:name="org.torproject.android.intent.action.STATUS" />
</intent>
<intent>
<action android:name="org.torproject.android.REQUEST_HS_PORT" />
</intent>
@ -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">
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|uiMode"
android:exported="true"
android:launchMode="singleTop"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
@ -56,24 +57,25 @@
android:screenOrientation="behind" />
<activity
android:name=".LoginActivity"
android:configChanges="orientation|keyboardHidden|uiMode"
android:configChanges="orientation|keyboardHidden"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="locked">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<data android:scheme="monero" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<data android:scheme="bitcoin" />
<category android:name="android.intent.category.DEFAULT" />
@ -106,4 +108,5 @@
android:resource="@xml/filepaths" />
</provider>
</application>
</manifest>

View File

@ -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) {

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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<Locale> 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");

View File

@ -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);
}

View File

@ -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();

View File

@ -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;
}

View File

@ -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<Locale> 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);
}
}

View File

@ -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<String> destinations = new HashSet<>();
StringBuilder sb = new StringBuilder();

View File

@ -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) {

View File

@ -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);

View File

@ -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());
}

View File

@ -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() ? "&nbsp;.onion&nbsp;&nbsp;" : ""), " " + 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) {

View File

@ -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());
}

View File

@ -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);
}

View File

@ -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<NodeInfoAdapter.ViewHo
static public int getPingIcon(NodeInfo nodeInfo) {
if (nodeInfo.isUnauthorized()) {
return R.drawable.ic_wifi_lock_black_24dp;
return R.drawable.ic_wifi_lock;
}
if (nodeInfo.isValid()) {
final double ping = nodeInfo.getResponseTime();
if (ping < NodeInfo.PING_GOOD) {
return R.drawable.ic_signal_wifi_4_bar_24dp;
return R.drawable.ic_wifi_4_bar;
} else if (ping < NodeInfo.PING_MEDIUM) {
return R.drawable.ic_signal_wifi_3_bar_24dp;
return R.drawable.ic_wifi_3_bar;
} else if (ping < NodeInfo.PING_BAD) {
return R.drawable.ic_signal_wifi_2_bar_24dp;
return R.drawable.ic_wifi_2_bar;
} else {
return R.drawable.ic_signal_wifi_1_bar_24dp;
return R.drawable.ic_wifi_1_bar;
}
} else {
return R.drawable.ic_signal_wifi_off_24dp;
return R.drawable.ic_wifi_off;
}
}

View File

@ -36,6 +36,7 @@ import com.m2049r.xmrwallet.data.Crypto;
import com.m2049r.xmrwallet.data.UserNotes;
import com.m2049r.xmrwallet.model.TransactionInfo;
import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.util.ThemeHelper;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@ -67,10 +68,10 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
public TransactionInfoAdapter(Context context, OnInteractionListener listener) {
this.context = context;
inboundColour = ContextCompat.getColor(context, R.color.tx_plus);
outboundColour = ContextCompat.getColor(context, R.color.tx_minus);
pendingColour = ContextCompat.getColor(context, R.color.tx_pending);
failedColour = ContextCompat.getColor(context, R.color.tx_failed);
inboundColour = ThemeHelper.getThemedColor(context, R.attr.positiveColor);
outboundColour = ThemeHelper.getThemedColor(context, R.attr.negativeColor);
pendingColour = ThemeHelper.getThemedColor(context, R.attr.neutralColor);
failedColour = ThemeHelper.getThemedColor(context, R.attr.neutralColor);
infoItems = new ArrayList<>();
this.listener = listener;
Calendar cal = Calendar.getInstance();
@ -253,8 +254,8 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
tvPaymentId.setText(info);
} else {
Spanned label = Html.fromHtml(context.getString(R.string.tx_details_notes,
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),
tag, info.isEmpty() ? "" : ("&nbsp; " + info)));
tvPaymentId.setText(label);
}

View File

@ -568,7 +568,8 @@ public class WalletService extends Service {
private void startNotfication() {
Intent notificationIntent = new Intent(this, WalletActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent,
Build.VERSION.SDK_INT >= 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)

View File

@ -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);

View File

@ -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<Locale> 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();
}
}

View File

@ -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());
}

View File

@ -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() {

View File

@ -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) {

View File

@ -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);
}
}

View File

@ -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() {

View File

@ -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;
}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorPrimary" android:state_enabled="true"/>
<item android:color="?attr/favouriteColor" android:state_enabled="true"/>
<item android:color="?attr/colorPrimaryVariant"/>
</selector>

View File

@ -13,10 +13,10 @@
android:startY="74.0"
android:type="linear">
<item
android:color="@color/monerujoPink"
android:color="?colorSecondary"
android:offset="0.0" />
<item
android:color="@color/monerujoOrange"
android:color="?colorError"
android:offset="1.0" />
</gradient>
</aapt:attr>

View File

@ -17,10 +17,10 @@
android:startY="58.0"
android:type="linear">
<item
android:color="@color/monerujoPink"
android:color="?colorSecondary"
android:offset="0.0" />
<item
android:color="@color/monerujoOrange"
android:color="?colorError"
android:offset="1.0" />
</gradient>
</aapt:attr>

View File

@ -0,0 +1,14 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:fillColor="?colorPrimary"
android:fillType="evenOdd"
android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
<path
android:fillColor="?android:colorBackground"
android:fillType="nonZero"
android:pathData="M23.189,14.02c0.314,-2.096 -1.283,-3.223 -3.465,-3.975l0.708,-2.84 -1.728,-0.43 -0.69,2.765c-0.454,-0.114 -0.92,-0.22 -1.385,-0.326l0.695,-2.783L15.596,6l-0.708,2.839c-0.376,-0.086 -0.746,-0.17 -1.104,-0.26l0.002,-0.009 -2.384,-0.595 -0.46,1.846s1.283,0.294 1.256,0.312c0.7,0.175 0.826,0.638 0.805,1.006l-0.806,3.235c0.048,0.012 0.11,0.03 0.18,0.057l-0.183,-0.045 -1.13,4.532c-0.086,0.212 -0.303,0.531 -0.793,0.41 0.018,0.025 -1.256,-0.313 -1.256,-0.313l-0.858,1.978 2.25,0.561c0.418,0.105 0.828,0.215 1.231,0.318l-0.715,2.872 1.727,0.43 0.708,-2.84c0.472,0.127 0.93,0.245 1.378,0.357l-0.706,2.828 1.728,0.43 0.715,-2.866c2.948,0.558 5.164,0.333 6.097,-2.333 0.752,-2.146 -0.037,-3.385 -1.588,-4.192 1.13,-0.26 1.98,-1.003 2.207,-2.538zM19.239,19.558c-0.533,2.147 -4.148,0.986 -5.32,0.695l0.95,-3.805c1.172,0.293 4.929,0.872 4.37,3.11zM19.774,13.989c-0.487,1.953 -3.495,0.96 -4.47,0.717l0.86,-3.45c0.975,0.243 4.118,0.696 3.61,2.733z" />
</vector>

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:fillColor="?colorPrimary"
android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
<path
android:fillColor="?android:colorBackground"
android:pathData="M19.086,8.004H11.81l-0.602,3.367 6.562,0.01c3.231,0 4.19,1.173 4.159,3.12 -0.014,0.998 -0.449,2.686 -0.633,3.23 -0.497,1.46 -1.521,3.122 -5.359,3.117l-6.378,-0.004 -0.602,3.371h7.257c2.559,0 3.649,-0.299 4.8,-0.83 2.554,-1.178 4.075,-3.701 4.686,-6.994 0.906,-4.9 -0.224,-8.387 -6.615,-8.387z" />
<path
android:fillColor="?android:colorBackground"
android:pathData="M15.807,15.798c0.237,-0.985 0.312,-1.38 0.312,-1.38H8.673c-1.904,0 -2.176,1.24 -2.357,1.99 -0.237,0.981 -0.312,1.381 -0.312,1.381h7.447c1.903,0 2.175,-1.24 2.356,-1.991z" />
</vector>

View File

@ -0,0 +1,14 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:fillColor="?colorPrimary"
android:fillType="evenOdd"
android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
<path
android:fillColor="?android:colorBackground"
android:fillType="evenOdd"
android:pathData="M13.248,14.61h4.314v2.286h-4.314v4.818h2.721c1.077,0 1.958,-0.145 2.644,-0.437 0.686,-0.291 1.224,-0.694 1.615,-1.21a4.4,4.4 0,0 0,0.796 -1.815,11.4 11.4,0 0,0 0.21,-2.252 11.4,11.4 0,0 0,-0.21 -2.252,4.396 4.396,0 0,0 -0.796,-1.815c-0.391,-0.516 -0.93,-0.919 -1.615,-1.21 -0.686,-0.292 -1.567,-0.437 -2.644,-0.437h-2.721v4.325zM10.482,16.896L9,16.896v-2.285h1.482L10.482,8h6.549c1.21,0 2.257,0.21 3.142,0.627 0.885,0.419 1.607,0.99 2.168,1.715 0.56,0.724 0.977,1.572 1.25,2.543 0.273,0.971 0.409,2.01 0.409,3.115a11.47,11.47 0,0 1,-0.41 3.115c-0.272,0.97 -0.689,1.819 -1.25,2.543 -0.56,0.725 -1.282,1.296 -2.167,1.715 -0.885,0.418 -1.933,0.627 -3.142,0.627h-6.549v-7.104z" />
</vector>

View File

@ -0,0 +1,38 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:fillColor="?colorPrimary"
android:fillType="evenOdd"
android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
<path
android:fillAlpha="0.602"
android:fillColor="?android:colorBackground"
android:fillType="nonZero"
android:pathData="M16.498,4v8.87l7.497,3.35z" />
<path
android:fillColor="?android:colorBackground"
android:fillType="nonZero"
android:pathData="M16.498,4L9,16.22l7.498,-3.35z" />
<path
android:fillAlpha="0.602"
android:fillColor="?android:colorBackground"
android:fillType="nonZero"
android:pathData="M16.498,21.968v6.027L24,17.616z" />
<path
android:fillColor="?android:colorBackground"
android:fillType="nonZero"
android:pathData="M16.498,27.995v-6.028L9,17.616z" />
<path
android:fillAlpha="0.2"
android:fillColor="?android:colorBackground"
android:fillType="nonZero"
android:pathData="M16.498,20.573l7.497,-4.353 -7.497,-3.348z" />
<path
android:fillAlpha="0.602"
android:fillColor="?android:colorBackground"
android:fillType="nonZero"
android:pathData="M9,16.22l7.498,4.353v-7.701z" />
</vector>

View File

@ -0,0 +1,14 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:fillColor="?colorPrimary"
android:fillType="evenOdd"
android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
<path
android:fillColor="?android:colorBackground"
android:fillType="evenOdd"
android:pathData="M10.427,19.214L9,19.768l0.688,-2.759 1.444,-0.58L13.213,8h5.129l-1.519,6.196 1.41,-0.571 -0.68,2.75 -1.427,0.571 -0.848,3.483H23L22.127,24H9.252z" />
</vector>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/monerujoBackground" />
<padding
android:bottom="8dp"
android:left="8dp"
@ -9,7 +8,7 @@
android:top="8dp" />
<stroke
android:width="2dp"
android:color="#FF979797"
android:color="?colorPrimaryVariant"
android:dashGap="8dp"
android:dashWidth="8dp" />
</shape>

View File

@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_all" />
<item
android:height="?attr/actionBarSize"
android:drawable="@drawable/texture_cash" />
</layer-list>

View File

@ -1,7 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_street" />
<item
android:height="?attr/actionBarSize"
android:drawable="@drawable/texture_cash" />
</layer-list>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/monerujoReceive" />
<solid android:color="?attr/positiveColor" />
</shape>

View File

@ -3,7 +3,7 @@
android:shape="rectangle">
<gradient
android:angle="-90"
android:endColor="@color/gradientBottom"
android:startColor="@color/gradientTop"
android:endColor="?attr/gradientBottomColor"
android:startColor="?attr/gradientTopColor"
android:type="linear" />
</shape>

View File

@ -3,7 +3,7 @@
android:shape="oval">
<gradient
android:angle="135"
android:endColor="@color/gradientBottom"
android:startColor="@color/gradientTop"
android:endColor="?attr/gradientBottomColor"
android:startColor="?attr/gradientTopColor"
android:type="linear" />
</shape>

View File

@ -3,7 +3,7 @@
android:shape="rectangle">
<gradient
android:angle="45"
android:endColor="@color/moneroStreetA"
android:startColor="@color/moneroStreetB"
android:endColor="?attr/streetColorA"
android:startColor="?attr/streetColorB"
android:type="linear" />
</shape>

View File

@ -3,8 +3,8 @@
android:shape="rectangle">
<gradient
android:angle="45"
android:endColor="@color/moneroStreetA"
android:startColor="@color/moneroStreetB"
android:endColor="?attr/streetColorA"
android:startColor="?attr/streetColorB"
android:type="linear" />
<corners android:radius="56dp" />
</shape>

View File

@ -1,5 +1,10 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M21,18v1c0,1.1 -0.9,2 -2,2L5,21c-1.11,0 -2,-0.9 -2,-2L3,5c0,-1.1 0.89,-2 2,-2h14c1.1,0 2,0.9 2,2v1h-9c-1.11,0 -2,0.9 -2,2v8c0,1.1 0.89,2 2,2h9zM12,16h10L22,8L12,8v8zM16,13.5c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5z"/>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M21,18v1c0,1.1 -0.9,2 -2,2L5,21c-1.11,0 -2,-0.9 -2,-2L3,5c0,-1.1 0.89,-2 2,-2h14c1.1,0 2,0.9 2,2v1h-9c-1.11,0 -2,0.9 -2,2v8c0,1.1 0.89,2 2,2h9zM12,16h10L22,8L12,8v8zM16,13.5c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5z" />
</vector>

View File

@ -1,9 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFffffff"
android:fillColor="#000"
android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="20.0"
android:viewportHeight="20.0">
<path
android:fillColor="?colorPrimaryVariant"
android:fillColor="#000"
android:pathData="M11,5L9,5L9,9L5,9L5,11L9,11L9,15L11,15L11,11L15,11L15,9L11,9L11,5L11,5ZM10,0C4.5,0 0,4.5 0,10C0,15.5 4.5,20 10,20C15.5,20 20,15.5 20,10C20,4.5 15.5,0 10,0L10,0ZM10,18C5.6,18 2,14.4 2,10C2,5.6 5.6,2 10,2C14.4,2 18,5.6 18,10C18,14.4 14.4,18 10,18L10,18Z" />
</vector>

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="20.0"
android:viewportWidth="20.0">
<path
android:fillColor="@color/monerujoPrimary"
android:pathData="M11,5L9,5L9,9L5,9L5,11L9,11L9,15L11,15L11,11L15,11L15,9L11,9L11,5L11,5ZM10,0C4.5,0 0,4.5 0,10C0,15.5 4.5,20 10,20C15.5,20 20,15.5 20,10C20,4.5 15.5,0 10,0L10,0ZM10,18C5.6,18 2,14.4 2,10C2,5.6 5.6,2 10,2C14.4,2 18,5.6 18,10C18,14.4 14.4,18 10,18L10,18Z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="@color/gradientLeft"
android:fillColor="?colorPrimary"
android:pathData="M18.6,6.62c-1.44,0 -2.8,0.56 -3.77,1.53L12,10.66 10.48,12h0.01L7.8,14.39c-0.64,0.64 -1.49,0.99 -2.4,0.99 -1.87,0 -3.39,-1.51 -3.39,-3.38S3.53,8.62 5.4,8.62c0.91,0 1.76,0.35 2.44,1.03l1.13,1 1.51,-1.34L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62 2.42,6.62 0,9.04 0,12s2.42,5.38 5.4,5.38c1.44,0 2.8,-0.56 3.77,-1.53l2.83,-2.5 0.01,0.01L13.52,12h-0.01l2.69,-2.39c0.64,-0.64 1.49,-0.99 2.4,-0.99 1.87,0 3.39,1.51 3.39,3.38s-1.52,3.38 -3.39,3.38c-0.9,0 -1.76,-0.35 -2.44,-1.03l-1.14,-1.01 -1.51,1.34 1.27,1.12c1.02,1.01 2.37,1.57 3.82,1.57 2.98,0 5.4,-2.41 5.4,-5.38s-2.42,-5.37 -5.4,-5.37z" />
</vector>

View File

@ -1,9 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
android:tint="?attr/colorControlNormal"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="@android:color/white"
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z" />
</vector>

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?colorPrimaryVariant"
android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z" />
</vector>

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M19,19H5V5h7V3H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2v7zM14,3v2h3.59l-9.83,9.83 1.41,1.41L19,6.41V10h2V3h-7z"/>
</vector>

View File

@ -4,6 +4,6 @@
android:viewportHeight="74.0"
android:viewportWidth="74.0">
<path
android:fillColor="@color/monerujoPink"
android:fillColor="?colorSecondary"
android:pathData="M21.83,29.97L16.65,35.15L33.3,51.8L70.3,14.8L65.12,9.62L33.3,41.44L21.83,29.97L21.83,29.97ZM66.6,37C66.6,53.28 53.28,66.6 37,66.6C20.72,66.6 7.4,53.28 7.4,37C7.4,20.72 20.72,7.4 37,7.4C39.96,7.4 42.55,7.77 45.14,8.51L51.06,2.59C46.62,1.11 41.81,0 37,0C16.65,0 0,16.65 0,37C0,57.35 16.65,74 37,74C57.35,74 74,57.35 74,37L66.6,37L66.6,37Z" />
</vector>

View File

@ -4,7 +4,7 @@
android:viewportHeight="58.0"
android:viewportWidth="58.0">
<path
android:fillColor="@color/monerujoPink"
android:fillColor="?colorSecondary"
android:pathData="M17.11,23.49L13.05,27.55L26.1,40.6L55.1,11.6L51.04,7.54L26.1,32.48L17.11,23.49L17.11,23.49ZM52.2,29C52.2,41.76 41.76,52.2 29,52.2C16.24,52.2 5.8,41.76 5.8,29C5.8,16.24 16.24,5.8 29,5.8C31.32,5.8 33.35,6.09 35.38,6.67L40.02,2.03C36.54,0.87 32.77,0 29,0C13.05,0 0,13.05 0,29C0,44.95 13.05,58 29,58C44.95,58 58,44.95 58,29L52.2,29L52.2,29Z"
android:strokeColor="#00000000"
android:strokeWidth="1" />

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="@color/monerujoPrimary"
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
</vector>

View File

@ -7,7 +7,7 @@
android:translateX="0.000000"
android:translateY="+7.000000">
<path
android:fillColor="@color/monerujoGreen"
android:fillColor="?attr/positiveColor"
android:pathData="M17.6,1.4L16.2,0L9.9,6.3L11.3,7.7L17.6,1.4L17.6,1.4ZM21.8,0L11.3,10.6L7.1,6.4L5.7,7.8L11.3,13.4L23.3,1.4L21.8,0L21.8,0ZM0,7.8L5.6,13.4L7,12L1.4,6.4L0,7.8L0,7.8Z" />
</group>
</vector>

View File

@ -4,6 +4,6 @@
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#ff8b0000"
android:fillColor="?colorError"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM17,13L7,13v-2h10v2z" />
</vector>

View File

@ -2,18 +2,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="29dp"
android:height="17dp"
android:viewportHeight="17"
android:viewportWidth="29">
<group
android:translateX="-219.000000"
android:translateY="-74.000000">
<group
android:translateX="219.000000"
android:translateY="74.000000">
<path
android:fillColor="#FEFEFE"
android:pathData="M14.4474298,13.6840973 C11.5770468,13.6840973 9.24995106,11.3571559
android:viewportWidth="29"
android:viewportHeight="17">
<path
android:fillColor="#FEFEFE"
android:pathData="M14.4474298,13.6840973 C11.5770468,13.6840973 9.24995106,11.3571559
9.24995106,8.48677287 C9.24995106,5.61623564 11.5770468,3.28929415
14.4474298,3.28929415 C17.3178128,3.28929415 19.6449085,5.61623564
19.6449085,8.48677287 C19.6449085,11.3571559 17.3178128,13.6840973
@ -22,7 +15,5 @@
8.23695638,16.9734378 14.4474298,16.9734378 C20.6579032,16.9734378
26.0676372,13.5494324 28.8948287,8.48692713 C26.0676372,3.42395904
20.6579032,-0.0000463 14.4474298,-0.0000463"
android:strokeWidth="1" />
</group>
</group>
android:strokeWidth="1" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/gradientRight"
android:fillColor="?attr/favouriteColor"
android:pathData="M12,21.35l-1.45,-1.32C5.4,15.36 2,12.28 2,8.5 2,5.42 4.42,3 7.5,3c1.74,0 3.41,0.81 4.5,2.09C13.09,3.81 14.76,3 16.5,3 19.58,3 22,5.42 22,8.5c0,3.78 -3.4,6.86 -8.55,11.54L12,21.35z"/>
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/gradientRight"
android:fillColor="?attr/favouriteColor"
android:pathData="M16.5,3c-1.74,0 -3.41,0.81 -4.5,2.09C10.91,3.81 9.24,3 7.5,3 4.42,3 2,5.42 2,8.5c0,3.78 3.4,6.86 8.55,11.54L12,21.35l1.45,-1.32C18.6,15.36 22,12.28 22,8.5 22,5.42 19.58,3 16.5,3zM12.1,18.55l-0.1,0.1 -0.1,-0.1C7.14,14.24 4,11.39 4,8.5 4,6.5 5.5,5 7.5,5c1.54,0 3.04,0.99 3.57,2.36h1.87C13.46,5.99 14.96,5 16.5,5c2,0 3.5,1.5 3.5,3.5 0,2.89 -3.14,5.74 -7.9,10.05z"/>
</vector>

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/monerujoToolbarText"
android:pathData="M12,21.35l-1.45,-1.32C5.4,15.36 2,12.28 2,8.5 2,5.42 4.42,3 7.5,3c1.74,0 3.41,0.81 4.5,2.09C13.09,3.81 14.76,3 16.5,3 19.58,3 22,5.42 22,8.5c0,3.78 -3.4,6.86 -8.55,11.54L12,21.35z" />
</vector>

View File

@ -5,21 +5,21 @@
android:viewportHeight="36.0">
<path
android:fillColor="@color/monerujoGreen"
android:fillColor="?attr/positiveColor"
android:pathData="M18,18m -18, 0a 18, 18 0 1, 0 36, 0a 18, 18 0 1, 0 -36, 0" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?colorPrimary"
android:pathData="m23.815,10.47c-0.08,0 -0.16,-0.02 -0.23,-0.06c-1.92,-0.99 -3.58,-1.41 -5.57,-1.41c-1.98,0 -3.86,0.47 -5.57,1.41c-0.24,0.13 -0.54,0.04 -0.68,-0.2c-0.13,-0.24 -0.04,-0.55 0.2,-0.68c1.86,-1.01 3.9,-1.53 6.05,-1.53c2.13,0 3.99,0.47 6.03,1.52c0.25,0.13 0.34,0.43 0.21,0.67c-0.09,0.18 -0.26,0.28 -0.44,0.28z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?colorPrimary"
android:pathData="m9.505,15.72c-0.1,0 -0.2,-0.03 -0.29,-0.09c-0.23,-0.16 -0.28,-0.47 -0.12,-0.7c0.99,-1.4 2.25,-2.5 3.75,-3.27c3.14,-1.62 7.16,-1.63 10.31,-0.01c1.5,0.77 2.76,1.86 3.75,3.25c0.16,0.22 0.11,0.54 -0.12,0.7c-0.23,0.16 -0.54,0.11 -0.7,-0.12c-0.9,-1.26 -2.04,-2.25 -3.39,-2.94c-2.87,-1.47 -6.54,-1.47 -9.4,0.01c-1.36,0.7 -2.5,1.7 -3.4,2.96c-0.08,0.14 -0.23,0.21 -0.39,0.21z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?colorPrimary"
android:pathData="m15.755,27.79c-0.13,0 -0.26,-0.05 -0.35,-0.15c-0.87,-0.87 -1.34,-1.43 -2.01,-2.64c-0.69,-1.23 -1.05,-2.73 -1.05,-4.34c0,-2.97 2.54,-5.39 5.66,-5.39s5.66,2.42 5.66,5.39c0,0.28 -0.22,0.5 -0.5,0.5s-0.5,-0.22 -0.5,-0.5c0,-2.42 -2.09,-4.39 -4.66,-4.39c-2.57,0 -4.66,1.97 -4.66,4.39c0,1.44 0.32,2.77 0.93,3.85c0.64,1.15 1.08,1.64 1.85,2.42c0.19,0.2 0.19,0.51 0,0.71c-0.11,0.1 -0.24,0.15 -0.37,0.15z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?colorPrimary"
android:pathData="m22.925,25.94c-1.19,0 -2.24,-0.3 -3.1,-0.89c-1.49,-1.01 -2.38,-2.65 -2.38,-4.39c0,-0.28 0.22,-0.5 0.5,-0.5s0.5,0.22 0.5,0.5c0,1.41 0.72,2.74 1.94,3.56c0.71,0.48 1.54,0.71 2.54,0.71c0.24,0 0.64,-0.03 1.04,-0.1c0.27,-0.05 0.53,0.13 0.58,0.41c0.05,0.27 -0.13,0.53 -0.41,0.58c-0.57,0.11 -1.07,0.12 -1.21,0.12z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?colorPrimary"
android:pathData="m20.915,28c-0.04,0 -0.09,-0.01 -0.13,-0.02c-1.59,-0.44 -2.63,-1.03 -3.72,-2.1c-1.4,-1.39 -2.17,-3.24 -2.17,-5.22c0,-1.62 1.38,-2.94 3.08,-2.94c1.7,0 3.08,1.32 3.08,2.94c0,1.07 0.93,1.94 2.08,1.94s2.08,-0.87 2.08,-1.94c0,-3.77 -3.25,-6.83 -7.25,-6.83c-2.84,0 -5.44,1.58 -6.61,4.03c-0.39,0.81 -0.59,1.76 -0.59,2.8c0,0.78 0.07,2.01 0.67,3.61c0.1,0.26 -0.03,0.55 -0.29,0.64c-0.26,0.1 -0.55,-0.04 -0.64,-0.29c-0.49,-1.31 -0.73,-2.61 -0.73,-3.96c0,-1.2 0.23,-2.29 0.68,-3.24c1.33,-2.79 4.28,-4.6 7.51,-4.6c4.55,0 8.25,3.51 8.25,7.83c0,1.62 -1.38,2.94 -3.08,2.94s-3.08,-1.32 -3.08,-2.94c0,-1.07 -0.93,-1.94 -2.08,-1.94s-2.08,0.87 -2.08,1.94c0,1.71 0.66,3.31 1.87,4.51c0.95,0.94 1.86,1.46 3.27,1.85c0.27,0.07 0.42,0.35 0.35,0.61c-0.05,0.23 -0.26,0.38 -0.47,0.38z" />
</vector>

View File

@ -1,9 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="@android:color/white"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z" />
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M6,2c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2L18,22c1.1,0 2,-0.9 2,-2L20,8l-6,-6L6,2zM13,9L13,3.5L18.5,9L13,9z" />
</vector>

View File

@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="36dp"
android:height="36dp"
android:viewportWidth="36"
android:viewportHeight="36">
<path
android:fillColor="@color/monerujoGreen"
android:pathData="M18,18m -18, 0a 18, 18 0 1, 0 36, 0a 18, 18 0 1, 0 -36, 0" />
<path
android:fillColor="@color/monerujoToolbarText"
android:pathData="m16.665,8.415001l2.67,0l0,2.67l-2.67,0l0,-2.67zm0,6.5l2.67,0l0,12.67l-2.67,0l0,-12.67z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm1,15h-2v-6h2v6zm0,-8h-2V7h2v2z" />
</vector>

View File

@ -12,7 +12,7 @@
android:translateX="219.000000"
android:translateY="136.000000">
<path
android:fillColor="#FEFEFE"
android:fillColor="#000"
android:pathData="M6.29687258,9.00290326 C4.95784407,9.00290326 3.87228646,7.88216454
3.87228646,6.49992511 C3.87228646,5.11783546 4.95784407,3.99709674
6.29687258,3.99709674 C7.63604617,3.99709674 8.72160379,5.11783546

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#fff"
android:pathData="M19,19H5V5h7V3H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2v7zM14,3v2h3.59l-9.83,9.83 1.41,1.41L19,6.41V10h2V3h-7z" />
</vector>

View File

@ -4,23 +4,26 @@
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:pathData="M0,0h108v108h-108z"
android:strokeWidth="0.3"
android:fillColor="#fff"
android:strokeColor="#000"/>
<path
android:pathData="M0,0h108v108h-108z">
<aapt:attr name="android:fillColor">
<gradient
android:startY="41.11"
android:startX="54"
android:endY="85.99"
android:endX="54"
android:type="linear">
<item android:offset="0" android:color="#FFF26222"/>
<item android:offset="1" android:color="#FFED1A5B"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#fff"
android:pathData="M0,0h108v108h-108z"
android:strokeWidth="0.3"
android:strokeColor="#000" />
<path android:pathData="M0,0h108v108h-108z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="54"
android:endY="85.99"
android:startX="54"
android:startY="41.11"
android:type="linear">
<item
android:color="#FFF26222"
android:offset="0" />
<item
android:color="#FFED1A5B"
android:offset="1" />
</gradient>
</aapt:attr>
</path>
</vector>

View File

@ -3,10 +3,10 @@
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:pathData="M62.76,39.37a11.13,11.13 0,0 0,-8.86 4.39,11.13 11.13,0 0,0 -15.42,-2.25V40H33.89V67.87h4.59V50.53a6.57,6.57 0,1 1,13.13 0V67.87H56.2V50.53a6.57,6.57 0,1 1,13.13 0V67.87a6.57,6.57 0,0 1,-6.57 6.56V79A11.17,11.17 0,0 0,73.92 67.87V49.28h-0.07A11.17,11.17 0,0 0,62.76 39.37Z"
android:fillColor="#fff"/>
<path
android:pathData="M71.62,33.07m-2.38,0a2.38,2.38 0,1 1,4.76 0a2.38,2.38 0,1 1,-4.76 0"
android:fillColor="#fff"/>
<path
android:fillColor="#fff"
android:pathData="M62.76,39.37a11.13,11.13 0,0 0,-8.86 4.39,11.13 11.13,0 0,0 -15.42,-2.25V40H33.89V67.87h4.59V50.53a6.57,6.57 0,1 1,13.13 0V67.87H56.2V50.53a6.57,6.57 0,1 1,13.13 0V67.87a6.57,6.57 0,0 1,-6.57 6.56V79A11.17,11.17 0,0 0,73.92 67.87V49.28h-0.07A11.17,11.17 0,0 0,62.76 39.37Z" />
<path
android:fillColor="#fff"
android:pathData="M71.62,33.07m-2.38,0a2.38,2.38 0,1 1,4.76 0a2.38,2.38 0,1 1,-4.76 0" />
</vector>

View File

@ -1,8 +1,8 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="8.36dp"
android:viewportHeight="184.59"
android:viewportWidth="529.82">
android:viewportWidth="529.82"
android:viewportHeight="184.59">
<path
android:fillColor="#fff"
android:pathData="M517.82,0h-48a99.43,99.43 0,0 1,60 63.84L529.82,12A12,12 0,0 0,517.82 0Z" />

View File

@ -1,33 +1,34 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="135dp"
android:height="48dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="304"
android:viewportHeight="108">
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M73.46,65.14q-4.72,-4.87 -4.73,-12.84t5,-12.87a16.9,16.9 0,0 1,12.38 -4.91,16.89 16.89,0 0,1 12.4,4.92q5,4.92 5,12.84a16.89,16.89 0,0 1,-5.15 12.83A17.57,17.57 0,0 1,85.64 70,16.23 16.23,0 0,1 73.46,65.14ZM85.64,65.33A11.51,11.51 0,0 0,94 61.85q3.54,-3.48 3.54,-9.61t-3.38,-9.58a11.08,11.08 0,0 0,-8.24 -3.44,10.71 10.71,0 0,0 -8.11,3.44q-3.25,3.45 -3.26,9.61t3.13,9.61A10.29,10.29 0,0 0,85.64 65.33Z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M161.3,70a15.84,15.84 0,0 1,-12 -4.88q-4.62,-4.88 -4.63,-12.9t4.7,-12.87a16.22,16.22 0,0 1,12.18 -4.85q7.48,0 12,4.6a16,16 0,0 1,4.51 11.77,20.16 20.16,0 0,1 -0.25,3.38H150.46a11.8,11.8 0,0 0,3.22 8.11,10.32 10.32,0 0,0 7.61,3 10.62,10.62 0,0 0,5.92 -1.57,9.23 9.23,0 0,0 3.54,-4.13h6.14a15.73,15.73 0,0 1,-5.61 7.45A16.33,16.33 0,0 1,161.3 70ZM169,42.16a11.23,11.23 0,0 0,-15.16 -0.06,11.68 11.68,0 0,0 -3.32,8h21.61A10.68,10.68 0,0 0,169 42.19Z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M266.06,65.14q-4.72,-4.87 -4.73,-12.84t4.95,-12.87a18.09,18.09 0,0 1,24.8 0q5,4.92 5,12.85a16.9,16.9 0,0 1,-5.17 12.84A17.61,17.61 0,0 1,278.27 70,16.2 16.2,0 0,1 266.06,65.14ZM278.24,65.33a11.51,11.51 0,0 0,8.36 -3.48q3.54,-3.48 3.54,-9.61t-3.38,-9.58a11.08,11.08 0,0 0,-8.24 -3.44,10.71 10.71,0 0,0 -8.11,3.44q-3.26,3.45 -3.26,9.61t3.13,9.61a10.27,10.27 0,0 0,8 3.45Z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M229.94,35.37V55.59a7.65,7.65 0,0 1,-1.8 4.93c-0.17,0.19 -0.35,0.38 -0.54,0.56a0.52,0.52 0,0 1,-0.11 0.1,6.14 6.14,0 0,1 -0.47,0.42l-0.18,0.13c-0.15,0.11 -0.3,0.22 -0.46,0.32l-0.22,0.13 -0.46,0.25 -0.25,0.12 -0.48,0.2 -0.27,0.1 -0.5,0.14 -0.28,0.08c-0.18,0 -0.37,0.06 -0.55,0.09l-0.26,0a7.55,7.55 0,0 1,-0.83 0,8.67 8.67,0 0,1 -0.89,-0.06l-0.27,0a6,6 0,0 1,-0.61 -0.12l-0.28,-0.07 -0.6,-0.2 -0.23,-0.08a7.92,7.92 0,0 1,-0.78 -0.37h0c-0.24,-0.14 -0.48,-0.29 -0.71,-0.45l-0.18,-0.14a6.4,6.4 0,0 1,-0.5 -0.41l-0.18,-0.16c-0.17,-0.16 -0.33,-0.32 -0.48,-0.49l-0.11,-0.13a6.12,6.12 0,0 1,-0.53 -0.7,7.6 7.6,0 0,1 -1.29,-4.24V35.37h-5.36V54.55l0.06,0.05c0,0.33 -0.06,0.66 -0.06,1A12.92,12.92 0,0 0,212 63.5c0.13,0.17 0.28,0.32 0.41,0.48h0l0.06,0.07h0a12.46,12.46 0,0 0,0.87 0.91l0,0h0l0,0c0.3,0.27 0.6,0.54 0.92,0.79l0.07,0 0.12,0.09c0.3,0.22 0.6,0.43 0.92,0.63l0.1,0.07 0.23,0.12 0.15,0.09h0L216,67l0.35,0.21 0.13,0.06 0.16,0.07 0.08,0 0.18,0.07 0.38,0.17 0.34,0.15 0.28,0.1h0l0.08,0 0.15,0 0.14,0.06h0l0.13,0 0.32,0.09 0.22,0.06 0.26,0.07 0.14,0 0.14,0 0.31,0.07h0l0.47,0.07 0.14,0 0.16,0 0.19,0h0.25a12.33,12.33 0,0 0,2.43 0h0.25l0.19,0 0.16,0 0.14,0 0.47,-0.07h0l0.31,-0.07 0.14,0 0.14,0 0.26,-0.07 0.21,-0.06c0.11,0 0.22,0 0.33,-0.09l0.13,0h0l0.17,-0.07 0.12,0 0.08,0h0l0.28,-0.1 0.11,0 0.67,-0.29 0.12,0 0.08,0 0.16,-0.07 0.13,-0.06c0.21,-0.11 0.41,-0.25 0.62,-0.37l0.23,-0.12 0.1,-0.07c0.32,-0.2 0.62,-0.41 0.92,-0.63l0.12,-0.09 0.07,0c0.32,-0.25 0.62,-0.52 0.92,-0.79l0.05,0h0l0,0c0.3,-0.29 0.59,-0.59 0.87,-0.91h0l0.06,-0.07h0c0.13,-0.16 0.28,-0.31 0.41,-0.48a12.92,12.92 0,0 0,2.69 -7.9c0,-0.34 0,-0.67 -0.06,-1 0,0 0,0 0.06,-0.05V35.37Z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M248.67,26.69m-2.77,0a2.77,2.77 0,1 1,5.54 0a2.77,2.77 0,1 1,-5.54 0" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M246,34.24V68.61a7.66,7.66 0,0 1,-7.65 7.65v5.36a13,13 0,0 0,13 -13V34.24Z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M192.06,69.46V48.38a7.67,7.67 0,0 1,7.66 -7.66V35.37a13,13 0,0 0,-13 13V69.46Z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M116.59,68.6V48.38a7.65,7.65 0,0 1,1.8 -4.93c0.17,-0.19 0.34,-0.38 0.53,-0.56l0.11,-0.1a4.81,4.81 0,0 1,0.48 -0.42l0.17,-0.13 0.47,-0.32 0.21,-0.13c0.15,-0.09 0.31,-0.17 0.47,-0.25a1.92,1.92 0,0 1,0.25 -0.12l0.47,-0.2 0.28,-0.1 0.49,-0.14 0.29,-0.08c0.18,0 0.36,-0.06 0.55,-0.09l0.25,0a7.55,7.55 0,0 1,0.83 -0.05c0.3,0 0.6,0 0.9,0.06l0.26,0a6,6 0,0 1,0.61 0.12l0.29,0.07 0.59,0.2 0.23,0.08a7,7 0,0 1,0.78 0.37h0c0.25,0.14 0.48,0.29 0.72,0.45l0.17,0.14a6.54,6.54 0,0 1,0.51 0.41l0.17,0.16c0.17,0.16 0.33,0.32 0.48,0.49a0.69,0.69 0,0 1,0.11 0.13,7.4 7.4,0 0,1 1.82,4.94V68.6h5.36V49.42l-0.06,-0.05c0,-0.33 0.06,-0.66 0.06,-1a12.92,12.92 0,0 0,-2.69 -7.9,6.12 6.12,0 0,0 -0.41,-0.48h0l-0.06,-0.07h0a10.65,10.65 0,0 0,-0.87 -0.91l0,0h0l0,-0.05c-0.29,-0.27 -0.6,-0.54 -0.92,-0.79l-0.07,0L132,38c-0.3,-0.22 -0.6,-0.44 -0.92,-0.63l-0.1,-0.07 -0.22,-0.12 -0.15,-0.09h0l-0.13,-0.06 -0.35,-0.21 -0.13,-0.06 -0.16,-0.07 -0.07,0 -0.19,-0.07 -0.37,-0.17 -0.35,-0.15 -0.28,-0.1h0l-0.09,0 -0.14,0 -0.14,-0.06h0l-0.13,0c-0.11,0 -0.22,-0.06 -0.33,-0.09a1.41,1.41 0,0 0,-0.22 -0.06l-0.25,-0.07 -0.14,0 -0.14,0 -0.32,-0.07h0l-0.47,-0.07 -0.13,0 -0.16,0 -0.2,0h-0.24c-0.4,0 -0.81,-0.06 -1.22,-0.06s-0.82,0 -1.22,0.06h-0.24l-0.2,0 -0.16,0 -0.13,0 -0.47,0.07h0l-0.32,0.07 -0.14,0 -0.14,0 -0.25,0.07a1.41,1.41 0,0 0,-0.22 0.06c-0.11,0 -0.22,0 -0.33,0.09l-0.13,0h0l-0.17,0.07 -0.11,0 -0.09,0h0l-0.28,0.1 -0.11,0.05 -0.68,0.29 -0.12,0 -0.08,0 -0.15,0.07 -0.13,0.06c-0.22,0.11 -0.42,0.25 -0.63,0.37l-0.23,0.12 -0.09,0.07a10,10 0,0 0,-0.92 0.63l-0.12,0.09 -0.07,0c-0.32,0.25 -0.63,0.52 -0.93,0.79l0,0.05h0l0,0a12.33,12.33 0,0 0,-0.86 0.91h0l-0.06,0.07h0a6.12,6.12 0,0 0,-0.41 0.48,12.92 12.92,0 0,0 -2.69,7.9c0,0.34 0,0.67 0.06,1l-0.06,0.05V68.6Z" />
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="M46.46,34.21a13.35,13.35 0,0 0,-10.63 5.22,13.34 13.34,0 0,0 -18.47,-2.75V34.85l-5.5,0 -0.12,33.4 5.51,0 0.07,-20.77a7.86,7.86 0,0 1,15.72 0.05L33,68.3l5.5,0 0.07,-20.77a7.86,7.86 0,0 1,15.72 0.05L54.2,68.38a7.87,7.87 0,0 1,-7.89 7.83v5.5A13.37,13.37 0,0 0,59.7 68.39l0.08,-22.26h0A13.47,13.47 0,0 0,46.46 34.21Z" />
</vector>

View File

@ -4,9 +4,9 @@
android:viewportWidth="256"
android:viewportHeight="256">
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M127.998,0C57.318,0 0,57.317 0,127.999c0,14.127 2.29,27.716 6.518,40.43H44.8V60.733l83.2,83.2 83.198,-83.2v107.695h38.282c4.231,-12.714 6.521,-26.303 6.521,-40.43C256,57.314 198.681,0 127.998,0" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M108.867,163.062l-36.31,-36.311v67.765H18.623c22.47,36.863 63.051,61.48 109.373,61.48s86.907,-24.617 109.374,-61.48h-53.933V126.75l-36.31,36.31 -19.13,19.129 -19.128,-19.128h-0.002z" />
</vector>

View File

@ -2,18 +2,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="512dp"
android:height="512dp"
android:viewportHeight="1270"
android:viewportWidth="1270">
android:viewportWidth="1270"
android:viewportHeight="1270">
<group
android:translateX="146"
android:translateY="0">
<!--path
android:fillColor="#ff6600"
android:pathData="M-146,-73 L-146,1197
L 1270,1197
L 1270,-73
Z" /-->
<group
android:scaleY="-1"
android:translateX="-103"
@ -23,14 +17,14 @@
android:translateX="1013.0865"
android:translateY="153.4532">
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="m 0,0 c 19.062,0 35.203,6.594 48.406,19.797 13.188,13.187 19.797,29.328 19.797,48.391 0,19.062 -6.609,35.203 -19.797,48.406 -13.203,13.187 -29.156,19.797 -47.859,19.797 -18.703,0 -34.656,-6.61 -47.844,-19.797 C -60.5,103.391 -67.094,87.25 -67.094,68.188 c 0,-19.063 6.406,-35.204 19.25,-48.391 C -35.016,6.594 -19.062,0 0,0" />
</group>
<group
android:translateX="1000"
android:translateY="0">
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="?attr/toolbarTextColor"
android:pathData="m 0,0 c -44.734,44.359 -101.083,66.547 -169.27,66.547 -48.406,0 -91.424,-11.563 -129.19,-34.656 -37.781,-23.094 -67.626,-55.172 -89.626,-96.235 -19.063,42.532 -47.282,74.969 -84.688,97.344 -37.407,22.359 -79.233,33.547 -125.421,33.547 -90.203,0 -155.936,-35.938 -196.936,-107.797 v 98.157 h -101 v -604 h 101 v 340.843 c 0,60.859 14.881,107.062 44.584,138.594 29.703,31.531 70.425,47.312 122.129,47.312 51.687,0 92.073,-15.781 121.417,-47.312 29.328,-31.532 43.87,-77.735 43.87,-138.594 v -340.843 h 99 v 340.843 c 0,60.859 14.983,107.062 44.686,138.594 29.703,31.531 70.288,47.312 121.632,47.312 51.328,0 91.638,-15.781 121.341,-47.312 29.687,-31.532 44.341,-77.735 44.341,-138.594 v -341 l -0.76,-129.797 c 0,-26.406 -5.245,-45.453 -16.605,-56.828 -11.375,-11.359 -30.543,-17.218 -58.418,-17.218 h -43.217 v -82 h 63.03 c 104.125,0 154.97,51.921 154.97,156.046 v 129.797 357.5 C 66.869,-107.625 44.734,-44.375 0,0" />
</group>
</group>

View File

@ -1,8 +1,8 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?colorOnSurface"
android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z" />

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="?colorOnSurface"
android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z" />
</vector>

View File

@ -2,18 +2,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="29dp"
android:height="29dp"
android:viewportHeight="29"
android:viewportWidth="29">
<group
android:translateX="-219.000000"
android:translateY="-7.000000">
<group
android:translateX="219.000000"
android:translateY="7.000000">
<path
android:fillColor="#FEFEFE"
android:pathData="M11.0476403,8.86547314 C10.1626979,9.41441547 9.41459398,10.1624996
android:viewportWidth="29"
android:viewportHeight="29">
<path
android:fillColor="#FEFEFE"
android:pathData="M11.0476403,8.86547314 C10.1626979,9.41441547 9.41459398,10.1624996
8.86563718,11.047619 L3.4524022,5.63432651 L5.63440531,3.45238095
L11.0476403,8.86547314 Z M14.8450352,7.41694052 C14.2508096,7.41694052
13.6733955,7.47975215 13.1190689,7.5952381 L13.1190689,0 L16.5714498,0
@ -35,7 +28,5 @@ L23.36578,25.547619 L17.9524022,20.1345269 Z M14.8450352,21.5830595
C15.4394849,21.5830595 16.0168991,21.5200491 16.5714498,21.4047619
L16.5714498,29 L13.1190689,29 L13.1190689,21.4047619 C13.6733955,21.5200491
14.2508096,21.5830595 14.8450352,21.5830595 Z"
android:strokeWidth="1" />
</group>
</group>
android:strokeWidth="1" />
</vector>

View File

@ -1,9 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?attr/colorPrimary"
android:fillColor="?android:textColorSecondary"
android:pathData="M20,2L4,2c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM20,20L4,20L4,4h16v16zM18,6h-5c-1.1,0 -2,0.9 -2,2v2.28c-0.6,0.35 -1,0.98 -1,1.72 0,1.1 0.9,2 2,2s2,-0.9 2,-2c0,-0.74 -0.4,-1.38 -1,-1.72L13,8h3v8L8,16L8,8h2L10,6L6,6v12h12L18,6z" />
</vector>

View File

@ -1,9 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/monerujoGive"
android:fillColor="?attr/neutralColor"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM6.5,9L10,5.5 13.5,9L11,9v4L9,13L9,9L6.5,9zM17.5,15L14,18.5 10.5,15L13,15v-4h2v4h2.5z" />
</vector>

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/btn_color_selector"
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z" />
</vector>

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?attr/colorPrimary"
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z" />
</vector>

View File

@ -5,17 +5,17 @@
android:viewportHeight="6.3500004">
<path
android:pathData="m4.518,3.147c0.341,-0.341 0.45,-0.827 0.327,-1.26 -0.433,-0.123 -0.919,-0.014 -1.26,0.327 -0.341,0.341 -0.45,0.827 -0.327,1.26 0.433,0.123 0.919,0.014 1.26,-0.328"
android:fillColor="#ffffff"/>
android:fillColor="#000"/>
<path
android:pathData="m2.731,2.214c-0.341,-0.341 -0.826,-0.45 -1.26,-0.327 -0.123,0.433 -0.014,0.919 0.327,1.26 0.341,0.341 0.827,0.45 1.26,0.328 0.123,-0.433 0.014,-0.919 -0.327,-1.26"
android:fillColor="#ffffff"/>
android:fillColor="#000"/>
<path
android:pathData="M3.064,2.185l0.206,0l0,3.126l-0.206,0z"
android:fillColor="#ffffff"/>
android:fillColor="#000"/>
<path
android:pathData="m4.18,5.357c0,-0.549 -0.445,-0.994 -0.994,-0.994 -0.549,0 -0.994,0.445 -0.994,0.994 0,0.549 0.445,0.994 0.994,0.994 0.549,0 0.994,-0.445 0.994,-0.994"
android:fillColor="#ffffff"/>
android:fillColor="#000"/>
<path
android:pathData="m3.834,1.123c0,-0.482 -0.266,-0.903 -0.659,-1.123 -0.393,0.22 -0.659,0.64 -0.659,1.123 -0,0.483 0.266,0.903 0.659,1.123 0.393,-0.22 0.659,-0.64 0.659,-1.123"
android:fillColor="#ffffff"/>
android:fillColor="#000"/>
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z" />
</vector>

View File

@ -1,9 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/monerujoToolbarText"
android:fillColor="@android:color/white"
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" />
</vector>

View File

@ -4,9 +4,9 @@
android:viewportWidth="80.52"
android:viewportHeight="80.46">
<path
android:fillColor="@color/monerujoPrimary"
android:pathData="M66.07,9.67A40,40 0,0 0,9.69 66.11Z" />>
android:fillColor="?colorPrimary"
android:pathData="M66.07,9.67A40,40 0,0 0,9.69 66.11Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M13.92,70.34a40,40 0,0 0,56.45 -56.5Z" />
</vector>

View File

@ -4,45 +4,45 @@
android:viewportWidth="648"
android:viewportHeight="80">
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M65.94,9.56A40,40 0,0 0,9.56 66Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M13.79,70.23a40,40 0,0 0,56.45 -56.5Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M144.75,28a9.12,9.12 0,0 0,-1 -4.48A8.81,8.81 0,0 0,141 20.29a14.14,14.14 0,0 0,-4 -1.95,15.61 15.61,0 0,0 -4.84,-0.68 15.34,15.34 0,0 0,-4.24 0.58,11.88 11.88,0 0,0 -3.55,1.66 7.15,7.15 0,0 0,-2.47 2.63,7.26 7.26,0 0,0 -0.88,3.61v0.49a7.11,7.11 0,0 0,0.88 3.7A6.91,6.91 0,0 0,124.53 33,19 19,0 0,0 129,34.82a58.17,58.17 0,0 0,6.31 1.27C140.9,37 145,38.52 147.61,41a12.31,12.31 0,0 1,3.94 9.66v0.87a16,16 0,0 1,-1.18 6.25,13.23 13.23,0 0,1 -3.55,4.87 17,17 0,0 1,-5.72 3.22,24.6 24.6,0 0,1 -8,1.17A26.21,26.21 0,0 1,124 65.54a18,18 0,0 1,-6.6 -4.1,18.51 18.51,0 0,1 -4.05,-6.14A21.41,21.41 0,0 1,112 47.59V45.35h6.41V47.2c0,4.68 1.28,8.1 3.85,10.44s6.11,3.51 10.75,3.51c4,0 7,-0.88 9,-2.63a8.82,8.82 0,0 0,3 -6.93V51.1a7.26,7.26 0,0 0,-3 -6.33q-3.12,-2.21 -10.06,-3.22a38.07,38.07 0,0 1,-7.3 -1.66,17.24 17.24,0 0,1 -5.53,-2.83 13.62,13.62 0,0 1,-3.55 -4.29,13.48 13.48,0 0,1 -1.18,-5.85V26a11.87,11.87 0,0 1,1.28 -5.65,13.37 13.37,0 0,1 3.65,-4.49A16.94,16.94 0,0 1,124.92 13a26.31,26.31 0,0 1,15.19 0.29,21.17 21.17,0 0,1 6,3.41 14.69,14.69 0,0 1,5 11.12V31h-6.41V28Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M161.91,12.68h33.93v5.85H182.13V59.59h13.71v5.85H161.91V59.59h13.71v-41H161.91Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M207.78,12.68h17.56q9.91,0 14.5,4.68c3,3.12 4.53,8.1 4.53,14.92L244.37,45.84c0,6.82 -1.48,11.8 -4.53,14.92s-7.89,4.68 -14.5,4.68L207.78,65.44L207.78,59.49h4.54L212.32,18.63h-4.54ZM224.45,59.68a22.74,22.74 0,0 0,6.11 -0.69,9.73 9.73,0 0,0 4.24,-2.34 9.43,9.43 0,0 0,2.47 -4.39,26.62 26.62,0 0,0 0.79,-6.82L238.06,32.77a26.2,26.2 0,0 0,-0.79 -6.83,10 10,0 0,0 -2.47,-4.38 9.73,9.73 0,0 0,-4.24 -2.34,22.26 22.26,0 0,0 -6.11,-0.69h-5.62L218.83,59.59h5.62Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M256.21,12.68h32.35v5.85H262.62V36.09h25.55v5.85H262.62V59.59h26.43v5.85H256.21Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M331.67,28a9.12,9.12 0,0 0,-1 -4.48,8.81 8.81,0 0,0 -2.76,-3.22 14.2,14.2 0,0 0,-4.05 -1.95,15.55 15.55,0 0,0 -4.83,-0.68 15.34,15.34 0,0 0,-4.24 0.58,11.77 11.77,0 0,0 -3.55,1.66 7.07,7.07 0,0 0,-2.47 2.63,7.26 7.26,0 0,0 -0.89,3.61v0.49a7.11,7.11 0,0 0,0.89 3.7A6.91,6.91 0,0 0,311.45 33a19,19 0,0 0,4.44 1.85,58.17 58.17,0 0,0 6.31,1.27c5.62,0.87 9.76,2.43 12.33,4.87a12.31,12.31 0,0 1,3.94 9.66v0.87a16,16 0,0 1,-1.18 6.25,13.23 13.23,0 0,1 -3.55,4.87A17,17 0,0 1,328 65.83,24.64 24.64,0 0,1 320,67 26.21,26.21 0,0 1,311 65.54a18.09,18.09 0,0 1,-6.61 -4.1,18.63 18.63,0 0,1 -4,-6.14 21.41,21.41 0,0 1,-1.38 -7.71V45.35h6.41V47.2c0,4.68 1.28,8.1 3.85,10.44s6.11,3.51 10.75,3.51c3.94,0 7,-0.88 9,-2.63A8.8,8.8 0,0 0,332 51.59V51.1a7.24,7.24 0,0 0,-3.06 -6.33q-3.11,-2.21 -10.06,-3.22a38,38 0,0 1,-7.29 -1.66A17.24,17.24 0,0 1,306 37.06a13.62,13.62 0,0 1,-3.55 -4.29,13.48 13.48,0 0,1 -1.18,-5.85V26a11.87,11.87 0,0 1,1.28 -5.65,13.37 13.37,0 0,1 3.65,-4.49A16.94,16.94 0,0 1,311.84 13a26.31,26.31 0,0 1,15.19 0.29,21.17 21.17,0 0,1 6,3.41 14.69,14.69 0,0 1,5 11.12V31h-6.41Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M348,12.68h6.41V36.09h22.79V12.68h6.41V65.54h-6.41V42H354.45V65.63H348Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M395.68,12.68h33.93v5.85H415.9V59.59h13.71v5.85H395.68V59.59h13.71v-41H395.68Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M443.23,12.68h32.84v5.85H449.64V36.09h25.94v5.85H449.64v23.6h-6.41V12.68Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M487.32,12.68H524.9v5.85H509.32v47H502.9V18.63H487.32V12.68Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M537.33,61.34a4.74,4.74 0,0 1,1.58 -3.7,5 5,0 0,1 3.74,-1.56A5.36,5.36 0,0 1,548 61.34a4.76,4.76 0,0 1,-1.58 3.71,5 5,0 0,1 -3.75,1.56 4.86,4.86 0,0 1,-3.74 -1.56A4.76,4.76 0,0 1,537.33 61.34Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M595.82,52.47H572.94l-3.85,13.16h-6.91l16.08,-52.95h12l16.17,52.86h-6.9ZM583.89,15.41l-9.28,31.11H594l-9.27,-31.11Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M614.07,12.68H648v5.85H634.29V59.59H648v5.85H614.07V59.59h13.71v-41H614.07Z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M43.37,4.22a38.5,38.5 0,1 0,38.5 38.49A38.54,38.54 0,0 0,43.37 4.22ZM17.51,36.9c0,-3.91 2.77,-9.74 10.42,-9.74S38.35,33 38.35,36.9a3.5,3.5 0,0 1,-7 0c-0.06,-1.8 -1.22,-2.74 -3.42,-2.74 -3.09,0 -3.42,1.92 -3.42,2.74a3.5,3.5 0,0 1,-7 0ZM65,50.11c-1.14,5.82 -7.12,16.83 -21.59,16.83s-20.45,-11 -21.59,-16.83a3.5,3.5 0,0 1,3.44 -4.17L61.53,45.94a3.5,3.5 0,0 1,2.7 1.27A3.46,3.46 0,0 1,65 50.11ZM65.78,40.4a3.5,3.5 0,0 1,-3.5 -3.5c-0.07,-1.8 -1.22,-2.74 -3.42,-2.74 -3.09,0 -3.43,1.92 -3.43,2.74a3.5,3.5 0,0 1,-7 0c0,-3.91 2.78,-9.74 10.43,-9.74S69.24,33 69.24,36.9A3.5,3.5 0,0 1,65.74 40.4Z" />
</vector>

View File

@ -4,9 +4,9 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M77.39,26A38.49,38.49 0,0 0,8 26Z" />
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M79.54,33c-2.3,8.19 -9.06,14.12 -17.06,14.12S47.73,41.19 45.43,33L41.34,33C39,41.19 31.93,47.12 23.63,47.12S8.31,41.19 5.92,33L5.46,33A38.5,38.5 0,1 0,80 33ZM34.65,63.54L12.24,63.54C20,51.84 29.09,49 32.86,48.34a8.44,8.44 0,0 1,1.6 -0.21h0.19a7.71,7.71 0,0 1,0 15.42ZM50.42,63.54a7.71,7.71 0,0 1,0 -15.42h0.19a8.34,8.34 0,0 1,1.6 0.21c3.78,0.68 12.87,3.5 20.62,15.2Z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M42.8,4.22A38.5,38.5 0,1 0,81.29 42.71,38.54 38.54,0 0,0 42.8,4.22ZM58.21,28.5a5.29,5.29 0,1 1,-5.28 5.28A5.28,5.28 0,0 1,58.21 28.5ZM27.39,28.5a5.29,5.29 0,1 1,-5.29 5.28A5.28,5.28 0,0 1,27.39 28.5ZM64.39,50.11c-1.14,5.82 -7.12,16.83 -21.59,16.83s-20.45,-11 -21.59,-16.83a3.5,3.5 0,1 1,6.87 -1.34c0.23,1.12 2.68,11.17 14.72,11.17 12.39,0 14.63,-10.72 14.72,-11.17a3.5,3.5 0,1 1,6.87 1.34Z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M42.71,4.22a38.5,38.5 0,1 0,38.5 38.49A38.54,38.54 0,0 0,42.71 4.22ZM22,33.78a5.28,5.28 0,1 1,5.28 5.29A5.27,5.27 0,0 1,22 33.78ZM58.83,53.78L28,60.24a3.5,3.5 0,0 1,-1.44 -6.85L57.4,46.9a3.5,3.5 0,0 1,1.45 6.85ZM58.11,39.1a5.29,5.29 0,1 1,5.28 -5.29A5.29,5.29 0,0 1,58.13 39.07Z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M42.84,4.22a38.5,38.5 0,1 0,38.5 38.49A38.54,38.54 0,0 0,42.84 4.22ZM22.15,33.78a5.28,5.28 0,1 1,5.28 5.29A5.27,5.27 0,0 1,22.15 33.78ZM58.26,56.84L27.43,56.84a3.5,3.5 0,0 1,0 -7L58.26,49.84a3.5,3.5 0,0 1,0 7ZM58.26,39.07a5.29,5.29 0,1 1,5.28 -5.29A5.29,5.29 0,0 1,58.26 39.07Z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="85.43"
android:viewportHeight="85.43">
<path
android:fillColor="@color/monerujoPrimary"
android:fillColor="?colorPrimary"
android:pathData="M44.89,4.22A38.5,38.5 0,1 0,83.38 42.71,38.54 38.54,0 0,0 44.89,4.22ZM19,30.66a3.5,3.5 0,0 1,7 0c0.07,1.8 1.22,2.74 3.42,2.74 3.09,0 3.43,-1.91 3.43,-2.74a3.5,3.5 0,0 1,7 0c0,3.92 -2.78,9.74 -10.43,9.74S19,34.58 19,30.66ZM65.31,60.29a3.44,3.44 0,0 1,-2 0.65,3.49 3.49,0 0,1 -2.86,-1.47 18.77,18.77 0,0 0,-31.09 0,3.5 3.5,0 0,1 -5.71,-4.06A26.25,26.25 0,0 1,44.89 44.22,26.25 26.25,0 0,1 66.14,55.41 3.5,3.5 0,0 1,65.31 60.29ZM60.31,40.4c-7.65,0 -10.42,-5.82 -10.42,-9.74a3.5,3.5 0,1 1,7 0c0.06,1.8 1.22,2.74 3.42,2.74 3.09,0 3.42,-1.91 3.42,-2.74a3.5,3.5 0,1 1,7 0C70.75,34.58 68,40.4 60.33,40.4Z" />
</vector>

View File

@ -4,6 +4,6 @@
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="@color/monerujoGreen"
android:fillColor="?attr/positiveColor"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z" />
</vector>

View File

@ -5,9 +5,9 @@
android:viewportHeight="24.0">
<path
android:fillAlpha=".3"
android:fillColor="@color/wifi"
android:fillColor="?colorPrimary"
android:pathData="M12.01,21.49L23.64,7c-0.45,-0.34 -4.93,-4 -11.64,-4C5.28,3 0.81,6.66 0.36,7l11.63,14.49 0.01,0.01 0.01,-0.01z" />
<path
android:fillColor="@color/wifi"
android:fillColor="?colorPrimary"
android:pathData="M6.67,14.86L12,21.49v0.01l0.01,-0.01 5.33,-6.63C17.06,14.65 15.03,13 12,13s-5.06,1.65 -5.33,1.86z" />
</vector>

View File

@ -5,9 +5,9 @@
android:viewportHeight="24.0">
<path
android:fillAlpha=".3"
android:fillColor="@color/wifi"
android:fillColor="?colorPrimary"
android:pathData="M12.01,21.49L23.64,7c-0.45,-0.34 -4.93,-4 -11.64,-4C5.28,3 0.81,6.66 0.36,7l11.63,14.49 0.01,0.01 0.01,-0.01z" />
<path
android:fillColor="@color/wifi"
android:fillColor="?colorPrimary"
android:pathData="M4.79,12.52l7.2,8.98H12l0.01,-0.01 7.2,-8.98C18.85,12.24 16.1,10 12,10s-6.85,2.24 -7.21,2.52z" />
</vector>

Some files were not shown because too many files have changed in this diff Show More