Commit Graph

38 Commits

Author SHA1 Message Date
Tobias Fella
e6c8b3fa4b Simplify some android code 2023-11-11 22:59:27 +01:00
James Graham
2bfb2fa1f9 Improve ChatDocumentHandler handling of null properties
Improve ChatDocumentHandler handling of null properties
2023-11-04 14:43:31 +00:00
James Graham
7e3db20229 Remove isEdit from ChatDocumentHandler
Remove isEdit from ChatDocumentHandler as it was made redundant by the ChatCache rework.
2023-11-02 17:00:41 +00:00
James Graham
a57744891a ChatCache
Move the functionality to cache the contents of a chat bar from the room directly and to a new ChatCache object. This works pretty much the same with a few extra check and balances, this also made it easy to put a test suite around the functionality so I did. The current functionality should be identical to what exists.

This is in prep for threads which will require managing even more caches if we create one per thread.
2023-10-15 12:55:56 +00:00
Tobias Fella
cee72b6d48 Remove Qt5 compatibility ifdefs 2023-09-13 11:16:02 +00:00
Tobias Fella
ed033a1c5e Raise compiler settings level to 5.105 2023-08-21 13:02:14 +02:00
Carl Schwan
75cd77facb Refactor completion menu
- Use new Avatar
- Use required property in delegate
2023-07-24 08:44:49 +00:00
Laurent Montel
63a17b5985 Remove duplicate headers between header/cpp 2023-07-12 22:27:39 +00:00
Laurent Montel
6d45d126f8 Add explicit moc includes to sources for moc-covered headers
Add missing #pragma once + missing include

* speeds up incremental builds as changes to a header will not always
  need the full mocs_compilation.cpp for all the target's headers rebuild,
  while having a moc file sourced into a source file only adds minor
  extra costs, due to small own code and the used headers usually
  already covered by the source file, being for the same class/struct
* seems to not slow down clean builds, due to empty mocs_compilation.cpp
  resulting in those quickly processed, while the minor extra cost of the
  sourced moc files does not outweigh that in summary.
  Measured times actually improved by some percent points.
  (ideally CMake would just skip empty mocs_compilation.cpp & its object
  file one day)
* enables compiler to see all methods of a class in same compilation unit
  to do some sanity checks
* potentially more inlining in general, due to more in the compilation unit
* allows to keep using more forward declarations in the header, as with the
  moc code being sourced into the cpp file there definitions can be ensured
  and often are already for the needs of the normal class methods
2023-07-12 13:15:19 +00:00
James Graham
53884949d1 Document chatdocumenthandler
Document chatdocumenthandler and cleanup includes
2023-04-23 11:12:29 +00:00
Tobias Fella
419cb07557 Revert "Temporarily disable android Qt6 CI"
This reverts commit d6ebb1308c
2023-04-09 02:22:53 +02:00
Akseli Lahtinen
8f141cd88d Set the mention and error color according to colorscheme
Use kirigami to set the proper link and error color for mentions and error underlining in chatbox

This is with my own colorscheme:

![image](/uploads/6269b85f936a98b02f42a9ce01da76b1/image.png)
2023-03-30 16:25:01 +00:00
James Graham
5482aad7ba Inline Edits
Edit text messages inline instead of in the chatbar
2023-02-12 13:46:23 +00:00
Tobias Fella
ebd521e2ee Don't crash when leaving an opened room
Should fix #568
2023-01-29 13:51:52 +00:00
James Graham
594a5cf6ca Move the qt models to their own folder
Felt like the src folder was getting a bit crowded so move all the models to a folder named models.
2023-01-22 21:33:30 +00:00
Laurent Montel
c46bfe05c1 Remove duplicate headers between cpp/h files 2022-12-19 13:32:39 +01:00
Tobias Fella
f207f57bd5 Various Qt6 fixes 2022-11-30 00:13:29 +00:00
Tobias Fella
dd0300d025 Reimplement normal emoji completion
BUG: 460632
2022-11-26 13:56:02 +00:00
Tobias Fella
510c6d4a90 Don't freeze when pasting large markdown documents
BUG: 460802
2022-10-23 22:10:43 +00:00
Tobias Fella
bbf76e1e64 Fix disconnects 2022-10-23 23:23:56 +02:00
Tobias Fella
9398c5004c Reintroduce selectionStart, selectionEnd 2022-10-11 17:58:49 +02:00
Tobias Fella
4bfd857093 Refactor input stuff
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
2022-10-10 23:10:00 +00:00
James Graham
53b9f42399 Fix Slash Commands in the Middle of a Message
Make sure that a slash command only activates when the slash is at the beginning of the message.

BUG: 457474
2022-09-22 15:11:56 +00:00
James Graham
29816730e4 Add space after an autocomplete
Adds a space automatically after an autocomplete if the last char isn't one.

Implements network/neochat#132
2022-05-30 19:17:47 +00:00
Tom Z
df4df171dd Fix valgrind warnings 2021-08-23 22:51:41 +02:00
Carl Schwan
768fd74361 Keep completion behavior similar to before
* Use tab to jump to the next completion item
* Space to accept change
2021-06-17 00:37:57 +02:00
Jan Blackquill
6898670499 feat: better autocompletion UX
The autocompletion bar is now more similar to mainstream
chat applications, which use up/down to change the selection,
and tab to confirm the selection. An extra space is also added
to keep the flow of typing going.
2021-06-16 16:29:14 -04:00
Carl Schwan
0ff9425fee Add spellchecking suggestions 2021-06-10 11:29:59 +00:00
Carl Schwan
8f309ca958 Add SpellChecking to NeoChat
Fix #98
2021-06-07 11:34:38 +02:00
Srevin Saju
6575d23072 feat: trigger completion of commands on the input of backlash / char 2021-05-01 13:30:24 +03:00
Tobias Fella
2cb81d1276 Unify License header style in C++ 2021-04-06 19:25:06 +02:00
Tobias Fella
592c33ed8b Add missing license header 2021-04-06 15:40:46 +00:00
Carl Schwan
cd1bec9977 Introduce the ActionsHandler 2021-01-08 23:12:09 +00:00
Carl Schwan
c69d3587ba Allow editing text and also hide edits from the timeline 2020-12-28 09:37:17 +00:00
Tobias Fella
c449a8fafe Apply clang-format 2020-12-25 22:23:35 +01:00
Carl Schwan
7ed41a8f68 Move back to plain text 2020-12-04 21:25:23 +01:00
Carl Schwan
136a8f2af8 Clang-tidy + clang-format 2020-11-27 00:26:39 +01:00
Carl Schwan
d6ab6bacdd Use RichText text input to provide real mentions
This use internally now a QTextDocument and a new C++ class to
manipulate the document with QTextCursor.
2020-11-26 14:25:30 +00:00