diff --git a/.idea/gradle.xml b/.idea/gradle.xml index a2d7c21..a0de2a1 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -7,6 +7,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index 3dfd0e5..59e681f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,12 +5,12 @@ plugins { android { namespace 'com.mitchelbv.thuis_c' - compileSdk 32 + compileSdk 33 defaultConfig { applicationId "com.mitchelbv.thuis_c" minSdk 30 - targetSdk 32 + targetSdk 33 versionCode 1 versionName "1.0" @@ -37,7 +37,7 @@ android { compose true } composeOptions { - kotlinCompilerExtensionVersion '1.1.1' + kotlinCompilerExtensionVersion '1.3.2' } packagingOptions { resources { @@ -49,31 +49,31 @@ android { dependencies { //Network implementation 'com.squareup.retrofit2:retrofit:2.9.0' - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.9.1' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' // Display images from the internet implementation "io.coil-kt:coil-compose:2.2.2" // Database - implementation "androidx.room:room-runtime:2.4.3" - annotationProcessor("androidx.room:room-compiler:2.4.3") + implementation "androidx.room:room-runtime:2.5.0" + annotationProcessor("androidx.room:room-compiler:2.5.0") // Navigation implementation "androidx.navigation:navigation-compose:2.5.3" // ViewModel - implementation "androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07" + implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1" - implementation 'androidx.core:core-ktx:1.7.0' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' - implementation 'androidx.activity:activity-compose:1.3.1' + implementation 'androidx.core:core-ktx:1.9.0' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation 'androidx.activity:activity-compose:1.6.1' implementation "androidx.compose.ui:ui:$compose_version" implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" - implementation 'androidx.compose.material3:material3:1.0.0-alpha02' + implementation 'androidx.compose.material3:material3:1.0.1' testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version" diff --git a/app/src/debug/ic_launcher-playstore.png b/app/src/debug/ic_launcher-playstore.png new file mode 100644 index 0000000..930350b Binary files /dev/null and b/app/src/debug/ic_launcher-playstore.png differ diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..930350b Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/com/mitchelbv/thuis_c/MainActivity.kt b/app/src/main/java/com/mitchelbv/thuis_c/MainActivity.kt index 4df5d29..7224efc 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/MainActivity.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/MainActivity.kt @@ -3,18 +3,12 @@ package com.mitchelbv.thuis_c import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.annotation.StringRes import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.DateRange -import androidx.compose.material.icons.filled.Home -import androidx.compose.material.icons.filled.List import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource import androidx.navigation.NavDestination.Companion.hierarchy import androidx.navigation.NavGraph.Companion.findStartDestination @@ -22,7 +16,10 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController +import com.mitchelbv.thuis_c.ui.card.CardsScreen import com.mitchelbv.thuis_c.ui.feyenoord.FeyenoordScreen +import com.mitchelbv.thuis_c.ui.freezer.FreezerScreen +import com.mitchelbv.thuis_c.ui.freezer.detailed.FreezerDetailedScreen import com.mitchelbv.thuis_c.ui.home.HomeScreen import com.mitchelbv.thuis_c.ui.recipe.RecipeScreen import com.mitchelbv.thuis_c.ui.theme.ThuisTheme @@ -44,12 +41,6 @@ class MainActivity : ComponentActivity() { } } -sealed class Screen(val route: String, @StringRes val resourceId: Int, val icon: ImageVector) { - object Feyenoord : Screen("feyenoord", R.string.nav_feyenoord, Icons.Default.DateRange) - object Recipes : Screen("recipes", R.string.nav_recipes, Icons.Default.List) - object Home : Screen("home", R.string.nav_home, Icons.Default.Home) -} - val screenItems = listOf( Screen.Home, Screen.Recipes, @@ -60,13 +51,13 @@ val screenItems = listOf( @Composable fun ThuisApp() { val navController = rememberNavController() + val navBackStackEntry by navController.currentBackStackEntryAsState() Scaffold( topBar = { - SmallTopAppBar(title = { Text(stringResource(id = R.string.app_name))}) + TopAppBar(title = { Text(stringResource(id = R.string.app_name))}) }, bottomBar = { NavigationBar { - val navBackStackEntry by navController.currentBackStackEntryAsState() val currentDestination = navBackStackEntry?.destination screenItems.forEach { screen -> NavigationBarItem( @@ -90,6 +81,10 @@ fun ThuisApp() { composable("home") { HomeScreen(navController) } composable("feyenoord") { FeyenoordScreen(navHostController = navController) } composable("recipes") { RecipeScreen(navHostController = navController)} + composable("freezer") {FreezerScreen(navHostController = navController)} + composable("cards") { CardsScreen(navHostController = navController) } + composable("freezer-details/{freezerId}") { backStackEntry -> FreezerDetailedScreen(navHostController = navController, freezerId = backStackEntry.arguments?.getString("freezerId")) } + composable("freezer-edit") { CardsScreen(navHostController = navController) } } } } \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/Screens.kt b/app/src/main/java/com/mitchelbv/thuis_c/Screens.kt new file mode 100644 index 0000000..9351084 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/Screens.kt @@ -0,0 +1,17 @@ +package com.mitchelbv.thuis_c + +import androidx.annotation.StringRes +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.* +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.navigation.NavArgs + +sealed class Screen(val route: String, @StringRes val resourceId: Int, val icon: ImageVector) { + object Feyenoord : Screen("feyenoord", R.string.nav_feyenoord, Icons.Default.DateRange) + object Recipes : Screen("recipes", R.string.nav_recipes, Icons.Default.List) + object Home : Screen("home", R.string.nav_home, Icons.Default.Home) + object Cards : Screen("cards", R.string.home_card_cards, Icons.Default.Call) + object Freezer : Screen("freezer", R.string.home_card_freezer, Icons.Default.DateRange) + object FreezerDetails : Screen("freezer-details", R.string.home_card_freezer, Icons.Default.ShoppingCart) + object FreezerEdit : Screen("freezer-edit", R.string.edit_freezer, Icons.Default.Call) +} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/card/CardRetrofitHelper.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/card/CardRetrofitHelper.kt deleted file mode 100644 index e5fb729..0000000 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/card/CardRetrofitHelper.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.mitchelbv.thuis_c.network.card - -import com.mitchelbv.thuis_c.network.feyenoord.FeyenoordRetrofitHelper -import retrofit2.Retrofit -import retrofit2.converter.gson.GsonConverterFactory - -object CardRetrofitHelper { - val baseUrl = "https://10.0.2.2:7239/" - - fun getInstance(): Retrofit { - return Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(GsonConverterFactory.create()) - .build() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/card/CardService.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/card/CardService.kt deleted file mode 100644 index d0041f5..0000000 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/card/CardService.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.mitchelbv.thuis_c.network.card - -import com.mitchelbv.thuis_c.network.card.responses.Card -import com.mitchelbv.thuis_c.network.card.responses.Cards -import retrofit2.http.GET - -interface CardService { - @GET("Card") - suspend fun getCards(): Cards - - @GET("Card/{id}") - suspend fun getCard(id: Int): Card -} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventStartDateTimeFormatted.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventStartDateTimeFormatted.kt index 8f7d07d..0bd1fe6 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventStartDateTimeFormatted.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventStartDateTimeFormatted.kt @@ -3,17 +3,17 @@ package com.mitchelbv.thuis_c.network.feyenoord.responses import com.google.gson.annotations.SerializedName -data class EventStartDateTimeFormatted ( +data class EventStartDateTimeFormatted( - @SerializedName("DateTime" ) var DateTime : String? = null, - @SerializedName("Full" ) var Full : String? = null, - @SerializedName("DateLong" ) var DateLong : String? = null, - @SerializedName("DateShort" ) var DateShort : String? = null, - @SerializedName("Time" ) var Time : String? = null, - @SerializedName("DayMonth" ) var DayMonth : String? = null, - @SerializedName("DayOfWeek" ) var DayOfWeek : Int? = null, - @SerializedName("Year" ) var Year : Int? = null, - @SerializedName("Month" ) var Month : Int? = null, - @SerializedName("Day" ) var Day : Int? = null + @SerializedName("DateTime") var DateTime: String? = null, + @SerializedName("Full") var Full: String? = null, + @SerializedName("DateLong") var DateLong: String? = null, + @SerializedName("DateShort") var DateShort: String? = null, + @SerializedName("Time") var Time: String? = null, + @SerializedName("DayMonth") var DayMonth: String? = null, + @SerializedName("DayOfWeek") var DayOfWeek: Int? = null, + @SerializedName("Year") var Year: Int? = null, + @SerializedName("Month") var Month: Int? = null, + @SerializedName("Day") var Day: Int? = null ) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse.kt index 2f47f26..0b85424 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse.kt @@ -4,9 +4,7 @@ import com.google.gson.annotations.SerializedName data class FeyenoordEventResponse( - @SerializedName("HeaderItem") var HeaderItem: HeaderItem? = HeaderItem(), @SerializedName("TabItems") var TabItems: ArrayList = arrayListOf(), @SerializedName("CrossSellInfo") var CrossSellInfo: String? = null - ) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/HeaderItem.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/HeaderItem.kt index ab4630d..1ead3e3 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/HeaderItem.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/HeaderItem.kt @@ -3,61 +3,61 @@ package com.mitchelbv.thuis_c.network.feyenoord.responses import com.google.gson.annotations.SerializedName -data class HeaderItem ( +data class HeaderItem( - @SerializedName("DisplayCountdown" ) var DisplayCountdown : Boolean? = null, - @SerializedName("ShowResellInHeader" ) var ShowResellInHeader : Boolean? = null, - @SerializedName("ResellTicketsAllowed" ) var ResellTicketsAllowed : Boolean? = null, - @SerializedName("ResellTicketsFrom" ) var ResellTicketsFrom : String? = null, - @SerializedName("ResellTicketsTill" ) var ResellTicketsTill : String? = null, - @SerializedName("EventId" ) var EventId : Int? = null, - @SerializedName("SaleCategoryId" ) var SaleCategoryId : Int? = null, - @SerializedName("HasGeneralSale" ) var HasGeneralSale : Boolean? = null, - @SerializedName("VisibleInShop" ) var VisibleInShop : Boolean? = null, - @SerializedName("HighlightInShop" ) var HighlightInShop : Boolean? = null, - @SerializedName("HasSoldOut" ) var HasSoldOut : Boolean? = null, - @SerializedName("OnGeneralSaleFrom" ) var OnGeneralSaleFrom : String? = null, - @SerializedName("OnGeneralSaleTill" ) var OnGeneralSaleTill : String? = null, - @SerializedName("VisibleInShopFrom" ) var VisibleInShopFrom : String? = null, - @SerializedName("VisibleInShopTill" ) var VisibleInShopTill : String? = null, - @SerializedName("Name" ) var Name : String? = null, - @SerializedName("NameHomeTeam" ) var NameHomeTeam : String? = null, - @SerializedName("NameAwayTeam" ) var NameAwayTeam : String? = null, - @SerializedName("EventStartDateTime" ) var EventStartDateTime : String? = null, - @SerializedName("EventStartDateTimeOffset" ) var EventStartDateTimeOffset : String? = null, - @SerializedName("EventEndDateTime" ) var EventEndDateTime : String? = null, - @SerializedName("CategoryTranslationCode" ) var CategoryTranslationCode : String? = null, - @SerializedName("SaleCategoryOrder" ) var SaleCategoryOrder : Int? = null, - @SerializedName("ImageId" ) var ImageId : String? = null, - @SerializedName("ImageFileName" ) var ImageFileName : String? = null, - @SerializedName("ImageUniqueName" ) var ImageUniqueName : String? = null, - @SerializedName("HomeImageId" ) var HomeImageId : Int? = null, - @SerializedName("HomeImageFileName" ) var HomeImageFileName : String? = null, - @SerializedName("HomeImageUniqueName" ) var HomeImageUniqueName : String? = null, - @SerializedName("AwayImageId" ) var AwayImageId : Int? = null, - @SerializedName("AwayImageFileName" ) var AwayImageFileName : String? = null, - @SerializedName("AwayImageUniqueName" ) var AwayImageUniqueName : String? = null, - @SerializedName("HasTicketsAvailable" ) var HasTicketsAvailable : Boolean? = null, - @SerializedName("HasMarketplaceTicketsAvailable" ) var HasMarketplaceTicketsAvailable : Boolean? = null, - @SerializedName("HasPossibleTicketsInFuture" ) var HasPossibleTicketsInFuture : Boolean? = null, - @SerializedName("CurrentlyOnSaleForUser" ) var CurrentlyOnSaleForUser : Boolean? = null, - @SerializedName("PurchaseRightAvailableAfterLogin" ) var PurchaseRightAvailableAfterLogin : Boolean? = null, - @SerializedName("ImageUrl" ) var ImageUrl : String? = null, - @SerializedName("HomeImageUrl" ) var HomeImageUrl : String? = null, - @SerializedName("AwayImageUrl" ) var AwayImageUrl : String? = null, - @SerializedName("EventTypeName" ) var EventTypeName : String? = null, - @SerializedName("EventTypeLogoId" ) var EventTypeLogoId : Int? = null, - @SerializedName("EventTypeLogoUrl" ) var EventTypeLogoUrl : String? = null, - @SerializedName("EventTypeLogoFileName" ) var EventTypeLogoFileName : String? = null, - @SerializedName("EventTypeLogoUniqueName" ) var EventTypeLogoUniqueName : String? = null, - @SerializedName("InfoUrl" ) var InfoUrl : String? = null, - @SerializedName("EventStartDateTimeFormatted" ) var EventStartDateTimeFormatted : EventStartDateTimeFormatted? = EventStartDateTimeFormatted(), - @SerializedName("EventEndDateTimeFormatted" ) var EventEndDateTimeFormatted : EventEndDateTimeFormatted? = EventEndDateTimeFormatted(), - @SerializedName("ButtonData" ) var ButtonData : ButtonData? = ButtonData(), - @SerializedName("ShowMarketplaceForEvent" ) var ShowMarketplaceForEvent : Boolean? = null, - @SerializedName("RedirectToMarketplace" ) var RedirectToMarketplace : Boolean? = null, - @SerializedName("MarketplaceButtonTextColor" ) var MarketplaceButtonTextColor : String? = null, - @SerializedName("MarketplaceButtonBackgroundColor" ) var MarketplaceButtonBackgroundColor : String? = null, - @SerializedName("DeepLinkRoute" ) var DeepLinkRoute : String? = null + @SerializedName("DisplayCountdown") var DisplayCountdown: Boolean? = null, + @SerializedName("ShowResellInHeader") var ShowResellInHeader: Boolean? = null, + @SerializedName("ResellTicketsAllowed") var ResellTicketsAllowed: Boolean? = null, + @SerializedName("ResellTicketsFrom") var ResellTicketsFrom: String? = null, + @SerializedName("ResellTicketsTill") var ResellTicketsTill: String? = null, + @SerializedName("EventId") var EventId: Int? = null, + @SerializedName("SaleCategoryId") var SaleCategoryId: Int? = null, + @SerializedName("HasGeneralSale") var HasGeneralSale: Boolean? = null, + @SerializedName("VisibleInShop") var VisibleInShop: Boolean? = null, + @SerializedName("HighlightInShop") var HighlightInShop: Boolean? = null, + @SerializedName("HasSoldOut") var HasSoldOut: Boolean? = null, + @SerializedName("OnGeneralSaleFrom") var OnGeneralSaleFrom: String? = null, + @SerializedName("OnGeneralSaleTill") var OnGeneralSaleTill: String? = null, + @SerializedName("VisibleInShopFrom") var VisibleInShopFrom: String? = null, + @SerializedName("VisibleInShopTill") var VisibleInShopTill: String? = null, + @SerializedName("Name") var Name: String? = null, + @SerializedName("NameHomeTeam") var NameHomeTeam: String? = null, + @SerializedName("NameAwayTeam") var NameAwayTeam: String? = null, + @SerializedName("EventStartDateTime") var EventStartDateTime: String? = null, + @SerializedName("EventStartDateTimeOffset") var EventStartDateTimeOffset: String? = null, + @SerializedName("EventEndDateTime") var EventEndDateTime: String? = null, + @SerializedName("CategoryTranslationCode") var CategoryTranslationCode: String? = null, + @SerializedName("SaleCategoryOrder") var SaleCategoryOrder: Int? = null, + @SerializedName("ImageId") var ImageId: String? = null, + @SerializedName("ImageFileName") var ImageFileName: String? = null, + @SerializedName("ImageUniqueName") var ImageUniqueName: String? = null, + @SerializedName("HomeImageId") var HomeImageId: Int? = null, + @SerializedName("HomeImageFileName") var HomeImageFileName: String? = null, + @SerializedName("HomeImageUniqueName") var HomeImageUniqueName: String? = null, + @SerializedName("AwayImageId") var AwayImageId: Int? = null, + @SerializedName("AwayImageFileName") var AwayImageFileName: String? = null, + @SerializedName("AwayImageUniqueName") var AwayImageUniqueName: String? = null, + @SerializedName("HasTicketsAvailable") var HasTicketsAvailable: Boolean? = null, + @SerializedName("HasMarketplaceTicketsAvailable") var HasMarketplaceTicketsAvailable: Boolean? = null, + @SerializedName("HasPossibleTicketsInFuture") var HasPossibleTicketsInFuture: Boolean? = null, + @SerializedName("CurrentlyOnSaleForUser") var CurrentlyOnSaleForUser: Boolean? = null, + @SerializedName("PurchaseRightAvailableAfterLogin") var PurchaseRightAvailableAfterLogin: Boolean? = null, + @SerializedName("ImageUrl") var ImageUrl: String? = null, + @SerializedName("HomeImageUrl") var HomeImageUrl: String? = null, + @SerializedName("AwayImageUrl") var AwayImageUrl: String? = null, + @SerializedName("EventTypeName") var EventTypeName: String? = null, + @SerializedName("EventTypeLogoId") var EventTypeLogoId: Int? = null, + @SerializedName("EventTypeLogoUrl") var EventTypeLogoUrl: String? = null, + @SerializedName("EventTypeLogoFileName") var EventTypeLogoFileName: String? = null, + @SerializedName("EventTypeLogoUniqueName") var EventTypeLogoUniqueName: String? = null, + @SerializedName("InfoUrl") var InfoUrl: String? = null, + @SerializedName("EventStartDateTimeFormatted") var EventStartDateTimeFormatted: EventStartDateTimeFormatted? = EventStartDateTimeFormatted(), + @SerializedName("EventEndDateTimeFormatted") var EventEndDateTimeFormatted: EventEndDateTimeFormatted? = EventEndDateTimeFormatted(), + @SerializedName("ButtonData") var ButtonData: ButtonData? = ButtonData(), + @SerializedName("ShowMarketplaceForEvent") var ShowMarketplaceForEvent: Boolean? = null, + @SerializedName("RedirectToMarketplace") var RedirectToMarketplace: Boolean? = null, + @SerializedName("MarketplaceButtonTextColor") var MarketplaceButtonTextColor: String? = null, + @SerializedName("MarketplaceButtonBackgroundColor") var MarketplaceButtonBackgroundColor: String? = null, + @SerializedName("DeepLinkRoute") var DeepLinkRoute: String? = null ) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisRetrofitHelper.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisRetrofitHelper.kt new file mode 100644 index 0000000..f2601a1 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisRetrofitHelper.kt @@ -0,0 +1,16 @@ +package com.mitchelbv.thuis_c.network.thuis + +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +object ThuisRetrofitHelper { + val baseUrl = "http://10.0.2.2:5052/" + + + private val retrofit = Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(GsonConverterFactory.create()) + .build() + + val thuis = retrofit.create(ThuisService::class.java) +} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisService.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisService.kt new file mode 100644 index 0000000..a1ffe5f --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/ThuisService.kt @@ -0,0 +1,62 @@ +package com.mitchelbv.thuis_c.network.thuis + +import com.mitchelbv.thuis_c.network.thuis.responses.* +import retrofit2.http.* + +interface ThuisService { + // Cards + // Getters + @GET("api/Card") + suspend fun getCards(): ArrayList + + @GET("api/Card/{id}") + suspend fun getCard(id: Int): Card + + // Post + @POST("api/card") + suspend fun postCard(@Body card: Card): Card + + // Freezer + // Getters + @GET("api/Freezer") + suspend fun getFreezers(): ArrayList + + @GET("api/Freezer/{id}") + suspend fun getFreezer(@Path("id") id: Int): Freezer + + // Post + @POST("api/Freezer") + suspend fun postFreezer(@Body freezer: Freezer): Freezer + + // Put + @PUT("api/Freezer/{id}") + suspend fun putFreezer(@Body freezer: Freezer): Freezer + + // Delete + @DELETE("api/Freezer/{id]") + suspend fun deleteFreezer(id: Int) + + // Freezer items + + // Getters + @GET("api/FreezerItem") + suspend fun getFreezerItems(): FreezerItems + + @GET("api/FreezerItem/{id}") + suspend fun getFreezerItem(id: Int): FreezerItem + + @GET("api/FreezerItem/InFreezer/{id}") + suspend fun getFreezerItemsInFreezer(id: Int): FreezerItemsInFreezer + + // Post + @POST("api/FreezerItem") + suspend fun postFreezerItem(@Body freezerItem: FreezerItem): FreezerItem + + // Put + @PUT("api/FreezerItem/{id}") + suspend fun putFreezerItem(@Body freezerItem: FreezerItem): FreezerItem + + // Delete + @DELETE("api/FreezerItem/{id}") + suspend fun deleteFreezerItem(id: Int) +} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/card/responses/Card.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Card.kt similarity index 81% rename from app/src/main/java/com/mitchelbv/thuis_c/network/card/responses/Card.kt rename to app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Card.kt index 72fc65e..5be209a 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/card/responses/Card.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Card.kt @@ -1,4 +1,4 @@ -package com.mitchelbv.thuis_c.network.card.responses +package com.mitchelbv.thuis_c.network.thuis.responses import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/card/responses/Cards.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Cards.kt similarity index 72% rename from app/src/main/java/com/mitchelbv/thuis_c/network/card/responses/Cards.kt rename to app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Cards.kt index 72bdb25..cd2d119 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/card/responses/Cards.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Cards.kt @@ -1,4 +1,4 @@ -package com.mitchelbv.thuis_c.network.card.responses +package com.mitchelbv.thuis_c.network.thuis.responses import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezer.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezer.kt new file mode 100644 index 0000000..d99e314 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezer.kt @@ -0,0 +1,9 @@ +package com.mitchelbv.thuis_c.network.thuis.responses + +import com.google.gson.annotations.SerializedName + +data class Freezer( + @SerializedName("freezerId") var freezerId: Int? = null, + @SerializedName("location") var location: String? = null, + @SerializedName("amountInFreezer") var amountInFreezer: Int? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItem.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItem.kt new file mode 100644 index 0000000..ad92036 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItem.kt @@ -0,0 +1,14 @@ +package com.mitchelbv.thuis_c.network.thuis.responses + +import com.google.gson.annotations.SerializedName + + +data class FreezerItem( + @SerializedName("freezerItemId") var freezerItemId: Int? = null, + @SerializedName("item") var item: String? = null, + @SerializedName("amount") var amount: Int? = null, + @SerializedName("drawer") var drawer: Int? = null, + @SerializedName("dateTimeAdded") var dateTimeAdded: String? = null, + @SerializedName("freezerId") var freezerId: Int? = null + +) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItems.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItems.kt new file mode 100644 index 0000000..765e622 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItems.kt @@ -0,0 +1,8 @@ +package com.mitchelbv.thuis_c.network.thuis.responses + +import com.google.gson.annotations.SerializedName + +data class FreezerItems( + @SerializedName("freezerItems") var freezerItems: ArrayList = arrayListOf() + +) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItemsInFreezer.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItemsInFreezer.kt new file mode 100644 index 0000000..adf76c8 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/FreezerItemsInFreezer.kt @@ -0,0 +1,13 @@ +package com.mitchelbv.thuis_c.network.thuis.responses + +import com.google.gson.annotations.SerializedName + + +data class FreezerItemsInFreezer( + @SerializedName("freezerItemId") var freezerItemId: Int? = null, + @SerializedName("item") var item: String? = null, + @SerializedName("amount") var amount: Int? = null, + @SerializedName("drawer") var drawer: Int? = null, + @SerializedName("dateTimeAdded") var dateTimeAdded: String? = null, + @SerializedName("freezerId") var freezerId: Int? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezers.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezers.kt new file mode 100644 index 0000000..8602804 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/thuis/responses/Freezers.kt @@ -0,0 +1,7 @@ +package com.mitchelbv.thuis_c.network.thuis.responses + +import com.google.gson.annotations.SerializedName + +data class Freezers( + @SerializedName("freezers") var freezers: ArrayList = arrayListOf() +) diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/card/CardViewModel.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/card/CardViewModel.kt index 81b4349..6516d2d 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/ui/card/CardViewModel.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/card/CardViewModel.kt @@ -2,8 +2,8 @@ package com.mitchelbv.thuis_c.ui.card import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.mitchelbv.thuis_c.network.card.CardRetrofitHelper -import com.mitchelbv.thuis_c.network.card.CardService +import com.mitchelbv.thuis_c.network.thuis.ThuisRetrofitHelper +import com.mitchelbv.thuis_c.network.thuis.ThuisService import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @@ -22,18 +22,18 @@ class CardViewModel : ViewModel() { } private fun fillCards() { - val tempCards = mutableListOf() - viewModelScope.launch { - val cApiClient = CardRetrofitHelper.getInstance().create(CardService::class.java) - val apiResponse = cApiClient.getCards() - for (card in apiResponse.cards) { - tempCards.add(Card( - id = card.id!!, - code = card.code!!, - issuer = card.issuer!! - )) - } - } - _uiState.value = CardUiState(tempCards) +// val tempCards = mutableListOf() +// viewModelScope.launch { +// val cApiClient = ThuisRetrofitHelper.getInstance().create(ThuisService::class.java) +// val apiResponse = cApiClient.getCards() +// for (card in apiResponse.cards) { +// tempCards.add(Card( +// id = card.id!!, +// code = card.code!!, +// issuer = card.issuer!! +// )) +// } +// } +// _uiState.value = CardUiState(tempCards) } } \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/card/CardsView.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/card/CardsView.kt index 6f348e3..de99203 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/ui/card/CardsView.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/card/CardsView.kt @@ -6,9 +6,10 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.lifecycle.viewmodel.compose.viewModel +import androidx.navigation.NavHostController @Composable -fun CardsScreen(cardViewModel: CardViewModel = viewModel()) { +fun CardsScreen(navHostController: NavHostController, cardViewModel: CardViewModel = viewModel()) { val cardUiState by cardViewModel.uiState.collectAsState() Column() { cardUiState.cards.forEach { diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordView.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordView.kt index 88b550b..058a58d 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordView.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordView.kt @@ -46,7 +46,7 @@ fun TeamNameWithLogo(team_name: String, team_logo_url: String, modifier: Modifie AsyncImage( model = team_logo_url, contentDescription = team_name, - placeholder = painterResource(id = R.drawable.ic_launcher_foreground), + placeholder = painterResource(id = R.drawable.placeholder), contentScale = ContentScale.Fit, modifier = modifier.size(64.dp) ) diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordViewModel.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordViewModel.kt index 191c01d..d5726b1 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordViewModel.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordViewModel.kt @@ -29,7 +29,6 @@ class FeyenoordViewModel : ViewModel() { } private fun fillMatches() { - // TODO Get data from the internet val tempMatches = mutableListOf() viewModelScope.launch(Dispatchers.IO) { val apiResponse = FeyenoordRetrofitHelper.feyenoord.getEvents() diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/FreezerView.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/FreezerView.kt new file mode 100644 index 0000000..6c4216c --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/FreezerView.kt @@ -0,0 +1,108 @@ +package com.mitchelbv.thuis_c.ui.freezer + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Edit +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +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 androidx.lifecycle.viewmodel.compose.viewModel +import androidx.navigation.NavHostController +import com.mitchelbv.thuis_c.R +import com.mitchelbv.thuis_c.Screen +import com.mitchelbv.thuis_c.network.thuis.responses.Freezer + +@Composable +fun FreezerScreen( + navHostController: NavHostController, + freezerViewModel: FreezerViewModel = viewModel() +) { + val freezerUiState by freezerViewModel.uiState.collectAsState() + FreezerList(freezerUiState.freezers, navHostController, Modifier) + FloatingActionButton(onClick = { navHostController.navigate("edit_freezer") }) { + Icon(Icons.Default.Edit, contentDescription = "Edit") + } +} + +@Composable +fun FreezerList(freezers: List, navHostController: NavHostController, modifier: Modifier) { + if (freezers.isNotEmpty()) { + LazyColumn { + items(freezers) { freezer -> + FreezerListItem( + freezer = freezer, + navigateTo = { navHostController.navigate("${Screen.FreezerDetails.route}/${freezer.freezerId}") }, + modifier = modifier + ) + } + } + + } else { + Text(stringResource(id = R.string.freezer_list_empty)) + } + + +} + +@Composable +fun FreezerListItem(freezer: Freezer, navigateTo: () -> Unit, modifier: Modifier) { + Row( + modifier = modifier + .fillMaxWidth() + .height(150.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text(freezer.location!!) + Column( + horizontalAlignment = Alignment.End, + verticalArrangement = Arrangement.Center, + modifier = modifier.fillMaxHeight() + ) { + Icon( + painter = painterResource(id = R.drawable.arrow), + contentDescription = "arrow", + modifier = modifier.size(20.dp) + ) + Text("${freezer.amountInFreezer} artikelen") + } + + } + Spacer( + modifier = Modifier + .fillMaxWidth() + .background(Color(0f, 0f, 0f, .5f)) + .height(1.dp) + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun FreezerCard(freezer: Freezer, navigateTo: () -> Unit) { + Card( + onClick = { navigateTo() }, modifier = Modifier + .fillMaxWidth() + .height(100.dp) + .padding(10.dp) + ) { + Text(freezer.location!!) + } +} + +@Preview(widthDp = 250, showBackground = true, heightDp = 300) +@Composable +fun FreezerListItemPreview() { + val freezer = Freezer(freezerId = 1, location = "Keuken", amountInFreezer = 5) + FreezerListItem(freezer = freezer, modifier = Modifier, navigateTo = {}) +} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/FreezerViewModel.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/FreezerViewModel.kt new file mode 100644 index 0000000..3415c5c --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/FreezerViewModel.kt @@ -0,0 +1,39 @@ +package com.mitchelbv.thuis_c.ui.freezer + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.mitchelbv.thuis_c.network.thuis.ThuisRetrofitHelper +import com.mitchelbv.thuis_c.network.thuis.responses.Freezer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch +import java.net.ConnectException + +data class FreezerUiState( + val freezers: List = listOf() +) + +class FreezerViewModel : ViewModel() { + private val _uiState = MutableStateFlow(FreezerUiState()) + val uiState: StateFlow = _uiState.asStateFlow() + + init { + fillFreezer() + } + + private fun fillFreezer() { + viewModelScope.launch(Dispatchers.IO) { + try { + val apiResponse = ThuisRetrofitHelper.thuis.getFreezers() + _uiState.value = FreezerUiState(apiResponse) + } catch (e: ConnectException) { + _uiState.value = FreezerUiState(listOf()) + } + + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/detailed/FreezerDetailedView.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/detailed/FreezerDetailedView.kt new file mode 100644 index 0000000..bf921d7 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/detailed/FreezerDetailedView.kt @@ -0,0 +1,10 @@ +package com.mitchelbv.thuis_c.ui.freezer.detailed + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.navigation.NavHostController + +@Composable +fun FreezerDetailedScreen(navHostController: NavHostController, freezerId: String?) { + Text("Hi!, requesting for freezer $freezerId") +} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/detailed/FreezerEditViewModel.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/detailed/FreezerEditViewModel.kt new file mode 100644 index 0000000..6fa5291 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/detailed/FreezerEditViewModel.kt @@ -0,0 +1,30 @@ +package com.mitchelbv.thuis_c.ui.freezer.detailed + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.mitchelbv.thuis_c.network.thuis.ThuisRetrofitHelper +import com.mitchelbv.thuis_c.network.thuis.responses.Freezer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch +import java.net.ConnectException + +data class FreezerEditUiState( + var freezerName: String = "", +) + +class FreezerEditViewModel : ViewModel() { + private val _uiState = MutableStateFlow(FreezerEditUiState()) + val uiState: StateFlow = _uiState.asStateFlow() + + init { + fillFreezerTextField() + } + + private fun fillFreezerTextField() { + // Todo + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/edit/FreezerEditView.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/edit/FreezerEditView.kt new file mode 100644 index 0000000..d4abe63 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/freezer/edit/FreezerEditView.kt @@ -0,0 +1,30 @@ +package com.mitchelbv.thuis_c.ui.freezer.edit + +import androidx.compose.foundation.layout.Column +import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.lifecycle.viewmodel.compose.viewModel +import androidx.navigation.NavHostController +import com.mitchelbv.thuis_c.ui.freezer.detailed.FreezerEditViewModel + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun FreezerEditScreen( + navHostController: NavHostController, + freezerEditViewModel: FreezerEditViewModel = viewModel(), + freezerId: String?) { + val freezerUiState by freezerEditViewModel.uiState.collectAsState() + val freezerName by remember { mutableStateOf(freezerUiState.freezerName)} + + Text("Hi!, editing (or creating) freezer. $freezerId") + Column { + TextField(value = freezerName, onValueChange = { freezerUiState.freezerName = it }) + Button(onClick = { /* TODO */ }) { + + } + } +} diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/home/Home.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/home/Home.kt index fc4bdcf..5eb850e 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/ui/home/Home.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/home/Home.kt @@ -1,17 +1,56 @@ package com.mitchelbv.thuis_c.ui.home -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.* import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment -import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import com.mitchelbv.thuis_c.ui.theme.Typography +import com.mitchelbv.thuis_c.R +import com.mitchelbv.thuis_c.Screen @Composable fun HomeScreen(navController: NavHostController) { - Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center) { + Column( + modifier = Modifier.fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { Text("De thuis app!", style = Typography.bodySmall) +// Row(modifier = Modifier.height(100.dp).width(180.dp)) { +// HomeCard(cardId = R.drawable.storefront, cardText = R.string.home_card_cards, routeTo = Screen.Cards.route, navController = navController) +// HomeCard(cardId = R.drawable.feyenoord, cardText = R.string.home_card_freezer, routeTo = Screen.Freezer.route, navController = navController) + HomeButton(buttonText = R.string.home_card_cards, routeTo = Screen.Cards.route, navController = navController) + HomeButton(buttonText = R.string.home_card_freezer, routeTo = Screen.Freezer.route, navController = navController) +// } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun HomeCard(cardId: Int, cardText: Int, routeTo: String, navController: NavHostController) { + Card(onClick = { navController.navigate(routeTo) }) { + Row(modifier = Modifier.fillMaxSize()) { + Icon( + painterResource(cardId), contentDescription = null, modifier = Modifier + .padding(end = 10.dp) + ) + Text( + text = stringResource(id = cardText), + Modifier + .padding(10.dp) + ) + } + } +} + +@Composable +fun HomeButton(buttonText: Int, routeTo: String, navController: NavHostController) { + Button(onClick = { navController.navigate(routeTo) }) { + Text(stringResource(id = buttonText)) } } \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/recipe/RecipeView.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/recipe/RecipeView.kt index 80a505e..dafa928 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/ui/recipe/RecipeView.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/recipe/RecipeView.kt @@ -31,6 +31,7 @@ fun RecipeScreen(navHostController: NavHostController) { } settings.javaScriptEnabled = true settings.domStorageEnabled = true + settings.safeBrowsingEnabled = false loadUrl("https://rs.mitchelbv.nl/") webView = this } diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d1..0000000 --- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/arrow.xml b/app/src/main/res/drawable/arrow.xml new file mode 100644 index 0000000..94d2759 --- /dev/null +++ b/app/src/main/res/drawable/arrow.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 07d5da9..2811b10 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,170 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + #FFFFFF + \ No newline at end of file diff --git a/app/src/main/res/drawable/placeholder.png b/app/src/main/res/drawable/placeholder.png new file mode 100644 index 0000000..f7a22f4 Binary files /dev/null and b/app/src/main/res/drawable/placeholder.png differ diff --git a/app/src/main/res/drawable/storefront.xml b/app/src/main/res/drawable/storefront.xml new file mode 100644 index 0000000..7d77e87 --- /dev/null +++ b/app/src/main/res/drawable/storefront.xml @@ -0,0 +1,4 @@ + + + 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 eca70cf..c5c9e8f 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,5 +1,5 @@ - - + + \ 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 eca70cf..c5c9e8f 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/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..01ff274 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..4bc2796 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..27b10f5 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..8496b51 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d6..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..5cddaac Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..8ac8cf7 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 62b611d..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..2d68a59 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a307..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..2a2a020 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..963f81f Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a695..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..729c60e Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index 28d4b77..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..97d7ef7 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..22eeb2c Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9287f50..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..c66f081 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index aa7d642..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..2a8cee5 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..10dd647 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9126ae3..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 84f9815..e84d41a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,4 +4,10 @@ Wedstrijden Recepten Home + + Kaarten + Vriezer + + Er zijn geen vriezers + Vriezer aanpassen \ No newline at end of file diff --git a/build.gradle b/build.gradle index 21155bd..e9e9864 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,10 @@ buildscript { ext { - compose_version = '1.1.1' + compose_version = '1.3.3' } }// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.3.1' apply false - id 'com.android.library' version '7.3.1' apply false - id 'org.jetbrains.kotlin.android' version '1.6.10' apply false + id 'com.android.application' version '7.4.0' apply false + id 'com.android.library' version '7.4.0' apply false + id 'org.jetbrains.kotlin.android' version '1.7.20' apply false } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6a46c26..9269099 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon Oct 31 14:59:45 CET 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME