Skip to content

Commit

Permalink
- Refactor architecture
Browse files Browse the repository at this point in the history
- Support statistics-summary
  • Loading branch information
Konyaco committed Sep 11, 2022
1 parent 222ddf4 commit 909cd2b
Show file tree
Hide file tree
Showing 39 changed files with 195 additions and 166 deletions.
7 changes: 7 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ android {
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles.apply {
getDefaultProguardFile("proguard-android-optimize.txt")
add(file("proguard-rules.pro"))
}
}
debug {
isMinifyEnabled = false
proguardFiles.apply {
getDefaultProguardFile("proguard-android-optimize.txt")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,13 @@ import dagger.hilt.InstallIn
import dagger.hilt.android.HiltAndroidApp
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import me.konyaco.keeptally.database.AppDatabase
import me.konyaco.keeptally.storage.database.AppDatabase
import javax.inject.Inject

@HiltAndroidApp
class KeepTallyApplication : Application() {
@Inject
lateinit var database: AppDatabase

override fun onCreate() {
super.onCreate()
}
}

@Module
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/kotlin/me/konyaco/keeptally/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import dagger.hilt.android.AndroidEntryPoint
import me.konyaco.keeptally.ui.App
import me.konyaco.keeptally.ui.LocalNavController

private const val TAG = "MainActivity"

Expand All @@ -29,7 +30,7 @@ class MainActivity : ComponentActivity() {
startDestination = "home",
builder = {
composable("home") {
App(hiltViewModel())
App()
}
composable("abvc") {

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package me.konyaco.keeptally.dao
package me.konyaco.keeptally.storage.dao

import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import me.konyaco.keeptally.entity.Record
import me.konyaco.keeptally.storage.entity.Record

@Dao
interface RecordDao {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package me.konyaco.keeptally.dao
package me.konyaco.keeptally.storage.dao

import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import me.konyaco.keeptally.entity.RecordType
import me.konyaco.keeptally.storage.entity.RecordType

@Dao
interface RecordTypeDao {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package me.konyaco.keeptally.database
package me.konyaco.keeptally.storage.database

import androidx.room.Database
import androidx.room.RoomDatabase
import me.konyaco.keeptally.dao.RecordDao
import me.konyaco.keeptally.dao.RecordTypeDao
import me.konyaco.keeptally.entity.Record
import me.konyaco.keeptally.entity.RecordType
import me.konyaco.keeptally.storage.dao.RecordDao
import me.konyaco.keeptally.storage.dao.RecordTypeDao
import me.konyaco.keeptally.storage.entity.Record
import me.konyaco.keeptally.storage.entity.RecordType

@Database(entities = [Record::class, RecordType::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.konyaco.keeptally.entity
package me.konyaco.keeptally.storage.entity

import androidx.room.Entity
import androidx.room.PrimaryKey
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.konyaco.keeptally.entity
package me.konyaco.keeptally.storage.entity

import androidx.room.Entity
import androidx.room.PrimaryKey
Expand Down
11 changes: 4 additions & 7 deletions app/src/main/kotlin/me/konyaco/keeptally/ui/App.kt
Original file line number Diff line number Diff line change
@@ -1,43 +1,40 @@
package me.konyaco.keeptally.ui

import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.*
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.ModalBottomSheetLayout
import androidx.compose.material.ModalBottomSheetValue
import androidx.compose.material.rememberModalBottomSheetState
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.graphics.luminance
import androidx.compose.ui.platform.LocalFocusManager
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.hilt.navigation.compose.hiltViewModel
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.rememberPagerState
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import kotlinx.coroutines.launch
import me.konyaco.keeptally.component.MainViewModel
import me.konyaco.keeptally.ui.component.HomeTopBar
import me.konyaco.keeptally.ui.component.HomeTopBarState
import me.konyaco.keeptally.ui.detail.AddRecord
import me.konyaco.keeptally.ui.detail.DetailScreen
import me.konyaco.keeptally.ui.detail.component.AddRecord
import me.konyaco.keeptally.ui.filter.FilterScreen
import me.konyaco.keeptally.ui.other.OtherScreen
import me.konyaco.keeptally.ui.statistic.StatisticScreen
import me.konyaco.keeptally.ui.theme.AndroidKeepTallyTheme
import me.konyaco.keeptally.viewmodel.MainViewModel

@OptIn(ExperimentalMaterialApi::class, ExperimentalPagerApi::class)
@Composable
fun App(viewModel: MainViewModel = viewModel()) {
fun App(viewModel: MainViewModel = hiltViewModel()) {
val scope = rememberCoroutineScope()
AndroidKeepTallyTheme {
val systemUiController = rememberSystemUiController()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.konyaco.keeptally
package me.konyaco.keeptally.ui

import androidx.compose.runtime.compositionLocalOf
import androidx.navigation.NavHostController
Expand Down
22 changes: 6 additions & 16 deletions app/src/main/kotlin/me/konyaco/keeptally/ui/detail/DetailScreen.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package me.konyaco.keeptally.ui.detail

import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.material.Divider
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.sharp.Add
import androidx.compose.material3.*
Expand All @@ -18,19 +16,16 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.ColorPainter
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import me.konyaco.keeptally.component.DetailViewModel
import me.konyaco.keeptally.component.MainViewModel
import androidx.hilt.navigation.compose.hiltViewModel
import me.konyaco.keeptally.ui.theme.KeepTallyTheme
import me.konyaco.keeptally.viewmodel.MainViewModel

@Composable
fun DetailScreen(
viewModel: MainViewModel = viewModel(),
viewModel: MainViewModel = hiltViewModel(),
modifier: Modifier = Modifier,
onAddClick: () -> Unit
) {
Expand Down Expand Up @@ -63,8 +58,7 @@ fun DetailScreen(
EmptyContent(
Modifier
.fillMaxWidth()
.weight(1f)
)
.weight(1f))
} else {
Content(
Modifier
Expand Down Expand Up @@ -96,12 +90,8 @@ fun DetailScreen(

@Composable
private fun EmptyContent(modifier: Modifier) {
Column(modifier) {
Box(
Modifier
.height(4.dp)
.background(MaterialTheme.colorScheme.primary)
)
Column(modifier, horizontalAlignment = Alignment.CenterHorizontally) {
LineChart(Modifier.fillMaxWidth())
Image(
modifier = Modifier.weight(1f),
painter = ColorPainter(Color.Gray), // TODO
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.konyaco.keeptally.ui.detail
package me.konyaco.keeptally.ui.detail.component

import androidx.compose.material.*
import androidx.compose.runtime.*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.konyaco.keeptally.ui.detail
package me.konyaco.keeptally.ui.detail.component

import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.core.animateDpAsState
Expand Down Expand Up @@ -37,12 +37,12 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import me.konyaco.keeptally.component.MainViewModel
import androidx.hilt.navigation.compose.hiltViewModel
import me.konyaco.keeptally.ui.RecordSign
import me.konyaco.keeptally.ui.parseMoneyToCent
import me.konyaco.keeptally.ui.theme.KeepTallyTheme
import me.konyaco.keeptally.ui.theme.RobotoSlab
import me.konyaco.keeptally.viewmodel.MainViewModel

data class AddDialogState(
val isIncomeLabel: Boolean,
Expand All @@ -52,7 +52,7 @@ data class AddDialogState(
@Composable
fun AddRecord(
modifier: Modifier,
viewModel: MainViewModel = viewModel(),
viewModel: MainViewModel = hiltViewModel(),
onCloseRequest: () -> Unit
) {
var showDialog by remember { mutableStateOf<AddDialogState?>(null) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import me.konyaco.keeptally.component.MainViewModel
import me.konyaco.keeptally.viewmodel.MainViewModel
import me.konyaco.keeptally.ui.RecordSign
import me.konyaco.keeptally.ui.component.RecordItem
import me.konyaco.keeptally.ui.formatMoneyCent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import me.konyaco.keeptally.ui.other.component.OptionList
import me.konyaco.keeptally.ui.other.component.UserProfile
import me.konyaco.keeptally.ui.theme.KeepTallyTheme

@Composable
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.konyaco.keeptally.ui.other
package me.konyaco.keeptally.ui.other.component

import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.konyaco.keeptally.ui.other
package me.konyaco.keeptally.ui.other.component

import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,28 @@ package me.konyaco.keeptally.ui.statistic

import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.constraintlayout.compose.ConstraintLayout
import androidx.lifecycle.viewmodel.compose.viewModel
import me.konyaco.keeptally.component.MainViewModel
import me.konyaco.keeptally.ui.RecordSign
import androidx.hilt.navigation.compose.hiltViewModel
import me.konyaco.keeptally.ui.statistic.component.Tab
import me.konyaco.keeptally.ui.statistic.component.TabItem
import me.konyaco.keeptally.ui.statistic.expenditure.ExpenditureScreen
import me.konyaco.keeptally.ui.statistic.income.IncomeScreen
import me.konyaco.keeptally.ui.statistic.summary.TotalScreen
import me.konyaco.keeptally.ui.statistic.summary.SummaryScreen
import me.konyaco.keeptally.ui.theme.KeepTallyTheme

@Composable
fun StatisticScreen(viewModel: MainViewModel = viewModel()) {
StatisticScreen()
}
import me.konyaco.keeptally.viewmodel.StatisticViewModel

@OptIn(ExperimentalAnimationApi::class)
@Composable
fun StatisticScreen() {
fun StatisticScreen(viewModel: StatisticViewModel = hiltViewModel()) {
Column(Modifier
.fillMaxSize()
.nestedScroll(
Expand All @@ -50,7 +38,10 @@ fun StatisticScreen() {

AnimatedContent(targetState = page) {
when (it) {
TabItem.TOTAL -> TotalScreen()
TabItem.TOTAL -> {
val summary by viewModel.summary.collectAsState()
SummaryScreen(summary.expenditure, summary.income, summary.balance)
}
TabItem.EXPENDITURE -> ExpenditureScreen()
TabItem.INCOME -> IncomeScreen()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.konyaco.keeptally.ui.statistic
package me.konyaco.keeptally.ui.statistic.component

import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.Box
Expand Down
Loading

0 comments on commit 909cd2b

Please sign in to comment.