From 30102eb8aac519cfa0e36f815a3a893cff331888 Mon Sep 17 00:00:00 2001 From: b3s23 Date: Tue, 11 Mar 2025 00:59:38 +0500 Subject: [PATCH] Implemented About screen with links and email addresses --- .../bitcoin_summarizer/AboutFragment.kt | 107 +++++++++++++++++- .../bitcoin_summarizer/LearnFragment.kt | 7 ++ .../bitcoin_summarizer/MyHamburgerModal.kt | 4 +- .../res/mipmap-anydpi-v26/ic_launcher.xml | 2 +- app/src/main/res/values/colors.xml | 1 + 5 files changed, 117 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/ru/vendetti/bitcoin_summarizer/AboutFragment.kt b/app/src/main/java/ru/vendetti/bitcoin_summarizer/AboutFragment.kt index ac609ae..1ac2e1a 100644 --- a/app/src/main/java/ru/vendetti/bitcoin_summarizer/AboutFragment.kt +++ b/app/src/main/java/ru/vendetti/bitcoin_summarizer/AboutFragment.kt @@ -4,10 +4,16 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Menu @@ -15,6 +21,7 @@ import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.CenterAlignedTopAppBar import androidx.compose.material3.DrawerValue import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -27,15 +34,30 @@ import androidx.compose.material3.rememberDrawerState import androidx.compose.material3.rememberTopAppBarState import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.platform.ClipboardManager import androidx.compose.ui.platform.ComposeView +import androidx.compose.ui.platform.LocalClipboardManager +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.ExperimentalTextApi +import androidx.compose.ui.text.LinkAnnotation +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextLinkStyles +import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.text.withLink +import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import androidx.fragment.app.Fragment import kotlinx.coroutines.launch import ru.vendetti.bitcoin_summarizer.ui.theme.BitcoinSummarizerTheme +import ru.vendetti.bitcoin_summarizer.ui.theme.Flame class AboutFragment: Fragment() { override fun onCreateView( @@ -55,7 +77,7 @@ class AboutFragment: Fragment() { } } -@OptIn(ExperimentalMaterial3Api::class) +@OptIn(ExperimentalMaterial3Api::class, ExperimentalTextApi::class) @Composable @Preview fun AboutComposable() { @@ -112,7 +134,90 @@ fun AboutComposable() { .padding(innerPadding) .verticalScroll(rememberScrollState()) ) { + Column( + modifier = Modifier + .padding(16.dp, 16.dp, 16.dp, 36.dp) + ) { + Icon( + painter = painterResource(id = R.mipmap.ic_launcher_foreground), + contentDescription = null, + modifier = Modifier + .width(160.dp) + .height(160.dp) + .align(Alignment.CenterHorizontally) + ) + Spacer(modifier = Modifier.height(16.dp)) + Text( + "Репозиторий проекта", + modifier = Modifier + .align(alignment = Alignment.CenterHorizontally), + fontSize = 24.sp + ) + Spacer(modifier = Modifier.height(16.dp)) + + val repositoryLinkString = buildAnnotatedString { + withLink(LinkAnnotation.Url( + url = "https://git.vendetti.ru/andy/bitcoin-summarizer/tags", + styles = TextLinkStyles(style = SpanStyle(color = Flame)) + ) + ) { + append("Ссылка на репозиторий") + } + } + Text(text = repositoryLinkString) + + Spacer(modifier = Modifier.height(16.dp)) + HorizontalDivider() + Spacer(modifier = Modifier.height(16.dp)) + + Text( + "Авторы", + modifier = Modifier + .align(alignment = Alignment.CenterHorizontally), + fontSize = 24.sp + ) + Spacer(modifier = Modifier.height(16.dp)) + + Text("Студенты гр. 9ИСП-42-21, ГБПОУ УКРТБ") + Spacer(modifier = Modifier.height(16.dp)) + + Text("Васильев Андрей Дмитриевич - Back-end: CI/CD (Continuous Integration), Api interactions, Database interactions") + Spacer(modifier = Modifier.height(8.dp)) + SelectionContainer { + Text("andy@vendetti.ru", color = Flame) + } + Spacer(modifier = Modifier.height(16.dp)) + + Text("Зубарев Артемий Альбертович - Front-end: Charts, App navigation (Cicerone)") + + Spacer(modifier = Modifier.height(8.dp)) + SelectionContainer { + Text("artemiy.work32@gmail.com", color = Flame) + } + + Spacer(modifier = Modifier.height(16.dp)) + HorizontalDivider() + Spacer(modifier = Modifier.height(16.dp)) + + Text( + "Используемый API", + modifier = Modifier + .align(alignment = Alignment.CenterHorizontally), + fontSize = 24.sp + ) + + val apiLinkString = buildAnnotatedString { + withLink(LinkAnnotation.Url( + url = "https://alternative.me/crypto/api/", + styles = TextLinkStyles(style = SpanStyle(color = Flame)) + ) + ) { + append("Ссылка на API") + } + } + Text(text = apiLinkString) + } } } } diff --git a/app/src/main/java/ru/vendetti/bitcoin_summarizer/LearnFragment.kt b/app/src/main/java/ru/vendetti/bitcoin_summarizer/LearnFragment.kt index 3c0d641..fc5b7fb 100644 --- a/app/src/main/java/ru/vendetti/bitcoin_summarizer/LearnFragment.kt +++ b/app/src/main/java/ru/vendetti/bitcoin_summarizer/LearnFragment.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -33,6 +34,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp import androidx.fragment.app.Fragment import kotlinx.coroutines.launch import ru.vendetti.bitcoin_summarizer.ui.theme.BitcoinSummarizerTheme @@ -112,7 +114,12 @@ fun LearnComposable() { .padding(innerPadding) .verticalScroll(rememberScrollState()) ) { + Column ( + modifier = Modifier + .padding(16.dp, 16.dp, 16.dp, 36.dp) + ) { + } } } } diff --git a/app/src/main/java/ru/vendetti/bitcoin_summarizer/MyHamburgerModal.kt b/app/src/main/java/ru/vendetti/bitcoin_summarizer/MyHamburgerModal.kt index 40b5954..8357985 100644 --- a/app/src/main/java/ru/vendetti/bitcoin_summarizer/MyHamburgerModal.kt +++ b/app/src/main/java/ru/vendetti/bitcoin_summarizer/MyHamburgerModal.kt @@ -54,7 +54,7 @@ fun MyHamburgerModal( } } ) - NavigationDrawerItem( + /*NavigationDrawerItem( colors = NavigationDrawerItemDefaults.colors( selectedContainerColor = MaterialTheme.colorScheme.tertiary, selectedTextColor = MaterialTheme.colorScheme.onTertiary, @@ -67,6 +67,6 @@ fun MyHamburgerModal( App.INSTANCE.router.replaceScreen(Screens.Learn) } } - ) + )*/ } } \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 65291b9..5650cea 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f8c6127..046e3c9 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,4 +7,5 @@ #FF018786 #FF000000 #FFFFFFFF + #221E22 \ No newline at end of file