Commit graph

1537 commits

Author SHA1 Message Date
Prajna Sariputra
383ad27b59 [plugins/mousepad]: Add support for the persistence feature of the RemoteDesktop portal
This allows us to avoid asking the user for permission for remote control on Wayland every time kdeconnectd is restarted for whatever reason (for example logging out or rebooting), at least in theory. The idea is that the SelectDevices call now also accepts a restore token, and if the user grants permission to persist a restore token will be returned in the response of the Start call.

Currently https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/merge_requests/265 is required for this to work at all with Plasma 6, and even then persistence only works in the same session (for example if I restart kdeconnectd then I only get the notification instead of the permissions prompt), if I reboot the system then the token gets invalidated and the permissions dialog appears again, not sure if the issue is with what I'm doing here or if that's a bug in the portal.

Things that need to be checked:
- What happens if the portal implementation only has v1 of the protocol and not v2 (the one with persistence)?
  - In particular what happens for the SelectDevices call if a restore token is given despite the portal not supporting it
    - Seems fine with xdg-desktop-portal 1.14.4 at least 
  - For the Start call we'll need to handle the case of the user denying the persistence request anyway
- Where and how should the restore token be stored?
  - ~~I used KConfig just so I have something to test, but the restore token isn't really a setting~~
    - Updated to use `KSharedConfig::openStateConfig`
  - Most of KDE Connect's settings and data appear to be for each connected device
  - The device name is a global setting, but it's implemented using QSettings rather than KConfig, and currently only setName and getName is exposed in `core/kdeconnectconfig.h`


BUG: 479013
2024-01-28 14:00:05 +00:00
Nicolas Fella
2e99c37122 [plugins/telephony] Clear actions before creating new notification action
Otherwise we accumulate them

BUG: 479904
2024-01-22 13:52:18 +00:00
l10n daemon script
22a097198d SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2024-01-19 01:11:56 +00:00
l10n daemon script
59dd54a115 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2024-01-15 01:13:08 +00:00
l10n daemon script
ad23ac6b0d SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2024-01-14 01:12:55 +00:00
l10n daemon script
f0b5fb65fa SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2024-01-08 02:08:57 +00:00
Tobias C. Berner
e7fd4257bf Use pkg-configs imported target to link against DBus
To use -ldbus, the value of ${DBus_LIBARARY_DIR} would also need to be
added to the linker search paths.

To get around this, simply use the imported target by pkgconfig.

[1] b8b30ba571
2024-01-07 11:42:23 +01:00
l10n daemon script
1197e473f7 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-12-30 02:10:33 +00:00
Andreas Sturmlechner
6e99c00d76
Drop obsolete QT_VERSION_CHECK ifdefs from code
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
2023-12-28 19:18:02 +01:00
Andreas Sturmlechner
79bc9a85e4 Cleanup all occurences of QT_MAJOR_VERSION in cmake
Follow-up to 7f03aa548c

Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
2023-12-28 17:49:07 +01:00
l10n daemon script
46e808e076 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-12-28 02:06:08 +00:00
l10n daemon script
5476511e8b SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-12-26 02:06:05 +00:00
Aleix Pol
d7f09103a2 notifications: Fix actions on kf6
We'd be adding them over and over when reusing them.
2023-12-13 22:59:34 +00:00
l10n daemon script
7cc0249ecd SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-12-10 01:17:24 +00:00
Alexander Lohnau
dc8f3e209e Reformat project with clang-format 2023-12-02 14:56:20 +01:00
l10n daemon script
871fcf0cd1 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-11-17 01:18:34 +00:00
ivan tkachenko
5db4263af6
Port implicit default content items to use contentItem: property
See also
https://invent.kde.org/frameworks/kirigami/-/merge_requests/1338
and
https://invent.kde.org/frameworks/kirigami/-/merge_requests/1340
2023-11-09 00:06:14 +03:00
l10n daemon script
d3c2d52c3b SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-11-07 02:12:13 +00:00
Nicolas Fella
0343c9401d Port to new KNotifications action API 2023-11-04 13:40:22 +01:00
l10n daemon script
4b1b1b9b14 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-11-04 11:52:33 +00:00
l10n daemon script
b042e1f78a SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-10-25 01:23:11 +00:00
l10n daemon script
acdd83e100 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-10-21 01:20:48 +00:00
l10n daemon script
1e3882c284 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-10-12 01:20:32 +00:00
l10n daemon script
028f1c938d SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-09-25 01:22:07 +00:00
Albert Vaca Cintora
d721f72a9b Iterate KFilePlacesModel instead of using closestItem to remove SFTP entries
Fixes bug where we could miss entries due to `closestItem()` skipping hidden items. It is also more performant.

