Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions core/droidkaigiui/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,9 @@ kotlin {
}
}
}

compose {
resources {
publicResClass = true
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="bookmarked">ブックマーク済み</string>
<string name="not_bookmarked">ブックマークされていません</string>
<string name="connection_failed">接続に失敗しました、ネットワーク設定を確認してください。</string>
<string name="error_occurred">エラー...</string>
<string name="retry">再試行</string>
<string name="add_to_bookmark">ブックマークに登録</string>
<string name="remove_from_bookmark">ブックマークを削除</string>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The same wording is found here, Would it be better to make it publicResClass = false and make it common?

<string name="add_to_bookmark">ブックマークに登録</string>
<string name="remove_from_bookmark">ブックマークを削除</string>

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that sounds like a good idea. Could you please make it common?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to implemented at 50ec935 .
Could you please check this? 🙏

</resources>
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="bookmarked">Bookmarked</string>
<string name="not_bookmarked">Not Bookmarked</string>
<string name="connection_failed">Connection failed, Check your network settings.</string>
<string name="error_occurred">Error...</string>
<string name="retry">Retry</string>
<string name="add_to_bookmark">Add to Bookmarks</string>
<string name="remove_from_bookmark">Remove from Bookmarks</string>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.clearAndSetSemantics
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.heading
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import io.github.droidkaigi.confsched.droidkaigiui.KaigiPreviewContainer
import org.jetbrains.compose.ui.tooling.preview.Preview
Expand All @@ -22,7 +26,10 @@ fun TimetableTimeSlot(
modifier: Modifier = Modifier,
) {
Column(
modifier = modifier,
modifier = modifier.clearAndSetSemantics {
heading()
contentDescription = "$startTimeText~$endTimeText"
},
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(4.dp),
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,10 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.semantics.CustomAccessibilityAction
import androidx.compose.ui.semantics.SemanticsPropertyKey
import androidx.compose.ui.semantics.clearAndSetSemantics
import androidx.compose.ui.semantics.customActions
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
Expand All @@ -48,12 +51,12 @@ import io.github.droidkaigi.confsched.designsystem.theme.ProvideRoomTheme
import io.github.droidkaigi.confsched.droidkaigiui.DroidkaigiuiRes
import io.github.droidkaigi.confsched.droidkaigiui.KaigiPreviewContainer
import io.github.droidkaigi.confsched.droidkaigiui.SubcomposeAsyncImage
import io.github.droidkaigi.confsched.droidkaigiui.bookmarked
import io.github.droidkaigi.confsched.droidkaigiui.add_to_bookmark
import io.github.droidkaigi.confsched.droidkaigiui.component.OutlinedToolTip
import io.github.droidkaigi.confsched.droidkaigiui.component.RoomToolTip
import io.github.droidkaigi.confsched.droidkaigiui.extension.icon
import io.github.droidkaigi.confsched.droidkaigiui.extension.roomTheme
import io.github.droidkaigi.confsched.droidkaigiui.not_bookmarked
import io.github.droidkaigi.confsched.droidkaigiui.remove_from_bookmark
Comment on lines +54 to +59
Copy link

Copilot AI Sep 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The import statements reference string resources incorrectly. String resources should be accessed via DroidkaigiuiRes.string.add_to_bookmark and DroidkaigiuiRes.string.remove_from_bookmark, not as direct imports.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Sep 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The import statements reference string resources incorrectly. String resources should be accessed via DroidkaigiuiRes.string.add_to_bookmark and DroidkaigiuiRes.string.remove_from_bookmark, not as direct imports.

Copilot uses AI. Check for mistakes.
import io.github.droidkaigi.confsched.model.sessions.TimetableItem
import io.github.droidkaigi.confsched.model.sessions.TimetableSpeaker
import io.github.droidkaigi.confsched.model.sessions.fake
Expand All @@ -78,10 +81,26 @@ fun TimetableItemCard(
val haptic = LocalHapticFeedback.current

ProvideRoomTheme(timetableItem.room.roomTheme) {
val bookmarkActionLabel = stringResource(
if (isBookmarked) {
DroidkaigiuiRes.string.remove_from_bookmark
} else {
DroidkaigiuiRes.string.add_to_bookmark
},
)
Row(
verticalAlignment = Alignment.Top,
modifier = modifier
.semantics {
customActions = listOf(
CustomAccessibilityAction(
label = bookmarkActionLabel,
action = {
onBookmarkClick()
true
},
),
)
this[TimetableItemCardSemanticsKey] = timetableItem
}
.clip(RoundedCornerShape(16.dp))
Expand Down Expand Up @@ -161,7 +180,9 @@ fun TimetableItemCard(
}
onBookmarkClick()
},
modifier = Modifier.padding(end = 12.dp),
modifier = Modifier
.clearAndSetSemantics {}
.padding(end = 12.dp),
)
}
}
Expand Down Expand Up @@ -248,16 +269,15 @@ private fun FavoriteButton(
),
modifier = modifier.testTag(TimetableItemCardBookmarkButtonTestTag),
) {
// TODO: Fix contentDescription
if (isBookmarked) {
Icon(
Icons.Filled.Favorite,
contentDescription = stringResource(DroidkaigiuiRes.string.bookmarked),
contentDescription = stringResource(DroidkaigiuiRes.string.remove_from_bookmark),
)
} else {
Icon(
Icons.Outlined.FavoriteBorder,
contentDescription = stringResource(DroidkaigiuiRes.string.not_bookmarked),
contentDescription = stringResource(DroidkaigiuiRes.string.add_to_bookmark),
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.compose.ui.test.hasTestTag
import androidx.compose.ui.test.onFirst
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.performCustomAccessibilityActionWithLabel
import androidx.compose.ui.test.performTouchInput
import androidx.compose.ui.test.swipeUp
import dev.zacsweers.metro.Inject
Expand Down Expand Up @@ -78,9 +79,9 @@ class FavoritesScreenRobot(

context(composeUiTest: ComposeUiTest)
fun clickFirstSessionBookmark() {
composeUiTest.onAllNodes(hasTestTag(TimetableItemCardBookmarkButtonTestTag))
composeUiTest.onAllNodes(hasTestTag(TimetableItemCardTestTag))
.onFirst()
.performClick()
.performCustomAccessibilityActionWithLabel("Remove from Bookmarks")
Copy link

Copilot AI Sep 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The hardcoded string 'Remove from Bookmarks' should be extracted to a constant or use the same string resource to ensure consistency with the UI labels and support for localization.

Copilot uses AI. Check for mistakes.
waitUntilIdle()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@
<string name="filter_chip_supported_language">対応言語</string>
<string name="timeline_view">タイムライン表示</string>
<string name="grid_view">グリッド表示</string>
<string name="add_to_bookmark">ブックマークに登録</string>
<string name="remove_from_bookmark">ブックマークを削除</string>
<string name="add_to_calendar">カレンダーに登録</string>
<string name="share_link">リンクをシェア</string>
<string name="go_to_timetable_detail">詳細を開く</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@
<string name="filter_chip_supported_language">Supported languages</string>
<string name="timeline_view">timeline view</string>
<string name="grid_view">multi column view</string>
<string name="add_to_bookmark">Add to Bookmarks</string>
<string name="remove_from_bookmark">Remove from Bookmarks</string>
<string name="add_to_calendar">Add to Calendar</string>
<string name="share_link">Share Link</string>
<string name="go_to_timetable_detail">Open details</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@ import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalHapticFeedback
import io.github.droidkaigi.confsched.designsystem.theme.LocalRoomTheme
import io.github.droidkaigi.confsched.designsystem.theme.ProvideRoomTheme
import io.github.droidkaigi.confsched.droidkaigiui.DroidkaigiuiRes
import io.github.droidkaigi.confsched.droidkaigiui.KaigiPreviewContainer
import io.github.droidkaigi.confsched.droidkaigiui.add_to_bookmark
import io.github.droidkaigi.confsched.droidkaigiui.extension.roomTheme
import io.github.droidkaigi.confsched.droidkaigiui.remove_from_bookmark
import io.github.droidkaigi.confsched.model.sessions.TimetableItem
import io.github.droidkaigi.confsched.model.sessions.fake
import io.github.droidkaigi.confsched.sessions.SessionsRes
import io.github.droidkaigi.confsched.sessions.add_to_bookmark
import io.github.droidkaigi.confsched.sessions.add_to_calendar
import io.github.droidkaigi.confsched.sessions.remove_from_bookmark
import io.github.droidkaigi.confsched.sessions.share_link
import io.github.droidkaigi.confsched.sessions.slide
import io.github.droidkaigi.confsched.sessions.video
Expand Down Expand Up @@ -142,9 +143,9 @@ private fun TimetableItemDetailFloatingActionButtonMenu(
text = {
Text(
if (isBookmarked) {
stringResource(SessionsRes.string.remove_from_bookmark)
stringResource(DroidkaigiuiRes.string.remove_from_bookmark)
} else {
stringResource(SessionsRes.string.add_to_bookmark)
stringResource(DroidkaigiuiRes.string.add_to_bookmark)
},
)
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@ import androidx.compose.ui.input.pointer.PointerEventPass
import androidx.compose.ui.input.pointer.PointerEventType
import androidx.compose.ui.input.pointer.isSecondaryPressed
import androidx.compose.ui.input.pointer.onPointerEvent
import io.github.droidkaigi.confsched.droidkaigiui.DroidkaigiuiRes
import io.github.droidkaigi.confsched.droidkaigiui.add_to_bookmark
import io.github.droidkaigi.confsched.droidkaigiui.remove_from_bookmark
import io.github.droidkaigi.confsched.sessions.SessionsRes
import io.github.droidkaigi.confsched.sessions.add_to_bookmark
import io.github.droidkaigi.confsched.sessions.go_to_timetable_detail
import io.github.droidkaigi.confsched.sessions.grid.TimetableGridScope
import io.github.droidkaigi.confsched.sessions.remove_from_bookmark
import org.jetbrains.compose.resources.stringResource

@OptIn(ExperimentalComposeUiApi::class)
Expand All @@ -33,9 +34,9 @@ actual fun TimetableGridScope.ContextMenuProviderForDesktop(
val gotoTimetableDetailLabel = stringResource(SessionsRes.string.go_to_timetable_detail)
val bookmarkLabel = stringResource(
if (isBookmarked) {
SessionsRes.string.remove_from_bookmark
DroidkaigiuiRes.string.remove_from_bookmark
} else {
SessionsRes.string.add_to_bookmark
DroidkaigiuiRes.string.add_to_bookmark
},
)

Expand Down
Loading