Skip to content

Commit

Permalink
Project Structure Change - Added DI,ViewModel,Kotlin 2.0,Compose 1.6.…
Browse files Browse the repository at this point in the history
…10 and moved to KMP structure.
  • Loading branch information
iammohdzaki committed Jun 29, 2024
1 parent e35d4aa commit 6605e44
Show file tree
Hide file tree
Showing 50 changed files with 826 additions and 656 deletions.
8 changes: 8 additions & 0 deletions .idea/artifacts/composeApp_desktop_1_0_SNAPSHOT.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions .idea/runConfigurations/Run_All_Test_Cases.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

63 changes: 6 additions & 57 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,58 +1,7 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat

plugins {
kotlin("multiplatform")
id("org.jetbrains.compose")
}

group = "com.AabToApk"
version = "1.0-SNAPSHOT"

repositories {
google()
mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}

kotlin {
jvm {
jvmToolchain(11)
withJava()
}
sourceSets {
val jvmMain by getting {
dependencies {
implementation(compose.desktop.currentOs)
api("com.esotericsoftware:kryo:4.0.1")
}
}
val jvmTest by getting {
dependencies {
implementation(compose.desktop.uiTestJUnit4)
implementation(compose.desktop.currentOs)
}
}
val resourcesDir = "src/common/resources"
}
}

compose.desktop {
application {
mainClass = "MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "AabToApk"
packageVersion = "1.0.4"
val iconsRoot = project.file("desktop-icons")
macOS{
iconFile.set(iconsRoot.resolve("launcher.icns"))
}
windows{
iconFile.set(iconsRoot.resolve("launcher.ico"))
}
linux{
iconFile.set(iconsRoot.resolve("launcher.png"))
}
}
}
}
// this is necessary to avoid the plugins to be loaded multiple times
// in each subproject's classloader
alias(libs.plugins.jetbrainsCompose) apply false
alias(libs.plugins.compose.compiler) apply false
alias(libs.plugins.kotlinMultiplatform) apply false
}
65 changes: 65 additions & 0 deletions composeApp/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.jetbrainsCompose)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.nativecoroutines)
}

group = "com.AabToApk"
version = "1.0-SNAPSHOT"

repositories {
google()
mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}

kotlin {
jvm("desktop")
sourceSets {
all {
languageSettings.optIn("kotlinx.cinterop.ExperimentalForeignApi")
}
val desktopMain by getting
commonMain.dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
}
desktopMain.dependencies {
implementation(compose.desktop.currentOs)
api(libs.kryo)
implementation(libs.voyager.navigator)
implementation(libs.koin.core)
implementation(libs.kmmViewModel)
implementation(libs.koin.compose)
implementation(compose.desktop.uiTestJUnit4)
}
}
}

compose.desktop {
application {
mainClass = "MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "AabToApk"
packageVersion = "1.0.4"
val iconsRoot = project.file("desktop-icons")
macOS {
iconFile.set(iconsRoot.resolve("launcher.icns"))
}
windows {
iconFile.set(iconsRoot.resolve("launcher.ico"))
}
linux {
iconFile.set(iconsRoot.resolve("launcher.png"))
}
}
}
}
41 changes: 41 additions & 0 deletions composeApp/src/desktopMain/kotlin/Main.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import androidx.compose.ui.Alignment
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.application
import androidx.compose.ui.window.rememberWindowState
import cafe.adriel.voyager.navigator.Navigator
import di.viewModelModules
import local.FileStorageHelper
import org.koin.compose.KoinApplication
import ui.screens.HomeScreen
import utils.DBConstants
import utils.Log
import utils.Strings

fun main() = application {
val fileStorageHelper = FileStorageHelper()
// Check if path for bundletool exists in local storage
val path = fileStorageHelper.read(DBConstants.BUNDLETOOL_PATH) as String?
val adbPath = fileStorageHelper.read(DBConstants.ADB_PATH) as String?
val icon = painterResource("launcher.png")
Log.showLogs = true
Window(
icon = icon,
onCloseRequest = ::exitApplication,
state = rememberWindowState(
width = 1200.dp, height = 1000.dp,
position = WindowPosition(Alignment.Center)
),
title = Strings.APP_NAME
) {
KoinApplication(
application = {
modules(viewModelModules())
}
) {
Navigator(screen = HomeScreen(fileStorageHelper, path, adbPath))
}
}
}
8 changes: 8 additions & 0 deletions composeApp/src/desktopMain/kotlin/di/Koin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package di

import org.koin.dsl.module
import ui.screens.HomeViewModel

fun viewModelModules() = module {
single { HomeViewModel() }
}
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ui.Styles
import ui.theme.Styles

@OptIn(ExperimentalFoundationApi::class)
@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import androidx.compose.ui.res.useResource
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ui.Styles
import ui.theme.Styles
import utils.TestTags

@OptIn(ExperimentalFoundationApi::class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import androidx.compose.ui.res.useResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ui.Styles
import ui.theme.Styles

@Composable
fun ChooseFileTextField(value: String, label: String, onSelect: () -> Unit) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ui.Styles
import ui.theme.Styles

@Composable
fun CustomTextField(value: String, label: String, forPassword: Boolean = true, onValueChange: (String) -> Unit) {
Expand Down
25 changes: 25 additions & 0 deletions composeApp/src/desktopMain/kotlin/ui/components/FileDialog.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ui.components

import androidx.compose.runtime.Composable
import androidx.compose.ui.window.AwtWindow
import utils.Strings
import java.awt.FileDialog
import java.awt.Frame

@Composable
fun FileDialog(
parent: Frame? = null,
onCloseRequest: (fileName: String?, directory: String?) -> Unit
) = AwtWindow(
create = {
object : FileDialog(parent, Strings.CHOOSE_FILE, LOAD) {
override fun setVisible(value: Boolean) {
super.setVisible(value)
if (value) {
onCloseRequest(file, directory)
}
}
}
},
dispose = FileDialog::dispose
)
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.Dialog
import ui.Styles
import ui.theme.Styles

@Composable
fun LoadingDialog(text: String) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import androidx.compose.ui.res.useResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ui.Styles
import ui.theme.Styles

@Composable
fun TextWithIcon(label: String, onIconClick: () -> Unit) {
Expand Down
Loading

0 comments on commit 6605e44

Please sign in to comment.