BUG: 461872
2023-09-22 19:51:25 +00:00
Albert Vaca Cintora
6df3d093e1 Make sure %1 is kept in the final string 2023-09-18 23:31:38 +02:00
Fushan Wen
b43432326b
QImage: use rvalue overloads more
to reuse internal buffers
2023-09-16 20:01:55 +08:00
Albert Vaca Cintora
66cf7093fb Fix SFTP plugin, m_mounter was not initialized
BUG: 474552
2023-09-16 01:11:00 +02:00
Albert Vaca Cintora
cdcf44efa8 Remove photo plugin
As discussed in Matrix and BUG: 474121 this plugin is confusing (because
it doesn't actually take a photo, it just launches the camera on your
phone) and its use case can be covered by taking a photo and sharing it,
which only requires a couple extra clicks.
2023-09-15 23:04:17 +00:00
Albert Vaca Cintora
89548932a6 Fix remote keyboard sending "space" when pressing space
I believe this was broken in https://invent.kde.org/network/kdeconnect-kde/-/merge_requests/543

BUG: 473956
2023-09-07 17:55:02 +00:00
Albert Vaca Cintora
4d5474db7b Fix SFTP plugin on Windows
Broken by https://invent.kde.org/network/kdeconnect-android/-/merge_requests/320
2023-09-06 04:44:04 +02:00
l10n daemon script
b7982c3724 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-08-29 01:36:14 +00:00
Albert Vaca Cintora
5a27c93538 Windows MPRIS: Add a "default player" entry
This sends generic multimedia keyboard events, since the implementation
using GlobalSystemMediaTransportControlsSessionManager had some problems:
the SessionsChanged event doesn't work on recent Windows versions,
plus many players don't implement this API (eg: VLC, Windows Media).
2023-08-28 17:31:26 +00:00
Alexander Lohnau
cfde9ced77 Also use QLatin1String::arg in remaining places
This is more readable, slightly faster at runtime and results in a slightly smaller binary size
2023-08-28 17:20:46 +00:00
Alexander Lohnau
88d89e7211 Use std::unique_ptr for pimpl classes
This is consistent with what we do in frameworks
2023-08-28 17:20:46 +00:00
Alexander Lohnau
c3b4103d0c plugins/sftp: Do not use pimpl for d-ptr
This doesn't make sense, because it is a plugin class and not exported
2023-08-28 17:20:46 +00:00
Alexander Lohnau
69d6c17214 plugins: Use QLatin1String::arg for faster and simpler string concatination
Using an infix with .arg() is simpler than having two string literals
2023-08-28 17:20:46 +00:00
Albert Vaca Cintora
7bbc8b0e7d Reformat sshfs arguments so they are easier to read 2023-08-24 18:21:42 +02:00
Albert Vaca Cintora
45615f8acf Cleanup signals and slots in SftpPlugin 2023-08-24 18:15:26 +02:00
Fushan Wen
c4ce19e9cd
plugins/sendnotifications: add support for Windows 2023-08-21 09:52:23 +08:00
Nicolas Fella
70857972fc Add missing QtWidgets link 2023-08-19 00:17:05 +02:00
Albert Vaca Cintora
ed7758f996 Do not forward kdeconnect notifications 2023-08-14 10:47:12 +02:00
Albert Vaca Cintora
b8b30ba571 Use libdbus instead of GIO to listen for notifications
This fixes the `Error calling StartServiceByName for org.gtk.vfs.Daemon` message and subsequent crash if both the Receive Notifications plugin and Send Notifications plugin where enabled and we received a notification.

