diff --git a/app/src/main/java/cash/bchd/android_neutrino/DialogPreference.java b/app/src/main/java/cash/bchd/android_neutrino/DialogPreference.java
new file mode 100644
index 0000000..c33dd40
--- /dev/null
+++ b/app/src/main/java/cash/bchd/android_neutrino/DialogPreference.java
@@ -0,0 +1,10 @@
+package cash.bchd.android_neutrino;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+public class DialogPreference extends android.support.v7.preference.DialogPreference {
+ public DialogPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/cash/bchd/android_neutrino/SettingsFragment.java b/app/src/main/java/cash/bchd/android_neutrino/SettingsFragment.java
index 90016e1..acd4538 100644
--- a/app/src/main/java/cash/bchd/android_neutrino/SettingsFragment.java
+++ b/app/src/main/java/cash/bchd/android_neutrino/SettingsFragment.java
@@ -1,9 +1,11 @@
package cash.bchd.android_neutrino;
+import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import com.takisoft.fix.support.v7.preference.EditTextPreference;
+import android.support.v7.app.AlertDialog;
import android.support.v7.preference.Preference;
import com.takisoft.fix.support.v7.preference.PreferenceFragmentCompat;
import android.support.v7.preference.PreferenceScreen;
@@ -278,4 +280,28 @@ public boolean onPreferenceChange(Preference preference, Object o) {
activeScreen = "encryption";
}
}
+
+ @Override
+ public void onDisplayPreferenceDialog(Preference preference) {
+ if (preference.getKey().equals("rescan")) {
+ AlertDialog.Builder alert = new AlertDialog.Builder(getContext());
+ alert.setTitle("Rescan");
+
+ alert.setMessage("Rescan from wallet birthday?");
+ alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ // Canceled.
+ }
+ });
+ alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ wallet.rescan();
+ }
+ });
+ alert.setCancelable(true);
+ alert.show();
+ } else {
+ super.onDisplayPreferenceDialog(preference);
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/cash/bchd/android_neutrino/wallet/Wallet.java b/app/src/main/java/cash/bchd/android_neutrino/wallet/Wallet.java
index 12d250d..9176ebc 100644
--- a/app/src/main/java/cash/bchd/android_neutrino/wallet/Wallet.java
+++ b/app/src/main/java/cash/bchd/android_neutrino/wallet/Wallet.java
@@ -375,6 +375,12 @@ public long balance() throws Exception {
return reply.getSpendable();
}
+ public void rescan() {
+ WalletServiceGrpc.WalletServiceBlockingStub stub = WalletServiceGrpc.newBlockingStub(this.channel).withCallCredentials(this.creds);
+ Api.RescanRequest request = Api.RescanRequest.newBuilder().build();
+ stub.rescan(request);
+ }
+
public boolean validateAddress(String addr) throws Exception {
WalletServiceGrpc.WalletServiceBlockingStub stub = WalletServiceGrpc.newBlockingStub(this.channel).withCallCredentials(this.creds);
Api.ValidateAddressRequest request = Api.ValidateAddressRequest.newBuilder().setAddress(addr).build();
diff --git a/app/src/main/res/drawable/rescan.png b/app/src/main/res/drawable/rescan.png
new file mode 100644
index 0000000..9aa983d
Binary files /dev/null and b/app/src/main/res/drawable/rescan.png differ
diff --git a/app/src/main/res/drawable/rescan_icon_small.xml b/app/src/main/res/drawable/rescan_icon_small.xml
new file mode 100644
index 0000000..fcd3956
--- /dev/null
+++ b/app/src/main/res/drawable/rescan_icon_small.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 0822e8e..6fff655 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -62,6 +62,12 @@
android:icon="@drawable/key_icon_small"
app:summary="Decrypt wallet and return to unencrypted state."/>
+
+