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."/> + +