diff --git a/.woodpecker/android-build.yml b/.woodpecker/android-build.yml deleted file mode 100644 index 715f0ae..0000000 --- a/.woodpecker/android-build.yml +++ /dev/null @@ -1,16 +0,0 @@ -when: - - event: push - branch: [ dockerBuild, master ] - - event: tag - -steps: - - name: build - image: gradle:8.10.2-jdk17 - environment: - ANDROID_HOME: /sdk - commands: - - apt update && apt install -y sdkmanager openjdk-11-jdk - - sdkmanager "tools" && yes | sdkmanager --licenses - #More info - # https://developer.android.com/build/building-cmdline - - gradle assembleDebug diff --git a/.woodpecker/deb-build.yml b/.woodpecker/deb-build.yml deleted file mode 100644 index 654ffac..0000000 --- a/.woodpecker/deb-build.yml +++ /dev/null @@ -1,17 +0,0 @@ -when: - - event: push - branch: [ dockerBuild, master ] - - event: tag - -steps: - - name: build - image: gradle:8.10.2-jdk17 - environment: - ANDROID_HOME: /sdk - commands: - - apt update && apt install -y sdkmanager openjdk-11-jdk - - sdkmanager "tools" && yes | sdkmanager --licenses - - gradle buildDeb - -depends_on: - - android-build diff --git a/.woodpecker/release-packaging.yml b/.woodpecker/release-packaging.yml deleted file mode 100644 index 5c57ff1..0000000 --- a/.woodpecker/release-packaging.yml +++ /dev/null @@ -1,59 +0,0 @@ -when: - - event: tag - -steps: - - name: build-releases - image: gradle:8.10.2-jdk17 - environment: - ANDROID_HOME: /sdk - KEYSTORE_FILE: - from_secret: keystore_file - TEST_ENV: - from_secret: test_secret - KEYSTORE_PASSWORD: - from_secret: keystore_password - KEY_ALIAS: - from_secret: key_alias - KEY_PASSWORD: - from_secret: key_password - commands: - - apt update && apt install -y sdkmanager openjdk-11-jdk - - sdkmanager "tools" && yes | sdkmanager --licenses - - gradle clean - - echo "$TEST_ENV" - - echo "$KEYSTORE_FILE" | base64 -d > keystore.jks - # Package Release Deb currently fails on local - - gradle buildDeb - - gradle assembleRelease -Pandroid.injected.signing.store.file=$(pwd)/keystore.jks -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD -Pandroid.injected.signing.key.alias="$KEY_ALIAS" -Pandroid.injected.signing.key.password=$KEY_PASSWORD - - name: publish-packages - image: woodpeckerci/plugin-release - settings: - files: - - androidApp/build/outputs/apk/release/androidApp-release.apk - - desktopApp/build/compose/binaries/main/deb/bakers-menagerie_*.deb - checksum: - - androidApp/build/outputs/apk/release/androidApp-release.apk - - desktopApp/build/compose/binaries/main/deb/bakers-menagerie_*.deb - target: master - draft: true - overwrite: true - generate-release-notes: true - api_key: - from_secret: ci_access_token - - name: publish-container - image: woodpeckerci/plugin-kaniko - repo: git.blizzard.systems/Menagerie/Menagerie_Cookbook - username: - from_secret: ci_username - password: - from_secret: ci_access_token - registry: git.blizzard.systems - dockerfile: Dockerfile.web-serve - auto-tag: true - cache: true - -depends_on: - - android-build - - deb-build - - web-build - diff --git a/.woodpecker/web-build.yml b/.woodpecker/web-build.yml deleted file mode 100644 index 146303b..0000000 --- a/.woodpecker/web-build.yml +++ /dev/null @@ -1,10 +0,0 @@ -when: - - event: push - branch: [ dockerBuild, master ] - - event: tag - -steps: - - name: build - image: gradle:8.10.2-jdk21 - commands: - - gradle wasmJsBrowserDistribution diff --git a/Dockerfile.dpkg-build b/Dockerfile.dpkg-build deleted file mode 100644 index ea04bdb..0000000 --- a/Dockerfile.dpkg-build +++ /dev/null @@ -1,29 +0,0 @@ -# Original build used JVM 21.0.3 -# Gradle version 8.10.2 - -### For RPM Builds, need to implement Nebula RPM plugin; see https://plugins.gradle.org/plugin/com.netflix.nebula.rpm -FROM gradle:8.10.2-jdk21 AS cache -RUN apt update && apt install -y sdkmanager openjdk-11-jdk -RUN sdkmanager "tools" -RUN yes | sdkmanager --licenses -RUN mkdir -p /src -ENV GRADLE_USER_HOME=/home/gradle/cache_home -COPY gradle /src/gradle -COPY build.gradle.kts gradle.properties settings.gradle.kts /src/. -COPY androidApp/build.gradle.kts /src/androidApp/. -COPY automotiveApp/build.gradle.kts /src/automotiveApp/. -COPY desktopApp/build.gradle.kts /src/desktopApp/. -COPY shared/build.gradle.kts /src/shared/. -COPY tvApp/build.gradle.kts /src/tvApp/. -COPY webApp/build.gradle.kts /src/webApp/. -WORKDIR /src -RUN ls -lahR -RUN gradle -q javaToolchains -RUN gradle buildEnvironment --refresh-dependencies - -FROM gradle:8.10.2-jdk21 AS build -WORKDIR /src -COPY --from=cache /home/gradle/cache_home /home/gradle/. -COPY --chown=gradle:gradle . /src/. -RUN gradle clean -RUN gradle packageReleaseDeb diff --git a/Dockerfile.web-serve b/Dockerfile.web-serve deleted file mode 100644 index b48e48a..0000000 --- a/Dockerfile.web-serve +++ /dev/null @@ -1,27 +0,0 @@ -# Original build used JVM 21.0.3 -# Gradle version 8.10.2 -FROM gradle:8.10.2-jdk21 AS cache -RUN apt update && apt install -y sdkmanager openjdk-11-jdk -RUN sdkmanager "tools" -RUN yes | sdkmanager --licenses -RUN mkdir -p /src -ENV GRADLE_USER_HOME=/home/gradle/cache_home -COPY gradle /src/gradle -COPY build.gradle.kts gradle.properties settings.gradle.kts /src/. -COPY androidApp/build.gradle.kts /src/androidApp/. -COPY automotiveApp/build.gradle.kts /src/automotiveApp/. -COPY desktopApp/build.gradle.kts /src/desktopApp/. -COPY shared/build.gradle.kts /src/shared/. -COPY tvApp/build.gradle.kts /src/tvApp/. -COPY webApp/build.gradle.kts /src/webApp/. -WORKDIR /src -RUN gradle buildEnvironment --refresh-dependencies - -FROM gradle:8.10.2-jdk21 AS build -WORKDIR /src -COPY --from=cache /home/gradle/cache_home /home/gradle/. -COPY --chown=gradle:gradle . /src/. -RUN gradle clean && gradle wasmJsBrowserDistribution - -FROM nginx:latest -COPY --from=build /src/webApp/build/dist/wasmJs/productionExecutable /usr/share/nginx/html diff --git a/shared/src/commonMain/composeResources/drawable/cordon_bleu.jpg b/shared/src/commonMain/composeResources/drawable/cordon_bleu.jpg deleted file mode 100644 index ef0e24b..0000000 Binary files a/shared/src/commonMain/composeResources/drawable/cordon_bleu.jpg and /dev/null differ diff --git a/shared/src/commonMain/composeResources/drawable/opor_ayam.jpg b/shared/src/commonMain/composeResources/drawable/opor_ayam.jpg deleted file mode 100644 index 18dfe6b..0000000 Binary files a/shared/src/commonMain/composeResources/drawable/opor_ayam.jpg and /dev/null differ diff --git a/shared/src/commonMain/kotlin/App.kt b/shared/src/commonMain/kotlin/App.kt index ca1a142..37810a7 100644 --- a/shared/src/commonMain/kotlin/App.kt +++ b/shared/src/commonMain/kotlin/App.kt @@ -40,7 +40,6 @@ import view.BookShelf import view.FilterCard import view.HomeScreen import view.InputFieldState -import view.MainDropDown import view.getFilteredRecipeList import view.getRecipeList @@ -51,12 +50,6 @@ enum class Theme { Dark } -enum class SortBy { - Name, - Time, - Ingredients, -} - enum class RecipeAppScreen { List, Details, } @@ -71,7 +64,6 @@ fun App( val navController = rememberNavController() var theme by remember { mutableStateOf(Theme.Auto) } - var sortBy by remember { mutableStateOf(SortBy.Name) } val onThemeToggle = { theme = when (theme) { @@ -80,15 +72,6 @@ fun App( Theme.Dark -> Theme.Auto } } - - val onSortToggle = { - sortBy = when (sortBy) { - SortBy.Name -> SortBy.Time - SortBy.Time -> SortBy.Ingredients - SortBy.Ingredients -> SortBy.Name - } - } - val isDarkTheme: Boolean? = when (theme) { Theme.Dark -> true Theme.Light -> false @@ -104,7 +87,6 @@ fun App( val recipeTags by remember { mutableStateOf(mutableMapOf()) } var book by remember { mutableStateOf("") } var returnAnyMatch by remember { mutableStateOf(false) } - var descending by remember { mutableStateOf(false) } for (recipe in getRecipeList()) { for (tag in recipe.tags) { @@ -126,14 +108,7 @@ fun App( } } - val filteredItems = getFilteredRecipeList( - tags = tags, - search = search, - lockTag = book, - sortBy = sortBy, - returnAny = returnAnyMatch, - reverse = descending, - ) + val filteredItems = getFilteredRecipeList(tags, search, book, returnAnyMatch) val recipeCount = getRecipeList().size var currentRecipe = getRecipeList().first() @@ -163,16 +138,12 @@ fun App( Spacer(modifier = Modifier.weight(1f)) MainDropDown( - isLarge = isLarge, - andOr = returnAnyMatch, - theme = theme, - sortBy = sortBy, - descending = descending, + isLarge, + returnAnyMatch, + theme, onClose = onClose, onBack = {navController.navigateUp()}, onTag = {returnAnyMatch = !returnAnyMatch}, - onSortBy = { onSortToggle.invoke() }, - onDesc = {descending = !descending}, onTheme = { onThemeToggle.invoke() }, onRandom = { currentRecipe = filteredItems.random() @@ -266,4 +237,56 @@ fun App( } } } -} \ No newline at end of file +} + +@Composable +fun MainDropDown( + isLarge: Boolean, + andOr: Boolean, + theme: Theme, + onTag: () -> Unit, + onTheme: () -> Unit, + onRandom: () -> Unit, + onBack: () -> Unit, + onClose: () -> Unit, +) { + var expanded by remember { mutableStateOf(false) } + + Box( + modifier = Modifier + .padding(16.dp) + ) { + IconButton(onClick = { expanded = !expanded }) { + Icon(imageVector = Icons.Default.MoreVert, contentDescription = "More Options") + } + DropdownMenu( + expanded = expanded, + onDismissRequest = { expanded = false } + ) { + DropdownMenuItem( + text = { Text(theme.name) }, + onClick = onTheme + ) + DropdownMenuItem( + text = {Text(if(andOr) "OR" else "AND")}, + onClick = onTag + ) + DropdownMenuItem( + text = { Text("Random Filtered Recipe") }, + onClick = onRandom + ) + if (isLarge) { + + DropdownMenuItem( + text = {Text("Go Back")}, + onClick = onBack + ) + + DropdownMenuItem( + text = { Text("Close app") }, + onClick = onClose + ) + } + } + } +} diff --git a/shared/src/commonMain/kotlin/details/InstructionItem.kt b/shared/src/commonMain/kotlin/details/InstructionItem.kt index 4373e65..6f1e762 100644 --- a/shared/src/commonMain/kotlin/details/InstructionItem.kt +++ b/shared/src/commonMain/kotlin/details/InstructionItem.kt @@ -31,11 +31,7 @@ import androidx.compose.ui.unit.sp import model.Recipe @Composable -fun InstructionItem( - recipe: Recipe, - index: Int, - count: Int, - slider: Float) { +fun InstructionItem(recipe: Recipe, index: Int, slider: Float) { Box(modifier = Modifier.padding(start = 16.dp, end = 16.dp, top = 8.dp)) { Box( modifier = Modifier @@ -74,7 +70,7 @@ fun InstructionItem( contentAlignment = Alignment.Center ) { Text( - text = "$count", + text = "${index + 1}", style = MaterialTheme.typography.displayMedium.copy( lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, diff --git a/shared/src/commonMain/kotlin/details/RecipeDetailsLarge.kt b/shared/src/commonMain/kotlin/details/RecipeDetailsLarge.kt index 42b27e4..671c96f 100644 --- a/shared/src/commonMain/kotlin/details/RecipeDetailsLarge.kt +++ b/shared/src/commonMain/kotlin/details/RecipeDetailsLarge.kt @@ -49,7 +49,6 @@ import org.jetbrains.compose.resources.painterResource import sensor.Listener import sensor.SensorData import sensor.SensorManager -import view.RecipeScaleSlider @OptIn(ExperimentalSharedTransitionApi::class) @@ -111,9 +110,9 @@ fun RecipeDetailsLarge( modifier = Modifier.padding(top = 64.dp) ) { recipeHeader(recipe, true, slider) - RecipeScaleSlider( + SliderMinimalExample( sliderPosition = slider, - steps = if(reduce) 2 else 5, + steps = 2, rangeEnd = if(reduce) 1f else 4f, rangeStart = if(reduce) .25f else 1f, reduce = reduce, @@ -200,3 +199,30 @@ fun BackButton(goBack: () -> Unit) { } +@Composable +fun SliderMinimalExample( + sliderPosition: Float, + steps: Int, + rangeStart: Float, + rangeEnd: Float, + reduce: Boolean, + onClick: () -> Unit, + onChange: (Float) -> Unit) { + + Column { + Slider( + value = sliderPosition, + steps = steps, + valueRange = rangeStart..rangeEnd, + onValueChange = { onChange(it) }, + modifier = Modifier.padding(start = 16.dp, end = 16.dp) + ) + Row { + Text(text = sliderPosition.toString().plus("x Servings")) + Spacer(modifier = Modifier.weight(1f)) + Button(onClick = onClick) { + Text(text = if (reduce) "Reducing" else "Increasing") + } + } + } +} \ No newline at end of file diff --git a/shared/src/commonMain/kotlin/details/RecipeDetailsSmall.kt b/shared/src/commonMain/kotlin/details/RecipeDetailsSmall.kt index 9147c9d..55ae59f 100644 --- a/shared/src/commonMain/kotlin/details/RecipeDetailsSmall.kt +++ b/shared/src/commonMain/kotlin/details/RecipeDetailsSmall.kt @@ -1,33 +1,42 @@ import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack -import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Button import androidx.compose.material3.Text +import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.rotate import androidx.compose.ui.draw.shadow import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color @@ -36,16 +45,17 @@ import androidx.compose.ui.input.nestedscroll.NestedScrollSource import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.unit.Velocity import androidx.compose.ui.unit.dp +import details.StepsAndDetails import details.ingredients import details.ingredientsHeader import details.recipeHeader import details.steps import details.stepsHeader import model.Recipe +import org.jetbrains.compose.resources.painterResource import sensor.Listener import sensor.SensorData import sensor.SensorManager -import view.RecipeScaleSlider import kotlin.math.PI @@ -83,6 +93,7 @@ fun RecipeDetailsSmall( consumed: Offset, available: Offset, source: NestedScrollSource ): Offset { val delta = available.y + imageRotation.value += ((delta * PI / 180) * 10).toInt() return super.onPostScroll(consumed, available, source) } @@ -134,9 +145,9 @@ fun RecipeDetailsSmall( } item { - RecipeScaleSlider( + SliderMinimalExample( sliderPosition = slider, - steps = if(reduce) 2 else 5, + steps = 2, reduce = reduce, onClick = { reduce = !reduce diff --git a/shared/src/commonMain/kotlin/details/StepsAndDetails.kt b/shared/src/commonMain/kotlin/details/StepsAndDetails.kt index 9052f75..024d602 100644 --- a/shared/src/commonMain/kotlin/details/StepsAndDetails.kt +++ b/shared/src/commonMain/kotlin/details/StepsAndDetails.kt @@ -161,7 +161,6 @@ internal fun LazyListScope.steps( slider: Float ) { - var count = 1 itemsIndexed(recipe.instructions) { index, value -> AnimateInEffect( recipe = recipe, @@ -180,9 +179,7 @@ internal fun LazyListScope.steps( ) } }else { - InstructionItem(recipe, index, count, slider) - count++ - } + InstructionItem(recipe, index, slider)} }) } } diff --git a/shared/src/commonMain/kotlin/model/Asia/KoreanData.kt b/shared/src/commonMain/kotlin/model/Asia/KoreanData.kt index ea339cb..7874795 100644 --- a/shared/src/commonMain/kotlin/model/Asia/KoreanData.kt +++ b/shared/src/commonMain/kotlin/model/Asia/KoreanData.kt @@ -117,7 +117,7 @@ val koreanList = listOf( "HEADER-Fire Sauce", "3 Tbsp Gochugaru", - "2 Jalapenos", + "2 Alapenos", ".5 Cup Korean Pear", ".25 White Onion", "3 Tbsp Garlic, minced", diff --git a/shared/src/commonMain/kotlin/model/Asia/SEAData.kt b/shared/src/commonMain/kotlin/model/Asia/SEAData.kt index 71d9313..2b03222 100644 --- a/shared/src/commonMain/kotlin/model/Asia/SEAData.kt +++ b/shared/src/commonMain/kotlin/model/Asia/SEAData.kt @@ -4,7 +4,6 @@ import model.Recipe import model.TagType import recipeappkmp.shared.generated.resources.Res import recipeappkmp.shared.generated.resources._10_strawberries -import recipeappkmp.shared.generated.resources.opor_ayam import kotlin.time.Duration val seaList = listOf( @@ -35,66 +34,5 @@ val seaList = listOf( ), servings = "About 1 Cup", image = Res.drawable._10_strawberries - ), - - Recipe( - title = "Opor Ayam", - description = "Chicken with carmelised Onion in a rich coconut gravy.", - prepTime = Duration.parse("8h"), - cookTime = Duration.parse("40m"), - servings = "Serves 4", - ingredients = listOf( - - "HEADER-Marinade", - "1.5kg Protein of Choice", - "2 Cloves Garlic", - "8 Shallots", - "1 cm piece Turmeric Root", - ".5 Tsp Black Pepper", - "2 Tsp Coriander", - "4 Candlenuts", - ".5 Tsp Fennel", - ".5 Tsp Cumin", - "1.5 cm piece Ginger Root", - "3 cm piece Galangal", - - "HEADER-Gravy", - "1 Stalk Lemon Grass", - "1 Cinnamon Stick", - "1 Star Anise", - "2 Daun Salam [Bay Leaves]", - "100 ml Thick Coconut Milk", - "300 ml Thin Coconut Milk", - "1 Tbsp Tamarind Juice", - "3 Lime Leaves", - - "HEADER-Finishing", - "3 Shallots", - "Salt", - "1 Tsp Brown Sugar", - ), - instructions = listOf( - - "HEADER-Marinade", - "Grind all of the Marinade ingredients with [1 Tbsp] of oil into a paste.", - "Marinate Protein for several hours, up to overnight.", - - "HEADER-Curry", - "Fry Shallots [3] in a wok until brown and crispy. Drain from Oil.", - "Add Protein to Wok and Fry until Firm.", - "Add the Lemon Grass [1 Stalk], Cinnamon Stick [1 Stick], Star Anise [1], Daun Salam [2], and Thin Coconut Milk [100 ml] and Simmer for 15-20 Minutes", - "Add Tamarind Juice [1 Tbsp] and Thick Coconut Milk [300 ml]. Cook another 10-15 minutes. Halfway through, add Salt, Brown Sugar [1 Tsp], and Lime Leaves [3]", - "Serve Garnished with Crispy Shallots", - ), - tags = mapOf( - "Indonesian" to TagType.CUISINE, - "SEA" to TagType.CUISINE, - "Savory" to TagType.FLAVOUR, - "Creamy" to TagType.FLAVOUR, - "Curry" to TagType.TECHNIQUE, - "Vegan" to TagType.CUISINE, - "Entree" to TagType.COURSE, - ), - image = Res.drawable.opor_ayam, ) ) \ No newline at end of file diff --git a/shared/src/commonMain/kotlin/model/Europe/FrenchData.kt b/shared/src/commonMain/kotlin/model/Europe/FrenchData.kt deleted file mode 100644 index ce04657..0000000 --- a/shared/src/commonMain/kotlin/model/Europe/FrenchData.kt +++ /dev/null @@ -1,42 +0,0 @@ -package model.Europe - -import model.Recipe -import model.TagType -import recipeappkmp.shared.generated.resources.Res -import recipeappkmp.shared.generated.resources.cordon_bleu -import kotlin.time.Duration - -val frenchList = listOf( - Recipe( - title = "Chicken Cordon Bleu", - description = "Chicken Wrapped with Ham and Cheese, Breaded, and Baked", - prepTime = Duration.parse("20m"), - cookTime = Duration.parse("40m"), - servings = "4 Large Servings", - ingredients = listOf( - "4 Chicken Breasts", - ".25 Tsp Salt", - ".125 Tsp Pepper", - "6 Slices Swiss Cheese", - "4 Slices Cooked Ham", - ".5 Cup Bread Crumbs", - ), - instructions = listOf( - "Preheat oven to 350F.", - "Pound Chicken to 1/4 inch. Season with Salt and Pepper.", - "Place 1 Piece of Swiss and 1 Slice of Ham on each Breast.", - "Wrap, securing with Toothpicks.", - "Coat with Breadcrumbs, then place each Wrap onto a baking dish.", - "Bake for 30-35 minutes, then top each Wrap with 1/2 a slice of Swiss Cheese, then return to the oven for another 5 minutes.", - "Remove Toothpicks and Serve.", - - ), - tags = mapOf( - "French" to TagType.CUISINE, - "Carnivorous" to TagType.CUISINE, - "Entree" to TagType.COURSE, - "Baked" to TagType.TECHNIQUE, - ), - image = Res.drawable.cordon_bleu, - ) -) \ No newline at end of file diff --git a/shared/src/commonMain/kotlin/model/Globe.kt b/shared/src/commonMain/kotlin/model/Globe.kt index 6d7c055..83f248a 100644 --- a/shared/src/commonMain/kotlin/model/Globe.kt +++ b/shared/src/commonMain/kotlin/model/Globe.kt @@ -8,7 +8,6 @@ import model.Asia.indianList import model.Asia.japaneseList import model.Asia.koreanList import model.Asia.seaList -import model.Europe.frenchList import model.Europe.greekList import model.Europe.irishList import model.Europe.italianList @@ -28,7 +27,6 @@ object Globe { private object EuropeRecipes { - private val frenchRecipes = frenchList private val irishRecipes = irishList private val italianRecipes = italianList private val greekRecipes = greekList @@ -36,8 +34,7 @@ private object EuropeRecipes { fun getAllRecipes() : List { return italianRecipes + greekRecipes + - irishRecipes + - frenchRecipes + irishRecipes } } diff --git a/shared/src/commonMain/kotlin/view/Bookshelf.kt b/shared/src/commonMain/kotlin/view/Bookshelf.kt index a676269..54645cf 100644 --- a/shared/src/commonMain/kotlin/view/Bookshelf.kt +++ b/shared/src/commonMain/kotlin/view/Bookshelf.kt @@ -88,7 +88,7 @@ fun BookShelf( LazyVerticalGrid( columns = GridCells.Fixed(if (isLarge) 6 else 2), state = listState, - modifier = Modifier.width(if (isLarge) 800.dp else 350.dp) + modifier = Modifier.width(if (isLarge) 600.dp else 350.dp) ) { items(list.size) { item -> val tag = list[item] diff --git a/shared/src/commonMain/kotlin/view/FilterCard.kt b/shared/src/commonMain/kotlin/view/FilterCard.kt index 7abc74b..c3e5af2 100644 --- a/shared/src/commonMain/kotlin/view/FilterCard.kt +++ b/shared/src/commonMain/kotlin/view/FilterCard.kt @@ -37,7 +37,9 @@ fun FilterCard( Dialog( onDismissRequest = { + onDismissRequest(activeTags) + }, ) { Card { @@ -53,7 +55,7 @@ fun FilterCard( } } LazyVerticalGrid( - columns = GridCells.Adaptive(minSize = 110.dp) + columns = GridCells.Adaptive(minSize = 106.dp) ) { items(tags) { tag -> val active = activeTags.contains(tag) diff --git a/shared/src/commonMain/kotlin/view/GetRecipe.kt b/shared/src/commonMain/kotlin/view/GetRecipe.kt index 371e874..addd4ac 100644 --- a/shared/src/commonMain/kotlin/view/GetRecipe.kt +++ b/shared/src/commonMain/kotlin/view/GetRecipe.kt @@ -1,6 +1,5 @@ package view -import SortBy import androidx.compose.runtime.Composable import model.Globe import model.Recipe @@ -14,9 +13,7 @@ fun getFilteredRecipeList( tags : List, search : String, lockTag : String, - sortBy: SortBy, returnAny: Boolean, - reverse: Boolean, ) : List { val items = getRecipeList() @@ -38,14 +35,7 @@ fun getFilteredRecipeList( recipes = recipes.filter { it.tags.contains(lockTag)} } - recipes = when (sortBy){ - SortBy.Name -> recipes.sortedBy { recipe -> recipe.title } - SortBy.Time -> recipes.sortedBy { recipe -> (recipe.prepTime + recipe.cookTime)} - SortBy.Ingredients -> recipes.sortedBy { recipe -> recipe.ingredients.count()} - } - - if(reverse) - recipes = recipes.reversed() + recipes = recipes.sortedBy { it.title } return recipes } diff --git a/shared/src/commonMain/kotlin/view/MainMenuDropdown.kt b/shared/src/commonMain/kotlin/view/MainMenuDropdown.kt deleted file mode 100644 index d838d29..0000000 --- a/shared/src/commonMain/kotlin/view/MainMenuDropdown.kt +++ /dev/null @@ -1,93 +0,0 @@ -package view - -import SortBy -import Theme -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material3.DropdownMenu -import androidx.compose.material3.DropdownMenuItem -import androidx.compose.material3.HorizontalDivider -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -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.Modifier -import androidx.compose.ui.unit.dp - -@Composable -fun MainDropDown( - isLarge: Boolean, - andOr: Boolean, - descending: Boolean, - theme: Theme, - sortBy: SortBy, - onTag: () -> Unit, - onSortBy: () -> Unit, - onDesc: () -> Unit, - onTheme: () -> Unit, - onRandom: () -> Unit, - onBack: () -> Unit, - onClose: () -> Unit, -) { - var expanded by remember { mutableStateOf(false) } - - Box( - modifier = Modifier - .padding(16.dp) - ) { - IconButton(onClick = { expanded = !expanded }) { - Icon(imageVector = Icons.Default.MoreVert, contentDescription = "More Options") - } - DropdownMenu( - expanded = expanded, - onDismissRequest = { expanded = false } - ) { - DropdownMenuItem( - text = { Text(theme.name) }, - onClick = onTheme - ) - - HorizontalDivider() - - DropdownMenuItem( - text = { Text("Filter Style: ".plus(if(andOr) "OR" else "AND")) }, - onClick = onTag - ) - DropdownMenuItem( - text = { Text(text = "Sort By: ".plus(sortBy.name)) }, - onClick = onSortBy - ) - DropdownMenuItem( - text = { Text(text = "Sort Order: ".plus(if(descending)"DESC" else "ASC")) }, - onClick = onDesc - ) - - HorizontalDivider() - - DropdownMenuItem( - text = { Text("Random Filtered Recipe") }, - onClick = onRandom - ) - if (isLarge) { - - HorizontalDivider() - - DropdownMenuItem( - text = { Text("Go Back") }, - onClick = onBack - ) - - DropdownMenuItem( - text = { Text("Close app") }, - onClick = onClose - ) - } - } - } -} \ No newline at end of file diff --git a/shared/src/commonMain/kotlin/view/RecipeScaleSlider.kt b/shared/src/commonMain/kotlin/view/RecipeScaleSlider.kt deleted file mode 100644 index 0753879..0000000 --- a/shared/src/commonMain/kotlin/view/RecipeScaleSlider.kt +++ /dev/null @@ -1,40 +0,0 @@ -package view - -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Button -import androidx.compose.material3.Slider -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp - -@Composable -fun RecipeScaleSlider( - sliderPosition: Float, - steps: Int, - rangeStart: Float, - rangeEnd: Float, - reduce: Boolean, - onClick: () -> Unit, - onChange: (Float) -> Unit) { - - Column { - Slider( - value = sliderPosition, - steps = steps, - valueRange = rangeStart..rangeEnd, - onValueChange = { onChange(it) }, - modifier = Modifier.padding(start = 16.dp, end = 16.dp) - ) - Row { - Text(text = sliderPosition.toString().plus("x Servings")) - Spacer(modifier = Modifier.weight(1f)) - Button(onClick = onClick) { - Text(text = if (reduce) "Reducing" else "Increasing") - } - } - } -} \ No newline at end of file