|
167 | 167 | :disabled="isMuted" |
168 | 168 | /> |
169 | 169 |
|
170 | | - <!-- Save/load state controls --> |
171 | | - <select |
172 | | - v-model.number="selectedSlot" |
173 | | - class="slot-selector" |
174 | | - title="Save slot" |
175 | | - > |
176 | | - <option v-for="n in capabilities.maxSlots" :key="n" :value="n"> |
177 | | - Slot {{ n }} |
178 | | - </option> |
179 | | - </select> |
180 | | - |
181 | | - <v-btn |
182 | | - icon |
183 | | - variant="text" |
184 | | - density="compact" |
185 | | - title="Save state" |
186 | | - :loading="isSavingState" |
187 | | - :disabled=" |
188 | | - isSavingState || |
189 | | - isLoadingState || |
190 | | - isLoadingAutosave || |
191 | | - isSavingAndExiting |
192 | | - " |
193 | | - @click="handleSaveState" |
194 | | - > |
195 | | - <v-icon size="20">mdi-content-save-outline</v-icon> |
196 | | - </v-btn> |
197 | | - |
198 | | - <v-btn |
199 | | - icon |
200 | | - variant="text" |
201 | | - density="compact" |
202 | | - title="Load state" |
203 | | - :loading="isLoadingState" |
204 | | - :disabled=" |
205 | | - isSavingState || |
206 | | - isLoadingState || |
207 | | - isLoadingAutosave || |
208 | | - isSavingAndExiting |
209 | | - " |
210 | | - @click="handleLoadState" |
211 | | - > |
212 | | - <v-icon size="20">mdi-restore</v-icon> |
213 | | - </v-btn> |
214 | | - |
215 | | - <v-btn |
216 | | - v-if="capabilities.hasAutosave" |
217 | | - icon |
218 | | - variant="text" |
219 | | - density="compact" |
220 | | - title="Load autosave" |
221 | | - :loading="isLoadingAutosave" |
222 | | - :disabled=" |
223 | | - isSavingState || |
224 | | - isLoadingState || |
225 | | - isLoadingAutosave || |
226 | | - isSavingAndExiting |
227 | | - " |
228 | | - @click="handleLoadAutosave" |
229 | | - > |
230 | | - <v-icon size="20">mdi-history</v-icon> |
231 | | - </v-btn> |
| 170 | + <!-- Save/load state controls (hidden for platforms with no save state support) --> |
| 171 | + <template v-if="capabilities.maxSlots > 0"> |
| 172 | + <select |
| 173 | + v-model.number="selectedSlot" |
| 174 | + class="slot-selector" |
| 175 | + title="Save slot" |
| 176 | + > |
| 177 | + <option v-for="n in capabilities.maxSlots" :key="n" :value="n"> |
| 178 | + Slot {{ n }} |
| 179 | + </option> |
| 180 | + </select> |
| 181 | + |
| 182 | + <v-btn |
| 183 | + icon |
| 184 | + variant="text" |
| 185 | + density="compact" |
| 186 | + title="Save state" |
| 187 | + :loading="isSavingState" |
| 188 | + :disabled=" |
| 189 | + isSavingState || |
| 190 | + isLoadingState || |
| 191 | + isLoadingAutosave || |
| 192 | + isSavingAndExiting |
| 193 | + " |
| 194 | + @click="handleSaveState" |
| 195 | + > |
| 196 | + <v-icon size="20">mdi-content-save-outline</v-icon> |
| 197 | + </v-btn> |
| 198 | + |
| 199 | + <v-btn |
| 200 | + icon |
| 201 | + variant="text" |
| 202 | + density="compact" |
| 203 | + title="Load state" |
| 204 | + :loading="isLoadingState" |
| 205 | + :disabled=" |
| 206 | + isSavingState || |
| 207 | + isLoadingState || |
| 208 | + isLoadingAutosave || |
| 209 | + isSavingAndExiting |
| 210 | + " |
| 211 | + @click="handleLoadState" |
| 212 | + > |
| 213 | + <v-icon size="20">mdi-restore</v-icon> |
| 214 | + </v-btn> |
| 215 | + |
| 216 | + <v-btn |
| 217 | + v-if="capabilities.hasAutosave" |
| 218 | + icon |
| 219 | + variant="text" |
| 220 | + density="compact" |
| 221 | + title="Load autosave" |
| 222 | + :loading="isLoadingAutosave" |
| 223 | + :disabled=" |
| 224 | + isSavingState || |
| 225 | + isLoadingState || |
| 226 | + isLoadingAutosave || |
| 227 | + isSavingAndExiting |
| 228 | + " |
| 229 | + @click="handleLoadAutosave" |
| 230 | + > |
| 231 | + <v-icon size="20">mdi-history</v-icon> |
| 232 | + </v-btn> |
| 233 | + </template> |
232 | 234 |
|
233 | 235 | <v-btn |
234 | 236 | icon |
|
0 commit comments