Increased default graph width & now graph width is saved across tabs

This commit is contained in:
Abdelilah El Aissaoui 2022-08-06 04:00:06 +02:00
parent dc31181387
commit 8db0313eb9
2 changed files with 29 additions and 16 deletions

View File

@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.* import androidx.compose.material.*
@ -33,12 +32,10 @@ import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.extensions.* import app.extensions.*
import app.git.StatusSummary import app.git.StatusSummary
import app.git.graph.GraphCommitList import app.git.graph.GraphCommitList
@ -73,6 +70,7 @@ private val colors = listOf(
) )
private const val CANVAS_MIN_WIDTH = 100 private const val CANVAS_MIN_WIDTH = 100
private const val CANVAS_DEFAULT_WIDTH = 120
private const val MIN_GRAPH_LANES = 2 private const val MIN_GRAPH_LANES = 2
/** /**
@ -141,8 +139,8 @@ fun Log(
.background(MaterialTheme.colors.background) .background(MaterialTheme.colors.background)
.fillMaxSize() .fillMaxSize()
) { ) {
val weightMod = remember { mutableStateOf(0f) } var graphPadding by remember(logViewModel) { mutableStateOf(logViewModel.graphPadding) }
var graphWidth = (CANVAS_MIN_WIDTH + weightMod.value).dp var graphWidth = (CANVAS_DEFAULT_WIDTH + graphPadding).dp
if (graphWidth.value < CANVAS_MIN_WIDTH) graphWidth = CANVAS_MIN_WIDTH.dp if (graphWidth.value < CANVAS_MIN_WIDTH) graphWidth = CANVAS_MIN_WIDTH.dp
@ -151,7 +149,10 @@ fun Log(
} }
GraphHeader( GraphHeader(
graphWidth = graphWidth, graphWidth = graphWidth,
weightMod = weightMod, onPaddingChange = {
graphPadding += it
logViewModel.graphPadding = graphPadding
},
onShowSearch = { scope.launch { logViewModel.onSearchValueChanged("") } } onShowSearch = { scope.launch { logViewModel.onSearchValueChanged("") } }
) )
@ -196,7 +197,8 @@ fun Log(
DividerLog( DividerLog(
modifier = Modifier.draggable( modifier = Modifier.draggable(
rememberDraggableState { rememberDraggableState {
weightMod.value += it * density graphPadding += it * density
logViewModel.graphPadding = graphPadding
}, Orientation.Horizontal }, Orientation.Horizontal
), ),
graphWidth = graphWidth, graphWidth = graphWidth,
@ -484,7 +486,9 @@ fun GraphList(
if (hasUncommitedChanges) { if (hasUncommitedChanges) {
item { item {
Row( Row(
modifier = Modifier.height(LINE_HEIGHT.dp).fillMaxWidth(), modifier = Modifier
.height(LINE_HEIGHT.dp)
.fillMaxWidth(),
) { ) {
UncommitedChangesGraphNode( UncommitedChangesGraphNode(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
@ -561,7 +565,7 @@ fun LogDialogs(
@Composable @Composable
fun GraphHeader( fun GraphHeader(
graphWidth: Dp, graphWidth: Dp,
weightMod: MutableState<Float>, onPaddingChange: (Float) -> Unit,
onShowSearch: () -> Unit onShowSearch: () -> Unit
) { ) {
Box( Box(
@ -575,7 +579,9 @@ fun GraphHeader(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Text( Text(
modifier = Modifier.width(graphWidth).padding(start = 16.dp), modifier = Modifier
.width(graphWidth)
.padding(start = 16.dp),
text = "Graph", text = "Graph",
color = MaterialTheme.colors.headerText, color = MaterialTheme.colors.headerText,
style = MaterialTheme.typography.body2, style = MaterialTheme.typography.body2,
@ -587,7 +593,7 @@ fun GraphHeader(
SimpleDividerLog( SimpleDividerLog(
modifier = Modifier.draggable( modifier = Modifier.draggable(
rememberDraggableState { rememberDraggableState {
weightMod.value += it * density // Multiply by density for screens with scaling > 1 onPaddingChange(it * density) // Multiply by density for screens with scaling > 1
}, Orientation.Horizontal }, Orientation.Horizontal
), ),
) )
@ -603,7 +609,8 @@ fun GraphHeader(
) )
IconButton( IconButton(
modifier = Modifier.padding(end = 8.dp) modifier = Modifier
.padding(end = 8.dp)
.pointerHoverIcon(PointerIconDefaults.Hand), .pointerHoverIcon(PointerIconDefaults.Hand),
onClick = onShowSearch onClick = onShowSearch
) { ) {
@ -627,7 +634,8 @@ fun UncommitedChangesLine(
onUncommitedChangesSelected: () -> Unit, onUncommitedChangesSelected: () -> Unit,
) { ) {
Row( Row(
modifier = Modifier.height(40.dp) modifier = Modifier
.height(40.dp)
.fillMaxWidth() .fillMaxWidth()
.clickable { onUncommitedChangesSelected() } .clickable { onUncommitedChangesSelected() }
.padding(start = graphWidth) .padding(start = graphWidth)
@ -965,7 +973,9 @@ fun CommitsGraphLine(
} }
CommitNode( CommitNode(
modifier = Modifier.align(Alignment.CenterStart).padding(start = ((itemPosition + 1) * 30 - 15).dp), modifier = Modifier
.align(Alignment.CenterStart)
.padding(start = ((itemPosition + 1) * 30 - 15).dp),
plotCommit = plotCommit, plotCommit = plotCommit,
color = nodeColor, color = nodeColor,
) )
@ -1137,7 +1147,9 @@ fun RefChip(
) { ) {
Box(modifier = Modifier.background(color = color)) { Box(modifier = Modifier.background(color = color)) {
Icon( Icon(
modifier = Modifier.padding(6.dp).size(14.dp), modifier = Modifier
.padding(6.dp)
.size(14.dp),
painter = painterResource(icon), painter = painterResource(icon),
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colors.background, tint = MaterialTheme.colors.background,

View File

@ -48,6 +48,7 @@ class LogViewModel @Inject constructor(
get() = _logStatus get() = _logStatus
var savedSearchFilter: String = "" var savedSearchFilter: String = ""
var graphPadding = 0f
private val _focusCommit = MutableSharedFlow<GraphNode>() private val _focusCommit = MutableSharedFlow<GraphNode>()
val focusCommit: SharedFlow<GraphNode> = _focusCommit val focusCommit: SharedFlow<GraphNode> = _focusCommit