AboutScreen: Smaller Brand Icon + New Badges section (links to contact me) + New "What's new" option (sends user to the latest release page).
This commit is contained in:
parent
ebc1a83f4f
commit
ae6596f237
12 changed files with 335 additions and 25 deletions
|
|
@ -0,0 +1,15 @@
|
||||||
|
package ua.acclorite.book_story.domain.model
|
||||||
|
|
||||||
|
import androidx.annotation.DrawableRes
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import androidx.compose.runtime.Immutable
|
||||||
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
|
|
||||||
|
@Immutable
|
||||||
|
data class Badge(
|
||||||
|
val id: String,
|
||||||
|
val imageVector: ImageVector?,
|
||||||
|
@DrawableRes val drawable: Int?,
|
||||||
|
@StringRes val contentDescription: Int,
|
||||||
|
val url: String?
|
||||||
|
)
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
package ua.acclorite.book_story.domain.util
|
package ua.acclorite.book_story.domain.util
|
||||||
|
|
||||||
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.filled.Person
|
||||||
import androidx.compose.ui.text.font.Font
|
import androidx.compose.ui.text.font.Font
|
||||||
import androidx.compose.ui.text.font.FontFamily
|
import androidx.compose.ui.text.font.FontFamily
|
||||||
import androidx.compose.ui.text.font.FontStyle
|
import androidx.compose.ui.text.font.FontStyle
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
|
import ua.acclorite.book_story.domain.model.Badge
|
||||||
import ua.acclorite.book_story.domain.model.Book
|
import ua.acclorite.book_story.domain.model.Book
|
||||||
import ua.acclorite.book_story.domain.model.Category
|
import ua.acclorite.book_story.domain.model.Category
|
||||||
import ua.acclorite.book_story.domain.model.Credit
|
import ua.acclorite.book_story.domain.model.Credit
|
||||||
|
|
@ -110,6 +113,45 @@ object Constants {
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// About Badges
|
||||||
|
val ABOUT_BADGES = listOf(
|
||||||
|
Badge(
|
||||||
|
id = "x",
|
||||||
|
drawable = R.drawable.x_logo,
|
||||||
|
imageVector = null,
|
||||||
|
contentDescription = R.string.x_content_desc,
|
||||||
|
url = "https://www.x.com/acclorite"
|
||||||
|
),
|
||||||
|
Badge(
|
||||||
|
id = "reddit",
|
||||||
|
drawable = R.drawable.reddit,
|
||||||
|
imageVector = null,
|
||||||
|
contentDescription = R.string.reddit_content_desc,
|
||||||
|
url = "https://www.reddit.com/user/Acclorite/"
|
||||||
|
),
|
||||||
|
Badge(
|
||||||
|
id = "tryzub",
|
||||||
|
drawable = R.drawable.tryzub,
|
||||||
|
imageVector = null,
|
||||||
|
contentDescription = R.string.tryzub_content_desc,
|
||||||
|
url = null
|
||||||
|
),
|
||||||
|
Badge(
|
||||||
|
id = "github_project",
|
||||||
|
drawable = R.drawable.github,
|
||||||
|
imageVector = null,
|
||||||
|
contentDescription = R.string.github_project_content_desc,
|
||||||
|
url = "https://www.github.com/Acclorite/book-story"
|
||||||
|
),
|
||||||
|
Badge(
|
||||||
|
id = "github_profile",
|
||||||
|
drawable = null,
|
||||||
|
imageVector = Icons.Default.Person,
|
||||||
|
contentDescription = R.string.github_profile_content_desc,
|
||||||
|
url = "https://www.github.com/Acclorite"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
// Fonts for Reader
|
// Fonts for Reader
|
||||||
val FONTS = listOf(
|
val FONTS = listOf(
|
||||||
FontWithName(
|
FontWithName(
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ua.acclorite.book_story.presentation.components
|
package ua.acclorite.book_story.presentation.components
|
||||||
|
|
||||||
|
import androidx.annotation.DrawableRes
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.IconButton
|
import androidx.compose.material3.IconButton
|
||||||
|
|
@ -13,10 +14,20 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.focus.focusProperties
|
import androidx.compose.ui.focus.focusProperties
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.vector.ImageVector
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom Icon Button. Can be disabled after click, so user can't press button fast 2 or 3 times.
|
* Custom Icon Button.
|
||||||
|
* Can be disabled after click, so user can't press button fast 2 or 3 times.
|
||||||
|
*
|
||||||
|
* @param modifier [Modifier].
|
||||||
|
* @param icon ImageVector Icon.
|
||||||
|
* @param contentDescription Content description (tooltip text).
|
||||||
|
* @param disableOnClick Whether button disables after first click.
|
||||||
|
* @param enabled Whether button enabled.
|
||||||
|
* @param color Color of the Icon.
|
||||||
|
* @param onClick OnClick callback.
|
||||||
*/
|
*/
|
||||||
@Composable
|
@Composable
|
||||||
fun CustomIconButton(
|
fun CustomIconButton(
|
||||||
|
|
@ -51,3 +62,49 @@ fun CustomIconButton(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom Icon Button.
|
||||||
|
* Can be disabled after click, so user can't press button fast 2 or 3 times.
|
||||||
|
*
|
||||||
|
* @param modifier [Modifier].
|
||||||
|
* @param icon Drawable Icon.
|
||||||
|
* @param contentDescription Content description (tooltip text).
|
||||||
|
* @param disableOnClick Whether button disables after first click.
|
||||||
|
* @param enabled Whether button enabled.
|
||||||
|
* @param color Color of the Icon.
|
||||||
|
* @param onClick OnClick callback.
|
||||||
|
*/
|
||||||
|
@Composable
|
||||||
|
fun CustomIconButton(
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
@DrawableRes icon: Int,
|
||||||
|
@StringRes contentDescription: Int,
|
||||||
|
disableOnClick: Boolean,
|
||||||
|
enabled: Boolean = true,
|
||||||
|
color: Color = LocalContentColor.current,
|
||||||
|
onClick: () -> Unit
|
||||||
|
) {
|
||||||
|
var isClicked by remember { mutableStateOf(false) }
|
||||||
|
CustomTooltip(text = stringResource(id = contentDescription)) {
|
||||||
|
IconButton(
|
||||||
|
enabled = enabled && !isClicked,
|
||||||
|
modifier = Modifier.focusProperties {
|
||||||
|
canFocus = false
|
||||||
|
},
|
||||||
|
onClick = {
|
||||||
|
if (disableOnClick) {
|
||||||
|
isClicked = true
|
||||||
|
}
|
||||||
|
onClick()
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(id = icon),
|
||||||
|
modifier = modifier,
|
||||||
|
contentDescription = stringResource(id = contentDescription),
|
||||||
|
tint = color
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -40,6 +40,7 @@ import ua.acclorite.book_story.presentation.data.LocalNavigator
|
||||||
import ua.acclorite.book_story.presentation.data.Screen
|
import ua.acclorite.book_story.presentation.data.Screen
|
||||||
import ua.acclorite.book_story.presentation.screens.about.components.AboutItem
|
import ua.acclorite.book_story.presentation.screens.about.components.AboutItem
|
||||||
import ua.acclorite.book_story.presentation.screens.about.components.AboutUpdateDialog
|
import ua.acclorite.book_story.presentation.screens.about.components.AboutUpdateDialog
|
||||||
|
import ua.acclorite.book_story.presentation.screens.about.components.badges.AboutBadges
|
||||||
import ua.acclorite.book_story.presentation.screens.about.data.AboutEvent
|
import ua.acclorite.book_story.presentation.screens.about.data.AboutEvent
|
||||||
import ua.acclorite.book_story.presentation.screens.about.data.AboutState
|
import ua.acclorite.book_story.presentation.screens.about.data.AboutState
|
||||||
import ua.acclorite.book_story.presentation.screens.about.data.AboutViewModel
|
import ua.acclorite.book_story.presentation.screens.about.data.AboutViewModel
|
||||||
|
|
@ -117,7 +118,7 @@ private fun AboutScreen(
|
||||||
contentDescription = stringResource(id = R.string.app_icon_content_desc),
|
contentDescription = stringResource(id = R.string.app_icon_content_desc),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(14.dp)
|
.padding(14.dp)
|
||||||
.size(160.dp),
|
.size(120.dp),
|
||||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -190,12 +191,12 @@ private fun AboutScreen(
|
||||||
|
|
||||||
item {
|
item {
|
||||||
AboutItem(
|
AboutItem(
|
||||||
title = stringResource(id = R.string.project_page_option),
|
title = stringResource(id = R.string.whats_new_option),
|
||||||
description = null
|
description = null
|
||||||
) {
|
) {
|
||||||
onEvent(
|
onEvent(
|
||||||
AboutEvent.OnNavigateToBrowserPage(
|
AboutEvent.OnNavigateToBrowserPage(
|
||||||
context.getString(R.string.project_page),
|
context.getString(R.string.releases_page),
|
||||||
context,
|
context,
|
||||||
noAppsFound = {
|
noAppsFound = {
|
||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
|
|
@ -253,19 +254,8 @@ private fun AboutScreen(
|
||||||
}
|
}
|
||||||
|
|
||||||
item {
|
item {
|
||||||
AboutItem(
|
AboutBadges(onEvent = onEvent)
|
||||||
title = stringResource(id = R.string.slava_ukraini_option),
|
|
||||||
description = null
|
|
||||||
) {
|
|
||||||
Toast.makeText(
|
|
||||||
context,
|
|
||||||
context.getString(R.string.slava_ukraini_option_desc),
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item { Spacer(modifier = Modifier.height(48.dp)) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
package ua.acclorite.book_story.presentation.screens.about.components.badges
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import ua.acclorite.book_story.domain.model.Badge
|
||||||
|
import ua.acclorite.book_story.presentation.components.CustomIconButton
|
||||||
|
|
||||||
|
/**
|
||||||
|
* About Badge Item.
|
||||||
|
*
|
||||||
|
* @param badge [Badge].
|
||||||
|
* @param onClick OnClick callback.
|
||||||
|
*/
|
||||||
|
@Composable
|
||||||
|
fun AboutBadgeItem(
|
||||||
|
badge: Badge,
|
||||||
|
onClick: () -> Unit
|
||||||
|
) {
|
||||||
|
if (badge.imageVector == null && badge.drawable != null) {
|
||||||
|
CustomIconButton(
|
||||||
|
modifier = Modifier.size(22.dp),
|
||||||
|
icon = badge.drawable,
|
||||||
|
contentDescription = badge.contentDescription,
|
||||||
|
disableOnClick = false,
|
||||||
|
color = MaterialTheme.colorScheme.primary
|
||||||
|
) {
|
||||||
|
onClick()
|
||||||
|
}
|
||||||
|
} else if (badge.imageVector != null && badge.drawable == null) {
|
||||||
|
CustomIconButton(
|
||||||
|
modifier = Modifier.size(22.dp),
|
||||||
|
icon = badge.imageVector,
|
||||||
|
contentDescription = badge.contentDescription,
|
||||||
|
disableOnClick = false,
|
||||||
|
color = MaterialTheme.colorScheme.primary
|
||||||
|
) {
|
||||||
|
onClick()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
package ua.acclorite.book_story.presentation.screens.about.components.badges
|
||||||
|
|
||||||
|
import android.widget.Toast
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.unit.Dp
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
import ua.acclorite.book_story.domain.util.Constants
|
||||||
|
import ua.acclorite.book_story.presentation.components.customItems
|
||||||
|
import ua.acclorite.book_story.presentation.screens.about.data.AboutEvent
|
||||||
|
|
||||||
|
/**
|
||||||
|
* About Badges.
|
||||||
|
* Links all ways to contact me.
|
||||||
|
*
|
||||||
|
* @param onEvent [AboutEvent] callback.
|
||||||
|
* @param verticalPadding Vertical item padding.
|
||||||
|
*/
|
||||||
|
@Composable
|
||||||
|
fun AboutBadges(
|
||||||
|
onEvent: (AboutEvent) -> Unit,
|
||||||
|
verticalPadding: Dp = 18.dp
|
||||||
|
) {
|
||||||
|
val context = LocalContext.current
|
||||||
|
|
||||||
|
Box(
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
contentAlignment = Alignment.Center
|
||||||
|
) {
|
||||||
|
LazyRow(
|
||||||
|
Modifier
|
||||||
|
.padding(horizontal = 18.dp, vertical = verticalPadding),
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
horizontalArrangement = Arrangement.spacedBy(13.dp)
|
||||||
|
) {
|
||||||
|
customItems(Constants.ABOUT_BADGES, key = { it.id }) { badge ->
|
||||||
|
AboutBadgeItem(badge = badge) {
|
||||||
|
when (badge.id) {
|
||||||
|
"tryzub" -> {
|
||||||
|
Toast.makeText(
|
||||||
|
context,
|
||||||
|
context.getString(R.string.slava_ukraini),
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> {
|
||||||
|
badge.url?.let {
|
||||||
|
onEvent(
|
||||||
|
AboutEvent.OnNavigateToBrowserPage(
|
||||||
|
it,
|
||||||
|
context,
|
||||||
|
noAppsFound = {
|
||||||
|
Toast.makeText(
|
||||||
|
context,
|
||||||
|
context.getString(R.string.error_no_browser),
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
14
app/src/main/res/drawable/github.xml
Normal file
14
app/src/main/res/drawable/github.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportHeight="1024"
|
||||||
|
android:viewportWidth="1024"
|
||||||
|
android:width="24dp">
|
||||||
|
|
||||||
|
<path
|
||||||
|
android:fillColor="#e8eaed"
|
||||||
|
android:fillType="evenOdd"
|
||||||
|
android:pathData="M512,0C229.1,0 0,229.1 0,512C0,738.6 146.6,929.9 350.1,997.8C375.7,1002.2 385.3,986.9 385.3,973.4C385.3,961.3 384.6,921 384.6,878.1C256,901.8 222.7,846.7 212.5,817.9C206.7,803.2 181.8,757.8 160,745.6C142.1,736 116.5,712.3 159.4,711.7C199.7,711 228.5,748.8 238.1,764.2C284.2,841.6 357.8,819.8 387.2,806.4C391.7,773.1 405.1,750.7 419.8,737.9C305.9,725.1 186.9,681 186.9,485.1C186.9,429.4 206.7,383.4 239.4,347.5C234.2,334.7 216.3,282.2 244.5,211.8C244.5,211.8 287.4,198.4 385.3,264.3C426.2,252.8 469.8,247 513.3,247C556.8,247 600.3,252.8 641.3,264.3C739.2,197.8 782.1,211.8 782.1,211.8C810.2,282.2 792.3,334.7 787.2,347.5C819.8,383.4 839.7,428.8 839.7,485.1C839.7,681.6 720,725.1 606.1,737.9C624.6,753.9 640.6,784.6 640.6,832.6C640.6,901.1 640,956.2 640,973.4C640,986.9 649.6,1002.9 675.2,997.8C877.4,929.9 1024,737.9 1024,512C1024,229.1 794.9,0 512,0Z"
|
||||||
|
tools:ignore="VectorPath" />
|
||||||
|
|
||||||
|
</vector>
|
||||||
45
app/src/main/res/drawable/reddit.xml
Normal file
45
app/src/main/res/drawable/reddit.xml
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportHeight="256"
|
||||||
|
android:viewportWidth="256"
|
||||||
|
android:width="24dp">
|
||||||
|
|
||||||
|
<path
|
||||||
|
android:fillColor="#e8eaed"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData="M111.07,140.52c0,-6.98 -5.69,-12.67 -12.67,-12.67c-6.98,0 -12.67,5.69 -12.67,12.67c0,6.98 5.66,12.6 12.67,12.67C105.38,153.19 111.07,147.5 111.07,140.52z"
|
||||||
|
android:strokeColor="#00000000"
|
||||||
|
android:strokeLineCap="butt"
|
||||||
|
android:strokeLineJoin="miter"
|
||||||
|
android:strokeWidth="2.81" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
android:fillColor="#e8eaed"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData="M154.26,170.73c-7.7,5.5 -17,8.2 -26.43,7.7c-9.43,0.44 -18.7,-2.39 -26.31,-7.95c-1.29,-1.04 -3.08,-1.04 -4.34,0c-1.45,1.19 -1.67,3.36 -0.47,4.81c8.99,6.76 19.99,10.22 31.24,9.75c11.25,0.47 22.26,-2.99 31.24,-9.75l0,0.5c1.38,-1.35 1.41,-3.61 0.06,-5C157.9,169.41 155.64,169.38 154.26,170.73z"
|
||||||
|
android:strokeColor="#00000000"
|
||||||
|
android:strokeLineCap="butt"
|
||||||
|
android:strokeLineJoin="miter"
|
||||||
|
android:strokeWidth="2.81" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
android:fillColor="#e8eaed"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData="M156.93,128.29c-6.98,0 -12.67,5.69 -12.67,12.67c0,6.98 5.69,12.67 12.67,12.67l-0.1,0.47c0.22,0 0.41,0 0.63,0c6.98,-0.28 12.41,-6.16 12.13,-13.14C169.6,133.99 163.91,128.29 156.93,128.29z"
|
||||||
|
android:strokeColor="#00000000"
|
||||||
|
android:strokeLineCap="butt"
|
||||||
|
android:strokeLineJoin="miter"
|
||||||
|
android:strokeWidth="2.81" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
android:fillColor="#e8eaed"
|
||||||
|
android:fillType="nonZero"
|
||||||
|
android:pathData="M127.86,1.41C58.02,1.41 1.41,58.02 1.41,127.86c0,69.84 56.61,126.45 126.45,126.45c69.84,0 126.45,-56.61 126.45,-126.45C254.31,58.02 197.69,1.41 127.86,1.41zM201.97,144.67c0.13,1.85 0.13,3.71 0,5.56c0,28.35 -33,51.36 -73.71,51.36s-73.71,-23.04 -73.71,-51.36c-0.13,-1.85 -0.13,-3.71 0,-5.56c-1.85,-0.82 -3.52,-1.98 -4.97,-3.33c-7.45,-6.98 -7.79,-18.67 -0.82,-26.09c6.98,-7.45 18.67,-7.79 26.09,-0.82c14.58,-9.87 31.71,-15.28 49.32,-15.56l9.33,-43.88c0,-0.03 0,-0.03 0,-0.06c0.47,-2.14 2.58,-3.46 4.68,-2.99l30.99,6.19c1.98,-3.46 5.56,-5.79 9.55,-6.19c6.95,-0.76 13.17,4.27 13.92,11.22s-4.27,13.17 -11.22,13.92c-6.95,0.76 -13.17,-4.27 -13.92,-11.22l-27.06,-5.69l-8.2,39.45c17.38,0.38 34.29,5.75 48.69,15.56c3.27,-3.11 7.57,-4.97 12.1,-5.12c10.21,-0.35 18.77,7.61 19.14,17.79C212.31,134.96 208.32,141.5 201.97,144.67z"
|
||||||
|
android:strokeColor="#00000000"
|
||||||
|
android:strokeLineCap="butt"
|
||||||
|
android:strokeLineJoin="miter"
|
||||||
|
android:strokeWidth="2.81"
|
||||||
|
tools:ignore="VectorPath" />
|
||||||
|
|
||||||
|
</vector>
|
||||||
13
app/src/main/res/drawable/tryzub.xml
Normal file
13
app/src/main/res/drawable/tryzub.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:height="39.867767dp"
|
||||||
|
android:viewportHeight="402"
|
||||||
|
android:viewportWidth="242"
|
||||||
|
android:width="24dp">
|
||||||
|
|
||||||
|
<path
|
||||||
|
android:fillColor="#e8eaed"
|
||||||
|
android:pathData="m121,1c-9.32,10.58 -15,24.42 -15,39.62 0.55,33.37 4.64,66.7 5,100 0.74,31.1 -8.58,60.3 -19.92,88.8 -3.78,7.87 -7.86,15.57 -11.95,23.29l-12,-2.42c-10.83,-2.16 -17.87,-12.69 -15.7,-23.52 1.89,-9.47 10.23,-16.1 19.53,-16.1l4.38,0.47l-9.77,-81.6c-3.19,-36.3 -21.93,-68.2 -49.5,-88.9 -4.74,-3.56 -9.77,-6.82 -15,-9.69v289.7h66.88c5,27.1 19.94,50.8 40.94,67 4.99,3.44 9.18,7.98 12.19,13.28 3,-5.3 7.19,-9.84 12.19,-13.28 21,-16.24 35.94,-39.89 40.94,-67h66.88v-289.7c-5.23,2.87 -10.26,6.13 -15,9.69 -27.6,20.73 -46.3,52.6 -49.5,88.9l-9.77,81.6l4.38,-0.47c9.3,0.04 17.64,6.62 19.53,16.1 2.16,10.83 -4.88,21.35 -15.7,23.52l-12,2.42c-4.09,-7.71 -8.18,-15.41 -11.95,-23.29 -11.35,-28.48 -20.67,-57.68 -19.93,-88.8 0.36,-33.4 4.45,-66.7 5,-100 0,-15.2 -5.68,-29 -15,-39.62zM21,72.7c12.94,15.19 21.63,34.1 24.2,54.93l8,67.3c-10.25,5.1 -18,14.46 -20.94,25.79h-11.33v-148zM221,72.7v148h-11.33c-2.92,-11.32 -10.69,-20.68 -20.94,-25.79l8,-67.3c2.59,-20.81 11.28,-39.74 24.2,-54.94zM121,208c5.37,17.57 12.76,34.3 21.95,49.78 -8.74,2.65 -16.34,7.81 -21.95,14.76 -5.61,-6.95 -13.21,-12.1 -21.95,-14.77 9.19,-15.51 16.58,-32.2 21.95,-49.77zM21,240.74h11.33c3.57,13.81 14.35,24.71 28,28.52l9.61,2.19c-2.57,9.32 -3.98,19.1 -3.98,29.3h-45v-60zM209.7,240.74h11.33v60h-45c0,-10.14 -1.41,-19.97 -3.98,-29.3l9.61,-2.19c13.7,-3.81 24.47,-14.72 28,-28.52zM89.5,276.04c12.13,1.71 21.48,12.1 21.48,24.69h-25c0,-8.57 1.27,-16.84 3.52,-24.69zM152.47,276.04c2.25,7.85 3.52,16.1 3.52,24.69h-25c0,-12.61 9.35,-22.98 21.48,-24.69zM88.27,320.74h22.73v42.1c-11,-11.55 -19,-26 -22.73,-42.1zM131,320.74h22.73c-3.68,16.1 -11.7,30.57 -22.73,42.1v-42.1z"
|
||||||
|
tools:ignore="VectorPath" />
|
||||||
|
|
||||||
|
</vector>
|
||||||
11
app/src/main/res/drawable/x_logo.xml
Normal file
11
app/src/main/res/drawable/x_logo.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:height="21.68dp"
|
||||||
|
android:viewportHeight="271"
|
||||||
|
android:viewportWidth="300"
|
||||||
|
android:width="24dp">
|
||||||
|
|
||||||
|
<path
|
||||||
|
android:fillColor="#e8eaed"
|
||||||
|
android:pathData="m236,0h46l-101,115 118,156h-92.6l-72.5,-94.8 -83,94.8h-46l107,-123 -113,-148h94.9l65.5,86.6zM219.9,244h25.5l-165,-218h-27.4z" />
|
||||||
|
|
||||||
|
</vector>
|
||||||
|
|
@ -293,12 +293,11 @@
|
||||||
<string name="app_version_option_desc_1">Book\'s Story v%1$s</string>
|
<string name="app_version_option_desc_1">Book\'s Story v%1$s</string>
|
||||||
<string name="app_version_option_desc_2">Натисніть, щоб перевірити на оновлення</string>
|
<string name="app_version_option_desc_2">Натисніть, щоб перевірити на оновлення</string>
|
||||||
<string name="report_bug_option">Повідомити про помилку</string>
|
<string name="report_bug_option">Повідомити про помилку</string>
|
||||||
<string name="project_page_option">Сторінка проєкта</string>
|
<string name="whats_new_option">Що нового</string>
|
||||||
<string name="support_option">Підтримати мою роботу</string>
|
<string name="support_option">Підтримати мою роботу</string>
|
||||||
<string name="licenses_option">Ліцензії з відкритим кодом</string>
|
<string name="licenses_option">Ліцензії з відкритим кодом</string>
|
||||||
<string name="credits_option">Заслуги</string>
|
<string name="credits_option">Заслуги</string>
|
||||||
<string name="slava_ukraini_option">Слава Україні!</string>
|
<string name="slava_ukraini">Слава Україні!</string>
|
||||||
<string name="slava_ukraini_option_desc">Героям Слава! 🇺🇦🐉</string>
|
|
||||||
|
|
||||||
<!-- Credits -->
|
<!-- Credits -->
|
||||||
<string name="credits_design">Дизайн</string>
|
<string name="credits_design">Дизайн</string>
|
||||||
|
|
@ -485,5 +484,8 @@
|
||||||
<string name="reset_start_content_desc">Скинути початковий посібник</string>
|
<string name="reset_start_content_desc">Скинути початковий посібник</string>
|
||||||
<string name="exit_editing_content_desc">Вийти з режиму редагування</string>
|
<string name="exit_editing_content_desc">Вийти з режиму редагування</string>
|
||||||
<string name="open_in_web_content_desc">Відкрити в браузері</string>
|
<string name="open_in_web_content_desc">Відкрити в браузері</string>
|
||||||
|
<string name="tryzub_content_desc">Тризуб</string>
|
||||||
|
<string name="github_project_content_desc">GitHub Проєкт</string>
|
||||||
|
<string name="github_profile_content_desc">GitHub Профіль</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -20,9 +20,6 @@
|
||||||
<string name="issues_page" translatable="false">
|
<string name="issues_page" translatable="false">
|
||||||
https://www.github.com/Acclorite/book-story/issues
|
https://www.github.com/Acclorite/book-story/issues
|
||||||
</string>
|
</string>
|
||||||
<string name="project_page" translatable="false">
|
|
||||||
https://www.github.com/Acclorite/book-story
|
|
||||||
</string>
|
|
||||||
<string name="support_page" translatable="false">
|
<string name="support_page" translatable="false">
|
||||||
https://www.buymeacoffee.com/acclorite
|
https://www.buymeacoffee.com/acclorite
|
||||||
</string>
|
</string>
|
||||||
|
|
@ -311,12 +308,11 @@
|
||||||
<string name="app_version_option_desc_1">Book\'s Story v%1$s</string>
|
<string name="app_version_option_desc_1">Book\'s Story v%1$s</string>
|
||||||
<string name="app_version_option_desc_2">Click to check for updates</string>
|
<string name="app_version_option_desc_2">Click to check for updates</string>
|
||||||
<string name="report_bug_option">Report a bug</string>
|
<string name="report_bug_option">Report a bug</string>
|
||||||
<string name="project_page_option">Project\'s page</string>
|
<string name="whats_new_option">What\'s new</string>
|
||||||
<string name="support_option">Support my work</string>
|
<string name="support_option">Support my work</string>
|
||||||
<string name="licenses_option">Open source licenses</string>
|
<string name="licenses_option">Open source licenses</string>
|
||||||
<string name="credits_option">Credits</string>
|
<string name="credits_option">Credits</string>
|
||||||
<string name="slava_ukraini_option">Slava Ukraini!</string>
|
<string name="slava_ukraini">Slava Ukraini!</string>
|
||||||
<string name="slava_ukraini_option_desc">Heroyam Slava! 🇺🇦🐉</string>
|
|
||||||
|
|
||||||
<!-- Credits -->
|
<!-- Credits -->
|
||||||
<string name="credits_design">Design</string>
|
<string name="credits_design">Design</string>
|
||||||
|
|
@ -504,5 +500,10 @@
|
||||||
<string name="reset_start_content_desc">Reset start guide</string>
|
<string name="reset_start_content_desc">Reset start guide</string>
|
||||||
<string name="exit_editing_content_desc">Exit editing mode</string>
|
<string name="exit_editing_content_desc">Exit editing mode</string>
|
||||||
<string name="open_in_web_content_desc">Open in web</string>
|
<string name="open_in_web_content_desc">Open in web</string>
|
||||||
|
<string name="x_content_desc" translatable="false">X</string>
|
||||||
|
<string name="reddit_content_desc" translatable="false">Reddit</string>
|
||||||
|
<string name="tryzub_content_desc">Tryzub</string>
|
||||||
|
<string name="github_project_content_desc">GitHub Project</string>
|
||||||
|
<string name="github_profile_content_desc">GitHub Profile</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue