* 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