From e69b4ce6840a328be83c0393dac6419bb8450528 Mon Sep 17 00:00:00 2001 From: Richter3766 <97567615+Richter3766@users.noreply.github.com> Date: Thu, 27 Feb 2025 13:30:47 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20TopAppBar=20=EC=95=84=EB=9E=98?= =?UTF-8?q?=EC=97=90=20=EA=B5=AC=EB=B6=84=EC=84=A0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notimanager/presentation/ui/screen/MainScreen.kt | 8 ++++++++ .../presentation/ui/screen/NotificationScreen.kt | 8 ++++++++ .../notimanager/presentation/ui/screen/TitleScreen.kt | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/screen/MainScreen.kt b/app/src/main/java/com/example/notimanager/presentation/ui/screen/MainScreen.kt index 00f9c4c..f6cf750 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/screen/MainScreen.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/screen/MainScreen.kt @@ -1,7 +1,11 @@ package com.example.notimanager.presentation.ui.screen +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp import androidx.navigation.NavController import com.example.notimanager.presentation.ui.component.MainTopAppBar import com.example.notimanager.presentation.ui.component.NotificationAppListView @@ -14,6 +18,10 @@ fun MainScreen(navController: NavController){ MainTopAppBar() } ) { innerPadding -> + HorizontalDivider( + modifier = Modifier.padding(innerPadding), + thickness = 0.2.dp + ) NotificationAppListView(navController, innerPadding) } PermissionCheck() diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationScreen.kt b/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationScreen.kt index 3777763..4101f3a 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationScreen.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationScreen.kt @@ -1,8 +1,12 @@ package com.example.notimanager.presentation.ui.screen +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavController import com.example.notimanager.presentation.stateholder.viewmodel.NotificationViewModel @@ -21,6 +25,10 @@ fun NotificationScreen(navController: NavController, appName: String = "", title NotificationTopAppBar(title = title, onBackClick = { navController.popBackStack() }) } ) { innerPadding -> + HorizontalDivider( + modifier = Modifier.padding(innerPadding), + thickness = 0.2.dp + ) NotificationListView(innerPadding, viewModel) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/screen/TitleScreen.kt b/app/src/main/java/com/example/notimanager/presentation/ui/screen/TitleScreen.kt index a2a2a15..9d6091b 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/screen/TitleScreen.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/screen/TitleScreen.kt @@ -1,8 +1,12 @@ package com.example.notimanager.presentation.ui.screen +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavController import com.example.notimanager.presentation.stateholder.viewmodel.NotificationTitlePriorityViewModel @@ -24,6 +28,10 @@ fun TitleScreen(navController: NavController, appName: String = "", title:String TitleTopAppBar(title = title, onBackClick = { navController.popBackStack() }) } ) { innerPadding -> + HorizontalDivider( + modifier = Modifier.padding(innerPadding), + thickness = 0.2.dp + ) NotificationTitleListView(navController, innerPadding, viewModel, priorityViewModel) } } \ No newline at end of file From f580464fdf3c4b114657eac00560071f670bed5d Mon Sep 17 00:00:00 2001 From: Richter3766 <97567615+Richter3766@users.noreply.github.com> Date: Thu, 27 Feb 2025 16:47:20 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=EC=9A=B0=EC=84=A0=EC=88=9C?= =?UTF-8?q?=EC=9C=84=20-=20=EB=B9=84=EC=9A=B0=EC=84=A0=EC=88=9C=EC=9C=84?= =?UTF-8?q?=20=EA=B5=AC=EB=B6=84=EC=84=A0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 우선순위 리스트 아래에 구분선을 추가함. 광고 추가 이후에는 광고로 바꿀 예정. --- .../ui/component/NotificationAppListView.kt | 24 +++++++++++++---- .../ui/component/NotificationTitleListView.kt | 27 ++++++++++++------- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationAppListView.kt b/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationAppListView.kt index 0f036ac..1f16ac3 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationAppListView.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/component/NotificationAppListView.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -57,12 +58,8 @@ fun NotificationAppListView( } else if (notificationAppState.error != null) { } else { - val combinedList = mutableListOf() - combinedList.addAll(priorityState.notificationAppList) - combinedList.addAll(notificationAppState.notificationAppList) - // TODO: 드래그로 우선순위 변경 가능하게 수정 LazyColumn { - items(combinedList) { notification -> + items(priorityState.notificationAppList) { notification -> NotificationAppItemView( notification = notification, onClick = { @@ -74,6 +71,23 @@ fun NotificationAppListView( priorityViewModel = priorityViewModel ) } + + item { + HorizontalDivider() + } + + items(notificationAppState.notificationAppList) { notification -> + NotificationAppItemView( + notification = notification, + onClick = { + navController + .navigate("titleScreen/${notification.appName}/${notification.title}" + ) + }, + viewModel = viewModel, + priorityViewModel = priorityViewModel + ) + } } } } 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 531e5d1..cce4e19 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 @@ -13,6 +13,7 @@ import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -58,19 +59,25 @@ fun NotificationTitleListView( } else if (notificationTitleState.error != null) { } else { - val combinedList = mutableListOf() - combinedList.addAll(priorityState.notificationTitleList) - combinedList.addAll(notificationTitleState.notificationTitleList) - // TODO: 드래그로 우선순위 변경 가능하게 수정 LazyColumn { - items(combinedList) { notification -> - NotificationTitleItemView (notification = notification, onClick = { + items(priorityState.notificationTitleList) { notification -> + NotificationTitleItemView(notification = notification, onClick = { navController.navigate( "notificationScreen/${viewModel.getAppName()}/${notification.title}" - )}, - viewModel = viewModel, - priorityViewModel = priorityViewModel - ) + ) + }, viewModel = viewModel, priorityViewModel = priorityViewModel) + } + + item { + HorizontalDivider() + } + + items(notificationTitleState.notificationTitleList) { notification -> + NotificationTitleItemView(notification = notification, onClick = { + navController.navigate( + "notificationScreen/${viewModel.getAppName()}/${notification.title}" + ) + }, viewModel = viewModel, priorityViewModel = priorityViewModel) } } } From 94bd88855305e9c9bd9e580c90e3ebfd87700589 Mon Sep 17 00:00:00 2001 From: Richter3766 <97567615+Richter3766@users.noreply.github.com> Date: Thu, 27 Feb 2025 16:48:13 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=EC=9A=B0=EC=84=A0=EC=88=9C?= =?UTF-8?q?=EC=9C=84=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=A0=95=EB=A0=AC=20?= =?UTF-8?q?=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 드래그로 하려고 했으나, 버그가 많고, 보통 중요한 알림도 최근에 온 알림이 중요한 경우도 상당하므로, 정렬 순서를 시간순으로 변경함. --- .../notimanager/data/source/local/dao/NotificationDao.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/notimanager/data/source/local/dao/NotificationDao.kt b/app/src/main/java/com/example/notimanager/data/source/local/dao/NotificationDao.kt index 9f973e6..9a161a4 100644 --- a/app/src/main/java/com/example/notimanager/data/source/local/dao/NotificationDao.kt +++ b/app/src/main/java/com/example/notimanager/data/source/local/dao/NotificationDao.kt @@ -25,7 +25,7 @@ interface NotificationDao { FROM notification AS n2 WHERE n1.appName = n2.appName ) - ORDER BY ai.priority ASC + ORDER BY timestamp DESC """ ) suspend fun getNotificationAppPriorityList(): List @@ -43,7 +43,7 @@ interface NotificationDao { FROM notification AS n2 WHERE n1.appName = n2.appName AND n1.title = n2.title ) - ORDER BY ni.priority ASC + ORDER BY timestamp DESC """ ) suspend fun getNotificationTitlePriorityList(appName: String, title: String): List From 3040311b045a1e0b40952cd4fb6b4b74b5bdfcd4 Mon Sep 17 00:00:00 2001 From: Richter3766 <97567615+Richter3766@users.noreply.github.com> Date: Thu, 27 Feb 2025 16:48:50 +0900 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20null=20=EC=97=90=EB=9F=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 종종 intent에 패키지명이 null인 경우가 있어 오류가 났음. 이에 sbn에 있는 패키지명으로 intent를 만들도록 수정함. --- .../com/example/notimanager/data/service/NotiListenerService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/notimanager/data/service/NotiListenerService.kt b/app/src/main/java/com/example/notimanager/data/service/NotiListenerService.kt index fa3e036..df49b25 100644 --- a/app/src/main/java/com/example/notimanager/data/service/NotiListenerService.kt +++ b/app/src/main/java/com/example/notimanager/data/service/NotiListenerService.kt @@ -40,7 +40,7 @@ class NotiListenerService: NotificationListenerService() { CoroutineScope(Dispatchers.IO).launch { mutex.withLock { val id = insertNotification(appName, title, content, postTime) - insertNotificationMeta(id, notification.contentIntent.creatorPackage) + insertNotificationMeta(id, it.packageName) insertNotificationIcon(id, notification.getLargeIcon()) insertAppIcon(appName, notification.smallIcon, notification.color) }