* For #347: Adds private browsing logic * For #347: Adds private session explainer * Adds persistencenightly-build-test
parent
fe74df8b7f
commit
e5fe80f928
@ -0,0 +1,51 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
package org.mozilla.fenix
|
||||||
|
|
||||||
|
import android.preference.PreferenceManager
|
||||||
|
|
||||||
|
interface BrowsingModeManager {
|
||||||
|
enum class Mode {
|
||||||
|
Normal, Private
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var temporaryModeStorage: BrowsingModeManager.Mode? = null
|
||||||
|
class DefaultBrowsingModeManager(private val homeActivity: HomeActivity) : BrowsingModeManager {
|
||||||
|
val isPrivate: Boolean
|
||||||
|
get() = mode == BrowsingModeManager.Mode.Private
|
||||||
|
var mode: BrowsingModeManager.Mode
|
||||||
|
get() = temporaryModeStorage!!
|
||||||
|
set(value) {
|
||||||
|
temporaryModeStorage = value
|
||||||
|
updateTheme(value)
|
||||||
|
setPreference()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateTheme(mode: BrowsingModeManager.Mode) {
|
||||||
|
homeActivity.themeManager.apply {
|
||||||
|
val newTheme = when (mode) {
|
||||||
|
BrowsingModeManager.Mode.Normal -> ThemeManager.Theme.Light
|
||||||
|
BrowsingModeManager.Mode.Private -> ThemeManager.Theme.Private
|
||||||
|
}
|
||||||
|
setTheme(newTheme)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setPreference() {
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(homeActivity)
|
||||||
|
.edit().putBoolean(homeActivity.getString(R.string.pref_key_private_mode), isPrivate).apply()
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
if (temporaryModeStorage == null) {
|
||||||
|
mode = when (PreferenceManager.getDefaultSharedPreferences(homeActivity)
|
||||||
|
.getBoolean(homeActivity.getString(R.string.pref_key_private_mode), false)) {
|
||||||
|
true -> BrowsingModeManager.Mode.Private
|
||||||
|
false -> BrowsingModeManager.Mode.Normal
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||||
|
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||||
|
<solid android:color="@color/photonGrey40" />
|
||||||
|
<corners
|
||||||
|
android:bottomLeftRadius="7dp"
|
||||||
|
android:bottomRightRadius="7dp" />
|
||||||
|
</shape>
|
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||||
|
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<stroke android:width="2dp"
|
||||||
|
android:color="?attr/sessionBorderColor"/>
|
||||||
|
|
||||||
|
<padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp"/>
|
||||||
|
|
||||||
|
<corners android:radius="8dp"/>
|
||||||
|
</shape>
|
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/private_no_sessions"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/session_description"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="0dp"
|
||||||
|
android:ellipsize="none"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:scrollHorizontally="false"
|
||||||
|
android:text="@string/private_browsing_explanation"
|
||||||
|
android:textColor="@color/off_white"
|
||||||
|
android:textSize="14sp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
Reference in New Issue