Changeset View
Changeset View
Standalone View
Standalone View
plugins/clipboard/clipboardplugin.cpp
Show All 26 Lines | |||||
27 | K_PLUGIN_CLASS_WITH_JSON(ClipboardPlugin, "kdeconnect_clipboard.json") | 27 | K_PLUGIN_CLASS_WITH_JSON(ClipboardPlugin, "kdeconnect_clipboard.json") | ||
28 | 28 | | |||
29 | Q_LOGGING_CATEGORY(KDECONNECT_PLUGIN_CLIPBOARD, "kdeconnect.plugin.clipboard") | 29 | Q_LOGGING_CATEGORY(KDECONNECT_PLUGIN_CLIPBOARD, "kdeconnect.plugin.clipboard") | ||
30 | 30 | | |||
31 | ClipboardPlugin::ClipboardPlugin(QObject* parent, const QVariantList& args) | 31 | ClipboardPlugin::ClipboardPlugin(QObject* parent, const QVariantList& args) | ||
32 | : KdeConnectPlugin(parent, args) | 32 | : KdeConnectPlugin(parent, args) | ||
33 | { | 33 | { | ||
34 | connect(ClipboardListener::instance(), &ClipboardListener::clipboardChanged, | 34 | connect(ClipboardListener::instance(), &ClipboardListener::clipboardChanged, | ||
35 | this, &ClipboardPlugin::propagateClipboard); | 35 | this, &ClipboardPlugin::updateClipboard); | ||
36 | } | ||||
37 | | ||||
38 | void ClipboardPlugin::connected() | ||||
39 | { | ||||
40 | propagateClipboard(ClipboardListener::instance()->getCurrentContent()); | ||||
albertvaka: As discussed, use a new packet type so this doesn't affect old apps. Also on Android. | |||||
41 | } | ||||
42 | | ||||
43 | void ClipboardPlugin::updateClipboard(const QString& content) | ||||
44 | { | ||||
45 | propagateClipboard(content); | ||||
36 | } | 46 | } | ||
37 | 47 | | |||
38 | void ClipboardPlugin::propagateClipboard(const QString& content) | 48 | void ClipboardPlugin::propagateClipboard(const QString& content) | ||
39 | { | 49 | { | ||
40 | NetworkPacket np(PACKET_TYPE_CLIPBOARD, {{QStringLiteral("content"), content}}); | 50 | NetworkPacket np(PACKET_TYPE_CLIPBOARD, {{QStringLiteral("content"), content}}); | ||
51 | np.set(QStringLiteral("timestamp"), ClipboardListener::instance()->getUpdateTimestamp()); | ||||
41 | sendPacket(np); | 52 | sendPacket(np); | ||
42 | } | 53 | } | ||
43 | 54 | | |||
44 | bool ClipboardPlugin::receivePacket(const NetworkPacket& np) | 55 | bool ClipboardPlugin::receivePacket(const NetworkPacket& np) | ||
45 | { | 56 | { | ||
57 | if (np.has(QStringLiteral("timestamp"))){ | ||||
sredman: Space before `{` | |||||
58 | qint64 packetTime = np.get<qint64>(QStringLiteral("timestamp")); | ||||
59 | // packetTime is 0 if the paired device did not set the clipboard | ||||
60 | if (packetTime == 0) { | ||||
61 | if (ClipboardListener::instance()->getUpdateTimestamp() != 0){ | ||||
albertvaka: This can be simplified with the other if branch. | |||||
62 | propagateClipboard(ClipboardListener::instance()->getCurrentContent()); | ||||
63 | return true; | ||||
64 | } else { | ||||
65 | return false; | ||||
66 | } | ||||
67 | } else if (packetTime < ClipboardListener::instance()->getUpdateTimestamp()) { | ||||
68 | return false; | ||||
69 | } | ||||
70 | } | ||||
71 | | ||||
46 | QString content = np.get<QString>(QStringLiteral("content")); | 72 | QString content = np.get<QString>(QStringLiteral("content")); | ||
73 | if (content != ClipboardListener::instance()->getCurrentContent()) { | ||||
47 | ClipboardListener::instance()->setText(content); | 74 | ClipboardListener::instance()->setText(content); | ||
48 | return true; | 75 | return true; | ||
76 | }else{ | ||||
sredman: `} else {` (Spaces) | |||||
77 | return false; | ||||
78 | } | ||||
79 | | ||||
80 | return true; | ||||
49 | } | 81 | } | ||
50 | 82 | | |||
51 | #include "clipboardplugin.moc" | 83 | #include "clipboardplugin.moc" |
As discussed, use a new packet type so this doesn't affect old apps. Also on Android.