* Pass MessageBoxManager instantiation around instead of relying on a singleton
* Mock MessageBoxManager for unit tests when needed, since they don't have a
QApplication which is required for creating QWidgets
* Remove GUI class, which didn't have a clear purpose
Makes it so that looking back in chat history, you can see which users you were
connected to for any message. Otherwise self client restarts are unseen.
Follows showGroupJoinLeaveMessages setting which defaults to false, so only
users who opt in will see the messages.
Scrap generic numArg handling. It somewhat increases complexity and doesn't
reduce code either.
Similar to how History handles SCHEMA_VERSION. Run separately on global and
personal settings, since some state in global, and personal settings can’t be
done globally since they require the passkey.
Restrict a user from downgrading past the saved settings version, due to
possible compatibility breaks or old qTox versions re-introducing corrupt state
that was already healed.
Pass in new profile state for personal settings rather than relying on settings
file presence because personal settings can be stored in either the personal
settings file or global settings file. This was introduced in
aea9eea8a4 when personal settings were first
moved to their own file.
Alessndro Magri (1):
feat(l10n): update Italian translation from Weblate
Capsia Tech (3):
feat(l10n): update Italian translation from Weblate
feat(l10n): update Italian translation from Weblate
feat(l10n): update Slovenian translation from Weblate
H Zeng (1):
feat(l10n): update Chinese (Simplified) translation from Weblate
James Alison (58):
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
feat(l10n): update Persian translation from Weblate
Jan Kowalski (8):
feat(l10n): update Polish translation from Weblate
feat(l10n): update Polish translation from Weblate
feat(l10n): update Polish translation from Weblate
feat(l10n): update Polish translation from Weblate
feat(l10n): update Polish translation from Weblate
feat(l10n): update Polish translation from Weblate
feat(l10n): update Polish translation from Weblate
feat(l10n): update Polish translation from Weblate
Nathan Follens (3):
feat(l10n): add Flemish translation using Weblate
feat(l10n): update Flemish translation from Weblate
feat(l10n): update Flemish translation from Weblate
Oleh Ilnytskyi (2):
feat(l10n): update Polish translation from Weblate
feat(l10n): update Ukrainian translation from Weblate
Pan Efem (1):
feat(l10n): update Polish translation from Weblate
TecHunter (2):
feat(l10n): update French translation from Weblate
feat(l10n): update French translation from Weblate
Unlucky Luke (1):
feat(l10n): update Swedish translation from Weblate
Weblate (2):
Merge remote-tracking branch 'origin/master'
Merge remote-tracking branch 'origin/master'
anonymous (3):
feat(l10n): update Polish translation from Weblate
feat(l10n): update Polish translation from Weblate
feat(l10n): update Polish translation from Weblate
maclunar (1):
feat(l10n): update Polish translation from Weblate