From ee8e00dba7e2a6c3bccf8d6fee455303d7682d98 Mon Sep 17 00:00:00 2001 From: Richter3766 <97567615+Richter3766@users.noreply.github.com> Date: Sun, 2 Mar 2025 10:42:12 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=95=8C=EB=A6=BC=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20UI=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 알림 클릭 시 해당 앱으로 바로 이동하지 않고, BottomModalSheet를 띄워 선택할 수 있도록 함. --- .../ui/component/NotificationListView.kt | 63 ++++++++++++++++--- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationListView.kt b/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationListView.kt index 2bce24d..9fd1b8e 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationListView.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationListView.kt @@ -8,8 +8,8 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.foundation.text.BasicText import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -18,7 +18,10 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.example.notimanager.common.objects.DateFormatter.formatTimestamp import com.example.notimanager.domain.model.Notification @@ -50,18 +53,64 @@ fun NotificationListView(notificationState: NotificationState) { @Composable fun NotificationItemView(notification: Notification, onClick: () -> Unit) { + var showModal by remember { mutableStateOf(false) } Row( modifier = Modifier .padding(16.dp) .fillMaxWidth() - .clickable(onClick = onClick), - verticalAlignment = Alignment.CenterVertically + .clickable(onClick = { + showModal = true + }), + verticalAlignment = Alignment.Top ) { AppIconView(notification.notificationIcon) - Column { - BasicText(text = notification.title, style = MaterialTheme.typography.bodyLarge) - BasicText(text = notification.content, style = MaterialTheme.typography.bodyMedium) - BasicText(text = formatTimestamp(notification.timestamp), style = MaterialTheme.typography.bodyMedium) + Column ( + modifier = Modifier.padding(start = 16.dp) + ){ + Text( + text = notification.title, + style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.Bold) + ) + Text( + text = notification.content, + style = MaterialTheme.typography.bodySmall + ) + Text( + text = formatTimestamp(notification.timestamp), + style = MaterialTheme.typography.labelSmall, + color = Color.LightGray + ) + } + + if (showModal) { + BottomSheet(showModal, onDismiss = { showModal = false }){ + Column( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { + Text( + text = notification.title, + style = MaterialTheme.typography.labelLarge, + color = Color.Gray + ) + Text( + text = notification.content, + style = MaterialTheme.typography.labelSmall, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + color = Color.Gray + ) + ClickableTextView(text = "앱으로 이동", onClick = { + onClick() + showModal = false + }) + + ClickableTextView(text = "삭제", onClick = { + showModal = false + }) + } + } } } } \ No newline at end of file From 452ab2270301afff9aadeefd98fbae01e34db848 Mon Sep 17 00:00:00 2001 From: Richter3766 <97567615+Richter3766@users.noreply.github.com> Date: Sun, 2 Mar 2025 10:43:25 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=EC=A0=9C=EB=AA=A9=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit subText로 묶인 방의 경우 더보기 창에서 subText가 제목으로 나오도록 함. 그리고 subText, title 존재 여부에 따른 UI를 하나로 묶어 처리. --- .../ui/component/NotificationTitleListView.kt | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationTitleListView.kt b/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationTitleListView.kt index 90cde61..e49e50b 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationTitleListView.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationTitleListView.kt @@ -111,17 +111,10 @@ fun NotificationTitleItemView( Column ( modifier = Modifier.weight(1f) ){ - if (notification.subText == "") { - Text( - text = notification.title, - style = MaterialTheme.typography.bodySmall.copy(fontWeight = FontWeight.Bold) - ) - }else{ - Text( - text = notification.subText, - style = MaterialTheme.typography.bodySmall.copy(fontWeight = FontWeight.Bold) - ) - } + Text( + text = if (notification.subText == "") notification.title else notification.subText , + style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.Bold) + ) Text( text = notification.content, style = MaterialTheme.typography.bodySmall, @@ -147,10 +140,11 @@ fun NotificationTitleItemView( .padding(16.dp) ) { Text( - text = notification.title, + text = if (notification.subText == "") notification.title else notification.subText, style = MaterialTheme.typography.labelLarge, color = Color.Gray ) + if (notification.priorityActive) { ClickableTextView(text = "중요 알림 취소", onClick = { priorityViewModel.removeTitlePriority(notificationId = notification.id){