Most of the code comes from the SailfishConnect implementation here: https://github.com/R1tschY/harbour-sailfishconnect/blob/master/plugins/sf_sendnotifications/notificationslistener.cpp
2023-08-13 19:43:59 +00:00
Albert Vaca Cintora
97f245767d Somehow fix Qt6 build 2023-08-09 20:26:57 +02:00
Albert Vaca Cintora
5cc2043c35 Update old-style connect/disconnect where possible 2023-08-08 22:51:30 +02:00
Albert Vaca Cintora
b97cbaa5d0 Remove duplicate target_sources 2023-08-08 17:01:21 +02:00
Alexander Lohnau
ed1e24d231 kdeconnect_add_plugin: Autogenerate logging category
This is far less code and allows for an easier enforcing of standards, for
example the name of the log identifiers which were adjusted in a few cases.

Also clean up unused includes when noticed.
2023-08-07 19:47:41 +02:00
Alexander Lohnau
7feb3bdd0d Remove unneeded setting of C++17 standard 2023-08-07 19:47:15 +02:00
Alexander Lohnau
cdc8428542 Create kdeconnect_add_kcm cmake function
This way, the namespace info is not duplicated within the buildsystem and we have a more reasonable place to put the QML file install into
2023-08-07 19:28:37 +02:00
Alexander Lohnau
e598a997e7 Use initializer list syntax where appropiate 2023-08-07 19:28:37 +02:00
Alexander Lohnau
c5e7fdb5e4 plugins: Prefer using statements with baseclass over empty constructor
Those plugins re really simple and don't need any initialization logic.
With the using statement, we do not need to add a constructor and pass the parent/args to the baseclass
2023-08-07 19:28:37 +02:00
Alexander Lohnau
405f61bf85 Discard unused params more elegantly
By commenting out the parameter name, we get compile-time checks
Also, we can omit them for slots and Qt will not forward the parameters.

In case we had TODOs next to the code, I kept the Q_UNUSED statements
for now.
2023-08-05 20:22:18 +00:00
Alexander Lohnau
46feeda0cb Remove unused default destructors
Overriding and defaulting them in the header doesn't make sense

For the dbus interfaces, we don't have any reasources to clean up or memory to be released. Meaning we can drop those lines too
2023-08-05 20:22:18 +00:00
Alexander Lohnau
83888412a9 Simplify and optimize some string usages
- Using QLatin1String when concatinating strings is faster, because they
  are more lightweight. For the resulting string, we need to allocate
  new memory anyway
- Use QLatin1String overloads where they are provided by Qt APIs
- Just use const char* for log messages, the quoting of QStrings is not
  needed
- Make sure to reuse string results when possible
2023-08-05 20:22:18 +00:00
Albert Vaca Cintora
abb6dfcc6e plugins: Add context-aware logging in case of errors
Also clean up some unneeded statements
2023-08-03 20:54:38 +02:00
Alexander Lohnau
1631ada5b3 Simplify KDEConnectPlugin::recievePacket
- We do not need the return type. If a plugin declares it can handle the
  packet it should do so. We don't have any fallback logic in place and
  the packet types are namespaced with the plugin IDs anyway.

- Provide a default implementation with a warning, not all plugins need
  to overwrite this
2023-08-03 20:49:44 +02:00
l10n daemon script
b0a122089d SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-08-01 01:39:50 +00:00
Albert Vaca Cintora
94903b6957 Actually fix the MacOS build 2023-07-31 23:04:08 +02:00
Albert Vaca Cintora
829fb8db79 Remove .h file in target_sources 2023-07-31 22:08:28 +02:00
Albert Vaca Cintora
135e3df17b Hopefully fix the MacOS build 2023-07-31 22:01:32 +02:00
Albert Vaca Cintora
b82b88840d Disable mpriscontrol plugin on Mac 2023-07-31 11:19:06 +02:00
Alexander Lohnau
b165a03909 plugins/pausemusic: Clean up/modernize CMake code 2023-07-31 06:39:08 +00:00
Alexander Lohnau
6300e9d0c6 Enable Qt6 CI 2023-07-31 06:39:08 +00:00
Alexander Lohnau
b54e739753 Do not make m_ui instance a ptr
By having it as a simple member variable, we do not need to take care of deleting it manually
2023-07-30 07:27:45 +00:00
Alexander Lohnau
2e67f95017 Add explicit moc includes to cpp files
The rationale is explained in https://planet.kde.org/friedrich-kossebau-2023-06-28-include-also-moc-files-of-headers/

