Skip to content

Commit

Permalink
Merge branch 'development'
Browse files Browse the repository at this point in the history
  • Loading branch information
BlazeCodeDev committed Feb 3, 2024
2 parents 18964a0 + 609002a commit 23340ba
Show file tree
Hide file tree
Showing 9 changed files with 133 additions and 36 deletions.
26 changes: 13 additions & 13 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ android {
minSdk = 33
targetSdk = 34
versionCode = 20
versionName = "1.4.1"
versionName = "1.4.2"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down Expand Up @@ -46,21 +46,21 @@ val aboutLibrariesVersion: String by rootProject.extra
val composeVersion: String by rootProject.extra

dependencies {
implementation(platform("androidx.compose:compose-bom:2023.10.01"))
implementation(platform("androidx.compose:compose-bom:2024.01.00"))

implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.material3:material3")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.lifecycle:lifecycle-viewmodel-compose")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
implementation("androidx.activity:activity-compose:1.8.1")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
implementation("androidx.activity:activity-compose:1.8.2")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.10.0")
implementation("androidx.annotation:annotation:1.7.0")
implementation("com.google.android.material:material:1.11.0")
implementation("androidx.annotation:annotation:1.7.1")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
Expand All @@ -69,28 +69,28 @@ dependencies {
debugImplementation("androidx.compose.ui:ui-test-manifest")

// ROOM DB
val room_version = "2.6.0"
val room_version = "2.6.1"
implementation("androidx.room:room-ktx:$room_version")
ksp("androidx.room:room-compiler:$room_version")
annotationProcessor("androidx.room:room-compiler:$room_version")

// ACCOMPANIST
val accompanist_version = "0.33.2-alpha"
val accompanist_version = "0.34.0"
implementation("com.google.accompanist:accompanist-flowlayout:$accompanist_version")
implementation("com.google.accompanist:accompanist-systemuicontroller:$accompanist_version")
implementation("com.google.accompanist:accompanist-permissions:$accompanist_version")

// CALENDAR
implementation("com.kizitonwose.calendar:compose:2.5.0-alpha01")
implementation("com.kizitonwose.calendar:compose:2.5.0-beta01")

// NAVIGATION
implementation("androidx.navigation:navigation-compose:2.7.5")
implementation("androidx.navigation:navigation-compose:2.7.6")

// GSON
implementation("com.google.code.gson:gson:2.10.1")

// LOTTIE
implementation("com.airbnb.android:lottie-compose:6.1.0")
implementation("com.airbnb.android:lottie-compose:6.3.0")

//ABOUT LIBRARIES
implementation("com.mikepenz:aboutlibraries-compose:$aboutLibrariesVersion")
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/blazecode/eventtool/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class MainActivity : ComponentActivity() {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = NavRoutes.Home.route) {
// HOME
composable(route= NavRoutes.Home.route,) { Home(HomeViewModel(application), navController, printer) }
composable(route= NavRoutes.Home.route,) { Home(HomeViewModel(application), navController, printer, exporter) }
// NEW EVENT
composable(NavRoutes.NewEvent.route) {
val event = navController.previousBackStackEntry?.savedStateHandle?.get<Event>("event")
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/com/blazecode/eventtool/screens/Home.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import com.airbnb.lottie.compose.*
import com.blazecode.eventtool.R
import com.blazecode.eventtool.data.Event
import com.blazecode.eventtool.data.EventDateType
import com.blazecode.eventtool.database.DataBaseExporter
import com.blazecode.eventtool.enums.Additions
import com.blazecode.eventtool.enums.EventType
import com.blazecode.eventtool.navigation.NavRoutes
Expand Down Expand Up @@ -78,9 +79,8 @@ private val colorfulDaysEnabled = mutableStateOf(false)
private val debugUpdateCheckEnabled = mutableStateOf(false)


@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Home(viewModel: HomeViewModel = viewModel(), navController: NavController, printer: PdfPrinter) {
fun Home(viewModel: HomeViewModel = viewModel(), navController: NavController, printer: PdfPrinter, exporter :DataBaseExporter) {
val context = LocalContext.current

LaunchedEffect(context) {
Expand Down Expand Up @@ -119,7 +119,7 @@ fun Home(viewModel: HomeViewModel = viewModel(), navController: NavController, p
content = { paddingValues ->
Column(modifier = Modifier.padding(paddingValues)) {
if((debugUpdateCheckEnabled.value && com.blazecode.eventtool.BuildConfig.DEBUG) || !com.blazecode.eventtool.BuildConfig.DEBUG)
GitHubUpdater(context)
GitHubUpdater(exporter = exporter, context = context)
MainLayout(viewModel, navController)
}
})
Expand Down
57 changes: 48 additions & 9 deletions app/src/main/java/com/blazecode/eventtool/screens/NewEvent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,60 @@ package com.blazecode.eventtool
import android.content.Context
import android.widget.Toast
import androidx.activity.compose.BackHandler
import androidx.compose.animation.*
import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.togetherWith
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
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
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Call
import androidx.compose.material.icons.filled.Send
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
import androidx.compose.material3.DatePicker
import androidx.compose.material3.DatePickerDialog
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ExtendedFloatingActionButton
import androidx.compose.material3.FloatingActionButtonDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.InputChip
import androidx.compose.material3.InputChipDefaults
import androidx.compose.material3.LargeTopAppBar
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.material3.rememberDatePickerState
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.nestedscroll.nestedScroll
Expand Down Expand Up @@ -87,13 +126,13 @@ fun NewEvent(viewModel: NewEventViewModel = viewModel(), navController: NavContr
}
}

@OptIn(ExperimentalAnimationApi::class)
@Composable
private fun MainLayout(viewModel: NewEventViewModel, navController: NavController) {
val context = LocalContext.current

AnimatedContent(targetState = eventType.value,
transitionSpec = { fadeIn() with fadeOut() }) { targetState ->
transitionSpec = { fadeIn() togetherWith fadeOut() }, label = "pageFadeIn"
) { targetState ->
Column (horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.padding(0.dp,0.dp,0.dp, dimensionResource(R.dimen.fab_height_padding))){
when (targetState) {
EventType.WEDDING -> {
Expand Down Expand Up @@ -454,7 +493,7 @@ private fun CommentsLayout(viewModel: NewEventViewModel) {
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun AdditionsLayout(viewModel: NewEventViewModel) {
val allAdditions: MutableList<Additions> = Additions.values().toMutableList()
val allAdditions: MutableList<Additions> = Additions.entries.toMutableList()
val additions = rememberSaveable { mutableStateOf(viewModel.event.additions) }

Card (modifier = Modifier
Expand Down Expand Up @@ -491,7 +530,7 @@ private fun AdditionsLayout(viewModel: NewEventViewModel) {
}

private fun getAddition(value: String): Additions? {
val map = Additions.values().associateBy(Additions::name)
val map = Additions.entries.associateBy(Additions::name)
return map[value]
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,38 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.viewModelScope
import com.android.volley.Request
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley
import com.blazecode.eventtool.BuildConfig
import com.blazecode.eventtool.R
import com.blazecode.eventtool.database.DataBaseExporter
import com.blazecode.eventtool.database.EventRepository
import com.blazecode.scrapguidev2.util.LinkUtil
import com.google.gson.GsonBuilder
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch

@Composable
fun GitHubUpdater(context: Context) {
fun GitHubUpdater(context: Context, exporter : DataBaseExporter) {
val release = remember{ mutableStateOf(GitHubRelease("","", arrayListOf())) }
val scope = rememberCoroutineScope()

val download = rememberSaveable{ mutableStateOf(false) }
val doBackup = rememberSaveable{ mutableStateOf(false) }
val showDialog = rememberSaveable{ mutableStateOf(false) }
val showBackupDialog = rememberSaveable{ mutableStateOf(false) }
val extendCard = rememberSaveable{ mutableStateOf(false) }

fun parseJSON(input: String){
Expand Down Expand Up @@ -83,17 +92,24 @@ fun GitHubUpdater(context: Context) {
var icon: Painter = painterResource(R.drawable.ic_expand_more)
val showMoreIcon: Painter = painterResource(R.drawable.ic_expand_more)
val showLessIcon: Painter = painterResource(R.drawable.ic_expand_less)
Card (modifier = Modifier.fillMaxWidth().padding(dimensionResource(R.dimen.medium_padding))){
Card (modifier = Modifier
.fillMaxWidth()
.padding(dimensionResource(R.dimen.medium_padding))){
Column {
Row (verticalAlignment = Alignment.CenterVertically){
Text(modifier = Modifier.padding(dimensionResource(R.dimen.medium_padding)).weight(2f),
Text(modifier = Modifier
.padding(dimensionResource(R.dimen.medium_padding))
.weight(2f),
text = stringResource(R.string.update_available, release.value.tag_name),
softWrap = true
)

Box(modifier = Modifier.fillMaxWidth().padding(dimensionResource(R.dimen.medium_padding)).weight(2f), contentAlignment = Alignment.CenterEnd){
Box(modifier = Modifier
.fillMaxWidth()
.padding(dimensionResource(R.dimen.medium_padding))
.weight(2f), contentAlignment = Alignment.CenterEnd){
Row {
Button(onClick = { download.value = true }) { Text(stringResource(R.string.download)) }
Button(onClick = { showBackupDialog.value = true }) { Text(stringResource(R.string.download)) }
IconButton(onClick = {
extendCard.value = !extendCard.value
if(extendCard.value) icon = showLessIcon
Expand All @@ -109,7 +125,41 @@ fun GitHubUpdater(context: Context) {
}
}

if(showBackupDialog.value) {
AlertDialog(onDismissRequest = { showBackupDialog.value = false},
title = { Text(stringResource(R.string.backup_database_title)) },
text = { Text(stringResource(R.string.backup_database_message)) },
confirmButton = {
FilledTonalButton(onClick = { doBackup.value = true }) {
Text(text = stringResource(R.string.backup_database_button))
}
},
dismissButton = {
OutlinedButton(onClick = { showBackupDialog.value = false; download.value = true }) {
Text(text = stringResource(R.string.download_update))
}
})
}

LaunchedEffect(doBackup.value){
if(doBackup.value) {
scope.launch(Dispatchers.IO) {
export(scope, exporter, context)
}.join()
}
}

if(download.value) {
download.value = false
LinkUtil.Builder(context).link(release.value.assets[0].browser_download_url).open()
}
}

private fun export(scope: CoroutineScope, exporter: DataBaseExporter, context: Context){
val repository = EventRepository()

scope.launch(Dispatchers.IO) {
val list = repository.getEventList(context)
exporter.exportJson(context, list)
}
}
4 changes: 4 additions & 0 deletions app/src/main/res/values-de-rDE/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,10 @@
<string name="update_available">Update %s verfügbar</string>
<string name="download">Herunterladen</string>
<string name="reserved">Reserviert</string>
<string name="download_update">Update Herunterladen</string>
<string name="backup_database_title">Backup Datenbank</string>
<string name="backup_database_message">Erstelle ein Backup der Datenbank vor dem Aktualisieren</string>
<string name="backup_database_button">Backup</string>
<string name="send">Senden</string>
<string name="error_report_title">Ups, etwas ist schief gelaufen</string>
<string name="error_user_comment">Kommentar</string>
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,10 @@
<!-- UPDATE -->
<string name="update_available">Update %s available</string>
<string name="download">Download</string>
<string name="download_update">Download Update</string>
<string name="backup_database_title">Backup database</string>
<string name="backup_database_message">Backup your database before updating</string>
<string name="backup_database_button">Backup</string>

<!-- ERROR REPORT -->
<string name="send">Send</string>
Expand Down
8 changes: 4 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
buildscript {
val aboutLibrariesVersion by extra("10.9.1")
val composeVersion by extra("1.6.0-beta01")
val aboutLibrariesVersion by extra("10.10.0")
val composeVersion by extra("1.6.0")

repositories {
google()
Expand All @@ -15,8 +15,8 @@ buildscript {
}
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.application") version "8.1.4" apply false
id("com.android.library") version "8.1.4" apply false
id("com.android.application") version "8.2.2" apply false
id("com.android.library") version "8.2.2" apply false
id("org.jetbrains.kotlin.android") version "1.9.20" apply false
id("com.google.devtools.ksp") version "1.9.10-1.0.13" apply false
}
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

0 comments on commit 23340ba

Please sign in to comment.