Removed completly dialog manager

This commit is contained in:
Abdelilah El Aissaoui 2021-12-06 22:54:25 +01:00
parent 3c3b044c80
commit e23181d530
4 changed files with 29 additions and 75 deletions

View File

@ -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<List<TabInformation>>,
selectedTabKey: MutableState<Int>,
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<String> = 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<TabInformation>, selectedTabKey: Int) {
}
}
class DialogManager(private val showDialog: MutableState<Boolean>) {
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 { }

View File

@ -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<String>
) {
@ -106,7 +103,7 @@ fun AppTab(
LoadingRepository()
}
is RepositorySelectionStatus.Open -> {
RepositoryOpenPage(gitManager = gitManager, dialogManager = dialogManager)
RepositoryOpenPage(gitManager = gitManager)
}
}
}

View File

@ -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<RevCommit?>(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 {

View File

@ -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)