refactor code and update CHANGELOG.md

This commit is contained in:
AmirHossein Abdolmotallebi 2024-08-05 12:46:38 +03:30
parent 5a397dc40b
commit 929e832e58
3 changed files with 70 additions and 65 deletions

View File

@ -12,6 +12,8 @@
### Fixed
- App is now open in center of screen
### Security
## 1.0.6

View File

@ -0,0 +1,66 @@
package com.abdownloadmanager.desktop.pages.home
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState
import com.abdownloadmanager.desktop.actions.LocalShortCutManager
import com.abdownloadmanager.desktop.actions.handle
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.rememberWindowController
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.utils.mvi.HandleEffects
import java.awt.Dimension
@Composable
fun HomeWindow(
homeComponent: HomeComponent,
onCLoseRequest: () -> Unit,
) {
val size by homeComponent.windowSize.collectAsState()
val windowState = rememberWindowState(
size = size,
position = WindowPosition.Aligned(Alignment.Center)
)
val onCloseRequest = onCLoseRequest
val windowTitle = "AB Download Manager"
val windowIcon = MyIcons.appIcon
val windowController = rememberWindowController(
windowTitle,
windowIcon.rememberPainter(),
)
CompositionLocalProvider(
LocalShortCutManager provides homeComponent.shortcutManager
) {
CustomWindow(
state = windowState,
onCloseRequest = onCloseRequest,
windowController = windowController,
onKeyEvent = {
homeComponent.shortcutManager.handle(it)
}
) {
LaunchedEffect(windowState.size) {
homeComponent.setWindowSize(windowState.size)
}
window.minimumSize = Dimension(
400, 400
)
HandleEffects(homeComponent) {
when (it) {
HomeEffects.BringToFront -> {
windowState.isMinimized = false
window.toFront()
}
else -> {}
}
}
BoxWithConstraints {
HomePage(homeComponent)
}
}
}
}

View File

@ -1,6 +1,5 @@
package com.abdownloadmanager.desktop.ui
import com.abdownloadmanager.desktop.App
import com.abdownloadmanager.desktop.AppArguments
import com.abdownloadmanager.desktop.AppComponent
import com.abdownloadmanager.desktop.AppEffects
@ -8,16 +7,10 @@ import com.abdownloadmanager.desktop.actions.*
import com.abdownloadmanager.desktop.pages.about.ShowAboutDialog
import com.abdownloadmanager.desktop.pages.addDownload.ShowAddDownloadDialogs
import com.abdownloadmanager.desktop.pages.extenallibs.ShowOpenSourceLibraries
import com.abdownloadmanager.desktop.pages.home.HomeComponent
import com.abdownloadmanager.desktop.pages.home.HomeEffects
import com.abdownloadmanager.desktop.pages.home.HomePage
import com.abdownloadmanager.desktop.pages.newQueue.NewQueueDialog
import com.abdownloadmanager.desktop.pages.queue.QueuesWindow
import com.abdownloadmanager.desktop.pages.settings.SettingWindow
import com.abdownloadmanager.desktop.pages.singleDownloadPage.ShowDownloadDialogs
import com.abdownloadmanager.desktop.repository.AppRepository
import com.abdownloadmanager.desktop.ui.customwindow.CustomWindow
import com.abdownloadmanager.desktop.ui.customwindow.rememberWindowController
import com.abdownloadmanager.desktop.ui.icon.MyIcons
import com.abdownloadmanager.desktop.ui.theme.ABDownloaderTheme
import com.abdownloadmanager.desktop.ui.widget.tray.ComposeTray
@ -30,10 +23,9 @@ import com.abdownloadmanager.desktop.utils.ProvideGlobalExceptionHandler
import com.abdownloadmanager.desktop.utils.action.buildMenu
import com.abdownloadmanager.desktop.utils.isInDebugMode
import com.abdownloadmanager.desktop.utils.mvi.HandleEffects
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.window.*
import com.abdownloadmanager.desktop.pages.home.HomeWindow
import com.abdownloadmanager.utils.compose.ProvideDebugInfo
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
@ -41,7 +33,6 @@ import kotlinx.coroutines.withTimeout
import org.koin.core.component.KoinComponent
import org.koin.core.component.get
import org.koin.core.component.inject
import java.awt.Dimension
object Ui : KoinComponent {
val scope: CoroutineScope by inject()
@ -66,9 +57,7 @@ object Ui : KoinComponent {
SystemTray(appComponent, trayState)
val showHomeSlot = appComponent.showHomeSlot.collectAsState().value
showHomeSlot.child?.instance?.let {
HomeWindow(it) {
appComponent.closeHome()
}
HomeWindow(it,appComponent::closeHome)
}
val showSettingSlot = appComponent.showSettingSlot.collectAsState().value
showSettingSlot.child?.instance?.let {
@ -130,55 +119,3 @@ private fun ApplicationScope.SystemTray(
}
)
}
@Composable
private fun HomeWindow(
homeComponent: HomeComponent,
onCLoseRequest: () -> Unit,
) {
val size by homeComponent.windowSize.collectAsState()
val windowState = rememberWindowState(
size = size,
position = WindowPosition.Aligned(Alignment.Center)
)
val onCloseRequest = onCLoseRequest
val windowTitle = "AB Download Manager"
val windowIcon = MyIcons.appIcon
val windowController = rememberWindowController(
windowTitle,
windowIcon.rememberPainter(),
)
CompositionLocalProvider(
LocalShortCutManager provides homeComponent.shortcutManager
) {
CustomWindow(
state = windowState,
onCloseRequest = onCloseRequest,
windowController = windowController,
onKeyEvent = {
homeComponent.shortcutManager.handle(it)
}
) {
LaunchedEffect(windowState.size) {
homeComponent.setWindowSize(windowState.size)
}
window.minimumSize = Dimension(
400, 400
)
HandleEffects(homeComponent) {
when (it) {
HomeEffects.BringToFront -> {
windowState.isMinimized = false
window.toFront()
}
else -> {}
}
}
BoxWithConstraints {
HomePage(homeComponent)
}
}
}
}