Skip to content

Commit

Permalink
Merge branch 'develop' into feat/ui-my
Browse files Browse the repository at this point in the history
  • Loading branch information
HAJIEUN02 committed Jan 23, 2025
2 parents b58d14f + 62606f3 commit 4832a02
Show file tree
Hide file tree
Showing 8 changed files with 1,151 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.width
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
Expand Down Expand Up @@ -99,12 +100,12 @@ fun BbangZipBaseTopBar(
contentDescription = null,
modifier =
Modifier
.padding(8.dp)
.applyFilterOnClick(
radius = 20.dp,
isDisabled = false,
onClick = { onTrailingIconClick() },
),
)
.padding(8.dp),
tint = BbangZipTheme.colors.labelAlternative_282119_61,
)
}
Expand All @@ -120,24 +121,20 @@ fun BbangZipMenuTopBarPreview() {
modifier = Modifier.fillMaxSize(),
) {
BbangZipBaseTopBar(
isShadowed = true,
title = "경제통계학",
leadingIcon = R.drawable.ic_chevronleft_thick_small_24,
)

BbangZipBaseTopBar(
isShadowed = true,
title = "",
leadingIcon = R.drawable.ic_chevronleft_thick_small_24,
)

BbangZipBaseTopBar(
isShadowed = true,
title = "",
)

BbangZipBaseTopBar(
isShadowed = true,
title = "경제통계학",
backGroundColor = BbangZipTheme.colors.backgroundAccent_FFDAA0,
leadingIcon = R.drawable.ic_chevronleft_thick_small_24,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.android.bbangzip.presentation.type

enum class PieceViewType {
EMPTY,
DEFAULT,
DELETE,
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import org.android.bbangzip.presentation.ui.subject.navigateSubject
import org.android.bbangzip.presentation.ui.subject.splitstudy.navigateSplitStudy
import org.android.bbangzip.presentation.ui.subject.splitstudy.splitStudyNavGraph
import org.android.bbangzip.presentation.ui.subject.subjectNavGraph
import org.android.bbangzip.presentation.ui.subject.subjectdetail.subjectDetailNavGraph
import org.android.bbangzip.presentation.ui.todo.navigation.todoNavGraph
import org.android.bbangzip.presentation.ui.todo.pendingtodoadd.navigation.todoAddPendingNavGraph
import org.android.bbangzip.presentation.ui.todo.todoadd.navigation.todoAddNavGraph
Expand Down Expand Up @@ -110,6 +111,16 @@ fun MainNavHost(
navigateAddStudy = { navigator.navHostController.navigateAddStudy(it) },
)

todoNavGraph(
snackBarHostState = snackBarHostState,
bottomPadding = padding,
navigateToAddToDo = { navigator.navigateToToDoAdd() },
navigateToAddPendingToDo = { navigator.navigateToToDoAddPending() },
)
subjectDetailNavGraph(
padding = padding,
)

todoNavGraph(
snackBarHostState = snackBarHostState,
bottomPadding = padding,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
package org.android.bbangzip.presentation.ui.subject.subjectdetail

import android.os.Parcelable
import kotlinx.parcelize.Parcelize
import org.android.bbangzip.presentation.component.card.BbangZipCardState
import org.android.bbangzip.presentation.model.card.ToDoCardModel
import org.android.bbangzip.presentation.type.PieceViewType
import org.android.bbangzip.presentation.util.base.BaseContract

class SubjectDetailContract {
@Parcelize
data class SubjectDetailState(
val tabIndex: Int = 0,
val isMenuOpen: Boolean = false,
val isTopBarShadowed: Boolean = false,
val pieceViewType: PieceViewType = PieceViewType.DEFAULT,
val selectedItemSet: Set<Int> = setOf(),
val revertCompleteBottomSheetState: Boolean = false,
val selectedItemId: Int = -1,
val todoList: List<ToDoCardModel> =
listOf(
ToDoCardModel(
pieceId = 1,
subjectName = "",
examName = "",
studyContents = "Review Chapters 1-3",
startPage = 1,
finishPage = 50,
deadline = "2025-01-20",
remainingDays = 2,
cardState = BbangZipCardState.COMPLETE,
),
ToDoCardModel(
pieceId = 2,
subjectName = "",
examName = "",
studyContents = "Notes on WWII",
startPage = 5,
finishPage = 30,
deadline = "2025-01-22",
remainingDays = -3,
BbangZipCardState.DEFAULT,
),
ToDoCardModel(
pieceId = 3,
subjectName = "",
examName = "",
studyContents = "Kinematics and Dynamics",
startPage = 20,
finishPage = 80,
deadline = "2025-01-25",
remainingDays = 7,
cardState = BbangZipCardState.COMPLETE,
),
ToDoCardModel(
pieceId = 4,
subjectName = "",
examName = "",
studyContents = "Checkable abstract art piece",
startPage = 0,
finishPage = 0,
deadline = "2025-01-28",
remainingDays = -2,
cardState = BbangZipCardState.DEFAULT,
),
ToDoCardModel(
pieceId = 5,
subjectName = "",
examName = "",
studyContents = "Notes on WWII",
startPage = 5,
finishPage = 30,
deadline = "2025-01-22",
remainingDays = 4,
BbangZipCardState.DEFAULT,
),
ToDoCardModel(
pieceId = 6,
subjectName = "",
examName = "",
studyContents = "Kinematics and Dynamics",
startPage = 20,
finishPage = 80,
deadline = "2025-01-25",
remainingDays = -1,
BbangZipCardState.DEFAULT,
),
ToDoCardModel(
pieceId = 7,
subjectName = "",
examName = "",
studyContents = "Checkable abstract art piece",
startPage = 0,
finishPage = 0,
deadline = "2025-01-28",
remainingDays = 5,
BbangZipCardState.DEFAULT,
),
ToDoCardModel(
pieceId = 8,
subjectName = "",
examName = "",
studyContents = "Notes on WWII",
startPage = 5,
finishPage = 30,
deadline = "2025-01-22",
remainingDays = -4,
BbangZipCardState.DEFAULT,
),
ToDoCardModel(
pieceId = 9,
subjectName = "",
examName = "",
studyContents = "Kinematics and Dynamics",
startPage = 20,
finishPage = 80,
deadline = "2025-01-25",
remainingDays = 3,
BbangZipCardState.DEFAULT,
),
ToDoCardModel(
pieceId = 10,
subjectName = "",
examName = "",
studyContents = "CHECKABLE abstract art piece",
startPage = 0,
finishPage = 0,
deadline = "2025-01-28",
remainingDays = -5,
BbangZipCardState.DEFAULT,
),
),
) : BaseContract.State, Parcelable {
override fun toParcelable(): Parcelable = this
}

sealed interface SubjectDetailEvent : BaseContract.Event {
data object Initialize : SubjectDetailEvent

data object OnPlusIconClicked : SubjectDetailEvent

data object OnTrashIconClicked : SubjectDetailEvent

data object OnCloseIconClicked : SubjectDetailEvent

data object OnDeleteButtonClicked : SubjectDetailEvent

data object OnRevertCompleteBottomSheetApproveButtonClicked : SubjectDetailEvent

data object OnRevertCompleteBottomSheetDismissButtonClicked : SubjectDetailEvent

data object OnRevertCompleteBottomSheetDissmissRequest : SubjectDetailEvent

data class OnDeleteModeCardClicked(
val pieceId: Int,
) : SubjectDetailEvent

data class OnDefaultCardClicked(
val pieceId: Int,
) : SubjectDetailEvent

data class OnCompleteCardClicked(
val pieceId: Int,
) : SubjectDetailEvent
}

sealed interface SubjectDetailReduce : BaseContract.Reduce {
data object UpdateToDeleteMode : SubjectDetailReduce

data object UpdateToDefaultMode : SubjectDetailReduce

data class UpdateDeleteModeCardState(val pieceId: Int) : SubjectDetailReduce

data class UpdateDeleteSet(val pieceId: Int) : SubjectDetailReduce

data class UpdateDefaultCardState(val pieceId: Int) : SubjectDetailReduce

data object UpdateCompleteCardState : SubjectDetailReduce

data class DeleteSelectedItemSet(val pieceId: Int) : SubjectDetailReduce

data object UpdateRevertCompleteBottomSheetState : SubjectDetailReduce

data class UpdateSelectedId(val pieceId: Int) : SubjectDetailReduce
}

sealed interface SubjectDetailSideEffect : BaseContract.SideEffect {
data object NavigateToAddSubject : SubjectDetailSideEffect

data object NavigateToAddStudy : SubjectDetailSideEffect

data object ShowDeleteSuccessSnackBar : SubjectDetailSideEffect
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.android.bbangzip.presentation.ui.subject.subjectdetail

import androidx.compose.foundation.layout.PaddingValues
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import kotlinx.serialization.Serializable

fun NavController.navigateSubjectDetail() {
navigate(
route = SubjectDetailRoute,
)
}

fun NavGraphBuilder.subjectDetailNavGraph(
padding: PaddingValues,
) {
composable<SubjectDetailRoute> {
SubjectDetailRoute(
padding = padding,
)
}
}

@Serializable
object SubjectDetailRoute
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.android.bbangzip.presentation.ui.subject.subjectdetail

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle

@Composable
fun SubjectDetailRoute(
padding: PaddingValues,
viewModel: SubjectDetailViewModel = hiltViewModel(),
) {
val subjectDetailState by viewModel.uiState.collectAsStateWithLifecycle()

SubjectDetailScreen(
padding = padding,
todoList = subjectDetailState.todoList,
pieceViewType = subjectDetailState.pieceViewType,
deletedSet = subjectDetailState.selectedItemSet,
revertCompleteBottomSheetState = subjectDetailState.revertCompleteBottomSheetState,
selectedItemId = subjectDetailState.selectedItemId,
onCloseIconClicked = { viewModel.setEvent(SubjectDetailContract.SubjectDetailEvent.OnCloseIconClicked) },
onTrashIconClicked = { viewModel.setEvent(SubjectDetailContract.SubjectDetailEvent.OnTrashIconClicked) },
onDeleteModeCardClicked = { id -> viewModel.setEvent(SubjectDetailContract.SubjectDetailEvent.OnDeleteModeCardClicked(id)) },
onDefaultCardClicked = { id -> viewModel.setEvent(SubjectDetailContract.SubjectDetailEvent.OnDefaultCardClicked(id)) },
onCompleteCardClicked = { id -> viewModel.setEvent(SubjectDetailContract.SubjectDetailEvent.OnCompleteCardClicked(id)) },
onRevertCompleteBottomSheetDismissRequest = { viewModel.setEvent(SubjectDetailContract.SubjectDetailEvent.OnRevertCompleteBottomSheetDissmissRequest) },
onRevertCompleteBottomSheetApproveButtonClicked = { viewModel.setEvent(SubjectDetailContract.SubjectDetailEvent.OnRevertCompleteBottomSheetApproveButtonClicked) },
onRevertCompleteBottomSheetDismissButtonClicked = { viewModel.setEvent(SubjectDetailContract.SubjectDetailEvent.OnRevertCompleteBottomSheetDismissButtonClicked) },
)
}
Loading

0 comments on commit 4832a02

Please sign in to comment.