Add diagnostic pane coloring
- Give each top-level pane a distinct temporary diagnostic color and stripe pattern. - Give the root app background a separate purple diagnostic color so empty space outside panes is identifiable.
This commit is contained in:
@@ -19,8 +19,8 @@ android {
|
|||||||
applicationId = "solutions.tretter.githugandroid"
|
applicationId = "solutions.tretter.githugandroid"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 141
|
versionCode = 142
|
||||||
versionName = "0.1.140"
|
versionName = "0.1.141"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import androidx.compose.ui.graphics.Color
|
|||||||
val PanelPrimary = Color(0xFF121212)
|
val PanelPrimary = Color(0xFF121212)
|
||||||
val PanelSecondary = Color(0xFF1E1E1E)
|
val PanelSecondary = Color(0xFF1E1E1E)
|
||||||
val PanelTertiary = Color(0xFF262626)
|
val PanelTertiary = Color(0xFF262626)
|
||||||
val AppBackground = PanelSecondary
|
val AppBackground = Color(0xFF2D1745)
|
||||||
val TerminalBackground = Color(0xFF050505)
|
val TerminalBackground = Color(0xFF050505)
|
||||||
val TextPrimary = Color(0xFFFFFFFF)
|
val TextPrimary = Color(0xFFFFFFFF)
|
||||||
val TextSecondary = Color(0xFFE6E6E6)
|
val TextSecondary = Color(0xFFE6E6E6)
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ import androidx.compose.material3.TextButton
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.drawBehind
|
||||||
|
import androidx.compose.ui.geometry.Offset
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
@@ -87,13 +90,15 @@ private fun PaneCard(
|
|||||||
) {
|
) {
|
||||||
Card(
|
Card(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
colors = CardDefaults.cardColors(containerColor = PanelSecondary),
|
colors = CardDefaults.cardColors(containerColor = paneDiagnosticBase(paneId)),
|
||||||
shape = RoundedCornerShape(16.dp),
|
shape = RoundedCornerShape(16.dp),
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.wrapContentHeight(),
|
.wrapContentHeight()
|
||||||
|
.background(paneDiagnosticBase(paneId))
|
||||||
|
.paneDiagnosticPattern(paneId),
|
||||||
) {
|
) {
|
||||||
PaneHeader(
|
PaneHeader(
|
||||||
paneId = paneId,
|
paneId = paneId,
|
||||||
@@ -108,6 +113,8 @@ private fun PaneCard(
|
|||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.wrapContentHeight()
|
.wrapContentHeight()
|
||||||
|
.background(paneDiagnosticContent(paneId))
|
||||||
|
.paneDiagnosticPattern(paneId)
|
||||||
.padding(horizontal = 12.dp, vertical = 10.dp),
|
.padding(horizontal = 12.dp, vertical = 10.dp),
|
||||||
) {
|
) {
|
||||||
content()
|
content()
|
||||||
@@ -127,7 +134,7 @@ private fun CollapsedPaneCard(
|
|||||||
) {
|
) {
|
||||||
Card(
|
Card(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
colors = CardDefaults.cardColors(containerColor = PanelSecondary),
|
colors = CardDefaults.cardColors(containerColor = paneDiagnosticBase(paneId)),
|
||||||
shape = RoundedCornerShape(16.dp),
|
shape = RoundedCornerShape(16.dp),
|
||||||
) {
|
) {
|
||||||
PaneHeader(
|
PaneHeader(
|
||||||
@@ -155,7 +162,8 @@ private fun PaneHeader(
|
|||||||
Row(
|
Row(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.background(if (collapsed) PanelTertiary else PanelPrimary)
|
.background(if (collapsed) paneDiagnosticCollapsed(paneId) else paneDiagnosticHeader(paneId))
|
||||||
|
.paneDiagnosticPattern(paneId)
|
||||||
.padding(horizontal = 10.dp, vertical = 6.dp),
|
.padding(horizontal = 10.dp, vertical = 6.dp),
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
@@ -169,6 +177,50 @@ private fun PaneHeader(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun paneDiagnosticBase(paneId: PaneId): Color = when (paneId) {
|
||||||
|
PaneId.EXERCISE -> Color(0xFF17345C)
|
||||||
|
PaneId.TERMINAL -> Color(0xFF4A1B1B)
|
||||||
|
PaneId.VISUAL -> Color(0xFF173F2A)
|
||||||
|
PaneId.LEVELS -> Color(0xFF4A3A12)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun paneDiagnosticContent(paneId: PaneId): Color = when (paneId) {
|
||||||
|
PaneId.EXERCISE -> Color(0xFF1C477B)
|
||||||
|
PaneId.TERMINAL -> Color(0xFF612424)
|
||||||
|
PaneId.VISUAL -> Color(0xFF1C5739)
|
||||||
|
PaneId.LEVELS -> Color(0xFF654F16)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun paneDiagnosticHeader(paneId: PaneId): Color = when (paneId) {
|
||||||
|
PaneId.EXERCISE -> Color(0xFF0F2748)
|
||||||
|
PaneId.TERMINAL -> Color(0xFF351313)
|
||||||
|
PaneId.VISUAL -> Color(0xFF102F20)
|
||||||
|
PaneId.LEVELS -> Color(0xFF372B0D)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun paneDiagnosticCollapsed(paneId: PaneId): Color = paneDiagnosticContent(paneId)
|
||||||
|
|
||||||
|
private fun Modifier.paneDiagnosticPattern(paneId: PaneId): Modifier = drawBehind {
|
||||||
|
val stripeColor = when (paneId) {
|
||||||
|
PaneId.EXERCISE -> Color(0x6684C5FF)
|
||||||
|
PaneId.TERMINAL -> Color(0x66FF9A9A)
|
||||||
|
PaneId.VISUAL -> Color(0x667CFFB1)
|
||||||
|
PaneId.LEVELS -> Color(0x66FFE082)
|
||||||
|
}
|
||||||
|
val strokeWidth = 2.dp.toPx()
|
||||||
|
val spacing = 34.dp.toPx()
|
||||||
|
var start = -size.height
|
||||||
|
while (start < size.width) {
|
||||||
|
drawLine(
|
||||||
|
color = stripeColor,
|
||||||
|
start = Offset(start, size.height),
|
||||||
|
end = Offset(start + size.height, 0f),
|
||||||
|
strokeWidth = strokeWidth,
|
||||||
|
)
|
||||||
|
start += spacing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun HeaderActionButton(
|
private fun HeaderActionButton(
|
||||||
label: String,
|
label: String,
|
||||||
|
|||||||
Reference in New Issue
Block a user