diff --git a/src/main/kotlin/app/App.kt b/src/main/kotlin/app/App.kt index 84f1c17..d34d4ed 100644 --- a/src/main/kotlin/app/App.kt +++ b/src/main/kotlin/app/App.kt @@ -28,7 +28,6 @@ import app.theme.AppTheme import app.ui.AppTab import app.ui.components.RepositoriesTabPanel import app.ui.components.TabInformation -import app.ui.dialogs.MaterialDialog import javax.inject.Inject import javax.inject.Provider @@ -62,17 +61,8 @@ class Main { ) ) { AppTheme { - val showDialog = remember { mutableStateOf(false) } - val dialogManager = remember { DialogManager(showDialog) } - Box { - AppTabs(dialogManager) - - if (showDialog.value) { - MaterialDialog { - dialogManager.dialog() - } - } + AppTabs() } } } @@ -81,12 +71,11 @@ class Main { @Composable - fun AppTabs(dialogManager: DialogManager) { + fun AppTabs() { val tabs = remember { val repositoriesSavedTabs = appStateManager.openRepositoriesPathsTabs var repoTabs = repositoriesSavedTabs.map { repositoryTab -> newAppTab( - dialogManager = dialogManager, key = repositoryTab.key, path = repositoryTab.value ) @@ -94,9 +83,7 @@ class Main { if (repoTabs.isEmpty()) { repoTabs = listOf( - newAppTab( - dialogManager = dialogManager - ) + newAppTab() ) } @@ -111,7 +98,6 @@ class Main { Tabs( tabs = tabs, selectedTabKey = selectedTabKey, - dialogManager = dialogManager, ) TabsContent(tabs.value, selectedTabKey.value) @@ -122,7 +108,6 @@ class Main { fun Tabs( tabs: MutableState>, selectedTabKey: MutableState, - dialogManager: DialogManager, ) { Row( modifier = Modifier @@ -140,7 +125,6 @@ class Main { }, newTabContent = { key -> newAppTab( - dialogManager = dialogManager, key = key ) }, @@ -168,7 +152,6 @@ class Main { } private fun newAppTab( - dialogManager: DialogManager, key: Int = 0, tabName: MutableState = mutableStateOf("New tab"), path: String? = null, @@ -186,7 +169,7 @@ class Main { appStateManager.repositoryTabChanged(key, path) } - AppTab(gitManager, dialogManager, path, tabName) + AppTab(gitManager, path, tabName) } } } @@ -218,24 +201,6 @@ private fun TabsContent(tabs: List, selectedTabKey: Int) { } } -class DialogManager(private val showDialog: MutableState) { - private var content: @Composable () -> Unit = {} - - fun show(content: @Composable () -> Unit) { - this.content = content - showDialog.value = true - } - - fun dismiss() { - showDialog.value = false - } - - @Composable - fun dialog() { - content() - } -} - @Composable fun LoadingRepository() { Box { } diff --git a/src/main/kotlin/app/ui/AppTab.kt b/src/main/kotlin/app/ui/AppTab.kt index 66a479d..26b4fe2 100644 --- a/src/main/kotlin/app/ui/AppTab.kt +++ b/src/main/kotlin/app/ui/AppTab.kt @@ -19,7 +19,6 @@ import androidx.compose.ui.graphics.DefaultAlpha import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import app.DialogManager import app.LoadingRepository import app.credentials.CredentialsState import app.git.GitManager @@ -29,12 +28,10 @@ import app.ui.dialogs.PasswordDialog import app.ui.dialogs.UserPasswordDialog import kotlinx.coroutines.delay - @OptIn(ExperimentalAnimationApi::class) @Composable fun AppTab( gitManager: GitManager, - dialogManager: DialogManager, repositoryPath: String?, tabName: MutableState ) { @@ -106,7 +103,7 @@ fun AppTab( LoadingRepository() } is RepositorySelectionStatus.Open -> { - RepositoryOpenPage(gitManager = gitManager, dialogManager = dialogManager) + RepositoryOpenPage(gitManager = gitManager) } } } diff --git a/src/main/kotlin/app/ui/RepositoryOpen.kt b/src/main/kotlin/app/ui/RepositoryOpen.kt index 956eb4e..b17a020 100644 --- a/src/main/kotlin/app/ui/RepositoryOpen.kt +++ b/src/main/kotlin/app/ui/RepositoryOpen.kt @@ -11,7 +11,6 @@ import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.input.pointer.PointerIcon import androidx.compose.ui.input.pointer.pointerHoverIcon import androidx.compose.ui.unit.dp -import app.DialogManager import app.git.DiffEntryType import app.git.GitManager import app.ui.dialogs.NewBranchDialog @@ -26,7 +25,7 @@ import java.awt.Cursor @OptIn(ExperimentalSplitPaneApi::class, androidx.compose.ui.ExperimentalComposeUiApi::class) @Composable -fun RepositoryOpenPage(gitManager: GitManager, dialogManager: DialogManager) { +fun RepositoryOpenPage(gitManager: GitManager) { var selectedRevCommit by remember { mutableStateOf(null) } @@ -38,8 +37,22 @@ fun RepositoryOpenPage(gitManager: GitManager, dialogManager: DialogManager) { mutableStateOf(false) } + var showNewBranchDialog by remember { mutableStateOf(false) } + val selectedIndexCommitLog = remember { mutableStateOf(-1) } + if(showNewBranchDialog) { + NewBranchDialog( + onReject = { + showNewBranchDialog = false + }, + onAccept = { branchName -> + gitManager.createBranch(branchName) + showNewBranchDialog = false + } + ) + } + Column { GMenu( onRepositoryOpen = { @@ -49,19 +62,7 @@ fun RepositoryOpenPage(gitManager: GitManager, dialogManager: DialogManager) { onPush = { gitManager.push() }, onStash = { gitManager.stash() }, onPopStash = { gitManager.popStash() }, - onCreateBranch = { - dialogManager.show { - NewBranchDialog( - onReject = { - dialogManager.dismiss() - }, - onAccept = { branchName -> - gitManager.createBranch(branchName) - dialogManager.dismiss() - } - ) - } - } + onCreateBranch = { showNewBranchDialog = true } ) Row { diff --git a/src/main/kotlin/app/ui/WelcomePage.kt b/src/main/kotlin/app/ui/WelcomePage.kt index ad80632..fee6aba 100644 --- a/src/main/kotlin/app/ui/WelcomePage.kt +++ b/src/main/kotlin/app/ui/WelcomePage.kt @@ -2,41 +2,32 @@ package app.ui -import androidx.compose.animation.Crossfade import androidx.compose.foundation.Image import androidx.compose.foundation.background -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.material.* -import androidx.compose.runtime.Composable +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.BiasAlignment +import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import app.git.GitManager -import openRepositoryDialog -import androidx.compose.foundation.lazy.items -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.BiasAlignment -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.sp -import app.DialogManager import app.extensions.dirName import app.extensions.dirPath +import app.git.GitManager import app.theme.primaryTextColor import app.theme.secondaryTextColor import app.ui.dialogs.CloneDialog +import app.ui.dialogs.MaterialDialog +import openRepositoryDialog import java.awt.Desktop import java.net.URI -import androidx.compose.runtime.getValue -import androidx.compose.runtime.setValue -import androidx.compose.ui.window.Popup -import app.ui.dialogs.MaterialDialog @OptIn(ExperimentalMaterialApi::class)