Skip to content

Commit 0d98dee

Browse files
feat: 도서관 남은 좌석 UI 구현 (#391)
* [추가] 도서관 feature 모듈 추가 * [수정] Manifest, gradle 파일 수정 * [추가] 구역별 좌석표시 컴포넌트 * [추가] 탑바, 바텀바, FAB 구현 * [추가] 도서관 좌석 화면 구현 * [추가] 도서관 좌석 네비게이션 추가 * [추가] FAB 애니메이션 추가 * [수정] 주석 수정 * Update feature/library/src/main/java/com/ku_stacks/ku_ring/library/compose/LibrarySeatScreen.kt * [수정] 리뷰 기반 코드 수정 --------- Co-authored-by: HyunWoo Lee (Nunu Lee) <[email protected]>
1 parent 05508e9 commit 0d98dee

File tree

20 files changed

+688
-1
lines changed

20 files changed

+688
-1
lines changed

.idea/inspectionProfiles/Project_Default.xml

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

.idea/kotlinc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ dependencies {
8989
implementation(projects.feature.splash)
9090
implementation(projects.feature.main)
9191
implementation(projects.feature.kuringbot)
92+
implementation(projects.feature.library)
9293

9394
implementation(libs.androidx.startup.runtime)
9495
testImplementation(libs.kotlinx.coroutines.test)

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@
7878
android:name=".kuringbot.KuringBotActivity"
7979
android:exported="false"
8080
android:windowSoftInputMode="adjustResize" />
81+
<activity
82+
android:name=".library.LibrarySeatActivity"
83+
android:exported="false"
84+
android:windowSoftInputMode="adjustResize" />
8185

8286
<provider
8387
android:name="androidx.startup.InitializationProvider"

app/src/main/java/com/ku_stacks/ku_ring/navigator/KuringNavigatorImpl.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.ku_stacks.ku_ring.edit_departments.EditDepartmentsActivity
1212
import com.ku_stacks.ku_ring.edit_subscription.EditSubscriptionActivity
1313
import com.ku_stacks.ku_ring.feedback.feedback.FeedbackActivity
1414
import com.ku_stacks.ku_ring.kuringbot.KuringBotActivity
15+
import com.ku_stacks.ku_ring.library.LibrarySeatActivity
1516
import com.ku_stacks.ku_ring.main.MainActivity
1617
import com.ku_stacks.ku_ring.main.search.SearchActivity
1718
import com.ku_stacks.ku_ring.notice_detail.NoticeWebActivity
@@ -95,4 +96,8 @@ class KuringNavigatorImpl @Inject constructor() : KuringNavigator {
9596
override fun navigateToKuringBot(context: Context) {
9697
KuringBotActivity.start(context)
9798
}
99+
100+
override fun navigateToLibrarySeat(activity: Activity) {
101+
LibrarySeatActivity.start(activity)
102+
}
98103
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.ku_stacks.ku_ring.designsystem.components.progress
2+
3+
import androidx.compose.material.CircularProgressIndicator
4+
import androidx.compose.runtime.Composable
5+
import androidx.compose.ui.Modifier
6+
import androidx.compose.ui.graphics.Color
7+
import androidx.compose.ui.graphics.StrokeCap
8+
import androidx.compose.ui.unit.Dp
9+
import androidx.compose.ui.unit.dp
10+
import com.ku_stacks.ku_ring.designsystem.components.LightAndDarkPreview
11+
import com.ku_stacks.ku_ring.designsystem.kuringtheme.KuringTheme
12+
13+
@Composable
14+
fun CircularProgressBar(
15+
progress: Float,
16+
strokeWidth: Dp,
17+
modifier: Modifier = Modifier,
18+
backgroundColor: Color = KuringTheme.colors.mainPrimary,
19+
foregroundColor: Color = KuringTheme.colors.gray100,
20+
strokeCap: StrokeCap = StrokeCap.Square,
21+
) {
22+
CircularProgressIndicator(
23+
progress = progress,
24+
color = foregroundColor,
25+
backgroundColor = backgroundColor,
26+
strokeWidth = strokeWidth,
27+
strokeCap = strokeCap,
28+
modifier = modifier,
29+
)
30+
}
31+
32+
@LightAndDarkPreview
33+
@Composable
34+
private fun CircularProgressBarPreview() {
35+
KuringTheme{
36+
CircularProgressBar(
37+
progress = 0.5f,
38+
strokeWidth = 5.dp
39+
)
40+
}
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.ku_stacks.ku_ring.designsystem.components.topbar
2+
3+
import androidx.annotation.DrawableRes
4+
import androidx.compose.foundation.background
5+
import androidx.compose.foundation.clickable
6+
import androidx.compose.foundation.layout.Row
7+
import androidx.compose.foundation.layout.fillMaxWidth
8+
import androidx.compose.foundation.layout.padding
9+
import androidx.compose.material.Icon
10+
import androidx.compose.runtime.Composable
11+
import androidx.compose.ui.Alignment
12+
import androidx.compose.ui.Modifier
13+
import androidx.compose.ui.graphics.vector.ImageVector
14+
import androidx.compose.ui.res.vectorResource
15+
import androidx.compose.ui.unit.dp
16+
import com.ku_stacks.ku_ring.designsystem.R
17+
import com.ku_stacks.ku_ring.designsystem.components.LightAndDarkPreview
18+
import com.ku_stacks.ku_ring.designsystem.kuringtheme.KuringTheme
19+
20+
/**
21+
* 뒤로 가기 버튼만 포함하는 탑바.
22+
*
23+
* @param navigationIconId 아이콘 아이디
24+
* @param onNavigationIconClick 아이콘 버튼을 눌렀을 때 발생시킬 이벤트
25+
* @param modifier 적용할 [Modifier]
26+
*/
27+
@Composable
28+
fun NavigateUpTopBar(
29+
@DrawableRes navigationIconId: Int,
30+
onNavigationIconClick: () -> Unit,
31+
modifier: Modifier = Modifier,
32+
) {
33+
Row(
34+
modifier = modifier
35+
.background(KuringTheme.colors.background)
36+
.padding(start = 20.dp, top = 18.dp, bottom = 21.dp),
37+
verticalAlignment = Alignment.CenterVertically,
38+
) {
39+
Icon(
40+
imageVector = ImageVector.vectorResource(id = navigationIconId),
41+
contentDescription = null,
42+
tint = KuringTheme.colors.textBody,
43+
modifier = Modifier.clickable { onNavigationIconClick() }
44+
)
45+
46+
}
47+
}
48+
49+
@LightAndDarkPreview
50+
@Composable
51+
private fun KuringIconTopBarPreview() {
52+
KuringTheme {
53+
NavigateUpTopBar(
54+
onNavigationIconClick = {},
55+
navigationIconId = R.drawable.ic_back_v2,
56+
modifier = Modifier.fillMaxWidth(),
57+
)
58+
}
59+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24">
6+
<path
7+
android:pathData="M21.167,5.333V10.333H16.167"
8+
android:strokeLineJoin="round"
9+
android:strokeWidth="1.25"
10+
android:fillColor="#00000000"
11+
android:strokeColor="#999999"
12+
android:strokeLineCap="round"/>
13+
<path
14+
android:pathData="M2.833,18.667V13.667H7.833"
15+
android:strokeLineJoin="round"
16+
android:strokeWidth="1.25"
17+
android:fillColor="#00000000"
18+
android:strokeColor="#999999"
19+
android:strokeLineCap="round"/>
20+
<path
21+
android:pathData="M4.925,9.5C5.347,8.306 6.066,7.238 7.013,6.396C7.96,5.555 9.104,4.966 10.34,4.687C11.576,4.407 12.862,4.445 14.079,4.797C15.296,5.149 16.404,5.804 17.3,6.7L21.166,10.333M2.833,13.667L6.7,17.3C7.595,18.196 8.703,18.851 9.92,19.203C11.137,19.555 12.424,19.593 13.659,19.313C14.895,19.034 16.04,18.445 16.987,17.604C17.934,16.762 18.652,15.694 19.075,14.5"
22+
android:strokeLineJoin="round"
23+
android:strokeWidth="1.25"
24+
android:fillColor="#00000000"
25+
android:strokeColor="#999999"
26+
android:strokeLineCap="round"/>
27+
</vector>

core/ui_util/src/main/java/com/ku_stacks/ku_ring/ui_util/KuringNavigator.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ interface KuringNavigator {
2828
fun navigateToSplash(activity: Activity)
2929
fun navigateToOssLicensesMenu(activity: Activity)
3030
fun navigateToKuringBot(context: Context)
31+
fun navigateToLibrarySeat(activity: Activity)
3132
}

feature/library/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

feature/library/build.gradle.kts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import com.ku_stacks.ku_ring.buildlogic.dsl.setNameSpace
2+
3+
plugins {
4+
kuring("view")
5+
kuring("compose")
6+
}
7+
8+
android {
9+
setNameSpace("feature.library")
10+
}
11+
12+
dependencies {
13+
implementation(projects.core.designsystem)
14+
implementation(projects.core.util)
15+
implementation(projects.data.domain)
16+
implementation(projects.data.library)
17+
testImplementation(projects.core.testUtil)
18+
19+
implementation(libs.bundles.compose.interop)
20+
}

feature/library/consumer-rules.pro

Whitespace-only changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
3+
4+
</manifest>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.ku_stacks.ku_ring.library
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import android.os.Bundle
6+
import androidx.activity.compose.setContent
7+
import androidx.activity.enableEdgeToEdge
8+
import androidx.appcompat.app.AppCompatActivity
9+
import androidx.compose.foundation.layout.fillMaxSize
10+
import androidx.compose.ui.Modifier
11+
import com.ku_stacks.ku_ring.designsystem.kuringtheme.KuringTheme
12+
import com.ku_stacks.ku_ring.library.compose.LibrarySeatScreen
13+
import dagger.hilt.android.AndroidEntryPoint
14+
15+
@AndroidEntryPoint
16+
class LibrarySeatActivity : AppCompatActivity() {
17+
18+
override fun onCreate(savedInstanceState: Bundle?) {
19+
super.onCreate(savedInstanceState)
20+
enableEdgeToEdge()
21+
22+
setContent {
23+
KuringTheme {
24+
LibrarySeatScreen(
25+
onBackButtonClick = ::finish,
26+
onReservationButtonClick = {},
27+
modifier = Modifier.fillMaxSize()
28+
)
29+
}
30+
}
31+
}
32+
33+
companion object {
34+
fun start(context: Context) {
35+
val intent = Intent(context, LibrarySeatActivity::class.java)
36+
context.startActivity(intent)
37+
}
38+
}
39+
}

0 commit comments

Comments
 (0)