- Rework the MAM Preference dialog
- Move MAM Preference dialog into a new gtk module
- Refactor all MAM code into own module
- Refactor the MAM code itself so we can easier test it in the future
- Add a misc module for smaller XEPs and move EME, Last Message Correction
Delay, OOB into it
- Add dedicated module for XEP-0082 Time Profiles
- Use icon names instead of path
- Move PopupNotificationWindow into notify.py
- Make popup class method instead of module method
- Dont use sessions to get control on notification action Fixes#9140
- Add has_focus() method to ChatControlBase
- Publish avatars with a size of 200x200
- Add AvatarSize.PUBLISH so we can easily change it in the future
- Dont upscale small avatars on publish
- Use surfaces for displaying the avatar in ProfileWindow and VcardWindow
because this scales correctly on HiDPI screens
if autopopup_chat_opened is activated no control is found because
the event that triggered the notification is already deleted when
the notification is clicked by the user. So instead of searching
for the event, search for the control with jid/account.
Fixes#9124
Use GtkFileChooserDialog only when we need previews, default to
NativeFileChooser otherwise.
GtkFileChooserDialogs have a long list of issues, so lets only use it
if we gain something from it.
Flatpak should only run NativeFileChoosers because its sandboxed and
this is needed for security purposes. As a result of that, Flatpak Users
dont have image previews in the FileOpenDialogs
Refactor all FileChoosers for a more simple approach when we use them
Add a new SendFileDialog, so we dont have to put widgets into the FileChooser
which forces non-native Dialogs.
Dont save fingerprints to config and check certs with our own methods.
We should trust openssl to do all necessary checks.
Self signed certs can be added to cacert.pem and will not show up as
an error until the cert changes.
nbxmpp now saves all ssl errors and passes them, so now we loop over
all errors until all are confirmed or ignored by the user
Also cacerts are now saved in utf-8
This allows us to import the app module without triggering
dependency detection
Also add is_installed() for checking if a dependency is installed and
disable_dependency() in case we dont want to use a dependency
- init configpaths earlier so logging can access it to store debug logs
- First step for more consistency across Gajim when looking up paths
Recommended usage for the future:
app.configpaths.get()
configpaths.get()
- Groupchats promote a vcard hash with presence
Refactoring:
- Dont delete groupchat contacts if they are maximized from the roster
- Roster and GroupchatControl use the same contact object
- Complete rewrite of the old Groupchat dialog
- Has now a "minimal" mode, which is used if we have all infos for joining except the nickname and if we want to bookmark
- Handle xmpp uris received via command line
This was somehow lost once we implemented random resource strings
Although its good that initally a random resource is chosen, it
still should persist across sessions.
This helps to kill zombie client connections on the server because
most servers kill the old session once a new with the same resource
connects
Also dont notify the user about resource conflicts if no custom
resource is set. We should not expect users to know about resources
and what they are used for as long as possible.
Plugins maybe want to use in their activation Gajim methods that
use an extension point. But because the PluginManager Object is not fully
initialized, the extension point method is not available yet
First create the PluginManager Object, then load Plugins.
- This uses also NetworkManager, but also other more low level interfaces
on linux
- This should work cross-platform
- Leave network_watcher.py for now, because it shows how
to use the Gtk dbus interface
- Add support for Pubsub Avatars
- Dont poll for vCard Updates, only use XEP-0153
- Dont cache vCards
- Store the avatar SHA of roster contacts in the DB
- Store the current SHA of each contact in the Contacts Object
- Move some code into the ConnectionVcard Class
If io_add_watch is available like on Linux, the PROCESS_TIMEOUT,
is only used to check for timed out events.
On Window its also used to call select() on the socket, so we get
pending data. We need this as low as possible otherwise Gajim on
Windows feels painfully slow.