diff --git a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/ui/tracker_activity/AppTPCompanyTrackersActivity.kt b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/ui/tracker_activity/AppTPCompanyTrackersActivity.kt index aaf122905745..ea44bc42f80e 100644 --- a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/ui/tracker_activity/AppTPCompanyTrackersActivity.kt +++ b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/ui/tracker_activity/AppTPCompanyTrackersActivity.kt @@ -29,11 +29,10 @@ import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.duckduckgo.anvil.annotations.InjectWith import com.duckduckgo.app.di.AppCoroutineScope -import com.duckduckgo.app.global.* import com.duckduckgo.browser.api.ui.BrowserScreens.WebViewActivityWithParams import com.duckduckgo.common.ui.DuckDuckGoActivity +import com.duckduckgo.common.ui.view.DaxSwitch import com.duckduckgo.common.ui.view.InfoPanel -import com.duckduckgo.common.ui.view.SwitchView import com.duckduckgo.common.ui.view.addClickableLink import com.duckduckgo.common.ui.view.gone import com.duckduckgo.common.ui.view.quietlySetIsChecked @@ -233,7 +232,7 @@ class AppTPCompanyTrackersActivity : DuckDuckGoActivity() { menuInflater.inflate(R.menu.menu_company_trackers_activity, menu) val switchMenuItem = menu.findItem(R.id.deviceShieldSwitch) - appEnabledSwitch = switchMenuItem?.actionView as SwitchView + appEnabledSwitch = switchMenuItem?.actionView as DaxSwitch appEnabledSwitch.setOnCheckedChangeListener(toggleAppSwitchListener) return true } diff --git a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/ui/tracker_activity/DeviceShieldTrackerActivity.kt b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/ui/tracker_activity/DeviceShieldTrackerActivity.kt index 88eea3174e09..2f6a514e0672 100644 --- a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/ui/tracker_activity/DeviceShieldTrackerActivity.kt +++ b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/ui/tracker_activity/DeviceShieldTrackerActivity.kt @@ -35,9 +35,9 @@ import com.duckduckgo.appbuildconfig.api.AppBuildConfig import com.duckduckgo.browser.api.ui.BrowserScreens.WebViewActivityWithParams import com.duckduckgo.common.ui.DuckDuckGoActivity import com.duckduckgo.common.ui.view.DaxDialogListener +import com.duckduckgo.common.ui.view.DaxSwitch import com.duckduckgo.common.ui.view.InfoPanel.Companion.APPTP_SETTINGS_ANNOTATION import com.duckduckgo.common.ui.view.InfoPanel.Companion.REPORT_ISSUES_ANNOTATION -import com.duckduckgo.common.ui.view.SwitchView import com.duckduckgo.common.ui.view.TypewriterDaxDialog import com.duckduckgo.common.ui.view.dialog.StackedAlertDialogBuilder import com.duckduckgo.common.ui.view.dialog.TextAlertDialogBuilder @@ -113,7 +113,7 @@ class DeviceShieldTrackerActivity : private val binding: ActivityDeviceShieldActivityBinding by viewBinding() - private lateinit var deviceShieldSwitch: SwitchView + private lateinit var deviceShieldSwitch: DaxSwitch // we might get an update before options menu has been populated; temporarily cache value to use when menu populated private var vpnCachedState: VpnState? = null @@ -596,7 +596,7 @@ class DeviceShieldTrackerActivity : menuInflater.inflate(R.menu.menu_device_tracker_activity, menu) val switchMenuItem = menu.findItem(R.id.deviceShieldSwitch) - deviceShieldSwitch = switchMenuItem?.actionView as SwitchView + deviceShieldSwitch = switchMenuItem?.actionView as DaxSwitch deviceShieldSwitch.setOnCheckedChangeListener(enableAppTPSwitchListener) return true } diff --git a/app-tracking-protection/vpn-impl/src/main/res/layout/menu_item_device_tracker_switch.xml b/app-tracking-protection/vpn-impl/src/main/res/layout/menu_item_device_tracker_switch.xml index 2ba4f1af0b43..d56996af376d 100644 --- a/app-tracking-protection/vpn-impl/src/main/res/layout/menu_item_device_tracker_switch.xml +++ b/app-tracking-protection/vpn-impl/src/main/res/layout/menu_item_device_tracker_switch.xml @@ -14,7 +14,7 @@ ~ limitations under the License. --> - + android:minHeight="@dimen/oneLineItemWithLargeImageHeight"> - \ No newline at end of file diff --git a/app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarkListItem.kt b/app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarkListItem.kt deleted file mode 100644 index b21512d5fa09..000000000000 --- a/app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarkListItem.kt +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Copyright (c) 2024 DuckDuckGo - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.duckduckgo.app.bookmarks.ui - -import android.content.Context -import android.content.res.ColorStateList -import android.graphics.drawable.Drawable -import android.text.TextUtils.TruncateAt -import android.util.AttributeSet -import android.view.View -import android.widget.CompoundButton.OnCheckedChangeListener -import android.widget.ImageView -import androidx.annotation.ColorRes -import androidx.annotation.DrawableRes -import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.content.ContextCompat -import com.duckduckgo.common.ui.view.SwitchView -import com.duckduckgo.common.ui.view.gone -import com.duckduckgo.common.ui.view.quietlySetIsChecked -import com.duckduckgo.common.ui.view.recursiveEnable -import com.duckduckgo.common.ui.view.setEnabledOpacity -import com.duckduckgo.common.ui.view.show -import com.duckduckgo.common.ui.view.text.DaxTextView -import com.duckduckgo.mobile.android.R - -abstract class BookmarkListItem( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int, -) : ConstraintLayout(context, attrs, defStyleAttr) { - - internal abstract val primaryText: DaxTextView - internal abstract val secondaryText: DaxTextView? - internal abstract val leadingIcon: ImageView - internal abstract val leadingIconContainer: View - internal abstract val trailingIcon: ImageView - internal abstract val trailingIconContainer: View - internal abstract val trailingSwitch: SwitchView - internal abstract val favoriteStar: ImageView? - internal abstract val itemContainer: View - internal abstract val verticalPadding: Int - - /** Sets the item click listener */ - fun setClickListener(onClick: () -> Unit) { - itemContainer.setOnClickListener { onClick() } - } - - /** Sets the primary text title */ - fun setPrimaryText(title: String?) { - primaryText.text = title - } - - /** Sets primary text color */ - fun setPrimaryTextColor(@ColorRes colorRes: Int) { - primaryText.setTextColor(ContextCompat.getColorStateList(context, colorRes)) - } - - /** Sets primary text color state list */ - fun setPrimaryTextColorStateList(stateList: ColorStateList?) { - primaryText.setTextColor(stateList) - } - - /** Sets primary text truncation */ - fun setPrimaryTextTruncation(truncated: Boolean) { - if (truncated) { - primaryText.maxLines = 1 - primaryText.ellipsize = TruncateAt.END - } else { - primaryText.maxLines = Int.MAX_VALUE - } - } - - /** Sets the secondary text title */ - fun setSecondaryText(title: String?) { - secondaryText?.text = title - } - - /** Sets secondary text color */ - fun setSecondaryTextColor(@ColorRes colorRes: Int) { - secondaryText?.setTextColor(ContextCompat.getColorStateList(context, colorRes)) - } - - /** Sets secondary text color state list */ - fun setSecondaryTextColorStateList(stateList: ColorStateList?) { - secondaryText?.setTextColor(stateList) - } - - /** Sets the leading icon image drawable */ - fun setLeadingIconDrawable(drawable: Drawable) { - leadingIcon.setImageDrawable(drawable) - setLeadingIconVisibility(true) - } - - /** Sets the leading icon image resource */ - fun setLeadingIconResource(@DrawableRes idRes: Int) { - leadingIcon.setImageResource(idRes) - setLeadingIconVisibility(true) - } - - /** Sets the leading image content description */ - fun setLeadingIconContentDescription(description: String) { - leadingIcon.contentDescription = description - } - - /** Sets the leading icon image visibility */ - fun setLeadingIconVisibility(visible: Boolean) { - if (visible) { - val padding = resources.getDimensionPixelSize(verticalPadding) - itemContainer.setPadding(0, padding, 0, padding) - leadingIconContainer.show() - } else { - leadingIconContainer.gone() - } - } - - /** Sets the leading icon background image type */ - fun setLeadingIconBackgroundType(type: ImageBackground) { - leadingIconContainer.setBackgroundResource(ImageBackground.background(type)) - setLeadingIconVisibility(true) - } - - /** Sets the leading icon background image type */ - fun setLeadingIconSize(imageSize: LeadingIconSize) { - val size = resources.getDimensionPixelSize(LeadingIconSize.dimension(imageSize)) - leadingIcon.layoutParams.width = size - leadingIcon.layoutParams.height = size - } - - /** Returns the binding of the leading icon */ - fun leadingIcon() = leadingIcon - - /** Sets the trailing icon image drawable */ - fun setTrailingIconDrawable(drawable: Drawable) { - trailingIcon.setImageDrawable(drawable) - showTrailingIcon() - } - - /** Sets the trailing icon image resource */ - fun setTrailingIconResource(@DrawableRes idRes: Int) { - trailingIcon.setImageResource(idRes) - showTrailingIcon() - } - - /** Sets the trailing image content description */ - fun setTrailingIconContentDescription(description: String) { - trailingIcon.contentDescription = description - } - - /** Sets the item overflow menu click listener */ - fun setLeadingIconClickListener(onClick: (View) -> Unit) { - leadingIcon.setOnClickListener { onClick(leadingIcon) } - } - - /** Sets the item overflow menu click listener */ - fun setTrailingIconClickListener(onClick: (View) -> Unit) { - trailingIconContainer.setOnClickListener { onClick(trailingIcon) } - } - - /** Sets the Switch Visible */ - fun showSwitch() { - trailingIconContainer.gone() - trailingSwitch.show() - } - - fun setSwitchEnabled(enabled: Boolean) { - if (enabled) { - trailingSwitch.setEnabledOpacity(true) - trailingSwitch.isEnabled = true - } else { - trailingSwitch.setEnabledOpacity(false) - trailingSwitch.isEnabled = false - } - } - - /** Sets the trailing icon Visible */ - fun showTrailingIcon() { - trailingIconContainer.show() - trailingSwitch.gone() - } - - /** Hides all trailing items */ - fun hideTrailingItems() { - trailingIconContainer.gone() - trailingSwitch.gone() - } - - /** Hides all leading items */ - fun hideLeadingItems() { - leadingIconContainer.gone() - val padding = resources.getDimensionPixelSize(R.dimen.twoLineItemVerticalBigPadding) - itemContainer.setPadding(0, padding, 0, padding) - } - - /** Sets the favorite star visibility */ - fun setFavoriteStarVisible(isVisible: Boolean) { - if (isVisible) { - favoriteStar?.show() - } else { - favoriteStar?.gone() - } - } - - /** Sets the switch value */ - fun setIsChecked(isChecked: Boolean) { - trailingSwitch.isChecked = isChecked - } - - /** Sets the checked change listener for the switch */ - fun setOnCheckedChangeListener(onCheckedChangeListener: OnCheckedChangeListener) { - trailingSwitch.setOnCheckedChangeListener(onCheckedChangeListener) - } - - /** Allows to set a new value to the switch, without triggering the onChangeListener */ - fun quietlySetIsChecked( - newCheckedState: Boolean, - changeListener: OnCheckedChangeListener?, - ) { - trailingSwitch.quietlySetIsChecked(newCheckedState, changeListener) - } - - /** Sets the switch as enabled or not */ - override fun setEnabled(enabled: Boolean) { - setEnabledOpacity(enabled) - recursiveEnable(enabled) - super.setEnabled(enabled) - } - - enum class ImageBackground { - None, - Circular, - Rounded, - ; - - companion object { - fun from(value: Int): ImageBackground { - // same order as attrs-lists.xml - return when (value) { - 0 -> None - 1 -> Circular - 2 -> Rounded - else -> None - } - } - - fun background(type: ImageBackground): Int { - return when (type) { - None -> android.R.color.transparent - Circular -> R.drawable.list_item_image_circular_background - Rounded -> R.drawable.list_item_image_round_background - } - } - } - } - - enum class LeadingIconSize { - Small, - Medium, - Large, - ; - - companion object { - fun from(size: Int): LeadingIconSize { - // same order as attrs-lists.xml - return when (size) { - 0 -> Small - 1 -> Medium - 2 -> Large - else -> Medium - } - } - - fun dimension(size: LeadingIconSize): Int { - return when (size) { - Small -> R.dimen.listItemImageSmallSize - Medium -> R.dimen.listItemImageMediumSize - Large -> R.dimen.listItemImageLargeSize - } - } - } - } -} diff --git a/app/src/main/res/layout/activity_appearance.xml b/app/src/main/res/layout/activity_appearance.xml index f710930271b8..e17a9b80cb75 100644 --- a/app/src/main/res/layout/activity_appearance.xml +++ b/app/src/main/res/layout/activity_appearance.xml @@ -74,7 +74,7 @@ android:layout_weight="1" android:gravity="center_vertical" android:text="@string/changeIconCtaLabel" - app:typography="h4" /> + app:typography="body1" /> - - - - - - + android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/bottom_sheet_add_bookmark.xml b/app/src/main/res/layout/bottom_sheet_add_bookmark.xml index 9de14b2d7478..aed85ba08530 100644 --- a/app/src/main/res/layout/bottom_sheet_add_bookmark.xml +++ b/app/src/main/res/layout/bottom_sheet_add_bookmark.xml @@ -47,7 +47,7 @@ app:leadingIconBackground="circular" app:primaryText="Primary Item" /> - - - - + + + + + - - + + + + + + + + + + + + + + + + + diff --git a/common/common-ui/src/main/res/color/switch_track_tint.xml b/common/common-ui/src/main/res/color/switch_track_tint.xml index 29ac9fa47896..9722c253f999 100644 --- a/common/common-ui/src/main/res/color/switch_track_tint.xml +++ b/common/common-ui/src/main/res/color/switch_track_tint.xml @@ -14,7 +14,25 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> + + + + + - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/common/common-ui/src/main/res/drawable/switch_thumb.xml b/common/common-ui/src/main/res/drawable/switch_thumb.xml new file mode 100644 index 000000000000..6f76a7033597 --- /dev/null +++ b/common/common-ui/src/main/res/drawable/switch_thumb.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + diff --git a/common/common-ui/src/main/res/layout/component_one_line_item.xml b/common/common-ui/src/main/res/layout/component_one_line_item.xml index 03ca419dae28..549245122ea8 100644 --- a/common/common-ui/src/main/res/layout/component_one_line_item.xml +++ b/common/common-ui/src/main/res/layout/component_one_line_item.xml @@ -50,6 +50,19 @@ app:leadingIcon="@drawable/ic_dax_icon" app:primaryText="Item with Small Leading Image " /> + + + + @@ -70,7 +96,20 @@ app:leadingIconSize="large" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/oneLineListItemWithMediumImage" + app:layout_constraintTop_toBottomOf="@id/oneLineListItemWithMediumImageAndBg" + app:leadingIcon="@drawable/ic_dax_icon" + app:primaryText="Item with Large Leading Image " /> + + @@ -82,18 +121,31 @@ app:leadingIconSize="extra_large" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/oneLineListItemWithLargeImage" + app:layout_constraintTop_toBottomOf="@id/oneLineListItemWithLargeImageAndBG" app:leadingIcon="@drawable/ic_dax_icon" app:primaryText="Item with Extra Large Leading Image " /> + + diff --git a/common/common-ui/src/main/res/layout/component_switch.xml b/common/common-ui/src/main/res/layout/component_switch.xml index a3de7e9d4e39..c107877031b5 100644 --- a/common/common-ui/src/main/res/layout/component_switch.xml +++ b/common/common-ui/src/main/res/layout/component_switch.xml @@ -33,27 +33,48 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> - + app:layout_constraintStart_toStartOf="parent" /> + + + + - + android:enabled="false" + app:layout_constraintBottom_toBottomOf="@+id/dax_switch_three" + app:layout_constraintStart_toEndOf="@+id/dax_switch_three" + app:layout_constraintTop_toTopOf="@+id/dax_switch_three"/> diff --git a/common/common-ui/src/main/res/layout/component_two_line_item.xml b/common/common-ui/src/main/res/layout/component_two_line_item.xml index f7c38212372c..efc6dc6bc3c3 100644 --- a/common/common-ui/src/main/res/layout/component_two_line_item.xml +++ b/common/common-ui/src/main/res/layout/component_two_line_item.xml @@ -14,20 +14,20 @@ ~ limitations under the License. --> + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipToPadding="false" + android:paddingTop="@dimen/keyline_5" + android:paddingBottom="@dimen/keyline_5"> + app:layout_constraintTop_toTopOf="parent" + app:primaryText="Two Line Items" /> + app:secondaryText="Without Image" /> + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWithoutImage" + app:leadingIcon="@drawable/ic_globe_gray_16dp" + app:primaryText="Two Line Item" + app:secondaryText="With Leading Image" /> + + + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWithSmallImageAndTrailingIcon" + app:leadingIcon="@drawable/ic_dax_icon" + app:leadingIconBackground="circular" + app:leadingIconSize="small" + app:primaryText="Two Line Item" + app:secondaryText="With Small Leading with Background Trailing Image" + app:trailingIcon="@drawable/ic_menu_vertical_24" /> + + + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWithMediumImageAndTrailingIcon" + app:leadingIcon="@drawable/ic_dax_icon" + app:leadingIconBackground="circular" + app:leadingIconSize="medium" + app:primaryText="Two Line Item" + app:secondaryText="With Medium Leading Background and Trailing Image" + app:trailingIcon="@drawable/ic_menu_vertical_24" /> + + + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWithLargeImageAndTrailingIcon" + app:leadingIcon="@drawable/ic_dax_icon" + app:leadingIconBackground="circular" + app:leadingIconSize="large" + app:primaryText="Two Line Item" + app:secondaryText="With Large Leading Background and Trailing Image" + app:trailingIcon="@drawable/ic_menu_vertical_24" /> + + + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWithExtraLargeImageAndTrailingIcon" + app:leadingIcon="@drawable/ic_dax_icon" + app:leadingIconBackground="circular" + app:leadingIconSize="extra_large" + app:primaryText="Two Line Item" + app:secondaryText="With Extra Large Leading and Trailing Image" + app:trailingIcon="@drawable/ic_menu_vertical_24" /> + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWithExtraLargeImageAndTrailingIconAndBG" + app:primaryText="Two Line Item" + app:secondaryText="With Trailing Image" + app:trailingIcon="@drawable/ic_menu_vertical_24" /> + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWithTrailingIcon" + app:primaryText="Two Line Item" + app:secondaryText="With Beta Pill" + app:showBetaPill="true" /> + android:id="@+id/twoLineListItemWithCircularImage" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWithBetaPill" + app:leadingIcon="@drawable/ic_globe_gray_16dp" + app:leadingIconBackground="circular" + app:primaryText="Two Line Item" + app:secondaryText="With Leading Image over Circular Background" + app:trailingIcon="@drawable/ic_menu_vertical_24" /> + android:id="@+id/twoLineListItemWitRoundImage" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWithCircularImage" + app:leadingIcon="@drawable/ic_globe_gray_16dp" + app:leadingIconBackground="rounded" + app:primaryText="Two Line Item" + app:secondaryText="With Leading Image over Rounded Background" + app:trailingIcon="@drawable/ic_menu_vertical_24" /> + app:layout_constraintTop_toBottomOf="@id/twoLineListItemWitRoundImage" + app:primaryText="Two Line Item" + app:secondaryText="With Switch" + app:showSwitch="true" /> + app:layout_constraintTop_toBottomOf="@id/twoLineSwitchListItem" + app:leadingIcon="@drawable/ic_globe_gray_16dp" + app:primaryText="Two Line Item" + app:secondaryText="With Leading Image and Switch" + app:showSwitch="true" /> + app:showSwitch="true" /> + app:showSwitch="true" /> + app:showSwitch="true" /> + app:showSwitch="true" /> + app:switchEnabled="false" /> + android:id="@+id/twoLineSwitchListItemWithPrimaryTextColorOverlay" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/twoLineSwitchListItemWithSwitchDisabledChecked" + app:leadingIcon="@drawable/ic_globe_gray_16dp" + app:primaryText="Two Line Item" + app:primaryTextColorOverlay="@color/destructive_text_color_selector" + app:secondaryText="With custom Primary Text color" /> + android:id="@+id/twoLineSwitchListItemWithSecondaryTextColorOverlay" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/twoLineSwitchListItemWithPrimaryTextColorOverlay" + app:leadingIcon="@drawable/ic_globe_gray_16dp" + app:primaryText="Two Line Item" + app:secondaryText="With custom Secondary Text color" + app:secondaryTextColorOverlay="@color/destructive_text_color_selector" /> \ No newline at end of file diff --git a/app/src/main/res/layout/view_bookmark_two_line_item.xml b/common/common-ui/src/main/res/layout/view_bookmark_two_line_item.xml similarity index 98% rename from app/src/main/res/layout/view_bookmark_two_line_item.xml rename to common/common-ui/src/main/res/layout/view_bookmark_two_line_item.xml index 3eea203e5808..bacd9488c62d 100644 --- a/app/src/main/res/layout/view_bookmark_two_line_item.xml +++ b/common/common-ui/src/main/res/layout/view_bookmark_two_line_item.xml @@ -56,7 +56,7 @@ app:layout_constraintStart_toEndOf="@+id/leadingIconBackground" app:layout_constraintTop_toTopOf="parent" app:layout_constraintWidth_default="wrap" - app:typography="h4" + app:typography="body1" tools:text="Primary Text" /> - @@ -54,7 +52,7 @@ app:layout_constraintEnd_toStartOf="@+id/trailingBarrier" app:layout_constraintStart_toEndOf="@id/leadingIconBackground" app:layout_constraintTop_toTopOf="parent" - app:typography="h4" + app:typography="body1" tools:ignore="InvalidColorAttribute" tools:text="Title" /> @@ -65,12 +63,12 @@ app:barrierDirection="start" app:constraint_referenced_ids="trailingSwitch,trailingIconContainer,endTrailingPadding" /> - - - + diff --git a/common/common-ui/src/main/res/values/design-system-colors.xml b/common/common-ui/src/main/res/values/design-system-colors.xml index 71982d23ccbd..907b275e2a7f 100644 --- a/common/common-ui/src/main/res/values/design-system-colors.xml +++ b/common/common-ui/src/main/res/values/design-system-colors.xml @@ -82,8 +82,12 @@ + + + + @@ -133,6 +137,7 @@ #CCCCCC #66CCCCCC #80CCCCCC + #5C000000 #DDDDDD #E5E5E5 #EEEEEE diff --git a/common/common-ui/src/main/res/values/design-system-dimensions.xml b/common/common-ui/src/main/res/values/design-system-dimensions.xml index 9f466ff024f2..3755fab724f6 100644 --- a/common/common-ui/src/main/res/values/design-system-dimensions.xml +++ b/common/common-ui/src/main/res/values/design-system-dimensions.xml @@ -60,8 +60,8 @@ 8dp 56dp 64dp - 12dp - 14dp + 8dp + 10dp 24dp 44dp 10dp @@ -88,8 +88,8 @@ 1dp @dimen/keyline_4 - @dimen/keyline_4 - @dimen/keyline_4 + @dimen/keyline_2 + @dimen/keyline_2 1dp @dimen/keyline_4 diff --git a/common/common-ui/src/main/res/values/design-system-theming.xml b/common/common-ui/src/main/res/values/design-system-theming.xml index d4b1429420c3..0c27e33ea903 100644 --- a/common/common-ui/src/main/res/values/design-system-theming.xml +++ b/common/common-ui/src/main/res/values/design-system-theming.xml @@ -54,7 +54,7 @@ @style/Widget.DuckDuckGo.TabLayout @style/Widget.DuckDuckGo.RadioButton @style/Widget.DuckDuckGo.Slider - @style/Widget.DuckDuckGo.Switch + @style/Widget.DuckDuckGo.v3.Switch @style/Widget.DuckDuckGo.Snackbar @style/Widget.DuckDuckGo.SnackbarButton @style/Widget.DuckDuckGo.SnackbarText @@ -80,6 +80,7 @@ @style/Widget.DuckDuckGo.TwoLineListItem @style/Widget.DuckDuckGo.CardView + @style/Widget.DuckDuckGo.v3.Switch @style/Widget.DuckDuckGo.DaxExpandableItem @@ -180,9 +181,13 @@ ?attr/daxColorAccentBlue - @color/gray40 - ?attr/daxColorAccentBlue - @color/gray40 + @color/gray60_50 + @color/gray30 + @color/gray30 + ?attr/daxColorWhite + ?attr/daxColorWhite + @color/white48 + @color/white48 @color/gray40_50 @@ -253,9 +258,13 @@ ?attr/daxColorAccentBlue - @color/gray60 - ?attr/daxColorAccentBlue - @color/white + @color/gray60_50 + @color/gray36 + @color/gray36 + ?attr/daxColorWhite + ?attr/daxColorWhite + ?attr/daxColorWhite + ?attr/daxColorWhite @color/gray60_50 diff --git a/common/common-ui/src/main/res/values/widgets.xml b/common/common-ui/src/main/res/values/widgets.xml index cbb19c4aaaf5..e9ef0969d0d7 100644 --- a/common/common-ui/src/main/res/values/widgets.xml +++ b/common/common-ui/src/main/res/values/widgets.xml @@ -14,7 +14,7 @@ ~ limitations under the License. --> - + - - - diff --git a/lint-rules/src/main/java/com/duckduckgo/lint/ui/DesignSystemLintExtensions.kt b/lint-rules/src/main/java/com/duckduckgo/lint/ui/DesignSystemLintExtensions.kt index 31bc075e40d9..7dfaec05ebe1 100644 --- a/lint-rules/src/main/java/com/duckduckgo/lint/ui/DesignSystemLintExtensions.kt +++ b/lint-rules/src/main/java/com/duckduckgo/lint/ui/DesignSystemLintExtensions.kt @@ -68,7 +68,7 @@ class DesignSystemLintExtensions { private const val BUTTON_GHOST_SMALL = "com.duckduckgo.mobile.android.ui.view.button.ButtonGhostSmall" private const val ONE_LINE_LIST_ITEM = "com.duckduckgo.mobile.android.ui.view.listitem.OneLineListItem" private const val TWO_LINE_LIST_ITEM = "com.duckduckgo.mobile.android.ui.view.listitem.TwoLineListItem" - private const val SWITCH_VIEW = "com.duckduckgo.mobile.android.ui.view.SwitchView" + private const val SWITCH_VIEW = "com.duckduckgo.mobile.android.ui.view.DaxSwitch" private const val DAX_TEXT = "com.duckduckgo.mobile.android.ui.view.text.DaxTextView" val ANDROID_DESIGN_COMPONENTS = diff --git a/lint-rules/src/test/java/com/duckduckgo/lint/ui/NoStyleAppliedToDesignSystemComponentDetectorTest.kt b/lint-rules/src/test/java/com/duckduckgo/lint/ui/NoStyleAppliedToDesignSystemComponentDetectorTest.kt index 1f658c13ffcf..dca1c20bbe9f 100644 --- a/lint-rules/src/test/java/com/duckduckgo/lint/ui/NoStyleAppliedToDesignSystemComponentDetectorTest.kt +++ b/lint-rules/src/test/java/com/duckduckgo/lint/ui/NoStyleAppliedToDesignSystemComponentDetectorTest.kt @@ -132,7 +132,7 @@ style="@style/Widget.DuckDuckGo.Button.Primary" android:layout_gravity="bottom" app:navigationIcon="@drawable/ic_menu_black_24dp"/> - + app:typography="body1" /> diff --git a/network-protection/network-protection-impl/src/main/res/layout/view_vpn_toggle.xml b/network-protection/network-protection-impl/src/main/res/layout/view_vpn_toggle.xml index 6a704cee3822..9eee2c746ebb 100644 --- a/network-protection/network-protection-impl/src/main/res/layout/view_vpn_toggle.xml +++ b/network-protection/network-protection-impl/src/main/res/layout/view_vpn_toggle.xml @@ -37,7 +37,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintWidth_default="wrap" - app:typography="h4" /> + app:typography="body1" /> - @@ -50,7 +50,7 @@ android:id="@+id/subscriptionGet" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginStart="72dp" + android:layout_marginStart="48dp" android:layout_marginTop="@dimen/keyline_3" android:layout_marginBottom="@dimen/keyline_3" app:textType="primary"