1
0
Fork 0

For #1716 - Consolidate Switch Styles

master
Emily Kager 2019-04-26 11:45:24 -07:00 committed by Emily Kager
parent a8d795f93f
commit ee693430a2
7 changed files with 165 additions and 100 deletions

View File

@ -40,6 +40,11 @@ class DefaultThemeManager : ThemeManager {
override val currentTheme: ThemeManager.Theme
get() = temporaryThemeManagerStorage
val currentThemeResource: Int = when (currentTheme) {
ThemeManager.Theme.Normal -> R.style.NormalTheme
ThemeManager.Theme.Private -> R.style.PrivateTheme
}
override fun setTheme(theme: ThemeManager.Theme) {
if (temporaryThemeManagerStorage != theme) {
temporaryThemeManagerStorage = theme

View File

@ -17,7 +17,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import mozilla.components.feature.sitepermissions.SitePermissions
import org.mozilla.fenix.R
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.browser.BrowserFragment
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.requireComponents
@ -26,6 +26,8 @@ import org.mozilla.fenix.mvi.getAutoDisposeObservable
import org.mozilla.fenix.mvi.getManagedEmitter
import org.mozilla.fenix.settings.PhoneFeature
import kotlin.coroutines.CoroutineContext
import androidx.appcompat.view.ContextThemeWrapper
import org.mozilla.fenix.R
private const val KEY_URL = "KEY_URL"
private const val KEY_IS_SECURED = "KEY_IS_SECURED"
@ -55,8 +57,21 @@ class QuickSettingsSheetDialogFragment : BottomSheetDialogFragment(), CoroutineS
job = Job()
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_quick_settings_dialog_sheet, container, false)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val contextThemeWrapper = ContextThemeWrapper(
activity,
(activity as HomeActivity).themeManager.currentThemeResource
)
val localInflater = inflater.cloneInContext(contextThemeWrapper)
return localInflater.inflate(
R.layout.fragment_quick_settings_dialog_sheet,
container,
false
)
}
override fun onViewCreated(rootView: View, savedInstanceState: Bundle?) {
@ -64,7 +79,12 @@ class QuickSettingsSheetDialogFragment : BottomSheetDialogFragment(), CoroutineS
quickSettingsComponent = QuickSettingsComponent(
rootView as ConstraintLayout, ActionBusFactory.get(this),
QuickSettingsState(
QuickSettingsState.Mode.Normal(url, isSecured, isTrackingProtectionOn, sitePermissions)
QuickSettingsState.Mode.Normal(
url,
isSecured,
isTrackingProtectionOn,
sitePermissions
)
)
)
}
@ -93,7 +113,11 @@ class QuickSettingsSheetDialogFragment : BottomSheetDialogFragment(), CoroutineS
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
if (arePermissionsGranted(requestCode, grantResults)) {
val feature = requireNotNull(PhoneFeature.findFeatureBy(permissions))
getManagedEmitter<QuickSettingsChange>()
@ -168,7 +192,12 @@ class QuickSettingsSheetDialogFragment : BottomSheetDialogFragment(), CoroutineS
launch(Dispatchers.Main) {
getManagedEmitter<QuickSettingsChange>()
.onNext(QuickSettingsChange.Stored(it.featurePhone, sitePermissions))
.onNext(
QuickSettingsChange.Stored(
it.featurePhone,
sitePermissions
)
)
requireContext().components.useCases.sessionUseCases.reload.invoke()
}

View File

@ -3,36 +3,35 @@
- 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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/quick_action_sheet"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/quick_settings_sheet"
android:background="?foundation">
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/quick_action_sheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?foundation"
android:contentDescription="@string/quick_settings_sheet"
android:orientation="vertical">
<TextView
android:id="@+id/url"
style="@style/QuickSettingsText"
android:layout_height="@dimen/quicksettings_item_height"
android:layout_width="wrap_content"
tools:text="https://wikipedia.org"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
android:id="@+id/url"
style="@style/QuickSettingsText"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="https://wikipedia.org" />
<TextView
android:id="@+id/security_info"
style="@style/QuickSettingsText.Icon"
android:layout_height="@dimen/quicksettings_item_height"
android:layout_width="wrap_content"
tools:drawableStartCompat="@drawable/mozac_ic_lock"
tools:drawableTint="@color/photonGreen50"
tools:text="Secure connection"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/url"/>
android:id="@+id/security_info"
style="@style/QuickSettingsText.Icon"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/url"
tools:drawableStartCompat="@drawable/mozac_ic_lock"
tools:drawableTint="@color/photonGreen50"
tools:text="Secure connection" />
<View
android:id="@+id/line_divider_security"
@ -52,7 +51,6 @@
android:drawableStart="@drawable/ic_tracking_protection"
android:paddingEnd="24dp"
android:text="@string/preferences_tracking_protection"
android:thumbTint="?accentBright"
app:layout_constraintBottom_toTopOf="@id/report_problem"
app:layout_constraintTop_toBottomOf="@id/line_divider_security" />
@ -80,81 +78,80 @@
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/camera_icon"
style="@style/QuickSettingsText.Icon"
android:layout_height="@dimen/quicksettings_item_height"
android:layout_width="wrap_content"
app:drawableStartCompat="@drawable/ic_camera"
android:text="@string/preference_phone_feature_camera"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/line_divider"/>
android:id="@+id/camera_icon"
style="@style/QuickSettingsText.Icon"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
android:text="@string/preference_phone_feature_camera"
app:drawableStartCompat="@drawable/ic_camera"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/line_divider" />
<TextView
android:id="@+id/camera_action_label"
android:layout_height="@dimen/quicksettings_item_height"
android:layout_width="wrap_content"
style="@style/QuickSettingsText.PermissionItemEnd"
tools:text="Allowed"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/line_divider"/>
android:id="@+id/camera_action_label"
style="@style/QuickSettingsText.PermissionItemEnd"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/line_divider"
tools:text="Allowed" />
<TextView
android:id="@+id/microphone_icon"
style="@style/QuickSettingsText.Icon"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
app:drawableStartCompat="@drawable/ic_microphone"
android:text="@string/preference_phone_feature_microphone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/camera_icon"/>
android:id="@+id/microphone_icon"
style="@style/QuickSettingsText.Icon"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
android:text="@string/preference_phone_feature_microphone"
app:drawableStartCompat="@drawable/ic_microphone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/camera_icon" />
<TextView
android:id="@+id/microphone_action_label"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
style="@style/QuickSettingsText.PermissionItemEnd"
tools:text="Blocked by Android"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/camera_action_label"/>
android:id="@+id/microphone_action_label"
style="@style/QuickSettingsText.PermissionItemEnd"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/camera_action_label"
tools:text="Blocked by Android" />
<TextView
android:id="@+id/notification_icon"
style="@style/QuickSettingsText.Icon"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
app:drawableStartCompat="@drawable/ic_notification"
android:text="@string/preference_phone_feature_notification"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/microphone_icon"/>
android:id="@+id/notification_icon"
style="@style/QuickSettingsText.Icon"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
android:text="@string/preference_phone_feature_notification"
app:drawableStartCompat="@drawable/ic_notification"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/microphone_icon" />
<TextView
android:id="@+id/notification_action_label"
style="@style/QuickSettingsText.PermissionItemEnd"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
tools:text="Blocked"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/microphone_action_label"/>
android:id="@+id/notification_action_label"
style="@style/QuickSettingsText.PermissionItemEnd"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/microphone_action_label"
tools:text="Blocked" />
<TextView
android:id="@+id/location_icon"
style="@style/QuickSettingsText.Icon"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
app:drawableStartCompat="@drawable/ic_location"
android:text="@string/preference_phone_feature_location"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/notification_icon"/>
android:id="@+id/location_icon"
style="@style/QuickSettingsText.Icon"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
android:text="@string/preference_phone_feature_location"
app:drawableStartCompat="@drawable/ic_location"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/notification_icon" />
<TextView
android:id="@+id/location_action_label"
style="@style/QuickSettingsText.PermissionItemEnd"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
tools:text="Blocked"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/notification_action_label"/>
android:id="@+id/location_action_label"
style="@style/QuickSettingsText.PermissionItemEnd"
android:layout_width="wrap_content"
android:layout_height="@dimen/quicksettings_item_height"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/notification_action_label"
tools:text="Blocked" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -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/. -->
<Switch xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/Mozac.Browser.Menu.Item.Text"
android:layout_width="match_parent"
android:layout_height="@dimen/mozac_browser_menu_item_container_layout_height"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp"/>

View File

@ -19,4 +19,6 @@
<color name="destructive_normal_theme">@color/destructive_dark_theme</color>
<color name="scrimStart_normal_theme">@color/scrimStart_dark_theme</color>
<color name="scrimEnd_normal_theme">@color/scrimStart_dark_theme</color>
<color name="toggle_off_knob_normal_theme">@color/toggle_off_knob_dark_theme</color>
<color name="toggle_off_track_normal_theme">@color/toggle_off_track_dark_theme</color>
</resources>

View File

@ -109,11 +109,19 @@
<color name="quick_action_read_icon">#8a201f</color>
<color name="quick_action_read_icon_background">#fce98f</color>
<!-- Toggle Colors -->
<color name="toggle_off_knob_light_theme">@color/photonGrey10</color>
<color name="toggle_off_track_light_theme">@color/dark_grey_90</color>
<color name="toggle_off_knob_dark_theme">@color/light_grey_05</color>
<color name="toggle_off_track_dark_theme">@color/light_grey_05</color>
<color name="toggle_off_knob_normal_theme">@color/toggle_off_knob_light_theme</color>
<color name="toggle_off_track_normal_theme">@color/toggle_off_track_light_theme</color>
<!-- Misc colors applied universally-->
<color name="suggestion_highlight_color">#5C592ACB</color>
<!-- <color name="private_browsing_button_accent_color">#722291</color> -->
<color name="private_browsing_button_accent_color">@color/foundation_private_theme</color>
<color name="white_color">#FBFBFE</color>
<color name="light_grey_05">#FBFBFE</color>
<color name="dark_grey_90">#15141A</color>
<color name="neutral_text">@color/white_color</color>
</resources>

View File

@ -12,7 +12,14 @@
<item name="android:windowBackground">@color/foundation_normal_theme</item>
<item name="android:colorEdgeEffect">@color/accent_normal_theme</item>
<item name="android:colorAccent">@color/primary_text_normal_theme</item>
<item name="android:colorControlActivated">@color/accent_bright_normal_theme</item>
<item name="android:textColorPrimary">@color/primary_text_normal_theme</item>
<item name="android:textColorSecondary">@color/secondary_text_normal_theme</item>
<!-- Active thumb color & Active track color (30% transparency) -->
<item name="android:colorControlActivated">@color/accent_high_contrast_normal_theme</item>
<!-- Inactive thumb color -->
<item name="colorSwitchThumbNormal">@color/toggle_off_knob_normal_theme</item>
<!-- Inactive track color(30% transparency) -->
<item name="android:colorForeground">@color/toggle_off_track_normal_theme</item>
<!-- Updated color attributes -->
<item name="primaryText">@color/primary_text_normal_theme</item>
@ -38,7 +45,7 @@
<item name="privateBrowsingButtonAccent">@color/primary_text_normal_theme</item>
</style>
<style name="NormalTheme" parent="NormalThemeBase"/>
<style name="NormalTheme" parent="NormalThemeBase" />
<style name="PrivateThemeBase" parent="Theme.AppCompat.NoActionBar">
<!-- Android system styling -->
@ -48,7 +55,13 @@
<item name="android:windowBackground">@color/foundation_private_theme</item>
<item name="android:colorEdgeEffect">@color/accent_private_theme</item>
<item name="android:colorAccent">@color/primary_text_private_theme</item>
<item name="android:colorControlActivated">@color/accent_bright_private_theme</item>
<item name="android:colorControlActivated">@color/accent_high_contrast_private_theme</item>
<item name="android:textColorPrimary">@color/primary_text_private_theme</item>
<item name="android:textColorSecondary">@color/secondary_text_private_theme</item>
<!-- Inactive thumb color -->
<item name="colorSwitchThumbNormal">@color/toggle_off_knob_dark_theme</item>
<!-- Inactive track color(30% transparency) -->
<item name="android:colorForeground">@color/toggle_off_track_dark_theme</item>
<!-- Updated color attributes -->
<item name="primaryText">@color/primary_text_private_theme</item>
@ -79,7 +92,7 @@
<item name="cardBackgroundColor">?above</item>
</style>
<style name="PrivateTheme" parent="PrivateThemeBase"/>
<style name="PrivateTheme" parent="PrivateThemeBase" />
<!-- Fade animation for theme switching -->
<style name="WindowAnimationTransition">