diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/privacy/SettingsPrivacyView.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/privacy/SettingsPrivacyView.kt index ba056fb18..ffb1cdc1e 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/privacy/SettingsPrivacyView.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/privacy/SettingsPrivacyView.kt @@ -25,27 +25,30 @@ import android.app.KeyguardManager import android.content.Context import android.os.Build import android.os.Bundle -import android.view.LayoutInflater -import android.view.MenuItem -import android.view.View -import android.view.ViewGroup +import android.view.* import androidx.core.view.isVisible import com.bluelinelabs.conductor.archlifecycle.ControllerLifecycleOwner import com.bluelinelabs.conductor.autodispose.ControllerScopeProvider import com.nextcloud.talk.R import com.nextcloud.talk.newarch.mvvm.BaseView +import com.nextcloud.talk.utils.SecurityUtils import com.nextcloud.talk.utils.preferences.MagicUserInputModule import com.uber.autodispose.lifecycle.LifecycleScopeProvider import kotlinx.android.synthetic.main.settings_privacy_view.view.* import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener import java.util.* + class SettingsPrivacyView(private val bundle: Bundle? = null) : BaseView() { override val scopeProvider: LifecycleScopeProvider<*> = ControllerScopeProvider.from(this) override val lifecycleOwner = ControllerLifecycleOwner(this) private var proxyTypeChangeListener: OnPreferenceValueChangedListener = ProxyTypeChangeListener() private var proxyCredentialsChangeListener: OnPreferenceValueChangedListener = ProxyCredentialsChangeListener() + private var screenSecurityChangeListener: OnPreferenceValueChangedListener = ScreenSecurityChangeListener() + + private var screenLockListener: OnPreferenceValueChangedListener = ScreenLockListener() + private var screenLockTimeoutListener: OnPreferenceValueChangedListener = ScreenLockTimeoutListener() override fun onCreateView(inflater: LayoutInflater, container: ViewGroup): View { setHasOptionsMenu(true) @@ -89,6 +92,9 @@ class SettingsPrivacyView(private val bundle: Bundle? = null) : BaseView() { appPreferences.registerProxyTypeListener(proxyTypeChangeListener) appPreferences.registerProxyCredentialsListener(proxyCredentialsChangeListener) + appPreferences.registerScreenSecurityListener(screenSecurityChangeListener) + appPreferences.registerScreenLockListener(screenLockListener) + appPreferences.registerScreenLockTimeoutListener(screenLockTimeoutListener) setupProxySection(view) return view @@ -97,6 +103,7 @@ class SettingsPrivacyView(private val bundle: Bundle? = null) : BaseView() { override fun onDestroy() { appPreferences.unregisterProxyCredentialsListener(proxyCredentialsChangeListener) appPreferences.unregisterProxyTypeListener(proxyTypeChangeListener) + appPreferences.unregisterScreenSecurityListener(screenSecurityChangeListener) super.onDestroy() } @@ -176,4 +183,34 @@ class SettingsPrivacyView(private val bundle: Bundle? = null) : BaseView() { } } } + + + private inner class ScreenSecurityChangeListener : OnPreferenceValueChangedListener { + override fun onChanged(newValue: Boolean) { + if (newValue) { + activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_SECURE) + } else { + activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + } + } + } + + + private inner class ScreenLockTimeoutListener : OnPreferenceValueChangedListener { + override fun onChanged(newValue: String?) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + SecurityUtils.createKey(appPreferences.screenLockTimeout) + } + } + } + + private inner class ScreenLockListener : OnPreferenceValueChangedListener { + override fun onChanged(newValue: Boolean) { + if (newValue) { + view?.settings_screen_lock_timeout?.alpha = 1.0f + } else { + view?.settings_screen_lock_timeout?.alpha = 0.38f + } + } + } } diff --git a/app/src/main/res/layout/settings_privacy_view.xml b/app/src/main/res/layout/settings_privacy_view.xml index 8e5e0b5aa..d7ebf9406 100644 --- a/app/src/main/res/layout/settings_privacy_view.xml +++ b/app/src/main/res/layout/settings_privacy_view.xml @@ -31,6 +31,14 @@ apc:mpc_title="@string/nc_privacy" apc:mpc_title_color="@color/colorPrimary"> + + - -