From 4a7adfadaa99263fedd751aa4daba285bdb23447 Mon Sep 17 00:00:00 2001
From: beyond
Date: Wed, 26 Aug 2026 17:34:35 +0800
Subject: [PATCH] =?UTF-8?q?1.=E8=B5=84=E6=BA=90=E5=BA=93=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A0=E6=95=B0=E6=8D=AE=E7=8A=B6=E6=80=81?=
=?UTF-8?q?=E6=98=BE=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/example/myapplication/MainApp.kt | 10 +-
.../myapplication/screens/LibraryScreen.kt | 100 +++++++++++++-----
app/src/main/res/values-en/strings.xml | 2 +
app/src/main/res/values/strings.xml | 2 +
4 files changed, 81 insertions(+), 33 deletions(-)
diff --git a/app/src/main/kotlin/com/example/myapplication/MainApp.kt b/app/src/main/kotlin/com/example/myapplication/MainApp.kt
index 3443370..0d7b2d1 100644
--- a/app/src/main/kotlin/com/example/myapplication/MainApp.kt
+++ b/app/src/main/kotlin/com/example/myapplication/MainApp.kt
@@ -173,12 +173,7 @@ fun MainApp() {
when (selectedTab) {
0 -> Spacer(Modifier.height(0.dp))
1 -> Spacer(Modifier.height(0.dp))
- 2 -> LibraryTopBar(
- isGrid = libraryIsGrid,
- onViewToggle = { libraryIsGrid = !libraryIsGrid },
- onAdd = { showLibraryAddDialog = true },
- onOpenIconLibraryManager = { showIconLibraryManager = true },
- )
+ 2 -> Spacer(Modifier.height(0.dp))
3 -> {
if (showCacheDetail) {
Row(
@@ -289,6 +284,9 @@ fun MainApp() {
showAddDialog = showLibraryAddDialog,
onDismissAddDialog = { showLibraryAddDialog = false },
isGrid = libraryIsGrid,
+ onViewToggle = { libraryIsGrid = !libraryIsGrid },
+ onAdd = { showLibraryAddDialog = true },
+ onOpenIconLibraryManager = { showIconLibraryManager = true },
onChangeIconTarget = changeIconTarget,
onDismissChangeIcon = { changeIconTarget = null },
onPickIcon = { server, iconUrl ->
diff --git a/app/src/main/kotlin/com/example/myapplication/screens/LibraryScreen.kt b/app/src/main/kotlin/com/example/myapplication/screens/LibraryScreen.kt
index 07d2df1..11e6338 100644
--- a/app/src/main/kotlin/com/example/myapplication/screens/LibraryScreen.kt
+++ b/app/src/main/kotlin/com/example/myapplication/screens/LibraryScreen.kt
@@ -275,6 +275,9 @@ fun LibraryScreen(
onDismissChangeIcon: () -> Unit = {},
onPickIcon: (EmbyServer, String) -> Unit = { _, _ -> },
onRequestChangeIcon: (EmbyServer) -> Unit = {},
+ onViewToggle: () -> Unit = {},
+ onAdd: () -> Unit = {},
+ onOpenIconLibraryManager: () -> Unit = {},
) {
var editingServer by remember { mutableStateOf(null) }
@@ -299,35 +302,78 @@ fun LibraryScreen(
onPick = { srv, url -> onPickIcon(srv, url); onDismissChangeIcon() },
)
}
- LazyVerticalGrid(
- columns = if (isGrid) GridCells.Fixed(2) else GridCells.Fixed(1),
- modifier = Modifier.fillMaxSize().padding(horizontal = if (isGrid) 16.dp else 0.dp),
- contentPadding = PaddingValues(top = 16.dp, bottom = bottomBarContentPadding(86.dp).calculateBottomPadding()),
- verticalArrangement = Arrangement.spacedBy(if (isGrid) 12.dp else 10.dp),
- horizontalArrangement = Arrangement.spacedBy(if (isGrid) 12.dp else 0.dp),
- ) {
- // Servers section
- items(servers.size) { index ->
- val server = servers[index]
- val tint = serverTints[index % serverTints.size]
- if (isGrid) {
- ServerGridCard(
- server = server, tint = tint,
- onClick = { onSelectServer(server.id) },
- onChangeIcon = { onRequestChangeIcon(server) },
- onDelete = { onDeleteServer(server.id) },
- onEdit = { editingServer = server },
- )
- } else {
- ServerCard(
- server = server, tint = tint,
- onClick = { onSelectServer(server.id) },
- onChangeIcon = { onRequestChangeIcon(server) },
- onDelete = { onDeleteServer(server.id) },
- onEdit = { editingServer = server },
- )
+ Box(Modifier.fillMaxSize()) {
+
+ if (servers.isEmpty()) {
+ Box(
+ Modifier.fillMaxSize().padding(bottom = bottomBarContentPadding(90.dp).calculateBottomPadding()),
+ contentAlignment = Alignment.Center,
+ ) {
+ Column(
+ horizontalAlignment = Alignment.CenterHorizontally,
+ ) {
+ Box(
+ Modifier
+ .size(64.dp)
+ .clip(CircleShape)
+ .background(GlassTokens.glassFill)
+ .border(1.dp, GlassTokens.glassBorder, CircleShape),
+ contentAlignment = Alignment.Center,
+ ) {
+ Icon(
+ imageVector = Icons.Outlined.Add,
+ contentDescription = null,
+ tint = GlassTokens.subtext2,
+ modifier = Modifier.size(32.dp),
+ )
+ }
+ Spacer(Modifier.height(16.dp))
+ Text(text = stringResource(Res.string.empty_servers), color = GlassTokens.subtext, fontSize = 15.sp)
+ Spacer(Modifier.height(6.dp))
+ Text(text = stringResource(Res.string.empty_servers_sub), color = GlassTokens.subtext, fontSize = 12.sp)
+ }
+ }
+ } else {
+ LazyVerticalGrid(
+ columns = if (isGrid) GridCells.Fixed(2) else GridCells.Fixed(1),
+ modifier = Modifier.fillMaxSize().padding(horizontal = if (isGrid) 16.dp else 0.dp),
+ contentPadding = PaddingValues(top = 16.dp, bottom = bottomBarContentPadding(86.dp).calculateBottomPadding()),
+ verticalArrangement = Arrangement.spacedBy(if (isGrid) 12.dp else 10.dp),
+ horizontalArrangement = Arrangement.spacedBy(if (isGrid) 12.dp else 0.dp),
+ ) {
+ // Servers section
+ items(servers.size) { index ->
+ val server = servers[index]
+ val tint = serverTints[index % serverTints.size]
+ if (isGrid) {
+ ServerGridCard(
+ server = server, tint = tint,
+ onClick = { onSelectServer(server.id) },
+ onChangeIcon = { onRequestChangeIcon(server) },
+ onDelete = { onDeleteServer(server.id) },
+ onEdit = { editingServer = server },
+ )
+ } else {
+ ServerCard(
+ server = server, tint = tint,
+ onClick = { onSelectServer(server.id) },
+ onChangeIcon = { onRequestChangeIcon(server) },
+ onDelete = { onDeleteServer(server.id) },
+ onEdit = { editingServer = server },
+ )
+ }
+ }
}
}
+
+ // Overlay top bar (same pattern as HomeScreen)
+ LibraryTopBar(
+ isGrid = isGrid,
+ onViewToggle = onViewToggle,
+ onAdd = onAdd,
+ onOpenIconLibraryManager = onOpenIconLibraryManager,
+ modifier = Modifier.align(Alignment.TopCenter),
+ )
}
}
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 8916a47..b397bac 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -100,6 +100,8 @@
The current server has no content available
No favorites yet
Browse media and add to favorites
+ No servers yet
+ Tap the add button to get started
No calendar data
Calendar feature coming soon
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 28d615b..0d8397f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -100,6 +100,8 @@
当前服务器暂无可用内容
暂无收藏内容
浏览媒体并添加收藏
+ 暂无服务器
+ 点击右上角添加服务器
暂无日历数据
日历功能即将推出