diff --git a/app/src/main/java/org/mozilla/fenix/ThemeManager.kt b/app/src/main/java/org/mozilla/fenix/ThemeManager.kt index 51899854b..00098e15e 100644 --- a/app/src/main/java/org/mozilla/fenix/ThemeManager.kt +++ b/app/src/main/java/org/mozilla/fenix/ThemeManager.kt @@ -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 diff --git a/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragment.kt index ad66449b8..3f5b5ec77 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragment.kt @@ -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, grantResults: IntArray) { + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { if (arePermissionsGranted(requestCode, grantResults)) { val feature = requireNotNull(PhoneFeature.findFeatureBy(permissions)) getManagedEmitter() @@ -168,7 +192,12 @@ class QuickSettingsSheetDialogFragment : BottomSheetDialogFragment(), CoroutineS launch(Dispatchers.Main) { getManagedEmitter() - .onNext(QuickSettingsChange.Stored(it.featurePhone, sitePermissions)) + .onNext( + QuickSettingsChange.Stored( + it.featurePhone, + sitePermissions + ) + ) requireContext().components.useCases.sessionUseCases.reload.invoke() } diff --git a/app/src/main/res/layout/fragment_quick_settings_dialog_sheet.xml b/app/src/main/res/layout/fragment_quick_settings_dialog_sheet.xml index b94818165..02734292b 100644 --- a/app/src/main/res/layout/fragment_quick_settings_dialog_sheet.xml +++ b/app/src/main/res/layout/fragment_quick_settings_dialog_sheet.xml @@ -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/. --> - + + 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" /> + 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" /> @@ -80,81 +78,80 @@ app:layout_constraintStart_toStartOf="parent" /> + 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" /> + 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" /> + 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" /> + 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" /> + 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" /> + 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" /> + 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" /> + 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" /> - diff --git a/app/src/main/res/layout/mozac_browser_menu_item_switch.xml b/app/src/main/res/layout/mozac_browser_menu_item_switch.xml new file mode 100644 index 000000000..53e16a131 --- /dev/null +++ b/app/src/main/res/layout/mozac_browser_menu_item_switch.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index dc095d157..0becf4f28 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -19,4 +19,6 @@ @color/destructive_dark_theme @color/scrimStart_dark_theme @color/scrimStart_dark_theme + @color/toggle_off_knob_dark_theme + @color/toggle_off_track_dark_theme diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 796746bc7..4c1e7a8d4 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -109,11 +109,19 @@ #8a201f #fce98f + + @color/photonGrey10 + @color/dark_grey_90 + @color/light_grey_05 + @color/light_grey_05 + @color/toggle_off_knob_light_theme + @color/toggle_off_track_light_theme + #5C592ACB - @color/foundation_private_theme #FBFBFE - + #FBFBFE + #15141A @color/white_color diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index e0d562240..61f7293fc 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -12,7 +12,14 @@ @color/foundation_normal_theme @color/accent_normal_theme @color/primary_text_normal_theme - @color/accent_bright_normal_theme + @color/primary_text_normal_theme + @color/secondary_text_normal_theme + + @color/accent_high_contrast_normal_theme + + @color/toggle_off_knob_normal_theme + + @color/toggle_off_track_normal_theme @color/primary_text_normal_theme @@ -38,7 +45,7 @@ @color/primary_text_normal_theme - -