From 34e64e6e50ee056c3284f14beec212018764230c Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Tue, 16 May 2023 12:07:52 +0200 Subject: [PATCH 1/7] Update Version to 2.2 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index b2c879b..3e09ed6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,7 +16,7 @@ def keystoreProperties = new Properties() def versionProperties = new Properties() def versionMajor = 2 -def versionMinor = 1 +def versionMinor = 2 // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) From fcb8c12454956c1655d4bc8b9574940cc5011e12 Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Thu, 25 May 2023 17:37:30 +0200 Subject: [PATCH 2/7] [#39] Case insensitive team name suggestions. closes #39 --- .../java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt index 249c9b2..6ba2c1f 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt @@ -361,7 +361,7 @@ class CounterViewModel @Inject constructor( if(currentInput.isNotEmpty()) { - filtered = filtered.filter { it.contains(currentInput) } + filtered = filtered.filter { it.contains(currentInput, ignoreCase = true) } } return filtered.sorted().sortedBy { it.length }.take(10) From 9d8de2dd3c223d2d72c8935587cf075ca15c1685 Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Thu, 25 May 2023 17:56:02 +0200 Subject: [PATCH 3/7] Update dependencies. Code clean up. --- app/build.gradle | 8 +- .../me/zobrist/tichucounter/MainActivity.kt | 14 ++- .../tichucounter/data/DateConverter.kt | 2 +- .../zobrist/tichucounter/data/entity/Game.kt | 2 +- .../tichucounter/domain/NavExtensions.kt | 6 +- .../tichucounter/repository/GameRepository.kt | 11 ++- .../java/me/zobrist/tichucounter/ui/Theme.kt | 6 +- .../tichucounter/ui/about/AboutView.kt | 17 +++- .../ui/composables/TypeaheadTextField.kt | 46 +++++---- .../tichucounter/ui/counter/CounterView.kt | 12 ++- .../ui/counter/CounterViewModel.kt | 12 +-- .../tichucounter/ui/counter/KeyboardView.kt | 1 - .../tichucounter/ui/counter/TeamNamesView.kt | 11 +-- .../tichucounter/ui/counter/TeamScoresView.kt | 6 +- .../tichucounter/ui/history/HistoryView.kt | 26 ++++- .../tichucounter/ui/layout/DrawerContent.kt | 1 - .../tichucounter/ui/settings/SettingsView.kt | 12 ++- .../res/drawable/ic_launcher_foreground.xml | 95 ++++++++++--------- app/src/main/res/drawable/tichu_logo.xml | 84 ++++++++-------- .../res/mipmap-anydpi-v26/ic_launcher.xml | 4 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 4 +- .../me/zobrist/tichucounter/TichuUnitTest.kt | 4 +- build.gradle | 2 +- 23 files changed, 222 insertions(+), 164 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3e09ed6..663caf8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -89,9 +89,9 @@ android { dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation 'androidx.core:core-ktx:1.10.0' - implementation 'androidx.appcompat:appcompat:1.6.0-rc01' - implementation "androidx.compose.material3:material3:1.0.1" + implementation 'androidx.core:core-ktx:1.10.1' + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation "androidx.compose.material3:material3:1.1.0" implementation 'com.google.android.play:core-ktx:1.8.1' implementation 'com.google.android.play:core-ktx:1.8.1' implementation 'com.google.code.gson:gson:2.9.0' @@ -107,7 +107,7 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1' implementation 'androidx.compose.material:material-icons-extended:1.4.3' implementation "com.google.accompanist:accompanist-systemuicontroller:0.27.0" - implementation 'androidx.activity:activity-compose:1.7.1' + implementation 'androidx.activity:activity-compose:1.7.2' implementation "androidx.compose.ui:ui:1.4.3" implementation "androidx.compose.ui:ui-tooling-preview:1.4.3" implementation "androidx.compose.runtime:runtime-livedata:1.4.3" diff --git a/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt b/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt index 233267d..0aacbf2 100644 --- a/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt +++ b/app/src/main/java/me/zobrist/tichucounter/MainActivity.kt @@ -12,9 +12,7 @@ import androidx.compose.material.icons.filled.* import androidx.compose.material.icons.outlined.* import androidx.compose.material3.* import androidx.compose.runtime.* -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.stringResource import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost @@ -90,7 +88,6 @@ class MainActivity : AppCompatActivity(), ISettingsChangeListener { } } - @OptIn(ExperimentalMaterial3Api::class) @Composable private fun NavigationDrawer() { val drawerState = rememberDrawerState(DrawerValue.Closed) @@ -144,7 +141,6 @@ class MainActivity : AppCompatActivity(), ISettingsChangeListener { } } - @OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) @Composable fun MyScaffoldLayout( drawerState: DrawerState, @@ -207,10 +203,12 @@ class MainActivity : AppCompatActivity(), ISettingsChangeListener { }, )) - ) { scope.launch { - currentFocus?.clearFocus() - drawerState.open() - } } + ) { + scope.launch { + currentFocus?.clearFocus() + drawerState.open() + } + } Counter(counterViewModel) } diff --git a/app/src/main/java/me/zobrist/tichucounter/data/DateConverter.kt b/app/src/main/java/me/zobrist/tichucounter/data/DateConverter.kt index be2a9db..ab095e2 100644 --- a/app/src/main/java/me/zobrist/tichucounter/data/DateConverter.kt +++ b/app/src/main/java/me/zobrist/tichucounter/data/DateConverter.kt @@ -2,7 +2,7 @@ package me.zobrist.tichucounter.data import androidx.room.ProvidedTypeConverter import androidx.room.TypeConverter -import java.util.* +import java.util.Date @ProvidedTypeConverter object DateConverter { diff --git a/app/src/main/java/me/zobrist/tichucounter/data/entity/Game.kt b/app/src/main/java/me/zobrist/tichucounter/data/entity/Game.kt index 314c8af..a4face9 100644 --- a/app/src/main/java/me/zobrist/tichucounter/data/entity/Game.kt +++ b/app/src/main/java/me/zobrist/tichucounter/data/entity/Game.kt @@ -2,7 +2,7 @@ package me.zobrist.tichucounter.data.entity import androidx.room.Entity import androidx.room.PrimaryKey -import java.util.* +import java.util.Date @Entity data class Game( diff --git a/app/src/main/java/me/zobrist/tichucounter/domain/NavExtensions.kt b/app/src/main/java/me/zobrist/tichucounter/domain/NavExtensions.kt index 31b0240..a6fdf6d 100644 --- a/app/src/main/java/me/zobrist/tichucounter/domain/NavExtensions.kt +++ b/app/src/main/java/me/zobrist/tichucounter/domain/NavExtensions.kt @@ -1,7 +1,11 @@ package me.zobrist.tichucounter.domain import androidx.compose.runtime.Composable -import androidx.navigation.* +import androidx.navigation.NamedNavArgument +import androidx.navigation.NavBackStackEntry +import androidx.navigation.NavController +import androidx.navigation.NavDeepLink +import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable fun NavController.navigate(route: Route) { diff --git a/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt b/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt index 78e1fd3..ce01b3c 100644 --- a/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt +++ b/app/src/main/java/me/zobrist/tichucounter/repository/GameRepository.kt @@ -2,7 +2,10 @@ package me.zobrist.tichucounter.repository import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.* +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.take import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import me.zobrist.tichucounter.data.GameDao @@ -10,7 +13,7 @@ import me.zobrist.tichucounter.data.GameWithScores import me.zobrist.tichucounter.data.RoundDao import me.zobrist.tichucounter.data.entity.Game import me.zobrist.tichucounter.data.entity.Round -import java.util.* +import java.util.Date import javax.inject.Inject class GameRepository @Inject constructor( @@ -20,8 +23,6 @@ class GameRepository @Inject constructor( private var activeGame: Game = Game(true, "TeamA", "TeamB", Date(), Date()) - private var distinctTeamNames: List = listOf() - init { CoroutineScope(Dispatchers.IO).launch { gameDao.getActiveAsFlow().collect { @@ -131,6 +132,6 @@ class GameRepository @Inject constructor( } fun getDistinctTeamNames(): Flow> { - return gameDao.getDistinctTeamNames() + return gameDao.getDistinctTeamNames() } } \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/Theme.kt b/app/src/main/java/me/zobrist/tichucounter/ui/Theme.kt index bb0a5c7..11f0059 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/Theme.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/Theme.kt @@ -2,7 +2,11 @@ package me.zobrist.tichucounter.ui import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material3.* +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/about/AboutView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/about/AboutView.kt index 4c5ea65..9cd7c79 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/about/AboutView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/about/AboutView.kt @@ -3,11 +3,20 @@ package me.zobrist.tichucounter.ui.about import android.content.res.Configuration import androidx.compose.foundation.Image import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Mail import androidx.compose.material.icons.outlined.Shop -import androidx.compose.material3.* +import androidx.compose.material3.Button +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ShapeDefaults +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment.Companion.Top import androidx.compose.ui.Modifier @@ -39,7 +48,7 @@ fun AboutView() { ) { - Row() { + Row { Image( modifier = Modifier .padding(end = 10.dp) @@ -92,7 +101,7 @@ fun AboutView() { @Preview(name = "Dark Mode", uiMode = Configuration.UI_MODE_NIGHT_YES, showBackground = true) @Composable fun AboutViewPreview() { - AppTheme() { + AppTheme { Surface { AboutView() } diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt index 35e9902..5fcae12 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/composables/TypeaheadTextField.kt @@ -3,8 +3,17 @@ package me.zobrist.tichucounter.ui.composables import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.material3.DropdownMenuItem +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExposedDropdownMenuBox +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldColors +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.focus.onFocusChanged @@ -61,30 +70,31 @@ fun TypeaheadTextField( } .onSizeChanged { dropDownWidth = it.width } .onKeyEvent { event -> - if (event.key == Key.Back || event.key == Key.Enter) { - focusManager.clearFocus() - true - } - false - }, + if (event.key == Key.Back || event.key == Key.Enter) { + focusManager.clearFocus() + true + } else { + false + } + }, colors = colors ) ExposedDropdownMenu( expanded = isFocused && items.isNotEmpty(), modifier = Modifier - .width(with(LocalDensity.current){dropDownWidth.toDp()}), - onDismissRequest = { } + .width(with(LocalDensity.current) { dropDownWidth.toDp() }), + onDismissRequest = { } ) { items.forEach { - DropdownMenuItem( - onClick = { - onValueChange(it) - focusManager.clearFocus() - }, - text = { Text(it) }, - ) - } + DropdownMenuItem( + onClick = { + onValueChange(it) + focusManager.clearFocus() + }, + text = { Text(it) }, + ) + } } } } \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt index d838b89..a338d72 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt @@ -4,7 +4,11 @@ import android.content.res.Configuration import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.material3.Surface -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.platform.LocalConfiguration @@ -115,8 +119,10 @@ internal class PreviewViewModel : ICounterViewModel { override var activeValue: String = currentScoreA override var inactiveValue: String = currentScoreB override var keyboardHidden: Boolean = false - override val teamNameSuggestionsA: List = listOf("TeamA", "asdffd", "TeamB", "really really long Team Name that is way too long") - override val teamNameSuggestionsB: List = listOf("TeamA", "asdffd", "TeamB", "really really long Team Name that is way too long") + override val teamNameSuggestionsA: List = + listOf("TeamA", "asdffd", "TeamB", "really really long Team Name that is way too long") + override val teamNameSuggestionsB: List = + listOf("TeamA", "asdffd", "TeamB", "really really long Team Name that is way too long") override fun focusLastInput() { } diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt index 6ba2c1f..751d186 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt @@ -1,7 +1,6 @@ package me.zobrist.tichucounter.ui.counter import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.focus.FocusRequester @@ -10,8 +9,6 @@ import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Job import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.flow.take import kotlinx.coroutines.launch import me.zobrist.tichucounter.data.entity.Round import me.zobrist.tichucounter.domain.Tichu @@ -178,7 +175,7 @@ class CounterViewModel @Inject constructor( } viewModelScope.launch { - gameRepository.getDistinctTeamNames().collect() { + gameRepository.getDistinctTeamNames().collect { distinctTeamNames = it buildTeamNameSuggestions() @@ -351,16 +348,15 @@ class CounterViewModel @Inject constructor( } } - private fun buildTeamNameSuggestions(){ + private fun buildTeamNameSuggestions() { teamNameSuggestionsA = buildTypeaheadList(distinctTeamNames, teamNameA) teamNameSuggestionsB = buildTypeaheadList(distinctTeamNames, teamNameB) } - private fun buildTypeaheadList(rawList: List, currentInput: String ): List { + private fun buildTypeaheadList(rawList: List, currentInput: String): List { var filtered = rawList.filter { it.isNotEmpty() && it != currentInput } - if(currentInput.isNotEmpty()) - { + if (currentInput.isNotEmpty()) { filtered = filtered.filter { it.contains(currentInput, ignoreCase = true) } } diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt index a88778c..3ab3407 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt @@ -251,7 +251,6 @@ fun KeyboardIconButton( } } -@OptIn(ExperimentalMaterial3Api::class) @Composable fun CenteredTextField( value: String, diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt index c8eae5b..9527c73 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamNamesView.kt @@ -2,19 +2,15 @@ package me.zobrist.tichucounter.ui.counter import android.content.res.Configuration import androidx.compose.foundation.layout.* - import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.onFocusChanged -import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import me.zobrist.tichucounter.ui.AppTheme import me.zobrist.tichucounter.ui.composables.TypeaheadTextField -@OptIn(ExperimentalMaterial3Api::class) @Composable fun TeamNamesView( nameA: String, @@ -25,8 +21,11 @@ fun TeamNamesView( updateB: (String) -> Unit ) { - val color = TextFieldDefaults.textFieldColors( - containerColor = MaterialTheme.colorScheme.surfaceColorAtElevation(1.dp) + val containerColor = MaterialTheme.colorScheme.surfaceColorAtElevation(1.dp) + val color = TextFieldDefaults.colors( + focusedContainerColor = containerColor, + unfocusedContainerColor = containerColor, + disabledContainerColor = containerColor, ) Row { diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamScoresView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamScoresView.kt index 30adac4..fb9d9f7 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamScoresView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/TeamScoresView.kt @@ -4,7 +4,11 @@ import android.content.res.Configuration import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding -import androidx.compose.material3.* +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.ElevatedCard +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/history/HistoryView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/history/HistoryView.kt index 2dfc42e..fa6eabe 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/history/HistoryView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/history/HistoryView.kt @@ -2,14 +2,31 @@ package me.zobrist.tichucounter.ui.history import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +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.width +import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.DeleteForever import androidx.compose.material.icons.outlined.MoreVert -import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Button +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -23,7 +40,8 @@ import me.zobrist.tichucounter.data.entity.Round import me.zobrist.tichucounter.domain.getTotalPoints import me.zobrist.tichucounter.ui.composables.DropDownMenu import java.text.DateFormat -import java.util.* +import java.util.Date +import java.util.Locale @Composable diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/layout/DrawerContent.kt b/app/src/main/java/me/zobrist/tichucounter/ui/layout/DrawerContent.kt index e025a4a..1dd1b55 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/layout/DrawerContent.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/layout/DrawerContent.kt @@ -16,7 +16,6 @@ import me.zobrist.tichucounter.domain.* import me.zobrist.tichucounter.ui.AppTheme import me.zobrist.tichucounter.ui.counter.* -@OptIn(ExperimentalMaterial3Api::class) @Composable fun DrawerContent( drawerItems: List, diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/settings/SettingsView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/settings/SettingsView.kt index 38840be..bcdddf4 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/settings/SettingsView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/settings/SettingsView.kt @@ -8,8 +8,16 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.ArrowDropDown -import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment.Companion.End import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index 81a0083..e5cc68d 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -3,51 +3,52 @@ android:height="108dp" android:viewportWidth="50.684" android:viewportHeight="39.77"> - - - - - - - - + + + + + + + + diff --git a/app/src/main/res/drawable/tichu_logo.xml b/app/src/main/res/drawable/tichu_logo.xml index 200a2f2..d91ec60 100644 --- a/app/src/main/res/drawable/tichu_logo.xml +++ b/app/src/main/res/drawable/tichu_logo.xml @@ -3,46 +3,46 @@ android:height="39.77dp" android:viewportWidth="50.684" android:viewportHeight="39.77"> - - - - - - + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 7005cb8..0648fb4 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 7353dbd..ac94b34 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/test/java/me/zobrist/tichucounter/TichuUnitTest.kt b/app/src/test/java/me/zobrist/tichucounter/TichuUnitTest.kt index c42f7e5..723277b 100644 --- a/app/src/test/java/me/zobrist/tichucounter/TichuUnitTest.kt +++ b/app/src/test/java/me/zobrist/tichucounter/TichuUnitTest.kt @@ -1,7 +1,9 @@ package me.zobrist.tichucounter import me.zobrist.tichucounter.domain.Tichu -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue import org.junit.Test /** diff --git a/build.gradle b/build.gradle index d85e04d..24af24d 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.0.1' + classpath 'com.android.tools.build:gradle:8.0.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong From 89ab0afaf520bf09709a9c87bd47de57c7fe0bde Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Fri, 2 Jun 2023 14:00:38 +0200 Subject: [PATCH 4/7] upload to nextcloud instead of seafile fix nextcloud upload --- .drone.yml | 68 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 27 deletions(-) diff --git a/.drone.yml b/.drone.yml index 1042e9f..0a7dfb5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -32,34 +32,48 @@ steps: - ./gradlew assembleRelease - ./gradlew bundleRelease -- name: deploy latest build - image: curlimages/curl - environment: - SEAFILE_API_KEY: - from_secret: SeafileApiKey - APK_FILE: app/build/outputs/apk/release/app-release.apk - BUNDLE_FILE: app/build/outputs/bundle/release/app-release.aab - SEAFILE_REPO: 6debeef9-121e-46ba-acc7-81e109fdcbdd - commands: - - 'UPLOAD_URL=$(curl -H "Authorization: Token $SEAFILE_API_KEY" https://seafile.zobrist.me/api2/repos/$SEAFILE_REPO/upload-link/ | tr -d "\"")' - - echo $UPLOAD_URL - - 'curl -H "Authorization: Token $SEAFILE_API_KEY" -F file=@$APK_FILE -F parent_dir=/ -F relative_path=latest/ -F replace=1 "$UPLOAD_URL"' - - 'curl -H "Authorization: Token $SEAFILE_API_KEY" -F file=@$BUNDLE_FILE -F parent_dir=/ -F relative_path=latest/ -F replace=1 "$UPLOAD_URL"' +- name: upload latest apk + image: vividboarder/drone-webdav + settings: + file: app/build/outputs/apk/release/app-release.apk + destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/TichuCounter/latest/app-release.apk + username: + from_secret: NextCloudUser + password: + from_secret: NextCloudPassword -- name: deploy tagged build - image: curlimages/curl - environment: - SEAFILE_API_KEY: - from_secret: SeafileApiKey - APK_FILE: app/build/outputs/apk/release/app-release.apk - BUNDLE_FILE: app/build/outputs/bundle/release/app-release.aab - SEAFILE_REPO: 6debeef9-121e-46ba-acc7-81e109fdcbdd - commands: - - 'UPLOAD_URL=$(curl -H "Authorization: Token $SEAFILE_API_KEY" https://seafile.zobrist.me/api2/repos/$SEAFILE_REPO/upload-link/ | tr -d "\"")' - - 'curl -H "Authorization: Token $SEAFILE_API_KEY" -F file=@$APK_FILE -F parent_dir=/ -F relative_path=tagged/$DRONE_TAG/ -F replace=1 "$UPLOAD_URL"' - - 'curl -H "Authorization: Token $SEAFILE_API_KEY" -F file=@$BUNDLE_FILE -F parent_dir=/ -F relative_path=tagged/$DRONE_TAG/ -F replace=1 "$UPLOAD_URL"' - - 'curl -d "operation=rename&newname=app-release$DRONE_TAG.apk" -H "Authorization: Token $SEAFILE_API_KEY" https://seafile.zobrist.me/api2/repos/$SEAFILE_REPO/file/?p=/tagged/$DRONE_TAG/app-release.apk' - - 'curl -d "operation=rename&newname=app-release$DRONE_TAG.aab" -H "Authorization: Token $SEAFILE_API_KEY" https://seafile.zobrist.me/api2/repos/$SEAFILE_REPO/file/?p=/tagged/$DRONE_TAG/app-release.aab' +- name: upload latest bundle + image: vividboarder/drone-webdav + settings: + file: app/build/outputs/bundle/release/app-release.aab + destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/TichuCounter/latest/app-release.aab + username: + from_secret: NextCloudUser + password: + from_secret: NextCloudPassword + +- name: upload tagged apk + image: vividboarder/drone-webdav + settings: + file: app/build/outputs/apk/release/app-release.apk + destination: https://my.nextcloud.com/remote.php/dav/files/deploy/tagged/app-release$DRONE_TAG.apk + username: + from_secret: NextCloudUser + password: + from_secret: NextCloudPassword + when: + event: + - tag + +- name: upload tagged bundle + image: vividboarder/drone-webdav + settings: + file: app/build/outputs/bundle/release/app-release.aab + destination: https://my.nextcloud.com/remote.php/dav/files/deploy/tagged/app-release$DRONE_TAG.aab + username: + from_secret: NextCloudUser + password: + from_secret: NextCloudPassword when: event: - tag From 164cf6900f5d2c5b6fcb4b3c3ed714ba66a529dc Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Fri, 2 Jun 2023 15:03:13 +0200 Subject: [PATCH 5/7] fix tagged upload link --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 0a7dfb5..8b7e595 100644 --- a/.drone.yml +++ b/.drone.yml @@ -56,7 +56,7 @@ steps: image: vividboarder/drone-webdav settings: file: app/build/outputs/apk/release/app-release.apk - destination: https://my.nextcloud.com/remote.php/dav/files/deploy/tagged/app-release$DRONE_TAG.apk + destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/tagged/app-release$DRONE_TAG.apk username: from_secret: NextCloudUser password: @@ -69,7 +69,7 @@ steps: image: vividboarder/drone-webdav settings: file: app/build/outputs/bundle/release/app-release.aab - destination: https://my.nextcloud.com/remote.php/dav/files/deploy/tagged/app-release$DRONE_TAG.aab + destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/tagged/app-release$DRONE_TAG.aab username: from_secret: NextCloudUser password: From 61745c95a44180bbe07ddf0a902eae921e15abca Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Fri, 2 Jun 2023 16:58:36 +0200 Subject: [PATCH 6/7] Fix tagged upload url --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 8b7e595..c59cebb 100644 --- a/.drone.yml +++ b/.drone.yml @@ -56,7 +56,7 @@ steps: image: vividboarder/drone-webdav settings: file: app/build/outputs/apk/release/app-release.apk - destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/tagged/app-release$DRONE_TAG.apk + destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/TichuCounter/tagged/app-release$DRONE_TAG.apk username: from_secret: NextCloudUser password: @@ -69,7 +69,7 @@ steps: image: vividboarder/drone-webdav settings: file: app/build/outputs/bundle/release/app-release.aab - destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/tagged/app-release$DRONE_TAG.aab + destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/TichuCounter/tagged/app-release$DRONE_TAG.aab username: from_secret: NextCloudUser password: From a099659b2c016329bc8d08131f787c3a14b8889e Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Fri, 2 Jun 2023 22:14:46 +0200 Subject: [PATCH 7/7] Try to make DRONE_TAG work. --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index c59cebb..195de40 100644 --- a/.drone.yml +++ b/.drone.yml @@ -56,7 +56,7 @@ steps: image: vividboarder/drone-webdav settings: file: app/build/outputs/apk/release/app-release.apk - destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/TichuCounter/tagged/app-release$DRONE_TAG.apk + destination: 'https://nextcloud.zobrist.me/remote.php/dav/files/deploy/TichuCounter/tagged/app-release$DRONE_TAG.apk' username: from_secret: NextCloudUser password: @@ -69,7 +69,7 @@ steps: image: vividboarder/drone-webdav settings: file: app/build/outputs/bundle/release/app-release.aab - destination: https://nextcloud.zobrist.me/remote.php/dav/files/deploy/TichuCounter/tagged/app-release$DRONE_TAG.aab + destination: 'https://nextcloud.zobrist.me/remote.php/dav/files/deploy/TichuCounter/tagged/app-release$DRONE_TAG.aab' username: from_secret: NextCloudUser password: