Fix #816 and other issues

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2020-05-09 15:18:45 +02:00
parent 4f71384e3a
commit b597ea1ff6
No known key found for this signature in database
GPG Key ID: CDE0BBD2738C4CC0
2 changed files with 49 additions and 12 deletions

View File

@ -25,27 +25,30 @@ import android.app.KeyguardManager
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.*
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.bluelinelabs.conductor.archlifecycle.ControllerLifecycleOwner import com.bluelinelabs.conductor.archlifecycle.ControllerLifecycleOwner
import com.bluelinelabs.conductor.autodispose.ControllerScopeProvider import com.bluelinelabs.conductor.autodispose.ControllerScopeProvider
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.newarch.mvvm.BaseView import com.nextcloud.talk.newarch.mvvm.BaseView
import com.nextcloud.talk.utils.SecurityUtils
import com.nextcloud.talk.utils.preferences.MagicUserInputModule import com.nextcloud.talk.utils.preferences.MagicUserInputModule
import com.uber.autodispose.lifecycle.LifecycleScopeProvider import com.uber.autodispose.lifecycle.LifecycleScopeProvider
import kotlinx.android.synthetic.main.settings_privacy_view.view.* import kotlinx.android.synthetic.main.settings_privacy_view.view.*
import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener
import java.util.* import java.util.*
class SettingsPrivacyView(private val bundle: Bundle? = null) : BaseView() { class SettingsPrivacyView(private val bundle: Bundle? = null) : BaseView() {
override val scopeProvider: LifecycleScopeProvider<*> = ControllerScopeProvider.from(this) override val scopeProvider: LifecycleScopeProvider<*> = ControllerScopeProvider.from(this)
override val lifecycleOwner = ControllerLifecycleOwner(this) override val lifecycleOwner = ControllerLifecycleOwner(this)
private var proxyTypeChangeListener: OnPreferenceValueChangedListener<String> = ProxyTypeChangeListener() private var proxyTypeChangeListener: OnPreferenceValueChangedListener<String> = ProxyTypeChangeListener()
private var proxyCredentialsChangeListener: OnPreferenceValueChangedListener<Boolean> = ProxyCredentialsChangeListener() private var proxyCredentialsChangeListener: OnPreferenceValueChangedListener<Boolean> = ProxyCredentialsChangeListener()
private var screenSecurityChangeListener: OnPreferenceValueChangedListener<Boolean> = ScreenSecurityChangeListener()
private var screenLockListener: OnPreferenceValueChangedListener<Boolean> = ScreenLockListener()
private var screenLockTimeoutListener: OnPreferenceValueChangedListener<String?> = ScreenLockTimeoutListener()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup): View { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup): View {
setHasOptionsMenu(true) setHasOptionsMenu(true)
@ -89,6 +92,9 @@ class SettingsPrivacyView(private val bundle: Bundle? = null) : BaseView() {
appPreferences.registerProxyTypeListener(proxyTypeChangeListener) appPreferences.registerProxyTypeListener(proxyTypeChangeListener)
appPreferences.registerProxyCredentialsListener(proxyCredentialsChangeListener) appPreferences.registerProxyCredentialsListener(proxyCredentialsChangeListener)
appPreferences.registerScreenSecurityListener(screenSecurityChangeListener)
appPreferences.registerScreenLockListener(screenLockListener)
appPreferences.registerScreenLockTimeoutListener(screenLockTimeoutListener)
setupProxySection(view) setupProxySection(view)
return view return view
@ -97,6 +103,7 @@ class SettingsPrivacyView(private val bundle: Bundle? = null) : BaseView() {
override fun onDestroy() { override fun onDestroy() {
appPreferences.unregisterProxyCredentialsListener(proxyCredentialsChangeListener) appPreferences.unregisterProxyCredentialsListener(proxyCredentialsChangeListener)
appPreferences.unregisterProxyTypeListener(proxyTypeChangeListener) appPreferences.unregisterProxyTypeListener(proxyTypeChangeListener)
appPreferences.unregisterScreenSecurityListener(screenSecurityChangeListener)
super.onDestroy() super.onDestroy()
} }
@ -176,4 +183,34 @@ class SettingsPrivacyView(private val bundle: Bundle? = null) : BaseView() {
} }
} }
} }
private inner class ScreenSecurityChangeListener : OnPreferenceValueChangedListener<Boolean> {
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<String?> {
override fun onChanged(newValue: String?) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
SecurityUtils.createKey(appPreferences.screenLockTimeout)
}
}
}
private inner class ScreenLockListener : OnPreferenceValueChangedListener<Boolean> {
override fun onChanged(newValue: Boolean) {
if (newValue) {
view?.settings_screen_lock_timeout?.alpha = 1.0f
} else {
view?.settings_screen_lock_timeout?.alpha = 0.38f
}
}
}
} }

View File

@ -31,6 +31,14 @@
apc:mpc_title="@string/nc_privacy" apc:mpc_title="@string/nc_privacy"
apc:mpc_title_color="@color/colorPrimary"> apc:mpc_title_color="@color/colorPrimary">
<com.yarolegovich.mp.MaterialSwitchPreference
android:id="@+id/settings_screen_lock"
android:layout_width="match_parent"
android:layout_height="wrap_content"
apc:mp_default_value="@bool/value_false"
apc:mp_key="@string/nc_settings_screen_lock_key"
apc:mp_title="@string/nc_settings_screen_lock_title" />
<com.yarolegovich.mp.MaterialChoicePreference <com.yarolegovich.mp.MaterialChoicePreference
android:id="@+id/settings_screen_lock_timeout" android:id="@+id/settings_screen_lock_timeout"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -42,14 +50,6 @@
apc:mp_show_value="onBottom" apc:mp_show_value="onBottom"
apc:mp_title="@string/nc_settings_screen_lock_timeout_title" /> apc:mp_title="@string/nc_settings_screen_lock_timeout_title" />
<com.yarolegovich.mp.MaterialSwitchPreference
android:id="@+id/settings_screen_lock"
android:layout_width="match_parent"
android:layout_height="wrap_content"
apc:mp_default_value="@bool/value_false"
apc:mp_key="@string/nc_settings_screen_lock_key"
apc:mp_title="@string/nc_settings_screen_lock_title" />
<com.yarolegovich.mp.MaterialSwitchPreference <com.yarolegovich.mp.MaterialSwitchPreference
android:id="@+id/settings_screen_security" android:id="@+id/settings_screen_security"
android:layout_width="match_parent" android:layout_width="match_parent"