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 @@ 当前服务器暂无可用内容 暂无收藏内容 浏览媒体并添加收藏 + 暂无服务器 + 点击右上角添加服务器 暂无日历数据 日历功能即将推出