Skip to content

Commit db32c94

Browse files
committed
Fix compilation with Qt 6.9
Remove hacky code for exposing enums to QML; re-implement logic in C++
1 parent a34d93e commit db32c94

File tree

6 files changed

+37
-69
lines changed

6 files changed

+37
-69
lines changed

plasmoid/lib/syncthingapplet.cpp

+30-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ SyncthingApplet::SyncthingApplet(QObject *parent, const QVariantList &data)
111111

112112
m_sortFilterDirModel.sort(0, Qt::AscendingOrder);
113113
m_sortFilterDevModel.sort(0, Qt::AscendingOrder);
114-
qmlRegisterUncreatableMetaObject(Data::staticMetaObject, "martchus.syncthingplasmoid", 0, 6, "Data", QStringLiteral("only enums"));
115114
}
116115

117116
SyncthingApplet::~SyncthingApplet()
@@ -226,6 +225,20 @@ QIcon SyncthingApplet::statusIcon() const
226225
return m_statusInfo.statusIcon();
227226
}
228227

228+
QString SyncthingApplet::connectButtonState() const
229+
{
230+
switch (m_connection.status()) {
231+
case Data::SyncthingStatus::Disconnected:
232+
return m_connection.isConnecting() ? QStringLiteral("connecting") : QStringLiteral("disconnected");
233+
case Data::SyncthingStatus::Reconnecting:
234+
return QStringLiteral("connecting");
235+
case Data::SyncthingStatus::Paused:
236+
return QStringLiteral("paused");
237+
default:
238+
return QStringLiteral("idle");
239+
}
240+
}
241+
229242
QString SyncthingApplet::incomingTraffic() const
230243
{
231244
return trafficString(m_connection.totalIncomingTraffic(), m_connection.totalIncomingRate());
@@ -347,6 +360,22 @@ void SyncthingApplet::updateStatusIconAndTooltip()
347360
emit connectionStatusChanged();
348361
}
349362

