Skip to content

Commit 32ce4ea

Browse files
authored
UpdateChannels: fix items padding + GamesScreen: don't check update on every recompose + AppNavHost: enable restore state (#178)
1 parent 2aa3dca commit 32ce4ea

8 files changed

Lines changed: 103 additions & 78 deletions

File tree

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/net/rpcsx/ui/channels/UpdateChannelListScreen.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,8 @@ fun UpdateChannelListScreen(
135135
Card(
136136
modifier = Modifier
137137
.fillMaxWidth()
138-
.padding(vertical = 4.dp)
139-
.clickable {
140-
onSelect(item)
141-
},
138+
.padding(vertical = 4.dp),
139+
onClick = { onSelect(item) },
142140
colors = CardDefaults.cardColors(
143141
containerColor = if (item == selected) {
144142
MaterialTheme.colorScheme.primaryContainer

app/src/main/java/net/rpcsx/ui/channels/UpdateChannelsScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ fun UpdateChannelsScreen(
8181
modifier = Modifier
8282
.fillMaxSize()
8383
.padding(paddingValues)
84-
.padding(16.dp)
84+
//.padding(16.dp)
8585
) {
8686
RegularPreference(
8787
title = stringResource(R.string.ui_update_channel),

app/src/main/java/net/rpcsx/ui/games/GamesScreen.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import androidx.compose.runtime.mutableLongStateOf
4545
import androidx.compose.runtime.mutableStateOf
4646
import androidx.compose.runtime.remember
4747
import androidx.compose.runtime.rememberCoroutineScope
48+
import androidx.compose.runtime.saveable.rememberSaveable
4849
import androidx.compose.runtime.setValue
4950
import androidx.compose.ui.Alignment
5051
import androidx.compose.ui.Modifier
@@ -367,6 +368,8 @@ fun GamesScreen() {
367368

368369
val gameInProgress = games.find { it.progressList.isNotEmpty() }
369370

371+
var updatesChecked by rememberSaveable { mutableStateOf(false) }
372+
370373
val checkForUpdates = suspend {
371374
rpcsxUpdateVersion = RpcsxUpdater.checkForUpdate()
372375
uiUpdateVersion = UiUpdater.checkForUpdate(context)
@@ -377,7 +380,10 @@ fun GamesScreen() {
377380
}
378381

379382
LaunchedEffect(Unit) {
380-
checkForUpdates()
383+
if (!updatesChecked) {
384+
updatesChecked = true
385+
checkForUpdates()
386+
}
381387
}
382388

383389
if (uiUpdateVersion != null && rpcsxUpdateVersion == null && activeDialogs.isEmpty()) {

app/src/main/java/net/rpcsx/ui/navigation/AppNavHost.kt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import androidx.compose.runtime.getValue
5656
import androidx.compose.runtime.mutableStateOf
5757
import androidx.compose.runtime.remember
5858
import androidx.compose.runtime.rememberCoroutineScope
59+
import androidx.compose.runtime.saveable.rememberSaveable
5960
import androidx.compose.runtime.setValue
6061
import androidx.compose.ui.Modifier
6162
import androidx.compose.ui.graphics.vector.ImageVector
@@ -113,6 +114,13 @@ fun AppNavHost() {
113114
val prefs = remember { context.getSharedPreferences("app_prefs", Context.MODE_PRIVATE) }
114115
val rpcsxLibrary by remember { RPCSX.activeLibrary }
115116

117+
val navigateTo: (String) -> Unit = { route ->
118+
navController.navigate(route) {
119+
launchSingleTop = true
120+
restoreState = true
121+
}
122+
}
123+
116124
var gpuDriverChannelList =
117125
prefs.getStringSet("gpu_driver_channel_list", setOf(DefaultGpuDriverChannel))?.toList()
118126
if (gpuDriverChannelList == null) {
@@ -187,7 +195,7 @@ fun AppNavHost() {
187195
route = "games"
188196
) {
189197
GamesDestination(
190-
navigateToSettings = { navController.navigate("settings") },
198+
navigateToSettings = { navigateTo("settings") },
191199
drawerState
192200
)
193201
}
@@ -219,7 +227,7 @@ fun AppNavHost() {
219227
) {
220228
AdvancedSettingsScreen(
221229
navigateBack = navController::navigateUp,
222-
navigateTo = navController::navigate,
230+
navigateTo = navigateTo,
223231
settings = elemObject,
224232
path = elemPath
225233
)
@@ -234,7 +242,7 @@ fun AppNavHost() {
234242
) {
235243
AdvancedSettingsScreen(
236244
navigateBack = navController::navigateUp,
237-
navigateTo = navController::navigate,
245+
navigateTo = navigateTo,
238246
settings = settings.value,
239247
)
240248
}
@@ -244,7 +252,7 @@ fun AppNavHost() {
244252
) {
245253
SettingsScreen(
246254
navigateBack = navController::navigateUp,
247-
navigateTo = navController::navigate,
255+
navigateTo = navigateTo,
248256
onRefresh = refreshSettings
249257
)
250258
}
@@ -270,7 +278,7 @@ fun AppNavHost() {
270278
) {
271279
UpdateChannelsScreen(
272280
navigateBack = navController::navigateUp,
273-
navigateTo = navController::navigate,
281+
navigateTo = navigateTo,
274282
)
275283
}
276284

app/src/main/java/net/rpcsx/ui/settings/SettingsScreen.kt

Lines changed: 75 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -137,69 +137,79 @@ fun AdvancedSettingsScreen(
137137
Scaffold(
138138
modifier = Modifier
139139
.nestedScroll(topBarScrollBehavior.nestedScrollConnection)
140-
.then(modifier), topBar = {
140+
.then(modifier),
141+
topBar = {
141142
val titlePath = path.replace("@@", " / ").removePrefix(" / ")
142-
LargeTopAppBar(title = {
143-
if (isSearching) {
144-
BasicTextField(
145-
value = searchQuery,
146-
onValueChange = { searchQuery = it },
147-
modifier = Modifier
148-
.fillMaxWidth()
149-
.padding(horizontal = 8.dp),
150-
singleLine = true,
151-
textStyle = TextStyle(
152-
color = MaterialTheme.colorScheme.onSurface, fontSize = 20.sp
153-
),
154-
decorationBox = { innerTextField ->
155-
Box(
156-
modifier = Modifier
157-
.fillMaxWidth()
158-
.background(
159-
MaterialTheme.colorScheme.surfaceVariant,
160-
shape = RoundedCornerShape(8.dp)
161-
)
162-
.padding(8.dp)
163-
) {
164-
if (searchQuery.isEmpty()) {
165-
Text(
166-
text = stringResource(R.string.search_settings),
167-
color = MaterialTheme.colorScheme.onSurfaceVariant
168-
)
143+
LargeTopAppBar(
144+
title = {
145+
if (isSearching) {
146+
BasicTextField(
147+
value = searchQuery,
148+
onValueChange = { searchQuery = it },
149+
modifier = Modifier
150+
.fillMaxWidth()
151+
.padding(horizontal = 8.dp),
152+
singleLine = true,
153+
textStyle = TextStyle(
154+
color = MaterialTheme.colorScheme.onSurface, fontSize = 20.sp
155+
),
156+
decorationBox = { innerTextField ->
157+
Box(
158+
modifier = Modifier
159+
.fillMaxWidth()
160+
.background(
161+
MaterialTheme.colorScheme.surfaceVariant,
162+
shape = RoundedCornerShape(8.dp)
163+
)
164+
.padding(8.dp)
165+
) {
166+
if (searchQuery.isEmpty()) {
167+
Text(
168+
text = stringResource(R.string.search),
169+
color = MaterialTheme.colorScheme.onSurfaceVariant
170+
)
171+
}
172+
innerTextField()
169173
}
170-
innerTextField()
174+
})
175+
} else {
176+
Text(
177+
text = titlePath.ifEmpty { stringResource(R.string.advanced_settings) },
178+
fontWeight = FontWeight.Medium
179+
)
180+
}
181+
},
182+
scrollBehavior = topBarScrollBehavior,
183+
navigationIcon = {
184+
IconButton(
185+
onClick = navigateBack,
186+
modifier = Modifier.padding(0.dp)
187+
) {
188+
Icon(
189+
imageVector = Icons.AutoMirrored.Default.KeyboardArrowLeft,
190+
contentDescription = null
191+
)
192+
}
193+
},
194+
actions = {
195+
IconButton(
196+
onClick = {
197+
if (isSearching) {
198+
searchQuery = ""
199+
isSearching = false
200+
} else {
201+
isSearching = true
171202
}
172-
})
173-
} else {
174-
Text(
175-
text = titlePath.ifEmpty { stringResource(R.string.advanced_settings) },
176-
fontWeight = FontWeight.Medium
177-
)
178-
}
179-
}, scrollBehavior = topBarScrollBehavior, navigationIcon = {
180-
IconButton(onClick = navigateBack) {
181-
Icon(
182-
imageVector = Icons.AutoMirrored.Default.KeyboardArrowLeft,
183-
contentDescription = null
184-
)
185-
}
186-
}, actions = {
187-
IconButton(
188-
onClick = {
189-
if (isSearching) {
190-
searchQuery = ""
191-
isSearching = false
192-
} else {
193-
isSearching = true
194-
}
195-
}) {
196-
Icon(
197-
imageVector = if (isSearching) Icons.Default.Close else Icons.Default.Search,
198-
contentDescription = if (isSearching) "Close Search" else "Search"
199-
)
200-
}
201-
})
202-
}) { contentPadding ->
203+
}) {
204+
Icon(
205+
imageVector = if (isSearching) Icons.Default.Close else Icons.Default.Search,
206+
contentDescription = if (isSearching) "Close Search" else "Search"
207+
)
208+
}
209+
},
210+
)
211+
}
212+
) { contentPadding ->
203213
LazyColumn(
204214
modifier = Modifier
205215
.fillMaxSize()
@@ -667,16 +677,16 @@ fun ControllerSettings(
667677
)
668678
}
669679
) { contentPadding ->
670-
val context = LocalContext.current
680+
//val context = LocalContext.current
671681
val inputBindings = remember {
672682
mutableStateMapOf<Int, Pair<Int, Int>>().apply {
673683
putAll(InputBindingPrefs.loadBindings())
674684
}
675685
}
676686

677-
var showDialog by remember { mutableStateOf<Boolean>(false) }
678-
var currentInput by remember { mutableStateOf<Int>(-1) }
679-
var currentInputName by remember { mutableStateOf<String>("") }
687+
var showDialog by remember { mutableStateOf(false) }
688+
var currentInput by remember { mutableStateOf(-1) }
689+
var currentInputName by remember { mutableStateOf("") }
680690
val requester = remember { FocusRequester() }
681691

682692
LazyColumn(
@@ -757,7 +767,7 @@ fun ControllerSettings(
757767
if (showDialog) {
758768
InputBindingDialog(
759769
onReset = {
760-
InputBindingPrefs.defaultBindings.forEach { it ->
770+
InputBindingPrefs.defaultBindings.forEach {
761771
if (InputBindingPrefs.rpcsxKeyCodeToString(
762772
it.value.first,
763773
it.value.second

app/src/main/res/values-zh-rCN/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@
108108
<string name="no_activity_to_handle_action">未找到处理此操作的活动</string>
109109
<string name="perform_input">执行输入</string>
110110
<string name="reset_setting">重置设置</string>
111-
<string name="search_settings">搜索设置…</string>
112111
<string name="share_log">分享日志</string>
113112
<string name="share_log_description">分享 RPCSX 的日志文件以帮助调试问题</string>
114113
<string name="users">用户</string>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@
110110
<string name="no_activity_to_handle_action">No activity found to handle this action</string>
111111
<string name="perform_input">Perform Input</string>
112112
<string name="reset_setting">Reset Setting</string>
113-
<string name="search_settings">Search Settings…</string>
113+
<string name="search">Search</string>
114114
<string name="share_log">Share Log</string>
115115
<string name="share_log_description">Share RPCSX\'s log file to help debug issues</string>
116116
<string name="users">Users</string>

0 commit comments

Comments
 (0)