diff --git a/app/src/main/java/com/dcrandroid/HomeActivity.kt b/app/src/main/java/com/dcrandroid/HomeActivity.kt index a73bdf51..a1835710 100644 --- a/app/src/main/java/com/dcrandroid/HomeActivity.kt +++ b/app/src/main/java/com/dcrandroid/HomeActivity.kt @@ -21,6 +21,7 @@ import android.os.Handler import android.util.DisplayMetrics import android.view.MotionEvent import android.view.View +import android.view.WindowManager import android.view.animation.AnimationUtils import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager @@ -48,6 +49,7 @@ import com.dcrandroid.util.WalletData import com.google.gson.Gson import dcrlibwallet.* import kotlinx.android.synthetic.main.activity_tabs.* +import kotlinx.android.synthetic.main.overview_mixer_status_card.* import kotlinx.coroutines.* import java.lang.Runnable import java.text.DecimalFormat @@ -56,7 +58,7 @@ import kotlin.system.exitProcess const val TAG = "HomeActivity" -class HomeActivity : BaseActivity(), SyncProgressListener, TxAndBlockNotificationListener, ProposalNotificationListener { +class HomeActivity : BaseActivity(), SyncProgressListener, TxAndBlockNotificationListener, ProposalNotificationListener, AccountMixerNotificationListener { private var deviceWidth: Int = 0 private var blockNotificationSound: Int = 0 @@ -152,6 +154,8 @@ class HomeActivity : BaseActivity(), SyncProgressListener, TxAndBlockNotificatio e.printStackTrace() } } + + checkMixerStatus() } private val bottomSheetDismissed = DialogInterface.OnDismissListener { @@ -173,6 +177,34 @@ class HomeActivity : BaseActivity(), SyncProgressListener, TxAndBlockNotificatio } } + private fun checkMixerStatus() = GlobalScope.launch(Dispatchers.Main) { + var activeMixers = 0 + for (wallet in multiWallet!!.openedWalletsList()) { + if (wallet.isAccountMixerActive) { + activeMixers++ + } + } + + if (activeMixers > 0) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } + } + + override fun onAccountMixerEnded(walletID: Long) { + checkMixerStatus() + } + + override fun onAccountMixerStarted(walletID: Long) { + checkMixerStatus() + } + + override fun onResume() { + super.onResume() + checkMixerStatus() + } + override fun onDestroy() { super.onDestroy() diff --git a/app/src/main/java/com/dcrandroid/activities/privacy/AccountMixerActivity.kt b/app/src/main/java/com/dcrandroid/activities/privacy/AccountMixerActivity.kt index e67cbd2e..48dc4eb9 100644 --- a/app/src/main/java/com/dcrandroid/activities/privacy/AccountMixerActivity.kt +++ b/app/src/main/java/com/dcrandroid/activities/privacy/AccountMixerActivity.kt @@ -9,6 +9,7 @@ package com.dcrandroid.activities.privacy import android.content.DialogInterface import android.os.Bundle import android.text.Html +import android.view.WindowManager import com.dcrandroid.BuildConfig import com.dcrandroid.R import com.dcrandroid.activities.BaseActivity @@ -172,6 +173,10 @@ class AccountMixerActivity : BaseActivity(), AccountMixerNotificationListener, T private fun stopAccountMixer() = GlobalScope.launch(Dispatchers.Default) { multiWallet?.stopAccountMixer(wallet.id) + // Allow display to timeout after mixer is stopped + GlobalScope.launch(Dispatchers.Main) { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } } override fun onAccountMixerEnded(walletID: Long) { @@ -180,6 +185,8 @@ class AccountMixerActivity : BaseActivity(), AccountMixerNotificationListener, T setMixerStatus() GlobalScope.launch(Dispatchers.Main) { mixer_toggle_switch.isChecked = false + // Allow display to timeout after mixer completes + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } } } @@ -189,6 +196,8 @@ class AccountMixerActivity : BaseActivity(), AccountMixerNotificationListener, T setMixerStatus() GlobalScope.launch(Dispatchers.Main) { mixer_toggle_switch.isChecked = true + // Prevent display from timing out after mixer starts + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 393f7029..8ad64ffc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -569,7 +569,7 @@ Mix transaction change Change from transactions will be sent to unmixed account if enabled. %1$s.]]> - Your wallet will be unlocked until mixing completes. + Your wallet will be unlocked and your display would remain on until mixing completes. cspp mixer has stopped running Unmixed account has no mixable output NEW @@ -596,7 +596,7 @@ Mix server Keep this app opened How to use the mixer? -
Important: keep this app opened while mixer is running.

Mixer will automatically stop when unmixed balance are fully mixed.]]>
+
Important: keep this app opened while mixer is running. Your display would not timeout until the mixer completes, this may impact your battery life.

Mixer will automatically stop when unmixed balance are fully mixed.]]>
Mixer is running… Keep this app opened Mixer will automatically stop when unmixed balance are fully mixed.