@@ -35,6 +35,7 @@ import com.aiosman.ravenow.LocalSharedTransitionScope
|
||||
import com.aiosman.ravenow.ui.about.AboutScreen
|
||||
import com.aiosman.ravenow.ui.account.AccountEditScreen2
|
||||
import com.aiosman.ravenow.ui.account.AccountSetting
|
||||
import com.aiosman.ravenow.ui.account.BlockedUsersScreen
|
||||
import com.aiosman.ravenow.ui.account.MbtiSelectScreen
|
||||
import com.aiosman.ravenow.ui.account.RemoveAccountScreen
|
||||
import com.aiosman.ravenow.ui.account.ResetPasswordScreen
|
||||
@@ -135,6 +136,7 @@ sealed class NavigationRoute(
|
||||
data object ZodiacSelect : NavigationRoute("ZodiacSelect")
|
||||
data object ScanQr : NavigationRoute("ScanQr")
|
||||
data object AiPromptEdit : NavigationRoute("AiPromptEdit/{chatAIId}")
|
||||
data object BlockedUsersScreen : NavigationRoute("BlockedUsersScreen")
|
||||
}
|
||||
|
||||
|
||||
@@ -439,6 +441,9 @@ fun NavigationController(
|
||||
composable(route = NavigationRoute.ChangePasswordScreen.route) {
|
||||
ChangePasswordScreen()
|
||||
}
|
||||
composable(route = NavigationRoute.BlockedUsersScreen.route) {
|
||||
BlockedUsersScreen()
|
||||
}
|
||||
composable(route = NavigationRoute.RemoveAccountScreen.route) {
|
||||
RemoveAccountScreen()
|
||||
}
|
||||
|
||||
@@ -161,9 +161,7 @@ fun AccountSetting() {
|
||||
SecurityOptionItem(
|
||||
iconRes = R.mipmap.icons_block,
|
||||
label = stringResource(R.string.blocked_users),
|
||||
onClick = {
|
||||
// TODO: 导航到屏蔽用户页面
|
||||
}
|
||||
onClick = { navController.navigate(NavigationRoute.BlockedUsersScreen.route) }
|
||||
)
|
||||
|
||||
SecurityOptionItem(
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
package com.aiosman.ravenow.ui.account
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.aiosman.ravenow.LocalAppTheme
|
||||
import com.aiosman.ravenow.LocalNavController
|
||||
import com.aiosman.ravenow.R
|
||||
import com.aiosman.ravenow.ui.composables.StatusBarSpacer
|
||||
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
||||
|
||||
private object BlockedUsersConstants {
|
||||
const val BACK_BUTTON_SIZE = 36
|
||||
const val BACK_BUTTON_ICON_SIZE = 24
|
||||
const val BACK_BUTTON_START_PADDING = 19
|
||||
const val HEADER_VERTICAL_PADDING = 16
|
||||
const val TITLE_OFFSET_X = 19
|
||||
const val TITLE_TEXT_SIZE = 17
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun CircularBackButton(
|
||||
onClick: () -> Unit,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
val appColors = LocalAppTheme.current
|
||||
Image(
|
||||
painter = painterResource(id = R.drawable.rider_pro_back_icon),
|
||||
contentDescription = "返回",
|
||||
modifier = modifier
|
||||
.size(BlockedUsersConstants.BACK_BUTTON_ICON_SIZE.dp)
|
||||
.noRippleClickable { onClick() },
|
||||
colorFilter = ColorFilter.tint(appColors.text)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 被屏蔽的用户界面
|
||||
*/
|
||||
@Composable
|
||||
fun BlockedUsersScreen() {
|
||||
val appColors = LocalAppTheme.current
|
||||
val navController = LocalNavController.current
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.background(appColors.background),
|
||||
) {
|
||||
StatusBarSpacer()
|
||||
|
||||
// 顶部标题栏
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = BlockedUsersConstants.HEADER_VERTICAL_PADDING.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
CircularBackButton(
|
||||
onClick = { navController.navigateUp() },
|
||||
modifier = Modifier.padding(start = BlockedUsersConstants.BACK_BUTTON_START_PADDING.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(12.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.blocked_users),
|
||||
fontWeight = FontWeight.W800,
|
||||
fontSize = BlockedUsersConstants.TITLE_TEXT_SIZE.sp,
|
||||
color = appColors.text
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 缺省状态
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(top = 149.dp),
|
||||
contentAlignment = Alignment.TopCenter
|
||||
) {
|
||||
Column(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(id = R.mipmap.frame_23),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(181.dp, 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.size(9.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.no_users_isolated_yet),
|
||||
color = appColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,27 +124,18 @@ fun CommentNoticeScreen() {
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
androidx.compose.foundation.Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.tietie_dark
|
||||
else R.mipmap.invalid_name_11),
|
||||
painter = painterResource(id = R.mipmap.invalid_name_5),
|
||||
contentDescription = "No Comment",
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Spacer(modifier = Modifier.height(9.dp))
|
||||
Text(
|
||||
text = "等一位旅人~",
|
||||
text = stringResource(R.string.no_one_pinged_yet),
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600
|
||||
)
|
||||
Spacer(modifier = Modifier.size(8.dp))
|
||||
Text(
|
||||
text = "去发布动态,让更多人参与对话",
|
||||
color = AppColors.text,
|
||||
fontSize = 14.sp,
|
||||
fontWeight = FontWeight.W400
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -93,33 +93,29 @@ fun UnderlineTabItem(
|
||||
label = "padding"
|
||||
)
|
||||
|
||||
Column(
|
||||
Box(
|
||||
modifier = modifier
|
||||
.noRippleClickable { onClick() },
|
||||
verticalArrangement = Arrangement.Center,
|
||||
horizontalAlignment = Alignment.CenterHorizontally
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.padding(horizontal = animatedPadding)
|
||||
.padding(top = 13.dp, bottom = 0.dp),
|
||||
contentAlignment = Alignment.BottomCenter
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
// 文本层 - 始终居中,不受下划线影响
|
||||
Text(
|
||||
text = text,
|
||||
fontSize = animatedFontSize.sp,
|
||||
fontWeight = FontWeight.ExtraBold,
|
||||
color = if (isSelected) AppColors.text else AppColors.text.copy(alpha = 0.6f),
|
||||
textAlign = androidx.compose.ui.text.style.TextAlign.Center
|
||||
textAlign = androidx.compose.ui.text.style.TextAlign.Center,
|
||||
modifier = Modifier
|
||||
.padding(horizontal = animatedPadding)
|
||||
)
|
||||
}
|
||||
|
||||
// 选中状态下显示图标
|
||||
// 下划线层 - 固定在底部,不影响文本位置
|
||||
if (isSelected) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.align(Alignment.BottomCenter)
|
||||
.size(24.dp)
|
||||
.offset(y = (-4).dp),
|
||||
.offset(y = (15).dp),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Image(
|
||||
|
||||
@@ -134,8 +134,8 @@ fun FavouriteListPage() {
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if (com.aiosman.ravenow.AppState.darkMode) R.mipmap.invalid_dark
|
||||
else R.mipmap.invalid_name_1),
|
||||
id = if (com.aiosman.ravenow.AppState.darkMode) R.mipmap.empty_img
|
||||
else R.mipmap.empty_img),
|
||||
contentDescription = "No favourites",
|
||||
modifier = Modifier.size(181.dp, 153.dp)
|
||||
)
|
||||
|
||||
@@ -125,15 +125,13 @@ fun FollowerListScreen(userId: Int) {
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.frame_4
|
||||
else R.mipmap.invalid_name_8),
|
||||
painter = painterResource(id = R.mipmap.frame_31),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(181.dp, 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
|
||||
androidx.compose.material.Text(
|
||||
text = stringResource(R.string.follower_empty_title),
|
||||
text = stringResource(R.string.awaiting_traveler),
|
||||
color = appColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
@@ -142,17 +140,6 @@ fun FollowerListScreen(userId: Int) {
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Spacer(modifier = Modifier.size(8.dp))
|
||||
androidx.compose.material.Text(
|
||||
text = stringResource(R.string.follower_empty_subtitle),
|
||||
color = appColors.text,
|
||||
fontSize = 14.sp,
|
||||
fontWeight = FontWeight.W400,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 3,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -115,16 +115,14 @@ fun FollowerNoticeScreen() {
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.frame_4
|
||||
else R.mipmap.invalid_name_8),
|
||||
painter = painterResource(id = R.mipmap.invalid_name_5),
|
||||
contentDescription = "No Followers",
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Spacer(modifier = Modifier.height(9.dp))
|
||||
androidx.compose.material.Text(
|
||||
text = stringResource(R.string.follower_empty_title),
|
||||
text = stringResource(R.string.no_one_pinged_yet),
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
@@ -133,17 +131,6 @@ fun FollowerNoticeScreen() {
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Spacer(modifier = Modifier.size(8.dp))
|
||||
androidx.compose.material.Text(
|
||||
text = stringResource(R.string.follower_empty_subtitle),
|
||||
color = AppColors.text,
|
||||
fontSize = 14.sp,
|
||||
fontWeight = FontWeight.W400,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 3,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
}
|
||||
}else{
|
||||
|
||||
@@ -127,15 +127,13 @@ fun FollowingListScreen(userId: Int) {
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.frame_3
|
||||
else R.mipmap.invalid_name_9),
|
||||
painter = painterResource(id = R.mipmap.frame_31),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(181.dp, 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
|
||||
androidx.compose.material.Text(
|
||||
text = stringResource(R.string.following_empty_title),
|
||||
text = stringResource(R.string.awaiting_traveler),
|
||||
color = appColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
@@ -144,17 +142,6 @@ fun FollowingListScreen(userId: Int) {
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Spacer(modifier = Modifier.size(8.dp))
|
||||
androidx.compose.material.Text(
|
||||
text = stringResource(R.string.following_empty_subtitle),
|
||||
color = appColors.secondaryText,
|
||||
fontSize = 14.sp,
|
||||
fontWeight = FontWeight.W400,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 3,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
}
|
||||
}else{
|
||||
|
||||
@@ -48,6 +48,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage
|
||||
import com.aiosman.ravenow.ui.composables.rememberDebouncer
|
||||
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
||||
import com.aiosman.ravenow.utils.NetworkUtils
|
||||
import com.aiosman.ravenow.ui.network.ReloadButton
|
||||
|
||||
/**
|
||||
* 智能体聊天列表页面
|
||||
@@ -97,16 +98,15 @@ fun AgentChatListScreen() {
|
||||
if (isNetworkAvailable) {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.juhao_dark
|
||||
else R.mipmap.invalid_name_5),
|
||||
painter = painterResource(id = R.mipmap.invalid_name_3),
|
||||
contentDescription = "null data",
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
.width(181.dp)
|
||||
.height(153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Spacer(modifier = Modifier.height(9.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.agent_chat_empty_title),
|
||||
text = stringResource(R.string.no_one_knocked_yet),
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
@@ -115,16 +115,6 @@ fun AgentChatListScreen() {
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.agent_chat_empty_subtitle),
|
||||
color = AppColors.secondaryText,
|
||||
fontSize = 14.sp,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 3,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
else {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
|
||||
@@ -42,6 +42,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage
|
||||
import com.aiosman.ravenow.ui.composables.rememberDebouncer
|
||||
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
||||
import com.aiosman.ravenow.utils.NetworkUtils
|
||||
import com.aiosman.ravenow.ui.network.ReloadButton
|
||||
import androidx.compose.material.Button
|
||||
import androidx.compose.material.ButtonDefaults
|
||||
import androidx.compose.ui.text.font.FontFamily
|
||||
@@ -227,16 +228,15 @@ fun AllChatListScreen() {
|
||||
if (isNetworkAvailable) {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.piao_dark
|
||||
else R.mipmap.invalid_name_2),
|
||||
painter = painterResource(id = R.mipmap.invalid_name_3),
|
||||
contentDescription = "null data",
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
.width(181.dp)
|
||||
.height(153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Spacer(modifier = Modifier.height(9.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.friend_chat_empty_title),
|
||||
text = stringResource(R.string.no_one_knocked_yet),
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
@@ -245,16 +245,6 @@ fun AllChatListScreen() {
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.friend_chat_empty_subtitle),
|
||||
color = AppColors.secondaryText,
|
||||
fontSize = 14.sp,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 3,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
} else {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
|
||||
@@ -84,16 +84,15 @@ fun FriendChatListScreen() {
|
||||
if (isNetworkAvailable) {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.piao_dark
|
||||
else R.mipmap.invalid_name_2),
|
||||
painter = painterResource(id = R.mipmap.invalid_name_3),
|
||||
contentDescription = "null data",
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
.width(181.dp)
|
||||
.height(153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Spacer(modifier = Modifier.height(9.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.friend_chat_empty_title),
|
||||
text = stringResource(R.string.no_one_knocked_yet),
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
@@ -102,16 +101,6 @@ fun FriendChatListScreen() {
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.friend_chat_empty_subtitle),
|
||||
color = AppColors.secondaryText,
|
||||
fontSize = 14.sp,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 3,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}else {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage
|
||||
import com.aiosman.ravenow.ui.composables.rememberDebouncer
|
||||
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
||||
import com.aiosman.ravenow.utils.NetworkUtils
|
||||
import com.aiosman.ravenow.ui.network.ReloadButton
|
||||
|
||||
@OptIn(ExperimentalMaterialApi::class)
|
||||
@Composable
|
||||
@@ -77,16 +78,15 @@ fun GroupChatListScreen() {
|
||||
if (isNetworkAvailable) {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.fei_dark
|
||||
else R.mipmap.invalid_name_12),
|
||||
painter = painterResource(id = R.mipmap.invalid_name_3),
|
||||
contentDescription = "null data",
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
.width(181.dp)
|
||||
.height(153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Spacer(modifier = Modifier.height(9.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.group_chat_empty),
|
||||
text = stringResource(R.string.no_one_knocked_yet),
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
@@ -95,16 +95,6 @@ fun GroupChatListScreen() {
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.group_chat_empty_join),
|
||||
color = AppColors.secondaryText,
|
||||
fontSize = 14.sp,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 3,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}else {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
|
||||
@@ -692,7 +692,7 @@ fun TopNavigationBar(
|
||||
if (backgroundAlpha >= 1f) Color.Black else Color.White
|
||||
}
|
||||
val cardBorderColor = if (AppState.darkMode) {
|
||||
Color.White // 暗色模式下边框应为白色
|
||||
Color.White.copy(alpha = 0.35f) // 暗色模式下使用半透明白色,避免整体变白
|
||||
} else {
|
||||
if (backgroundAlpha >= 1f) Color.Black else Color.White
|
||||
}
|
||||
@@ -747,8 +747,11 @@ fun TopNavigationBar(
|
||||
val cardBackgroundColor = remember(backgroundAlpha) {
|
||||
val smoothProgress = backgroundAlpha.coerceIn(0f, 1f)
|
||||
if (AppState.darkMode) {
|
||||
// 暗色模式:从半透明白色逐渐变为更不透明的白色
|
||||
Color.White.copy(alpha = 0.52f + (0.48f * smoothProgress))
|
||||
// 暗色模式:保持在半透明灰白区间,避免滚动到顶部后变纯白
|
||||
val minAlpha = 0.18f
|
||||
val maxAlpha = 0.35f
|
||||
val alpha = minAlpha + (maxAlpha - minAlpha) * smoothProgress
|
||||
Color.White.copy(alpha = alpha)
|
||||
} else {
|
||||
// 亮色模式:从半透明白色逐渐变为完全不透明的白色
|
||||
Color.White.copy(alpha = 0.52f + (0.48f * smoothProgress))
|
||||
|
||||
@@ -199,18 +199,16 @@ fun GalleryGrid(
|
||||
horizontalAlignment = Alignment.CenterHorizontally
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.shuihu_dark
|
||||
else R.mipmap.invalid_name_7),
|
||||
painter = painterResource(id = R.mipmap.l_empty_img),
|
||||
contentDescription = "暂无图片",
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp),
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(if(AppState.darkMode) 9.dp else 24.dp))
|
||||
Spacer(modifier = Modifier.height(9.dp))
|
||||
|
||||
Text(
|
||||
text = stringResource(R.string.your_story_not_started),
|
||||
text = stringResource(R.string.cosmos_awaits),
|
||||
fontSize = 16.sp,
|
||||
color = AppColors.text,
|
||||
fontWeight = FontWeight.W600,
|
||||
@@ -219,19 +217,6 @@ fun GalleryGrid(
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
Text(
|
||||
text = stringResource(R.string.publish_moment_greeting),
|
||||
fontSize = 14.sp,
|
||||
color = AppColors.secondaryText,
|
||||
fontWeight = FontWeight.W400,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 3,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
} else {
|
||||
LazyVerticalGrid(
|
||||
|
||||
@@ -136,7 +136,7 @@ fun GroupChatEmptyContent(
|
||||
|
||||
// 空状态文本
|
||||
Text(
|
||||
text = stringResource(R.string.empty_nothing),
|
||||
text = stringResource(R.string.cosmos_awaits),
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
color = AppColors.text,
|
||||
|
||||
@@ -269,27 +269,24 @@ fun AgentEmptyContentWithSegments() {
|
||||
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
// 空状态内容(使用智能体原本的图标和文字)
|
||||
// 空状态内容(与动态、群聊保持一致)
|
||||
Column(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalAlignment = Alignment.CenterHorizontally
|
||||
) {
|
||||
if (isNetworkAvailable) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.ai_dark
|
||||
else R.mipmap.ai),
|
||||
painter = painterResource(id = R.mipmap.l_empty_img),
|
||||
contentDescription = "暂无Agent",
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
.align(Alignment.CenterHorizontally),
|
||||
)
|
||||
|
||||
// 根据是否为深色模式调整间距
|
||||
Spacer(modifier = Modifier.height(if(AppState.darkMode) 9.dp else 24.dp))
|
||||
Spacer(modifier = Modifier.height(9.dp))
|
||||
|
||||
Text(
|
||||
text = stringResource(R.string.exclusive_ai_waiting),
|
||||
text = stringResource(R.string.cosmos_awaits),
|
||||
fontSize = 16.sp,
|
||||
color = AppColors.text,
|
||||
fontWeight = FontWeight.W600,
|
||||
@@ -298,19 +295,6 @@ fun AgentEmptyContentWithSegments() {
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
Text(
|
||||
text = stringResource(R.string.ai_companion_not_tool),
|
||||
fontSize = 14.sp,
|
||||
color = AppColors.secondaryText,
|
||||
fontWeight = FontWeight.W400,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
maxLines = 3,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
} else {
|
||||
Image(
|
||||
painter = painterResource(id = R.mipmap.invalid_name_10),
|
||||
|
||||
@@ -122,27 +122,18 @@ fun LikeNoticeScreen() {
|
||||
horizontalAlignment = Alignment.CenterHorizontally
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.sanqiu_dark
|
||||
else R.mipmap.invalid_name_6),
|
||||
painter = painterResource(id = R.mipmap.invalid_name_5),
|
||||
contentDescription = "No Notice",
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Spacer(modifier = Modifier.height(9.dp))
|
||||
Text(
|
||||
text = "你的赞在赶来的路上",
|
||||
text = stringResource(R.string.no_one_pinged_yet),
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
)
|
||||
Spacer(modifier = Modifier.size(8.dp))
|
||||
Text(
|
||||
text = "智能体和朋友看到后,说不定马上就来~",
|
||||
color = AppColors.text,
|
||||
fontSize = 14.sp,
|
||||
fontWeight = FontWeight.W400
|
||||
)
|
||||
}
|
||||
}
|
||||
}else{
|
||||
|
||||
BIN
app/src/main/res/mipmap-hdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/mipmap-hdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
app/src/main/res/mipmap-hdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
app/src/main/res/mipmap-mdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
app/src/main/res/mipmap-mdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
app/src/main/res/mipmap-mdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
app/src/main/res/mipmap-xhdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
app/src/main/res/mipmap-xhdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
app/src/main/res/mipmap-xhdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
@@ -14,7 +14,7 @@
|
||||
<string name="followers_upper">フォロワー</string>
|
||||
<string name="posts">投稿</string>
|
||||
<string name="favourites_upper">お気に入り</string>
|
||||
<string name="favourites_null">あれ、何もない。..</string>
|
||||
<string name="favourites_null">ここはまだ空っぽだよ</string>
|
||||
<string name="notifications_upper">通知</string>
|
||||
<string name="following_upper">フォロー中</string>
|
||||
<string name="unfollow_upper">フォロー解除</string>
|
||||
@@ -383,6 +383,11 @@
|
||||
<string name="explore">探検する</string>
|
||||
<string name="reply_to_user">返信@%1$s</string>
|
||||
<string name="error_select_at_least_one_image">少なくとも1枚の画像を選択してください。</string>
|
||||
<string name="awaiting_traveler">旅人を待ってるよ</string>
|
||||
<string name="no_one_pinged_yet">まだ誰からも声がかからないよ</string>
|
||||
<string name="cosmos_awaits">小さな宇宙は、あなた待ち。</string>
|
||||
<string name="no_one_knocked_yet">まだ誰もノックしてないよ</string>
|
||||
<string name="no_users_isolated_yet">まだユーザーが隔離されていません</string>
|
||||
|
||||
<!-- Create Group Chat Confirm -->
|
||||
<string name="create_group_chat_confirm_title">グループチャットを作成</string>
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
<string name="chat_all">全部</string>
|
||||
<string name="public_label">公开</string>
|
||||
<string name="private_label">私有</string>
|
||||
<string name="favourites_null">咦,什么都没有...</string>
|
||||
<string name="favourites_null">这里还空着呢~</string>
|
||||
|
||||
<string name="agent_chat_list_title">智能体聊天</string>
|
||||
<string name="agent_chat_empty_title">AI 在等你的开场白</string>
|
||||
@@ -401,4 +401,9 @@
|
||||
<string name="explore">去探索</string>
|
||||
<string name="reply_to_user">回复@%1$s</string>
|
||||
<string name="error_select_at_least_one_image">请至少选择一张图片</string>
|
||||
<string name="awaiting_traveler">等一位旅人~</string>
|
||||
<string name="no_one_pinged_yet">还没有人来打扰你</string>
|
||||
<string name="cosmos_awaits">小宇宙等你探索。</string>
|
||||
<string name="no_one_knocked_yet">还没有人敲门</string>
|
||||
<string name="no_users_isolated_yet">还没有用户被隔离</string>
|
||||
</resources>
|
||||
@@ -13,7 +13,7 @@
|
||||
<string name="followers_upper">FOLLOWERS</string>
|
||||
<string name="posts">Posts</string>
|
||||
<string name="favourites_upper">FAVOURITES</string>
|
||||
<string name="favourites_null">Well,nothing </string>
|
||||
<string name="favourites_null">It’s still empty here </string>
|
||||
<string name="notifications_upper">NOTIFICATIONS</string>
|
||||
<string name="following_upper">FOLLOWING</string>
|
||||
<string name="unfollow_upper">UNFOLLOW</string>
|
||||
@@ -395,4 +395,9 @@
|
||||
<string name="explore">Explore</string>
|
||||
<string name="reply_to_user">Reply @%1$s</string>
|
||||
<string name="error_select_at_least_one_image">Please select at least one image</string>
|
||||
<string name="awaiting_traveler">Awaiting a traveler</string>
|
||||
<string name="no_one_pinged_yet">No one has pinged you yet</string>
|
||||
<string name="cosmos_awaits">Your cosmos awaits.</string>
|
||||
<string name="no_one_knocked_yet">No one\'s knocked yet</string>
|
||||
<string name="no_users_isolated_yet">No users have been isolated yet</string>
|
||||
</resources>
|
||||