Update icons and move remaining to Material Symbols (#4057)

* Update Simple Icons to 16.34.0

The brand paths are unchanged; only the version in the headers moves.

* Use the current Material Symbols names

Several symbols were renamed after the Valkyrie migration. people_alt,
new_releases, screen_lock_*, screen_rotation and stay_current_* are only
aliases in the font now, for group, verified and the mobile_* symbols.
done, push_pin and expand_less/expand_more become check, keep and
keyboard_arrow_up/down, which draw the same or an almost identical glyph.

* Use filled icons where the Material Symbols migration dropped the fill

The migration mapped Filled and Default references to the outline symbols,
but the classic glyph was often solid, and Outlined Warning, Error and
Pause were solid as well. Each call site was compared against the rendered
classic glyph, and the solid ones now use RoundedFilled. view_list needs an
auto-mirrored filled pack. The outline SVGs this leaves unused are removed.

* Show a compact grid icon for the compact display modes

Compact and cover-only grids showed the same view_module icon as the
comfortable grid.

* Generate notification and layout drawables from Material Symbols

Notifications and XML layouts can't use ImageVectors, so they relied on
hand-kept copies of classic Material drawables. A build-logic task now
converts an opt-in list of the module's SVGs with AGP's Svg2Vector into
generated resources. sdk-common is taken from AGP's own dependency metadata,
so its version always matches AGP.

Compose call sites that only needed a drawable (tab close, crop) use the
ImageVectors instead. The icons module's R class must be imported as
MaterialSymbolsR, enforced by spotless, so it isn't mistaken for the app's R.

* Redraw custom icons in the Material Symbols style

The reading mode, crop off, mark previous as read and chapter download
icons were drawn in the classic style. They are rebuilt from Material
Symbols shapes (mobile_gear, mobile_arrow_right/down, crop,
arrow_circle_down, downloading) in a new custom-material-symbols module;
each SVG header lists where its parts come from. The default reading mode
and incognito use mobile_gear and eyeglasses_2 as they are.

ReadingMode holds an ImageVector now, and the module's R class follows the
same alias rule as MaterialSymbolsR.

* Use Material Symbols for the launcher shortcuts

Updates uses release_alert because the symbol named new_releases is now a
check badge.

* Rename the animated icon drawables

anim_*_enter no longer fits now that the icons play in both directions.
This is a pure rename so the following commits show only content changes.

* Use Material Symbols for the bottom navigation icons

The library, updates, history and browse animations are rebuilt from the
outline and filled symbols but keep their original motion: the white inside
is pushed into the ribbon, the "!" and the needle, and the history ring
still spins. Updates uses release_alert, like the shortcut. More already
matches more_horiz and is unchanged.

* Use rounded bars for the manga description caret

The animation is unchanged; the bars get rounded ends to match the
Material Symbols stroke.

* Settle the browse tab icon when selecting and deselecting

The compass turns a full turn and settles with overshoot both ways, instead
of deselecting by playing the select animation backwards. A
rememberAnimatedVectorPainter overload takes separate enter and exit
animations and doesn't animate on the first composition.
This commit is contained in:
AntsyLich
2026-10-09 17:50:12 +00:00
committed by GitHub
parent dd46413e10
commit a80027ff36
151 changed files with 804 additions and 747 deletions
+1
View File
@@ -205,6 +205,7 @@ dependencies {
baselineProfile(projects.baselineProfile)
implementation(projects.i18n)
implementation(projects.icons.customMaterialSymbols)
implementation(projects.icons.materialSymbols)
implementation(projects.icons.simpleIcons)
implementation(projects.core.archive)
@@ -34,10 +34,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
@@ -51,13 +49,13 @@ import eu.kanade.presentation.components.AppBarActions
import eu.kanade.presentation.components.WarningBanner
import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.presentation.more.settings.widget.TrailingWidgetBuffer
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsViewModel
import eu.kanade.tachiyomi.util.system.LocaleHelper
import eu.kanade.tachiyomi.util.system.copyToClipboard
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Eyeglasses2
import mihon.icons.materialsymbols.rounded.Settings
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ScrollbarLazyColumn
@@ -351,7 +349,7 @@ private fun DetailsHeader(
modifier = Modifier.padding(horizontal = MaterialTheme.padding.small),
title = stringResource(MR.strings.pref_incognito_mode),
subtitle = stringResource(MR.strings.pref_incognito_mode_extension_summary),
icon = ImageVector.vectorResource(R.drawable.ic_glasses_24dp),
icon = MaterialSymbols.Rounded.Eyeglasses2,
widget = {
Row(
verticalAlignment = Alignment.CenterVertically,
@@ -64,8 +64,8 @@ import mihon.domain.extension.model.ExtensionStore
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.ExpandMore
import mihon.icons.materialsymbols.rounded.Info
import mihon.icons.materialsymbols.rounded.KeyboardArrowDown
import mihon.icons.materialsymbols.rounded.Refresh
import mihon.icons.materialsymbols.rounded.Settings
import mihon.icons.materialsymbols.rounded.VerifiedUser
@@ -641,7 +641,7 @@ private fun ExtensionSplitButton(
contentPadding = SplitButtonDefaults.trailingButtonContentPaddingFor(size),
) {
Icon(
imageVector = MaterialSymbols.Rounded.ExpandMore,
imageVector = MaterialSymbols.Rounded.KeyboardArrowDown,
contentDescription = stringResource(MR.strings.action_menu),
modifier = Modifier.size(SplitButtonDefaults.trailingButtonIconSizeFor(size)),
)
@@ -22,8 +22,8 @@ import eu.kanade.tachiyomi.ui.browse.source.SourcesViewModel
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceViewModel.Listing
import eu.kanade.tachiyomi.util.system.LocaleHelper
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.PushPin
import mihon.icons.materialsymbols.roundedfilled.PushPin
import mihon.icons.materialsymbols.rounded.Keep
import mihon.icons.materialsymbols.roundedfilled.Keep
import tachiyomi.domain.source.model.Pin
import tachiyomi.domain.source.model.Source
import tachiyomi.i18n.MR
@@ -143,7 +143,7 @@ private fun SourcePinButton(
isPinned: Boolean,
onClick: () -> Unit,
) {
val icon = if (isPinned) MaterialSymbols.RoundedFilled.PushPin else MaterialSymbols.Rounded.PushPin
val icon = if (isPinned) MaterialSymbols.RoundedFilled.Keep else MaterialSymbols.Rounded.Keep
val tint = if (isPinned) {
MaterialTheme.colorScheme.primary
} else {
@@ -29,8 +29,8 @@ import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.extension.util.ExtensionLoader
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Dangerous
import mihon.icons.materialsymbols.rounded.Warning
import mihon.icons.materialsymbols.roundedfilled.Dangerous
import mihon.icons.materialsymbols.roundedfilled.Warning
import tachiyomi.core.common.util.lang.withIOContext
import tachiyomi.domain.source.model.Source
import tachiyomi.source.local.isLocal
@@ -49,7 +49,7 @@ fun SourceIcon(
when {
source.isStub && icon == null -> {
Image(
imageVector = MaterialSymbols.Rounded.Warning,
imageVector = MaterialSymbols.RoundedFilled.Warning,
contentDescription = null,
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.error),
modifier = modifier.then(defaultModifier),
@@ -113,7 +113,7 @@ fun ExtensionIcon(
}
}
is Extension.NotLoaded -> Image(
imageVector = MaterialSymbols.Rounded.Dangerous,
imageVector = MaterialSymbols.RoundedFilled.Dangerous,
contentDescription = null,
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.error),
modifier = modifier.then(defaultModifier),
@@ -16,8 +16,9 @@ import eu.kanade.presentation.components.SearchToolbar
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.Source
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ViewList
import mihon.icons.materialsymbols.rounded.ViewModule
import mihon.icons.materialsymbols.automirroredroundedfilled.ViewList
import mihon.icons.materialsymbols.roundedfilled.ViewCompact
import mihon.icons.materialsymbols.roundedfilled.ViewModule
import tachiyomi.domain.library.model.LibraryDisplayMode
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
@@ -57,10 +58,12 @@ fun BrowseSourceToolbar(
add(
AppBar.Action(
title = stringResource(MR.strings.action_display_mode),
icon = if (displayMode == LibraryDisplayMode.List) {
MaterialSymbols.AutoMirroredRounded.ViewList
} else {
MaterialSymbols.Rounded.ViewModule
icon = when (displayMode) {
LibraryDisplayMode.List -> MaterialSymbols.AutoMirroredRoundedFilled.ViewList
LibraryDisplayMode.ComfortableGrid -> MaterialSymbols.RoundedFilled.ViewModule
LibraryDisplayMode.CompactGrid,
LibraryDisplayMode.CoverOnlyGrid,
-> MaterialSymbols.RoundedFilled.ViewCompact
},
onClick = { selectingDisplayMode = true },
),
@@ -22,7 +22,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Error
import mihon.icons.materialsymbols.roundedfilled.Error
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource
@@ -90,7 +90,7 @@ fun GlobalSearchErrorResultItem(message: String?) {
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Icon(imageVector = MaterialSymbols.Rounded.Error, contentDescription = null)
Icon(imageVector = MaterialSymbols.RoundedFilled.Error, contentDescription = null)
Spacer(Modifier.height(4.dp))
Text(
text = message ?: stringResource(MR.strings.unknown_error),
@@ -28,7 +28,7 @@ import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SourceFilter
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.PushPin
import mihon.icons.materialsymbols.rounded.Keep
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.i18n.stringResource
@@ -82,7 +82,7 @@ fun GlobalSearchToolbar(
onClick = { onChangeSearchFilter(SourceFilter.PinnedOnly) },
leadingIcon = {
Icon(
imageVector = MaterialSymbols.Rounded.PushPin,
imageVector = MaterialSymbols.Rounded.Keep,
contentDescription = null,
modifier = Modifier
.size(FilterChipDefaults.IconSize),
@@ -31,7 +31,7 @@ import eu.kanade.presentation.components.TabbedDialog
import eu.kanade.presentation.components.TabbedDialogPaddings
import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.PeopleAlt
import mihon.icons.materialsymbols.rounded.Group
import tachiyomi.core.common.preference.TriState
import tachiyomi.domain.manga.model.Manga
import tachiyomi.i18n.MR
@@ -174,7 +174,7 @@ fun ScanlatorFilterItem(
horizontalArrangement = Arrangement.spacedBy(24.dp),
) {
Icon(
imageVector = MaterialSymbols.Rounded.PeopleAlt,
imageVector = MaterialSymbols.Rounded.Group,
contentDescription = null,
tint = if (active) {
MaterialTheme.colorScheme.active
@@ -58,14 +58,14 @@ import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Add
import mihon.icons.materialsymbols.rounded.AttachMoney
import mihon.icons.materialsymbols.rounded.Block
import mihon.icons.materialsymbols.rounded.Brush
import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.Pause
import mihon.icons.materialsymbols.rounded.Person
import mihon.icons.materialsymbols.rounded.Schedule
import mihon.icons.materialsymbols.rounded.Warning
import mihon.icons.materialsymbols.roundedfilled.Brush
import mihon.icons.materialsymbols.roundedfilled.Pause
import mihon.icons.materialsymbols.roundedfilled.Warning
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.model.MangaWithChapterCount
import tachiyomi.domain.source.model.StubSource
@@ -238,7 +238,7 @@ private fun DuplicateMangaListItem(
if (!manga.artist.isNullOrBlank() && manga.author != manga.artist) {
MangaDetailRow(
text = manga.artist!!,
iconImageVector = MaterialSymbols.Rounded.Brush,
iconImageVector = MaterialSymbols.RoundedFilled.Brush,
maxLines = 2,
)
}
@@ -257,9 +257,9 @@ private fun DuplicateMangaListItem(
SManga.ONGOING.toLong() -> MaterialSymbols.Rounded.Schedule
SManga.COMPLETED.toLong() -> MaterialSymbols.Rounded.DoneAll
SManga.LICENSED.toLong() -> MaterialSymbols.Rounded.AttachMoney
SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Done
SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Check
SManga.CANCELLED.toLong() -> MaterialSymbols.Rounded.Close
SManga.ON_HIATUS.toLong() -> MaterialSymbols.Rounded.Pause
SManga.ON_HIATUS.toLong() -> MaterialSymbols.RoundedFilled.Pause
else -> MaterialSymbols.Rounded.Block
},
)
@@ -272,7 +272,7 @@ private fun DuplicateMangaListItem(
) {
if (source is StubSource) {
Icon(
imageVector = MaterialSymbols.Rounded.Warning,
imageVector = MaterialSymbols.RoundedFilled.Warning,
contentDescription = null,
modifier = Modifier.size(16.dp),
tint = MaterialTheme.colorScheme.error,
@@ -24,14 +24,14 @@ import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.hapticfeedback.HapticFeedback
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.dp
import eu.kanade.presentation.components.DropdownMenu
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.model.Download
import mihon.icons.custommaterialsymbols.CustomMaterialSymbols
import mihon.icons.custommaterialsymbols.rounded.DownloadArrow
import mihon.icons.custommaterialsymbols.rounded.DownloadCircle
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ArrowDownward
import mihon.icons.materialsymbols.rounded.Error
import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import tachiyomi.i18n.MR
@@ -99,7 +99,7 @@ private fun NotDownloadedIndicator(
contentAlignment = Alignment.Center,
) {
Icon(
painter = painterResource(R.drawable.ic_download_chapter_24dp),
imageVector = CustomMaterialSymbols.Rounded.DownloadCircle,
contentDescription = stringResource(MR.strings.manga_download),
modifier = Modifier.size(IndicatorSize),
tint = MaterialTheme.colorScheme.onSurfaceVariant,
@@ -179,7 +179,7 @@ private fun DownloadingIndicator(
)
}
Icon(
imageVector = MaterialSymbols.Rounded.ArrowDownward,
imageVector = CustomMaterialSymbols.Rounded.DownloadArrow,
contentDescription = null,
modifier = ArrowModifier,
tint = arrowColor,
@@ -279,4 +279,4 @@ private val IndicatorModifier = Modifier
.size(IndicatorSize)
.padding(IndicatorPadding)
private val ArrowModifier = Modifier
.size(IndicatorSize - 7.dp)
.size(IndicatorSize)
@@ -40,18 +40,18 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import eu.kanade.presentation.components.DownloadDropdownMenu
import eu.kanade.presentation.components.DropdownMenu
import eu.kanade.presentation.manga.DownloadAction
import eu.kanade.tachiyomi.R
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import mihon.icons.custommaterialsymbols.CustomMaterialSymbols
import mihon.icons.custommaterialsymbols.rounded.DonePrevious
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Label
import mihon.icons.materialsymbols.rounded.BookmarkAdd
@@ -149,7 +149,7 @@ fun MangaBottomActionMenu(
if (onMarkPreviousAsReadClicked != null) {
Button(
title = stringResource(MR.strings.action_mark_previous_as_read),
icon = ImageVector.vectorResource(R.drawable.ic_done_prev_24dp),
icon = CustomMaterialSymbols.Rounded.DonePrevious,
toConfirm = confirm[4],
onLongClick = { onLongClickItem(4) },
onClick = onMarkPreviousAsReadClicked,
@@ -31,8 +31,8 @@ import me.saket.swipe.SwipeableActionsBox
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.BookmarkAdd
import mihon.icons.materialsymbols.rounded.BookmarkRemove
import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Delete
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.FileDownloadOff
import mihon.icons.materialsymbols.rounded.RemoveDone
@@ -192,7 +192,7 @@ private fun getSwipeAction(
): me.saket.swipe.SwipeAction? {
return when (action) {
LibraryPreferences.ChapterSwipeAction.ToggleRead -> swipeAction(
icon = if (!read) MaterialSymbols.Rounded.Done else MaterialSymbols.Rounded.RemoveDone,
icon = if (!read) MaterialSymbols.Rounded.Check else MaterialSymbols.Rounded.RemoveDone,
background = background,
isUndo = read,
onSwipe = onSwipe,
@@ -82,19 +82,19 @@ import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.AttachMoney
import mihon.icons.materialsymbols.rounded.Block
import mihon.icons.materialsymbols.rounded.Brush
import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.Favorite
import mihon.icons.materialsymbols.rounded.HourglassEmpty
import mihon.icons.materialsymbols.rounded.Pause
import mihon.icons.materialsymbols.rounded.Person
import mihon.icons.materialsymbols.rounded.Public
import mihon.icons.materialsymbols.rounded.Schedule
import mihon.icons.materialsymbols.rounded.Sync
import mihon.icons.materialsymbols.rounded.Warning
import mihon.icons.materialsymbols.roundedfilled.Brush
import mihon.icons.materialsymbols.roundedfilled.Favorite
import mihon.icons.materialsymbols.roundedfilled.Pause
import mihon.icons.materialsymbols.roundedfilled.Warning
import org.intellij.markdown.MarkdownElementTypes
import org.intellij.markdown.MarkdownTokenTypes
import org.intellij.markdown.ast.findChildOfType
@@ -230,7 +230,7 @@ fun MangaActionRow(
} else {
pluralStringResource(MR.plurals.num_trackers, count = trackingCount, trackingCount)
},
icon = if (trackingCount == 0) MaterialSymbols.Rounded.Sync else MaterialSymbols.Rounded.Done,
icon = if (trackingCount == 0) MaterialSymbols.Rounded.Sync else MaterialSymbols.Rounded.Check,
color = if (trackingCount == 0) defaultActionButtonColor else MaterialTheme.colorScheme.primary,
onClick = onTrackingClicked,
)
@@ -491,7 +491,7 @@ private fun ColumnScope.MangaContentInfo(
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
imageVector = MaterialSymbols.Rounded.Brush,
imageVector = MaterialSymbols.RoundedFilled.Brush,
contentDescription = null,
modifier = Modifier.size(16.dp),
)
@@ -519,9 +519,9 @@ private fun ColumnScope.MangaContentInfo(
SManga.ONGOING.toLong() -> MaterialSymbols.Rounded.Schedule
SManga.COMPLETED.toLong() -> MaterialSymbols.Rounded.DoneAll
SManga.LICENSED.toLong() -> MaterialSymbols.Rounded.AttachMoney
SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Done
SManga.PUBLISHING_FINISHED.toLong() -> MaterialSymbols.Rounded.Check
SManga.CANCELLED.toLong() -> MaterialSymbols.Rounded.Close
SManga.ON_HIATUS.toLong() -> MaterialSymbols.Rounded.Pause
SManga.ON_HIATUS.toLong() -> MaterialSymbols.RoundedFilled.Pause
else -> MaterialSymbols.Rounded.Block
},
contentDescription = null,
@@ -546,7 +546,7 @@ private fun ColumnScope.MangaContentInfo(
DotSeparatorText()
if (isStubSource) {
Icon(
imageVector = MaterialSymbols.Rounded.Warning,
imageVector = MaterialSymbols.RoundedFilled.Warning,
contentDescription = null,
modifier = Modifier
.padding(end = 4.dp)
@@ -667,7 +667,7 @@ private fun MangaSummary(
modifier = Modifier.background(Brush.verticalGradient(colors = colors)),
contentAlignment = Alignment.Center,
) {
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_caret_down)
val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_caret_flip)
Icon(
painter = rememberAnimatedVectorPainter(image, !expanded),
contentDescription = stringResource(
@@ -3,24 +3,22 @@ package eu.kanade.presentation.more
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.dp
import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget
import eu.kanade.presentation.more.settings.widget.TextPreferenceWidget
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.more.DownloadQueueState
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import mihon.icons.materialsymbols.automirroredrounded.Label
import mihon.icons.materialsymbols.rounded.CloudOff
import mihon.icons.materialsymbols.rounded.Download
import mihon.icons.materialsymbols.rounded.Eyeglasses2
import mihon.icons.materialsymbols.rounded.Info
import mihon.icons.materialsymbols.rounded.QueryStats
import mihon.icons.materialsymbols.rounded.Settings
import mihon.icons.materialsymbols.rounded.Storage
import mihon.icons.materialsymbols.rounded.VolunteerActivism
import mihon.icons.materialsymbols.roundedfilled.VolunteerActivism
import tachiyomi.core.common.Constants
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ScrollbarLazyColumn
@@ -65,7 +63,7 @@ fun MoreScreen(
SwitchPreferenceWidget(
title = stringResource(MR.strings.pref_incognito_mode),
subtitle = stringResource(MR.strings.pref_incognito_mode_summary),
icon = ImageVector.vectorResource(R.drawable.ic_glasses_24dp),
icon = MaterialSymbols.Rounded.Eyeglasses2,
checked = incognitoMode,
onCheckedChanged = onIncognitoModeChange,
)
@@ -136,7 +134,7 @@ fun MoreScreen(
item {
TextPreferenceWidget(
title = stringResource(MR.strings.label_support_us),
icon = MaterialSymbols.Rounded.VolunteerActivism,
icon = MaterialSymbols.RoundedFilled.VolunteerActivism,
onPreferenceClick = onClickSupport,
)
}
@@ -18,7 +18,7 @@ import eu.kanade.presentation.theme.TachiyomiPreviewTheme
import eu.kanade.tachiyomi.ui.more.NewUpdateScreenModel
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.OpenInNew
import mihon.icons.materialsymbols.rounded.NewReleases
import mihon.icons.materialsymbols.rounded.Verified
import org.intellij.markdown.flavours.gfm.GFMFlavourDescriptor
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.padding
@@ -36,7 +36,7 @@ fun NewUpdateScreen(
onRejectUpdate: () -> Unit,
) {
InfoScreen(
icon = MaterialSymbols.Rounded.NewReleases,
icon = MaterialSymbols.Rounded.Verified,
headingText = stringResource(MR.strings.update_check_notification_update_available),
subtitleText = versionName,
acceptText = when (stage) {
@@ -56,8 +56,8 @@ import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.Help
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.Visibility
import mihon.icons.materialsymbols.rounded.VisibilityOff
import mihon.icons.materialsymbols.roundedfilled.Visibility
import mihon.icons.materialsymbols.roundedfilled.VisibilityOff
import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.core.common.util.lang.withUIContext
import tachiyomi.i18n.MR
@@ -250,9 +250,9 @@ object SettingsTrackingScreen : SearchableSettings {
IconButton(onClick = { hidePassword = !hidePassword }) {
Icon(
imageVector = if (hidePassword) {
MaterialSymbols.Rounded.Visibility
MaterialSymbols.RoundedFilled.Visibility
} else {
MaterialSymbols.Rounded.VisibilityOff
MaterialSymbols.RoundedFilled.VisibilityOff
},
contentDescription = null,
)
@@ -20,8 +20,8 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.window.DialogProperties
import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Cancel
import mihon.icons.materialsymbols.rounded.Error
import mihon.icons.materialsymbols.roundedfilled.Cancel
import mihon.icons.materialsymbols.roundedfilled.Error
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
@@ -57,10 +57,10 @@ fun EditTextPreferenceWidget(
onValueChange = { textFieldValue = it },
trailingIcon = {
if (textFieldValue.text.isBlank()) {
Icon(imageVector = MaterialSymbols.Rounded.Error, contentDescription = null)
Icon(imageVector = MaterialSymbols.RoundedFilled.Error, contentDescription = null)
} else {
IconButton(onClick = { textFieldValue = TextFieldValue("") }) {
Icon(imageVector = MaterialSymbols.Rounded.Cancel, contentDescription = null)
Icon(imageVector = MaterialSymbols.RoundedFilled.Cancel, contentDescription = null)
}
}
},
@@ -27,7 +27,7 @@ import eu.kanade.tachiyomi.data.track.Tracker
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Refresh
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
@@ -107,7 +107,7 @@ fun TrackingPreferenceWidget(
}
}
Icon(
imageVector = MaterialSymbols.Rounded.Done,
imageVector = MaterialSymbols.Rounded.Check,
modifier = Modifier
.padding(4.dp)
.size(32.dp),
@@ -35,8 +35,8 @@ import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Info
import mihon.icons.materialsymbols.rounded.Warning
import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import mihon.icons.materialsymbols.roundedfilled.Warning
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.service.calculateChapterGap
import tachiyomi.i18n.MR
@@ -184,7 +184,7 @@ private fun ChapterGapWarning(
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
imageVector = MaterialSymbols.Rounded.Warning,
imageVector = MaterialSymbols.RoundedFilled.Warning,
tint = MaterialTheme.colorScheme.error,
contentDescription = null,
)
@@ -11,8 +11,6 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.PreviewLightDark
import dev.icerock.moko.resources.StringResource
import eu.kanade.domain.manga.model.readingMode
@@ -68,7 +66,7 @@ private fun DialogContent(
selected = mode
},
modifier = Modifier.fillMaxWidth(),
imageVector = ImageVector.vectorResource(mode.iconRes),
imageVector = mode.icon,
title = stringResource(mode.stringRes),
)
}
@@ -8,11 +8,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.res.painterResource
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.reader.setting.ReaderOrientation
import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode
import mihon.icons.custommaterialsymbols.CustomMaterialSymbols
import mihon.icons.custommaterialsymbols.rounded.CropOff
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Crop
import mihon.icons.materialsymbols.rounded.Settings
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
@@ -36,7 +37,7 @@ fun ReaderBottomBar(
) {
IconButton(onClick = onClickReadingMode) {
Icon(
painter = painterResource(readingMode.iconRes),
imageVector = readingMode.icon,
contentDescription = stringResource(MR.strings.viewer),
)
}
@@ -50,7 +51,7 @@ fun ReaderBottomBar(
IconButton(onClick = onClickCropBorder) {
Icon(
painter = painterResource(if (cropEnabled) R.drawable.ic_crop_24dp else R.drawable.ic_crop_off_24dp),
imageVector = if (cropEnabled) MaterialSymbols.Rounded.Crop else CustomMaterialSymbols.Rounded.CropOff,
contentDescription = stringResource(MR.strings.pref_crop_borders),
)
}
@@ -59,7 +59,7 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
import kotlinx.datetime.toJavaLocalDate
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.MoreVert
import mihon.icons.materialsymbols.rounded.VisibilityOff
import mihon.icons.materialsymbols.roundedfilled.VisibilityOff
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.i18n.stringResource
import java.time.format.DateTimeFormatter
@@ -175,7 +175,7 @@ private fun TrackInfoItem(
modifier = Modifier.absoluteOffset(x = (-5).dp),
) {
Icon(
imageVector = MaterialSymbols.Rounded.VisibilityOff,
imageVector = MaterialSymbols.RoundedFilled.VisibilityOff,
contentDescription = stringResource(MR.strings.tracked_privately),
modifier = Modifier.size(14.dp),
)
@@ -74,8 +74,8 @@ import kotlinx.coroutines.launch
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowBack
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.VisibilityOff
import mihon.icons.materialsymbols.roundedfilled.CheckCircle
import mihon.icons.materialsymbols.roundedfilled.VisibilityOff
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.ScrollbarLazyColumn
import tachiyomi.presentation.core.components.material.Scaffold
@@ -189,7 +189,7 @@ fun TrackerSearch(
elevation = ButtonDefaults.elevatedButtonElevation(),
) {
Icon(
imageVector = MaterialSymbols.Rounded.VisibilityOff,
imageVector = MaterialSymbols.RoundedFilled.VisibilityOff,
contentDescription = stringResource(MR.strings.action_toggle_private_on),
)
}
@@ -0,0 +1,33 @@
package eu.kanade.presentation.util
import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter
import androidx.compose.animation.graphics.vector.AnimatedImageVector
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.key
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.graphics.painter.Painter
/**
* Plays [enter] forwards when [atEnd] becomes true and [exit] forwards when it becomes false,
* instead of reversing a single animation. Nothing animates on the first composition.
*/
@Composable
fun rememberAnimatedVectorPainter(
enter: AnimatedImageVector,
exit: AnimatedImageVector,
atEnd: Boolean,
): Painter {
val composed = remember { mutableStateOf(false) }
SideEffect { composed.value = true }
return key(atEnd) {
// A fresh group per change, so the new animation starts from its first frame
var playing by remember { mutableStateOf(!composed.value) }
LaunchedEffect(Unit) { playing = true }
rememberAnimatedVectorPainter(if (atEnd) enter else exit, playing)
}
}
@@ -28,9 +28,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.core.stack.mutableStateStackOf
import com.kevinnzou.web.AccompanistWebChromeClient
@@ -44,7 +42,6 @@ import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.AppBarActions
import eu.kanade.presentation.components.WarningBanner
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.util.system.getHtml
import eu.kanade.tachiyomi.util.system.setDefaultSettings
import eu.kanade.tachiyomi.util.system.setUserAgent
@@ -53,6 +50,7 @@ import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowBack
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.TabClose
import tachiyomi.i18n.MR
import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.i18n.stringResource
@@ -278,7 +276,7 @@ fun WebViewScreenContent(
0,
AppBar.Action(
title = stringResource(MR.strings.action_webview_close_tab),
icon = ImageVector.vectorResource(R.drawable.ic_tab_close_24px),
icon = MaterialSymbols.Rounded.TabClose,
onClick = popState,
),
)
+2 -1
View File
@@ -69,6 +69,7 @@ import tachiyomi.presentation.widget.WidgetManager
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.InjektScope
import java.security.Security
import mihon.icons.materialsymbols.R as MaterialSymbolsR
class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factory, GraphProvider<AppGraph> {
@@ -138,7 +139,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
) {
setContentTitle(stringResource(MR.strings.pref_incognito_mode))
setContentText(stringResource(MR.strings.notification_incognito_text))
setSmallIcon(R.drawable.ic_glasses_24dp)
setSmallIcon(MaterialSymbolsR.drawable.rounded_eyeglasses_2)
setOngoing(true)
val pendingIntent = PendingIntent.getBroadcast(
@@ -19,6 +19,7 @@ import tachiyomi.core.common.storage.displayablePath
import tachiyomi.i18n.MR
import java.io.File
import kotlin.time.Duration.Companion.milliseconds
import mihon.icons.materialsymbols.R as MaterialSymbolsR
@Inject
class BackupNotifier(
@@ -79,7 +80,7 @@ class BackupNotifier(
clearActions()
addAction(
R.drawable.ic_share_24dp,
MaterialSymbolsR.drawable.rounded_share,
context.stringResource(MR.strings.action_share),
NotificationReceiver.shareBackupPendingActivity(context, file.uri),
)
@@ -111,7 +112,7 @@ class BackupNotifier(
clearActions()
addAction(
R.drawable.ic_close_24dp,
MaterialSymbolsR.drawable.rounded_close,
context.stringResource(MR.strings.action_cancel),
NotificationReceiver.cancelRestorePendingBroadcast(context, Notifications.ID_RESTORE_PROGRESS),
)
@@ -173,7 +174,7 @@ class BackupNotifier(
val errorLogIntent = NotificationReceiver.openErrorLogPendingActivity(context, uri)
setContentIntent(errorLogIntent)
addAction(
R.drawable.ic_folder_24dp,
MaterialSymbolsR.drawable.rounded_filled_folder,
context.stringResource(MR.strings.action_show_errors),
errorLogIntent,
)
@@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.util.system.notify
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import java.util.regex.Pattern
import mihon.icons.materialsymbols.R as MaterialSymbolsR
/**
* DownloadNotifier is used to show notifications when downloading one or multiple chapters.
@@ -79,12 +80,12 @@ class DownloadNotifier(
isDownloading = true
// Pause action
addAction(
R.drawable.ic_pause_24dp,
MaterialSymbolsR.drawable.rounded_filled_pause,
context.stringResource(MR.strings.action_pause),
NotificationReceiver.pauseDownloadsPendingBroadcast(context),
)
addAction(
R.drawable.ic_book_24dp,
MaterialSymbolsR.drawable.rounded_book,
context.stringResource(MR.strings.action_show_manga),
NotificationReceiver.openEntryPendingActivity(context, download.manga.id),
)
@@ -129,20 +130,20 @@ class DownloadNotifier(
) {
setContentTitle(context.stringResource(MR.strings.chapter_paused))
setContentText(context.stringResource(MR.strings.download_notifier_download_paused))
setSmallIcon(R.drawable.ic_pause_24dp)
setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_pause)
setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher))
setOnlyAlertOnce(true)
// Open download manager when clicked
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
// Resume action
addAction(
R.drawable.ic_play_arrow_24dp,
MaterialSymbolsR.drawable.rounded_filled_play_arrow,
context.stringResource(MR.strings.action_resume),
NotificationReceiver.resumeDownloadsPendingBroadcast(context),
)
// Clear action
addAction(
R.drawable.ic_close_24dp,
MaterialSymbolsR.drawable.rounded_close,
context.stringResource(MR.strings.action_cancel_all),
NotificationReceiver.clearDownloadsPendingBroadcast(context),
)
@@ -177,12 +178,12 @@ class DownloadNotifier(
) {
setContentTitle(context.stringResource(MR.strings.download_notifier_downloader_title))
setStyle(NotificationCompat.BigTextStyle().bigText(reason))
setSmallIcon(R.drawable.ic_warning_white_24dp)
setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_warning)
setAutoCancel(true)
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
if (mangaId != null) {
addAction(
R.drawable.ic_book_24dp,
MaterialSymbolsR.drawable.rounded_book,
context.stringResource(MR.strings.action_show_manga),
NotificationReceiver.openEntryPendingActivity(context, mangaId),
)
@@ -213,11 +214,11 @@ class DownloadNotifier(
mangaTitle?.plus(": $chapter") ?: context.stringResource(MR.strings.download_notifier_downloader_title),
)
setContentText(error ?: context.stringResource(MR.strings.download_notifier_unknown_error))
setSmallIcon(R.drawable.ic_warning_white_24dp)
setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_warning)
setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context))
if (mangaId != null) {
addAction(
R.drawable.ic_book_24dp,
MaterialSymbolsR.drawable.rounded_book,
context.stringResource(MR.strings.action_show_manga),
NotificationReceiver.openEntryPendingActivity(context, mangaId),
)
@@ -40,6 +40,7 @@ import tachiyomi.domain.source.service.SourceManager
import tachiyomi.i18n.MR
import java.math.RoundingMode
import java.text.NumberFormat
import mihon.icons.materialsymbols.R as MaterialSymbolsR
@Inject
class LibraryUpdateNotifier(
@@ -73,11 +74,15 @@ class LibraryUpdateNotifier(
val progressNotificationBuilder by lazy {
context.notificationBuilder(Notifications.CHANNEL_LIBRARY_PROGRESS) {
setContentTitle(context.stringResource(MR.strings.app_name))
setSmallIcon(R.drawable.ic_refresh_24dp)
setSmallIcon(MaterialSymbolsR.drawable.rounded_refresh)
setLargeIcon(notificationBitmap)
setOngoing(true)
setOnlyAlertOnce(true)
addAction(R.drawable.ic_close_24dp, context.stringResource(MR.strings.action_cancel), cancelIntent)
addAction(
MaterialSymbolsR.drawable.rounded_close,
context.stringResource(MR.strings.action_cancel),
cancelIntent,
)
}
}
@@ -131,7 +136,7 @@ class LibraryUpdateNotifier(
setStyle(
NotificationCompat.BigTextStyle().bigText(context.stringResource(MR.strings.notification_size_warning)),
)
setSmallIcon(R.drawable.ic_warning_white_24dp)
setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_warning)
setTimeoutAfter(Downloader.WARNING_NOTIF_TIMEOUT_MS)
setContentIntent(NotificationHandler.openUrl(context, HELP_WARNING_URL))
}
@@ -246,7 +251,7 @@ class LibraryUpdateNotifier(
// Mark chapters as read action
addAction(
R.drawable.ic_done_24dp,
MaterialSymbolsR.drawable.rounded_check,
context.stringResource(MR.strings.action_mark_as_read),
NotificationReceiver.markAsReadPendingBroadcast(
context,
@@ -257,7 +262,7 @@ class LibraryUpdateNotifier(
)
// View chapters action
addAction(
R.drawable.ic_book_24dp,
MaterialSymbolsR.drawable.rounded_book,
context.stringResource(MR.strings.action_view_chapters),
NotificationReceiver.openChapterPendingActivity(
context,
@@ -5,7 +5,6 @@ import androidx.core.app.NotificationCompat
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.core.security.SecurityPreferences
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.notification.Notifications
@@ -13,6 +12,7 @@ import eu.kanade.tachiyomi.util.system.cancelNotification
import eu.kanade.tachiyomi.util.system.notify
import tachiyomi.core.common.i18n.pluralStringResource
import tachiyomi.i18n.MR
import mihon.icons.materialsymbols.R as MaterialSymbolsR
@Inject
@SingleIn(AppScope::class)
@@ -37,7 +37,7 @@ class ExtensionUpdateNotifier(
setContentText(extNames)
setStyle(NotificationCompat.BigTextStyle().bigText(extNames))
}
setSmallIcon(R.drawable.ic_extension_24dp)
setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_extension)
setContentIntent(NotificationReceiver.openExtensionsPendingActivity(context))
setAutoCancel(true)
}
@@ -1,7 +1,6 @@
package eu.kanade.tachiyomi.ui.browse
import androidx.compose.animation.graphics.res.animatedVectorResource
import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter
import androidx.compose.animation.graphics.vector.AnimatedImageVector
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.runtime.Composable
@@ -15,6 +14,7 @@ import cafe.adriel.voyager.navigator.tab.TabOptions
import dev.zacsweers.metrox.viewmodel.metroViewModel
import eu.kanade.presentation.components.TabbedScreen
import eu.kanade.presentation.util.Tab
import eu.kanade.presentation.util.rememberAnimatedVectorPainter
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.browse.extension.ExtensionsViewModel
import eu.kanade.tachiyomi.ui.browse.extension.extensionsTab
@@ -35,11 +35,12 @@ data object BrowseTab : Tab {
@Composable
get() {
val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_browse_enter)
val enter = AnimatedImageVector.animatedVectorResource(R.drawable.animated_browse_enter)
val exit = AnimatedImageVector.animatedVectorResource(R.drawable.animated_browse_exit)
return TabOptions(
index = 3u,
title = stringResource(MR.strings.browse),
icon = rememberAnimatedVectorPainter(image, isSelected),
icon = rememberAnimatedVectorPainter(enter, exit, isSelected),
)
}
@@ -51,7 +51,7 @@ import kotlinx.coroutines.flow.receiveAsFlow
import mihon.feature.migration.dialog.MigrateMangaDialog
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.FilterList
import mihon.icons.materialsymbols.rounded.NewReleases
import mihon.icons.materialsymbols.rounded.Verified
import mihon.icons.materialsymbols.roundedfilled.Favorite
import mihon.presentation.core.util.collectAsLazyPagingItems
import tachiyomi.core.common.Constants
@@ -177,7 +177,7 @@ data class BrowseSourceScreen(
},
leadingIcon = {
Icon(
imageVector = MaterialSymbols.Rounded.NewReleases,
imageVector = MaterialSymbols.Rounded.Verified,
contentDescription = null,
modifier = Modifier
.size(FilterChipDefaults.IconSize),
@@ -46,7 +46,7 @@ data object HistoryTab : Tab {
@Composable
get() {
val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_history_enter)
val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_history)
return TabOptions(
index = 2u,
title = stringResource(MR.strings.label_recent_manga),
@@ -68,7 +68,7 @@ data object LibraryTab : Tab {
@Composable
get() {
val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_library_enter)
val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_library)
return TabOptions(
index = 0u,
title = stringResource(MR.strings.label_library),
@@ -113,7 +113,7 @@ import mihon.domain.database.repository.DatabaseRepository
import mihon.feature.support.SupportUsScreen
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.OpenInNew
import mihon.icons.materialsymbols.rounded.VolunteerActivism
import mihon.icons.materialsymbols.roundedfilled.VolunteerActivism
import tachiyomi.core.common.Constants
import tachiyomi.core.common.util.lang.launchIO
import tachiyomi.core.common.util.system.logcat
@@ -437,7 +437,7 @@ class MainActivity : BaseActivity() {
horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small),
) {
Icon(
imageVector = MaterialSymbols.Rounded.VolunteerActivism,
imageVector = MaterialSymbols.RoundedFilled.VolunteerActivism,
contentDescription = null,
)
Text(
@@ -72,7 +72,7 @@ import kotlinx.datetime.toLocalDateTime
import logcat.LogPriority
import mihon.app.di.appGraph
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Delete
import mihon.icons.materialsymbols.roundedfilled.Delete
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.core.common.util.lang.launchNonCancellable
import tachiyomi.core.common.util.lang.withIOContext
@@ -630,7 +630,7 @@ data class TrackDateRemoverScreen(
modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars),
icon = {
Icon(
imageVector = MaterialSymbols.Rounded.Delete,
imageVector = MaterialSymbols.RoundedFilled.Delete,
contentDescription = null,
)
},
@@ -836,7 +836,7 @@ data class TrackerRemoveScreen(
modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars),
icon = {
Icon(
imageVector = MaterialSymbols.Rounded.Delete,
imageVector = MaterialSymbols.RoundedFilled.Delete,
contentDescription = null,
)
},
@@ -45,7 +45,7 @@ data object MoreTab : Tab {
@Composable
get() {
val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_more_enter)
val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_more)
return TabOptions(
index = 4u,
title = stringResource(MR.strings.label_more),
@@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.util.system.notificationBuilder
import eu.kanade.tachiyomi.util.system.notify
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import mihon.icons.materialsymbols.R as MaterialSymbolsR
/**
* Class used to show BigPictureStyle notifications
@@ -69,7 +70,7 @@ class SaveImageNotifier(private val context: Context) {
private fun showCompleteNotification(uri: Uri, image: Bitmap?) {
with(notificationBuilder) {
setContentTitle(context.stringResource(MR.strings.picture_saved))
setSmallIcon(R.drawable.ic_photo_24dp)
setSmallIcon(MaterialSymbolsR.drawable.rounded_filled_photo)
image?.let { setStyle(NotificationCompat.BigPictureStyle().bigPicture(it)) }
setLargeIcon(image)
setAutoCancel(true)
@@ -80,7 +81,7 @@ class SaveImageNotifier(private val context: Context) {
setContentIntent(NotificationHandler.openImagePendingActivity(context, uri))
// Share action
addAction(
R.drawable.ic_share_24dp,
MaterialSymbolsR.drawable.rounded_share,
context.stringResource(MR.strings.action_share),
NotificationReceiver.shareImagePendingBroadcast(context, uri),
)
@@ -4,11 +4,11 @@ import android.content.pm.ActivityInfo
import androidx.compose.ui.graphics.vector.ImageVector
import dev.icerock.moko.resources.StringResource
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.ScreenLockLandscape
import mihon.icons.materialsymbols.rounded.ScreenLockPortrait
import mihon.icons.materialsymbols.rounded.ScreenRotation
import mihon.icons.materialsymbols.rounded.StayCurrentLandscape
import mihon.icons.materialsymbols.rounded.StayCurrentPortrait
import mihon.icons.materialsymbols.rounded.Mobile
import mihon.icons.materialsymbols.rounded.MobileLandscape
import mihon.icons.materialsymbols.rounded.MobileLockLandscape
import mihon.icons.materialsymbols.rounded.MobileLockPortrait
import mihon.icons.materialsymbols.rounded.MobileRotate
import tachiyomi.i18n.MR
enum class ReaderOrientation(
@@ -20,43 +20,43 @@ enum class ReaderOrientation(
DEFAULT(
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,
MR.strings.label_default,
MaterialSymbols.Rounded.ScreenRotation,
MaterialSymbols.Rounded.MobileRotate,
0x00000000,
),
FREE(
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,
MR.strings.rotation_free,
MaterialSymbols.Rounded.ScreenRotation,
MaterialSymbols.Rounded.MobileRotate,
0x00000008,
),
PORTRAIT(
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT,
MR.strings.rotation_portrait,
MaterialSymbols.Rounded.StayCurrentPortrait,
MaterialSymbols.Rounded.Mobile,
0x00000010,
),
LANDSCAPE(
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE,
MR.strings.rotation_landscape,
MaterialSymbols.Rounded.StayCurrentLandscape,
MaterialSymbols.Rounded.MobileLandscape,
0x00000018,
),
LOCKED_PORTRAIT(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,
MR.strings.rotation_force_portrait,
MaterialSymbols.Rounded.ScreenLockPortrait,
MaterialSymbols.Rounded.MobileLockPortrait,
0x00000020,
),
LOCKED_LANDSCAPE(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,
MR.strings.rotation_force_landscape,
MaterialSymbols.Rounded.ScreenLockLandscape,
MaterialSymbols.Rounded.MobileLockLandscape,
0x00000028,
),
REVERSE_PORTRAIT(
ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT,
MR.strings.rotation_reverse_portrait,
MaterialSymbols.Rounded.StayCurrentPortrait,
MaterialSymbols.Rounded.Mobile,
0x00000030,
),
;
@@ -1,8 +1,7 @@
package eu.kanade.tachiyomi.ui.reader.setting
import androidx.annotation.DrawableRes
import androidx.compose.ui.graphics.vector.ImageVector
import dev.icerock.moko.resources.StringResource
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import eu.kanade.tachiyomi.ui.reader.viewer.Viewer
import eu.kanade.tachiyomi.ui.reader.viewer.pager.L2RPagerViewer
@@ -12,47 +11,55 @@ import eu.kanade.tachiyomi.ui.reader.viewer.webgpu.WebGpuViewer
import eu.kanade.tachiyomi.ui.reader.viewer.webgpu.WebGpuViewerContinuous
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
import mihon.app.di.appGraph
import mihon.icons.custommaterialsymbols.CustomMaterialSymbols
import mihon.icons.custommaterialsymbols.rounded.ReaderLeftToRight
import mihon.icons.custommaterialsymbols.rounded.ReaderLongStrip
import mihon.icons.custommaterialsymbols.rounded.ReaderLongStripGaps
import mihon.icons.custommaterialsymbols.rounded.ReaderRightToLeft
import mihon.icons.custommaterialsymbols.rounded.ReaderVertical
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.MobileGear
import tachiyomi.i18n.MR
enum class ReadingMode(
val stringRes: StringResource,
@DrawableRes val iconRes: Int,
val icon: ImageVector,
val flagValue: Int,
val direction: Direction? = null,
val type: ViewerType? = null,
) {
DEFAULT(MR.strings.label_default, R.drawable.ic_reader_default_24dp, 0x00000000),
DEFAULT(MR.strings.label_default, MaterialSymbols.Rounded.MobileGear, 0x00000000),
LEFT_TO_RIGHT(
MR.strings.left_to_right_viewer,
R.drawable.ic_reader_ltr_24dp,
CustomMaterialSymbols.Rounded.ReaderLeftToRight,
0x00000001,
Direction.Horizontal,
ViewerType.Pager,
),
RIGHT_TO_LEFT(
MR.strings.right_to_left_viewer,
R.drawable.ic_reader_rtl_24dp,
CustomMaterialSymbols.Rounded.ReaderRightToLeft,
0x00000002,
Direction.Horizontal,
ViewerType.Pager,
),
VERTICAL(
MR.strings.vertical_viewer,
R.drawable.ic_reader_vertical_24dp,
CustomMaterialSymbols.Rounded.ReaderVertical,
0x00000003,
Direction.Vertical,
ViewerType.Pager,
),
WEBTOON(
MR.strings.webtoon_viewer,
R.drawable.ic_reader_webtoon_24dp,
CustomMaterialSymbols.Rounded.ReaderLongStrip,
0x00000004,
Direction.Vertical,
ViewerType.Webtoon,
),
CONTINUOUS_VERTICAL(
MR.strings.vertical_plus_viewer,
R.drawable.ic_reader_continuous_vertical_24dp,
CustomMaterialSymbols.Rounded.ReaderLongStripGaps,
0x00000005,
Direction.Vertical,
ViewerType.Webtoon,
@@ -38,7 +38,7 @@ data object UpdatesTab : Tab {
@Composable
get() {
val isSelected = LocalTabNavigator.current.current.key == key
val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_updates_enter)
val image = AnimatedImageVector.animatedVectorResource(R.drawable.animated_updates)
return TabOptions(
index = 1u,
title = stringResource(MR.strings.label_recent_updates),
@@ -34,7 +34,7 @@ import mihon.domain.migration.models.MigrationFlag
import mihon.feature.common.utils.getLabel
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Warning
import mihon.icons.materialsymbols.roundedfilled.Warning
import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.getAndSet
import tachiyomi.core.common.preference.toggle
@@ -226,7 +226,7 @@ private fun MigrationSheetWarningItem(
ListItem(
leadingContent = {
Icon(
imageVector = MaterialSymbols.Rounded.Warning,
imageVector = MaterialSymbols.RoundedFilled.Warning,
contentDescription = null,
tint = MaterialTheme.colorScheme.active,
)
@@ -49,10 +49,10 @@ import eu.kanade.tachiyomi.R
import mihon.feature.migration.list.models.MigratingManga
import mihon.icons.materialsymbols.MaterialSymbols
import mihon.icons.materialsymbols.automirroredrounded.ArrowForward
import mihon.icons.materialsymbols.rounded.Check
import mihon.icons.materialsymbols.rounded.Close
import mihon.icons.materialsymbols.rounded.ContentCopy
import mihon.icons.materialsymbols.rounded.CopyAll
import mihon.icons.materialsymbols.rounded.Done
import mihon.icons.materialsymbols.rounded.DoneAll
import mihon.icons.materialsymbols.rounded.MoreVert
import tachiyomi.domain.manga.model.Manga
@@ -106,7 +106,7 @@ fun MigrationListScreenContent(
icon = if (items.size ==
1
) {
MaterialSymbols.Rounded.Done
MaterialSymbols.Rounded.Check
} else {
MaterialSymbols.Rounded.DoneAll
},
@@ -1,104 +0,0 @@
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="browse_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group
android:name="main_parent"
android:pivotX="12"
android:pivotY="12">
<group
android:name="group"
android:pivotX="12"
android:pivotY="12">
<path
android:name="dot"
android:fillColor="#000000"
android:pathData="M 12 10.9 C 12.61 10.9 13.1 11.39 13.1 12 C 13.1 12.61 12.61 13.1 12 13.1 C 11.39 13.1 10.9 12.61 10.9 12 C 10.9 11.39 11.39 10.9 12 10.9 Z" />
</group>
<clip-path
android:name="dot_mask"
android:pathData="M 0.188 0.188 L 0.188 24 L 23.938 24 L 23.938 0.188 L 0.188 0.188 Z M 12 10.9 C 12.61 10.9 13.1 11.39 13.1 12 C 13.1 12.61 12.61 13.1 12 13.1 C 11.39 13.1 10.9 12.61 10.9 12 C 10.9 11.39 11.39 10.9 12 10.9 Z" />
<path
android:name="compass"
android:fillColor="#000000"
android:pathData="M 6.5 17.5 L 14.01 14.01 L 17.5 6.5 L 9.99 9.99 L 6.5 17.5 Z M 12 10.9 C 12.61 10.9 13.1 11.39 13.1 12 C 13.1 12.61 12.61 13.1 12 13.1 C 11.39 13.1 10.9 12.61 10.9 12 C 10.9 11.39 11.39 10.9 12 10.9 Z" />
<group
android:name="ring_parent"
android:pivotX="12"
android:pivotY="12"
android:scaleX="0.833"
android:scaleY="0.833">
<path
android:name="ring"
android:fillColor="#000000"
android:pathData="M 12 0 C 8.819 0 5.765 1.265 3.515 3.515 C 1.265 5.765 0 8.819 0 12 C 0 15.181 1.265 18.235 3.515 20.485 C 5.765 22.735 8.819 24 12 24 C 15.181 24 18.235 22.735 20.485 20.485 C 22.735 18.235 24 15.181 24 12 C 24 8.819 22.735 5.765 20.485 3.515 C 18.235 1.265 15.181 0 12 0 Z M 12 21.6 C 9.455 21.6 7.012 20.588 5.212 18.788 C 3.412 16.988 2.4 14.545 2.4 12 C 2.4 9.455 3.412 7.012 5.212 5.212 C 7.012 3.412 9.455 2.4 12 2.4 C 14.545 2.4 16.988 3.412 18.788 5.212 C 20.588 7.012 21.6 9.455 21.6 12 C 21.6 14.545 20.588 16.988 18.788 18.788 C 16.988 20.588 14.545 21.6 12 21.6 Z"
android:strokeAlpha="0" />
</group>
<group android:name="group_1" />
</group>
</vector>
</aapt:attr>
<target android:name="compass">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 9.99 9.99 C 9.408 11.242 8.827 12.493 8.245 13.745 C 7.663 14.997 7.082 16.248 6.5 17.5 C 6.5 17.5 6.5 17.5 6.5 17.5 C 9.003 16.337 11.507 15.173 14.01 14.01 C 15.173 11.507 16.337 9.003 17.5 6.5 C 14.997 7.663 12.493 8.827 9.99 9.99 M 12 10.9 C 11.39 10.9 10.9 11.39 10.9 12 C 10.9 12.305 11.023 12.58 11.221 12.779 C 11.42 12.977 11.695 13.1 12 13.1 C 12.61 13.1 13.1 12.61 13.1 12 C 13.1 11.39 12.61 10.9 12 10.9 L 12 10.9 M 12 12 L 12 12 L 12 12 L 12 12 L 12 12 L 12 12 L 12 12 M 12 12 L 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12"
android:valueTo="M 12 2 C 6.48 2 2 6.48 2 12 C 2 17.141 5.886 21.38 10.878 21.938 C 11.247 21.979 11.621 22 12 22 C 17.52 22 22 17.52 22 12 C 22 6.48 17.52 2 12 2 C 12 2 12 2 12 2 M 12 10.9 C 11.695 10.9 11.42 11.023 11.221 11.221 C 11.023 11.42 10.9 11.695 10.9 12 C 10.9 12.61 11.39 13.1 12 13.1 C 12.61 13.1 13.1 12.61 13.1 12 C 13.1 11.39 12.61 10.9 12 10.9 L 12 10.9 M 14.19 14.19 L 6 18 L 6 18 L 9.81 9.81 L 18 6 L 14.19 14.19 L 14.19 14.19 M 12 12 L 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12 C 12 12 12 12 12 12"
android:valueType="pathType" />
</aapt:attr>
</target>
<target android:name="main_parent">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="rotation"
android:valueFrom="0"
android:valueTo="180"
android:valueType="floatType" />
</aapt:attr>
</target>
<target android:name="group">
<aapt:attr name="android:animation">
<set>
<objectAnimator
android:duration="66"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleX"
android:valueFrom="0"
android:valueTo="0"
android:valueType="floatType" />
<objectAnimator
android:duration="100"
android:interpolator="@android:anim/decelerate_interpolator"
android:propertyName="scaleX"
android:startOffset="66"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType" />
<objectAnimator
android:duration="66"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleY"
android:valueFrom="0"
android:valueTo="0"
android:valueType="floatType" />
<objectAnimator
android:duration="100"
android:interpolator="@android:anim/decelerate_interpolator"
android:propertyName="scaleY"
android:startOffset="66"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
</animated-vector>
@@ -1,36 +0,0 @@
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="history_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:name="clock"
android:fillColor="#000000"
android:pathData="M 12 8 L 12 13 L 16.28 15.54 L 17 14.33 L 13.5 12.25 L 13.5 8 L 12 8 Z" />
<group
android:name="arrow_head"
android:pivotX="13"
android:pivotY="12">
<path
android:name="arrow"
android:fillColor="#000000"
android:pathData="M 13 3 C 8.03 3 4 7.03 4 12 L 1 12 L 4.89 15.89 L 4.96 16.03 L 9 12 L 6 12 C 6 8.13 9.13 5 13 5 C 16.87 5 20 8.13 20 12 C 20 15.87 16.87 19 13 19 C 11.07 19 9.32 18.21 8.06 16.94 L 6.64 18.36 C 8.27 19.99 10.51 21 13 21 C 17.97 21 22 16.97 22 12 C 22 7.03 17.97 3 13 3 Z M 13 3 Z" />
</group>
</vector>
</aapt:attr>
<target android:name="arrow_head">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="rotation"
android:valueFrom="360"
android:valueTo="0"
android:valueType="floatType" />
</aapt:attr>
</target>
</animated-vector>
@@ -1,31 +0,0 @@
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="vector"
android:width="24dp"
android:height="24dp"
android:viewportWidth="1080"
android:viewportHeight="1080">
<path
android:name="bookmark"
android:fillColor="#000000"
android:pathData="M 899.84 90.84 C 899.84 90.84 360.3 90.84 360.3 90.84 C 310.84 90.84 270.38 131.3 270.38 180.76 C 270.38 180.76 270.38 720.31 270.38 720.31 C 270.38 769.76 310.84 810.23 360.3 810.23 C 360.3 810.23 899.84 810.23 899.84 810.23 C 949.3 810.23 989.77 769.76 989.77 720.31 C 989.77 720.31 989.77 180.76 989.77 180.76 C 989.77 131.3 949.3 90.84 899.84 90.84 M 899.84 720.31 C 899.84 720.31 360.3 720.31 360.3 720.31 C 360.3 720.31 360.3 180.76 360.3 180.76 C 360.3 180.76 585.11 180.76 585.11 180.76 C 585.11 180.76 585.11 585.42 585.11 585.42 C 585.11 585.42 720 484.26 720 484.26 C 720 484.26 854.88 585.42 854.88 585.42 C 854.88 585.42 854.88 180.76 854.88 180.76 C 854.88 180.76 899.84 180.76 899.84 180.76 C 899.84 180.76 899.84 720.31 899.84 720.31" />
<path
android:name="angle"
android:fillColor="#000000"
android:pathData="M 180.45 270.69 C 180.45 270.69 90.53 270.69 90.53 270.69 C 90.53 270.69 90.53 900.15 90.53 900.15 C 90.53 949.61 131 990.08 180.45 990.08 C 180.45 990.08 809.92 990.08 809.92 990.08 C 809.92 990.08 809.92 900.15 809.92 900.15 C 809.92 900.15 180.45 900.15 180.45 900.15 C 180.45 900.15 180.45 270.69 180.45 270.69" />
</vector>
</aapt:attr>
<target android:name="bookmark">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 634.454 90.84 C 543.069 90.84 451.685 90.84 360.3 90.84 C 310.84 90.84 270.38 131.3 270.38 180.76 C 270.38 360.61 270.38 540.46 270.38 720.31 C 270.38 769.76 310.84 810.23 360.3 810.23 C 540.147 810.23 719.993 810.23 899.84 810.23 C 949.3 810.23 989.77 769.76 989.77 720.31 C 989.77 540.46 989.77 360.61 989.77 180.76 C 989.77 131.3 949.3 90.84 899.84 90.84 C 811.378 90.84 722.916 90.84 634.454 90.84 M 899.84 720.31 C 834.876 720.31 769.913 720.31 704.949 720.31 C 590.066 720.31 475.183 720.31 360.3 720.31 C 360.3 540.46 360.3 360.61 360.3 180.76 C 435.237 180.76 510.173 180.76 585.11 180.76 L 585.11 180.76 C 585.11 315.647 585.11 450.533 585.11 585.42 C 630.073 551.7 675.037 517.98 720 484.26 C 764.96 517.98 809.92 551.7 854.88 585.42 C 854.88 450.533 854.88 315.647 854.88 180.76 C 869.867 180.76 884.853 180.76 899.84 180.76 C 899.84 360.61 899.84 540.46 899.84 720.31"
android:valueTo="M 900 90 C 720 90 540 90 360 90 C 310.5 90 270 130.5 270 180 C 270 360 270 540 270 720 C 270 769.5 310.5 810 360 810 C 540 810 720 810 900 810 C 949.5 810 990 769.5 990 720 C 990 540 990 360 990 180 C 990 130.5 949.5 90 900 90 C 900 90 900 90 900 90 M 900 540 C 862.5 517.5 825 495 787.5 472.5 C 750 495 712.5 517.5 675 540 C 675 540 675 540 675 540 C 675 471.351 675 402.701 675 334.052 L 675 180 C 675 180 675 180 675 180 C 713.708 180 752.416 180 791.124 180 C 827.416 180 863.708 180 900 180 C 900 233.194 900 286.387 900 339.581 C 900 406.387 900 473.194 900 540 C 900 540 900 540 900 540"
android:valueType="pathType" />
</aapt:attr>
</target>
</animated-vector>
@@ -1,27 +0,0 @@
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="updates_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:name="updates_filled"
android:fillColor="#000000"
android:pathData="M 23 12 L 20.56 9.22 L 20.9 5.54 L 17.29 4.72 L 15.4 1.54 L 12 3 L 8.6 1.54 L 6.71 4.72 L 3.1 5.53 L 3.44 9.21 L 1 12 L 3.44 14.78 L 3.1 18.47 L 6.71 19.29 L 8.6 22.47 L 12 21 L 15.4 22.46 L 17.29 19.28 L 20.9 18.46 L 20.56 14.78 L 23 12 Z M 9.42 19.93 L 7.99 17.52 L 5.25 16.9 L 5.51 14.1 L 3.66 12 L 5.51 9.88 L 5.25 7.1 L 7.99 6.49 L 9.42 4.08 L 12 5.18 L 14.58 4.07 L 16.01 6.48 L 18.75 7.1 L 18.49 9.89 L 20.34 12 L 18.49 14.11 L 18.49 14.11 L 18.75 16.9 L 16.01 17.52 L 14.58 19.93 L 12 18.82 L 9.42 19.93 M 11 15 L 13 15 L 13 15.5 L 13 16 L 13 17 L 11 17 L 11 15 M 11 7 L 13 7 L 13 13 L 11 13 L 11 7" />
</vector>
</aapt:attr>
<target android:name="updates_filled">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 23 12 L 20.56 9.22 L 20.9 5.54 L 17.29 4.72 L 15.4 1.54 L 12 3 L 8.6 1.54 L 6.71 4.72 L 3.1 5.53 L 3.44 9.21 L 1 12 L 3.44 14.78 L 3.1 18.47 L 6.71 19.29 L 8.6 22.47 L 12 21 L 15.4 22.46 L 17.29 19.28 L 20.9 18.46 L 20.56 14.78 L 23 12 Z M 9.42 19.93 L 7.99 17.52 L 5.25 16.9 L 5.51 14.1 L 3.66 12 L 5.51 9.88 L 5.25 7.1 L 7.99 6.49 L 9.42 4.08 L 12 5.18 L 14.58 4.07 L 16.01 6.48 L 18.75 7.1 L 18.49 9.89 L 20.34 12 L 18.49 14.11 L 18.49 14.11 L 18.75 16.9 L 16.01 17.52 L 14.58 19.93 L 12 18.82 L 9.42 19.93 M 11 15 L 13 15 L 13 15.5 L 13 16 L 13 17 L 11 17 L 11 15 M 11 7 L 13 7 L 13 13 L 11 13 L 11 7"
android:valueTo="M 23 12 L 20.56 9.22 L 20.9 5.54 L 17.29 4.72 L 15.4 1.54 L 12 3 L 8.6 1.54 L 6.71 4.72 L 3.1 5.53 L 3.44 9.21 L 1 12 L 3.44 14.78 L 3.1 18.47 L 6.71 19.29 L 8.6 22.47 L 12 21 L 15.4 22.46 L 17.29 19.28 L 20.9 18.46 L 20.56 14.78 L 23 12 Z M 12 13 L 11.5 13 L 11 13 L 11 12 L 11 11 L 11 10 L 11 9 L 11 8 L 11 7 L 12 7 L 13 7 L 13 7.857 L 13 8.714 L 13 9.571 L 13 10.429 L 13 11.286 L 13 12.143 L 13 13 L 13 13 L 13 13 L 12.5 13 L 12 13 M 11 15 L 13 15 L 13 16.058 L 13 17 L 13 17 L 11 17 L 11 15 M 12 10 L 12 10 L 12 10 L 12 10 L 12 10"
android:valueType="pathType" />
</aapt:attr>
</target>
</animated-vector>
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="browse_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<group
android:name="spin"
android:pivotX="480"
android:pivotY="-480">
<path
android:name="icon"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M 335 -310 L 537 -368 Q 557 -374 571.5 -388.5 Q 586 -403 592 -423 L 650 -625 Q 653 -636 644.5 -644.5 Q 636 -653 625 -650 L 423 -592 Q 403 -586 388.5 -571.5 Q 374 -557 368 -537 L 310 -335 Q 307 -324 315.5 -315.5 Q 324 -307 335 -310 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 706.5 -706.5 L 718.09 -694.35 L 729.08 -681.66 L 739.43 -668.44 L 749.07 -654.7 L 757.95 -640.46 L 766.05 -625.75 L 773.3 -610.62 L 779.7 -595.1 L 785.21 -579.24 L 789.84 -563.11 L 793.57 -546.74 L 796.43 -530.2 L 798.44 -513.53 L 799.61 -496.79 L 800 -480 L 799.61 -463.21 L 798.44 -446.47 L 796.43 -429.8 L 793.57 -413.26 L 789.84 -396.89 L 785.21 -380.76 L 779.7 -364.9 L 773.3 -349.38 L 766.05 -334.25 L 757.95 -319.54 L 749.07 -305.3 L 739.43 -291.56 L 729.08 -278.34 L 718.09 -265.65 L 706.5 -253.5 L 694.35 -241.91 L 681.66 -230.92 L 668.44 -220.57 L 654.7 -210.93 L 640.46 -202.05 L 625.75 -193.95 L 610.62 -186.7 L 595.1 -180.3 L 579.24 -174.79 L 563.11 -170.16 L 546.74 -166.43 L 530.2 -163.57 L 513.53 -161.56 L 496.79 -160.39 L 480 -160 L 463.21 -160.39 L 446.47 -161.56 L 429.8 -163.57 L 413.26 -166.43 L 396.89 -170.16 L 380.76 -174.79 L 364.9 -180.3 L 349.38 -186.7 L 334.25 -193.95 L 319.54 -202.05 L 305.3 -210.93 L 291.56 -220.57 L 278.34 -230.92 L 265.65 -241.91 L 253.5 -253.5 L 241.91 -265.65 L 230.92 -278.34 L 220.57 -291.56 L 210.93 -305.3 L 202.05 -319.54 L 193.95 -334.25 L 186.7 -349.38 L 180.3 -364.9 L 174.79 -380.76 L 170.16 -396.89 L 166.43 -413.26 L 163.57 -429.8 L 161.56 -446.47 L 160.39 -463.21 L 160 -480 L 160.39 -496.79 L 161.56 -513.53 L 163.57 -530.2 L 166.43 -546.74 L 170.16 -563.11 L 174.79 -579.24 L 180.3 -595.1 L 186.7 -610.62 L 193.95 -625.75 L 202.05 -640.46 L 210.93 -654.7 L 220.57 -668.44 L 230.92 -681.66 L 241.91 -694.35 L 253.5 -706.5 L 265.65 -718.09 L 278.34 -729.08 L 291.56 -739.43 L 305.3 -749.07 L 319.54 -757.95 L 334.25 -766.05 L 349.38 -773.3 L 364.9 -779.7 L 380.76 -785.21 L 396.89 -789.84 L 413.26 -793.57 L 429.8 -796.43 L 446.47 -798.44 L 463.21 -799.61 L 480 -800 L 496.79 -799.61 L 513.53 -798.44 L 530.2 -796.43 L 546.74 -793.57 L 563.11 -789.84 L 579.24 -785.21 L 595.1 -779.7 L 610.62 -773.3 L 625.75 -766.05 L 640.46 -757.95 L 654.7 -749.07 L 668.44 -739.43 L 681.66 -729.08 L 694.35 -718.09 Z M 480 -480 Z" />
</group>
</group>
</vector>
</aapt:attr>
<target android:name="icon">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 335 -310 L 537 -368 Q 557 -374 571.5 -388.5 Q 586 -403 592 -423 L 650 -625 Q 653 -636 644.5 -644.5 Q 636 -653 625 -650 L 423 -592 Q 403 -586 388.5 -571.5 Q 374 -557 368 -537 L 310 -335 Q 307 -324 315.5 -315.5 Q 324 -307 335 -310 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 706.5 -706.5 L 718.09 -694.35 L 729.08 -681.66 L 739.43 -668.44 L 749.07 -654.7 L 757.95 -640.46 L 766.05 -625.75 L 773.3 -610.62 L 779.7 -595.1 L 785.21 -579.24 L 789.84 -563.11 L 793.57 -546.74 L 796.43 -530.2 L 798.44 -513.53 L 799.61 -496.79 L 800 -480 L 799.61 -463.21 L 798.44 -446.47 L 796.43 -429.8 L 793.57 -413.26 L 789.84 -396.89 L 785.21 -380.76 L 779.7 -364.9 L 773.3 -349.38 L 766.05 -334.25 L 757.95 -319.54 L 749.07 -305.3 L 739.43 -291.56 L 729.08 -278.34 L 718.09 -265.65 L 706.5 -253.5 L 694.35 -241.91 L 681.66 -230.92 L 668.44 -220.57 L 654.7 -210.93 L 640.46 -202.05 L 625.75 -193.95 L 610.62 -186.7 L 595.1 -180.3 L 579.24 -174.79 L 563.11 -170.16 L 546.74 -166.43 L 530.2 -163.57 L 513.53 -161.56 L 496.79 -160.39 L 480 -160 L 463.21 -160.39 L 446.47 -161.56 L 429.8 -163.57 L 413.26 -166.43 L 396.89 -170.16 L 380.76 -174.79 L 364.9 -180.3 L 349.38 -186.7 L 334.25 -193.95 L 319.54 -202.05 L 305.3 -210.93 L 291.56 -220.57 L 278.34 -230.92 L 265.65 -241.91 L 253.5 -253.5 L 241.91 -265.65 L 230.92 -278.34 L 220.57 -291.56 L 210.93 -305.3 L 202.05 -319.54 L 193.95 -334.25 L 186.7 -349.38 L 180.3 -364.9 L 174.79 -380.76 L 170.16 -396.89 L 166.43 -413.26 L 163.57 -429.8 L 161.56 -446.47 L 160.39 -463.21 L 160 -480 L 160.39 -496.79 L 161.56 -513.53 L 163.57 -530.2 L 166.43 -546.74 L 170.16 -563.11 L 174.79 -579.24 L 180.3 -595.1 L 186.7 -610.62 L 193.95 -625.75 L 202.05 -640.46 L 210.93 -654.7 L 220.57 -668.44 L 230.92 -681.66 L 241.91 -694.35 L 253.5 -706.5 L 265.65 -718.09 L 278.34 -729.08 L 291.56 -739.43 L 305.3 -749.07 L 319.54 -757.95 L 334.25 -766.05 L 349.38 -773.3 L 364.9 -779.7 L 380.76 -785.21 L 396.89 -789.84 L 413.26 -793.57 L 429.8 -796.43 L 446.47 -798.44 L 463.21 -799.61 L 480 -800 L 496.79 -799.61 L 513.53 -798.44 L 530.2 -796.43 L 546.74 -793.57 L 563.11 -789.84 L 579.24 -785.21 L 595.1 -779.7 L 610.62 -773.3 L 625.75 -766.05 L 640.46 -757.95 L 654.7 -749.07 L 668.44 -739.43 L 681.66 -729.08 L 694.35 -718.09 Z M 480 -480 Z"
android:valueTo="M 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 644.5 -644.5 L 649.53 -637.03 L 650.6 -628.13 L 648.38 -619.35 L 645.88 -610.64 L 643.37 -601.92 L 640.87 -593.21 L 638.37 -584.49 L 635.87 -575.78 L 633.36 -567.06 L 630.86 -558.34 L 628.36 -549.63 L 625.86 -540.91 L 623.35 -532.2 L 620.85 -523.48 L 618.35 -514.77 L 615.85 -506.05 L 613.34 -497.33 L 610.84 -488.62 L 608.34 -479.9 L 605.84 -471.19 L 603.33 -462.47 L 600.83 -453.75 L 598.33 -445.04 L 595.83 -436.32 L 593.32 -427.61 L 590.65 -418.94 L 587.16 -410.58 L 582.78 -402.65 L 577.53 -395.27 L 571.5 -388.5 L 564.73 -382.47 L 557.35 -377.22 L 549.42 -372.84 L 541.06 -369.35 L 532.39 -366.68 L 523.68 -364.17 L 514.96 -361.67 L 506.25 -359.17 L 497.53 -356.67 L 488.81 -354.16 L 480.1 -351.66 L 471.38 -349.16 L 462.67 -346.66 L 453.95 -344.15 L 445.23 -341.65 L 436.52 -339.15 L 427.8 -336.65 L 419.09 -334.14 L 410.37 -331.64 L 401.66 -329.14 L 392.94 -326.64 L 384.22 -324.13 L 375.51 -321.63 L 366.79 -319.13 L 358.08 -316.63 L 349.36 -314.12 L 340.65 -311.62 L 331.87 -309.4 L 322.97 -310.47 L 315.5 -315.5 L 310.47 -322.97 L 309.4 -331.87 L 311.62 -340.65 L 314.12 -349.36 L 316.63 -358.08 L 319.13 -366.79 L 321.63 -375.51 L 324.13 -384.22 L 326.64 -392.94 L 329.14 -401.66 L 331.64 -410.37 L 334.14 -419.09 L 336.65 -427.8 L 339.15 -436.52 L 341.65 -445.23 L 344.15 -453.95 L 346.66 -462.67 L 349.16 -471.38 L 351.66 -480.1 L 354.16 -488.81 L 356.67 -497.53 L 359.17 -506.25 L 361.67 -514.96 L 364.17 -523.68 L 366.68 -532.39 L 369.35 -541.06 L 372.84 -549.42 L 377.22 -557.35 L 382.47 -564.73 L 388.5 -571.5 L 395.27 -577.53 L 402.65 -582.78 L 410.58 -587.16 L 418.94 -590.65 L 427.61 -593.32 L 436.32 -595.83 L 445.04 -598.33 L 453.75 -600.83 L 462.47 -603.33 L 471.19 -605.84 L 479.9 -608.34 L 488.62 -610.84 L 497.33 -613.34 L 506.05 -615.85 L 514.77 -618.35 L 523.48 -620.85 L 532.2 -623.35 L 540.91 -625.86 L 549.63 -628.36 L 558.34 -630.86 L 567.06 -633.36 L 575.78 -635.87 L 584.49 -638.37 L 593.21 -640.87 L 601.92 -643.37 L 610.64 -645.88 L 619.35 -648.38 L 628.13 -650.6 L 637.03 -649.53 Z M 480 -480 Z"
android:valueType="pathType" />
</aapt:attr>
</target>
<target android:name="spin">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="600"
android:interpolator="@android:anim/overshoot_interpolator"
android:propertyName="rotation"
android:valueFrom="-360"
android:valueTo="0"
android:valueType="floatType" />
</aapt:attr>
</target>
</animated-vector>
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="browse_exit"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<group
android:name="spin"
android:pivotX="480"
android:pivotY="-480">
<path
android:name="icon"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 644.5 -644.5 L 649.53 -637.03 L 650.6 -628.13 L 648.38 -619.35 L 645.88 -610.64 L 643.37 -601.92 L 640.87 -593.21 L 638.37 -584.49 L 635.87 -575.78 L 633.36 -567.06 L 630.86 -558.34 L 628.36 -549.63 L 625.86 -540.91 L 623.35 -532.2 L 620.85 -523.48 L 618.35 -514.77 L 615.85 -506.05 L 613.34 -497.33 L 610.84 -488.62 L 608.34 -479.9 L 605.84 -471.19 L 603.33 -462.47 L 600.83 -453.75 L 598.33 -445.04 L 595.83 -436.32 L 593.32 -427.61 L 590.65 -418.94 L 587.16 -410.58 L 582.78 -402.65 L 577.53 -395.27 L 571.5 -388.5 L 564.73 -382.47 L 557.35 -377.22 L 549.42 -372.84 L 541.06 -369.35 L 532.39 -366.68 L 523.68 -364.17 L 514.96 -361.67 L 506.25 -359.17 L 497.53 -356.67 L 488.81 -354.16 L 480.1 -351.66 L 471.38 -349.16 L 462.67 -346.66 L 453.95 -344.15 L 445.23 -341.65 L 436.52 -339.15 L 427.8 -336.65 L 419.09 -334.14 L 410.37 -331.64 L 401.66 -329.14 L 392.94 -326.64 L 384.22 -324.13 L 375.51 -321.63 L 366.79 -319.13 L 358.08 -316.63 L 349.36 -314.12 L 340.65 -311.62 L 331.87 -309.4 L 322.97 -310.47 L 315.5 -315.5 L 310.47 -322.97 L 309.4 -331.87 L 311.62 -340.65 L 314.12 -349.36 L 316.63 -358.08 L 319.13 -366.79 L 321.63 -375.51 L 324.13 -384.22 L 326.64 -392.94 L 329.14 -401.66 L 331.64 -410.37 L 334.14 -419.09 L 336.65 -427.8 L 339.15 -436.52 L 341.65 -445.23 L 344.15 -453.95 L 346.66 -462.67 L 349.16 -471.38 L 351.66 -480.1 L 354.16 -488.81 L 356.67 -497.53 L 359.17 -506.25 L 361.67 -514.96 L 364.17 -523.68 L 366.68 -532.39 L 369.35 -541.06 L 372.84 -549.42 L 377.22 -557.35 L 382.47 -564.73 L 388.5 -571.5 L 395.27 -577.53 L 402.65 -582.78 L 410.58 -587.16 L 418.94 -590.65 L 427.61 -593.32 L 436.32 -595.83 L 445.04 -598.33 L 453.75 -600.83 L 462.47 -603.33 L 471.19 -605.84 L 479.9 -608.34 L 488.62 -610.84 L 497.33 -613.34 L 506.05 -615.85 L 514.77 -618.35 L 523.48 -620.85 L 532.2 -623.35 L 540.91 -625.86 L 549.63 -628.36 L 558.34 -630.86 L 567.06 -633.36 L 575.78 -635.87 L 584.49 -638.37 L 593.21 -640.87 L 601.92 -643.37 L 610.64 -645.88 L 619.35 -648.38 L 628.13 -650.6 L 637.03 -649.53 Z M 480 -480 Z" />
</group>
</group>
</vector>
</aapt:attr>
<target android:name="icon">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 L 480 -480 Q 480 -480 480 -480 Q 480 -480 480 -480 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 644.5 -644.5 L 649.53 -637.03 L 650.6 -628.13 L 648.38 -619.35 L 645.88 -610.64 L 643.37 -601.92 L 640.87 -593.21 L 638.37 -584.49 L 635.87 -575.78 L 633.36 -567.06 L 630.86 -558.34 L 628.36 -549.63 L 625.86 -540.91 L 623.35 -532.2 L 620.85 -523.48 L 618.35 -514.77 L 615.85 -506.05 L 613.34 -497.33 L 610.84 -488.62 L 608.34 -479.9 L 605.84 -471.19 L 603.33 -462.47 L 600.83 -453.75 L 598.33 -445.04 L 595.83 -436.32 L 593.32 -427.61 L 590.65 -418.94 L 587.16 -410.58 L 582.78 -402.65 L 577.53 -395.27 L 571.5 -388.5 L 564.73 -382.47 L 557.35 -377.22 L 549.42 -372.84 L 541.06 -369.35 L 532.39 -366.68 L 523.68 -364.17 L 514.96 -361.67 L 506.25 -359.17 L 497.53 -356.67 L 488.81 -354.16 L 480.1 -351.66 L 471.38 -349.16 L 462.67 -346.66 L 453.95 -344.15 L 445.23 -341.65 L 436.52 -339.15 L 427.8 -336.65 L 419.09 -334.14 L 410.37 -331.64 L 401.66 -329.14 L 392.94 -326.64 L 384.22 -324.13 L 375.51 -321.63 L 366.79 -319.13 L 358.08 -316.63 L 349.36 -314.12 L 340.65 -311.62 L 331.87 -309.4 L 322.97 -310.47 L 315.5 -315.5 L 310.47 -322.97 L 309.4 -331.87 L 311.62 -340.65 L 314.12 -349.36 L 316.63 -358.08 L 319.13 -366.79 L 321.63 -375.51 L 324.13 -384.22 L 326.64 -392.94 L 329.14 -401.66 L 331.64 -410.37 L 334.14 -419.09 L 336.65 -427.8 L 339.15 -436.52 L 341.65 -445.23 L 344.15 -453.95 L 346.66 -462.67 L 349.16 -471.38 L 351.66 -480.1 L 354.16 -488.81 L 356.67 -497.53 L 359.17 -506.25 L 361.67 -514.96 L 364.17 -523.68 L 366.68 -532.39 L 369.35 -541.06 L 372.84 -549.42 L 377.22 -557.35 L 382.47 -564.73 L 388.5 -571.5 L 395.27 -577.53 L 402.65 -582.78 L 410.58 -587.16 L 418.94 -590.65 L 427.61 -593.32 L 436.32 -595.83 L 445.04 -598.33 L 453.75 -600.83 L 462.47 -603.33 L 471.19 -605.84 L 479.9 -608.34 L 488.62 -610.84 L 497.33 -613.34 L 506.05 -615.85 L 514.77 -618.35 L 523.48 -620.85 L 532.2 -623.35 L 540.91 -625.86 L 549.63 -628.36 L 558.34 -630.86 L 567.06 -633.36 L 575.78 -635.87 L 584.49 -638.37 L 593.21 -640.87 L 601.92 -643.37 L 610.64 -645.88 L 619.35 -648.38 L 628.13 -650.6 L 637.03 -649.53 Z M 480 -480 Z"
android:valueTo="M 335 -310 L 537 -368 Q 557 -374 571.5 -388.5 Q 586 -403 592 -423 L 650 -625 Q 653 -636 644.5 -644.5 Q 636 -653 625 -650 L 423 -592 Q 403 -586 388.5 -571.5 Q 374 -557 368 -537 L 310 -335 Q 307 -324 315.5 -315.5 Q 324 -307 335 -310 Z M 480 -420 Q 455 -420 437.5 -437.5 Q 420 -455 420 -480 Q 420 -505 437.5 -522.5 Q 455 -540 480 -540 Q 505 -540 522.5 -522.5 Q 540 -505 540 -480 Q 540 -455 522.5 -437.5 Q 505 -420 480 -420 Z M 480 -80 Q 397 -80 324 -111.5 Q 251 -143 197 -197 Q 143 -251 111.5 -324 Q 80 -397 80 -480 Q 80 -563 111.5 -636 Q 143 -709 197 -763 Q 251 -817 324 -848.5 Q 397 -880 480 -880 Q 563 -880 636 -848.5 Q 709 -817 763 -763 Q 817 -709 848.5 -636 Q 880 -563 880 -480 Q 880 -397 848.5 -324 Q 817 -251 763 -197 Q 709 -143 636 -111.5 Q 563 -80 480 -80 Z M 706.5 -706.5 L 718.09 -694.35 L 729.08 -681.66 L 739.43 -668.44 L 749.07 -654.7 L 757.95 -640.46 L 766.05 -625.75 L 773.3 -610.62 L 779.7 -595.1 L 785.21 -579.24 L 789.84 -563.11 L 793.57 -546.74 L 796.43 -530.2 L 798.44 -513.53 L 799.61 -496.79 L 800 -480 L 799.61 -463.21 L 798.44 -446.47 L 796.43 -429.8 L 793.57 -413.26 L 789.84 -396.89 L 785.21 -380.76 L 779.7 -364.9 L 773.3 -349.38 L 766.05 -334.25 L 757.95 -319.54 L 749.07 -305.3 L 739.43 -291.56 L 729.08 -278.34 L 718.09 -265.65 L 706.5 -253.5 L 694.35 -241.91 L 681.66 -230.92 L 668.44 -220.57 L 654.7 -210.93 L 640.46 -202.05 L 625.75 -193.95 L 610.62 -186.7 L 595.1 -180.3 L 579.24 -174.79 L 563.11 -170.16 L 546.74 -166.43 L 530.2 -163.57 L 513.53 -161.56 L 496.79 -160.39 L 480 -160 L 463.21 -160.39 L 446.47 -161.56 L 429.8 -163.57 L 413.26 -166.43 L 396.89 -170.16 L 380.76 -174.79 L 364.9 -180.3 L 349.38 -186.7 L 334.25 -193.95 L 319.54 -202.05 L 305.3 -210.93 L 291.56 -220.57 L 278.34 -230.92 L 265.65 -241.91 L 253.5 -253.5 L 241.91 -265.65 L 230.92 -278.34 L 220.57 -291.56 L 210.93 -305.3 L 202.05 -319.54 L 193.95 -334.25 L 186.7 -349.38 L 180.3 -364.9 L 174.79 -380.76 L 170.16 -396.89 L 166.43 -413.26 L 163.57 -429.8 L 161.56 -446.47 L 160.39 -463.21 L 160 -480 L 160.39 -496.79 L 161.56 -513.53 L 163.57 -530.2 L 166.43 -546.74 L 170.16 -563.11 L 174.79 -579.24 L 180.3 -595.1 L 186.7 -610.62 L 193.95 -625.75 L 202.05 -640.46 L 210.93 -654.7 L 220.57 -668.44 L 230.92 -681.66 L 241.91 -694.35 L 253.5 -706.5 L 265.65 -718.09 L 278.34 -729.08 L 291.56 -739.43 L 305.3 -749.07 L 319.54 -757.95 L 334.25 -766.05 L 349.38 -773.3 L 364.9 -779.7 L 380.76 -785.21 L 396.89 -789.84 L 413.26 -793.57 L 429.8 -796.43 L 446.47 -798.44 L 463.21 -799.61 L 480 -800 L 496.79 -799.61 L 513.53 -798.44 L 530.2 -796.43 L 546.74 -793.57 L 563.11 -789.84 L 579.24 -785.21 L 595.1 -779.7 L 610.62 -773.3 L 625.75 -766.05 L 640.46 -757.95 L 654.7 -749.07 L 668.44 -739.43 L 681.66 -729.08 L 694.35 -718.09 Z M 480 -480 Z"
android:valueType="pathType" />
</aapt:attr>
</target>
<target android:name="spin">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="600"
android:interpolator="@android:anim/overshoot_interpolator"
android:propertyName="rotation"
android:valueFrom="-360"
android:valueTo="0"
android:valueType="floatType" />
</aapt:attr>
</target>
</animated-vector>
@@ -25,7 +25,7 @@
<path
android:name="caret_l_rect"
android:fillColor="#000"
android:pathData="M -1.0,-4.0 l 2.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,8.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l -2.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,-8.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z" />
android:pathData="M -1,-3 A 1,1 0 0 1 1,-3 L 1,3 A 1,1 0 0 1 -1,3 Z" />
</group>
</group>
</group>
@@ -41,7 +41,7 @@
<path
android:name="caret_r_rect"
android:fillColor="#000"
android:pathData="M -1.0,-4.0 l 2.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,8.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l -2.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,-8.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z" />
android:pathData="M -1,-3 A 1,1 0 0 1 1,-3 L 1,3 A 1,1 0 0 1 -1,3 Z" />
</group>
</group>
</group>
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="history_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<path
android:name="hands"
android:fillColor="#000000"
android:pathData="M 520 -496 L 620 -396 Q 631 -385 631 -368 Q 631 -351 620 -340 Q 609 -329 592 -329 Q 575 -329 564 -340 L 452 -452 Q 446 -458 443 -465.5 Q 440 -473 440 -481 L 440 -640 Q 440 -657 451.5 -668.5 Q 463 -680 480 -680 Q 497 -680 508.5 -668.5 Q 520 -657 520 -640 L 520 -496 Z" />
<group
android:name="ring_group"
android:pivotX="480"
android:pivotY="-480">
<path
android:name="ring"
android:fillColor="#000000"
android:pathData="M 480 -120 Q 354 -120 257 -196.5 Q 160 -273 131 -392 Q 127 -407 137 -419.5 Q 147 -432 164 -434 Q 180 -436 193 -428 Q 206 -420 211 -404 Q 235 -314 310 -257 Q 385 -200 480 -200 Q 597 -200 678.5 -281.5 Q 760 -363 760 -480 Q 760 -597 678.5 -678.5 Q 597 -760 480 -760 Q 411 -760 351 -728 Q 291 -696 250 -640 L 320 -640 Q 337 -640 348.5 -628.5 Q 360 -617 360 -600 Q 360 -583 348.5 -571.5 Q 337 -560 320 -560 L 160 -560 Q 143 -560 131.5 -571.5 Q 120 -583 120 -600 L 120 -760 Q 120 -777 131.5 -788.5 Q 143 -800 160 -800 Q 177 -800 188.5 -788.5 Q 200 -777 200 -760 L 200 -706 Q 251 -770 324.5 -805 Q 398 -840 480 -840 Q 555 -840 620.5 -811.5 Q 686 -783 734.5 -734.5 Q 783 -686 811.5 -620.5 Q 840 -555 840 -480 Q 840 -405 811.5 -339.5 Q 783 -274 734.5 -225.5 Q 686 -177 620.5 -148.5 Q 555 -120 480 -120 Z" />
</group>
</group>
</vector>
</aapt:attr>
<target android:name="ring_group">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="rotation"
android:valueFrom="360"
android:valueTo="0"
android:valueType="floatType" />
</aapt:attr>
</target>
</animated-vector>
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="library_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<path
android:name="icon"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M 720 -800 L 740.45 -800 L 760.9 -800 L 781.36 -800 L 800 -798.19 L 800 -777.74 L 800 -757.29 L 800 -736.84 L 800 -716.39 L 800 -695.93 L 800 -675.48 L 800 -655.03 L 800 -634.58 L 800 -614.13 L 800 -593.68 L 800 -573.22 L 800 -552.77 L 800 -532.32 L 800 -511.87 L 800 -491.42 L 800 -470.97 L 800 -450.51 L 800 -430.06 L 800 -409.61 L 800 -389.16 L 800 -368.71 L 800 -348.26 L 800 -327.8 L 787.35 -320 L 766.9 -320 L 746.45 -320 L 726 -320 L 705.54 -320 L 685.09 -320 L 664.64 -320 L 644.19 -320 L 623.74 -320 L 603.29 -320 L 582.83 -320 L 562.38 -320 L 541.93 -320 L 521.48 -320 L 501.03 -320 L 480.58 -320 L 460.12 -320 L 439.67 -320 L 419.22 -320 L 398.77 -320 L 378.32 -320 L 357.87 -320 L 337.41 -320 L 320 -323.04 L 320 -343.49 L 320 -363.94 L 320 -384.39 L 320 -404.85 L 320 -425.3 L 320 -445.75 L 320 -466.2 L 320 -486.65 L 320 -507.1 L 320 -527.56 L 320 -548.01 L 320 -568.46 L 320 -588.91 L 320 -609.36 L 320 -629.81 L 320 -650.27 L 320 -670.72 L 320 -691.17 L 320 -711.62 L 320 -732.07 L 320 -752.52 L 320 -772.98 L 320 -793.43 L 333.88 -800 L 354.33 -800 L 374.78 -800 L 395.23 -800 L 415.69 -800 L 436.14 -800 L 456.59 -800 L 477.04 -800 L 497.49 -800 L 517.95 -800 L 520 -781.6 L 520 -761.15 L 520 -740.7 L 520 -720.25 L 520 -699.8 L 520 -679.34 L 520 -658.89 L 520 -638.44 L 520 -617.99 L 520 -597.54 L 520 -577.09 L 520 -556.63 L 527.46 -538.46 L 546.61 -536.17 L 564.29 -546.46 L 581.89 -556.87 L 599.49 -567.28 L 618.86 -572.96 L 638.53 -568.27 L 656.21 -558 L 673.81 -547.58 L 691.39 -537.14 L 710.63 -537.43 L 719.98 -554.58 L 720 -575.03 L 720 -595.48 L 720 -615.93 L 720 -636.39 L 720 -656.84 L 720 -677.29 L 720 -697.74 L 720 -718.19 L 720 -738.64 L 720 -759.1 L 720 -779.55 Z M 320 -240 Q 287 -240 263.5 -263.5 Q 240 -287 240 -320 L 240 -800 Q 240 -833 263.5 -856.5 Q 287 -880 320 -880 L 800 -880 Q 833 -880 856.5 -856.5 Q 880 -833 880 -800 L 880 -320 Q 880 -287 856.5 -263.5 Q 833 -240 800 -240 L 320 -240 Z M 160 -80 Q 127 -80 103.5 -103.5 Q 80 -127 80 -160 L 80 -680 Q 80 -697 91.5 -708.5 Q 103 -720 120 -720 Q 137 -720 148.5 -708.5 Q 160 -697 160 -680 L 160 -160 L 680 -160 Q 697 -160 708.5 -148.5 Q 720 -137 720 -120 Q 720 -103 708.5 -91.5 Q 697 -80 680 -80 L 160 -80 Z M 320 -800 L 320 -320 L 320 -800 Z M 520 -555 Q 520 -543 529.5 -537 Q 539 -531 550 -538 L 599 -567 Q 608 -573 619.5 -573 Q 631 -573 641 -567 L 690 -538 Q 700 -531 710 -537 Q 720 -543 720 -555 Q 720 -543 710 -537 Q 700 -531 690 -538 L 641 -567 Q 631 -573 619.5 -573 Q 608 -573 599 -567 L 550 -538 Q 539 -531 529.5 -537 Q 520 -543 520 -555 Z" />
</group>
</vector>
</aapt:attr>
<target android:name="icon">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 720 -800 L 740.45 -800 L 760.9 -800 L 781.36 -800 L 800 -798.19 L 800 -777.74 L 800 -757.29 L 800 -736.84 L 800 -716.39 L 800 -695.93 L 800 -675.48 L 800 -655.03 L 800 -634.58 L 800 -614.13 L 800 -593.68 L 800 -573.22 L 800 -552.77 L 800 -532.32 L 800 -511.87 L 800 -491.42 L 800 -470.97 L 800 -450.51 L 800 -430.06 L 800 -409.61 L 800 -389.16 L 800 -368.71 L 800 -348.26 L 800 -327.8 L 787.35 -320 L 766.9 -320 L 746.45 -320 L 726 -320 L 705.54 -320 L 685.09 -320 L 664.64 -320 L 644.19 -320 L 623.74 -320 L 603.29 -320 L 582.83 -320 L 562.38 -320 L 541.93 -320 L 521.48 -320 L 501.03 -320 L 480.58 -320 L 460.12 -320 L 439.67 -320 L 419.22 -320 L 398.77 -320 L 378.32 -320 L 357.87 -320 L 337.41 -320 L 320 -323.04 L 320 -343.49 L 320 -363.94 L 320 -384.39 L 320 -404.85 L 320 -425.3 L 320 -445.75 L 320 -466.2 L 320 -486.65 L 320 -507.1 L 320 -527.56 L 320 -548.01 L 320 -568.46 L 320 -588.91 L 320 -609.36 L 320 -629.81 L 320 -650.27 L 320 -670.72 L 320 -691.17 L 320 -711.62 L 320 -732.07 L 320 -752.52 L 320 -772.98 L 320 -793.43 L 333.88 -800 L 354.33 -800 L 374.78 -800 L 395.23 -800 L 415.69 -800 L 436.14 -800 L 456.59 -800 L 477.04 -800 L 497.49 -800 L 517.95 -800 L 520 -781.6 L 520 -761.15 L 520 -740.7 L 520 -720.25 L 520 -699.8 L 520 -679.34 L 520 -658.89 L 520 -638.44 L 520 -617.99 L 520 -597.54 L 520 -577.09 L 520 -556.63 L 527.46 -538.46 L 546.61 -536.17 L 564.29 -546.46 L 581.89 -556.87 L 599.49 -567.28 L 618.86 -572.96 L 638.53 -568.27 L 656.21 -558 L 673.81 -547.58 L 691.39 -537.14 L 710.63 -537.43 L 719.98 -554.58 L 720 -575.03 L 720 -595.48 L 720 -615.93 L 720 -636.39 L 720 -656.84 L 720 -677.29 L 720 -697.74 L 720 -718.19 L 720 -738.64 L 720 -759.1 L 720 -779.55 Z M 320 -240 Q 287 -240 263.5 -263.5 Q 240 -287 240 -320 L 240 -800 Q 240 -833 263.5 -856.5 Q 287 -880 320 -880 L 800 -880 Q 833 -880 856.5 -856.5 Q 880 -833 880 -800 L 880 -320 Q 880 -287 856.5 -263.5 Q 833 -240 800 -240 L 320 -240 Z M 160 -80 Q 127 -80 103.5 -103.5 Q 80 -127 80 -160 L 80 -680 Q 80 -697 91.5 -708.5 Q 103 -720 120 -720 Q 137 -720 148.5 -708.5 Q 160 -697 160 -680 L 160 -160 L 680 -160 Q 697 -160 708.5 -148.5 Q 720 -137 720 -120 Q 720 -103 708.5 -91.5 Q 697 -80 680 -80 L 160 -80 Z M 320 -800 L 320 -320 L 320 -800 Z M 520 -555 Q 520 -543 529.5 -537 Q 539 -531 550 -538 L 599 -567 Q 608 -573 619.5 -573 Q 631 -573 641 -567 L 690 -538 Q 700 -531 710 -537 Q 720 -543 720 -555 Q 720 -543 710 -537 Q 700 -531 690 -538 L 641 -567 Q 631 -573 619.5 -573 Q 608 -573 599 -567 L 550 -538 Q 539 -531 529.5 -537 Q 520 -543 520 -555 Z"
android:valueTo="M 720 -800 L 720 -792.22 L 720 -784.44 L 720 -776.66 L 720 -768.88 L 720 -761.1 L 720 -753.31 L 720 -745.53 L 720 -737.75 L 720 -729.97 L 720 -722.19 L 720 -714.41 L 720 -706.63 L 720 -698.85 L 720 -691.07 L 720 -683.29 L 720 -675.51 L 720 -667.72 L 720 -659.94 L 720 -652.16 L 720 -644.38 L 720 -636.6 L 720 -628.82 L 720 -621.04 L 720 -613.26 L 720 -605.48 L 720 -597.7 L 720 -589.92 L 720 -582.13 L 720 -574.35 L 720 -566.57 L 720 -558.79 L 719.66 -551.03 L 716.95 -543.81 L 711.44 -538.41 L 704.34 -535.34 L 696.64 -535.33 L 689.49 -538.31 L 682.86 -542.37 L 676.22 -546.44 L 669.59 -550.5 L 662.95 -554.56 L 656.31 -558.62 L 649.68 -562.69 L 643.04 -566.75 L 636.22 -570.48 L 628.84 -572.9 L 621.15 -573.92 L 613.41 -573.38 L 605.93 -571.3 L 598.92 -567.95 L 592.29 -563.89 L 585.65 -559.83 L 579.01 -555.76 L 572.38 -551.7 L 565.74 -547.64 L 559.11 -543.58 L 552.47 -539.51 L 545.58 -535.94 L 537.93 -534.97 L 530.54 -537.24 L 524.43 -541.97 L 520.82 -548.78 L 520 -556.49 L 520 -564.27 L 520 -572.05 L 520 -579.83 L 520 -587.61 L 520 -595.39 L 520 -603.17 L 520 -610.95 L 520 -618.73 L 520 -626.52 L 520 -634.3 L 520 -642.08 L 520 -649.86 L 520 -657.64 L 520 -665.42 L 520 -673.2 L 520 -680.98 L 520 -688.76 L 520 -696.54 L 520 -704.33 L 520 -712.11 L 520 -719.89 L 520 -727.67 L 520 -735.45 L 520 -743.23 L 520 -751.01 L 520 -758.79 L 520 -766.57 L 520 -774.35 L 520 -782.13 L 520 -789.92 L 520 -797.7 L 525.48 -800 L 533.26 -800 L 541.04 -800 L 548.82 -800 L 556.6 -800 L 564.38 -800 L 572.16 -800 L 579.94 -800 L 587.72 -800 L 595.51 -800 L 603.29 -800 L 611.07 -800 L 618.85 -800 L 626.63 -800 L 634.41 -800 L 642.19 -800 L 649.97 -800 L 657.75 -800 L 665.53 -800 L 673.31 -800 L 681.1 -800 L 688.88 -800 L 696.66 -800 L 704.44 -800 L 712.22 -800 Z M 320 -240 Q 287 -240 263.5 -263.5 Q 240 -287 240 -320 L 240 -800 Q 240 -833 263.5 -856.5 Q 287 -880 320 -880 L 800 -880 Q 833 -880 856.5 -856.5 Q 880 -833 880 -800 L 880 -320 Q 880 -287 856.5 -263.5 Q 833 -240 800 -240 L 320 -240 Z M 160 -80 Q 127 -80 103.5 -103.5 Q 80 -127 80 -160 L 80 -680 Q 80 -697 91.5 -708.5 Q 103 -720 120 -720 Q 137 -720 148.5 -708.5 Q 160 -697 160 -680 L 160 -160 L 680 -160 Q 697 -160 708.5 -148.5 Q 720 -137 720 -120 Q 720 -103 708.5 -91.5 Q 697 -80 680 -80 L 160 -80 Z M 320 -800 L 320 -320 L 320 -800 Z M 520 -555 Q 520 -543 529.5 -537 Q 539 -531 550 -538 L 599 -567 Q 608 -573 619.5 -573 Q 631 -573 641 -567 L 690 -538 Q 700 -531 710 -537 Q 720 -543 720 -555 Q 720 -543 710 -537 Q 700 -531 690 -538 L 641 -567 Q 631 -573 619.5 -573 Q 608 -573 599 -567 L 550 -538 Q 539 -531 529.5 -537 Q 520 -543 520 -555 Z"
android:valueType="pathType" />
</aapt:attr>
</target>
</animated-vector>
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="updates_enter"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<group android:translateY="960">
<path
android:name="icon"
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M 326 -90 L 268 -188 L 158 -212 Q 143 -215 134 -227.5 Q 125 -240 127 -255 L 138 -368 L 63 -454 Q 53 -465 53 -480 Q 53 -495 63 -506 L 138 -592 L 127 -705 Q 125 -720 134 -732.5 Q 143 -745 158 -748 L 268 -772 L 326 -870 Q 334 -883 348 -887.5 Q 362 -892 376 -886 L 480 -842 L 584 -886 Q 598 -892 612 -887.5 Q 626 -883 634 -870 L 692 -772 L 802 -748 Q 817 -745 826 -732.5 Q 835 -720 833 -705 L 822 -592 L 897 -506 Q 907 -495 907 -480 Q 907 -465 897 -454 L 822 -368 L 833 -255 Q 835 -240 826 -227.5 Q 817 -215 802 -212 L 692 -188 L 634 -90 Q 626 -77 612 -72.5 Q 598 -68 584 -74 L 480 -118 L 376 -74 Q 362 -68 348 -72.5 Q 334 -77 326 -90 Z M 582 -798 L 591.69 -781.97 L 601.37 -765.93 L 611.06 -749.9 L 620.75 -733.86 L 630.44 -717.83 L 640.23 -701.95 L 658.54 -697.96 L 676.84 -693.96 L 695.14 -689.97 L 713.44 -685.98 L 731.75 -681.98 L 750 -677.95 L 748.33 -659.29 L 746.66 -640.63 L 745 -621.97 L 743.33 -603.31 L 741.67 -584.65 L 740 -566 L 752.22 -551.8 L 764.44 -537.6 L 776.66 -523.4 L 788.88 -509.2 L 801.1 -495 L 813.31 -480.8 L 802.31 -466.73 L 789.93 -452.67 L 777.54 -438.62 L 765.16 -424.56 L 752.78 -410.5 L 740.39 -396.45 L 741.61 -377.94 L 743.28 -359.28 L 744.94 -340.62 L 746.61 -321.96 L 748.28 -303.3 L 749.94 -284.64 L 732.39 -279.84 L 714.16 -275.53 L 695.93 -271.22 L 677.7 -266.91 L 659.47 -262.6 L 641.24 -258.29 L 631.2 -242.92 L 621.76 -226.74 L 612.32 -210.56 L 602.89 -194.38 L 593.45 -178.19 L 584.01 -162.01 L 566.76 -169.29 L 549.51 -176.59 L 532.26 -183.89 L 515 -191.19 L 497.75 -198.49 L 480.5 -205.79 L 463.29 -198.79 L 446.09 -191.37 L 428.89 -183.95 L 411.69 -176.53 L 394.49 -169.11 L 377.6 -162.66 L 367.91 -178.7 L 358.22 -194.73 L 348.54 -210.77 L 338.85 -226.8 L 329.16 -242.83 L 319.01 -258.22 L 300.71 -262.21 L 282.4 -266.2 L 264.1 -270.2 L 245.8 -274.19 L 227.5 -278.18 L 210.07 -282.82 L 211.71 -301.48 L 213.35 -320.15 L 214.98 -338.81 L 216.62 -357.47 L 218.26 -376.13 L 219.89 -394.79 L 208.42 -409.15 L 196.04 -423.2 L 183.65 -437.26 L 171.27 -451.32 L 158.89 -465.37 L 146.5 -479.43 L 157.72 -493.62 L 169.94 -507.82 L 182.16 -522.02 L 194.38 -536.22 L 206.6 -550.42 L 218.82 -564.62 L 218.5 -582.85 L 216.83 -601.51 L 215.16 -620.17 L 213.5 -638.83 L 211.83 -657.49 L 210.17 -676.15 L 226.48 -681.6 L 244.79 -685.59 L 263.09 -689.58 L 281.39 -693.58 L 299.7 -697.57 L 318 -701.56 L 328.41 -716.41 L 337.85 -732.59 L 347.29 -748.77 L 356.72 -764.96 L 366.16 -781.14 L 375.6 -797.32 L 392.53 -791.01 L 409.78 -783.71 L 427.03 -776.41 L 444.28 -769.11 L 461.54 -761.81 L 478.79 -754.51 L 495.99 -760.9 L 513.2 -768.32 L 530.4 -775.74 L 547.6 -783.16 L 564.8 -790.58 Z M 480 -480 Z M 508.5 -291.5 Q 520 -303 520 -320 Q 520 -337 508.5 -348.5 Q 497 -360 480 -360 Q 463 -360 451.5 -348.5 Q 440 -337 440 -320 Q 440 -303 451.5 -291.5 Q 463 -280 480 -280 Q 497 -280 508.5 -291.5 Z M 508.5 -451.5 Q 520 -463 520 -480 L 520 -640 Q 520 -657 508.5 -668.5 Q 497 -680 480 -680 Q 463 -680 451.5 -668.5 Q 440 -657 440 -640 L 440 -480 Q 440 -463 451.5 -451.5 Q 463 -440 480 -440 Q 497 -440 508.5 -451.5 Z" />
</group>
</vector>
</aapt:attr>
<target android:name="icon">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="300"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="pathData"
android:valueFrom="M 326 -90 L 268 -188 L 158 -212 Q 143 -215 134 -227.5 Q 125 -240 127 -255 L 138 -368 L 63 -454 Q 53 -465 53 -480 Q 53 -495 63 -506 L 138 -592 L 127 -705 Q 125 -720 134 -732.5 Q 143 -745 158 -748 L 268 -772 L 326 -870 Q 334 -883 348 -887.5 Q 362 -892 376 -886 L 480 -842 L 584 -886 Q 598 -892 612 -887.5 Q 626 -883 634 -870 L 692 -772 L 802 -748 Q 817 -745 826 -732.5 Q 835 -720 833 -705 L 822 -592 L 897 -506 Q 907 -495 907 -480 Q 907 -465 897 -454 L 822 -368 L 833 -255 Q 835 -240 826 -227.5 Q 817 -215 802 -212 L 692 -188 L 634 -90 Q 626 -77 612 -72.5 Q 598 -68 584 -74 L 480 -118 L 376 -74 Q 362 -68 348 -72.5 Q 334 -77 326 -90 Z M 582 -798 L 591.69 -781.97 L 601.37 -765.93 L 611.06 -749.9 L 620.75 -733.86 L 630.44 -717.83 L 640.23 -701.95 L 658.54 -697.96 L 676.84 -693.96 L 695.14 -689.97 L 713.44 -685.98 L 731.75 -681.98 L 750 -677.95 L 748.33 -659.29 L 746.66 -640.63 L 745 -621.97 L 743.33 -603.31 L 741.67 -584.65 L 740 -566 L 752.22 -551.8 L 764.44 -537.6 L 776.66 -523.4 L 788.88 -509.2 L 801.1 -495 L 813.31 -480.8 L 802.31 -466.73 L 789.93 -452.67 L 777.54 -438.62 L 765.16 -424.56 L 752.78 -410.5 L 740.39 -396.45 L 741.61 -377.94 L 743.28 -359.28 L 744.94 -340.62 L 746.61 -321.96 L 748.28 -303.3 L 749.94 -284.64 L 732.39 -279.84 L 714.16 -275.53 L 695.93 -271.22 L 677.7 -266.91 L 659.47 -262.6 L 641.24 -258.29 L 631.2 -242.92 L 621.76 -226.74 L 612.32 -210.56 L 602.89 -194.38 L 593.45 -178.19 L 584.01 -162.01 L 566.76 -169.29 L 549.51 -176.59 L 532.26 -183.89 L 515 -191.19 L 497.75 -198.49 L 480.5 -205.79 L 463.29 -198.79 L 446.09 -191.37 L 428.89 -183.95 L 411.69 -176.53 L 394.49 -169.11 L 377.6 -162.66 L 367.91 -178.7 L 358.22 -194.73 L 348.54 -210.77 L 338.85 -226.8 L 329.16 -242.83 L 319.01 -258.22 L 300.71 -262.21 L 282.4 -266.2 L 264.1 -270.2 L 245.8 -274.19 L 227.5 -278.18 L 210.07 -282.82 L 211.71 -301.48 L 213.35 -320.15 L 214.98 -338.81 L 216.62 -357.47 L 218.26 -376.13 L 219.89 -394.79 L 208.42 -409.15 L 196.04 -423.2 L 183.65 -437.26 L 171.27 -451.32 L 158.89 -465.37 L 146.5 -479.43 L 157.72 -493.62 L 169.94 -507.82 L 182.16 -522.02 L 194.38 -536.22 L 206.6 -550.42 L 218.82 -564.62 L 218.5 -582.85 L 216.83 -601.51 L 215.16 -620.17 L 213.5 -638.83 L 211.83 -657.49 L 210.17 -676.15 L 226.48 -681.6 L 244.79 -685.59 L 263.09 -689.58 L 281.39 -693.58 L 299.7 -697.57 L 318 -701.56 L 328.41 -716.41 L 337.85 -732.59 L 347.29 -748.77 L 356.72 -764.96 L 366.16 -781.14 L 375.6 -797.32 L 392.53 -791.01 L 409.78 -783.71 L 427.03 -776.41 L 444.28 -769.11 L 461.54 -761.81 L 478.79 -754.51 L 495.99 -760.9 L 513.2 -768.32 L 530.4 -775.74 L 547.6 -783.16 L 564.8 -790.58 Z M 480 -480 Z M 508.5 -291.5 Q 520 -303 520 -320 Q 520 -337 508.5 -348.5 Q 497 -360 480 -360 Q 463 -360 451.5 -348.5 Q 440 -337 440 -320 Q 440 -303 451.5 -291.5 Q 463 -280 480 -280 Q 497 -280 508.5 -291.5 Z M 508.5 -451.5 Q 520 -463 520 -480 L 520 -640 Q 520 -657 508.5 -668.5 Q 497 -680 480 -680 Q 463 -680 451.5 -668.5 Q 440 -657 440 -640 L 440 -480 Q 440 -463 451.5 -451.5 Q 463 -440 480 -440 Q 497 -440 508.5 -451.5 Z"
android:valueTo="M 326 -90 L 268 -188 L 158 -212 Q 143 -215 134 -227.5 Q 125 -240 127 -255 L 138 -368 L 63 -454 Q 53 -465 53 -480 Q 53 -495 63 -506 L 138 -592 L 127 -705 Q 125 -720 134 -732.5 Q 143 -745 158 -748 L 268 -772 L 326 -870 Q 334 -883 348 -887.5 Q 362 -892 376 -886 L 480 -842 L 584 -886 Q 598 -892 612 -887.5 Q 626 -883 634 -870 L 692 -772 L 802 -748 Q 817 -745 826 -732.5 Q 835 -720 833 -705 L 822 -592 L 897 -506 Q 907 -495 907 -480 Q 907 -465 897 -454 L 822 -368 L 833 -255 Q 835 -240 826 -227.5 Q 817 -215 802 -212 L 692 -188 L 634 -90 Q 626 -77 612 -72.5 Q 598 -68 584 -74 L 480 -118 L 376 -74 Q 362 -68 348 -72.5 Q 334 -77 326 -90 Z M 480 -680 L 488.17 -679.28 L 496.02 -676.94 L 503.18 -672.95 L 509.35 -667.57 L 514.33 -661.07 L 517.81 -653.65 L 519.62 -645.66 L 520 -637.47 L 520 -629.26 L 520 -621.05 L 520 -612.84 L 520 -604.63 L 520 -596.42 L 520 -588.21 L 520 -580 L 520 -571.79 L 520 -563.58 L 520 -555.37 L 520 -547.16 L 520 -538.95 L 520 -530.74 L 520 -522.53 L 520 -514.32 L 520 -506.11 L 520 -497.9 L 520 -489.69 L 520 -481.48 L 519.48 -473.29 L 517.46 -465.36 L 513.79 -458.03 L 508.64 -451.66 L 502.33 -446.42 L 495.05 -442.68 L 487.13 -440.58 L 480 -438.95 L 480 -430.74 L 480 -422.53 L 480 -414.32 L 480 -406.11 L 480 -397.9 L 480 -389.69 L 480 -381.48 L 480 -373.27 L 480 -365.06 L 483.15 -359.86 L 491.24 -358.56 L 498.88 -355.61 L 505.7 -351.05 L 511.44 -345.21 L 515.87 -338.32 L 518.7 -330.63 L 519.89 -322.53 L 519.62 -314.34 L 517.81 -306.35 L 514.33 -298.93 L 509.35 -292.43 L 503.18 -287.05 L 496.02 -283.06 L 488.17 -280.72 L 480 -280 L 471.83 -280.72 L 463.98 -283.06 L 456.82 -287.05 L 450.65 -292.43 L 445.67 -298.93 L 442.19 -306.35 L 440.38 -314.34 L 440.11 -322.53 L 441.3 -330.63 L 444.13 -338.32 L 448.56 -345.21 L 454.3 -351.05 L 461.12 -355.61 L 468.76 -358.56 L 476.85 -359.86 L 480 -365.06 L 480 -373.27 L 480 -381.48 L 480 -389.69 L 480 -397.9 L 480 -406.11 L 480 -414.32 L 480 -422.53 L 480 -430.74 L 480 -438.95 L 472.87 -440.58 L 464.95 -442.68 L 457.67 -446.42 L 451.36 -451.66 L 446.21 -458.03 L 442.54 -465.36 L 440.52 -473.29 L 440 -481.48 L 440 -489.69 L 440 -497.9 L 440 -506.11 L 440 -514.32 L 440 -522.53 L 440 -530.74 L 440 -538.95 L 440 -547.16 L 440 -555.37 L 440 -563.58 L 440 -571.79 L 440 -580 L 440 -588.21 L 440 -596.42 L 440 -604.63 L 440 -612.84 L 440 -621.05 L 440 -629.26 L 440 -637.47 L 440.38 -645.66 L 442.19 -653.65 L 445.67 -661.07 L 450.65 -667.57 L 456.82 -672.95 L 463.98 -676.94 L 471.83 -679.28 Z M 480 -480 Z M 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Q 480 -320 480 -320 Z M 480 -560 Q 480 -560 480 -560 L 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 L 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 Q 480 -560 480 -560 Z"
android:valueType="pathType" />
</aapt:attr>
</target>
</animated-vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M18,2L6,2c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,4c0,-1.1 -0.9,-2 -2,-2zM9,4h2v5l-1,-0.75L9,9L9,4zM18,20L6,20L6,4h1v9l3,-2.25L13,13L13,4h5v16z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M17,15h2V7c0,-1.1 -0.9,-2 -2,-2H9v2h8v8zM7,17V1H5v4H1v2h4v10c0,1.1 0.9,2 2,2h10v4h2v-4h4v-2H7z" />
</vector>
@@ -1,18 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M7,1l-2,0l0,1.18l2,2l0,-3.18z" />
<path
android:fillColor="#000"
android:pathData="M17,7v7.18l0.82,0.82H19V7a2.0059,2.0059 0,0 0,-2 -2H9V6.18L9.82,7Z" />
<path
android:fillColor="#000"
android:pathData="M19.0001,19l-2,-2h0L2.1,2.1 0.68,3.51 2.1707,5H1V7H4.1718L5,7.8278V17a2.0059,2.0059 0,0 0,2 2h9.1778L17,19.8218V23h2V21.8207L20.49,23.31 21.9,21.9l-2.9,-2.9ZM7,17V9.8268L14.1768,17Z" />
<path
android:fillColor="#000"
android:pathData="M19.82,17l2,2l1.18,0l0,-2l-3.18,0z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z" />
<path
android:fillColor="#000"
android:pathData="M22,18l-3,0l0,-4l-2,0l0,4l-3,0l4,4z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M11.99,2C6.47,2 2,6.48 2,12C2,17.52 6.47,22 11.99,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 11.99,2zM12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4z"
android:fillColor="#000000"/>
<path
android:pathData="M18.041,12 L16.976,10.935 12.755,15.149L12.755,5.959L11.245,5.959L11.245,15.149L7.031,10.928 5.959,12l6.041,6.041z"
android:fillColor="#000000"/>
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M20,9H4v2h16V9zM4,15h16v-2H4V15z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M20.5,11H19V7c0,-1.1 -0.9,-2 -2,-2h-4V3.5C13,2.12 11.88,1 10.5,1S8,2.12 8,3.5V5H4c-1.1,0 -1.99,0.9 -1.99,2v3.8H3.5c1.49,0 2.7,1.21 2.7,2.7s-1.21,2.7 -2.7,2.7H2V20c0,1.1 0.9,2 2,2h3.8v-1.5c0,-1.49 1.21,-2.7 2.7,-2.7 1.49,0 2.7,1.21 2.7,2.7V22H17c1.1,0 2,-0.9 2,-2v-4h1.5c1.38,0 2.5,-1.12 2.5,-2.5S21.88,11 20.5,11z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M3,10C2.76,10 2.55,10.09 2.41,10.25C2.27,10.4 2.21,10.62 2.24,10.86L2.74,13.85C2.82,14.5 3.4,15 4,15H7C7.64,15 8.36,14.44 8.5,13.82L9.56,10.63C9.6,10.5 9.57,10.31 9.5,10.19C9.39,10.07 9.22,10 9,10H3M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17M15,10C14.78,10 14.61,10.07 14.5,10.19C14.42,10.31 14.4,10.5 14.45,10.7L15.46,13.75C15.64,14.44 16.36,15 17,15H20C20.59,15 21.18,14.5 21.25,13.89L21.76,10.82C21.79,10.62 21.73,10.4 21.59,10.25C21.45,10.09 21.24,10 21,10H15Z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M11,7h2v2h-2zM11,11h2v6h-2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M8,5v14l11,-7z" />
</vector>
@@ -1,15 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M17.3159,1h-10a2.0059,2.0059 0,0 0,-2 2L5.3159,21a2.0059,2.0059 0,0 0,2 2h10a2.0059,2.0059 0,0 0,2 -2L19.3159,3A2.0059,2.0059 0,0 0,17.3159 1ZM17.3159,21h-10L7.3159,3h10Z" />
<path
android:fillColor="#000"
android:pathData="M11.3083,5h2v5.5h-2z" />
<path
android:fillColor="#000"
android:pathData="M15.308,16l-2,0l0,-4.5l-2,0l0,4.5l-2,0l3,3l3,-3z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M6.9906,18L6.9906,6h12L18.9906,3a2.0059,2.0059 0,0 0,-2 -2h-10a2.0059,2.0059 0,0 0,-2 2L4.9906,21a2.0059,2.0059 0,0 0,2 2h10a2.0059,2.0059 0,0 0,2 -2L18.9906,18h-12ZM6.9906,3h10L16.9906,4h-10ZM16.9906,21h-10L6.9906,20h10Z" />
<path
android:fillColor="#000"
android:pathData="M21.7706,12.44l-0.02,0.03a3.5546,3.5546 0,0 0,0.05 -0.47,3.9031 3.9031,0 0,0 -0.05,-0.48l0.02,0.03 0.85,-0.68a0.5068,0.5068 0,0 0,0.12 -0.64l-0.84,-1.46a0.4986,0.4986 0,0 0,-0.61 -0.22l-1.01,0.39 0.0099,0.04a3.6135,3.6135 0,0 0,-0.8 -0.48l-0.17,-1.07a0.4879,0.4879 0,0 0,-0.49 -0.43h-1.68a0.4876,0.4876 0,0 0,-0.49 0.42l-0.17,1.08a3.6149,3.6149 0,0 0,-0.8 0.48l0.02,-0.03 -1.01,-0.39a0.4878,0.4878 0,0 0,-0.61 0.22l-0.84,1.46a0.5068,0.5068 0,0 0,0.12 0.64l0.85,0.68 0.02,-0.03a3.9148,3.9148 0,0 0,-0.05 0.48,3.915 3.915,0 0,0 0.05,0.48l-0.02,-0.03 -0.85,0.68a0.5068,0.5068 0,0 0,-0.12 0.64l0.84,1.46a0.4985,0.4985 0,0 0,0.61 0.22l1.01,-0.39 -0.02,-0.03a4.4991,4.4991 0,0 0,0.8 0.46l0.17,1.08a0.4876,0.4876 0,0 0,0.49 0.42h1.68a0.4876,0.4876 0,0 0,0.49 -0.42l0.17,-1.08a3.6138,3.6138 0,0 0,0.8 -0.48l-0.02,0.03 1.02,0.39a0.4879,0.4879 0,0 0,0.61 -0.22l0.84,-1.46a0.5068,0.5068 0,0 0,-0.12 -0.64ZM17.9906,14a2,2 0,1 1,2 -2A2.0059,2.0059 0,0 1,17.9906 14Z" />
</vector>
@@ -1,21 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M17.3159,18h-10L7.3159,16h-2v5a2.0059,2.0059 0,0 0,2 2h10a2.0059,2.0059 0,0 0,2 -2L19.3159,16h-2ZM17.3159,21h-10L7.3159,20h10Z" />
<path
android:fillColor="#000"
android:pathData="M7.3159,6h10L17.3159,8h2L19.3159,3a2.0059,2.0059 0,0 0,-2 -2h-10a2.0059,2.0059 0,0 0,-2 2L5.3159,8h2ZM7.3159,3h10L17.3159,4h-10Z" />
<path
android:fillColor="#000"
android:pathData="M22.311,12l-3,-3l0,2l-11.99,0l0,2l11.99,0l0,2l3,-3z" />
<path
android:fillColor="#000"
android:pathData="M2.3206,11h1.5v2h-1.5z" />
<path
android:fillColor="#000"
android:pathData="M4.8206,11h1.5v2h-1.5z" />
</vector>
@@ -1,21 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M7,6H17V8h2V3a2.0059,2.0059 0,0 0,-2 -2H7A2.0059,2.0059 0,0 0,5 3V8H7ZM7,3H17V4H7Z" />
<path
android:fillColor="#000"
android:pathData="M17,18L7,18L7,16L5,16v5a2.0059,2.0059 0,0 0,2 2L17,23a2.0059,2.0059 0,0 0,2 -2L19,16L17,16ZM17,21L7,21L7,20L17,20Z" />
<path
android:fillColor="#000"
android:pathData="M5.005,13l11.99,0l0,-2l-11.99,0l0,-2l-3,3l3,3l0,-2z" />
<path
android:fillColor="#000"
android:pathData="M20.4953,11h1.5v2h-1.5z" />
<path
android:fillColor="#000"
android:pathData="M17.9953,11h1.5v2h-1.5z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M17,1L7,1A2.0059,2.0059 0,0 0,5 3L5,21a2.0059,2.0059 0,0 0,2 2L17,23a2.0059,2.0059 0,0 0,2 -2L19,3A2.0059,2.0059 0,0 0,17 1ZM17,3v1.0462L7,4.0462L7,3ZM17,6.0462v12L7,18.0462v-12ZM7,21v-0.9538L17,20.0462L17,21Z" />
<path
android:fillColor="#000"
android:pathData="M9,13l3,3l3,-3l-2,0l0,-5l-2,0l0,5l-2,0z" />
</vector>
@@ -1,12 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M11.992,19l3,-3l-2,0l0,-11l-2,0l0,11l-2,0l3,3z" />
<path
android:fillColor="#000"
android:pathData="M17,1L7,1A2.0059,2.0059 0,0 0,5 3L5,21a2.0059,2.0059 0,0 0,2 2L17,23a2.0059,2.0059 0,0 0,2 -2L19,3A2.0059,2.0059 0,0 0,17 1ZM17,21L7,21L7,3L17,3Z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92s2.92,-1.31 2.92,-2.92c0,-1.61 -1.31,-2.92 -2.92,-2.92zM18,4c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM6,13c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1zM18,20.02c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1z"/>
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M12,16.5l4,-4h-3v-9h-2v9L8,12.5l4,4zM21,3.5h-6v1.99h6v14.03L3,19.52L3,5.49h6L9,3.5L3,3.5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2v-14c0,-1.1 -0.9,-2 -2,-2z" />
</vector>
@@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M476,540L560,456L644,540L700,484L616,400L700,316L644,260L560,344L476,260L420,316L504,400L420,484L476,540ZM320,720Q287,720 263.5,696.5Q240,673 240,640L240,160Q240,127 263.5,103.5Q287,80 320,80L800,80Q833,80 856.5,103.5Q880,127 880,160L880,640Q880,673 856.5,696.5Q833,720 800,720L320,720ZM320,640L800,640Q800,640 800,640Q800,640 800,640L800,160Q800,160 800,160Q800,160 800,160L320,160Q320,160 320,160Q320,160 320,160L320,640Q320,640 320,640Q320,640 320,640ZM160,880Q127,880 103.5,856.5Q80,833 80,800L80,240L160,240L160,800Q160,800 160,800Q160,800 160,800L720,800L720,880L160,880ZM320,160L320,160Q320,160 320,160Q320,160 320,160L320,640Q320,640 320,640Q320,640 320,640L320,640Q320,640 320,640Q320,640 320,640L320,160Q320,160 320,160Q320,160 320,160Z"/>
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFF"
android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zM13,14h-2v-4h2v4z" />
</vector>
@@ -12,12 +12,14 @@
<group
android:translateX="16"
android:translateY="16">
<group
android:scaleX="0.025"
android:scaleY="0.025"
android:translateY="24">
<path
android:fillColor="@color/accent_blue"
android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6z"/>
<path
android:fillColor="@color/accent_blue"
android:pathData="M20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM20,12l-2.5,-1.5L15,12L15,4h5v8z"/>
android:pathData="M320-240q-33 0-56.5-23.5T240-320v-480q0-33 23.5-56.5T320-880h480q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H320ZM160-80q-33 0-56.5-23.5T80-160v-520q0-17 11.5-28.5T120-720q17 0 28.5 11.5T160-680v520h520q17 0 28.5 11.5T720-120q0 17-11.5 28.5T680-80H160Zm360-475q0 12 10 17.5t20-.5l49-30q10-6 21-6t21 6l49 30q10 6 20 .5t10-17.5v-245H520v245Z" />
</group>
</group>
</vector>
</foreground>
@@ -12,9 +12,14 @@
<group
android:translateX="16"
android:translateY="16">
<group
android:scaleX="0.025"
android:scaleY="0.025"
android:translateY="24">
<path
android:fillColor="@color/accent_blue"
android:pathData="M12,10.9c-0.61,0 -1.1,0.49 -1.1,1.1s0.49,1.1 1.1,1.1c0.61,0 1.1,-0.49 1.1,-1.1s-0.49,-1.1 -1.1,-1.1zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM14.19,14.19L6,18l3.81,-8.19L18,6l-3.81,8.19z" />
android:pathData="m335-310 202-58q20-6 34.5-20.5T592-423l58-202q3-11-5.5-19.5T625-650l-202 58q-20 6-34.5 20.5T368-537l-58 202q-3 11 5.5 19.5T335-310Zm145-110q-25 0-42.5-17.5T420-480q0-25 17.5-42.5T480-540q25 0 42.5 17.5T540-480q0 25-17.5 42.5T480-420Zm0 340q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z" />
</group>
</group>
</vector>
</foreground>
@@ -12,9 +12,14 @@
<group
android:translateX="16"
android:translateY="16">
<group
android:scaleX="0.025"
android:scaleY="0.025"
android:translateY="24">
<path
android:fillColor="@color/accent_blue"
android:pathData="M13,3c-4.97,0 -9,4.03 -9,9L1,12l3.89,3.89 0.07,0.14L9,12L6,12c0,-3.87 3.13,-7 7,-7s7,3.13 7,7 -3.13,7 -7,7c-1.93,0 -3.68,-0.79 -4.94,-2.06l-1.42,1.42C8.27,19.99 10.51,21 13,21c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9zM12,8v5l4.28,2.54 0.72,-1.21 -3.5,-2.08L13.5,8L12,8z" />
android:pathData="M480-120q-126 0-223-76.5T131-392q-4-15 6-27.5t27-14.5q16-2 29 6t18 24q24 90 99 147t170 57q117 0 198.5-81.5T760-480q0-117-81.5-198.5T480-760q-69 0-129 32t-101 88h70q17 0 28.5 11.5T360-600q0 17-11.5 28.5T320-560H160q-17 0-28.5-11.5T120-600v-160q0-17 11.5-28.5T160-800q17 0 28.5 11.5T200-760v54q51-64 124.5-99T480-840q75 0 140.5 28.5t114 77q48.5 48.5 77 114T840-480q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480-120Zm40-376 100 100q11 11 11 28t-11 28q-11 11-28 11t-28-11L452-452q-6-6-9-13.5t-3-15.5v-159q0-17 11.5-28.5T480-680q17 0 28.5 11.5T520-640v144Z" />
</group>
</group>
</vector>
</foreground>
@@ -12,9 +12,14 @@
<group
android:translateX="16"
android:translateY="16">
<group
android:scaleX="0.025"
android:scaleY="0.025"
android:translateY="24">
<path
android:fillColor="@color/accent_blue"
android:pathData="M23,12l-2.44,-2.78 0.34,-3.68 -3.61,-0.82 -1.89,-3.18L12,3 8.6,1.54 6.71,4.72l-3.61,0.81 0.34,3.68L1,12l2.44,2.78 -0.34,3.69 3.61,0.82 1.89,3.18L12,21l3.4,1.46 1.89,-3.18 3.61,-0.82 -0.34,-3.68L23,12zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z" />
android:pathData="m326-90-58-98-110-24q-15-3-24-15.5t-7-27.5l11-113-75-86q-10-11-10-26t10-26l75-86-11-113q-2-15 7-27.5t24-15.5l110-24 58-98q8-13 22-17.5t28 1.5l104 44 104-44q14-6 28-1.5t22 17.5l58 98 110 24q15 3 24 15.5t7 27.5l-11 113 75 86q10 11 10 26t-10 26l-75 86 11 113q2 15-7 27.5T802-212l-110 24-58 98q-8 13-22 17.5T584-74l-104-44-104 44q-14 6-28 1.5T326-90Zm182.5-201.5Q520-303 520-320t-11.5-28.5Q497-360 480-360t-28.5 11.5Q440-337 440-320t11.5 28.5Q463-280 480-280t28.5-11.5Zm0-160Q520-463 520-480v-160q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640v160q0 17 11.5 28.5T480-440q17 0 28.5-11.5Z" />
</group>
</group>
</vector>
</foreground>
+1 -1
View File
@@ -34,7 +34,7 @@
android:paddingHorizontal="10dp"
android:paddingVertical="8dp"
android:scaleType="center"
app:srcCompat="@drawable/ic_drag_handle_24dp"
app:srcCompat="@drawable/rounded_drag_handle"
app:tint="?android:attr/textColorHint"
tools:ignore="ContentDescription" />
+2 -2
View File
@@ -25,7 +25,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_drag_handle_24dp"
app:srcCompat="@drawable/rounded_drag_handle"
app:tint="?android:attr/textColorHint"
tools:ignore="ContentDescription" />
@@ -96,7 +96,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_overflow_24dp"
app:srcCompat="@drawable/rounded_more_vert"
app:tint="?attr/colorOnBackground" />
</androidx.constraintlayout.widget.ConstraintLayout>
+11
View File
@@ -27,6 +27,7 @@ spotless {
dependencies {
compileOnly(gradleKotlinDsl())
compileOnly(libs.android.gradle)
compileOnly(libs.android.gradle.runtimeDependency("sdk-common"))
compileOnly(libs.kotlin.compose.compiler.gradle)
compileOnly(libs.kotlin.gradle)
implementation(libs.spotless.gradle)
@@ -73,3 +74,13 @@ gradlePlugin {
}
}
}
fun Provider<MinimalExternalModuleDependency>.runtimeDependency(name: String): Provider<String> = map { dependency ->
configurations.detachedConfiguration(dependencies.create(dependency))
.attributes { attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) }
.incoming.resolutionResult.allComponents
.firstOrNull { it.moduleVersion?.name == name }
?.moduleVersion
?.toString()
?: error("${dependency.module} has no runtime dependency named $name")
}
@@ -21,6 +21,26 @@ class PluginSpotless : Plugin<Project> {
ktlint(ktlintVersion)
trimTrailingWhitespace()
endWithNewline()
forbidRegex(
"materialSymbolsRImport",
"(?m)^import mihon\\.icons\\.materialsymbols\\.R(?! as MaterialSymbolsR$)\\b.*$",
"Import mihon.icons.materialsymbols.R as MaterialSymbolsR",
)
forbidRegex(
"materialSymbolsRQualified",
"(?m)^(?!import ).*\\bmihon\\.icons\\.materialsymbols\\.R\\.",
"Use the MaterialSymbolsR import alias instead of the qualified name",
)
forbidRegex(
"customMaterialSymbolsRImport",
"(?m)^import mihon\\.icons\\.custommaterialsymbols\\.R(?! as CustomMaterialSymbolsR$)\\b.*$",
"Import mihon.icons.custommaterialsymbols.R as CustomMaterialSymbolsR",
)
forbidRegex(
"customMaterialSymbolsRQualified",
"(?m)^(?!import ).*\\bmihon\\.icons\\.custommaterialsymbols\\.R\\.",
"Use the CustomMaterialSymbolsR import alias instead of the qualified name",
)
}
kotlinGradle {
@@ -0,0 +1,49 @@
package mihon.gradle.tasks
import com.android.ide.common.vectordrawable.Svg2Vector
import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction
import java.io.ByteArrayOutputStream
abstract class GenerateVectorDrawablesTask : DefaultTask() {
@get:InputFiles
@get:PathSensitive(PathSensitivity.RELATIVE)
abstract val svgFiles: ConfigurableFileCollection
@get:OutputDirectory
abstract val outputDir: DirectoryProperty
@TaskAction
fun action() {
val drawableDir = outputDir.get().dir("drawable").asFile.apply {
deleteRecursively()
mkdirs()
}
svgFiles.forEach { svg ->
val output = ByteArrayOutputStream()
val error = Svg2Vector.parseSvgToXml(svg.toPath(), output)
check(error.isEmpty()) { "${svg.name}: $error" }
val folder = svg.parentFile.name
var content = output.toString(Charsets.UTF_8).replace(blackFill, "@android:color/white")
if (folder.startsWith("autoMirrored")) {
content = content.replaceFirst("<vector ", "<vector android:autoMirrored=\"true\" ")
}
val name = "${folder.replace(upperCase) { "_" + it.value.lowercase() }}_${svg.nameWithoutExtension}"
drawableDir.resolve("$name.xml").writeText(content)
}
}
private companion object {
val blackFill = "#FF000000"
val upperCase = "[A-Z]".toRegex()
}
}
@@ -0,0 +1,44 @@
plugins {
alias(mihonx.plugins.android.library)
alias(mihonx.plugins.compose)
alias(mihonx.plugins.spotless)
alias(libs.plugins.valkyrie)
}
android {
namespace = "mihon.icons.custommaterialsymbols"
}
spotless {
format("svg") {
target("src/**/*.svg")
trimTrailingWhitespace()
endWithNewline()
}
}
valkyrie {
packageName = "mihon.icons.custommaterialsymbols"
generateAtSync = true
imageVector {
suppressUnusedReceiverWarning = true
}
iconPack {
name = "CustomMaterialSymbols"
targetSourceSet = "main"
nested {
name = "Rounded"
sourceFolder = "rounded"
autoMirror = false
}
}
}
dependencies {
api(libs.androidx.compose.ui)
}
@@ -0,0 +1,8 @@
<!--
Custom Material Symbols Rounded 'crop_off'.
Crop from Material Symbols Rounded 'crop'.
Off slash drawn at the Material Symbols stroke weight; it joins the lower-left arms and is cut clear on its upper-right side.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M240 -920Q223 -920 211.5 -908.5Q200 -897 200 -880L200 -873.1L280 -793.1L280 -880Q280 -897 268.5 -908.5Q257 -920 240 -920ZM280 -793.1L280 -793.1L280 -793.1L280 -793.1ZM360 -760L360 -713.1L360 -713.1L393.1 -680L680 -680L680 -393.1L713.1 -360L760 -360L760 -680Q760 -713 736.5 -736.5Q713 -760 680 -760ZM280 -623.4L623.4 -280L280 -280L280 -623.4ZM793.1 -280L873.1 -200L880 -200Q897 -200 908.5 -211.5Q920 -223 920 -240Q920 -257 908.5 -268.5Q897 -280 880 -280ZM120 -880C109.8 -880 99.5 -876.1 91.7 -868.3C76.1 -852.7 76.1 -827.3 91.7 -811.7L143.4 -760L80 -760Q63 -760 51.5 -748.5Q40 -737 40 -720Q40 -703 51.5 -691.5Q63 -680 80 -680L200 -680L200 -280Q200 -247 223.5 -223.5Q247 -200 280 -200L680 -200L680 -80Q680 -63 691.5 -51.5Q703 -40 720 -40Q737 -40 748.5 -51.5Q760 -63 760 -80L760 -143.4L811.7 -91.7C819.5 -83.9 829.8 -80 840 -80C850.2 -80 860.5 -83.9 868.3 -91.7C883.9 -107.3 883.9 -132.7 868.3 -148.3L148.3 -868.3C140.5 -876.1 130.2 -880 120 -880Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,7 @@
<!--
Custom Material Symbols Rounded 'done_previous'.
Check and arrow drawn at the Material Symbols stroke weight, following the layout of the former ic_done_prev icon.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M790 -730C779.8 -730 769.5 -726.1 761.7 -718.3L360 -316.6L360 -316.6L198.3 -478.3C190.5 -486.1 180.2 -490 170 -490C159.8 -490 149.5 -486.1 141.7 -478.3C126.1 -462.7 126.1 -437.3 141.7 -421.7L331.7 -231.7C339.5 -223.9 349.8 -220 360 -220C370.2 -220 380.5 -223.9 388.3 -231.7L818.3 -661.7C833.9 -677.3 833.9 -702.7 818.3 -718.3C810.5 -726.1 800.2 -730 790 -730ZM720 -420C697.9 -420 680 -402.1 680 -380L680 -226.6L628.3 -278.3C620.5 -286.1 610.2 -290 600 -290C589.8 -290 579.5 -286.1 571.7 -278.3C556.1 -262.7 556.1 -237.3 571.7 -221.7L691.7 -101.7L691.7 -101.7C691.8 -101.7 691.8 -101.6 691.8 -101.6L691.8 -101.6C695.6 -97.8 700 -95 704.7 -93L704.7 -93C709.4 -91.1 714.6 -90 720 -90C725.4 -90 730.6 -91.1 735.3 -93L735.3 -93C740 -95 744.4 -97.8 748.2 -101.6L748.2 -101.6C748.2 -101.6 748.2 -101.7 748.3 -101.7L748.3 -101.7L868.3 -221.7C883.9 -237.3 883.9 -262.7 868.3 -278.3C860.5 -286.1 850.2 -290 840 -290C829.8 -290 819.5 -286.1 811.7 -278.3L760 -226.6L760 -380C760 -402.1 742.1 -420 720 -420Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,7 @@
<!--
Custom Material Symbols Rounded 'download_arrow'.
Arrow from Material Symbols Rounded 'downloading'.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M479 -680Q462 -680 450.5 -668.5Q439 -657 439 -640L439 -435L364 -511Q352 -523 335.5 -523Q319 -523 307 -511Q295 -499 294.5 -482.5Q294 -466 306 -454L451 -308Q462 -297 479 -297Q496 -297 507 -308L650 -451Q662 -463 662.5 -480Q663 -497 651 -509Q639 -521 622 -521Q605 -521 593 -509L519 -435L519 -640Q519 -657 507.5 -668.5Q496 -680 479 -680Z"/></svg>

After

Width:  |  Height:  |  Size: 618 B

@@ -0,0 +1,8 @@
<!--
Custom Material Symbols Rounded 'download_circle'.
Ring from Material Symbols Rounded 'arrow_circle_down'.
Arrow from Material Symbols Rounded 'downloading'.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M479 -680Q462 -680 450.5 -668.5Q439 -657 439 -640L439 -435L364 -511Q352 -523 335.5 -523Q319 -523 307 -511Q295 -499 294.5 -482.5Q294 -466 306 -454L451 -308Q462 -297 479 -297Q496 -297 507 -308L650 -451Q662 -463 662.5 -480Q663 -497 651 -509Q639 -521 622 -521Q605 -521 593 -509L519 -435L519 -640Q519 -657 507.5 -668.5Q496 -680 479 -680ZM480 -810C662.3 -810 810 -662.3 810 -480C810 -297.7 662.3 -150 480 -150C297.7 -150 150 -297.7 150 -480C150 -662.3 297.7 -810 480 -810ZM480 -880Q397 -880 324 -848.5Q251 -817 197 -763Q143 -709 111.5 -636Q80 -563 80 -480Q80 -397 111.5 -324Q143 -251 197 -197Q251 -143 324 -111.5Q397 -80 480 -80Q563 -80 636 -111.5Q709 -143 763 -197Q817 -251 848.5 -324Q880 -397 880 -480Q880 -563 848.5 -636Q817 -709 763 -763Q709 -817 636 -848.5Q563 -880 480 -880Z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,9 @@
<!--
Custom Material Symbols Rounded 'reader_left_to_right'.
Frame from Material Symbols Rounded 'mobile_gear'.
Arrow from Material Symbols Rounded 'mobile_arrow_right', moved left so its tail runs into the frame.
Page edge drawn at the Material Symbols stroke weight.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M600 -660C577.9 -660 560 -642.1 560 -620L560 -340C560 -317.9 577.9 -300 600 -300C622.1 -300 640 -317.9 640 -340L640 -620C640 -642.1 622.1 -660 600 -660ZM680 -840L680 -120L280 -120L280 -440L383 -440L348 -404Q337 -393 337 -376.5Q337 -360 349 -348Q360 -337 377 -337Q394 -337 405 -348L509 -452Q515 -458 517.5 -465Q520 -472 520 -480Q520 -488 517.5 -495Q515 -502 509 -508L405 -612Q394 -623 377.5 -623.5Q376.8 -623.5 376.2 -623.5Q360.5 -623.5 349 -612Q338 -601 337.5 -584.5Q337 -568 348 -556L383 -520L280 -520L280 -840ZM280 -920Q247 -920 223.5 -896.5Q200 -873 200 -840L200 -120Q200 -87 223.5 -63.5Q247 -40 280 -40L680 -40Q713 -40 736.5 -63.5Q760 -87 760 -120L760 -524Q778 -531 789 -546Q800 -561 800 -580L800 -660Q800 -679 789 -694Q778 -709 760 -716L760 -840Q760 -873 736.5 -896.5Q713 -920 680 -920Z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,8 @@
<!--
Custom Material Symbols Rounded 'reader_long_strip'.
Frame from Material Symbols Rounded 'mobile_gear'.
Full-height arrow drawn at the Material Symbols stroke weight.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480 -800C457.9 -800 440 -782.1 440 -760L440 -316.6L440 -316.6L440 -316.6L440 -316.6L408.3 -348.3C400.5 -356.1 390.2 -360 380 -360C369.8 -360 359.5 -356.1 351.7 -348.3C336.1 -332.7 336.1 -307.3 351.7 -291.7L451.7 -191.7C451.7 -191.7 451.8 -191.7 451.8 -191.6L451.8 -191.6C455.6 -187.8 460 -185 464.7 -183L464.7 -183C469.4 -181.1 474.6 -180 480 -180C485.4 -180 490.6 -181.1 495.3 -183L495.3 -183C500 -185 504.4 -187.8 508.2 -191.6L508.2 -191.6C508.2 -191.7 508.3 -191.7 508.3 -191.7L608.3 -291.7C623.9 -307.3 623.9 -332.7 608.3 -348.3C600.5 -356.1 590.2 -360 580 -360C569.8 -360 559.5 -356.1 551.7 -348.3L520 -316.6L520 -760C520 -782.1 502.1 -800 480 -800ZM680 -840L680 -120L280 -120L280 -840ZM280 -920Q247 -920 223.5 -896.5Q200 -873 200 -840L200 -120Q200 -87 223.5 -63.5Q247 -40 280 -40L680 -40Q713 -40 736.5 -63.5Q760 -87 760 -120L760 -524Q778 -531 789 -546Q800 -561 800 -580L800 -660Q800 -679 789 -694Q778 -709 760 -716L760 -840Q760 -873 736.5 -896.5Q713 -920 680 -920Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,8 @@
<!--
Custom Material Symbols Rounded 'reader_long_strip_gaps'.
Frame from Material Symbols Rounded 'mobile_gear'.
Full-height arrow with a gap, drawn at the Material Symbols stroke weight.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480 -800C457.9 -800 440 -782.1 440 -760L440 -600C440 -577.9 457.9 -560 480 -560C502.1 -560 520 -577.9 520 -600L520 -760C520 -782.1 502.1 -800 480 -800ZM480 -510C457.9 -510 440 -492.1 440 -470L440 -316.6L408.3 -348.3C400.5 -356.1 390.2 -360 380 -360C369.8 -360 359.5 -356.1 351.7 -348.3C336.1 -332.7 336.1 -307.3 351.7 -291.7L451.7 -191.7C451.7 -191.7 451.8 -191.7 451.8 -191.6L451.8 -191.6C455.6 -187.8 460 -185 464.7 -183L464.7 -183C469.4 -181.1 474.6 -180 480 -180C485.4 -180 490.6 -181.1 495.3 -183L495.3 -183C500 -185 504.4 -187.8 508.2 -191.6L508.2 -191.6C508.2 -191.7 508.3 -191.7 508.3 -191.7L608.3 -291.7C623.9 -307.3 623.9 -332.7 608.3 -348.3C600.5 -356.1 590.2 -360 580 -360C569.8 -360 559.5 -356.1 551.7 -348.3L520 -316.6L520 -470C520 -492.1 502.1 -510 480 -510ZM680 -840L680 -120L280 -120L280 -840ZM280 -920Q247 -920 223.5 -896.5Q200 -873 200 -840L200 -120Q200 -87 223.5 -63.5Q247 -40 280 -40L680 -40Q713 -40 736.5 -63.5Q760 -87 760 -120L760 -524Q778 -531 789 -546Q800 -561 800 -580L800 -660Q800 -679 789 -694Q778 -709 760 -716L760 -840Q760 -873 736.5 -896.5Q713 -920 680 -920Z"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,10 @@
<!--
Custom Material Symbols Rounded 'reader_right_to_left'.
Mirror of 'reader_left_to_right' inside the frame; the frame keeps its side button on the right.
Frame from Material Symbols Rounded 'mobile_gear'.
Arrow from Material Symbols Rounded 'mobile_arrow_right', mirrored.
Page edge drawn at the Material Symbols stroke weight.
Copyright (C) Google LLC
SPDX-License-Identifier: Apache-2.0
-->
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M360 -660C337.9 -660 320 -642.1 320 -620L320 -340C320 -317.9 337.9 -300 360 -300C382.1 -300 400 -317.9 400 -340L400 -620C400 -642.1 382.1 -660 360 -660ZM680 -840L680 -520L577 -520L612 -556Q623 -568 622.5 -584.5Q622 -601 611 -612Q599.5 -623.5 583.8 -623.5Q583.2 -623.5 582.5 -623.5Q566 -623 555 -612L451 -508Q445 -502 442.5 -495Q440 -488 440 -480Q440 -472 442.5 -465Q445 -458 451 -452L555 -348Q566 -337 583 -337Q600 -337 611 -348Q623 -360 623 -376.5Q623 -393 612 -404L577 -440L680 -440L680 -120L280 -120L280 -840ZM280 -920Q247 -920 223.5 -896.5Q200 -873 200 -840L200 -120Q200 -87 223.5 -63.5Q247 -40 280 -40L680 -40Q713 -40 736.5 -63.5Q760 -87 760 -120L760 -524Q778 -531 789 -546Q800 -561 800 -580L800 -660Q800 -679 789 -694Q778 -709 760 -716L760 -840Q760 -873 736.5 -896.5Q713 -920 680 -920Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Some files were not shown because too many files have changed in this diff Show More