From 3c3b044c80d9675a7916b4632695a76713653949 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Mon, 6 Dec 2021 22:47:09 +0100 Subject: [PATCH] Changed author info to show commit id instead of mail E-mail is shown as a tooltip of the username --- src/main/kotlin/app/ui/CommitChanges.kt | 15 ++-- .../kotlin/app/ui/components/TooltipText.kt | 77 +++++++++++++++++++ 2 files changed, 85 insertions(+), 7 deletions(-) create mode 100644 src/main/kotlin/app/ui/components/TooltipText.kt diff --git a/src/main/kotlin/app/ui/CommitChanges.kt b/src/main/kotlin/app/ui/CommitChanges.kt index 3251e20..72360f1 100644 --- a/src/main/kotlin/app/ui/CommitChanges.kt +++ b/src/main/kotlin/app/ui/CommitChanges.kt @@ -11,7 +11,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.ImageBitmap -import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.res.useResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign @@ -35,6 +34,7 @@ import app.git.GitManager import app.images.ImagesCache import app.images.InMemoryImagesCache import app.theme.headerText +import app.ui.components.TooltipText import org.eclipse.jgit.lib.PersonIdent import org.jetbrains.skia.Image.Companion.makeFromEncoded @@ -75,7 +75,7 @@ fun CommitChanges( Divider(modifier = Modifier.fillMaxWidth()) - Author(commit.authorIdent) + Author(commit) } Column( @@ -105,9 +105,8 @@ fun CommitChanges( } @Composable -fun Author(authorIdent: PersonIdent?) { - if(authorIdent == null) - return +fun Author(commit: RevCommit) { + val authorIdent = commit.authorIdent Row( modifier = Modifier @@ -132,14 +131,16 @@ fun Author(authorIdent: PersonIdent?) { verticalArrangement = Arrangement.Center ) { Row { - Text( + TooltipText( text = authorIdent.name, color = MaterialTheme.colors.primaryTextColor, maxLines = 1, fontSize = 14.sp, + tooltipTitle = authorIdent.emailAddress, ) Spacer(modifier = Modifier.weight(1f, fill = true)) + val date = remember(authorIdent) { authorIdent.`when`.toSmartSystemString() } @@ -155,7 +156,7 @@ fun Author(authorIdent: PersonIdent?) { } Text( - text = authorIdent.emailAddress, + text = commit.id.abbreviate(7).name(), color = MaterialTheme.colors.secondaryTextColor, maxLines = 1, fontSize = 12.sp, diff --git a/src/main/kotlin/app/ui/components/TooltipText.kt b/src/main/kotlin/app/ui/components/TooltipText.kt new file mode 100644 index 0000000..b39b143 --- /dev/null +++ b/src/main/kotlin/app/ui/components/TooltipText.kt @@ -0,0 +1,77 @@ +package app.ui.components + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.TooltipArea +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Card +import androidx.compose.material.LocalTextStyle +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextLayoutResult +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.TextUnit +import androidx.compose.ui.unit.dp + +@OptIn(ExperimentalFoundationApi::class) +@Composable +fun TooltipText( + text: String, + modifier: Modifier = Modifier, + color: Color = Color.Unspecified, + fontSize: TextUnit = TextUnit.Unspecified, + fontStyle: FontStyle? = null, + fontWeight: FontWeight? = null, + fontFamily: FontFamily? = null, + letterSpacing: TextUnit = TextUnit.Unspecified, + textDecoration: TextDecoration? = null, + textAlign: TextAlign? = null, + lineHeight: TextUnit = TextUnit.Unspecified, + overflow: TextOverflow = TextOverflow.Clip, + softWrap: Boolean = true, + maxLines: Int = Int.MAX_VALUE, + onTextLayout: (TextLayoutResult) -> Unit = {}, + style: TextStyle = LocalTextStyle.current, + tooltipTitle: String, +) { + TooltipArea( + tooltip = { + Card ( + backgroundColor = MaterialTheme.colors.background, + elevation = 10.dp, + ) { + Text( + text = tooltipTitle, + modifier = Modifier.padding(10.dp) + ) + } + }, + ) { + Text( + text = text, + modifier = modifier, + color = color, + fontSize = fontSize, + fontStyle = fontStyle, + fontWeight = fontWeight, + fontFamily = fontFamily, + letterSpacing = letterSpacing, + textDecoration = textDecoration, + textAlign = textAlign, + lineHeight = lineHeight, + overflow = overflow, + softWrap = softWrap, + maxLines = maxLines, + style = style, + onTextLayout = onTextLayout, + ) + } +} \ No newline at end of file