Functional changes
* Offline messages are still sent when the chat log is cleared
* Spinner now does not wait for history to be complete, just a receipt
from our friend
* Export chat and load chat history are now available in group chats
* Merged save chat log and export chat log
* Note that we lost the info messages in the process
NonFunctional Changes
* FileTransferWidget slots only called for correct file
* Settings::getEnableGroupChatsColor now embedded in
GenericChatForm::colorizeNames
* Settings::setEnableGroupChatscolor now emits signal connected to
GenericChatForm::setColorizedNames to keep state in sync
* Chatlog history not reloaded on setPassword()
* I am pretty sure this had no purpose
* Removed a lot of responsibility from ChatForm
* History moved to ChatHistory implementation of IChatLog
* OfflineMsgEngine moved to FriendMessageDispatcher
* Export chat and load chat history moved to GenericChatLog
* Backed by IChatLog so can be used generically
* Message processing moved to FriendMessageDispatcher
* The action of sending files to coreFile is still handled by
ChatForm, but displaying of the sent messages is done through IChatLog
-> GenericChatForm
* Search moved to ChatHistory/SessionChatLog
* All insertion of chat log elements should be handled by
GenericChatForm now
* Removed overlapping responsibilities from GroupChatForm
* Search and message sending goes through ichatlog/messagedispatcher
too
* Lots of search functionality pushed down into IChatLog
* Some of the file logic was moved into Widget. This is mostly to avoid
scope increase of this PR even further.
* History APIs removed that were no longer used
Mick Sayson (3):
feat(offlinemsg): Force offline messages to always be enabled
refactor(offlinemsg): Decouple OfflineMsgEngine from other components
feat(offlinemsg): Enable offline messages with no history
* increase signal granularity
* reduce state in GroupChatForm
* remove differentiation of "joined" and "online" peers, it doesn't exist in toxcore and can't be tracked reliably in qTox
* add system message when peer name changes, even if due to alias
* add system message when self name changes, for clarity
Blocked status will represent friends who are removed from Toxcore, but who still exist in UI and can be readded to Toxcore at a future time using their public key. Blocked friends are similar to offline friends, but have a different status icon and will be seperated in the friends list.
fixes#3625
Input device was not closed after the following steps:
- Select "Disabled" for audio source
- Switch away from A/V settings
- Switch back to A/V settings
- Switch to some audio input device
- Switch away from A/V settings
-> audio input device still open, but unused
undefined behavior sanitizer complained about uninitialized variable:
src/widget/form/chatform.cpp:781:9: runtime error: load of value 190, which is not a valid value for type 'bool'
If peer quits the group and they were just playing audio, their label will be removed but their timer will still be running. Unguarded update of label causes segfault.
Fix#5511
Monsterovich (10):
feat(core): print a chat log entry when a user joins/leaves the group chat
fix(core): fixed Timestamps
fix(core): simplify the code
fix(core): fix formatting
fix(core): this fixes displaying nickname refreshes in groups
fix(core): support user aliases
fix(core): update group peerLists on local changes
fix(core): fix for users without nicknames
fix(core): ignore mentioning users with empty nicknames
fix(core): fixed syntax
Move all static methods from ContentDialog to ContentDialogManger. Make
if singletone for the first time. Also move some methods to avoid
compile errors.
Not currently used, but there are plans to display if a transfered file
has been modified, which the file hash will be needed for. Adding file
hash at the same time as file history also saves a db schema update.
Having "Tox" as Organization results in all standard paths being "Tox/
qTox" instead of "qTox". Since there is no such thing as "Tox"
organization I removed it.
Original work by tox-user.
The default theme is now placed in a different path:
- C:\users\%username%\AppData\roaming\qtox\themes - for Windows
- ~/Library/Application Support/qtox/themes - for MacOS
- ~/.config/qtox/themes - for other Unix systems including GNU/Linux
Thanks to that it's no longer required to recompile the program to modify
the theme.
In addition to that the default theme is also included as a resource. If
the theme folder or some file inside it is missing, qTox will load it
from resource.
*All friend avatar changes and removals go through Profile, so that Profile can manage identicons
*Split the concept of "changed" and "removed" into "changed", "set", and "removed"
Fixes#4724
Implements #4596, #4626, #1007
Adds a context menu to every peer label in group chat with an
option to mute chosen peers, which adds them to the blacklist.
Mutes audio of blacklisted group peers.
This makes the usage of QFileDialogs consistent by using he native
file picker in all cases. Also makes the usage of the last location
consistent. Furthermore this removes default parameter values and uses
Q_NULLPTR.
Implements #2922 and #2514.
This change adds:
- a button for enabling full screen mode
- a panel with buttons for controlling the chat in full screen mode
- a button to toggle video preview
- new icons
fix(chat): fix buttons in full screen video call
feat(chat): add hotkey for exiting full screen video
fix(chat): use screen res to position button panel
fix(chat): dont remove video widget on window close
Fix#3124Fix#3004
Instead of loading a set 7 days of history. Better performance when there are lots of messages, and better context when friends haven't talked in over a week.
Removed historyBaselineDate, introduced in deb8440c6a to fix duplicate messages, but duplicate messages were very likely fixed by https://github.com/qTox/qTox/pull/4607.
Also refactored history loading.