From 869973ad5dbdca379aeb01a22eb7d00ae3a48bcf Mon Sep 17 00:00:00 2001 From: J0J0XMR Date: Fri, 22 Mar 2024 18:57:07 -0400 Subject: [PATCH] Background Sync Implementation --- .../com/m2049r/xmrwallet/WalletActivity.java | 42 +++++++++++++++++++ .../main/res/layout/toggle_dialog_layout.xml | 42 +++++++++++++++++++ app/src/main/res/menu/wallet_menu.xml | 5 +++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 90 insertions(+) create mode 100644 app/src/main/res/layout/toggle_dialog_layout.xml diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java index 225eea18..587efcc3 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java +++ b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java @@ -35,6 +35,7 @@ import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.TextView; +import android.widget.Switch; import android.widget.Toast; import androidx.annotation.NonNull; @@ -104,6 +105,8 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste private long streetMode = 0; private boolean isLockMode = false; + private SharedPreferences sharedPreferences ; + private boolean enableBkgSync; @Override public void onPasswordChanged(String newPassword) { @@ -318,11 +321,39 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste } else { onEnableLockMode(); } + } else if (itemId == R.id.action_background_sync) { + showToggleDialog(); } else return super.onOptionsItemSelected(item); return true; } + private void showToggleDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle("Background Sync"); + + // set the custom layout + final View customLayout = getLayoutInflater().inflate(R.layout.toggle_dialog_layout, null); + builder.setView(customLayout); + + // Access the Switch widget and TextView from the inflated layout + final Switch toggleSwitch = customLayout.findViewById(R.id.toggleSwitch); + + // Initialize the toggle button state + toggleSwitch.setChecked(enableBkgSync); + + builder.setPositiveButton("OK", (dialogInterface, which) -> { + // Save the toggle state to SharedPreferences + enableBkgSync = toggleSwitch.isChecked(); + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean("toggleState", enableBkgSync); + editor.apply(); + }); + + AlertDialog dialog = builder.create(); + dialog.show(); + } + @Override public boolean isLockMode() { return isLockMode; } @@ -330,6 +361,10 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste isLockMode = true; enableStreetMode(true); updateStreetMode(); + + if(getWallet() != null && enableBkgSync) { + getWallet().startBackgroundSync(); + } } private void updateStreetMode() { @@ -348,6 +383,10 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste runOnUiThread(() -> { enableStreetMode(false); updateStreetMode(); + + if(getWallet() != null) { + getWallet().stopBackgroundSync(password); + } }); } @@ -431,6 +470,9 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste startWalletService(); Timber.d("onCreate() done."); + + sharedPreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE); + enableBkgSync = sharedPreferences.getBoolean("toggleState", false); } public void showNet() { diff --git a/app/src/main/res/layout/toggle_dialog_layout.xml b/app/src/main/res/layout/toggle_dialog_layout.xml new file mode 100644 index 00000000..daf9d787 --- /dev/null +++ b/app/src/main/res/layout/toggle_dialog_layout.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/wallet_menu.xml b/app/src/main/res/menu/wallet_menu.xml index dd0549e4..39292ba0 100644 --- a/app/src/main/res/menu/wallet_menu.xml +++ b/app/src/main/res/menu/wallet_menu.xml @@ -54,4 +54,9 @@ android:title="@string/pocketchange_title" app:showAsAction="never" /> + \ 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 1f67ff62..f9d49e87 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -499,4 +499,5 @@ APPLY Lock Mode + Background Sync