This is the start of a significant refactoring of everything related to sending messages, which is roughly:
- the chatbox
- action handling
- message sending on the c++ side
- autocompletion of users/rooms/emojis/commands/things i forgot
Notable changes so far include:
- ChatBox is now a ColumnLayout. As part of this, i removed the height animations for now. <del>as far as i can tell, they were broken anyway.</del> I'll readd them later
- Actions were refactored to live outside of the message sending function and are now each an object; it's mostly a wrapper around a function that is executed when the action is invoked
- Everything that used to live in ChatBoxHelper is now in NeoChatRoom; that means that the exact input status (text, message being replied to, message being edited, attachment) is now saved between room switching).
- To edit/reply an event, set `NeoChatRoom::chatBox{edit,reply}Id` to the desired event id, `NeoChatRoom::chatBox{reply,edit}{User,Message}` will then be updated automatically
- Attachments behave equivalently with `NeoChatRoom::chatBoxAttachmentPath`
- Error message reporting from ActionsHandler has been fixed (same fix as in !517) and moved to NeoChatRoom
Broken at the moment:
- [x] Any kind of autocompletion
- [x] Mentions
- [x] Fancy effects
- [x] sed-style edits
- [x] last-user-message edits and replies
- [x] Some of the actions, probably
- [x] Replies from notifications
- [x] Lots of keyboard shortcuts
- [x] Custom emojis
- [x] ChatBox height animations
TODO:
- [x] User / room mentions based on QTextCursors instead of the hack we currently use
- [x] Refactor autocompletion stuff
- [x] ???
- [x] Profit
Fix the reply an edit text being shown in all chat rooms when multiple windows are open. This is done by changing chatBoxHelper from a singleton to being instantiated for each instance of roompage.
BUG: 454963
automatically focus on the textArea when reply, edit is pressed. Also
move the cursor to the end of the text content, for example, when the edit button
is pressed
neochat now supports a quick edit shortcut, which helps to edit
the last message from the user in a room.
Apply 1 suggestion(s) to 1 file(s)
remove comment
when the user sends a new message, and if the user is at an older position
in the timeline, then neochat should automatically scroll to the latest message and mark all the messages as read
Only display up to 10 emojis when searching
Related to #310 but a better solution needs to be found because we get
the same problem on big room when autocompleting usernames.
- ChatBar: Contains the main TextArea and standard buttons.
- Usually visible, but can be disabled when necessary.
- AttachmentPane: Contains an image when attaching an image and also a filename with mimetype icon.
- Has a toolbar to cancel the attachment or edit it if it's an image.
- Shown when there is an attachment.
- ReplyPane: Shows who you are replying to and the content of their message.
- Also shows edits and has a button to cancel replies/edits
- Shown when replying or editing
- CompletionMenu
- Now a vertical list using a QQC2.Popup
- Either a Pane or a Menu/Popup
- EmojiPickerPane
@teams/vdg