diff --git a/app/src/main/java/dev/arkbuilders/drop/app/ui/Home/Home.kt b/app/src/main/java/dev/arkbuilders/drop/app/ui/Home/Home.kt index e32a31e..75df214 100644 --- a/app/src/main/java/dev/arkbuilders/drop/app/ui/Home/Home.kt +++ b/app/src/main/java/dev/arkbuilders/drop/app/ui/Home/Home.kt @@ -29,6 +29,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.scale +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight @@ -42,6 +44,7 @@ import compose.icons.tablericons.CloudDownload import compose.icons.tablericons.CloudUpload import compose.icons.tablericons.History import dev.arkbuilders.drop.app.ProfileManager +import dev.arkbuilders.drop.app.R import dev.arkbuilders.drop.app.UserProfile import dev.arkbuilders.drop.app.data.HistoryRepository import dev.arkbuilders.drop.app.data.TransferHistoryItem @@ -54,7 +57,6 @@ import dev.arkbuilders.drop.app.ui.components.DropCard import dev.arkbuilders.drop.app.ui.components.DropCardContent import dev.arkbuilders.drop.app.ui.components.DropCardSize import dev.arkbuilders.drop.app.ui.components.DropCardVariant -import dev.arkbuilders.drop.app.ui.components.DropLogoWithBackground import dev.arkbuilders.drop.app.ui.components.DropOutlinedButton import dev.arkbuilders.drop.app.ui.components.EmptyState import dev.arkbuilders.drop.app.ui.profile.AvatarUtils @@ -149,7 +151,12 @@ private fun HeaderSection( Box( modifier = Modifier.scale(logoScale) ) { - DropLogoWithBackground(size = 56.dp) + Icon( + modifier = Modifier.size(56.dp), + painter = painterResource(R.drawable.ic_logo), + contentDescription = null, + tint = Color.Unspecified, + ) } Column { diff --git a/app/src/main/java/dev/arkbuilders/drop/app/ui/components/DropLogo.kt b/app/src/main/java/dev/arkbuilders/drop/app/ui/components/DropLogo.kt deleted file mode 100644 index 7f819de..0000000 --- a/app/src/main/java/dev/arkbuilders/drop/app/ui/components/DropLogo.kt +++ /dev/null @@ -1,195 +0,0 @@ -package dev.arkbuilders.drop.app.ui.components - -import androidx.compose.foundation.Canvas -import androidx.compose.foundation.layout.size -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.geometry.center -import androidx.compose.ui.graphics.Brush -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.Path -import androidx.compose.ui.graphics.StrokeCap -import androidx.compose.ui.graphics.drawscope.DrawScope -import androidx.compose.ui.graphics.drawscope.Stroke -import androidx.compose.ui.graphics.drawscope.rotate -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp -import kotlin.math.cos -import kotlin.math.sin - -@Composable -fun DropLogo( - modifier: Modifier = Modifier, - size: Dp = 48.dp, - primaryColor: Color = MaterialTheme.colorScheme.primary, - secondaryColor: Color = MaterialTheme.colorScheme.secondary, - showBackground: Boolean = false, - backgroundColor: Color = MaterialTheme.colorScheme.primaryContainer -) { - Canvas( - modifier = modifier.size(size) - ) { - val canvasSize = this.size - val center = canvasSize.center - val radius = minOf(canvasSize.width, canvasSize.height) / 2f * 0.8f - - // Background circle if requested - if (showBackground) { - drawCircle( - color = backgroundColor, - radius = radius * 1.2f, - center = center - ) - } - - // Draw the main drop shape with gradient - val gradient = Brush.radialGradient( - colors = listOf( - primaryColor.copy(alpha = 0.9f), - primaryColor, - primaryColor.copy(alpha = 0.8f) - ), - center = center, - radius = radius - ) - - drawDropShape( - center = center, - radius = radius * 0.7f, - brush = gradient - ) - - // Draw connection lines representing file sharing - val connectionColor = secondaryColor.copy(alpha = 0.7f) - val strokeWidth = radius * 0.08f - - // Draw three curved connection lines - repeat(3) { index -> - rotate(degrees = index * 120f, pivot = center) { - drawConnectionLine( - center = center, - radius = radius * 0.9f, - color = connectionColor, - strokeWidth = strokeWidth - ) - } - } - - // Draw small dots at connection points - repeat(6) { index -> - val angle = (index * 60f) * (Math.PI / 180f) - val dotRadius = radius * 0.12f - val connectionRadius = radius * 0.9f - - val dotX = center.x + connectionRadius * cos(angle).toFloat() - val dotY = center.y + connectionRadius * sin(angle).toFloat() - - drawCircle( - color = secondaryColor, - radius = dotRadius, - center = Offset(dotX, dotY) - ) - } - - // Inner highlight for depth - drawCircle( - color = Color.White.copy(alpha = 0.3f), - radius = radius * 0.3f, - center = Offset(center.x - radius * 0.1f, center.y - radius * 0.1f) - ) - } -} - -private fun DrawScope.drawDropShape( - center: Offset, - radius: Float, - brush: Brush -) { - val path = Path().apply { - // Create a drop/teardrop shape - val topY = center.y - radius * 1.2f - val bottomY = center.y + radius * 0.8f - val leftX = center.x - radius * 0.8f - val rightX = center.x + radius * 0.8f - - // Start at the top point - moveTo(center.x, topY) - - // Right curve - cubicTo( - rightX, topY + radius * 0.3f, - rightX, bottomY - radius * 0.3f, - center.x, bottomY - ) - - // Left curve - cubicTo( - leftX, bottomY - radius * 0.3f, - leftX, topY + radius * 0.3f, - center.x, topY - ) - - close() - } - - drawPath( - path = path, - brush = brush - ) -} - -private fun DrawScope.drawConnectionLine( - center: Offset, - radius: Float, - color: Color, - strokeWidth: Float -) { - val path = Path().apply { - val startX = center.x - radius * 0.3f - val startY = center.y - val endX = center.x + radius * 0.3f - val endY = center.y - val controlY = center.y - radius * 0.2f - - moveTo(startX, startY) - quadraticBezierTo(center.x, controlY, endX, endY) - } - - drawPath( - path = path, - color = color, - style = Stroke( - width = strokeWidth, - cap = StrokeCap.Round - ) - ) -} - -@Composable -fun DropLogoIcon( - modifier: Modifier = Modifier, - size: Dp = 24.dp, - tint: Color = MaterialTheme.colorScheme.primary -) { - DropLogo( - modifier = modifier, - size = size, - primaryColor = tint, - secondaryColor = tint.copy(alpha = 0.7f), - showBackground = false - ) -} - -@Composable -fun DropLogoWithBackground( - modifier: Modifier = Modifier, - size: Dp = 72.dp -) { - DropLogo( - modifier = modifier, - size = size, - showBackground = true - ) -} diff --git a/app/src/main/java/dev/arkbuilders/drop/app/ui/receive/Receive.kt b/app/src/main/java/dev/arkbuilders/drop/app/ui/receive/Receive.kt index f32f3a5..91504a0 100644 --- a/app/src/main/java/dev/arkbuilders/drop/app/ui/receive/Receive.kt +++ b/app/src/main/java/dev/arkbuilders/drop/app/ui/receive/Receive.kt @@ -82,6 +82,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.style.TextAlign @@ -103,10 +104,10 @@ import compose.icons.tablericons.ArrowForward import compose.icons.tablericons.Camera import compose.icons.tablericons.CameraOff import compose.icons.tablericons.Qrcode +import dev.arkbuilders.drop.app.R import dev.arkbuilders.drop.app.TransferManager import dev.arkbuilders.drop.app.data.ReceiveFileInfo import dev.arkbuilders.drop.app.data.ReceivingProgress -import dev.arkbuilders.drop.app.ui.components.DropLogoIcon import dev.arkbuilders.drop.app.ui.profile.AvatarUtils import dev.arkbuilders.drop.app.ui.theme.DesignTokens import kotlinx.coroutines.delay @@ -329,9 +330,11 @@ fun Receive( Spacer(modifier = Modifier.width(DesignTokens.Spacing.md)) - DropLogoIcon( - size = 32.dp, - tint = MaterialTheme.colorScheme.primary + Icon( + modifier = Modifier.size(32.dp), + painter = painterResource(R.drawable.ic_logo), + contentDescription = null, + tint = Color.Unspecified, ) Spacer(modifier = Modifier.width(DesignTokens.Spacing.md)) diff --git a/app/src/main/java/dev/arkbuilders/drop/app/ui/send/Send.kt b/app/src/main/java/dev/arkbuilders/drop/app/ui/send/Send.kt index 816b842..14de362 100644 --- a/app/src/main/java/dev/arkbuilders/drop/app/ui/send/Send.kt +++ b/app/src/main/java/dev/arkbuilders/drop/app/ui/send/Send.kt @@ -95,6 +95,7 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalHapticFeedback +import androidx.compose.ui.res.painterResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.font.FontWeight @@ -116,8 +117,8 @@ import compose.icons.tablericons.Copy import compose.icons.tablericons.FileText import compose.icons.tablericons.Plus import compose.icons.tablericons.Qrcode +import dev.arkbuilders.drop.app.R import dev.arkbuilders.drop.app.TransferManager -import dev.arkbuilders.drop.app.ui.components.DropLogoIcon import dev.arkbuilders.drop.app.ui.profile.AvatarUtils import kotlinx.coroutines.currentCoroutineContext import kotlinx.coroutines.delay @@ -605,8 +606,11 @@ private fun SendTopBar( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(12.dp) ) { - DropLogoIcon( - size = 24.dp, tint = MaterialTheme.colorScheme.primary + Icon( + modifier = Modifier.size(24.dp), + painter = painterResource(R.drawable.ic_logo), + contentDescription = null, + tint = Color.Unspecified, ) Text( text = "Send Files", style = MaterialTheme.typography.headlineSmall.copy( diff --git a/app/src/main/res/drawable/ic_logo.xml b/app/src/main/res/drawable/ic_logo.xml new file mode 100644 index 0000000..bd64ec1 --- /dev/null +++ b/app/src/main/res/drawable/ic_logo.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + +