kdeconnect-kde/plugins
Arjan Marku 16ccee7ac9 fix: don't send clipboard network packets on empty text
If you lock the screen in EndeavourOS, a signal KSystemClipboard:changed is emitted with empty text and clipboard mode QClipboard::Clipboard. Upon unlock the clipboard will be re-synced.

A clipboard network packet will be sent for KSystemClipboard::changed signals if:
1. the received mode is QClipboard::Clipboard
2. the new content and its type are different from the current ones.

The problem here is that, before locking the screen, current content is not empty. As of condition #2, a network packet with the empty text will be sent, which clears the current clipboard selection in GBoard but the contents stay the same. Upon re-sync in unlock, a packet will be sent again due to #2.

This commit aims to fix this by ignoring empty text updates since from the end-user it unnecessarily clears the current clipboard selection and results in many "Copied to clipboard" toasts.
2024-08-12 11:06:11 +00:00
..
battery Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
bigscreen Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
clipboard fix: don't send clipboard network packets on empty text 2024-08-12 11:06:11 +00:00
connectivity-report Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
contacts Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
findmyphone Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
findthisdevice Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
lockdevice Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
mmtelephony Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
mousepad Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
mpriscontrol Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
mprisremote Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
notifications Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
pausemusic Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
ping Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
presenter Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
remotecommands Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
remotecontrol Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
remotekeyboard Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
remotesystemvolume Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
runcommand Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
screensaver-inhibit Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
sendnotifications Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
sftp Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
share Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
sms Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
systemvolume Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
telephony Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
virtualmonitor Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
CMakeLists.txt Cleanup all occurences of QT_MAJOR_VERSION in cmake 2023-12-28 17:49:07 +01:00
kdeconnect.notifyrc SVN_SILENT made messages (.desktop file) - always resolve ours 2024-07-30 01:23:49 +00:00
kdeconnect.schema.json Add custom JSON schema, extending KPluginMetaData and enforcing KDE-Connect specific keys 2024-08-12 11:01:22 +00:00
Messages.sh Figure out Messages.sh after code refactoring 2014-06-17 18:45:47 +02:00
README.txt Fix file name on plugin's readme. 2022-11-27 01:40:51 +00:00

Writing a plugin for KDE Connect
=================================

For the desktop client (this project):
--------------------------------------

1. Enter the "plugins" directory.
2. Copy the "ping" under a different name ("findmyphone" in this example).
3. Add "add_subdirectory(findmyphone)" to CMakeLists.txt after the others "add_subdirectory".
4. Enter the new "findmyphone" directory.
5. Edit CMakeLists.txt by replacing "ping" with "findmyphone".
6. Rename other files in this directory by replacing "ping" with "findmyphone"
7. Write a description of your plugin into "README"
8. Edit findmyphoneplugin.cpp and findmyphoneplugin.h.
  A. Change license header.
  B. Replace (case sensitive) "ping" with "findmyphone", "PingPlugin" with "FindMyPhonePlugin" and "PING" with "FINDMYPHONE".
9. Edit kdeconnect_findmyphone.json file:
  A. Replace "ping" with "findmyphone".
  B. Change name, description, icon, author, email, version, website, license info.
  C. Remove all the translations
  D. Set X-KDEConnect-SupportedPacketType and X-KDEConnect-OutgoingPacketType to the packet type your plugin will receive
     and send, respectively. In this example this is "kdeconnect.findmyphone". Make sure that this matches what is defined in
     the findmyphoneplugin.h file (in the line "#define PACKET_TYPE_..."), and also in Android.
10. Now you have an empty skeleton to implement your new plugin logic.

For Android (project kdeconnect-android):
-----------------------------------------

1. Change directory to src/org/kde/kdeconnect/Plugins.
2. Copy "PingPlugin" under a different name ("FindMyPhonePlugin" in this example).
3. Enter the new "FindMyPhonePlugin" directory.
4. Rename "PingPlugin.java" to "FindMyPhonePlugin.java"
5. Edit it. Replace (case sensitive) "Ping" with "FindMyPhone", "ping" with "findmyphone", "PING" with "FINDMYPHONE"
   and "plugin_ping" with "plugin_findmyphone".
6. Open res/values/strings.xml. Find and copy the lines "pref_plugin_ping_desc" and "pref_plugin_ping" replacing "ping"
   with "findmyphone" and edit the plugin name and description between <string> </string>).
7. Now you have an empty skeleton to implement your new plugin logic.