Added basic UI components for submodules support
This commit is contained in:
parent
f9ccf87030
commit
05852a6034
@ -0,0 +1,16 @@
|
|||||||
|
package com.jetpackduba.gitnuro.git.submodules
|
||||||
|
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
import org.eclipse.jgit.api.Git
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class AddSubmoduleUseCase @Inject constructor() {
|
||||||
|
suspend operator fun invoke(git: Git, name: String, path: String, uri: String): Unit = withContext(Dispatchers.IO) {
|
||||||
|
git.submoduleAdd()
|
||||||
|
.setName(name)
|
||||||
|
.setPath(path)
|
||||||
|
.setURI(uri)
|
||||||
|
.call()
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.jetpackduba.gitnuro.git.submodules
|
||||||
|
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
import org.eclipse.jgit.api.Git
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class DeInitializeSubmoduleUseCase @Inject constructor() {
|
||||||
|
suspend operator fun invoke(git: Git, path: String): Unit = withContext(Dispatchers.IO) {
|
||||||
|
git.submoduleDeinit()
|
||||||
|
.addPath(path)
|
||||||
|
.call()
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.jetpackduba.gitnuro.git.submodules
|
||||||
|
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
import org.eclipse.jgit.api.Git
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class SyncSubmoduleUseCase @Inject constructor() {
|
||||||
|
suspend operator fun invoke(git: Git, path: String): Unit = withContext(Dispatchers.IO) {
|
||||||
|
git.submoduleSync()
|
||||||
|
.addPath(path)
|
||||||
|
.call()
|
||||||
|
}
|
||||||
|
}
|
@ -197,17 +197,12 @@ fun ExtendedMenuButton(
|
|||||||
onClick: () -> Unit,
|
onClick: () -> Unit,
|
||||||
extendedListItems: List<ContextMenuElement>,
|
extendedListItems: List<ContextMenuElement>,
|
||||||
) {
|
) {
|
||||||
var showDropDownMenu by remember { mutableStateOf(false) }
|
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
.size(width = 64.dp, height = 56.dp)
|
.size(width = 64.dp, height = 56.dp)
|
||||||
.ignoreKeyEvents()
|
.ignoreKeyEvents()
|
||||||
.clip(RoundedCornerShape(4.dp))
|
.clip(RoundedCornerShape(4.dp))
|
||||||
.background(MaterialTheme.colors.surface)
|
.background(MaterialTheme.colors.surface)
|
||||||
.handMouseClickable {
|
|
||||||
showDropDownMenu = true
|
|
||||||
}
|
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
@ -250,18 +245,6 @@ fun ExtendedMenuButton(
|
|||||||
)
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DropdownMenu(
|
|
||||||
// onDismissRequest = {
|
|
||||||
// showDropDownMenu = false
|
|
||||||
// },
|
|
||||||
// content = {
|
|
||||||
// for (item in extendedListItems) {
|
|
||||||
// DropDownContent(item, onDismiss = { showDropDownMenu = false })
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// expanded = showDropDownMenu,
|
|
||||||
// )
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import org.eclipse.jgit.submodule.SubmoduleStatusType
|
|||||||
fun submoduleContextMenuItems(
|
fun submoduleContextMenuItems(
|
||||||
submoduleStatus: SubmoduleStatus,
|
submoduleStatus: SubmoduleStatus,
|
||||||
onInitializeModule: () -> Unit,
|
onInitializeModule: () -> Unit,
|
||||||
|
onOpenSubmoduleInTab: () -> Unit,
|
||||||
): List<ContextMenuElement> {
|
): List<ContextMenuElement> {
|
||||||
return mutableListOf<ContextMenuElement>().apply {
|
return mutableListOf<ContextMenuElement>().apply {
|
||||||
if (submoduleStatus.type == SubmoduleStatusType.UNINITIALIZED) {
|
if (submoduleStatus.type == SubmoduleStatusType.UNINITIALIZED) {
|
||||||
@ -16,5 +17,33 @@ fun submoduleContextMenuItems(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
if (submoduleStatus.type != SubmoduleStatusType.UNINITIALIZED) {
|
||||||
|
add(
|
||||||
|
ContextMenuElement.ContextTextEntry(
|
||||||
|
label = "Open submodule in new tab",
|
||||||
|
onClick = onOpenSubmoduleInTab
|
||||||
|
)
|
||||||
|
)
|
||||||
|
add(
|
||||||
|
ContextMenuElement.ContextTextEntry(
|
||||||
|
label = "Sync submodule",
|
||||||
|
onClick = onInitializeModule
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
add(
|
||||||
|
ContextMenuElement.ContextTextEntry(
|
||||||
|
label = "Update submodule",
|
||||||
|
onClick = onInitializeModule
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
add(
|
||||||
|
ContextMenuElement.ContextTextEntry(
|
||||||
|
label = "DeInitialize submodule",
|
||||||
|
onClick = onInitializeModule
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -69,6 +69,10 @@ class SubmodulesViewModel @AssistedInject constructor(
|
|||||||
suspend fun refresh(git: Git) {
|
suspend fun refresh(git: Git) {
|
||||||
loadSubmodules(git)
|
loadSubmodules(git)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun onOpenSubmoduleInTab(@Suppress("UNUSED_PARAMETER") path: String) {
|
||||||
|
TODO()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class SubmodulesState(val submodules: List<Pair<String, SubmoduleStatus>>, val isExpanded: Boolean)
|
data class SubmodulesState(val submodules: List<Pair<String, SubmoduleStatus>>, val isExpanded: Boolean)
|
Loading…
Reference in New Issue
Block a user