compose: about: Initial migration
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -12,7 +12,10 @@ import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.requiredSize
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
@@ -20,11 +23,16 @@ import androidx.compose.material3.VerticalDivider
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.dimensionResource
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import coil3.compose.AsyncImage
|
||||
import coil3.request.ImageRequest
|
||||
import coil3.request.crossfade
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.model.Link
|
||||
|
||||
@@ -40,13 +48,19 @@ fun LinkComposable(modifier: Modifier = Modifier, link: Link, onClick: () -> Uni
|
||||
modifier = modifier
|
||||
.fillMaxWidth()
|
||||
.clickable(onClick = onClick)
|
||||
.padding(dimensionResource(R.dimen.padding_small)),
|
||||
.padding(dimensionResource(R.dimen.padding_medium)),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
|
||||
) {
|
||||
Icon(
|
||||
painter = painterResource(link.icon),
|
||||
contentDescription = null
|
||||
AsyncImage(
|
||||
model = ImageRequest.Builder(LocalContext.current)
|
||||
.data(link.icon)
|
||||
.build(),
|
||||
contentDescription = null,
|
||||
contentScale = ContentScale.Crop,
|
||||
modifier = Modifier
|
||||
.requiredSize(dimensionResource(R.dimen.icon_size_default))
|
||||
.clip(CircleShape)
|
||||
)
|
||||
VerticalDivider(
|
||||
modifier = Modifier
|
||||
@@ -64,7 +78,7 @@ fun LinkComposable(modifier: Modifier = Modifier, link: Link, onClick: () -> Uni
|
||||
Text(
|
||||
text = link.subtitle,
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
maxLines = 1,
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import androidx.navigation3.ui.NavDisplay
|
||||
import androidx.navigation3.ui.rememberSceneSetupNavEntryDecorator
|
||||
import com.aurora.store.MainActivity
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.ui.about.AboutScreen
|
||||
import com.aurora.store.compose.ui.accounts.AccountsScreen
|
||||
import com.aurora.store.compose.ui.blacklist.BlacklistScreen
|
||||
import com.aurora.store.compose.ui.details.AppDetailsScreen
|
||||
@@ -109,6 +110,10 @@ fun NavDisplay(startDestination: NavKey) {
|
||||
onNavigateToSplash = { activity?.startActivity(splashIntent) }
|
||||
)
|
||||
}
|
||||
|
||||
entry<Screen.About> {
|
||||
AboutScreen(onNavigateUp = { onNavigateUp() })
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -44,4 +44,7 @@ sealed class Screen : NavKey, Parcelable {
|
||||
|
||||
@Serializable
|
||||
data object Accounts : Screen()
|
||||
|
||||
@Serializable
|
||||
data object About : Screen()
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.aurora.store.compose.ui.about
|
||||
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.aurora.store.R
|
||||
|
||||
/**
|
||||
* Dialog for displaying information about Aurora Store
|
||||
* @param onDismiss Callback on dismiss
|
||||
*/
|
||||
@Composable
|
||||
fun AboutDialog(onDismiss: () -> Unit = {}) {
|
||||
AlertDialog(
|
||||
title = { Text(text = stringResource(R.string.about_aurora_store_title)) },
|
||||
text = {
|
||||
Text(text = stringResource(R.string.about_aurora_store_summary))
|
||||
},
|
||||
onDismissRequest = onDismiss,
|
||||
confirmButton = {
|
||||
TextButton(onClick = onDismiss) {
|
||||
Text(text = stringResource(android.R.string.ok))
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun AboutDialogPreview() {
|
||||
AboutDialog()
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.aurora.store.compose.ui.about
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.requiredSize
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
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.layout.ContentScale
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.dimensionResource
|
||||
import androidx.compose.ui.res.stringArrayResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import coil3.compose.AsyncImage
|
||||
import coil3.request.ImageRequest
|
||||
import com.aurora.extensions.browse
|
||||
import com.aurora.store.BuildConfig.VERSION_CODE
|
||||
import com.aurora.store.BuildConfig.VERSION_NAME
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.composables.LinkComposable
|
||||
import com.aurora.store.compose.composables.TopAppBarComposable
|
||||
import com.aurora.store.compose.ui.accounts.LogoutDialog
|
||||
import com.aurora.store.data.model.Link
|
||||
import com.aurora.store.data.providers.AccountProvider
|
||||
|
||||
@Composable
|
||||
fun AboutScreen(onNavigateUp: () -> Unit) {
|
||||
var shouldShowAboutDialog by rememberSaveable { mutableStateOf(false) }
|
||||
|
||||
if (shouldShowAboutDialog) {
|
||||
AboutDialog(onDismiss = { shouldShowAboutDialog = false })
|
||||
}
|
||||
|
||||
ScreenContent(
|
||||
onNavigateUp = onNavigateUp,
|
||||
onAboutAurora = { shouldShowAboutDialog = true }
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ScreenContent(onNavigateUp: () -> Unit = {}, onAboutAurora: () -> Unit = {}) {
|
||||
val context = LocalContext.current
|
||||
|
||||
val linkURLS = stringArrayResource(R.array.link_urls)
|
||||
val linkTitles = stringArrayResource(R.array.link_titles)
|
||||
val linkSummary = stringArrayResource(R.array.link_subtitle)
|
||||
val linkIcons = intArrayOf(
|
||||
R.drawable.ic_about,
|
||||
R.drawable.ic_help,
|
||||
R.drawable.ic_xda,
|
||||
R.drawable.ic_telegram,
|
||||
R.drawable.ic_gitlab,
|
||||
R.drawable.ic_fdroid,
|
||||
R.drawable.ic_bitcoin_btc,
|
||||
R.drawable.ic_bitcoin_bch,
|
||||
R.drawable.ic_ethereum_eth,
|
||||
R.drawable.ic_bhim,
|
||||
R.drawable.ic_paypal,
|
||||
R.drawable.ic_libera_pay,
|
||||
)
|
||||
|
||||
val links = linkURLS.mapIndexed { index, url ->
|
||||
Link(
|
||||
id = index,
|
||||
title = linkTitles[index],
|
||||
subtitle = linkSummary[index],
|
||||
url = url,
|
||||
icon = linkIcons[index]
|
||||
)
|
||||
}
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
TopAppBarComposable(
|
||||
title = stringResource(R.string.title_about),
|
||||
onNavigateUp = onNavigateUp
|
||||
)
|
||||
}
|
||||
) { paddingValues ->
|
||||
LazyColumn(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(paddingValues),
|
||||
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_xxsmall))
|
||||
) {
|
||||
stickyHeader {
|
||||
Surface(modifier = Modifier.fillMaxWidth()) {
|
||||
BrandHeader()
|
||||
}
|
||||
}
|
||||
items(items = links, key = { item -> item.id }) { link ->
|
||||
LinkComposable(
|
||||
link = link,
|
||||
onClick = {
|
||||
when (link.id) {
|
||||
0 -> onAboutAurora()
|
||||
else -> context.browse(link.url)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun BrandHeader() {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(dimensionResource(R.dimen.margin_medium)),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_xxsmall))
|
||||
) {
|
||||
AsyncImage(
|
||||
model = ImageRequest.Builder(LocalContext.current)
|
||||
.data(R.mipmap.ic_launcher)
|
||||
.build(),
|
||||
contentDescription = null,
|
||||
contentScale = ContentScale.Crop,
|
||||
modifier = Modifier
|
||||
.requiredSize(dimensionResource(R.dimen.icon_size))
|
||||
.clip(CircleShape)
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.app_name),
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.version, VERSION_NAME, VERSION_CODE),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.made_with_love, String(Character.toChars(0x2764))),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun AboutScreenPreview() {
|
||||
ScreenContent()
|
||||
}
|
||||
@@ -15,8 +15,8 @@ import com.aurora.store.R
|
||||
|
||||
/**
|
||||
* Dialog for confirming log out
|
||||
* @param onConfirm Callback when the token has been entered
|
||||
* @param onDismiss Callback when the dialog has been dismissed
|
||||
* @param onConfirm Callback on confirmation
|
||||
* @param onDismiss Callback on dismiss
|
||||
*/
|
||||
@Composable
|
||||
fun LogoutDialog(onConfirm: () -> Unit = {}, onDismiss: () -> Unit = {}) {
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
/*
|
||||
* Aurora Store
|
||||
* Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
|
||||
*
|
||||
* Aurora Store is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Aurora Store is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.aurora.store.view.epoxy.views.preference
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import coil3.load
|
||||
import com.airbnb.epoxy.CallbackProp
|
||||
import com.airbnb.epoxy.ModelProp
|
||||
import com.airbnb.epoxy.ModelView
|
||||
import com.aurora.extensions.hide
|
||||
import com.aurora.extensions.show
|
||||
import com.aurora.store.data.model.Link
|
||||
import com.aurora.store.databinding.ViewLinkBinding
|
||||
import com.aurora.store.view.epoxy.views.BaseModel
|
||||
import com.aurora.store.view.epoxy.views.BaseView
|
||||
|
||||
@ModelView(
|
||||
autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT,
|
||||
baseModelClass = BaseModel::class
|
||||
)
|
||||
class LinkView @JvmOverloads constructor(
|
||||
context: Context?,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : BaseView<ViewLinkBinding>(context, attrs, defStyleAttr) {
|
||||
|
||||
@ModelProp
|
||||
fun link(link: Link) {
|
||||
binding.line1.text = link.title
|
||||
binding.line2.text = link.subtitle
|
||||
|
||||
if (link.url.startsWith("http") || link.url.startsWith("upi")) {
|
||||
binding.line3.hide()
|
||||
} else {
|
||||
binding.line3.show()
|
||||
binding.line3.text = link.url
|
||||
}
|
||||
|
||||
binding.imgIcon.load(link.icon)
|
||||
}
|
||||
|
||||
@CallbackProp
|
||||
fun click(onClickListener: OnClickListener?) {
|
||||
binding.root.setOnClickListener(onClickListener)
|
||||
}
|
||||
}
|
||||
@@ -1,114 +0,0 @@
|
||||
/*
|
||||
* Aurora Store
|
||||
* Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
|
||||
*
|
||||
* Aurora Store is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Aurora Store is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.aurora.store.view.ui.about
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import coil3.load
|
||||
import com.aurora.extensions.browse
|
||||
import com.aurora.extensions.copyToClipBoard
|
||||
import com.aurora.store.BuildConfig
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.model.Link
|
||||
import com.aurora.store.databinding.FragmentAboutBinding
|
||||
import com.aurora.store.view.epoxy.views.preference.LinkViewModel_
|
||||
import com.aurora.store.view.ui.commons.BaseFragment
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class AboutFragment : BaseFragment<FragmentAboutBinding>() {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
// Toolbar
|
||||
binding.toolbar.setNavigationOnClickListener { findNavController().navigateUp() }
|
||||
|
||||
// About Details
|
||||
binding.imgIcon.load(R.mipmap.ic_launcher)
|
||||
binding.line2.text = view.context.getString(
|
||||
R.string.version,
|
||||
BuildConfig.VERSION_NAME,
|
||||
BuildConfig.VERSION_CODE
|
||||
)
|
||||
binding.line3.text = getString(R.string.made_with_love, String(Character.toChars(0x2764)))
|
||||
|
||||
binding.epoxyRecycler.layoutManager =
|
||||
LinearLayoutManager(view.context, RecyclerView.VERTICAL, false)
|
||||
|
||||
updateController()
|
||||
}
|
||||
|
||||
private fun updateController() {
|
||||
val linkURLS = resources.getStringArray(R.array.link_urls)
|
||||
val linkTitles = resources.getStringArray(R.array.link_titles)
|
||||
val linkSummary = resources.getStringArray(R.array.link_subtitle)
|
||||
|
||||
val linkIcons = intArrayOf(
|
||||
R.drawable.ic_menu_about,
|
||||
R.drawable.ic_help,
|
||||
R.drawable.ic_xda,
|
||||
R.drawable.ic_telegram,
|
||||
R.drawable.ic_gitlab,
|
||||
R.drawable.ic_fdroid,
|
||||
R.drawable.ic_bitcoin_btc,
|
||||
R.drawable.ic_bitcoin_bch,
|
||||
R.drawable.ic_ethereum_eth,
|
||||
R.drawable.ic_bhim,
|
||||
R.drawable.ic_paypal,
|
||||
R.drawable.ic_libera_pay,
|
||||
)
|
||||
|
||||
binding.epoxyRecycler.withModels {
|
||||
for (i in linkURLS.indices) {
|
||||
val link = Link(
|
||||
id = i,
|
||||
title = linkTitles[i],
|
||||
subtitle = linkSummary[i],
|
||||
url = linkURLS[i],
|
||||
icon = linkIcons[i]
|
||||
)
|
||||
add(
|
||||
LinkViewModel_()
|
||||
.id(i)
|
||||
.link(link)
|
||||
.click { _ ->
|
||||
if (link.id == 0) {
|
||||
findNavController().navigate(R.id.aboutDialog)
|
||||
} else {
|
||||
processUrl(link.url)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun processUrl(url: String) {
|
||||
when {
|
||||
url.startsWith("http") -> context?.browse(url)
|
||||
url.startsWith("upi") -> context?.browse(url)
|
||||
else -> context?.copyToClipBoard(url)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -453,10 +453,10 @@ class MoreDialogFragment : DialogFragment() {
|
||||
icon = R.drawable.ic_menu_settings,
|
||||
destinationID = R.id.settingsFragment
|
||||
),
|
||||
ViewOption(
|
||||
ComposeOption(
|
||||
title = R.string.title_about,
|
||||
icon = R.drawable.ic_menu_about,
|
||||
destinationID = R.id.aboutFragment
|
||||
screen = Screen.About
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ abstract class BaseFlavouredSplashFragment : BaseFragment<FragmentSplashBinding>
|
||||
findNavController().navigate(R.id.settingsFragment)
|
||||
}
|
||||
|
||||
R.id.menu_about -> findNavController().navigate(R.id.aboutFragment)
|
||||
R.id.menu_about -> requireContext().navigate(Screen.About)
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
22
app/src/main/res/drawable/ic_about.xml
Normal file
22
app/src/main/res/drawable/ic_about.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ SPDX-FileCopyrightText: SVG Repo
|
||||
~ SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:autoMirrored="true"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
|
||||
<path
|
||||
android:fillColor="#2196F3"
|
||||
android:pathData="M512,512m-448,0a448,448 0,1 0,896 0,448 448,0 1,0 -896,0Z" />
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M469.3,469.3h85.3v234.7h-85.3z" />
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M512,352m-53.3,0a53.3,53.3 0,1 0,106.7 0,53.3 53.3,0 1,0 -106.7,0Z" />
|
||||
</vector>
|
||||
@@ -1,12 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ SPDX-FileCopyrightText: SVG Repo
|
||||
~ SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:autoMirrored="true"
|
||||
android:tint="?colorAccent"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M478,720Q499,720 513.5,705.5Q528,691 528,670Q528,649 513.5,634.5Q499,620 478,620Q457,620 442.5,634.5Q428,649 428,670Q428,691 442.5,705.5Q457,720 478,720ZM442,566L516,566Q516,533 523.5,514Q531,495 566,462Q592,436 607,412.5Q622,389 622,356Q622,300 581,270Q540,240 484,240Q427,240 391.5,270Q356,300 342,342L408,368Q413,350 430.5,329Q448,308 484,308Q516,308 532,325.5Q548,343 548,364Q548,384 536,401.5Q524,419 506,434Q462,473 452,493Q442,513 442,566ZM480,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,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z" />
|
||||
android:pathData="M768,938.7H170.7V170.7h426.7l170.7,170.7z"
|
||||
android:fillColor="#42A5F5"/>
|
||||
<path
|
||||
android:pathData="M853.3,853.3H256V85.3h426.7l170.7,170.7z"
|
||||
android:fillColor="#90CAF9"/>
|
||||
<path
|
||||
android:pathData="M821.3,277.3H661.3V117.3z"
|
||||
android:fillColor="#E1F5FE"/>
|
||||
<path
|
||||
android:pathData="M522.7,603.7c0,-100.3 76.8,-93.9 76.8,-153.6 0,-14.9 -4.3,-44.8 -42.7,-44.8 -42.7,0 -44.8,34.1 -44.8,42.7h-57.6c0,-14.9 6.4,-89.6 102.4,-89.6 98.1,0 100.3,76.8 100.3,91.7 0,74.7 -81.1,85.3 -81.1,155.7h-53.3zM518.4,678.4c0,-4.3 0,-32 32,-32 29.9,0 32,27.7 32,32 0,8.5 -4.3,29.9 -32,29.9s-32,-21.3 -32,-29.9z"
|
||||
android:fillColor="#1976D2"/>
|
||||
</vector>
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
~ Aurora Store
|
||||
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
|
||||
~
|
||||
~ Aurora Store is free software: you can redistribute it and/or modify
|
||||
~ it under the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation, either version 2 of the License, or
|
||||
~ (at your option) any later version.
|
||||
~
|
||||
~ Aurora Store is distributed in the hope that it will be useful,
|
||||
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
~ GNU General Public License for more details.
|
||||
~
|
||||
~ You should have received a copy of the GNU General Public License
|
||||
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
|
||||
~
|
||||
-->
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context=".view.ui.about.AboutFragment">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
app:navigationIcon="@drawable/ic_arrow_back"
|
||||
app:title="@string/title_about" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:weightSum="2">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/img_icon"
|
||||
android:layout_width="@dimen/icon_size_avatar"
|
||||
android:layout_height="@dimen/icon_size_avatar"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="@dimen/margin_xlarge"
|
||||
android:minWidth="176dp"
|
||||
app:srcCompat="@drawable/bg_placeholder" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/line1"
|
||||
style="@style/TextAppearance.Aurora.Title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/img_icon"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:text="@string/app_name" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/line2"
|
||||
style="@style/TextAppearance.Aurora.Line1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/line1"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:gravity="center_vertical"
|
||||
tools:text="4.0.1" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/line3"
|
||||
style="@style/TextAppearance.Aurora.Line3"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/line2"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:textAlignment="center" />
|
||||
</RelativeLayout>
|
||||
|
||||
<com.airbnb.epoxy.EpoxyRecyclerView
|
||||
android:id="@+id/epoxy_recycler"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:clipToPadding="false"
|
||||
android:orientation="vertical"
|
||||
android:overScrollMode="never"
|
||||
android:paddingStart="@dimen/padding_normal"
|
||||
android:paddingEnd="@dimen/padding_normal"
|
||||
app:itemSpacing="@dimen/margin_small"
|
||||
tools:listitem="@layout/view_link" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Aurora Store
|
||||
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
|
||||
~
|
||||
~ Aurora Store is free software: you can redistribute it and/or modify
|
||||
~ it under the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation, either version 2 of the License, or
|
||||
~ (at your option) any later version.
|
||||
~
|
||||
~ Aurora Store is distributed in the hope that it will be useful,
|
||||
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
~ GNU General Public License for more details.
|
||||
~
|
||||
~ You should have received a copy of the GNU General Public License
|
||||
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
|
||||
~
|
||||
-->
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:weightSum="3"
|
||||
tools:context=".view.ui.about.AboutFragment">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
app:navigationIcon="@drawable/ic_arrow_back"
|
||||
app:title="@string/title_about" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/img_icon"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="@dimen/margin_small"
|
||||
app:srcCompat="@drawable/bg_placeholder" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/line1"
|
||||
style="@style/TextAppearance.Aurora.Title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/img_icon"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:text="@string/app_name" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/line2"
|
||||
style="@style/TextAppearance.Aurora.Line1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/line1"
|
||||
android:layout_centerHorizontal="true"
|
||||
tools:text="4.0.1 (30)" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/line3"
|
||||
style="@style/TextAppearance.Aurora.Line3"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/line2"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginBottom="@dimen/margin_small"
|
||||
android:textAlignment="center" />
|
||||
</RelativeLayout>
|
||||
|
||||
<com.airbnb.epoxy.EpoxyRecyclerView
|
||||
android:id="@+id/epoxy_recycler"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:orientation="vertical"
|
||||
android:overScrollMode="never"
|
||||
android:paddingHorizontal="@dimen/padding_small"
|
||||
android:paddingTop="@dimen/padding_small"
|
||||
android:paddingBottom="@dimen/height_bottom_adj"
|
||||
app:itemSpacing="@dimen/margin_small"
|
||||
tools:listitem="@layout/view_link" />
|
||||
</LinearLayout>
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Aurora Store
|
||||
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
|
||||
~
|
||||
~ Aurora Store is free software: you can redistribute it and/or modify
|
||||
~ it under the terms of the GNU General Public License as published by
|
||||
~ the Free Software Foundation, either version 2 of the License, or
|
||||
~ (at your option) any later version.
|
||||
~
|
||||
~ Aurora Store is distributed in the hope that it will be useful,
|
||||
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
~ GNU General Public License for more details.
|
||||
~
|
||||
~ You should have received a copy of the GNU General Public License
|
||||
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
|
||||
~
|
||||
-->
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:orientation="horizontal"
|
||||
android:padding="@dimen/padding_small">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/img_icon"
|
||||
android:layout_width="@dimen/icon_size_default"
|
||||
android:layout_height="@dimen/icon_size_default"
|
||||
android:layout_gravity="center_vertical"
|
||||
tools:src="@drawable/ic_menu_about" />
|
||||
|
||||
<View
|
||||
android:layout_width="@dimen/margin_xxsmall"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="@dimen/margin_xlarge"
|
||||
android:layout_marginEnd="@dimen/margin_xlarge"
|
||||
android:background="@drawable/divider_line"
|
||||
android:backgroundTint="?colorControlHighlight" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/line1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.Aurora.SubTitle"
|
||||
tools:text="Title" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/line2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="2"
|
||||
android:textAppearance="@style/TextAppearance.Aurora.Line2"
|
||||
tools:text="Subtitle" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/line3"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="2"
|
||||
android:textAppearance="@style/TextAppearance.Aurora.Line3"
|
||||
android:textColor="?colorAccent"
|
||||
android:textIsSelectable="true"
|
||||
android:visibility="gone"
|
||||
tools:text="Link" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
@@ -56,11 +56,6 @@
|
||||
android:name="com.aurora.store.view.ui.updates.UpdatesFragment"
|
||||
android:label="@string/title_updates"
|
||||
tools:layout="@layout/fragment_updates" />
|
||||
<fragment
|
||||
android:id="@+id/aboutFragment"
|
||||
android:name="com.aurora.store.view.ui.about.AboutFragment"
|
||||
android:label="@string/title_about"
|
||||
tools:layout="@layout/fragment_about" />
|
||||
<fragment
|
||||
android:id="@+id/appsGamesFragment"
|
||||
android:name="com.aurora.store.view.ui.all.AppsGamesFragment"
|
||||
|
||||
Reference in New Issue
Block a user