Package-level declarations

Types

Link copied to clipboard
typealias AppBackHandler = (enabled: Boolean, onProgress: (Float) -> Unit, onBack: () -> Unit) -> Unit
Link copied to clipboard
data class ExtendedColorScheme(val warningContainer: ERROR CLASS: Symbol not found for Color, val onWarningContainer: ERROR CLASS: Symbol not found for Color, val heatCool: ERROR CLASS: Symbol not found for Color, val heatOk: ERROR CLASS: Symbol not found for Color, val heatWarm: ERROR CLASS: Symbol not found for Color, val heatHot: ERROR CLASS: Symbol not found for Color)

MaterialTheme.colorScheme にロールがない拡張カラー(警告色等)をまとめたデータクラス。

Link copied to clipboard

シミュレーター固有の閾値判定から受け取る表示用の熱レベル。

Link copied to clipboard

KoDriverTheme 配下で拡張カラーを参照するためのエントリポイント。

Link copied to clipboard

KoDriver アプリ全体の余白定義。

Link copied to clipboard

非同期保存の古い値による入力の巻き戻りを防ぐ文言の状態。 正規化は保存側UseCaseの trim().take(MAX) と一致させる必要がある。 保存反映が conflate されて途中の値を観測できない場合は、タイムアウトで保存待ちを解除する。

Link copied to clipboard

操作中と保存待ちの閾値を保持し、途中の保存通知による巻き戻りを防ぐ。

Link copied to clipboard

入力欄のカーソル位置への挿入要求を保持する。入力欄ごとに用意する。

Properties

Link copied to clipboard
val Error10: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Error20: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Error30: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Error40: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Error80: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Error90: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val KoDriverListPaneWidth: ERROR CLASS: Unresolved name: dp

list/detail 構成の画面で一覧ペインの初期幅として使う 400.dp。

Link copied to clipboard
val KoDriverShapes: ERROR CLASS: Unresolved name: Shapes

KoDriver アプリ全体の角丸定義。 large(16.dp)・extraLarge(28.dp)は Material3 の既定値と同じ値を明示している。

Link copied to clipboard
val KoDriverTypography: ERROR CLASS: Unresolved name: Typography

KoDriver アプリ全体のタイポグラフィ定義。

Link copied to clipboard
val Neutral10: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral100: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral12: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral17: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral20: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral22: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral24: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral4: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral6: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral87: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral90: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral92: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral94: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral95: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral96: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Neutral98: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val NeutralVariant30: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val NeutralVariant50: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val NeutralVariant60: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val NeutralVariant80: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val NeutralVariant90: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Secondary10: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Secondary20: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Secondary30: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Secondary40: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Secondary80: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Secondary90: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val ERROR CLASS: Symbol not found for Posture.shouldCollapseDetailPane: Boolean

list/detail の2ペイン表示を維持するには実質的な表示領域が不足している姿勢かどうかを返す。

Link copied to clipboard
val Tertiary10: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Tertiary20: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Tertiary30: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Tertiary40: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Tertiary80: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Tertiary90: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Yellow10: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Yellow20: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Yellow30: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Yellow40: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Yellow80: ERROR CLASS: Unresolved name: Color
Link copied to clipboard
val Yellow90: ERROR CLASS: Unresolved name: Color

Functions

Link copied to clipboard
fun ERROR CLASS: Symbol not found for Modifier.constrainToTabletopTopPane(posture: ERROR CLASS: Symbol not found for Posture): ERROR CLASS: Symbol not found for Modifier

テーブルトップ姿勢(水平ヒンジで半開き)の場合、ヒンジより下側は操作しづらいため、 コンテンツの高さをヒンジ上端までに制限する。テーブルトップ姿勢でない場合、または 分離する水平ヒンジの情報が無い場合は何もしない。

