Add UI preferences and simplify config save/load (ref #43)

This commit is contained in:
Tulir Asokan
2018-05-24 23:26:57 +03:00
parent a4d07e9a81
commit b76c8d0147
8 changed files with 141 additions and 111 deletions

View File

@ -491,7 +491,7 @@ func (view *MessageView) Draw(screen tcell.Screen) {
bareMode := view.parent.parent.bareMessages
if bareMode {
messageX = 0
messageX = x
}
indexOffset := view.getIndexOffset(screen, height, messageX)

View File

@ -86,6 +86,14 @@ func (ui *GomuksUI) OnLogout() {
ui.app.SetFocus(ui.loginView)
}
func (ui *GomuksUI) HandleNewPreferences() {
prefs := ui.gmx.Config().Preferences
ui.mainView.bareMessages = prefs.BareMessageView
ui.mainView.hideUserList = prefs.HideUserList
ui.mainView.hideRoomList = prefs.HideRoomList
ui.Render()
}
func (ui *GomuksUI) SetView(name View) {
ui.views.SwitchToPage(string(name))
}

View File

@ -57,6 +57,7 @@ type MainView struct {
}
func (ui *GomuksUI) NewMainView() tview.Primitive {
prefs := ui.gmx.Config().Preferences
mainView := &MainView{
Flex: tview.NewFlex(),
roomList: NewRoomList(),
@ -67,6 +68,10 @@ func (ui *GomuksUI) NewMainView() tview.Primitive {
gmx: ui.gmx,
config: ui.gmx.Config(),
parent: ui,
hideUserList: prefs.HideUserList,
hideRoomList: prefs.HideRoomList,
bareMessages: prefs.BareMessageView,
}
mainView.
@ -185,6 +190,28 @@ func (view *MainView) HandleCommand(roomView *RoomView, command string, args []s
if err == nil {
view.RemoveRoom(roomView.Room)
}
case "/uitoggle":
if len(args) == 0 {
roomView.AddServiceMessage("Usage: /uitoggle <rooms/users/baremessages>")
break
}
switch args[0] {
case "rooms":
view.hideRoomList = !view.hideRoomList
view.config.Preferences.HideRoomList = view.hideRoomList
case "users":
view.hideUserList = !view.hideUserList
view.config.Preferences.HideUserList = view.hideUserList
case "baremessages":
view.bareMessages = !view.bareMessages
view.config.Preferences.BareMessageView = view.bareMessages
default:
roomView.AddServiceMessage("Usage: /uitoggle <rooms/users/baremessages>")
return
}
view.parent.Render()
view.parent.Render()
go view.matrix.SendPreferencesToMatrix()
case "/join":
if len(args) == 0 {
roomView.AddServiceMessage("Usage: /join <room>")