kdeconnect-kde/plugins
Simon Redman a7db3ab5e1 [Desktop] Update conversation list when a new message arrives
Summary:
When a new message is delivered, the conversation list should update by changing the preview text and re-sorting the conversations

Bonus bug discovered and fixed:  previously, when the conversations list was being populated, it made a request for the first message in every conversation. This would be fine if the conversationdbusinterface pulled from local cache. However, this actually triggers a request to the phone for *every* conversation.

This should be handled differently in conversationdbusinterface's requestConversation as well, but that's a project for a later day (TODO comments added)

Test Plan:
 - Launch SMS app
 - Verify conversations list appears
 - Verify lack of massive stream of debug output indicating lots of messages for the wrong conversation are being received
 - Verify that opening a particular conversation shows the messages after a short delay while the backend fetches the content from the phone
 - Verify that receiving a new message into an existing conversation updates the conversation list

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: nicolasfella, apol, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D15608
2018-10-07 21:46:39 -06:00
..
battery Build kdeconnect on sailfish and port some simple plugins 2018-08-02 20:10:59 +01:00
clipboard SVN_SILENT made messages (.desktop file) - always resolve ours 2018-06-18 05:27:46 +02:00
contacts Fix minor EBN issues and typos 2018-10-07 21:23:20 +03:00
findmyphone SVN_SILENT made messages (.desktop file) - always resolve ours 2018-06-21 05:33:36 +02:00
findthisdevice SVN_SILENT made messages (.desktop file) - always resolve ours 2018-08-18 05:41:47 +02:00
lockdevice SVN_SILENT made messages (.desktop file) - always resolve ours 2018-10-05 05:52:20 +02:00
mousepad Fix crashing devicetest 2018-07-12 16:14:44 +02:00
mpriscontrol SVN_SILENT made messages (.desktop file) - always resolve ours 2018-06-21 05:33:36 +02:00
mprisremote SVN_SILENT made messages (.desktop file) - always resolve ours 2018-06-18 05:27:46 +02:00
notifications Fix minor EBN issues and typos 2018-10-07 21:23:20 +03:00
pausemusic SVN_SILENT made messages (.desktop file) - always resolve ours 2018-08-04 05:41:07 +02:00
ping SVN_SILENT made messages (.desktop file) - always resolve ours 2018-06-18 05:27:46 +02:00
remotecommands SVN_SILENT made messages (.desktop file) - always resolve ours 2018-07-19 05:21:27 +02:00
remotecontrol Show icons in plugin list 2018-08-03 02:25:39 +02:00
remotekeyboard SVN_SILENT made messages (.desktop file) - always resolve ours 2018-08-18 05:41:47 +02:00
runcommand Remove characters from UUID that aren't legal in URLs 2018-08-01 11:10:14 +02:00
screensaver-inhibit SVN_SILENT made messages (.desktop file) - always resolve ours 2018-06-21 05:33:36 +02:00
sendnotifications Fix minor EBN issues and typos 2018-10-07 21:23:20 +03:00
sftp Fix minor EBN issues and typos 2018-10-07 21:23:20 +03:00
share SVN_SILENT made messages (.desktop file) - always resolve ours 2018-06-21 05:33:36 +02:00
sms [Desktop] Update conversation list when a new message arrives 2018-10-07 21:46:39 -06:00
systemvolume SVN_SILENT made messages (.desktop file) - always resolve ours 2018-09-22 06:01:11 +02:00
telephony Correct braces and add contributors 2018-10-06 21:59:15 -06:00
CMakeLists.txt Split SMS and Telephony plugin on desktop 2018-09-10 11:31:05 +02:00
kdeconnect.notifyrc SVN_SILENT made messages (.desktop file) - always resolve ours 2018-08-27 05:46:19 +02:00
kdeconnect_plugin.desktop SVN_SILENT made messages (.desktop file) - always resolve ours 2018-06-18 05:27:46 +02:00
Messages.sh Figure out Messages.sh after code refactoring 2014-06-17 18:45:47 +02:00
README.txt Fix typos 2018-07-27 15:00:23 +02: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".
1. 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.desktop 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 findmyplugin.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).
1. 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. Open src/org/kde/kdeconnect/Plugins/PluginFactory.java.
  A. Copy "import … PingPlugin" line with replacing "PingPlugin" with "FindMyPhonePlugin".
  B. Copy "PluginFactory.registerPlugin(PingPlugin.class);" line with replacing "PingPlugin" with "FindMyPhonePlugin".
8. Open src/org/kde/kdeconnect/NetworkPacket.java. Copy a "public final static String PACKET_TYPE_PING = …" line
   replacing "PING" with the packet type you will be using (should match the desktop client).
9. Now you have an empty skeleton to implement your new plugin logic.