Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 112 additions & 4 deletions app/src/main/java/com/duckduckgo/app/appearance/AppearanceActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -43,20 +43,28 @@ import com.duckduckgo.common.ui.DuckDuckGoTheme.DARK
import com.duckduckgo.common.ui.DuckDuckGoTheme.LIGHT
import com.duckduckgo.common.ui.DuckDuckGoTheme.SYSTEM_DEFAULT
import com.duckduckgo.common.ui.sendThemeChangedBroadcast
import com.duckduckgo.common.ui.store.AppTheme
import com.duckduckgo.common.ui.view.dialog.RadioListAlertDialogBuilder
import com.duckduckgo.common.ui.view.dialog.TextAlertDialogBuilder
import com.duckduckgo.common.ui.view.getColorFromAttr
import com.duckduckgo.common.ui.view.gone
import com.duckduckgo.common.ui.view.show
import com.duckduckgo.common.ui.viewbinding.viewBinding
import com.duckduckgo.di.scopes.ActivityScope
import com.duckduckgo.navigation.api.getActivityParams
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import logcat.logcat
import javax.inject.Inject
import com.duckduckgo.mobile.android.R as CommonR

@InjectWith(ActivityScope::class)
@ContributeToActivityStarter(Default::class, screenName = "appearance")
@ContributeToActivityStarter(HighlightedItem::class, screenName = "appearance")
class AppearanceActivity : DuckDuckGoActivity() {
@Inject
lateinit var appTheme: AppTheme

private val viewModel: AppearanceViewModel by bindViewModel()
private val binding: ActivityAppearanceBinding by viewBinding()

Expand Down Expand Up @@ -110,10 +118,43 @@ class AppearanceActivity : DuckDuckGoActivity() {
scrollToHighlightedItem()
}

private fun configureOmnibarSettings(viewState: AppearanceViewModel.ViewState) {
if (viewState.shouldShowSplitOmnibarSettings) {
configureOmnibarTypeToggle(
top = InputScreenToggleButton.Top(
isActive = viewState.omnibarType == OmnibarType.SINGLE_TOP,
isLightMode = appTheme.isLightModeEnabled(),
),
bottom = InputScreenToggleButton.Bottom(
isActive = viewState.omnibarType == OmnibarType.SINGLE_BOTTOM,
isLightMode = appTheme.isLightModeEnabled(),
),
split = InputScreenToggleButton.Split(
isActive = viewState.omnibarType == OmnibarType.SPLIT,
isLightMode = appTheme.isLightModeEnabled(),
),
)

binding.omnibarTypeSettingsTitle.show()
binding.omnibarTypeToggleContainer.show()
binding.showFullUrlSettingDivider.show()
binding.addressBarPositionSetting.gone()
} else {
updateSelectedOmnibarPosition(viewState.omnibarType)
binding.omnibarTypeSettingsTitle.gone()
binding.omnibarTypeToggleContainer.gone()
binding.showFullUrlSettingDivider.gone()
binding.addressBarPositionSetting.show()
}
}

private fun configureUiEventHandlers() {
binding.selectedThemeSetting.setClickListener { viewModel.userRequestedToChangeTheme() }
binding.changeAppIconSetting.setOnClickListener { viewModel.userRequestedToChangeIcon() }
binding.addressBarPositionSetting.setOnClickListener { viewModel.userRequestedToChangeAddressBarPosition() }
binding.topOmnibarContainer.setOnClickListener { viewModel.onOmnibarTypeSelected(OmnibarType.SINGLE_TOP) }
binding.bottomOmnibarContainer.setOnClickListener { viewModel.onOmnibarTypeSelected(OmnibarType.SINGLE_BOTTOM) }
binding.splitOmnibarContainer.setOnClickListener { viewModel.onOmnibarTypeSelected(OmnibarType.SPLIT) }
}

private fun observeViewModel() {
Expand All @@ -127,12 +168,12 @@ class AppearanceActivity : DuckDuckGoActivity() {
binding.experimentalNightMode.quietlySetIsChecked(viewState.forceDarkModeEnabled, forceDarkModeToggleListener)
binding.experimentalNightMode.isEnabled = viewState.canForceDarkMode
binding.experimentalNightMode.isVisible = viewState.supportsForceDarkMode
updateSelectedOmnibarPosition(it.omnibarType)
binding.showFullUrlSetting.quietlySetIsChecked(viewState.isFullUrlEnabled, showFullUrlToggleListener)
binding.showTrackersCountInTabSwitcher.quietlySetIsChecked(
viewState.isTrackersCountInTabSwitcherEnabled,
showTrackersCountInTabSwitcher,
)
configureOmnibarSettings(it)
}
}.launchIn(lifecycleScope)

Expand All @@ -159,9 +200,8 @@ class AppearanceActivity : DuckDuckGoActivity() {
val subtitle =
getString(
when (omnibarType) {
OmnibarType.SINGLE_TOP -> R.string.settingsAddressBarPositionTop
OmnibarType.SINGLE_TOP, OmnibarType.SPLIT -> R.string.settingsAddressBarPositionTop
OmnibarType.SINGLE_BOTTOM -> R.string.settingsAddressBarPositionBottom
OmnibarType.SPLIT -> TODO()
},
)
binding.addressBarPositionSetting.setSecondaryText(subtitle)
Expand Down Expand Up @@ -224,7 +264,7 @@ class AppearanceActivity : DuckDuckGoActivity() {
object : RadioListAlertDialogBuilder.EventListener() {
override fun onPositiveButtonClicked(selectedItem: Int) {
val newType = OmnibarType.entries[selectedItem - 1]
viewModel.setOmnibarType(newType)
viewModel.onOmnibarTypeSelected(newType)
}
},
).show()
Expand Down Expand Up @@ -260,6 +300,74 @@ class AppearanceActivity : DuckDuckGoActivity() {
colorAnimator.start()
}

private fun configureOmnibarTypeToggle(
top: InputScreenToggleButton,
bottom: InputScreenToggleButton,
split: InputScreenToggleButton,
) = with(binding) {
val context = this@AppearanceActivity
topOmnibarToggleImage.setImageDrawable(ContextCompat.getDrawable(context, top.imageRes))
topOmnibarToggleCheck.setImageDrawable(ContextCompat.getDrawable(context, top.checkRes))

bottomOmnibarToggleImage.setImageDrawable(ContextCompat.getDrawable(context, bottom.imageRes))
bottomOmnibarToggleCheck.setImageDrawable(ContextCompat.getDrawable(context, bottom.checkRes))

splitOmnibarToggleImage.setImageDrawable(ContextCompat.getDrawable(context, split.imageRes))
splitOmnibarToggleCheck.setImageDrawable(ContextCompat.getDrawable(context, split.checkRes))
}

private sealed class InputScreenToggleButton(
isActive: Boolean,
) {
abstract val imageRes: Int

val checkRes: Int =
if (isActive) {
CommonR.drawable.ic_check_accent_24
} else {
CommonR.drawable.ic_shape_circle_disabled_24
}

class Top(
isActive: Boolean,
isLightMode: Boolean,
) : InputScreenToggleButton(isActive) {
override val imageRes: Int =
when {
isActive && isLightMode -> R.drawable.mobile_toolbar_top_selected_light
isActive && !isLightMode -> R.drawable.mobile_toolbar_top_selected_dark
!isActive && isLightMode -> R.drawable.mobile_toolbar_top_unselected_light
else -> R.drawable.mobile_toolbar_top_unselected_dark
}
}

class Bottom(
isActive: Boolean,
isLightMode: Boolean,
) : InputScreenToggleButton(isActive) {
override val imageRes: Int =
when {
isActive && isLightMode -> R.drawable.mobile_toolbar_bottom_selected_light
isActive && !isLightMode -> R.drawable.mobile_toolbar_bottom_selected_dark
!isActive && isLightMode -> R.drawable.mobile_toolbar_bottom_unselected_light
else -> R.drawable.mobile_toolbar_bottom_unselected_dark
}
}

class Split(
isActive: Boolean,
isLightMode: Boolean,
) : InputScreenToggleButton(isActive) {
override val imageRes: Int =
when {
isActive && isLightMode -> R.drawable.mobile_toolbar_split_selected_light
isActive && !isLightMode -> R.drawable.mobile_toolbar_split_selected_dark
!isActive && isLightMode -> R.drawable.mobile_toolbar_split_unselected_light
else -> R.drawable.mobile_toolbar_split_unselected_dark
}
}
}

companion object {
private const val ADDRESS_BAR = "addressBar"
private const val FADE_DURATION = 300L
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.webkit.WebViewFeature
import com.duckduckgo.anvil.annotations.ContributesViewModel
import com.duckduckgo.app.browser.omnibar.OmnibarFeatureRepository
import com.duckduckgo.app.icon.api.AppIcon
import com.duckduckgo.app.pixels.AppPixelName
import com.duckduckgo.app.pixels.AppPixelName.SETTINGS_THEME_TOGGLED_DARK
Expand Down Expand Up @@ -55,6 +56,7 @@ class AppearanceViewModel @Inject constructor(
private val pixel: Pixel,
private val dispatcherProvider: DispatcherProvider,
private val tabSwitcherDataStore: TabSwitcherDataStore,
omnibarFeatureRepository: OmnibarFeatureRepository,
) : ViewModel() {
data class ViewState(
val theme: DuckDuckGoTheme = DuckDuckGoTheme.LIGHT,
Expand All @@ -65,6 +67,7 @@ class AppearanceViewModel @Inject constructor(
val omnibarType: OmnibarType = OmnibarType.SINGLE_TOP,
val isFullUrlEnabled: Boolean = true,
val isTrackersCountInTabSwitcherEnabled: Boolean = true,
val shouldShowSplitOmnibarSettings: Boolean = false,
)

sealed class Command {
Expand All @@ -90,6 +93,7 @@ class AppearanceViewModel @Inject constructor(
supportsForceDarkMode = WebViewFeature.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING),
isFullUrlEnabled = settingsDataStore.isFullUrlEnabled,
omnibarType = settingsDataStore.omnibarType,
shouldShowSplitOmnibarSettings = omnibarFeatureRepository.isSplitOmnibarAvailable,
),
)

Expand Down Expand Up @@ -145,7 +149,7 @@ class AppearanceViewModel @Inject constructor(
pixel.fire(pixelName)
}

fun setOmnibarType(type: OmnibarType) {
fun onOmnibarTypeSelected(type: OmnibarType) {
viewModelScope.launch(dispatcherProvider.io()) {
settingsDataStore.omnibarType = type
viewState.update { it.copy(omnibarType = type) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,5 @@ interface AndroidBrowserConfigFeature {
fun useUnifiedOmnibarLayout(): Toggle

@Toggle.DefaultValue(FALSE)
@Toggle.InternalAlwaysEnabled
fun splitOmnibar(): Toggle
}
18 changes: 18 additions & 0 deletions app/src/main/res/drawable/mobile_toolbar_bottom_selected_dark.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="60dp"
android:height="100dp"
android:viewportWidth="60"
android:viewportHeight="100">
<path
android:pathData="M0,10C0,4.48 4.48,0 10,0h40c5.52,0 10,4.48 10,10v80c0,5.52 -4.48,10 -10,10H10c-5.52,0 -10,-4.48 -10,-10z"
android:fillColor="#1e294a"/>
<path
android:pathData="M50,98v2L10,100v-2zM58,90L58,10a8,8 0,0 0,-8 -8L10,2a8,8 0,0 0,-7.99 7.59L2,10v80a8,8 0,0 0,8 8v2c-5.35,0 -9.72,-4.2 -9.99,-9.48L0,90L0,10C0,4.48 4.48,0 10,0h40l0.51,0.01C55.8,0.28 60,4.65 60,10v80l-0.01,0.51a10,10 0,0 1,-9.47 9.47L50,100v-2a8,8 0,0 0,8 -8"
android:fillColor="#7295f6"/>
<path
android:pathData="M2,82h56v8a8,8 0,0 1,-8 8H10a8,8 0,0 1,-8 -8z"
android:fillColor="#213469"/>
<path
android:pathData="M2,80h56v2L2,82zM8,90a4,4 0,0 1,4 -4h24a4,4 0,0 1,0 8L12,94a4,4 0,0 1,-4 -4m36,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0"
android:fillColor="#7295f6"/>
</vector>
18 changes: 18 additions & 0 deletions app/src/main/res/drawable/mobile_toolbar_bottom_selected_light.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="60dp"
android:height="100dp"
android:viewportWidth="60"
android:viewportHeight="100">
<path
android:pathData="M0,10C0,4.48 4.48,0 10,0h40c5.52,0 10,4.48 10,10v80c0,5.52 -4.48,10 -10,10H10c-5.52,0 -10,-4.48 -10,-10z"
android:fillColor="#ccdaff"/>
<path
android:pathData="M50,98v2L10,100v-2zM58,90L58,10a8,8 0,0 0,-8 -8L10,2a8,8 0,0 0,-7.99 7.59L2,10v80a8,8 0,0 0,8 8v2c-5.35,0 -9.72,-4.2 -9.99,-9.48L0,90L0,10C0,4.48 4.48,0 10,0h40l0.51,0.01C55.8,0.28 60,4.65 60,10v80l-0.01,0.51a10,10 0,0 1,-9.47 9.47L50,100v-2a8,8 0,0 0,8 -8"
android:fillColor="#3969ef"/>
<path
android:pathData="M2,82h56v8a8,8 0,0 1,-8 8H10a8,8 0,0 1,-8 -8z"
android:fillColor="#adc2fc"/>
<path
android:pathData="M2,80h56v2L2,82zM8,90a4,4 0,0 1,4 -4h24a4,4 0,0 1,0 8L12,94a4,4 0,0 1,-4 -4m36,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0"
android:fillColor="#3969ef"/>
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="60dp"
android:height="100dp"
android:viewportWidth="60"
android:viewportHeight="100">
<path
android:pathData="M0,10C0,4.48 4.48,0 10,0h40c5.52,0 10,4.48 10,10v80c0,5.52 -4.48,10 -10,10H10c-5.52,0 -10,-4.48 -10,-10z"
android:fillColor="#222"/>
<path
android:pathData="M50,98v2L10,100v-2zM58,90L58,10a8,8 0,0 0,-8 -8L10,2a8,8 0,0 0,-7.99 7.59L2,10v80a8,8 0,0 0,8 8v2c-5.35,0 -9.72,-4.2 -9.99,-9.48L0,90L0,10C0,4.48 4.48,0 10,0h40l0.51,0.01C55.8,0.28 60,4.65 60,10v80l-0.01,0.51a10,10 0,0 1,-9.47 9.47L50,100v-2a8,8 0,0 0,8 -8"
android:fillColor="#666"/>
<path
android:pathData="M2,82h56v8a8,8 0,0 1,-8 8H10a8,8 0,0 1,-8 -8z"
android:fillColor="#333"/>
<path
android:pathData="M2,80h56v2L2,82zM8,90a4,4 0,0 1,4 -4h24a4,4 0,0 1,0 8L12,94a4,4 0,0 1,-4 -4m36,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0"
android:fillColor="#666"/>
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="60dp"
android:height="100dp"
android:viewportWidth="60"
android:viewportHeight="100">
<path
android:pathData="M0,10C0,4.48 4.48,0 10,0h40c5.52,0 10,4.48 10,10v80c0,5.52 -4.48,10 -10,10H10c-5.52,0 -10,-4.48 -10,-10z"
android:fillColor="#eee"/>
<path
android:pathData="M50,98v2L10,100v-2zM58,90L58,10a8,8 0,0 0,-8 -8L10,2a8,8 0,0 0,-7.99 7.59L2,10v80a8,8 0,0 0,8 8v2c-5.35,0 -9.72,-4.2 -9.99,-9.48L0,90L0,10C0,4.48 4.48,0 10,0h40l0.51,0.01C55.8,0.28 60,4.65 60,10v80l-0.01,0.51a10,10 0,0 1,-9.47 9.47L50,100v-2a8,8 0,0 0,8 -8"
android:fillColor="#888"/>
<path
android:pathData="M2,82h56v8a8,8 0,0 1,-8 8H10a8,8 0,0 1,-8 -8z"
android:fillColor="#ddd"/>
<path
android:pathData="M2,80h56v2L2,82zM8,90a4,4 0,0 1,4 -4h24a4,4 0,0 1,0 8L12,94a4,4 0,0 1,-4 -4m36,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0"
android:fillColor="#888"/>
</vector>
18 changes: 18 additions & 0 deletions app/src/main/res/drawable/mobile_toolbar_split_selected_dark.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="60dp"
android:height="100dp"
android:viewportWidth="60"
android:viewportHeight="100">
<path
android:pathData="M0,10C0,4.48 4.48,0 10,0h40c5.52,0 10,4.48 10,10v80c0,5.52 -4.48,10 -10,10H10c-5.52,0 -10,-4.48 -10,-10z"
android:fillColor="#1e294a"/>
<path
android:pathData="M50,98v2L10,100v-2zM58,90L58,10a8,8 0,0 0,-8 -8L10,2a8,8 0,0 0,-7.99 7.59L2,10v80a8,8 0,0 0,8 8v2c-5.35,0 -9.72,-4.2 -9.99,-9.48L0,90L0,10C0,4.48 4.48,0 10,0h40l0.51,0.01C55.8,0.28 60,4.65 60,10v80l-0.01,0.51a10,10 0,0 1,-9.47 9.47L50,100v-2a8,8 0,0 0,8 -8"
android:fillColor="#7295f6"/>
<path
android:pathData="M2,10a8,8 0,0 1,8 -8h40a8,8 0,0 1,8 8v8L2,18zM2,82h56v8a8,8 0,0 1,-8 8L10,98a8,8 0,0 1,-8 -8z"
android:fillColor="#213469"/>
<path
android:pathData="M8,10a4,4 0,0 1,4 -4h36a4,4 0,0 1,0 8L12,14a4,4 0,0 1,-4 -4m-6,8h56v2L2,20zM2,80h56v2L2,82zM44,90a4,4 0,1 1,8 0,4 4,0 0,1 -8,0M8,90a4,4 0,1 1,8 0,4 4,0 0,1 -8,0m12,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0m12,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0"
android:fillColor="#7295f6"/>
</vector>
18 changes: 18 additions & 0 deletions app/src/main/res/drawable/mobile_toolbar_split_selected_light.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="60dp"
android:height="100dp"
android:viewportWidth="60"
android:viewportHeight="100">
<path
android:pathData="M0,10C0,4.48 4.48,0 10,0h40c5.52,0 10,4.48 10,10v80c0,5.52 -4.48,10 -10,10H10c-5.52,0 -10,-4.48 -10,-10z"
android:fillColor="#ccdaff"/>
<path
android:pathData="M50,98v2L10,100v-2zM58,90L58,10a8,8 0,0 0,-8 -8L10,2a8,8 0,0 0,-7.99 7.59L2,10v80a8,8 0,0 0,8 8v2c-5.35,0 -9.72,-4.2 -9.99,-9.48L0,90L0,10C0,4.48 4.48,0 10,0h40l0.51,0.01C55.8,0.28 60,4.65 60,10v80l-0.01,0.51a10,10 0,0 1,-9.47 9.47L50,100v-2a8,8 0,0 0,8 -8"
android:fillColor="#3969ef"/>
<path
android:pathData="M2,10a8,8 0,0 1,8 -8h40a8,8 0,0 1,8 8v8L2,18zM2,82h56v8a8,8 0,0 1,-8 8L10,98a8,8 0,0 1,-8 -8z"
android:fillColor="#adc2fc"/>
<path
android:pathData="M8,10a4,4 0,0 1,4 -4h36a4,4 0,0 1,0 8L12,14a4,4 0,0 1,-4 -4m-6,8h56v2L2,20zM2,80h56v2L2,82zM44,90a4,4 0,1 1,8 0,4 4,0 0,1 -8,0M8,90a4,4 0,1 1,8 0,4 4,0 0,1 -8,0m12,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0m12,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0"
android:fillColor="#3969ef"/>
</vector>
18 changes: 18 additions & 0 deletions app/src/main/res/drawable/mobile_toolbar_split_unselected_dark.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="60dp"
android:height="100dp"
android:viewportWidth="60"
android:viewportHeight="100">
<path
android:pathData="M0,10C0,4.48 4.48,0 10,0h40c5.52,0 10,4.48 10,10v80c0,5.52 -4.48,10 -10,10H10c-5.52,0 -10,-4.48 -10,-10z"
android:fillColor="#222"/>
<path
android:pathData="M50,98v2L10,100v-2zM58,90L58,10a8,8 0,0 0,-8 -8L10,2a8,8 0,0 0,-7.99 7.59L2,10v80a8,8 0,0 0,8 8v2c-5.35,0 -9.72,-4.2 -9.99,-9.48L0,90L0,10C0,4.48 4.48,0 10,0h40l0.51,0.01C55.8,0.28 60,4.65 60,10v80l-0.01,0.51a10,10 0,0 1,-9.47 9.47L50,100v-2a8,8 0,0 0,8 -8"
android:fillColor="#666"/>
<path
android:pathData="M2,10a8,8 0,0 1,8 -8h40a8,8 0,0 1,8 8v8L2,18zM2,82h56v8a8,8 0,0 1,-8 8L10,98a8,8 0,0 1,-8 -8z"
android:fillColor="#333"/>
<path
android:pathData="M8,10a4,4 0,0 1,4 -4h36a4,4 0,0 1,0 8L12,14a4,4 0,0 1,-4 -4m-6,8h56v2L2,20zM2,80h56v2L2,82zM44,90a4,4 0,1 1,8 0,4 4,0 0,1 -8,0M8,90a4,4 0,1 1,8 0,4 4,0 0,1 -8,0m12,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0m12,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0"
android:fillColor="#666"/>
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="60dp"
android:height="100dp"
android:viewportWidth="60"
android:viewportHeight="100">
<path
android:pathData="M0,10C0,4.48 4.48,0 10,0h40c5.52,0 10,4.48 10,10v80c0,5.52 -4.48,10 -10,10H10c-5.52,0 -10,-4.48 -10,-10z"
android:fillColor="#eee"/>
<path
android:pathData="M50,98v2L10,100v-2zM58,90L58,10a8,8 0,0 0,-8 -8L10,2a8,8 0,0 0,-7.99 7.59L2,10v80a8,8 0,0 0,8 8v2c-5.35,0 -9.72,-4.2 -9.99,-9.48L0,90L0,10C0,4.48 4.48,0 10,0h40l0.51,0.01C55.8,0.28 60,4.65 60,10v80l-0.01,0.51a10,10 0,0 1,-9.47 9.47L50,100v-2a8,8 0,0 0,8 -8"
android:fillColor="#888"/>
<path
android:pathData="M2,10a8,8 0,0 1,8 -8h40a8,8 0,0 1,8 8v8L2,18zM2,82h56v8a8,8 0,0 1,-8 8L10,98a8,8 0,0 1,-8 -8z"
android:fillColor="#ddd"/>
<path
android:pathData="M8,10a4,4 0,0 1,4 -4h36a4,4 0,0 1,0 8L12,14a4,4 0,0 1,-4 -4m-6,8h56v2L2,20zM2,80h56v2L2,82zM44,90a4,4 0,1 1,8 0,4 4,0 0,1 -8,0M8,90a4,4 0,1 1,8 0,4 4,0 0,1 -8,0m12,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0m12,0a4,4 0,1 1,8 0,4 4,0 0,1 -8,0"
android:fillColor="#888"/>
</vector>
Loading
Loading