Added bottom status bar
This commit is contained in:
parent
ca32f7c551
commit
3bea4f22e8
6
src/main/kotlin/app/git/UserInfo.kt
Normal file
6
src/main/kotlin/app/git/UserInfo.kt
Normal file
@ -0,0 +1,6 @@
|
||||
package app.git
|
||||
|
||||
data class UserInfo(
|
||||
val name: String?,
|
||||
val email: String?,
|
||||
)
|
@ -9,15 +9,16 @@ import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
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 androidx.compose.ui.unit.sp
|
||||
import app.git.DiffEntryType
|
||||
import app.theme.borderColor
|
||||
import app.theme.primaryTextColor
|
||||
import app.theme.*
|
||||
import app.ui.dialogs.NewBranchDialog
|
||||
import app.ui.dialogs.RebaseInteractive
|
||||
import app.ui.dialogs.StashWithMessageDialog
|
||||
@ -42,6 +43,7 @@ fun RepositoryOpenPage(tabViewModel: TabViewModel) {
|
||||
val selectedItem by tabViewModel.selectedItem.collectAsState()
|
||||
val blameState by tabViewModel.blameState.collectAsState()
|
||||
val showHistory by tabViewModel.showHistory.collectAsState()
|
||||
val userInfo by tabViewModel.userInfo.collectAsState()
|
||||
|
||||
var showNewBranchDialog by remember { mutableStateOf(false) }
|
||||
var showStashWithMessageDialog by remember { mutableStateOf(false) }
|
||||
@ -79,6 +81,7 @@ fun RepositoryOpenPage(tabViewModel: TabViewModel) {
|
||||
Text("Rebase started externally", color = MaterialTheme.colors.primaryTextColor)
|
||||
}
|
||||
} else {
|
||||
Column(modifier = Modifier.weight(1f)) {
|
||||
Menu(
|
||||
modifier = Modifier
|
||||
.padding(top = 4.dp, bottom = 8.dp) // Linear progress bar already take 4 additional dp for top
|
||||
@ -93,6 +96,28 @@ fun RepositoryOpenPage(tabViewModel: TabViewModel) {
|
||||
|
||||
RepoContent(tabViewModel, diffSelected, selectedItem, repositoryState, blameState, showHistory)
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(
|
||||
modifier = Modifier
|
||||
.height(1.dp)
|
||||
.fillMaxWidth()
|
||||
.background(MaterialTheme.colors.primaryVariant.copy(alpha = 0.2f))
|
||||
)
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.height(32.dp)
|
||||
.background(MaterialTheme.colors.surface)
|
||||
.padding(horizontal = 16.dp),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Text(
|
||||
text = "${userInfo.name ?: "Name not set"} <${userInfo.email?: "Email not set"}>",
|
||||
color = MaterialTheme.colors.primaryTextColor,
|
||||
fontSize = 12.sp,
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import org.eclipse.jgit.blame.BlameResult
|
||||
import org.eclipse.jgit.lib.Repository
|
||||
import org.eclipse.jgit.lib.RepositoryState
|
||||
import org.eclipse.jgit.revwalk.RevCommit
|
||||
import org.eclipse.jgit.storage.file.FileBasedConfig
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Provider
|
||||
@ -87,6 +88,9 @@ class TabViewModel @Inject constructor(
|
||||
private val _showHistory = MutableStateFlow(false)
|
||||
val showHistory: StateFlow<Boolean> = _showHistory
|
||||
|
||||
private val _userInfo = MutableStateFlow(UserInfo(null, null))
|
||||
val userInfo: StateFlow<UserInfo> = _userInfo
|
||||
|
||||
var historyViewModel: HistoryViewModel? = null
|
||||
private set
|
||||
|
||||
@ -181,9 +185,29 @@ class TabViewModel @Inject constructor(
|
||||
printLog(TAG, "Refreshing repository state $newRepoState")
|
||||
_repositoryState.value = newRepoState
|
||||
|
||||
loadConfigInfo(git)
|
||||
|
||||
onRepositoryStateChanged(newRepoState)
|
||||
}
|
||||
|
||||
private fun loadConfigInfo(git: Git) {
|
||||
val config = git.repository.config
|
||||
config.load()
|
||||
val userName = config.getString("user", null, "name")
|
||||
val email = config.getString("user", null, "email")
|
||||
|
||||
// TODO Load file-specific config
|
||||
// val fcfg = FileBasedConfig((config as FileBasedConfig).file, git.repository.fs)
|
||||
// fcfg.load()
|
||||
// val fname = fcfg.getString("user", null, "name")
|
||||
// val fmail = fcfg.getString("user", null, "email")
|
||||
// println("Fname $fname\nFmail $fmail")
|
||||
|
||||
println(userName)
|
||||
println(email)
|
||||
_userInfo.value = UserInfo(userName, email)
|
||||
}
|
||||
|
||||
private fun onRepositoryStateChanged(newRepoState: RepositoryState) {
|
||||
if (newRepoState != RepositoryState.REBASING_INTERACTIVE && rebaseInteractiveViewModel != null) {
|
||||
rebaseInteractiveViewModel?.cancel()
|
||||
|
Loading…
Reference in New Issue
Block a user