Implemented About screen with links and email addresses
This commit is contained in:
		| @@ -4,10 +4,16 @@ import android.os.Bundle | |||||||
| import android.view.LayoutInflater | import android.view.LayoutInflater | ||||||
| import android.view.View | import android.view.View | ||||||
| import android.view.ViewGroup | import android.view.ViewGroup | ||||||
|  | import androidx.compose.foundation.Image | ||||||
| import androidx.compose.foundation.background | import androidx.compose.foundation.background | ||||||
| import androidx.compose.foundation.layout.Box | 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.padding | ||||||
|  | import androidx.compose.foundation.layout.width | ||||||
| import androidx.compose.foundation.rememberScrollState | import androidx.compose.foundation.rememberScrollState | ||||||
|  | import androidx.compose.foundation.text.selection.SelectionContainer | ||||||
| import androidx.compose.foundation.verticalScroll | import androidx.compose.foundation.verticalScroll | ||||||
| import androidx.compose.material.icons.Icons | import androidx.compose.material.icons.Icons | ||||||
| import androidx.compose.material.icons.filled.Menu | 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.CenterAlignedTopAppBar | ||||||
| import androidx.compose.material3.DrawerValue | import androidx.compose.material3.DrawerValue | ||||||
| import androidx.compose.material3.ExperimentalMaterial3Api | import androidx.compose.material3.ExperimentalMaterial3Api | ||||||
|  | import androidx.compose.material3.HorizontalDivider | ||||||
| import androidx.compose.material3.Icon | import androidx.compose.material3.Icon | ||||||
| import androidx.compose.material3.IconButton | import androidx.compose.material3.IconButton | ||||||
| import androidx.compose.material3.MaterialTheme | import androidx.compose.material3.MaterialTheme | ||||||
| @@ -27,15 +34,30 @@ import androidx.compose.material3.rememberDrawerState | |||||||
| import androidx.compose.material3.rememberTopAppBarState | import androidx.compose.material3.rememberTopAppBarState | ||||||
| import androidx.compose.runtime.Composable | import androidx.compose.runtime.Composable | ||||||
| import androidx.compose.runtime.rememberCoroutineScope | import androidx.compose.runtime.rememberCoroutineScope | ||||||
|  | import androidx.compose.ui.Alignment | ||||||
| import androidx.compose.ui.Modifier | import androidx.compose.ui.Modifier | ||||||
| import androidx.compose.ui.graphics.Color | import androidx.compose.ui.graphics.Color | ||||||
| import androidx.compose.ui.input.nestedscroll.nestedScroll | import androidx.compose.ui.input.nestedscroll.nestedScroll | ||||||
|  | import androidx.compose.ui.platform.ClipboardManager | ||||||
| import androidx.compose.ui.platform.ComposeView | 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.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.tooling.preview.Preview | ||||||
|  | import androidx.compose.ui.unit.dp | ||||||
|  | import androidx.compose.ui.unit.sp | ||||||
| import androidx.fragment.app.Fragment | import androidx.fragment.app.Fragment | ||||||
| import kotlinx.coroutines.launch | import kotlinx.coroutines.launch | ||||||
| import ru.vendetti.bitcoin_summarizer.ui.theme.BitcoinSummarizerTheme | import ru.vendetti.bitcoin_summarizer.ui.theme.BitcoinSummarizerTheme | ||||||
|  | import ru.vendetti.bitcoin_summarizer.ui.theme.Flame | ||||||
|  |  | ||||||
| class AboutFragment: Fragment() { | class AboutFragment: Fragment() { | ||||||
|     override fun onCreateView( |     override fun onCreateView( | ||||||
| @@ -55,7 +77,7 @@ class AboutFragment: Fragment() { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @OptIn(ExperimentalMaterial3Api::class) | @OptIn(ExperimentalMaterial3Api::class, ExperimentalTextApi::class) | ||||||
| @Composable | @Composable | ||||||
| @Preview | @Preview | ||||||
| fun AboutComposable() { | fun AboutComposable() { | ||||||
| @@ -112,7 +134,90 @@ fun AboutComposable() { | |||||||
|                     .padding(innerPadding) |                     .padding(innerPadding) | ||||||
|                     .verticalScroll(rememberScrollState()) |                     .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) | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -6,6 +6,7 @@ import android.view.View | |||||||
| import android.view.ViewGroup | import android.view.ViewGroup | ||||||
| import androidx.compose.foundation.background | import androidx.compose.foundation.background | ||||||
| import androidx.compose.foundation.layout.Box | import androidx.compose.foundation.layout.Box | ||||||
|  | import androidx.compose.foundation.layout.Column | ||||||
| import androidx.compose.foundation.layout.padding | import androidx.compose.foundation.layout.padding | ||||||
| import androidx.compose.foundation.rememberScrollState | import androidx.compose.foundation.rememberScrollState | ||||||
| import androidx.compose.foundation.verticalScroll | 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.platform.ComposeView | ||||||
| import androidx.compose.ui.text.style.TextOverflow | import androidx.compose.ui.text.style.TextOverflow | ||||||
| import androidx.compose.ui.tooling.preview.Preview | import androidx.compose.ui.tooling.preview.Preview | ||||||
|  | import androidx.compose.ui.unit.dp | ||||||
| import androidx.fragment.app.Fragment | import androidx.fragment.app.Fragment | ||||||
| import kotlinx.coroutines.launch | import kotlinx.coroutines.launch | ||||||
| import ru.vendetti.bitcoin_summarizer.ui.theme.BitcoinSummarizerTheme | import ru.vendetti.bitcoin_summarizer.ui.theme.BitcoinSummarizerTheme | ||||||
| @@ -112,7 +114,12 @@ fun LearnComposable() { | |||||||
|                     .padding(innerPadding) |                     .padding(innerPadding) | ||||||
|                     .verticalScroll(rememberScrollState()) |                     .verticalScroll(rememberScrollState()) | ||||||
|             ) { |             ) { | ||||||
|  |                 Column ( | ||||||
|  |                         modifier = Modifier | ||||||
|  |                             .padding(16.dp, 16.dp, 16.dp, 36.dp) | ||||||
|  |                         ) { | ||||||
|  |  | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ fun MyHamburgerModal( | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         ) |         ) | ||||||
|         NavigationDrawerItem( |         /*NavigationDrawerItem( | ||||||
|             colors = NavigationDrawerItemDefaults.colors( |             colors = NavigationDrawerItemDefaults.colors( | ||||||
|                 selectedContainerColor = MaterialTheme.colorScheme.tertiary, |                 selectedContainerColor = MaterialTheme.colorScheme.tertiary, | ||||||
|                 selectedTextColor = MaterialTheme.colorScheme.onTertiary, |                 selectedTextColor = MaterialTheme.colorScheme.onTertiary, | ||||||
| @@ -67,6 +67,6 @@ fun MyHamburgerModal( | |||||||
|                     App.INSTANCE.router.replaceScreen(Screens.Learn) |                     App.INSTANCE.router.replaceScreen(Screens.Learn) | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         ) |         )*/ | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||||||
|     <background android:drawable="@color/ic_launcher_background"/> |     <background android:drawable="@color/black2"/> | ||||||
|     <foreground android:drawable="@mipmap/ic_launcher_foreground"/> |     <foreground android:drawable="@mipmap/ic_launcher_foreground"/> | ||||||
|     <monochrome android:drawable="@mipmap/ic_launcher_foreground"/> |     <monochrome android:drawable="@mipmap/ic_launcher_foreground"/> | ||||||
| </adaptive-icon> | </adaptive-icon> | ||||||
| @@ -7,4 +7,5 @@ | |||||||
|     <color name="teal_700">#FF018786</color> |     <color name="teal_700">#FF018786</color> | ||||||
|     <color name="black">#FF000000</color> |     <color name="black">#FF000000</color> | ||||||
|     <color name="white">#FFFFFFFF</color> |     <color name="white">#FFFFFFFF</color> | ||||||
|  |     <color name="black2">#221E22</color> | ||||||
| </resources> | </resources> | ||||||
		Reference in New Issue
	
	Block a user
	 b3s23
					b3s23