From 25730f2d4a098210f281703beb6af5937fc6a6c6 Mon Sep 17 00:00:00 2001 From: Sanju S Date: Mon, 22 Nov 2021 03:48:58 +0530 Subject: [PATCH 01/13] Add `ProjectScreen.kt` Signed-off-by: Sanju S --- .idea/misc.xml | 18 +- app/build.gradle.kts | 10 + .../einsen/components/BottomCTA.kt | 29 ++- .../spikeysanju/einsen/components/Button.kt | 28 ++- .../spikeysanju/einsen/components/ChipView.kt | 49 +++++ .../einsen/components/DashboardCard.kt | 48 +++++ .../einsen/components/EmojiHolders.kt | 31 +++ .../spikeysanju/einsen/components/InfoCard.kt | 11 + .../einsen/components/ItemWorkspaceCard.kt | 94 +++++++++ .../spikeysanju/einsen/components/Slider.kt | 15 ++ .../einsen/components/TaskItemCard.kt | 28 +++ .../einsen/components/TextInput.kt | 25 +++ .../spikeysanju/einsen/navigation/NavGraph.kt | 13 +- .../spikeysanju/einsen/navigation/Screen.kt | 1 + .../dev/spikeysanju/einsen/ui/theme/Shape.kt | 2 +- .../einsen/view/project/ProjectScreen.kt | 193 ++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + build.gradle.kts | 1 + 18 files changed, 592 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/dev/spikeysanju/einsen/components/ItemWorkspaceCard.kt create mode 100644 app/src/main/java/dev/spikeysanju/einsen/view/project/ProjectScreen.kt diff --git a/.idea/misc.xml b/.idea/misc.xml index 9504742..fd41138 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,6 +8,22 @@ + + + + + + + + + + + + + + + + @@ -21,4 +37,4 @@ - \ No newline at end of file + diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5e6f1c0..0b4b836 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -101,6 +101,13 @@ android { composeOptions { kotlinCompilerExtensionVersion = rootProject.extra["composeVersion"] as String } + + packagingOptions { + // Multiple dependency bring these files in. Exclude them to enable + // our test APK to build (has no effect on our AARs) + resources.excludes += "/META-INF/AL2.0" + resources.excludes += "/META-INF/LGPL2.1" + } } dependencies { @@ -125,6 +132,9 @@ dependencies { implementation("com.google.firebase:firebase-analytics-ktx") + // Constraint layout + implementation("androidx.constraintlayout:constraintlayout-compose:${rootProject.extra["constraintLayout"]}") + // compose navigation implementation("androidx.navigation:navigation-compose:${rootProject.extra["composeNavigationVersion"]}") implementation("androidx.hilt:hilt-navigation-compose:${rootProject.extra["hiltComposeNavVersion"]}") diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/BottomCTA.kt b/app/src/main/java/dev/spikeysanju/einsen/components/BottomCTA.kt index a0a0a75..96341a0 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/BottomCTA.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/BottomCTA.kt @@ -22,6 +22,7 @@ package dev.spikeysanju.einsen.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -38,6 +39,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import dev.spikeysanju.einsen.R import dev.spikeysanju.einsen.ui.theme.einsenColors @@ -72,7 +74,8 @@ fun BottomCTA( ) { Row( modifier = modifier.padding(top = 12.dp, bottom = 12.dp, start = 16.dp, end = 16.dp), - horizontalArrangement = Arrangement.SpaceAround + horizontalArrangement = Arrangement.SpaceAround, + verticalAlignment = Alignment.CenterVertically ) { ActionIcons(onEdit = { onEdit() }, onDelete = { onDelete() }, onShare = { onShare() }) Spacer(modifier = modifier.width(12.dp)) @@ -130,3 +133,27 @@ fun ActionIcons( } } } + +@Preview(name = "Bottom CTA", group = "Button") +@Composable +fun BottomCTA() { + + Column { + + BottomCTA( + title = "Complete", + icon = painterResource(id = R.drawable.ic_check), + color = einsenColors.black, + onEdit = { }, + onDelete = { }, + onShare = { } + ) { + } + + Spacer(modifier = Modifier.height(12.dp)) + + ActionIcons(onEdit = { /*TODO*/ }, onDelete = { /*TODO*/ }) { + // on share action goes here + } + } +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/Button.kt b/app/src/main/java/dev/spikeysanju/einsen/components/Button.kt index 3105769..609923f 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/Button.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/Button.kt @@ -19,6 +19,7 @@ package dev.spikeysanju.einsen.components +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -30,12 +31,16 @@ import androidx.compose.material.ButtonDefaults import androidx.compose.material.Icon import androidx.compose.material.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import dev.spikeysanju.einsen.R import dev.spikeysanju.einsen.ui.theme.einsenColors import dev.spikeysanju.einsen.ui.theme.typography /** @@ -60,7 +65,7 @@ fun PrimaryButton(modifier: Modifier = Modifier, title: String, onclick: () -> U ) { Text( text = title, - style = typography.subtitle2, + style = typography.subtitle1, textAlign = TextAlign.Center, color = einsenColors.white ) @@ -105,3 +110,24 @@ fun PrimaryButtonWithIcon( ) } } + +@Preview(name = "Primary & Primary Button with Icon", group = "Button") +@Composable +fun ButtonPreview() { + + Column(modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { + + PrimaryButtonWithIcon( + title = "Save Information", + icon = painterResource(id = R.drawable.ic_check), + onclick = { }, + color = einsenColors.button + ) + + Spacer(modifier = Modifier.height(12.dp)) + + PrimaryButton(title = "Save Task") { + // onclick action goes here + } + } +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/ChipView.kt b/app/src/main/java/dev/spikeysanju/einsen/components/ChipView.kt index 7219610..eb4404f 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/ChipView.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/ChipView.kt @@ -23,6 +23,9 @@ import androidx.compose.animation.animateContentSize import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.shape.RoundedCornerShape @@ -31,6 +34,8 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import dev.spikeysanju.einsen.ui.theme.einsenColors @@ -60,3 +65,47 @@ fun ChipView( ) } } + +/** + * This component helps to show the category for each Task of this app. + * @param title + * @param onClick + */ +@Composable +fun SmallChipView( + modifier: Modifier = Modifier, + title: String, + color: Color, + onClick: () -> Unit +) { + Box( + modifier = modifier + .wrapContentWidth() + .animateContentSize() + .clickable(onClick = onClick) + .clip(RoundedCornerShape(12.dp)) + .background(color = color.copy(0.10F)) + ) { + Text( + text = title, modifier = modifier.padding(4.dp), + style = MaterialTheme.typography.overline, + color = color + ) + } +} + +@Preview(name = "Category & Tags views", group = "Chip") +@Composable +fun ChipViewPreview() { + + Column { + SmallChipView(title = "Einsen", color = einsenColors.calm) { + // onclick action + } + Spacer(modifier = Modifier.height(12.dp)) + + ChipView(title = "Einsen") { + // onclick action + } + } +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/DashboardCard.kt b/app/src/main/java/dev/spikeysanju/einsen/components/DashboardCard.kt index ad09525..ee0ca40 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/DashboardCard.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/DashboardCard.kt @@ -38,7 +38,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import dev.spikeysanju.einsen.ui.theme.einsenColors import dev.spikeysanju.einsen.ui.theme.typography import dev.spikeysanju.einsen.utils.coloredShadow @@ -96,3 +98,49 @@ fun DashboardCardItem( Text(text = count, style = typography.h2, color = Color.White) } } + +@Preview(name = "Dashboard Eisenhower matrix cards ", group = "Card") +@Composable +fun DashboardPreview() { + Column { + InfoCard(title = "Urgency", value = "2", modifier = Modifier) + + DashboardCardItem( + title = "Do it now", + description = "Important & Urgent", + count = "13", + color = einsenColors.success + ) { + // click action goes here + } + Spacer(modifier = Modifier.height(12.dp)) + DashboardCardItem( + title = "Decide when to do", + description = "Important not Urgent", + count = "17", + color = einsenColors.calm + ) { + // click action goes here + } + + Spacer(modifier = Modifier.height(12.dp)) + DashboardCardItem( + title = "Delegate it", + description = "Urgent not Important", + count = "03", + color = einsenColors.err + ) { + // click action goes here + } + + Spacer(modifier = Modifier.height(12.dp)) + DashboardCardItem( + title = "Dump it", + description = "Not Important & Not Urgent", + count = "11", + color = einsenColors.warning + ) { + // click action goes here + } + } +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/EmojiHolders.kt b/app/src/main/java/dev/spikeysanju/einsen/components/EmojiHolders.kt index 57308c7..a7e8e27 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/EmojiHolders.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/EmojiHolders.kt @@ -22,6 +22,10 @@ package dev.spikeysanju.einsen.components import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.Text @@ -30,6 +34,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import dev.spikeysanju.einsen.ui.theme.einsenColors import dev.spikeysanju.einsen.ui.theme.typography @@ -110,3 +115,29 @@ fun EmojiPlaceHolderBottomSheet( ) } } + +@Preview(name = "Emoji holders", group = "Emoji") +@Composable +fun EmojiHolderPreview() { + Column(modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { + EmojiPlaceHolder(emoji = "\uD83D\uDD25") { + // onclick action goes here + } + + Spacer(modifier = Modifier.height(12.dp)) + + EmojiPlaceHolderSmall(emoji = "\uD83D\uDD25") { + // onclick action goes here + } + + Spacer(modifier = Modifier.height(12.dp)) + + EmojiPlaceHolderBottomSheet(emoji = "\uD83D\uDD25") { + // onclick action geos here + } + + Spacer(modifier = Modifier.height(12.dp)) + + EmojiTextView(emoji = "\uD83D\uDD25") + } +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/InfoCard.kt b/app/src/main/java/dev/spikeysanju/einsen/components/InfoCard.kt index 72faa68..bd02e29 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/InfoCard.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/InfoCard.kt @@ -38,6 +38,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import dev.spikeysanju.einsen.R import dev.spikeysanju.einsen.ui.theme.einsenColors @@ -89,3 +90,13 @@ fun InfoCard(title: String, value: String, modifier: Modifier) { } } } + +@Preview(name = "Info card", group = "Card") +@Composable +fun InfoCardPreview() { + Column { + InfoCard(title = "Urgency", value = "2", modifier = Modifier) + Spacer(modifier = Modifier.height(12.dp)) + InfoCard(title = "Importance", value = "2", modifier = Modifier) + } +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/ItemWorkspaceCard.kt b/app/src/main/java/dev/spikeysanju/einsen/components/ItemWorkspaceCard.kt new file mode 100644 index 0000000..5b87fb1 --- /dev/null +++ b/app/src/main/java/dev/spikeysanju/einsen/components/ItemWorkspaceCard.kt @@ -0,0 +1,94 @@ +/* + * + * * Copyright 2021 Spikey Sanju + * * + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * https://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * + * + */ + +package dev.spikeysanju.einsen.components + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Card +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import dev.spikeysanju.einsen.ui.theme.einsenColors +import dev.spikeysanju.einsen.ui.theme.typography + +@Composable +fun ItemWorkspaceCard( + modifier: Modifier, + title: String, + itemCount: String, + emoji: String, + tag: String, + onCardClick: () -> Unit, + onChipViewClick: () -> Unit +) { + Card( + modifier = modifier + .fillMaxWidth() + .padding(12.dp) + .clickable { + onCardClick() + }, + backgroundColor = einsenColors.card, shape = RoundedCornerShape(24.dp) + ) { + Column( + modifier = modifier + .wrapContentWidth() + .padding(24.dp) + ) { + + EmojiPlaceHolderSmall(emoji = emoji) { + } + Spacer(modifier = modifier.height(12.dp)) + Text(text = title, style = typography.subtitle1, color = einsenColors.black) + Spacer(modifier = modifier.height(12.dp)) + Text(text = itemCount, style = typography.caption, color = einsenColors.black) + Spacer(modifier = modifier.height(16.dp)) + SmallChipView(title = tag, color = einsenColors.calm) { + onChipViewClick() + } + } + } +} + +@Preview(name = "Projects Card", group = "Card") +@Composable +fun ProjectCardPreview() { + ItemWorkspaceCard( + modifier = Modifier, + title = "Einsen app", + itemCount = "5 action items", + emoji = "\uD83D\uDD25", + tag = "Open source", + onCardClick = { + // on card click action goes here + } + ) { + + // on tag click action goes here + } +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/Slider.kt b/app/src/main/java/dev/spikeysanju/einsen/components/Slider.kt index 8047b66..63385ff 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/Slider.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/Slider.kt @@ -21,6 +21,7 @@ package dev.spikeysanju.einsen.components import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -37,6 +38,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.nativeCanvas import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import dev.spikeysanju.einsen.ui.theme.einsenColors @@ -114,3 +116,16 @@ fun EinsenStepSlider( ) } } + +@Preview(name = "Important & Urgency Slider", group = "Slider") +@Composable +fun SliderPreview() { + Column { + Slider( + value = 4F, + onValueChange = { + // slider value change goes here + } + ) + } +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/TaskItemCard.kt b/app/src/main/java/dev/spikeysanju/einsen/components/TaskItemCard.kt index f8ac478..5291800 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/TaskItemCard.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/TaskItemCard.kt @@ -48,8 +48,10 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import dev.spikeysanju.einsen.model.task.Priority import dev.spikeysanju.einsen.model.task.Task import dev.spikeysanju.einsen.ui.theme.Sailec import dev.spikeysanju.einsen.ui.theme.einsenColors @@ -200,3 +202,29 @@ fun EisenCheckBox(value: Boolean, onValueChanged: (Boolean) -> Unit) { ) ) } + +@Preview(name = "Task Item Card", group = "Card") +@Composable +fun TaskItemCardPreview() { + TaskItemCard( + task = Task( + "Einsen Architecture", + "Einsen app architecture demo works needs to be done on coming monday!", + "Android", + "\uD83D\uDD25", + 3, + 4, + Priority.IMPORTANT, + "18/12/1998", + false, + 2, + 4, + 1, + 1, + 1 + ), onClick = { /*TODO*/ }, + onCheckboxChange = { + // check box change logic goes here + } + ) +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/TextInput.kt b/app/src/main/java/dev/spikeysanju/einsen/components/TextInput.kt index 99748bf..686efed 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/TextInput.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/TextInput.kt @@ -20,7 +20,9 @@ package dev.spikeysanju.einsen.components import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions @@ -39,6 +41,7 @@ import androidx.compose.ui.focus.FocusDirection import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import dev.spikeysanju.einsen.ui.theme.einsenColors import dev.spikeysanju.einsen.ui.theme.typography @@ -185,3 +188,25 @@ fun textFieldColors() = TextFieldDefaults.textFieldColors( placeholderColor = einsenColors.black, disabledPlaceholderColor = einsenColors.black ) + +@Preview(name = "Text Input Field", group = "Input") +@Composable +fun TextInputPreview() { + Column { + EinsenInputTextField( + title = "Title", value = "Einsen Architecture", + onValueChanged = { + // value change action goes here + } + ) + + Spacer(modifier = Modifier.height(12.dp)) + + EinsenInputTextFieldWithoutHint( + title = "Description", value = "Einsen Architecture is really cool!", + onValueChanged = { + // value change action goes here + } + ) + } +} diff --git a/app/src/main/java/dev/spikeysanju/einsen/navigation/NavGraph.kt b/app/src/main/java/dev/spikeysanju/einsen/navigation/NavGraph.kt index 74a3ba9..5f48fee 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/navigation/NavGraph.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/navigation/NavGraph.kt @@ -43,6 +43,7 @@ import dev.spikeysanju.einsen.view.allemoji.AllEmojiScreen import dev.spikeysanju.einsen.view.dashboard.DashboardScreen import dev.spikeysanju.einsen.view.details.TaskDetailsScreen import dev.spikeysanju.einsen.view.edit.EditTaskScreen +import dev.spikeysanju.einsen.view.project.ProjectScreen import dev.spikeysanju.einsen.view.splash.SplashScreen import dev.spikeysanju.einsen.view.task.AllTaskScreen import dev.spikeysanju.einsen.view.viewmodel.MainViewModel @@ -76,7 +77,7 @@ fun NavGraph(toggleTheme: () -> Unit) { ModalBottomSheetLayout(bottomSheetNavigator) { - AnimatedNavHost(navController, startDestination = Screen.Splash.route) { + AnimatedNavHost(navController, startDestination = Screen.Project.route) { /** * Navigates to [SplashScreen]. @@ -85,6 +86,16 @@ fun NavGraph(toggleTheme: () -> Unit) { SplashScreen(EinsenModifier.modifier, actions) } + /** + * Navigates to [Project]. + */ + composable( + Screen.Project.route + ) { + val viewModel = hiltViewModel(it) + ProjectScreen(EinsenModifier.modifier, viewModel, actions, toggleTheme) + } + /** * Navigates to [Dashboard]. */ diff --git a/app/src/main/java/dev/spikeysanju/einsen/navigation/Screen.kt b/app/src/main/java/dev/spikeysanju/einsen/navigation/Screen.kt index 15e7983..cde97b0 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/navigation/Screen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/navigation/Screen.kt @@ -37,4 +37,5 @@ sealed class Screen(val route: String, @StringRes val resourceId: Int) { object About : Screen("about", R.string.text_about) object WebView : Screen("webview", R.string.text_webview) object AllEmoji : Screen("all_emoji", R.string.text_all_emoji) + object Project : Screen("project", R.string.text_project) } diff --git a/app/src/main/java/dev/spikeysanju/einsen/ui/theme/Shape.kt b/app/src/main/java/dev/spikeysanju/einsen/ui/theme/Shape.kt index e2027a4..1ab044a 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/ui/theme/Shape.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/ui/theme/Shape.kt @@ -26,5 +26,5 @@ import androidx.compose.ui.unit.dp val Shapes = Shapes( small = RoundedCornerShape(4.dp), medium = RoundedCornerShape(4.dp), - large = RoundedCornerShape(12.dp) + large = RoundedCornerShape(12.dp), ) diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/project/ProjectScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/project/ProjectScreen.kt new file mode 100644 index 0000000..f315122 --- /dev/null +++ b/app/src/main/java/dev/spikeysanju/einsen/view/project/ProjectScreen.kt @@ -0,0 +1,193 @@ +/* + * + * * Copyright 2021 Spikey Sanju + * * + * * Licensed under the Apache License, Version 2.0 (the "License"); + * * you may not use this file except in compliance with the License. + * * You may obtain a copy of the License at + * * + * * https://www.apache.org/licenses/LICENSE-2.0 + * * + * * Unless required by applicable law or agreed to in writing, software + * * distributed under the License is distributed on an "AS IS" BASIS, + * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * * See the License for the specific language governing permissions and + * * limitations under the License. + * + * + */ + +package dev.spikeysanju.einsen.view.project + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.GridCells +import androidx.compose.foundation.lazy.LazyVerticalGrid +import androidx.compose.material.FloatingActionButton +import androidx.compose.material.FloatingActionButtonDefaults +import androidx.compose.material.Icon +import androidx.compose.material.IconButton +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Scaffold +import androidx.compose.material.Text +import androidx.compose.material.TopAppBar +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.core.os.bundleOf +import dev.spikeysanju.einsen.R +import dev.spikeysanju.einsen.components.ItemWorkspaceCard +import dev.spikeysanju.einsen.navigation.MainActions +import dev.spikeysanju.einsen.ui.theme.einsenColors +import dev.spikeysanju.einsen.ui.theme.typography +import dev.spikeysanju.einsen.view.viewmodel.MainViewModel + +@Composable +fun ProjectScreen( + modifier: Modifier, + viewModel: MainViewModel, + actions: MainActions, + toggleTheme: () -> Unit +) { + + val gridSize by remember { mutableStateOf(150.dp) } + + Scaffold( + topBar = { + TopAppBar( + title = { + Text( + text = stringResource(id = R.string.text_project), + textAlign = TextAlign.Start, + style = typography.h5, + color = einsenColors.black + ) + }, + actions = { + + // log event to firebase + val bundle = bundleOf( + "theme_switch" to isSystemInDarkTheme() + ) + + IconButton( + onClick = { + toggleTheme().run { + viewModel.firebaseLogEvent("project_theme_switch", bundle) + } + } + ) { + + Icon( + painter = when (isSystemInDarkTheme()) { + true -> painterResource(id = R.drawable.ic_bulb_on) + false -> painterResource(id = R.drawable.ic_bulb_off) + }, + contentDescription = stringResource(R.string.text_bulb_turn_on), + tint = einsenColors.black + ) + } + + Spacer(modifier = modifier.width(8.dp)) + + IconButton( + onClick = { + actions.gotoAbout.invoke().run { + // log event to firebase + val aboutBundle = bundleOf( + "about_button" to "Clicked about button from Project" + ) + viewModel.firebaseLogEvent("project_about_button", aboutBundle) + } + } + ) { + Icon( + painter = painterResource(id = R.drawable.ic_about), + contentDescription = stringResource(R.string.text_bulb_turn_on), + tint = einsenColors.black + ) + } + }, + backgroundColor = einsenColors.background, elevation = 0.dp + ) + }, + floatingActionButton = { + + FloatingActionButton( + modifier = modifier.padding(30.dp), + onClick = { + actions.gotoAddTask.invoke(0, 0).run { + // log event to firebase + val addTaskBundle = bundleOf( + "add_project" to "Clicked Add Project button from Workspace" + ) + + viewModel.firebaseLogEvent("project_add_workspace_button", addTaskBundle) + } + }, + backgroundColor = MaterialTheme.colors.onPrimary, + contentColor = MaterialTheme.colors.background, + elevation = FloatingActionButtonDefaults.elevation(12.dp) + ) { + Icon( + Icons.Filled.Add, + contentDescription = stringResource(id = R.string.text_addTask), + tint = MaterialTheme.colors.onSecondary + ) + } + } + ) { + + // workspace dashboard layout goes here + LazyVerticalGrid( + cells = GridCells.Adaptive(minSize = gridSize) + ) { + + item { + ItemWorkspaceCard( + modifier = modifier, + title = "Einsen app", + itemCount = "4 action items", + emoji = "\uD83D\uDD25", + tag = "Open source", + onCardClick = {} + ) { + } + } + + item { + ItemWorkspaceCard( + modifier = modifier, + title = "Einsen app", + itemCount = "4 action items", + emoji = "\uD83D\uDD25", + tag = "Open source", + onCardClick = {} + ) { + } + } + + item { + ItemWorkspaceCard( + modifier = modifier, + title = "Einsen app", + itemCount = "4 action items", + emoji = "\uD83D\uDD25", + tag = "Open source", + onCardClick = {} + ) { + } + } + } + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5967df3..5bec289 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -30,6 +30,7 @@ About All Task Task Details + My Project No tasks yet diff --git a/build.gradle.kts b/build.gradle.kts index 9f56beb..d494160 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,6 +46,7 @@ buildscript { val logcatVersion by extra("0.1") val googleServiceVersion by extra("4.3.10") val crashlyticsVersion by extra("2.8.0") + val constraintLayout by extra("1.0.0-rc02") repositories { google() From 2e67096dca5736cb4bad19dde67dfbe93b553975 Mon Sep 17 00:00:00 2001 From: Sanju S Date: Wed, 24 Nov 2021 07:30:37 +0530 Subject: [PATCH 02/13] Fix `Date picker & Time Picker Theme` #97 Signed-off-by: Sanju S --- .idea/misc.xml | 11 +- .../3.json | 100 ++++++++++++++++++ .../einsen/components/BottomCTA.kt | 8 +- .../spikeysanju/einsen/components/ChipView.kt | 3 +- ...temWorkspaceCard.kt => ItemProjectCard.kt} | 14 ++- .../spikeysanju/einsen/components/Slider.kt | 4 +- .../einsen/components/TaskItemCard.kt | 2 - .../einsen/components/TextInput.kt | 2 +- .../einsen/data/local/db/EinsenDatabase.kt | 2 +- .../spikeysanju/einsen/navigation/NavGraph.kt | 2 +- .../dev/spikeysanju/einsen/ui/theme/Color.kt | 4 +- .../einsen/view/about/AboutScreen.kt | 20 +++- .../einsen/view/add/AddTaskScreen.kt | 14 ++- .../einsen/view/allemoji/AllEmojiScreen.kt | 5 +- .../animationviewstate/AnimationViewState.kt | 2 + .../einsen/view/dashboard/DashboardScreen.kt | 15 ++- .../einsen/view/details/TaskDetailScreen.kt | 8 +- .../einsen/view/edit/EditTaskScreen.kt | 14 ++- .../einsen/view/project/ProjectScreen.kt | 9 +- .../einsen/view/task/AllTaskScreen.kt | 13 ++- .../einsen/view/webview/WebViewScreen.kt | 5 +- .../einsen/workers/ReminderWorker.kt | 15 ++- app/src/main/res/values-night/themes.xml | 42 ++++++++ app/src/main/res/values/colors.xml | 4 + app/src/main/res/values/themes.xml | 4 +- 25 files changed, 270 insertions(+), 52 deletions(-) create mode 100644 app/schemas/dev.spikeysanju.einsen.data.local.db.EinsenDatabase/3.json rename app/src/main/java/dev/spikeysanju/einsen/components/{ItemWorkspaceCard.kt => ItemProjectCard.kt} (90%) diff --git a/.idea/misc.xml b/.idea/misc.xml index fd41138..5bc6d8b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -24,6 +24,15 @@ + + + + + + + + + @@ -37,4 +46,4 @@ - + \ No newline at end of file diff --git a/app/schemas/dev.spikeysanju.einsen.data.local.db.EinsenDatabase/3.json b/app/schemas/dev.spikeysanju.einsen.data.local.db.EinsenDatabase/3.json new file mode 100644 index 0000000..a90c039 --- /dev/null +++ b/app/schemas/dev.spikeysanju.einsen.data.local.db.EinsenDatabase/3.json @@ -0,0 +1,100 @@ +{ + "formatVersion": 1, + "database": { + "version": 3, + "identityHash": "fae9ad0864a134de9ae29b1f5c5bbd7c", + "entities": [ + { + "tableName": "task", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`title` TEXT NOT NULL, `description` TEXT NOT NULL, `category` TEXT NOT NULL, `Emoji` TEXT NOT NULL, `urgency` INTEGER NOT NULL, `importance` INTEGER NOT NULL, `priority` TEXT NOT NULL, `timer` TEXT NOT NULL, `isCompleted` INTEGER NOT NULL, `createdAt` INTEGER NOT NULL, `updatedAt` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + "fields": [ + { + "fieldPath": "title", + "columnName": "title", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "description", + "columnName": "description", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "category", + "columnName": "category", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "emoji", + "columnName": "Emoji", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "urgency", + "columnName": "urgency", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "importance", + "columnName": "importance", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "priority", + "columnName": "priority", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "due", + "columnName": "timer", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "isCompleted", + "columnName": "isCompleted", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "createdAt", + "columnName": "createdAt", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updatedAt", + "columnName": "updatedAt", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'fae9ad0864a134de9ae29b1f5c5bbd7c')" + ] + } +} \ No newline at end of file diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/BottomCTA.kt b/app/src/main/java/dev/spikeysanju/einsen/components/BottomCTA.kt index 96341a0..8862cc9 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/BottomCTA.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/BottomCTA.kt @@ -152,7 +152,13 @@ fun BottomCTA() { Spacer(modifier = Modifier.height(12.dp)) - ActionIcons(onEdit = { /*TODO*/ }, onDelete = { /*TODO*/ }) { + ActionIcons(onEdit = { + // on edit action goes here + + }, onDelete = { + // on delete action goes here + + }) { // on share action goes here } } diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/ChipView.kt b/app/src/main/java/dev/spikeysanju/einsen/components/ChipView.kt index eb4404f..492d26a 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/ChipView.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/ChipView.kt @@ -87,7 +87,8 @@ fun SmallChipView( .background(color = color.copy(0.10F)) ) { Text( - text = title, modifier = modifier.padding(4.dp), + text = title, + modifier = modifier.padding(start = 6.dp, end = 6.dp, top = 4.dp, bottom = 4.dp), style = MaterialTheme.typography.overline, color = color ) diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/ItemWorkspaceCard.kt b/app/src/main/java/dev/spikeysanju/einsen/components/ItemProjectCard.kt similarity index 90% rename from app/src/main/java/dev/spikeysanju/einsen/components/ItemWorkspaceCard.kt rename to app/src/main/java/dev/spikeysanju/einsen/components/ItemProjectCard.kt index 5b87fb1..4629678 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/ItemWorkspaceCard.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/ItemProjectCard.kt @@ -25,11 +25,11 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Card import androidx.compose.material.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -53,18 +53,16 @@ fun ItemWorkspaceCard( .clickable { onCardClick() }, - backgroundColor = einsenColors.card, shape = RoundedCornerShape(24.dp) + backgroundColor = einsenColors.card, shape = RoundedCornerShape(24.dp), elevation = 0.dp ) { Column( modifier = modifier - .wrapContentWidth() - .padding(24.dp) + .fillMaxWidth() + .padding(24.dp), horizontalAlignment = Alignment.Start ) { - - EmojiPlaceHolderSmall(emoji = emoji) { - } + EmojiTextView(emoji = emoji) Spacer(modifier = modifier.height(12.dp)) - Text(text = title, style = typography.subtitle1, color = einsenColors.black) + Text(text = title, style = typography.h6, color = einsenColors.black) Spacer(modifier = modifier.height(12.dp)) Text(text = itemCount, style = typography.caption, color = einsenColors.black) Spacer(modifier = modifier.height(16.dp)) diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/Slider.kt b/app/src/main/java/dev/spikeysanju/einsen/components/Slider.kt index 63385ff..3212887 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/Slider.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/Slider.kt @@ -104,8 +104,8 @@ fun EinsenStepSlider( valueRange = 0f..points.size.minus(1).toFloat(), steps = points.size.minus(2), colors = SliderDefaults.colors( - thumbColor = colors.primary, - activeTrackColor = colors.primary, + thumbColor = einsenColors.card, + activeTrackColor = einsenColors.card, inactiveTrackColor = colors.primaryVariant, disabledThumbColor = colors.secondaryVariant ), diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/TaskItemCard.kt b/app/src/main/java/dev/spikeysanju/einsen/components/TaskItemCard.kt index 5291800..191e8a5 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/TaskItemCard.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/TaskItemCard.kt @@ -220,8 +220,6 @@ fun TaskItemCardPreview() { 2, 4, 1, - 1, - 1 ), onClick = { /*TODO*/ }, onCheckboxChange = { // check box change logic goes here diff --git a/app/src/main/java/dev/spikeysanju/einsen/components/TextInput.kt b/app/src/main/java/dev/spikeysanju/einsen/components/TextInput.kt index 686efed..112137b 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/components/TextInput.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/components/TextInput.kt @@ -182,7 +182,7 @@ fun textFieldColors() = TextFieldDefaults.textFieldColors( textColor = einsenColors.black, focusedLabelColor = einsenColors.black, focusedIndicatorColor = einsenColors.black, - unfocusedIndicatorColor = einsenColors.background, + unfocusedIndicatorColor = einsenColors.card, cursorColor = einsenColors.black, backgroundColor = einsenColors.card, placeholderColor = einsenColors.black, diff --git a/app/src/main/java/dev/spikeysanju/einsen/data/local/db/EinsenDatabase.kt b/app/src/main/java/dev/spikeysanju/einsen/data/local/db/EinsenDatabase.kt index a35cf42..f37f0e1 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/data/local/db/EinsenDatabase.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/data/local/db/EinsenDatabase.kt @@ -23,7 +23,7 @@ import androidx.room.Database import androidx.room.RoomDatabase import dev.spikeysanju.einsen.model.task.Task -@Database(entities = [Task::class], version = 2, exportSchema = true) +@Database(entities = [Task::class], version = 3, exportSchema = true) abstract class EinsenDatabase : RoomDatabase() { abstract fun getTaskDao(): TaskDao } diff --git a/app/src/main/java/dev/spikeysanju/einsen/navigation/NavGraph.kt b/app/src/main/java/dev/spikeysanju/einsen/navigation/NavGraph.kt index 5f48fee..a2f4672 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/navigation/NavGraph.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/navigation/NavGraph.kt @@ -77,7 +77,7 @@ fun NavGraph(toggleTheme: () -> Unit) { ModalBottomSheetLayout(bottomSheetNavigator) { - AnimatedNavHost(navController, startDestination = Screen.Project.route) { + AnimatedNavHost(navController, startDestination = Screen.Dashboard.route) { /** * Navigates to [SplashScreen]. diff --git a/app/src/main/java/dev/spikeysanju/einsen/ui/theme/Color.kt b/app/src/main/java/dev/spikeysanju/einsen/ui/theme/Color.kt index 12501c4..f2810ee 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/ui/theme/Color.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/ui/theme/Color.kt @@ -34,8 +34,8 @@ val white = Color(0xFFFFFFFF) // bg color val card = Color(0xFFFFFFFF) val bg = Color(0xFFF6F9FF) -val cardDark = Color(0xFF1C1C1C) -val bgDark = Color(0xFF131313) +val cardDark = Color(0xFF162544) +val bgDark = Color(0xFF0C1B3A) // text color val text = Color(0xFF000000) diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/about/AboutScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/about/AboutScreen.kt index 39d0262..edfd40b 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/about/AboutScreen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/about/AboutScreen.kt @@ -20,11 +20,13 @@ package dev.spikeysanju.einsen.view.about import androidx.compose.foundation.Image +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -118,13 +120,21 @@ fun AboutScreen(modifier: Modifier, viewModel: MainViewModel, actions: MainActio ) } }, - backgroundColor = einsenColors.background, elevation = 0.dp + backgroundColor = einsenColors.bg, elevation = 0.dp ) - } - - ) { + }, modifier = modifier + .fillMaxSize() + .background(einsenColors.bg)) { val listState = rememberLazyListState() - LazyColumn(state = listState, contentPadding = PaddingValues(16.dp)) { + LazyColumn( + state = listState, + contentPadding = PaddingValues(16.dp), + modifier = modifier + .fillMaxSize() + .background( + einsenColors.bg + ) + ) { item { diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/add/AddTaskScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/add/AddTaskScreen.kt index 106697f..84b555e 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/add/AddTaskScreen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/add/AddTaskScreen.kt @@ -19,11 +19,13 @@ package dev.spikeysanju.einsen.view.add +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -154,13 +156,21 @@ fun AddTaskScreen( ) } }, - backgroundColor = einsenColors.background, elevation = 0.dp + backgroundColor = einsenColors.bg, elevation = 0.dp ) } ) { - LazyColumn(state = listState, contentPadding = PaddingValues(bottom = 24.dp)) { + LazyColumn( + state = listState, + contentPadding = PaddingValues(bottom = 24.dp), + modifier = modifier + .background( + einsenColors.bg + ) + .fillMaxSize() + ) { // Emoji item { diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/allemoji/AllEmojiScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/allemoji/AllEmojiScreen.kt index 8c69429..ebeb44c 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/allemoji/AllEmojiScreen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/allemoji/AllEmojiScreen.kt @@ -19,6 +19,7 @@ package dev.spikeysanju.einsen.view.allemoji +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height @@ -45,6 +46,7 @@ import dev.spikeysanju.einsen.R import dev.spikeysanju.einsen.components.EinsenInputTextFieldWithoutHint import dev.spikeysanju.einsen.components.EmojiPlaceHolderBottomSheet import dev.spikeysanju.einsen.navigation.MainActions +import dev.spikeysanju.einsen.ui.theme.einsenColors import dev.spikeysanju.einsen.utils.viewstate.EmojiViewState import dev.spikeysanju.einsen.view.animationviewstate.AnimationViewState import dev.spikeysanju.einsen.view.animationviewstate.ScreenState @@ -86,7 +88,7 @@ fun AllEmojiScreen( } ) - Column { + Column(modifier = modifier.background(einsenColors.bg)) { // Title BottomSheetTitle() @@ -105,6 +107,7 @@ fun AllEmojiScreen( LazyVerticalGrid( state = listState, modifier = modifier + .background(einsenColors.bg) .weight(1f) .align(Alignment.CenterHorizontally), cells = GridCells.Adaptive(minSize = gridSize) diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/animationviewstate/AnimationViewState.kt b/app/src/main/java/dev/spikeysanju/einsen/view/animationviewstate/AnimationViewState.kt index 2126498..4d0d127 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/animationviewstate/AnimationViewState.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/animationviewstate/AnimationViewState.kt @@ -19,6 +19,7 @@ package dev.spikeysanju.einsen.view.animationviewstate +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -58,6 +59,7 @@ fun AnimationViewState( Column( modifier = modifier .fillMaxSize() + .background(einsenColors.bg) .wrapContentSize(Alignment.Center), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/dashboard/DashboardScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/dashboard/DashboardScreen.kt index 5ae6bee..e21f0b2 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/dashboard/DashboardScreen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/dashboard/DashboardScreen.kt @@ -19,9 +19,11 @@ package dev.spikeysanju.einsen.view.dashboard +import androidx.compose.foundation.background import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn @@ -134,8 +136,7 @@ fun DashboardScreen( tint = einsenColors.black ) } - }, - backgroundColor = einsenColors.background, elevation = 0.dp + }, backgroundColor = einsenColors.bg, elevation = 0.dp ) }, floatingActionButton = { @@ -220,7 +221,15 @@ fun DashboardScreen( delegateCount = delegate.count { it.priority.name == Priority.DELEGATE.name } dumpCount = dump.count { it.priority.name == Priority.DUMP.name } - LazyColumn(state = listState, contentPadding = PaddingValues(bottom = 100.dp)) { + LazyColumn( + state = listState, + contentPadding = PaddingValues(bottom = 100.dp), + modifier = modifier + .background( + einsenColors.bg + ) + .fillMaxSize() + ) { item { DashboardCardItem( diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/details/TaskDetailScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/details/TaskDetailScreen.kt index fcf4c2f..819510f 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/details/TaskDetailScreen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/details/TaskDetailScreen.kt @@ -29,6 +29,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -139,7 +140,7 @@ fun TaskDetailsScreen( ) } }, - backgroundColor = einsenColors.background, elevation = 0.dp + backgroundColor = einsenColors.bg, elevation = 0.dp ) }, bottomBar = { @@ -233,7 +234,10 @@ fun TaskDetailsScreen( is SingleViewState.Success -> { LazyColumn( - modifier = modifier.padding(start = 16.dp, end = 16.dp), + modifier = modifier + .fillMaxSize() + .background(einsenColors.bg) + .padding(start = 16.dp, end = 16.dp), state = listState, contentPadding = PaddingValues(top = 16.dp, bottom = 100.dp) ) { diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/edit/EditTaskScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/edit/EditTaskScreen.kt index a5fd14a..2e5ced4 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/edit/EditTaskScreen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/edit/EditTaskScreen.kt @@ -19,11 +19,13 @@ package dev.spikeysanju.einsen.view.edit +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -142,7 +144,7 @@ fun EditTaskScreen(modifier: Modifier, viewModel: MainViewModel, actions: MainAc ) } }, - backgroundColor = einsenColors.background, elevation = 0.dp + backgroundColor = einsenColors.bg, elevation = 0.dp ) } ) { @@ -230,7 +232,15 @@ fun EditTaskScreen(modifier: Modifier, viewModel: MainViewModel, actions: MainAc taskResult.task.emoji } - LazyColumn(state = listState, contentPadding = PaddingValues(bottom = 24.dp)) { + LazyColumn( + state = listState, + contentPadding = PaddingValues(bottom = 24.dp), + modifier = modifier + .fillMaxSize() + .background( + einsenColors.bg + ) + ) { // Emoji item { diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/project/ProjectScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/project/ProjectScreen.kt index f315122..1859770 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/project/ProjectScreen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/project/ProjectScreen.kt @@ -19,8 +19,10 @@ package dev.spikeysanju.einsen.view.project +import androidx.compose.foundation.background import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.GridCells @@ -118,7 +120,7 @@ fun ProjectScreen( ) } }, - backgroundColor = einsenColors.background, elevation = 0.dp + backgroundColor = einsenColors.bg, elevation = 0.dp ) }, floatingActionButton = { @@ -150,7 +152,10 @@ fun ProjectScreen( // workspace dashboard layout goes here LazyVerticalGrid( - cells = GridCells.Adaptive(minSize = gridSize) + cells = GridCells.Adaptive(minSize = gridSize), + modifier + .fillMaxSize() + .background(einsenColors.bg) ) { item { diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/task/AllTaskScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/task/AllTaskScreen.kt index 304f891..2936ea9 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/task/AllTaskScreen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/task/AllTaskScreen.kt @@ -19,7 +19,9 @@ package dev.spikeysanju.einsen.view.task +import androidx.compose.foundation.background import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed @@ -82,7 +84,7 @@ fun AllTaskScreen( style = typography.h6, textAlign = TextAlign.Start, color = einsenColors.black, - modifier = modifier.padding(start = 16.dp) + modifier = modifier.padding(start = 16.dp), ) }, navigationIcon = { @@ -94,7 +96,7 @@ fun AllTaskScreen( ) } }, - backgroundColor = einsenColors.background, elevation = 0.dp + backgroundColor = einsenColors.bg, elevation = 0.dp ) }, floatingActionButton = { @@ -119,8 +121,7 @@ fun AllTaskScreen( tint = MaterialTheme.colors.onSecondary ) } - } - ) { + }, modifier = modifier.background(einsenColors.bg)) { when (val result = viewModel.feed.collectAsState().value) { ViewState.Loading -> { @@ -163,7 +164,9 @@ fun AllTaskScreen( start = 16.dp, top = 16.dp, end = 16.dp - ) + ), modifier = modifier + .fillMaxSize() + .background(einsenColors.bg) ) { itemsIndexed(result.task) { index: Int, item: Task -> TaskItemCard( diff --git a/app/src/main/java/dev/spikeysanju/einsen/view/webview/WebViewScreen.kt b/app/src/main/java/dev/spikeysanju/einsen/view/webview/WebViewScreen.kt index 56216c3..ab271ef 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/view/webview/WebViewScreen.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/view/webview/WebViewScreen.kt @@ -28,7 +28,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material.Icon import androidx.compose.material.IconButton -import androidx.compose.material.MaterialTheme import androidx.compose.material.Scaffold import androidx.compose.material.Text import androidx.compose.material.TopAppBar @@ -96,13 +95,13 @@ fun WebViewScreen( ) } }, - backgroundColor = einsenColors.background, elevation = 0.dp + backgroundColor = einsenColors.bg, elevation = 0.dp ) } ) { Box( modifier = modifier - .background(MaterialTheme.colors.background) + .background(einsenColors.bg) .fillMaxSize() ) { WebPagePreview(url = url) diff --git a/app/src/main/java/dev/spikeysanju/einsen/workers/ReminderWorker.kt b/app/src/main/java/dev/spikeysanju/einsen/workers/ReminderWorker.kt index f47a406..0b27836 100644 --- a/app/src/main/java/dev/spikeysanju/einsen/workers/ReminderWorker.kt +++ b/app/src/main/java/dev/spikeysanju/einsen/workers/ReminderWorker.kt @@ -19,6 +19,7 @@ package dev.spikeysanju.einsen.workers +import android.app.Notification import android.app.NotificationChannel import android.app.NotificationManager import android.content.Context @@ -68,11 +69,15 @@ class ReminderWorker @AssistedInject constructor( val builder = NotificationCompat.Builder(context, context.getString(R.string.reminder_channel_id)) - builder.setContentTitle(task.title) - builder.setSmallIcon(R.drawable.einsen_logo) - builder.setCategory(NotificationCompat.CATEGORY_ALARM) - builder.setContentText("Task due time in 1 hour") - builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .apply { + setContentTitle(task.title) + setSmallIcon(R.drawable.einsen_logo) + setCategory(NotificationCompat.CATEGORY_ALARM) + setContentText("Task due time in 1 hour") + setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + setDefaults(Notification.DEFAULT_SOUND) + setDefaults(Notification.DEFAULT_VIBRATE) + } builder.priority = NotificationCompat.PRIORITY_MAX builder.setAutoCancel(true) diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index a6d6a8b..226ff32 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -1,3 +1,22 @@ + + + + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index a569cbd..68aa8e5 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -30,4 +30,8 @@ #EEEEEE #F4F4F4 #F4F7FD + + // dark mode color + #162544 + #0C1B3A diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 1f1d991..174ae08 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -38,8 +38,8 @@