Skip to content

Commit

Permalink
Merge pull request #54 from Tiebe/bugfixes
Browse files Browse the repository at this point in the history
fixes
  • Loading branch information
Tiebe authored May 23, 2023
2 parents 5cc696b + e52eff0 commit 7da8523
Show file tree
Hide file tree
Showing 90 changed files with 1,372 additions and 604 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,18 @@ package nl.tiebe.otarium.androidApp

import android.content.Context
import android.content.res.Configuration
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.view.WindowManager
import androidx.activity.compose.setContent
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.systemBars
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.core.view.WindowCompat
import com.arkivanov.decompose.defaultComponentContext
import nl.tiebe.otarium.RootView
import nl.tiebe.otarium.utils.refreshGradesBackground
Expand All @@ -30,10 +34,6 @@ class MainActivity : AppCompatActivity() {
Android.requestPermissionLauncher = requestPermissionLauncher
Android.window = window

// has to be set in code or in theme
window.decorView.setBackgroundColor(Color.WHITE)
window.statusBarColor = Color.parseColor("#0F86E4")

reloadTokensBackground()
refreshGradesBackground()

Expand All @@ -53,9 +53,16 @@ class MainActivity : AppCompatActivity() {
}
else -> null
}
WindowCompat.setDecorFitsSystemWindows(window, false)


window.setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
)

setContent {
RootView(rootComponentContext, colorScheme)
RootView(rootComponentContext, colorScheme, WindowInsets.Companion.systemBars.asPaddingValues())
}
}

Expand Down
16 changes: 8 additions & 8 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,19 @@ buildscript {

allprojects {
repositories {
google()
mavenCentral()
mavenLocal()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
maven("https://jitpack.io")

/* maven {
maven {
url = uri("https://maven.pkg.github.com/Tiebe/MagisterAPIKt")
credentials {
username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
}
}*/
}

google()
mavenCentral()
mavenLocal()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
maven("https://jitpack.io")
}
}

