1
mirror of https://github.com/m2049r/xmrwallet synced 2025-09-03 08:23:04 +02:00

Compare commits

...

32 Commits

Author SHA1 Message Date
m2049r
0512af1496 Monero v0.18.1.0 2022-08-13 10:20:21 +02:00
m2049r
bd2c49669a Feature v18 (#860)
* versions

* remove x86 builds
2022-08-10 16:50:18 +02:00
Kartal Kaan Bozdoğan
ac7831d0f9 Upgrade to 0.18.0.0 Fluorine Fermi (#856)
* Upgrade to Monero wallet 0.18.0.0 Fluorine Fermi
2022-08-05 01:09:56 +02:00
Kartal Kaan Bozdoğan
0f0b9a38c7 Fix new wallet restore height (#858)
* New wallets: set current block height as the restore height.
  Go back 4 days for estimated heights
2022-08-05 01:09:10 +02:00
Kartal Kaan Bozdoğan
807db19603 Fixed zlib hashes (#845) 2022-08-05 01:02:34 +02:00
m2049r
c956f38899 remove S for Nano 2022-05-23 19:47:53 +02:00
m2049r
db68f517d3 bump version 2022-05-23 19:31:22 +02:00
m2049r
d4b293af80 new strings (#839) 2022-05-23 19:20:28 +02:00
m2049r
f7bbfc2fac remove untranslatables (#838) 2022-05-23 19:16:49 +02:00
m2049r
e08964749e Fix entities (#837)
* remove ✓

* resolve nbsp
2022-05-23 19:03:45 +02:00
Dave Scotese
a05fa9d177 Exchange rate was hard to find. (#763)
The FAQ I added uses both "exchange" and "rate," neither of which appeared in the FAQ otherwise.
2022-05-23 18:42:30 +02:00
kivojo
7fe2fbe37d Translation to Farsi/Persian (#815)
* about.xml translated to Farsi

* minor improvements in translation

* one small typo

* help.xml translated to Farsi

* <br/> tags fixed

* better translation of word Mnemonic to Farsi

* strings.xml translated to Farsi
READY for PR!

* oops, my bad! deleted the untranslatable strings.

Co-authored-by: kivojo <user@example.com>
2022-05-23 18:41:06 +02:00
kingoflove819
40e30fed08 Create about.xml (#809)
* Create about.xml

* Update about.xml

* Completed translating about.xml for tamil
2022-05-23 18:39:38 +02:00
kingoflove819
320c7865ff Create help.xml (#810)
* Create help.xml

* Update help.xml

* Update help.xml

* Update help.xml

* Update help.xml
2022-05-23 18:39:23 +02:00
kingoflove819
5e8cf8010e Create strings.xml (#811)
* Create strings.xml

* Update strings.xml

* Update strings.xml

* Update strings.xml

* Update strings.xml

* Completed strings.xml
2022-05-23 18:39:07 +02:00
Age Bosma
e671fa19e0 Specify wallet folder (#835)
* Specify wallet folder

* Update FAQ.md
2022-05-23 18:36:22 +02:00
m2049r
20d5b9a100 fix sweep to be invisible by default 2022-05-15 21:56:38 +02:00
m2049r
5d489a634b bump version 2022-05-15 17:25:28 +02:00
m2049r
59b6f484fd update to monero v0.17.3.2 2022-05-15 17:24:54 +02:00
m2049r
ecaa49d67d upgrade build files 2022-05-15 15:57:11 +02:00
jont4
d2dc53599e Update PT-rBR strings (#813)
* Update pt-rBR

* Update app/src/main/res/values-pt-rBR/strings.xml

Co-authored-by: netrik182 <30935310+netrik182@users.noreply.github.com>

* Update app/src/main/res/values-pt-rBR/strings.xml

Co-authored-by: netrik182 <30935310+netrik182@users.noreply.github.com>

* Update strings.xml

fix as suggested

Co-authored-by: jontaix <31804298+jontaix@users.noreply.github.com>
Co-authored-by: netrik182 <30935310+netrik182@users.noreply.github.com>
Co-authored-by: m2049r <m2049r@monerujo.io>
2022-05-01 11:51:49 +02:00
Лапки
4d8b26f97f Update strings.xml (#826) 2022-05-01 11:44:52 +02:00
Justin Berman
581c76e7be setName uses async network helper in case of reverse DNS lookup (#818, #827) (#828) 2022-05-01 11:44:27 +02:00
AnonimaUzanto
6f66862870 Adding support for Ledger Nano S Plus (#832) 2022-05-01 11:35:01 +02:00
m2049r
dd92f7bb36 bump version 2022-03-13 15:37:28 +01:00
m2049r
46808d306b clean transitions 2022-03-12 23:10:34 +01:00
m2049r
20503d2cbd remove send/receive transitions 2022-03-11 00:25:50 +01:00
m2049r
604691ca7e fix FABs 2022-03-10 21:06:19 +01:00
m2049r
1b626ba2b0 improve transitions 2022-03-10 20:57:57 +01:00
m2049r
0ed7bdfcee remove test Dockerfile 2022-03-10 09:07:14 +01:00
m2049r
524c3dd79f upgrade ci image to 2022.03-ndk (#822) 2022-03-10 09:04:43 +01:00
m2049r
197dffeae1 fix tests 2022-03-10 07:53:52 +01:00
66 changed files with 2452 additions and 377 deletions

View File

@@ -3,13 +3,11 @@ jobs:
build:
working_directory: ~/code
docker:
- image: circleci/android:api-28-ndk
- image: cimg/android:2022.03-ndk
environment:
JVM_OPTS: -Xmx3200m
steps:
- checkout
- run: yes | sdkmanager --licenses || exit 0
- run: yes | sdkmanager --update || exit 0
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- run:

View File

@@ -121,7 +121,7 @@ set_target_properties(easylogging PROPERTIES IMPORTED_LOCATION
add_library(unbound STATIC IMPORTED)
set_target_properties(unbound PROPERTIES IMPORTED_LOCATION
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libunbound.a)
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/libunbound.a)
add_library(epee STATIC IMPORTED)
set_target_properties(epee PROPERTIES IMPORTED_LOCATION

View File

@@ -8,8 +8,8 @@ android {
applicationId "com.m2049r.xmrwallet"
minSdkVersion 21
targetSdkVersion 31
versionCode 1303
versionName "2.3.3 'Baldaŭ'"
versionCode 3001
versionName "3.0.1 'Fluorine Fermi'"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
@@ -72,7 +72,7 @@ android {
abi {
enable true
reset()
include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
include 'armeabi-v7a', 'arm64-v8a', 'x86_64'
universalApk true
}
}
@@ -111,6 +111,7 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
namespace 'com.m2049r.xmrwallet'
}
static def getId(name) {
@@ -129,7 +130,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'androidx.preference:preference:1.2.0'
implementation 'com.google.android.material:material:1.5.0'
implementation 'com.google.android.material:material:1.6.0'
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
implementation "com.squareup.okhttp3:okhttp:4.9.3"

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.m2049r.xmrwallet">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

File diff suppressed because it is too large Load Diff

View File

@@ -78,7 +78,7 @@ public class BTChipTransportAndroidHID implements BTChipTransport {
}
private static final int VID = 0x2C97;
private static final int[] PID_HIDS = {0x0001, 0x0004};
private static final int[] PID_HIDS = {0x0001, 0x0004, 0x0005};
private UsbDeviceConnection connection;
private UsbInterface dongleInterface;

View File

@@ -916,9 +916,9 @@ public class LoginActivity extends BaseActivity
@Override
public boolean createWallet(File aFile, String password) {
NodeInfo currentNode = getNode();
// get it from the connected node if we have one, and go back ca. 4 days
// get it from the connected node if we have one
final long restoreHeight =
(currentNode != null) ? currentNode.getHeight() - 2000 : -1;
(currentNode != null) ? currentNode.getHeight() : -1;
Wallet newWallet = WalletManager.getInstance()
.createWallet(aFile, password, MNEMONIC_LANGUAGE, restoreHeight);
return checkAndCloseWallet(newWallet);

View File

@@ -415,7 +415,14 @@ public class NodeFragment extends Fragment
}
etNodeHost.setError(null);
nodeInfo.setRpcPort(port);
nodeInfo.setName(etNodeName.getEditText().getText().toString().trim());
// setName() may trigger reverse DNS
Helper.runWithNetwork(new Helper.Action() {
@Override
public boolean run() {
nodeInfo.setName(etNodeName.getEditText().getText().toString().trim());
return true;
}
});
nodeInfo.setUsername(etNodeUser.getEditText().getText().toString().trim());
nodeInfo.setPassword(etNodePass.getEditText().getText().toString()); // no trim for pw
return true;

View File

@@ -30,7 +30,6 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.transition.MaterialElevationScale;
import com.m2049r.xmrwallet.data.Subaddress;
import com.m2049r.xmrwallet.layout.SubaddressInfoAdapter;
import com.m2049r.xmrwallet.ledger.LedgerProgressDialog;
@@ -117,14 +116,6 @@ public class SubaddressFragment extends Fragment implements SubaddressInfoAdapte
managerMode = ((b != null) && (MODE_MANAGER.equals(b.getString(KEY_MODE))));
View view = inflater.inflate(R.layout.fragment_subaddress, container, false);
final MaterialElevationScale exitTransition = new MaterialElevationScale(false);
exitTransition.setDuration(getResources().getInteger(R.integer.tx_item_transition_duration));
setExitTransition(exitTransition);
final MaterialElevationScale reenterTransition = new MaterialElevationScale(true);
reenterTransition.setDuration(getResources().getInteger(R.integer.tx_item_transition_duration));
setReenterTransition(reenterTransition);
view.findViewById(R.id.fab).setOnClickListener(this);
if (managerMode) {
@@ -154,11 +145,6 @@ public class SubaddressFragment extends Fragment implements SubaddressInfoAdapte
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
postponeEnterTransition();
view.getViewTreeObserver().addOnPreDrawListener(() -> {
startPostponedEnterTransition();
return true;
});
}
public void loadList() {

View File

@@ -29,15 +29,15 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import androidx.transition.Transition;
import androidx.transition.TransitionInflater;
import com.google.android.material.textfield.TextInputLayout;
import com.google.android.material.transition.MaterialContainerTransform;
import com.m2049r.xmrwallet.data.Subaddress;
import com.m2049r.xmrwallet.layout.TransactionInfoAdapter;
import com.m2049r.xmrwallet.model.TransactionInfo;
import com.m2049r.xmrwallet.model.Wallet;
import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.util.ThemeHelper;
import com.m2049r.xmrwallet.widget.Toolbar;
import java.util.ArrayList;
@@ -102,10 +102,8 @@ public class SubaddressInfoFragment extends Fragment
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final MaterialContainerTransform transform = new MaterialContainerTransform();
transform.setDrawingViewId(R.id.fragment_container);
transform.setDuration(getResources().getInteger(R.integer.tx_item_transition_duration));
transform.setAllContainerColors(ThemeHelper.getThemedColor(getContext(), android.R.attr.colorBackground));
Transition transform = TransitionInflater.from(requireContext())
.inflateTransition(R.transition.details);
setSharedElementEnterTransition(transform);
}

View File

@@ -36,9 +36,9 @@ import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.transition.Transition;
import androidx.transition.TransitionInflater;
import com.google.android.material.transition.MaterialContainerTransform;
import com.google.android.material.transition.MaterialElevationScale;
import com.m2049r.xmrwallet.data.Subaddress;
import com.m2049r.xmrwallet.data.UserNotes;
import com.m2049r.xmrwallet.model.TransactionInfo;
@@ -96,13 +96,6 @@ public class TxFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_tx_info, container, false);
final MaterialElevationScale exitTransition = new MaterialElevationScale(false);
exitTransition.setDuration(getResources().getInteger(R.integer.tx_item_transition_duration));
setExitTransition(exitTransition);
final MaterialElevationScale reenterTransition = new MaterialElevationScale(true);
reenterTransition.setDuration(getResources().getInteger(R.integer.tx_item_transition_duration));
setReenterTransition(reenterTransition);
cvXmrTo = view.findViewById(R.id.cvXmrTo);
tvTxXmrToKey = view.findViewById(R.id.tvTxXmrToKey);
tvDestinationBtc = view.findViewById(R.id.tvDestinationBtc);
@@ -347,10 +340,8 @@ public class TxFragment extends Fragment {
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
final MaterialContainerTransform transform = new MaterialContainerTransform();
transform.setDrawingViewId(R.id.fragment_container);
transform.setDuration(getResources().getInteger(R.integer.tx_item_transition_duration));
transform.setAllContainerColors(ThemeHelper.getThemedColor(getContext(), android.R.attr.colorBackground));
Transition transform = TransitionInflater.from(requireContext())
.inflateTransition(R.transition.details);
setSharedElementEnterTransition(transform);
}

View File

@@ -539,7 +539,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
@Override
public void onSendRequest(View view) {
replaceFragmentWithTransition(view, SendFragment.newInstance(uri), null, null);
replaceFragment(SendFragment.newInstance(uri), null, null);
uri = null; // only use uri once
}
@@ -800,10 +800,6 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
int transition;
if (newFragment instanceof TxFragment)
transition = R.string.tx_details_transition_name;
else if (newFragment instanceof ReceiveFragment)
transition = R.string.receive_transition_name;
else if (newFragment instanceof SendFragment)
transition = R.string.send_transition_name;
else if (newFragment instanceof SubaddressInfoFragment)
transition = R.string.subaddress_info_transition_name;
else
@@ -960,7 +956,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
Bundle b = new Bundle();
b.putString("address", address);
b.putString("name", getWalletName());
replaceFragmentWithTransition(view, new ReceiveFragment(), null, b);
replaceFragment(new ReceiveFragment(), null, b);
Timber.d("ReceiveFragment placed");
}

View File

@@ -43,7 +43,6 @@ import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.github.brnunes.swipeablerecyclerview.SwipeableRecyclerViewTouchListener;
import com.google.android.material.transition.MaterialElevationScale;
import com.m2049r.xmrwallet.layout.TransactionInfoAdapter;
import com.m2049r.xmrwallet.model.TransactionInfo;
import com.m2049r.xmrwallet.model.Wallet;
@@ -204,11 +203,6 @@ public class WalletFragment extends Fragment
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
postponeEnterTransition();
view.getViewTreeObserver().addOnPreDrawListener(() -> {
startPostponedEnterTransition();
return true;
});
}
void showBalance(String balance) {
@@ -333,19 +327,9 @@ public class WalletFragment extends Fragment
// Callbacks from TransactionInfoAdapter
@Override
public void onInteraction(final View view, final TransactionInfo infoItem) {
final MaterialElevationScale exitTransition = new MaterialElevationScale(false);
exitTransition.setDuration(getResources().getInteger(R.integer.tx_item_transition_duration));
setExitTransition(exitTransition);
final MaterialElevationScale reenterTransition = new MaterialElevationScale(true);
reenterTransition.setDuration(getResources().getInteger(R.integer.tx_item_transition_duration));
setReenterTransition(reenterTransition);
activityCallback.onTxDetailsRequest(view, infoItem);
}
// called from activity
// if account index has changed scroll to top?
private int accountIndex = 0;
@@ -538,8 +522,6 @@ public class WalletFragment extends Fragment
@Override
public void onResume() {
super.onResume();
setExitTransition(null);
setReenterTransition(null);
Timber.d("onResume()");
activityCallback.setTitle(walletTitle, walletSubtitle);
activityCallback.setToolbarButton(Toolbar.BUTTON_NONE);

View File

@@ -24,6 +24,7 @@ import com.m2049r.xmrwallet.util.RestoreHeight;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -96,8 +97,11 @@ public class WalletManager {
if (wallet.getStatus().isOk()) {
// (Re-)Estimate restore height based on what we know
final long oldHeight = wallet.getRestoreHeight();
// Go back 4 days if we don't have a precise restore height
Calendar restoreDate = Calendar.getInstance();
restoreDate.add(Calendar.DAY_OF_MONTH, -4);
final long restoreHeight =
(height > -1) ? height : RestoreHeight.getInstance().getHeight(new Date());
(height > -1) ? height : RestoreHeight.getInstance().getHeight(restoreDate.getTime());
wallet.setRestoreHeight(restoreHeight);
Timber.d("Changed Restore Height from %d to %d", oldHeight, wallet.getRestoreHeight());
wallet.setPassword(password); // this rewrites the keys file (which contains the restore height)

View File

@@ -8,17 +8,17 @@
<LinearLayout
android:id="@+id/llNotice"
android:layout_alignParentTop="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="vertical" />
<TextView
android:id="@+id/tvPull"
android:layout_below="@+id/llNotice"
style="@style/MoneroLabel.Heading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/llNotice"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:gravity="center"
@@ -52,7 +52,8 @@
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_margin="24dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="16dp"
android:background="@drawable/gradient_oval"
android:elevation="6dp">
@@ -67,7 +68,7 @@
app:borderWidth="0dp"
app:elevation="0dp"
app:fabSize="normal"
app:pressedTranslationZ="0dp" />
app:pressedTranslationZ="0dp"
app:tint="?attr/toolbarTextColor" />
</FrameLayout>
</RelativeLayout>
</RelativeLayout>

View File

@@ -3,8 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="@string/receive_transition_name">
android:layout_height="match_parent">
<EditText
android:id="@+id/etDummy"
@@ -98,7 +97,6 @@
android:backgroundTint="#ffffffff"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
card_view:contentPadding="4dp">
<TextView
@@ -110,8 +108,8 @@
android:drawablePadding="4dp"
android:text="@string/label_receive_info_gen_qr_code"
android:textAlignment="center"
android:textSize="16sp"
android:textColor="#2D1A2E"
android:textSize="16sp"
android:visibility="visible"
card_view:drawableStartCompat="@drawable/ic_info_outline_black_24dp" />
@@ -119,7 +117,8 @@
android:id="@+id/qrCode"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true" />
android:adjustViewBounds="true"
android:src="#fff" />
</com.google.android.material.card.MaterialCardView>
<TextView

View File

@@ -4,8 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:transitionName="@string/send_transition_name">
android:orientation="vertical">
<LinearLayout
android:id="@+id/llNotice"

View File

@@ -45,7 +45,7 @@
android:id="@+id/rlSweep"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
android:visibility="gone">
<ImageView
android:id="@+id/ivSweep"

View File

@@ -69,6 +69,7 @@
app:borderWidth="0dp"
app:elevation="0dp"
app:fabSize="normal"
app:pressedTranslationZ="0dp" />
app:pressedTranslationZ="0dp"
app:tint="?attr/toolbarTextColor" />
</FrameLayout>
</FrameLayout>
</FrameLayout>

View File

@@ -5,8 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="8dp"
android:transitionName="@string/subaddress_info_transition_name">
android:padding="8dp">
<TextView
android:id="@+id/tvAddress"
@@ -14,6 +13,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/header_top_first"
android:transitionName="@string/subaddress_info_transition_name"
tools:text="#1: 8AioXCmK...aGivEa7C" />
<com.google.android.material.textfield.TextInputLayout

View File

@@ -4,8 +4,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:fillViewport="true"
android:transitionName="@string/tx_details_transition_name">
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
@@ -33,6 +32,7 @@
android:layout_height="wrap_content"
android:selectAllOnFocus="true"
android:textIsSelectable="true"
android:transitionName="@string/tx_details_transition_name"
tools:text="+ 1,092.00229" />
<TextView

View File

@@ -177,7 +177,6 @@
android:layout_weight="1"
android:enabled="false"
android:text="@string/label_wallet_receive"
android:transitionName="@string/receive_btn_transition_name"
app:icon="@drawable/ic_hand" />
<Button
@@ -190,7 +189,6 @@
android:layout_weight="1"
android:enabled="false"
android:text="@string/label_wallet_send"
android:transitionName="@string/send_btn_transition_name"
app:icon="@drawable/ic_send" />
</LinearLayout>

View File

@@ -0,0 +1,3 @@
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeTransform android:duration="@integer/tx_item_transition_duration" />
</transitionSet>

View File

@@ -290,7 +290,7 @@
<string name="menu_language">Idioma</string>
<string name="language_system_default">Utilitzar Idioma del Sistema</string>
<string name="fab_restore_ledger">Restablir desde Ledger Nano S</string>
<string name="fab_restore_ledger">Restablir desde Ledger Nano</string>
<string name="progress_ledger_progress">Comunicant amb Ledger</string>
<string name="progress_ledger_confirm">Es requereix confirmació en Ledger!</string>

View File

@@ -286,7 +286,7 @@
<string name="menu_language">Sprache</string>
<string name="language_system_default">Benutze Systemsprache</string>
<string name="fab_restore_ledger">Wallet mit Ledger Nano S wiederherstellen</string>
<string name="fab_restore_ledger">Wallet mit Ledger Nano wiederherstellen</string>
<string name="progress_ledger_progress">Kommunikation mit Ledger</string>
<string name="progress_ledger_confirm">Bestätigung auf Ledger benötigt!</string>

View File

@@ -283,7 +283,7 @@
<string name="menu_language">Language</string>
<string name="language_system_default">Use System Language</string>
<string name="fab_restore_ledger">Restore from Ledger Nano S</string>
<string name="fab_restore_ledger">Restore from Ledger Nano</string>
<string name="progress_ledger_progress">Communicating with Ledger</string>
<string name="progress_ledger_confirm">Confirmation on Ledger required!</string>

View File

@@ -290,7 +290,7 @@
<string name="menu_language">Lingvo</string>
<string name="language_system_default">Uzi la sistemlingvon</string>
<string name="fab_restore_ledger">Restaŭri de Ledger Nano S</string>
<string name="fab_restore_ledger">Restaŭri de Ledger Nano</string>
<string name="progress_ledger_progress">Komunikante kun Ledger</string>
<string name="progress_ledger_confirm">Konfirmo je la Ledger estas postulita!</string>

View File

@@ -273,7 +273,7 @@
<string name="menu_language">Lenguaje</string>
<string name="language_system_default">Usar Idioma del Sistema</string>
<string name="fab_restore_ledger">Restaurar desde Ledger Nano S</string>
<string name="fab_restore_ledger">Restaurar desde Ledger Nano</string>
<string name="progress_ledger_progress">Comunicándose con Ledger</string>
<string name="progress_ledger_confirm">¡Confirmación en Ledger requerida!</string>

View File

@@ -285,7 +285,7 @@
<string name="menu_language">Keel</string>
<string name="language_system_default">Kasuta süsteemi keelt</string>
<string name="fab_restore_ledger">Taasta seadmelt Ledger Nano S</string>
<string name="fab_restore_ledger">Taasta seadmelt Ledger Nano</string>
<string name="progress_ledger_progress">Suhtlen seadmega Ledger</string>
<string name="progress_ledger_confirm">Seadmelt Ledger on vajalik kinnitus!</string>

View File

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en">
<string name="about_close">بستن</string>
<string name="about_whoami">من مونروجو هستم</string>
<string name="about_version">
نسخهٔ
%1$s (%2$d)
</string>
<string name="credits_text"><![CDATA[
<b>دست اندرکاران</b>
<br/>
m2049r, baltsar777, anhdres, keejef,
rehrar, EarlOfEgo, ErCiccione et al.
<br/><br/>
<a href="https://monerujo.app">monerujo.app</a>
]]></string>
<string name="privacy_policy"><![CDATA[
<h1>خط‌مشی رازداری</h1>
<p>این صفحه شما را از سیاست‌های ما در مورد جمع‌آوری، استفاده و افشای اطلاعات شخصی که از کاربران برنامهٔ خود (مونروجو به معنای «کیف‌پول مونرو») دریافت می‌کنیم مطلع می‌کند.</p>
<p>با استفاده از برنامه، با جمع‌آوری و استفاده از اطلاعات، مطابق با این سیاست، موافقت می‌کنید.</p>
<h2>داده‌های جمع‌آوری شده</h2>
<p>داده‌های شخصی هر نوع داده‌ای است که بتواند یک فرد را شناسایی کند.</p>
<p>کلیدها و آدرس‌های عمومی مونرو توسط برنامه به صورت داخلی برای پردازش تراکنش‌ها جمع‌آوری و پردازش می‌شوند و به شکل رمزگذاری شده به شبکه مونرو منتقل می شوند.</p>
<p>سایر اطلاعات شخصی توسط برنامه جمع‌آوری نمی‌شوند.</p>
<p>
اگر از قابلیت اختیاری تبدیل رمزارز استفاده کنید، این برنامه نرخ ارز را از طریق API عمومی coinmarketcap.com دریافت می‌کند. برای اطلاع از جزئیات نحوهٔ جمع‌آوری داده‌های درخواست‌هایتان، خط‌مشی رازداری آنها را در
<a href="https://coinmarketcap.com/privacy">coinmarketcap.com/privacy</a>
ببینید.
</p>
<p>
اگر از برنامه برای پرداخت به آدرس‌های بیت‌کوین استفاده می‌کنید، از سرویس SideShift.ai استفاده خواهید کرد. برای جزئیات بیشتر به خط‌مشی رازداری آنها در
<a href="https://sideshift.ai">sideshift.ai</a>
مراجعه کنید. مونروجو مقدار و آدرس مقصد بیت‌کوین را برای آنها ارسال می‌کند. آدرس IP شما نیز قابل جمع‌آوری خواهد بود.
</p>
<h2>دسترسی‌های نرم‌افزار</h2>
<ul>
<li>اینترنت: اتصال به شبکهٔ مونرو</li>
<li>خوانش حافظهٔ خارجی: خواندن فایل‌های کیف‌پول ذخیره شده برروی دستگاه</li>
<li>نوشتار حافظهٔ خارجی: نوشتن فایل‌های کیف‌پول ذخیره شده برروی دستگاه</li>
<li>قفل بیداری: بیدار نگه داشتن دستگاه در هنگام همگام‌سازی</li>
<li>دوربین: اسکن کدهای کیوآر برای ارسال مونرو</li>
</ul>
<h2>تغییرات در این خط‌مشی رازداری</h2>
<p>
ممکن است هرازچندگاهی این خط‌مشی رازداری را به‌روز کنیم. ما با ارسال خط‌مشی رازداری جدید در برنامه و وب‌سایت
<a href="https://monerujo.app">(www.monerujo.app)</a>
شما را از هرگونه تغییر مطلع خواهیم کرد. به شما توصیه می‌شود برای هرگونه تغییر، این خط‌مشی رازداری را به صورت دوره‌ای مرور کنید.
</p>
<p>آخرین به‌روزرسانی این خط‌مشی رازداری: 10 نوامبر 2017</p>
<h2>تماس با ما</h2>
<p>
اگر در مورد خط‌مشی رازداری ما یا نحوهٔ جمع‌آوری و پردازش داده‌های خود سؤالی دارید، لطفا به
<a href="mailto:privacy@monerujo.io">privacy@monerujo.io</a>
ایمیل بزنید.
</p>
]]></string>
</resources>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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