From eda2b575f06e72040ebf82d24a7ec1ac84b7948c Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Mon, 9 Apr 2018 23:45:54 +0300 Subject: Refactor UI to use interfaces everywhere --- interface/ui.go | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 72 insertions(+), 7 deletions(-) (limited to 'interface/ui.go') diff --git a/interface/ui.go b/interface/ui.go index c0ddf53..0ddbde7 100644 --- a/interface/ui.go +++ b/interface/ui.go @@ -17,11 +17,12 @@ package ifc import ( + "time" + + "github.com/gdamore/tcell" "maunium.net/go/gomatrix" "maunium.net/go/gomuks/matrix/pushrules" "maunium.net/go/gomuks/matrix/rooms" - "maunium.net/go/gomuks/ui/types" - "maunium.net/go/gomuks/ui/widget" "maunium.net/go/tview" ) @@ -42,7 +43,7 @@ type GomuksUI interface { } type MainView interface { - GetRoom(roomID string) *widget.RoomView + GetRoom(roomID string) RoomView HasRoom(roomID string) bool AddRoom(roomID string) RemoveRoom(roomID string) @@ -50,11 +51,75 @@ type MainView interface { SaveAllHistory() SetTyping(roomID string, users []string) - AddServiceMessage(roomID *widget.RoomView, message string) - ProcessMessageEvent(roomView *widget.RoomView, evt *gomatrix.Event) *types.Message - ProcessMembershipEvent(roomView *widget.RoomView, evt *gomatrix.Event) *types.Message - NotifyMessage(room *rooms.Room, message *types.Message, should pushrules.PushActionArrayShould) + ProcessMessageEvent(roomView RoomView, evt *gomatrix.Event) Message + ProcessMembershipEvent(roomView RoomView, evt *gomatrix.Event) Message + NotifyMessage(room *rooms.Room, message Message, should pushrules.PushActionArrayShould) } type LoginView interface { } + +type MessageDirection int + +const ( + AppendMessage MessageDirection = iota + PrependMessage + IgnoreMessage +) + +type RoomView interface { + MxRoom() *rooms.Room + SaveHistory(dir string) error + LoadHistory(dir string) (int, error) + + SetStatus(status string) + SetTyping(users []string) + UpdateUserList() + + NewMessage(id, sender, msgtype, text string, timestamp time.Time) Message + NewTempMessage(msgtype, text string) Message + AddMessage(message Message, direction MessageDirection) + AddServiceMessage(message string) +} + +type MessageMeta interface { + Sender() string + SenderColor() tcell.Color + TextColor() tcell.Color + TimestampColor() tcell.Color + Timestamp() string + Date() string + CopyFrom(from MessageMeta) +} + +// MessageState is an enum to specify if a Message is being sent, failed to send or was successfully sent. +type MessageState int + +// Allowed MessageStates. +const ( + MessageStateSending MessageState = iota + MessageStateDefault + MessageStateFailed +) + +type Message interface { + MessageMeta + + SetIsHighlight(isHighlight bool) + IsHighlight() bool + + SetIsService(isService bool) + IsService() bool + + SetID(id string) + ID() string + + SetType(msgtype string) + Type() string + + SetText(text string) + Text() string + + SetState(state MessageState) + State() MessageState +} -- cgit v1.2.3 From ee67c1446cbb3c446d59d4ebd9657a25bf0b702d Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 10 Apr 2018 16:07:16 +0300 Subject: Convert message buffer to use custom colorable strings --- interface/ui.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'interface/ui.go') diff --git a/interface/ui.go b/interface/ui.go index 0ddbde7..2d27ea8 100644 --- a/interface/ui.go +++ b/interface/ui.go @@ -87,8 +87,9 @@ type MessageMeta interface { SenderColor() tcell.Color TextColor() tcell.Color TimestampColor() tcell.Color - Timestamp() string - Date() string + Timestamp() time.Time + FormatTime() string + FormatDate() string CopyFrom(from MessageMeta) } -- cgit v1.2.3 From 8270bc0322ac262f4b48c92d5fad25cf9634f1bb Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 10 Apr 2018 19:31:28 +0300 Subject: Move event parsing to ui/messages and add image displaying --- interface/ui.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'interface/ui.go') diff --git a/interface/ui.go b/interface/ui.go index 2d27ea8..df92308 100644 --- a/interface/ui.go +++ b/interface/ui.go @@ -51,8 +51,9 @@ type MainView interface { SaveAllHistory() SetTyping(roomID string, users []string) - ProcessMessageEvent(roomView RoomView, evt *gomatrix.Event) Message - ProcessMembershipEvent(roomView RoomView, evt *gomatrix.Event) Message + ParseEvent(roomView RoomView, evt *gomatrix.Event) Message + //ProcessMessageEvent(roomView RoomView, evt *gomatrix.Event) Message + //ProcessMembershipEvent(roomView RoomView, evt *gomatrix.Event) Message NotifyMessage(room *rooms.Room, message Message, should pushrules.PushActionArrayShould) } -- cgit v1.2.3 From ff7ee333a1028850337aa332532cbc23c7bdde14 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 11 Apr 2018 17:57:15 +0300 Subject: Rename UIString to TString, move ansimage to lib/ and switch to tcell fork --- interface/ui.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'interface/ui.go') diff --git a/interface/ui.go b/interface/ui.go index df92308..8d3836d 100644 --- a/interface/ui.go +++ b/interface/ui.go @@ -19,7 +19,7 @@ package ifc import ( "time" - "github.com/gdamore/tcell" + "maunium.net/go/tcell" "maunium.net/go/gomatrix" "maunium.net/go/gomuks/matrix/pushrules" "maunium.net/go/gomuks/matrix/rooms" -- cgit v1.2.3 From 92a2428865dfde80af6f9ffba0f59567b63230b6 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 11 Apr 2018 19:20:40 +0300 Subject: Allow clicking images and load images from cache --- interface/ui.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'interface/ui.go') diff --git a/interface/ui.go b/interface/ui.go index 8d3836d..fed1a73 100644 --- a/interface/ui.go +++ b/interface/ui.go @@ -71,7 +71,7 @@ const ( type RoomView interface { MxRoom() *rooms.Room SaveHistory(dir string) error - LoadHistory(dir string) (int, error) + LoadHistory(gmx Gomuks, dir string) (int, error) SetStatus(status string) SetTyping(users []string) -- cgit v1.2.3 From 69c163cfe9d353060896403a3e844848d4fd54eb Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 13 Apr 2018 21:25:45 +0300 Subject: Unknown changes that possibly fix and/or break things --- interface/ui.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'interface/ui.go') diff --git a/interface/ui.go b/interface/ui.go index fed1a73..e6071fc 100644 --- a/interface/ui.go +++ b/interface/ui.go @@ -119,8 +119,7 @@ type Message interface { SetType(msgtype string) Type() string - SetText(text string) - Text() string + NotificationContent() string SetState(state MessageState) State() MessageState -- cgit v1.2.3