Expand Down
4 changes: 3 additions & 1 deletion buildSrc/src/main/kotlin/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ object Version {
const val appVersion = "3.3.0-alpha01"
const val appVersionCode = 32

const val magister = "1.1.8"
const val magister = "1.1.10-alpha02"

const val kotlin = "1.8.0"
const val gradle = "7.4.1"
Expand All @@ -24,6 +24,7 @@ object Version {
const val guava_coroutines = "1.7.0-RC"

const val complete_kotlin = "1.1.0"
const val colormath = "3.2.0"
}

object Compose {
Expand Down Expand Up @@ -98,6 +99,7 @@ const val admob = "com.google.android.gms:play-services-ads:${Version.admob}"
const val magisterAPI = "dev.tiebe:magisterapi:${Version.magister}"

const val completeKotlin = "com.louiscad.complete-kotlin"
const val colorMath = "com.github.ajalt.colormath:colormath:${Version.colormath}"

object Guava {
const val core = "com.google.guava:guava:${Version.guava}"
Expand Down
1 change: 1 addition & 0 deletions icons/content_save.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions icons/palette.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion shared/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ kotlin {
implementation(Decompose.compose)

implementation(magisterAPI)
implementation("com.github.ajalt.colormath:colormath:3.2.0")
implementation(colorMath)
}
}
val androidMain by getting {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package nl.tiebe.otarium

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.ColorScheme
import androidx.compose.runtime.Composable
import com.arkivanov.decompose.DefaultComponentContext

@Composable
fun RootView(rootComponentContext: DefaultComponentContext, colorScheme: ColorScheme?) {
fun RootView(rootComponentContext: DefaultComponentContext, colorScheme: ColorScheme?, padding: PaddingValues) {
ProvideComponentContext(rootComponentContext) {
setup()

Content(componentContext = rootComponentContext, colorScheme = colorScheme)
Content(componentContext = rootComponentContext, colorScheme = colorScheme, padding = padding)
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,9 @@
package nl.tiebe.otarium.ui.theme

import android.os.Build
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalContext
import nl.tiebe.otarium.darkModeState
import nl.tiebe.otarium.utils.ui.Android

actual fun setWindowTheme(color: Color) {
Android.window.statusBarColor = color.toArgb()

}
18 changes: 18 additions & 0 deletions shared/src/commonMain/kotlin/nl/tiebe/otarium/Data.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import nl.tiebe.otarium.magister.MagisterAccount
import nl.tiebe.otarium.magister.ManualGrade
import nl.tiebe.otarium.ui.theme.CustomTheme
import nl.tiebe.otarium.ui.theme.defaultDarkTheme
import nl.tiebe.otarium.ui.theme.defaultLightTheme
Expand Down Expand Up @@ -56,4 +57,21 @@ object Data {
get() = settings.getBoolean("dynamic_theme", false)
set(value) = settings.putBoolean("dynamic_theme", value)

var showCancelledLessons: Boolean
get() = settings.getBoolean("show_cancelled_lessons", false)
set(value) = settings.putBoolean("show_cancelled_lessons", value)

var manualGrades: List<ManualGrade>
get() = settings.getString("manual_grades", "[]").let {
Json.decodeFromString(it) }
set(value) = settings.putString("manual_grades", Json.encodeToString(value))

var markGrades: Boolean
get() = settings.getBoolean("mark_grades", false)
set(value) = settings.putBoolean("mark_grades", value)

var passingGrade: Float
get() = settings.getFloat("passing_grade", 5.5f)
set(value) = settings.putFloat("passing_grade", value)

}
24 changes: 7 additions & 17 deletions shared/src/commonMain/kotlin/nl/tiebe/otarium/Main.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package nl.tiebe.otarium

import androidx.compose.foundation.background
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
Expand All @@ -21,11 +22,7 @@ import nl.tiebe.otarium.utils.versions.runVersionCheck

val settings: Settings = Settings()

lateinit var darkModeState: MutableState<Boolean>
val safeAreaState = mutableStateOf(PaddingValues())

fun setup() {

val oldVersion = settings.getInt("version", 1000)

runVersionCheck(oldVersion)
Expand All @@ -35,25 +32,18 @@ fun setup() {
}

@Composable
internal fun Content(componentContext: ComponentContext, colorScheme: ColorScheme? = null) {
Content(component = DefaultRootComponent(componentContext), colorScheme = colorScheme)
internal fun Content(componentContext: ComponentContext, colorScheme: ColorScheme? = null, padding: PaddingValues) {
Content(component = DefaultRootComponent(componentContext), colorScheme = colorScheme, padding = padding)
}

@Composable
internal fun Content(component: RootComponent, colorScheme: ColorScheme? = null) {
darkModeState = mutableStateOf(isSystemInDarkTheme())

internal fun Content(component: RootComponent, colorScheme: ColorScheme? = null, padding: PaddingValues) {
OtariumTheme(colorScheme) {
Box(
modifier = Modifier.fillMaxSize()
.background(MaterialTheme.colorScheme.primary)
) {}
Box(
modifier = Modifier.fillMaxHeight(0.5f).fillMaxWidth()
.background(MaterialTheme.colorScheme.background)
) {}
Box(modifier = Modifier.padding(safeAreaState.value)) {

Box() {
val currentScreen by component.currentScreen.subscribeAsState()

Surface(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ suspend fun getMagisterAgenda(
tenantUrl: String,
accessToken: String,
start: LocalDate,
end: LocalDate
end: LocalDate,
status: AgendaItem.Companion.Status = AgendaItem.Companion.Status.NONE
): List<AgendaItem> {
return getAgenda(
Url(tenantUrl),
accessToken,
accountId,
"${start.year}-${start.monthNumber}-${start.dayOfMonth}",
"${end.year}-${end.monthNumber}-${end.dayOfMonth}"
"${end.year}-${end.monthNumber}-${end.dayOfMonth}",
status = status
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,12 @@ suspend fun MagisterAccount.refreshGrades(): List<GradeWithGradeInfo> {
data class GradeWithGradeInfo(
val grade: Grade,
val gradeInfo: GradeInfo
)

@Serializable
data class ManualGrade(
val name: String,
val grade: String,
val weight: Float,
val subjectId: Int,
)
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ import com.arkivanov.decompose.router.slot.SlotNavigation
import com.arkivanov.decompose.router.slot.activate
import com.arkivanov.decompose.router.slot.childSlot
import com.arkivanov.decompose.value.Value
import nl.tiebe.otarium.store.component.home.children.StoreTimetableComponent
import nl.tiebe.otarium.store.component.home.children.grades.StoreGradeComponent
import nl.tiebe.otarium.store.component.home.children.settings.StoreSettingsComponent
import nl.tiebe.otarium.ui.home.HomeComponent
import nl.tiebe.otarium.ui.home.MenuItemComponent
import nl.tiebe.otarium.ui.home.debug.DefaultDebugComponent
import nl.tiebe.otarium.ui.home.elo.DefaultELOComponent
import nl.tiebe.otarium.ui.home.messages.DefaultMessagesComponent
import nl.tiebe.otarium.ui.home.timetable.DefaultTimetableRootComponent
import nl.tiebe.otarium.ui.root.RootComponent

class StoreHomeComponent(componentContext: ComponentContext, override val navigateRootComponent: (RootComponent.ChildScreen) -> Unit
Expand Down Expand Up @@ -43,11 +43,11 @@ class StoreHomeComponent(componentContext: ComponentContext, override val naviga
}

private fun timetableComponent(componentContext: ComponentContext) =
StoreTimetableComponent(
DefaultTimetableRootComponent(
componentContext = componentContext,
navigate = ::navigate
)


private fun gradesComponent(componentContext: ComponentContext) =
StoreGradeComponent(
componentContext = componentContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,27 @@ package nl.tiebe.otarium.store.component.home.children

import com.arkivanov.decompose.ComponentContext
import com.arkivanov.decompose.value.MutableValue
import com.arkivanov.essenty.backhandler.BackCallback
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.datetime.*
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import nl.tiebe.otarium.MR
import nl.tiebe.otarium.magister.AgendaItemWithAbsence
import nl.tiebe.otarium.ui.home.HomeComponent
import nl.tiebe.otarium.ui.home.timetable.TimetableComponent
import nl.tiebe.otarium.ui.home.timetable.days
import nl.tiebe.otarium.ui.home.timetable.main.TimetableComponent
import nl.tiebe.otarium.ui.home.timetable.main.days
import nl.tiebe.otarium.ui.root.componentCoroutineScope
import nl.tiebe.otarium.utils.ui.getText
import kotlin.math.floor

class StoreTimetableComponent(
componentContext: ComponentContext,
navigate: (menuItem: HomeComponent.MenuItem) -> Unit
componentContext: ComponentContext
): TimetableComponent, ComponentContext by componentContext {
override val now: MutableValue<LocalDateTime> =
MutableValue(Clock.System.now().toLocalDateTime(TimeZone.of("Europe/Amsterdam")))
override val currentPage = MutableValue(500 + now.value.date.dayOfWeek.ordinal)

override val timetable: MutableValue<List<AgendaItemWithAbsence>> = MutableValue(emptyList())
override val openedTimetableItem: MutableValue<Pair<Boolean, AgendaItemWithAbsence?>> = MutableValue(false to null)
override val selectedWeek =
MutableValue(floor((currentPage.value - (amountOfDays / 2).toFloat()) / days.size).toInt())

Expand All @@ -43,13 +39,15 @@ class StoreTimetableComponent(
}
}

override val backCallbackOpenItem: BackCallback = BackCallback(false) {
closeItemPopup()
override fun openTimeTableItem(item: AgendaItemWithAbsence) {
TODO("Not yet implemented")
}

init {
backHandler.register(backCallbackOpenItem)
override fun closeItemPopup() {
TODO("Not yet implemented")
}

init {
selectedWeek.subscribe {
refreshSelectedWeek()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,33 @@ import dev.tiebe.magisterapi.response.general.year.grades.Subject
import kotlinx.coroutines.launch
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import nl.tiebe.otarium.Data
import nl.tiebe.otarium.MR
import nl.tiebe.otarium.magister.ManualGrade
import nl.tiebe.otarium.ui.home.grades.calculation.GradeCalculationChildComponent
import nl.tiebe.otarium.ui.root.componentCoroutineScope
import nl.tiebe.otarium.utils.ui.getText

class StoreGradeCalculationChildComponent(componentContext: ComponentContext) : GradeCalculationChildComponent, ComponentContext by componentContext {
class StoreGradeCalculationChildComponent(componentContext: ComponentContext
) : GradeCalculationChildComponent, ComponentContext by componentContext {
override val openedSubject: MutableValue<Pair<Boolean, Subject?>> = MutableValue(false to null)
override val backCallbackOpenItem = BackCallback(false) {
closeSubject()
}

override val manualGradesList: MutableValue<MutableList<ManualGrade>> = MutableValue(Data.manualGrades.toMutableList())
override val addManualGradePopupOpen: MutableValue<Boolean> = MutableValue(false)

override fun addManualGrade(manualGrade: ManualGrade) {
manualGradesList.value.add(manualGrade)
Data.manualGrades = manualGradesList.value
}

override fun removeManualGrade(manualGrade: ManualGrade) {
manualGradesList.value.remove(manualGrade)
Data.manualGrades = manualGradesList.value
}

override val state: MutableValue<GradeCalculationChildComponent.State> =
MutableValue(GradeCalculationChildComponent.State.Loading)
private val scope = componentCoroutineScope()
Expand Down
Loading

0 comments on commit 7da8523

Please sign in to comment.