In case of KDEConnect, it impressively speeds up compilation. Before it
took 390 seconds on a clean build and with this change it took 330 seconds.
This is due to the mocs_compilation having to include the header files
and thus all their headers. Due to the lots of small plugins we have,
this means that the same headers must be compiled plenty of times.
When we include the moc files directly in the C++ file, they are already
available.
2023-07-30 07:27:45 +00:00
l10n daemon script
1ff98bc580 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-07-30 01:37:54 +00:00
l10n daemon script
297bc8cd73 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-07-29 01:37:09 +00:00
l10n daemon script
885d311b31 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-07-28 01:41:47 +00:00
l10n daemon script
d9f7fc6918 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-07-27 01:37:50 +00:00
l10n daemon script
a0b0477b13 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-07-26 01:38:38 +00:00
Alexander Lohnau
e00ffbb4f6 Use versionless cmake variable for KF requirements
Also, adjust find_package calls that are hidden behind a feature flag
2023-07-25 18:29:38 +02:00
Alexander Lohnau
a1195a72a3 Use versionless Qt targets where possible
We depend on 5.15 which allows us to use those
2023-07-25 18:29:38 +02:00
Albert Vaca Cintora
6e8abd75e8 Do not use optionals when they are not needed 2023-07-25 17:22:20 +02:00
l10n daemon script
7efcc8bbda SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-07-25 01:37:00 +00:00
Albert Vaca Cintora
59adbc2da4 Move all generated dbus interfaces to kdeconnectinterfaces exclude them from clazy
* Moves the XML definitions of DBus interfaces and code generation from the different plugins
  to kdeconnectinterfaces. Before each plugin had their own, some of them duplicated.
* Appends `// clazy:skip` to the generated interface files, so Clazy doesn't emit warnings
  about them because they are missing the NOTIFY/CONSTANT keywords on Q_PROPERTIES.
* Makes kdeconnectinterfaces static on Qt5 as well (removes a difference with Qt6).
* Moves the generated files to a `generated` directory and updates the includes so they are
  easily distinguished from other header files.
2023-07-24 12:18:47 +00:00
l10n daemon script
9bb076584b SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-07-24 08:31:14 +00:00
Alexander Lohnau
7091f333f9 Do not mark plugin classes as exported
This is not needed, because only a symbol to create the KPluginFactory
instance must be exported. The KPluginFactory macros or rather the underlying
Q_PLUGIN_METADATA macro already take care of that.

In other plugin code of KDE, we also do not export classes.
The size of the generated plugin files is nearly identical, but removing
the macros avoids confusion for developers.
2023-07-22 20:51:19 +00:00
Alexander Lohnau
75a8db1ec5 Use pragma once in plugins
For non-library code, this is simpler and more concise
2023-07-22 20:51:19 +00:00
Alexander Lohnau
b7cf34c11f Simplify slots of some KCMs
Remove Q_SLOTS where not needed, use lambda if we only connect/call it in one place
2023-07-22 20:51:19 +00:00
Alexander Lohnau
f483c1449c Use simpler K_PLUGIN_CLASS macro for KCMs 2023-07-22 20:51:19 +00:00
Alexander Lohnau
ede9e37b40 Use KPluginMetaData::pluginId for getting config plugin name
By removing the postfix we consistently use, we get exactly the same string as before

However, all our pluginId logic is now done as part of the buildsystem.
Before, they were in the JSON metadata, the buildsystem and the string constructor parameter

