mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	| @@ -0,0 +1,78 @@ | ||||
| package eu.kanade.presentation.more.settings.screen.debug | ||||
|  | ||||
| import androidx.compose.foundation.layout.padding | ||||
| import androidx.compose.foundation.rememberScrollState | ||||
| import androidx.compose.foundation.verticalScroll | ||||
| import androidx.compose.material.icons.Icons | ||||
| import androidx.compose.material.icons.filled.ArrowBack | ||||
| import androidx.compose.material.icons.filled.ContentCopy | ||||
| import androidx.compose.material3.Icon | ||||
| import androidx.compose.material3.IconButton | ||||
| import androidx.compose.material3.Text | ||||
| import androidx.compose.material3.TopAppBar | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.runtime.remember | ||||
| import androidx.compose.ui.Modifier | ||||
| import androidx.compose.ui.platform.LocalContext | ||||
| import androidx.compose.ui.res.stringResource | ||||
| import androidx.compose.ui.text.font.FontFamily | ||||
| import androidx.compose.ui.unit.dp | ||||
| import cafe.adriel.voyager.navigator.LocalNavigator | ||||
| import cafe.adriel.voyager.navigator.currentOrThrow | ||||
| import eu.kanade.presentation.components.AppBar | ||||
| import eu.kanade.presentation.components.AppBarActions | ||||
| import eu.kanade.presentation.util.Screen | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.backup.models.Backup | ||||
| import eu.kanade.tachiyomi.util.system.copyToClipboard | ||||
| import kotlinx.serialization.protobuf.schema.ProtoBufSchemaGenerator | ||||
| import tachiyomi.presentation.core.components.material.Scaffold | ||||
|  | ||||
| object BackupSchemaScreen : Screen() { | ||||
|  | ||||
|     const val title = "Backup file schema" | ||||
|  | ||||
|     @Composable | ||||
|     override fun Content() { | ||||
|         val context = LocalContext.current | ||||
|         val navigator = LocalNavigator.currentOrThrow | ||||
|  | ||||
|         val schema = remember { ProtoBufSchemaGenerator.generateSchemaText(Backup.serializer().descriptor) } | ||||
|  | ||||
|         Scaffold( | ||||
|             topBar = { | ||||
|                 TopAppBar( | ||||
|                     title = { Text(text = title) }, | ||||
|                     navigationIcon = { | ||||
|                         IconButton(onClick = navigator::pop) { | ||||
|                             Icon(imageVector = Icons.Default.ArrowBack, contentDescription = null) | ||||
|                         } | ||||
|                     }, | ||||
|                     actions = { | ||||
|                         AppBarActions( | ||||
|                             listOf( | ||||
|                                 AppBar.Action( | ||||
|                                     title = stringResource(R.string.action_copy_to_clipboard), | ||||
|                                     icon = Icons.Default.ContentCopy, | ||||
|                                     onClick = { | ||||
|                                         context.copyToClipboard(title, schema) | ||||
|                                     }, | ||||
|                                 ), | ||||
|                             ), | ||||
|                         ) | ||||
|                     }, | ||||
|                     scrollBehavior = it, | ||||
|                 ) | ||||
|             }, | ||||
|         ) { contentPadding -> | ||||
|             Text( | ||||
|                 text = schema, | ||||
|                 modifier = Modifier | ||||
|                     .verticalScroll(rememberScrollState()) | ||||
|                     .padding(contentPadding) | ||||
|                     .padding(16.dp), | ||||
|                 fontFamily = FontFamily.Monospace, | ||||
|             ) | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -31,6 +31,10 @@ object DebugInfoScreen : Screen() { | ||||
|                         title = WorkerInfoScreen.title, | ||||
|                         onClick = { navigator.push(WorkerInfoScreen) }, | ||||
|                     ), | ||||
|                     Preference.PreferenceItem.TextPreference( | ||||
|                         title = BackupSchemaScreen.title, | ||||
|                         onClick = { navigator.push(BackupSchemaScreen) }, | ||||
|                     ), | ||||
|                     getAppInfoGroup(), | ||||
|                     getDeviceInfoGroup(), | ||||
|                 ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user