Link copied to clipboard
fun DebugReadoutRequestCard(readoutItemKeyValues: List<String>, selectedReadoutItemKeyValue: String, text: String, onReadoutItemSelected: (String) -> Unit, onTextChange: (String) -> Unit, onReadout: () -> Unit, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

項目の文字列 ID と入力文言を渡して、Narrator へデバッグ読み上げを要求するカード。

Link copied to clipboard
fun <K, S> DebugStateCard(cardKey: K, uiState: S, enabled: Boolean, titles: Map<K, ERROR CLASS: Symbol not found for StringResource>, contents: Map<K, (S) -> Unit>, frame: (title: String, @R|kotlin/ParameterName|(name = String(modifier)) ERROR CLASS: Symbol not found for Modifier, content: () -> Unit) -> Unit, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

キーに対応するタイトルと内容を表示し、有効状態に応じた透明度を共通の枠へ渡すデバッグカード。

Link copied to clipboard
fun DebugStateCardFrame(title: String, symbol: String, accent: ERROR CLASS: Symbol not found for Color, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, showHandle: Boolean = true, content: () -> Unit)

色と装飾記号を呼び出し側で決めるデバッグカードの共通枠。

Link copied to clipboard
fun DebugStateHeatTile(text: String, heatLevel: HeatLevel?, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

明示的な熱レベルで値を表示し、未取得時は中立色を使う。

Link copied to clipboard
fun DebugStateStatusChip(text: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, accent: ERROR CLASS: Symbol not found for Color = MaterialTheme.colorScheme.tertiary)

状態をアクセント色のチップで表示する。

Link copied to clipboard
fun DebugStateUnavailableContent(text: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

未取得の文言と装飾を表示する。文言は呼び出し側で解決する。

Link copied to clipboard
fun DebugStateWheelTemperatureTile(text: (value: String) -> String, formattedCelsius: String?, heatLevel: HeatLevel?, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

1輪分の温度を熱レベル付きで表示する。未取得(formattedCelsius が null)の場合は "-" を表示し、中立色にする。

Link copied to clipboard
fun DetailPaneBodyText(text: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

DetailPaneBodyText を提供する公開関数。

Link copied to clipboard
fun DetailPaneCard(title: String, bottomContent: () -> Unit, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)
fun DetailPaneCard(title: String, checked: Boolean, onCheckedChange: (Boolean) -> Unit, bottomContent: () -> Unit, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

DetailPaneCard を提供する公開関数。

Link copied to clipboard
fun DetailPaneCardChips(chipLabels: List<String>, selectedChipLabels: Set<String>, chipEnabled: Boolean, onChipClick: (String) -> Unit)

DetailPaneCardChips を提供する公開関数。

Link copied to clipboard
fun DetailPaneCardTextField(value: String, placeholder: String, maxLength: Int, onValueChangeFinished: (String) -> Unit, onPreviewClick: (String) -> Unit?, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, enabled: Boolean = true, selected: Boolean = false, supportingText: String? = null, previewContentDescription: String? = null, selectedContentDescription: String? = null, defaultValue: String? = null, onResetToDefault: () -> Unit? = null, resetContentDescription: String? = null, insertState: TextInsertState? = null)

DetailPaneCard の bottomContent で、読み上げ文言などをユーザーが入力するための TextField を提供する公開関数。

Link copied to clipboard
fun DetailPaneDescription(text: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

DetailPaneDescription を提供する公開関数。

Link copied to clipboard
fun DetailPaneLabeledTextField(label: String, value: String, maxLength: Int, onValueChangeFinished: (String) -> Unit, onPreviewClick: (String) -> Unit?, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, enabled: Boolean = true, selected: Boolean = false, supportingText: String? = null, previewContentDescription: String? = null, selectedContentDescription: String? = null, defaultValue: String? = null, onResetToDefault: () -> Unit? = null, resetContentDescription: String? = null, insertState: TextInsertState? = null)

DetailPaneCard の bottomContent で、ラベル付きの読み上げ文言入力欄を提供する公開関数。

Link copied to clipboard
fun DetailPaneScaffold(title: String, canNavigateBack: Boolean, onBack: () -> Unit, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, navigationIconModifier: ERROR CLASS: Symbol not found for Modifier = Modifier, scrollBehavior: ERROR CLASS: Symbol not found for TopAppBarScrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(), actions: ERROR CLASS: Symbol not found for RowScope.() -> Unit = {}, content: () -> Unit)

詳細ペインの共通レイアウト。戻るボタンの説明文は DetailPaneTopAppBar が内部で解決する。

Link copied to clipboard
fun DetailPaneSubtitle(text: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, trailingContent: () -> Unit? = null)

DetailPaneSubtitle を提供する公開関数。

Link copied to clipboard
fun DetailPaneTopAppBar(title: String, canNavigateBack: Boolean, onBack: () -> Unit, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, navigationIconModifier: ERROR CLASS: Symbol not found for Modifier = Modifier, scrollBehavior: ERROR CLASS: Symbol not found for TopAppBarScrollBehavior?? = null, actions: ERROR CLASS: Symbol not found for RowScope.() -> Unit = {})

詳細ペインの上部バー。戻るボタンの説明文は designsystem の文字列リソースから解決する。

Link copied to clipboard

strings.xml の printf 形式プレースホルダー(%1$.1f 相当)を含むテンプレート文字列へ小数値を埋め込む。

strings.xml の printf 形式プレースホルダー(%1$d・%1$s 相当)を含むテンプレート文字列へ整数値を埋め込む。 commonMain からは java.util.Formatter 経由の String.format を利用できないため、 本アプリのスライダーラベルで実際に使用しているプレースホルダー・エスケープ(%% → %)のみを サポートする簡易実装。

Link copied to clipboard
fun heatColor(level: HeatLevel): ERROR CLASS: Symbol not found for Color

現在のテーマに対応する熱レベルの色を返す。

Link copied to clipboard
fun HelpIconButton(contentDescription: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, sheetContent: () -> Unit)

ヘルプアイコンをタップすると、sheetContent を内容とする ModalBottomSheet を表示するアイコンボタン。 開閉状態は内部で保持する。

Link copied to clipboard
fun KoDriverDestructiveConfirmDialog(title: String, body: String, confirmLabel: String, dismissLabel: String, onConfirm: () -> Unit, onDismiss: () -> Unit, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

削除・リセットなどの破壊的操作を確認する。文言は呼び出し側で解決して渡す。

Link copied to clipboard
fun KoDriverHelpSheetImageContent(description: String, painter: ERROR CLASS: Symbol not found for Painter, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

説明文と補足画像を横に並べるヘルプシートの内容。画像は装飾なので読み上げ対象にしない。

Link copied to clipboard
fun KoDriverHintRow(label: String, helpContentDescription: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, trailingText: String? = null, sheetContent: () -> Unit)

ヘルプシートを開く見出し行。開閉状態は保存・復元する。

Link copied to clipboard
fun KoDriverHintSheetRow(icon: ERROR CLASS: Symbol not found for ImageVector, title: String, description: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

アイコンバッジとタイトル・説明を並べるヘルプシートの行。

Link copied to clipboard
fun koDriverMonospaceTextStyle(): ERROR CLASS: Symbol not found for TextStyle

JSON・コード等、桁揃えではなく等幅フォントそのものが必要な表示に適用するスタイル。

Link copied to clipboard
fun koDriverNumericTextStyle(): ERROR CLASS: Symbol not found for TextStyle

高頻度で値が変化する数値表示(ラップタイム・タイヤ温度・燃料残量等)に適用するスタイル。

fun koDriverNumericTextStyle(baseStyle: ERROR CLASS: Symbol not found for TextStyle): ERROR CLASS: Symbol not found for TextStyle

baseStyle(例: MaterialTheme.typography.headlineMedium)に tabular figures だけをマージする。

Link copied to clipboard
fun koDriverTagTextStyle(): ERROR CLASS: Symbol not found for TextStyle

項目に付ける「LMU」「GT7」等の短いタグ表示に適用するスタイル。

Link copied to clipboard
fun KoDriverTheme(darkTheme: Boolean = false, content: () -> Unit)

KoDriverTheme を提供する公開関数。

Link copied to clipboard
fun PlaceholderReadoutTextField(label: String, savedText: String, defaultText: String, maxLength: Int, isTextToSpeechAvailable: Boolean, onTextChanged: (String) -> Unit, onPreviewClick: (String) -> Unit, placeholder: String, insertLabel: String, placeholderHint: String, resetContentDescription: String, previewContentDescription: String, selectedContentDescription: String, unavailableText: String, supportingText: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, unknownPlaceholdersText: (currentText: String) -> String? = { null })

保存待ちの入力状態と、プレースホルダーの挿入チップを備えた読み上げ文言入力欄。 文字列は呼び出し側で解決し、unknownPlaceholdersText は保存前の現在の入力から生成する。

Link copied to clipboard
fun ERROR CLASS: Symbol not found for Modifier.predictiveBackDetailPane(progress: Float): ERROR CLASS: Symbol not found for Modifier

Modifier を提供する公開関数。

Link copied to clipboard
fun readoutItemDisplayName(readoutItemKeyValue: String): String

readoutItemKeyValue は kurou.kodriver.domain.model.ReadoutItemKey.value の値と一致させる必要がある。 このモジュールは core:domain に依存しないため、型ではなく文字列IDを引数にとる。

Link copied to clipboard
fun ReadoutTextField(label: String, text: String, defaultText: String, maxLength: Int, isTextToSpeechAvailable: Boolean, onTextChanged: (String) -> Unit, onPreviewClick: (String) -> Unit, insertState: TextInsertState, resetContentDescription: String, previewContentDescription: String, selectedContentDescription: String, unavailableText: String, supportingText: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, unknownPlaceholdersText: String? = null)

読み上げ文言の入力・試聴・既定値へのリセットを提供する。 文言と maxLength は呼び出し側で解決して渡す。

Link copied to clipboard
Link copied to clipboard
fun rememberPendingText(savedText: String, maxLength: Int, pendingTimeoutMillis: Long = PENDING_TEXT_TIMEOUT_MILLIS_DEFAULT): PendingTextState

入力中の文言を保持し、正規化後の保存値を順に観測して保存待ちを解除する。 保存待ちが変化してから pendingTimeoutMillis 経過すると、入力を保持したまま保存待ちを解除する。

Link copied to clipboard
fun rememberPendingThreshold(savedValue: Int, pendingTimeoutMillis: Long = PENDING_THRESHOLD_TIMEOUT_MILLIS_DEFAULT): PendingThresholdState

保存値を同期し、保存待ちの変更から期限が過ぎると外部更新への追従を再開する。

Link copied to clipboard

再コンポーズをまたいで挿入要求の状態を保持する。

Link copied to clipboard
fun ScrollToTopEffect(scrollToTopRequest: Int, scrollToTop: suspend () -> Unit)

scrollToTopRequest が正の値に変化したときに scrollToTop を呼び出す。

Link copied to clipboard

simulatorId は kurou.kodriver.domain.model.Simulator.id の値と一致させる必要がある。 このモジュールは core:domain に依存しないため、型ではなく文字列IDを引数にとる。

Link copied to clipboard
fun simulatorIcon(simulatorId: String): ERROR CLASS: Symbol not found for Painter

simulatorId は kurou.kodriver.domain.model.Simulator.id の値と一致させる必要がある。

Link copied to clipboard
fun SimulatorInfoContent(simulatorId: String, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier)

シミュレーターIDに対応する表示名を表示する。

Link copied to clipboard
fun simulatorLargeImage(simulatorId: String): ERROR CLASS: Symbol not found for Painter

カード全体に敷き詰めるような、より大きな表示領域向けのシミュレーター画像を返す。 simulatorId は kurou.kodriver.domain.model.Simulator.id の値と一致させる必要がある。

Link copied to clipboard
fun simulatorShortName(simulatorId: String): String

ナビゲーション項目など表示幅が限られる場所向けの短縮名("LMU"・"GT7"・"ACE")を返す。 これらは略称であり翻訳対象ではないため文字列リソース化しない。 simulatorId は kurou.kodriver.domain.model.Simulator.id の値と一致させる必要がある。

Link copied to clipboard
fun ThresholdSlider(value: Float, valueRange: ERROR CLASS: Symbol not found for ClosedFloatingPointRange<kotlin/Float>, labelFormatter: (Float) -> String, onValueChangeFinished: (Float) -> Unit, modifier: ERROR CLASS: Symbol not found for Modifier = Modifier, steps: Int = (((valueRange.endInclusive - valueRange.start) / 0.1f).roundToInt() - 1).coerceAtLeast(0), defaultValue: Float? = null, onResetToDefault: () -> Unit? = null, resetContentDescription: String? = null, onValueChange: (Float) -> Unit = {})

ThresholdSlider を提供する公開関数。