KPluginFactory has the KPluginMetaData object in any case, do using it
doesn't create any overhead.
2023-07-22 20:51:19 +00:00
Alexander Lohnau
98040c3ffe GIT_SILENT Re-run clang-format 2023-07-22 20:51:19 +00:00
Alexander Lohnau
35a450f366 Port to new PMF connect syntax
This way we catch missing methods/mismatching arguments at compile and
not at runtime.
This fixes some Qt6 regressions due to the removal of deprecated methods.
2023-07-22 20:51:19 +00:00
Alexander Lohnau
c61fad5561 Do not make virtual methods of KCModule Q_SLOT
We do not need those methods to be marked as slots and the KCMUtils
classes like KPluginWidget also don't need it.
Meaning it just results in more moc code being generated.
2023-07-22 20:51:19 +00:00
Alexander Lohnau
9fdc2901b2 Use target-centric CMake approach rest of logging categories 2023-07-22 20:51:19 +00:00
Alexander Lohnau
41d474b1a5 findthisdeviceplugin_config: Check for URL before trying to play sound
Having a clear button and then emitting a warning if an enabled button is clicked doesn't really make sense.
2023-07-22 20:51:19 +00:00
Alexander Lohnau
f740a8bda8 Use target-centric CMake approach for declaring debug category
This makes it easier to read, because we do not have to handle a list of
files that get added to the targets. In other KDE projects, we also
prefer the target centric approach.

In case one wants to reuse the same category in multiple places, it
would be best to create a small static lib. But for now, this is not
needed.
2023-07-22 20:51:19 +00:00
Alexander Lohnau
999f8e00de Remove explicit plugin Id
The one derived from the filename is identical. Deriving it from the filename is the preferred approach.
In KF6, log messages are printed out if the Id is needlessly specified.
A mismatching Id vs basename would print out a warning.
2023-07-22 20:51:19 +00:00
Alexander Lohnau
319696c445 Remove version and website metadata for plugins
The plugin version doesn't matter, because all plugins are shipped as
part of kdeconnect and not separately.
The website was also set inconsistently, some pointed to a custom blog,
the KDE homepage or a broken link. If we want to make announcements more
visible, we should have a link in a more central place.
2023-07-22 19:12:33 +02:00
Alexander Lohnau
4ca8f98b7d Remove obsolete ServiceTypes definitions
Task: https://phabricator.kde.org/T14483
2023-07-22 19:12:33 +02:00
Alexander Lohnau
f3998e4b5f Fix windows build issues
- Add dummy args param to QProcess::startDetached
- Remove logging category from inline snippet. This was removed due to
  being unused in non-windows builds.
2023-07-22 19:12:28 +02:00
Alexander Lohnau
ac3d439a2a Clean up unneeded version checks
With the min. version bumped, those can be safely removed
2023-07-22 16:17:24 +02:00
Alexander Lohnau
1ee75463e0 Get rid of QOverload/static_cast for overloaded signals
By exclusing deprecated API in the KF5 build, the deprecated signal no
longer cause an ambiguity
2023-07-22 16:17:24 +02:00
Alexander Lohnau
e97af9dc15 Provide default implementation for KdeConnectPlugin::connected
In most plugins, we just provided a dummy implementation
2023-07-22 16:06:21 +02:00
Alexander Lohnau
0b99c3a637 Remove unneeded destructors from plugins
We already have a destructor from the baseclass and don't need to clean
up any resources in the affected plugins
2023-07-22 16:01:21 +02:00
Albert Vaca Cintora
a33eb46d9b Fix crash due to begin and end belonging to different iterators 2023-07-22 15:13:34 +02:00
l10n daemon script
b7c84d3398 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-07-22 01:45:05 +00:00
l10n daemon script
2b67cefe39 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-07-21 01:47:33 +00:00
Albert Vaca Cintora
382ace9c69 Remove check for Qt > 5.14 when minimum is 5.15 2023-07-20 18:23:45 +02:00
Alexander Lohnau
b8c6e529ba Port QMultiMedia usage for Qt6 2023-07-20 13:32:17 +03:00