Merge pull request #52 from Kevinlinpr/feat/pr-20251104-154907
添加深色模式缺省图
4
.idea/deploymentTargetSelector.xml
generated
@@ -4,10 +4,10 @@
|
||||
<selectionStates>
|
||||
<SelectionState runConfigName="app">
|
||||
<option name="selectionMode" value="DROPDOWN" />
|
||||
<DropdownSelection timestamp="2025-09-17T06:25:35.585100400Z">
|
||||
<DropdownSelection timestamp="2025-11-05T12:24:27.034893100Z">
|
||||
<Target type="DEFAULT_BOOT">
|
||||
<handle>
|
||||
<DeviceId pluginId="Default" identifier="serial=192.168.0.216:5555;connection=698a7727" />
|
||||
<DeviceId pluginId="PhysicalDevice" identifier="serial=c328a150" />
|
||||
</handle>
|
||||
</Target>
|
||||
</DropdownSelection>
|
||||
|
||||
@@ -71,4 +71,29 @@ object AppStore {
|
||||
AppState.chatBackgroundUrl = url
|
||||
}
|
||||
|
||||
// ===================== 用户本地扩展信息 =====================
|
||||
// 后端暂未提供 MBTI 与星座字段,使用本地持久化按用户维度进行存储
|
||||
private fun mbtiKey(userId: Int) = "mbti_user_$userId"
|
||||
private fun zodiacKey(userId: Int) = "zodiac_user_$userId"
|
||||
|
||||
fun getUserMbti(userId: Int): String? {
|
||||
return sharedPreferences.getString(mbtiKey(userId), null)
|
||||
}
|
||||
|
||||
fun setUserMbti(userId: Int, mbti: String?) {
|
||||
sharedPreferences.edit().apply {
|
||||
if (mbti.isNullOrEmpty()) remove(mbtiKey(userId)) else putString(mbtiKey(userId), mbti)
|
||||
}.apply()
|
||||
}
|
||||
|
||||
fun getUserZodiac(userId: Int): String? {
|
||||
return sharedPreferences.getString(zodiacKey(userId), null)
|
||||
}
|
||||
|
||||
fun setUserZodiac(userId: Int, zodiac: String?) {
|
||||
sharedPreferences.edit().apply {
|
||||
if (zodiac.isNullOrEmpty()) remove(zodiacKey(userId)) else putString(zodiacKey(userId), zodiac)
|
||||
}.apply()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -35,8 +35,10 @@ 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.MbtiSelectScreen
|
||||
import com.aiosman.ravenow.ui.account.RemoveAccountScreen
|
||||
import com.aiosman.ravenow.ui.account.ResetPasswordScreen
|
||||
import com.aiosman.ravenow.ui.account.ZodiacSelectScreen
|
||||
import com.aiosman.ravenow.ui.agent.AddAgentScreen
|
||||
import com.aiosman.ravenow.ui.agent.AgentImageCropScreen
|
||||
import com.aiosman.ravenow.ui.group.CreateGroupChatScreen
|
||||
@@ -120,6 +122,8 @@ sealed class NavigationRoute(
|
||||
data object VipSelPage : NavigationRoute("VipSelPage")
|
||||
data object RemoveAccountScreen: NavigationRoute("RemoveAccount")
|
||||
data object NotificationScreen : NavigationRoute("NotificationScreen")
|
||||
data object MbtiSelect : NavigationRoute("MbtiSelect")
|
||||
data object ZodiacSelect : NavigationRoute("ZodiacSelect")
|
||||
}
|
||||
|
||||
|
||||
@@ -421,6 +425,12 @@ fun NavigationController(
|
||||
composable(route = NavigationRoute.RemoveAccountScreen.route) {
|
||||
RemoveAccountScreen()
|
||||
}
|
||||
composable(route = NavigationRoute.MbtiSelect.route) {
|
||||
MbtiSelectScreen()
|
||||
}
|
||||
composable(route = NavigationRoute.ZodiacSelect.route) {
|
||||
ZodiacSelectScreen()
|
||||
}
|
||||
composable(route = NavigationRoute.VipSelPage.route) {
|
||||
VipSelPage()
|
||||
}
|
||||
|
||||
@@ -26,6 +26,9 @@ object AccountEditViewModel : ViewModel() {
|
||||
var croppedBitmap by mutableStateOf<Bitmap?>(null)
|
||||
var isUpdating by mutableStateOf(false)
|
||||
var isLoading by mutableStateOf(false)
|
||||
// 本地扩展字段
|
||||
var mbti by mutableStateOf<String?>(null)
|
||||
var zodiac by mutableStateOf<String?>(null)
|
||||
suspend fun reloadProfile(updateTrtcProfile:Boolean = false) {
|
||||
Log.d("AccountEditViewModel", "reloadProfile: 开始加载用户资料")
|
||||
isLoading = true
|
||||
@@ -38,6 +41,12 @@ object AccountEditViewModel : ViewModel() {
|
||||
bio = it.bio
|
||||
// 清除之前裁剪的图片
|
||||
croppedBitmap = null
|
||||
// 读取本地扩展字段
|
||||
try {
|
||||
val uid = it.id // 使用 profile 的 id,确保非空
|
||||
mbti = com.aiosman.ravenow.AppStore.getUserMbti(uid)
|
||||
zodiac = com.aiosman.ravenow.AppStore.getUserZodiac(uid)
|
||||
} catch (_: Exception) { }
|
||||
if (updateTrtcProfile) {
|
||||
TrtcHelper.updateTrtcProfile(
|
||||
it.nickName,
|
||||
@@ -84,6 +93,13 @@ object AccountEditViewModel : ViewModel() {
|
||||
nickName = newName,
|
||||
bio = cleanBio
|
||||
)
|
||||
// 保存本地扩展字段
|
||||
try {
|
||||
profile?.id?.let { uid ->
|
||||
com.aiosman.ravenow.AppStore.setUserMbti(uid, mbti)
|
||||
com.aiosman.ravenow.AppStore.setUserZodiac(uid, zodiac)
|
||||
}
|
||||
} catch (_: Exception) { }
|
||||
// 刷新用户资料
|
||||
reloadProfile()
|
||||
// 刷新个人资料页面的用户资料
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
package com.aiosman.ravenow.ui.account
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
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.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Check
|
||||
import com.aiosman.ravenow.LocalAppTheme
|
||||
import com.aiosman.ravenow.LocalNavController
|
||||
import com.aiosman.ravenow.R
|
||||
import com.aiosman.ravenow.ui.comment.NoticeScreenHeader
|
||||
|
||||
// MBTI类型列表
|
||||
val MBTI_TYPES = listOf(
|
||||
"INTJ", "INTP", "ENTJ", "ENTP",
|
||||
"INFJ", "INFP", "ENFJ", "ENFP",
|
||||
"ISTJ", "ISFJ", "ESTJ", "ESFJ",
|
||||
"ISTP", "ISFP", "ESTP", "ESFP"
|
||||
)
|
||||
|
||||
@Composable
|
||||
fun MbtiSelectScreen() {
|
||||
val navController = LocalNavController.current
|
||||
val appColors = LocalAppTheme.current
|
||||
val model = AccountEditViewModel
|
||||
val currentMbti = model.mbti
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.background(appColors.profileBackground)
|
||||
) {
|
||||
// 头部
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 16.dp)
|
||||
) {
|
||||
NoticeScreenHeader(
|
||||
title = stringResource(R.string.choose_mbti),
|
||||
moreIcon = false
|
||||
)
|
||||
}
|
||||
|
||||
// 列表
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
contentPadding = androidx.compose.foundation.layout.PaddingValues(horizontal = 16.dp, vertical = 8.dp)
|
||||
) {
|
||||
items(MBTI_TYPES) { mbti ->
|
||||
MBTIItem(
|
||||
mbti = mbti,
|
||||
isSelected = mbti == currentMbti,
|
||||
onClick = {
|
||||
model.mbti = mbti
|
||||
navController.navigateUp()
|
||||
}
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun MBTIItem(
|
||||
mbti: String,
|
||||
isSelected: Boolean,
|
||||
onClick: () -> Unit
|
||||
) {
|
||||
val appColors = LocalAppTheme.current
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.clip(RoundedCornerShape(16.dp))
|
||||
.background(if (isSelected) appColors.main.copy(alpha = 0.1f) else Color.White)
|
||||
.clickable(
|
||||
indication = null,
|
||||
interactionSource = remember { MutableInteractionSource() }
|
||||
) {
|
||||
onClick()
|
||||
}
|
||||
.padding(16.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = mbti,
|
||||
fontSize = 17.sp,
|
||||
fontWeight = FontWeight.Normal,
|
||||
color = if (isSelected) appColors.main else appColors.text,
|
||||
modifier = Modifier.weight(1f)
|
||||
)
|
||||
|
||||
if (isSelected) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Check,
|
||||
contentDescription = "Selected",
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = appColors.main
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
package com.aiosman.ravenow.ui.account
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
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.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Check
|
||||
import com.aiosman.ravenow.LocalAppTheme
|
||||
import com.aiosman.ravenow.LocalNavController
|
||||
import com.aiosman.ravenow.R
|
||||
import com.aiosman.ravenow.ui.comment.NoticeScreenHeader
|
||||
|
||||
// 星座列表
|
||||
val ZODIAC_SIGNS = listOf(
|
||||
"白羊座", "金牛座", "双子座", "巨蟹座",
|
||||
"狮子座", "处女座", "天秤座", "天蝎座",
|
||||
"射手座", "摩羯座", "水瓶座", "双鱼座"
|
||||
)
|
||||
|
||||
@Composable
|
||||
fun ZodiacSelectScreen() {
|
||||
val navController = LocalNavController.current
|
||||
val appColors = LocalAppTheme.current
|
||||
val model = AccountEditViewModel
|
||||
val currentZodiac = model.zodiac
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.background(appColors.profileBackground)
|
||||
) {
|
||||
// 头部
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 16.dp)
|
||||
) {
|
||||
NoticeScreenHeader(
|
||||
title = stringResource(R.string.choose_zodiac),
|
||||
moreIcon = false
|
||||
)
|
||||
}
|
||||
|
||||
// 列表
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
contentPadding = androidx.compose.foundation.layout.PaddingValues(horizontal = 16.dp, vertical = 8.dp)
|
||||
) {
|
||||
items(ZODIAC_SIGNS) { zodiac ->
|
||||
ZodiacItem(
|
||||
zodiac = zodiac,
|
||||
isSelected = zodiac == currentZodiac,
|
||||
onClick = {
|
||||
model.zodiac = zodiac
|
||||
navController.navigateUp()
|
||||
}
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun ZodiacItem(
|
||||
zodiac: String,
|
||||
isSelected: Boolean,
|
||||
onClick: () -> Unit
|
||||
) {
|
||||
val appColors = LocalAppTheme.current
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.clip(RoundedCornerShape(16.dp))
|
||||
.background(if (isSelected) appColors.main.copy(alpha = 0.1f) else Color.White)
|
||||
.clickable(
|
||||
indication = null,
|
||||
interactionSource = remember { MutableInteractionSource() }
|
||||
) {
|
||||
onClick()
|
||||
}
|
||||
.padding(16.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = zodiac,
|
||||
fontSize = 17.sp,
|
||||
fontWeight = FontWeight.Normal,
|
||||
color = if (isSelected) appColors.main else appColors.text,
|
||||
modifier = Modifier.weight(1f)
|
||||
)
|
||||
|
||||
if (isSelected) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Check,
|
||||
contentDescription = "Selected",
|
||||
modifier = Modifier.size(20.dp),
|
||||
tint = appColors.main
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,12 +125,13 @@ fun CommentNoticeScreen() {
|
||||
) {
|
||||
androidx.compose.foundation.Image(
|
||||
painter = painterResource(
|
||||
id =if(AppState.darkMode) R.mipmap.qst_pl_qs_as_img
|
||||
id = if(AppState.darkMode) R.mipmap.tietie_dark
|
||||
else R.mipmap.invalid_name_11),
|
||||
contentDescription = "No Comment",
|
||||
modifier = Modifier.size(181.dp)
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.size(24.dp))
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Text(
|
||||
text = "等一位旅人~",
|
||||
color = AppColors.text,
|
||||
|
||||
@@ -137,9 +137,9 @@ fun FavouriteListPage() {
|
||||
id = if (com.aiosman.ravenow.AppState.darkMode) R.mipmap.invalid_dark
|
||||
else R.mipmap.invalid_name_1),
|
||||
contentDescription = "No favourites",
|
||||
modifier = Modifier.size(110.dp)
|
||||
modifier = Modifier.size(181.dp, 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.size(24.dp))
|
||||
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
|
||||
Text(
|
||||
text = stringResource(R.string.favourites_null),
|
||||
color = AppColors.text,
|
||||
|
||||
@@ -124,21 +124,21 @@ fun FollowerListScreen(userId: Int) {
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id =if(AppState.darkMode) R.mipmap.qst_fs_qs_as_img
|
||||
id = if(AppState.darkMode) R.mipmap.frame_4
|
||||
else R.mipmap.invalid_name_8),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(181.dp)
|
||||
modifier = Modifier.size(181.dp, 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.size(24.dp))
|
||||
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
|
||||
androidx.compose.material.Text(
|
||||
text = "还没有人关注哦",
|
||||
text = "还没有人关注你呢",
|
||||
color = appColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600
|
||||
)
|
||||
Spacer(modifier = Modifier.size(8.dp))
|
||||
androidx.compose.material.Text(
|
||||
text = "去发布动态,吸引更多粉丝~",
|
||||
text = "试着发信号出来,某人就会被吸引啦~",
|
||||
color = appColors.text,
|
||||
fontSize = 14.sp,
|
||||
fontWeight = FontWeight.W400
|
||||
|
||||
@@ -114,21 +114,22 @@ fun FollowerNoticeScreen() {
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id =if(AppState.darkMode) R.mipmap.qst_fs_qs_as_img
|
||||
id = if(AppState.darkMode) R.mipmap.frame_4
|
||||
else R.mipmap.invalid_name_8),
|
||||
contentDescription = "No Followers",
|
||||
modifier = Modifier.size(181.dp)
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.size(24.dp))
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
androidx.compose.material.Text(
|
||||
text = "还没有人关注哦",
|
||||
text = "还没有人关注你呢",
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600
|
||||
)
|
||||
Spacer(modifier = Modifier.size(8.dp))
|
||||
androidx.compose.material.Text(
|
||||
text = "去发布动态,吸引更多粉丝~",
|
||||
text = "试着发信号出来,某人就会被吸引啦~",
|
||||
color = AppColors.text,
|
||||
fontSize = 14.sp,
|
||||
fontWeight = FontWeight.W400
|
||||
|
||||
@@ -126,14 +126,14 @@ fun FollowingListScreen(userId: Int) {
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id =if(AppState.darkMode) R.mipmap.qst_gz_qs_as_img_my
|
||||
id = if(AppState.darkMode) R.mipmap.frame_3
|
||||
else R.mipmap.invalid_name_9),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(181.dp)
|
||||
modifier = Modifier.size(181.dp, 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.size(24.dp))
|
||||
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
|
||||
androidx.compose.material.Text(
|
||||
text = "没有关注任何灵魂",
|
||||
text = "还没有关注任何灵魂",
|
||||
color = appColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600
|
||||
|
||||
@@ -97,13 +97,13 @@ fun AgentChatListScreen() {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.qs_znt_qs_as_img
|
||||
id = if(AppState.darkMode) R.mipmap.juhao_dark
|
||||
else R.mipmap.invalid_name_5),
|
||||
contentDescription = "null data",
|
||||
modifier = Modifier
|
||||
.size(181.dp)
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.agent_chat_empty_title),
|
||||
color = AppColors.text,
|
||||
|
||||
@@ -175,13 +175,13 @@ fun AllChatListScreen() {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.qs_py_qs_as_img
|
||||
id = if(AppState.darkMode) R.mipmap.piao_dark
|
||||
else R.mipmap.invalid_name_2),
|
||||
contentDescription = "null data",
|
||||
modifier = Modifier
|
||||
.size(181.dp)
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.friend_chat_empty_title),
|
||||
color = AppColors.text,
|
||||
|
||||
@@ -85,13 +85,13 @@ fun FriendChatListScreen() {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.qs_py_qs_as_img
|
||||
id = if(AppState.darkMode) R.mipmap.piao_dark
|
||||
else R.mipmap.invalid_name_2),
|
||||
contentDescription = "null data",
|
||||
modifier = Modifier
|
||||
.size(181.dp)
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.friend_chat_empty_title),
|
||||
color = AppColors.text,
|
||||
|
||||
@@ -77,13 +77,13 @@ fun GroupChatListScreen() {
|
||||
Spacer(modifier = Modifier.height(39.dp))
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.qs_ql_qs_as_img
|
||||
id = if(AppState.darkMode) R.mipmap.fei_dark
|
||||
else R.mipmap.invalid_name_12),
|
||||
contentDescription = "null data",
|
||||
modifier = Modifier
|
||||
.size(181.dp)
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.group_chat_empty),
|
||||
color = AppColors.text,
|
||||
|
||||
@@ -189,16 +189,17 @@ fun GalleryGrid(
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id = if(AppState.darkMode) R.mipmap.qs_dt_qs_as_img
|
||||
id = if(AppState.darkMode) R.mipmap.shuihu_dark
|
||||
else R.mipmap.invalid_name_7),
|
||||
contentDescription = "暂无图片",
|
||||
modifier = Modifier.size(181.dp),
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp),
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Spacer(modifier = Modifier.height(if(AppState.darkMode) 9.dp else 24.dp))
|
||||
|
||||
Text(
|
||||
text = "故事还没开始",
|
||||
text = "你的故事还没开始",
|
||||
fontSize = 16.sp,
|
||||
color = AppColors.text,
|
||||
fontWeight = FontWeight.W600
|
||||
|
||||
@@ -212,7 +212,7 @@ fun EmptyAgentsView() {
|
||||
if (isNetworkAvailable) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id =if(AppState.darkMode) R.mipmap.ai_dark
|
||||
id = if(AppState.darkMode) R.mipmap.ai_dark
|
||||
else R.mipmap.ai),
|
||||
contentDescription = "暂无Agent",
|
||||
modifier = Modifier
|
||||
@@ -220,7 +220,8 @@ fun EmptyAgentsView() {
|
||||
.align(Alignment.CenterHorizontally),
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
// 根据是否为深色模式调整间距
|
||||
Spacer(modifier = Modifier.height(if(AppState.darkMode) 9.dp else 24.dp))
|
||||
|
||||
Text(
|
||||
text = "专属AI等你召唤",
|
||||
|
||||
@@ -123,14 +123,15 @@ fun LikeNoticeScreen() {
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(
|
||||
id =if(AppState.darkMode) R.mipmap.qst_z_qs_as_img
|
||||
id = if(AppState.darkMode) R.mipmap.sanqiu_dark
|
||||
else R.mipmap.invalid_name_6),
|
||||
contentDescription = "No Notice",
|
||||
modifier = Modifier.size(181.dp)
|
||||
modifier = Modifier
|
||||
.size(width = 181.dp, height = 153.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
||||
Text(
|
||||
text = "你的赞在路上~",
|
||||
text = "你的赞在赶来的路上",
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
|
||||
@@ -26,7 +26,7 @@ fun SplashScreen() {
|
||||
) {
|
||||
// 居中的图标
|
||||
Image(
|
||||
painter = painterResource(id = R.mipmap.invalid_name),
|
||||
painter = painterResource(id = R.mipmap.kp_logo_img),
|
||||
contentDescription = "App Logo",
|
||||
modifier = Modifier
|
||||
.align(Alignment.Center)
|
||||
|
||||
BIN
app/src/main/res/mipmap-hdpi/ai_dark.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
app/src/main/res/mipmap-hdpi/fei_dark.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
app/src/main/res/mipmap-hdpi/frame_3.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
app/src/main/res/mipmap-hdpi/frame_4.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
app/src/main/res/mipmap-hdpi/invalid_dark.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
app/src/main/res/mipmap-hdpi/juhao_dark.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
app/src/main/res/mipmap-hdpi/piao_dark.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
app/src/main/res/mipmap-hdpi/sanqiu_dark.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
app/src/main/res/mipmap-hdpi/shuihu_dark.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
app/src/main/res/mipmap-hdpi/tietie_dark.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
app/src/main/res/mipmap-mdpi/ai_dark.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
app/src/main/res/mipmap-mdpi/fei_dark.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
app/src/main/res/mipmap-mdpi/frame_3.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
app/src/main/res/mipmap-mdpi/frame_4.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
app/src/main/res/mipmap-mdpi/invalid_dark.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
app/src/main/res/mipmap-mdpi/juhao_dark.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
app/src/main/res/mipmap-mdpi/piao_dark.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
app/src/main/res/mipmap-mdpi/sanqiu_dark.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
app/src/main/res/mipmap-mdpi/shuihu_dark.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
app/src/main/res/mipmap-mdpi/tietie_dark.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.9 KiB |
BIN
app/src/main/res/mipmap-xhdpi/fei_dark.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
app/src/main/res/mipmap-xhdpi/frame_3.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
app/src/main/res/mipmap-xhdpi/frame_4.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.1 KiB |
BIN
app/src/main/res/mipmap-xhdpi/juhao_dark.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
app/src/main/res/mipmap-xhdpi/piao_dark.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
app/src/main/res/mipmap-xhdpi/sanqiu_dark.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
app/src/main/res/mipmap-xhdpi/shuihu_dark.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/mipmap-xhdpi/tietie_dark.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 4.3 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/fei_dark.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/frame_3.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/frame_4.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 3.0 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/juhao_dark.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/piao_dark.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/sanqiu_dark.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/shuihu_dark.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/tietie_dark.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 5.4 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/fei_dark.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/frame_3.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/frame_4.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 3.7 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/juhao_dark.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/piao_dark.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/sanqiu_dark.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/shuihu_dark.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/tietie_dark.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
@@ -152,8 +152,8 @@
|
||||
<string name="favourites_null">暂无数据</string>
|
||||
|
||||
<string name="agent_chat_list_title">智能体聊天</string>
|
||||
<string name="agent_chat_empty_title">AI 在等你的开场白</string>
|
||||
<string name="agent_chat_empty_subtitle">去首页探索一下,主动发起对话!</string>
|
||||
<string name="agent_chat_empty_title">AI们在等你开启第一句对话</string>
|
||||
<string name="agent_chat_empty_subtitle">去首页探索一下,主动发起一场对话!</string>
|
||||
<string name="agent_chat_me_prefix">我: </string>
|
||||
<string name="agent_chat_image">[图片]</string>
|
||||
<string name="agent_chat_voice">[语音]</string>
|
||||
@@ -163,12 +163,12 @@
|
||||
<string name="agent_chat_load_failed">加载失败</string>
|
||||
<string name="agent_chat_load_more_failed">加载更多失败</string>
|
||||
<string name="agent_chat_user_info_failed">获取用户信息失败: %s</string>
|
||||
<string name="group_chat_empty">没有群聊,宇宙好安静</string>
|
||||
<string name="group_chat_empty">没有群聊消息的宇宙太安静了</string>
|
||||
<string name="group_chat_empty_title">没有群聊消息的宇宙太安静了</string>
|
||||
<string name="group_chat_empty_subtitle">在首页探索感兴趣的主题房间</string>
|
||||
<string name="group_chat_empty_join">去首页探索感兴趣的高能对话</string>
|
||||
<string name="friend_chat_empty_title">和朋友,还没有对话哦~</string>
|
||||
<string name="friend_chat_empty_subtitle">点击好友头像,即刻发起聊天</string>
|
||||
<string name="group_chat_empty_join">去首页探索感兴趣的主题房间</string>
|
||||
<string name="friend_chat_empty_title">你和朋友,还没说第一句话呢</string>
|
||||
<string name="friend_chat_empty_subtitle">一段崭新的友谊 等待被唤醒</string>
|
||||
<string name="friend_chat_me_prefix">我: </string>
|
||||
<string name="friend_chat_load_failed">加载失败</string>
|
||||
<string name="create_group_chat">创建群聊</string>
|
||||
@@ -250,4 +250,11 @@
|
||||
<string name="each_theme_unique_experience">每个主题都有自己独特的体验</string>
|
||||
<string name="select_apply_to_use_theme">选择"应用"可选中这个主题</string>
|
||||
<string name="tap_cancel_to_preview_other_themes">轻触"取消"可预览其他主题</string>
|
||||
|
||||
<!-- Edit Profile Extras -->
|
||||
<string name="mbti_type">MBTI 类型</string>
|
||||
<string name="zodiac">星座</string>
|
||||
<string name="save">保存</string>
|
||||
<string name="choose_mbti">选择 MBTI</string>
|
||||
<string name="choose_zodiac">选择星座</string>
|
||||
</resources>
|
||||
@@ -247,4 +247,11 @@
|
||||
<string name="tap_cancel_to_preview_other_themes">Tap "Cancel" to preview other themes</string>
|
||||
|
||||
|
||||
<!-- Edit Profile Extras -->
|
||||
<string name="mbti_type">MBTI</string>
|
||||
<string name="zodiac">Zodiac</string>
|
||||
<string name="save">Save</string>
|
||||
<string name="choose_mbti">Choose MBTI</string>
|
||||
<string name="choose_zodiac">Choose Zodiac</string>
|
||||
|
||||
</resources>
|
||||