363+
void SyncthingApplet::triggerConnectButtonAction()
364+
{
365+
switch (m_connection.status()) {
366+
case Data::SyncthingStatus::Disconnected:
367+
m_connection.connect();
368+
break;
369+
case Data::SyncthingStatus::Reconnecting:
370+
break;
371+
case Data::SyncthingStatus::Paused:
372+
m_connection.resumeAllDevs();
373+
break;
374+
default:
375+
m_connection.pauseAllDevs();
376+
}
377+
}
378+
350379
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
351380
void SyncthingApplet::handleRelevantControlsChanged(bool visible, int tabIndex)
352381
{

plasmoid/lib/syncthingapplet.h

+3
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class SyncthingApplet : public Plasma::Applet {
6868
Q_PROPERTY(QString statusText READ statusText NOTIFY connectionStatusChanged)
6969
Q_PROPERTY(QString additionalStatusText READ additionalStatusText NOTIFY connectionStatusChanged)
7070
Q_PROPERTY(QIcon statusIcon READ statusIcon NOTIFY connectionStatusChanged)
71+
Q_PROPERTY(QString connectButtonState READ connectButtonState NOTIFY connectionStatusChanged)
7172
Q_PROPERTY(QString incomingTraffic READ incomingTraffic NOTIFY trafficChanged)
7273
Q_PROPERTY(bool hasIncomingTraffic READ hasIncomingTraffic NOTIFY trafficChanged)
7374
Q_PROPERTY(QString outgoingTraffic READ outgoingTraffic NOTIFY trafficChanged)
@@ -107,6 +108,7 @@ class SyncthingApplet : public Plasma::Applet {
107108
QString additionalStatusText() const;
108109
QIcon statusIcon() const;
109110
QIcon syncthingIcon() const;
111+
QString connectButtonState() const;
110112
QString incomingTraffic() const;
111113
bool hasIncomingTraffic() const;
112114
QString outgoingTraffic() const;
@@ -153,6 +155,7 @@ public Q_SLOTS:
153155
void copyToClipboard(const QString &text);
154156
void openLocalFileOrDir(const QString &dirId, const QString &relativePath);
155157
void updateStatusIconAndTooltip();
158+
void triggerConnectButtonAction();
156159
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
157160
void handleRelevantControlsChanged(bool visible, int index);
158161
#endif

plasmoid/package5/contents/ui/DirectoriesPage.qml

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import QtQml.Models 2.2
44
import org.kde.plasma.components 2.0 as PlasmaComponents // for Menu and MenuItem
55
import org.kde.plasma.components 3.0 as PlasmaComponents3
66
import org.kde.plasma.core 2.0 as PlasmaCore
7-
import martchus.syncthingplasmoid 0.6 as SyncthingPlasmoid
87

98
ColumnLayout {
109
property alias view: directoryView

plasmoid/package5/contents/ui/ToolBar.qml

+2-28
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import QtQuick.Layouts 1.2
44
import org.kde.plasma.components 3.0 as PlasmaComponents3
55
import org.kde.plasma.core 2.0 as PlasmaCore
66
import org.kde.kquickcontrolsaddons 2.0
7-
import martchus.syncthingplasmoid 0.6 as SyncthingPlasmoid
87

98
RowLayout {
109
id: toolBar
@@ -55,33 +54,8 @@ RowLayout {
5554
}
5655
}
5756
]
58-
state: {
59-
switch (plasmoid.nativeInterface.connection.status) {
60-
case SyncthingPlasmoid.Data.Disconnected:
61-
return plasmoid.nativeInterface.connection.connecting ? "connecting" : "disconnected"
62-
case SyncthingPlasmoid.Data.Reconnecting:
63-
return "connecting";
64-
case SyncthingPlasmoid.Data.Paused:
65-
return "paused"
66-
default:
67-
return "idle"
68-
}
69-
}
70-
onClicked: {
71-
switch (plasmoid.nativeInterface.connection.status) {
72-
case SyncthingPlasmoid.Data.Disconnected:
73-
plasmoid.nativeInterface.connection.connect()
74-
break
75-
case SyncthingPlasmoid.Data.Reconnecting:
76-
break
77-
case SyncthingPlasmoid.Data.Paused:
78-
plasmoid.nativeInterface.connection.resumeAllDevs()
79-
break
80-
default:
81-
plasmoid.nativeInterface.connection.pauseAllDevs()
82-
break
83-
}
84-
}
57+
state: plasmoid.nativeInterface.connectButtonState
58+
onClicked: plasmoid.nativeInterface.triggerConnectButtonAction()
8559
PlasmaComponents3.ToolTip {
8660
text: connectButton.text
8761
}

plasmoid/package6/contents/ui/ToolBar.qml

+2-28
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import org.kde.plasma.components 3.0 as PlasmaComponents3
55
import org.kde.plasma.core 2.0 as PlasmaCore
66
import org.kde.kirigami 2.20 as Kirigami
77
import org.kde.kquickcontrolsaddons 2.0
8-
import martchus.syncthingplasmoid 0.6 as SyncthingPlasmoid
98

109
RowLayout {
1110
id: toolBar
@@ -56,33 +55,8 @@ RowLayout {
5655
}
5756
}
5857
]
59-
state: {
60-
switch (plasmoid.connection.status) {
61-
case SyncthingPlasmoid.Data.Disconnected:
62-
return plasmoid.connection.connecting ? "connecting" : "disconnected"
63-
case SyncthingPlasmoid.Data.Reconnecting:
64-
return "connecting";
65-
case SyncthingPlasmoid.Data.Paused:
66-
return "paused"
67-
default:
68-
return "idle"
69-
}
70-
}
71-
onClicked: {
72-
switch (plasmoid.connection.status) {
73-
case SyncthingPlasmoid.Data.Disconnected:
74-
plasmoid.connection.connect()
75-
break
76-
case SyncthingPlasmoid.Data.Reconnecting:
77-
break
78-
case SyncthingPlasmoid.Data.Paused:
79-
plasmoid.connection.resumeAllDevs()
80-
break
81-
default:
82-
plasmoid.connection.pauseAllDevs()
83-
break
84-
}
85-
}
58+
state: plasmoid.connectButtonState
59+
onClicked: plasmoid.triggerConnectButtonAction()
8660
PlasmaComponents3.ToolTip {
8761
text: connectButton.text
8862
}

syncthingconnector/syncthingconnectionstatus.h

-11
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66
#include <QObject>
77

88
namespace Data {
9-
#undef Q_NAMESPACE
10-
#define Q_NAMESPACE
11-
Q_NAMESPACE
12-
extern LIB_SYNCTHING_CONNECTOR_EXPORT const QMetaObject staticMetaObject;
13-
QT_ANNOTATE_CLASS(qt_qnamespace, "") /*end*/
149

1510
/*!
1611
* \brief The SyncthingStatus enum specifies the overall status of the connection to Syncthing via its REST-API.
@@ -32,9 +27,6 @@ enum class SyncthingStatus {
3227
RemoteNotInSync = 8, /**< connected, at least one directory of a connected remote device is not in sync (still synchronizing, error, …) */
3328
NoRemoteConnected = 9, /**< connected to Syncthing but Syncthing is not connected to any remote device */
3429
};
35-
#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
36-
Q_ENUM_NS(SyncthingStatus)
37-
#endif
3830

3931
/*!
4032
* \brief The SyncthingErrorCategory enum classifies different errors related to the SyncthingConnection class.
@@ -45,9 +37,6 @@ enum class SyncthingErrorCategory {
4537
Parsing, /**< an error when parsing Syncthing's response as a JSON document */
4638
TLS, /**< a TLS error occurred */
4739
};
48-
#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
49-
Q_ENUM_NS(SyncthingErrorCategory)
50-
#endif
5140

5241
} // namespace Data
5342

0 commit comments

Comments
 (0)