diff --git a/app/src/main/java/com/m2049r/xmrwallet/MainActivity.java b/app/src/main/java/com/m2049r/xmrwallet/MainActivity.java
index c7e7482..d59d95f 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/MainActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/MainActivity.java
@@ -48,9 +48,8 @@ public class MainActivity extends AppCompatActivity implements MoneroHandlerThre
init(walletFile, "");
} else {
PasswordBottomSheetDialog passwordDialog = new PasswordBottomSheetDialog();
- passwordDialog.setCancelable(false);
passwordDialog.listener = this;
- passwordDialog.show(getSupportFragmentManager(), null);
+ passwordDialog.show(getSupportFragmentManager(), "password_dialog");
}
} else {
navigate(R.id.onboarding_fragment);
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/dialog/InformationBottomSheetDialog.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/dialog/InformationBottomSheetDialog.java
new file mode 100644
index 0000000..66db6ec
--- /dev/null
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/dialog/InformationBottomSheetDialog.java
@@ -0,0 +1,46 @@
+package com.m2049r.xmrwallet.fragment.dialog;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+import com.m2049r.xmrwallet.R;
+import com.m2049r.xmrwallet.model.Wallet;
+import com.m2049r.xmrwallet.model.WalletManager;
+import com.m2049r.xmrwallet.util.Constants;
+import com.m2049r.xmrwallet.util.Helper;
+
+import java.io.File;
+
+public class InformationBottomSheetDialog extends BottomSheetDialogFragment {
+ public boolean showCopyButton = false;
+ public String information = "";
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.information_bottom_sheet_dialog, null);
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ ImageButton copyInformationImageButton = view.findViewById(R.id.copy_information_imagebutton);
+ if(showCopyButton) {
+ copyInformationImageButton.setVisibility(View.VISIBLE);
+ } else {
+ copyInformationImageButton.setVisibility(View.INVISIBLE);
+ }
+ TextView informationTextView = view.findViewById(R.id.information_textview);
+ informationTextView.setText(information);
+ copyInformationImageButton.setOnClickListener(view1 -> Helper.clipBoardCopy(getContext(), "information", information));
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/dialog/PasswordBottomSheetDialog.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/dialog/PasswordBottomSheetDialog.java
index cad71e0..bff9d22 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/dialog/PasswordBottomSheetDialog.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/dialog/PasswordBottomSheetDialog.java
@@ -37,6 +37,7 @@ public class PasswordBottomSheetDialog extends BottomSheetDialogFragment {
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
+ setCancelable(false);
File walletFile = new File(getActivity().getApplicationInfo().dataDir, Constants.WALLET_NAME);
ImageButton pastePasswordImageButton = view.findViewById(R.id.paste_password_imagebutton);
@@ -60,10 +61,7 @@ public class PasswordBottomSheetDialog extends BottomSheetDialogFragment {
}
private boolean checkPassword(File walletFile, String password) {
- Wallet wallet = WalletManager.getInstance().openWallet(walletFile.getAbsolutePath(), password);
- boolean ok = wallet.getStatus().isOk();
- wallet.close();
- return ok;
+ return WalletManager.getInstance().verifyWalletPasswordOnly(walletFile.getAbsolutePath() + ".keys", password);
}
public interface PasswordListener {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/settings/SettingsFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/settings/SettingsFragment.java
index c109e61..439752a 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/settings/SettingsFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/settings/SettingsFragment.java
@@ -4,8 +4,10 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -14,13 +16,17 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.m2049r.xmrwallet.R;
+import com.m2049r.xmrwallet.fragment.dialog.InformationBottomSheetDialog;
+import com.m2049r.xmrwallet.fragment.dialog.PasswordBottomSheetDialog;
import com.m2049r.xmrwallet.model.Wallet;
import com.m2049r.xmrwallet.model.WalletManager;
import com.m2049r.xmrwallet.service.BlockchainService;
+import com.m2049r.xmrwallet.service.PrefService;
+import com.m2049r.xmrwallet.util.Constants;
import com.m2049r.xmrwallet.util.DayNightMode;
import com.m2049r.xmrwallet.util.NightmodeHelper;
-public class SettingsFragment extends Fragment {
+public class SettingsFragment extends Fragment implements PasswordBottomSheetDialog.PasswordListener {
private SettingsViewModel mViewModel;
@@ -36,11 +42,11 @@ public class SettingsFragment extends Fragment {
mViewModel = new ViewModelProvider(this).get(SettingsViewModel.class);
Wallet wallet = WalletManager.getInstance().getWallet();
+ Button displaySeedButton = view.findViewById(R.id.display_seed_button);
TextView walletInfoTextView = view.findViewById(R.id.wallet_info_textview);
SwitchCompat nightModeSwitch = view.findViewById(R.id.day_night_switch);
StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append("Seed: " + wallet.getSeed("")+"\n\n");
stringBuilder.append("Private view-key: " + wallet.getSecretViewKey()+"\n\n");
stringBuilder.append("Restore height: " + wallet.getRestoreHeight() + "\n\n");
stringBuilder.append("Wallet height: " + wallet.getBlockChainHeight() + "\n\n");
@@ -55,5 +61,33 @@ public class SettingsFragment extends Fragment {
NightmodeHelper.setAndSavePreferredNightmode(getContext(), DayNightMode.DAY);
}
});
+
+ displaySeedButton.setOnClickListener(view1 -> {
+ boolean usesPassword = PrefService.getInstance().getBoolean(Constants.PREF_USES_PASSWORD, false);
+ if(usesPassword) {
+ PasswordBottomSheetDialog passwordDialog = new PasswordBottomSheetDialog();
+ passwordDialog.listener = this;
+ passwordDialog.show(getActivity().getSupportFragmentManager(), "password_dialog");
+ } else {
+ displaySeedDialog();
+ }
+ });
+ }
+
+ private void displaySeedDialog() {
+ InformationBottomSheetDialog informationDialog = new InformationBottomSheetDialog();
+ informationDialog.showCopyButton = true;
+ informationDialog.information = WalletManager.getInstance().getWallet().getSeed("");
+ informationDialog.show(getActivity().getSupportFragmentManager(), "information_seed_dialog");
+ }
+
+ @Override
+ public void onPasswordSuccess(String password) {
+ displaySeedDialog();
+ }
+
+ @Override
+ public void onPasswordFail() {
+ Toast.makeText(getContext(), R.string.bad_password, Toast.LENGTH_SHORT).show();
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java b/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java
index a1b2078..d6532eb 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java
@@ -39,6 +39,7 @@ import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
+import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
@@ -244,9 +245,12 @@ public class Helper {
}
static public void clipBoardCopy(Context context, String label, String text) {
- ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
- ClipData clip = ClipData.newPlainText(label, text);
- clipboardManager.setPrimaryClip(clip);
+ if(context != null) {
+ ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
+ ClipData clip = ClipData.newPlainText(label, text);
+ clipboardManager.setPrimaryClip(clip);
+ Toast.makeText(context, context.getText(R.string.copied_to_clipboard), Toast.LENGTH_SHORT).show();
+ }
}
static public String getClipBoardText(Context context) {
diff --git a/app/src/main/res/drawable/ic_content_copy_24dp.xml b/app/src/main/res/drawable/ic_content_copy_24dp.xml
index 1ba50d3..7c67aeb 100644
--- a/app/src/main/res/drawable/ic_content_copy_24dp.xml
+++ b/app/src/main/res/drawable/ic_content_copy_24dp.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 7763bcf..c4e8a19 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -16,11 +16,31 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
+
+
+
+
@@ -28,9 +48,7 @@
android:id="@+id/day_night_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- android:layout_marginBottom="24dp"
- android:layout_marginStart="24dp"/>
+ app:layout_constraintTop_toBottomOf="@id/display_seed_button"
+ app:layout_constraintEnd_toEndOf="parent"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/information_bottom_sheet_dialog.xml b/app/src/main/res/layout/information_bottom_sheet_dialog.xml
new file mode 100644
index 0000000..5f1360e
--- /dev/null
+++ b/app/src/main/res/layout/information_bottom_sheet_dialog.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2d6c510..65137df 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -544,4 +544,6 @@
Error sending tx
Create wallet
Invalid mnemonic
+ Copied to clipboard
+ Night mode