From af9fa001dac49eedc76e15613b67abfd097105f3 Mon Sep 17 00:00:00 2001
From: Ilya Fedin <fedin-ilja2010@ya.ru>
Date: Sun, 24 Oct 2021 04:25:58 +0400
Subject: [PATCH] Fix build with Qt 6

---
 src/dbusmenuexporter.cpp   |  3 ++-
 src/dbusmenuimporter.cpp   |  1 +
 src/dbusmenushortcut_p.cpp | 27 +++++++++++++++++++++++++++
 src/dbusmenushortcut_p.h   |  4 ++++
 4 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/src/dbusmenuexporter.cpp b/src/dbusmenuexporter.cpp
index f30ce11..9bb5c10 100644
--- a/src/dbusmenuexporter.cpp
+++ b/src/dbusmenuexporter.cpp
@@ -29,6 +29,7 @@
 #include <QTimer>
 #include <QToolButton>
 #include <QWidgetAction>
+#include <QActionGroup>

 // Local
 #include "dbusmenu_config.h"
@@ -484,7 +485,7 @@ void DBusMenuExporter::activateAction(QAction *action)
 {
     int id = d->idForAction(action);
     DMRETURN_IF_FAIL(id >= 0);
-    uint timeStamp = QDateTime::currentDateTime().toTime_t();
+    uint timeStamp = QDateTime::currentDateTime().toSecsSinceEpoch();
     d->m_dbusObject->ItemActivationRequested(id, timeStamp);
 }

diff --git a/src/dbusmenuimporter.cpp b/src/dbusmenuimporter.cpp
index ce6ef18..94abb59 100644
--- a/src/dbusmenuimporter.cpp
+++ b/src/dbusmenuimporter.cpp
@@ -34,6 +34,7 @@
 #include <QTimer>
 #include <QToolButton>
 #include <QWidgetAction>
+#include <QActionGroup>

 // Local
 #include "dbusmenutypes_p.h"
diff --git a/src/dbusmenushortcut_p.cpp b/src/dbusmenushortcut_p.cpp
index 29d2e58..9f4fc0a 100644
--- a/src/dbusmenushortcut_p.cpp
+++ b/src/dbusmenushortcut_p.cpp
@@ -22,6 +22,7 @@

 // Qt
 #include <QtGui/QKeySequence>
+#include <QtDBus/QDBusArgument>

 // Local
 #include "debug_p.h"
@@ -83,3 +84,29 @@ QKeySequence DBusMenuShortcut::toKeySequence() const
     QString string = tmp.join(QLatin1String(", "));
     return QKeySequence::fromString(string);
 }
+
+QDBusArgument &operator<<(QDBusArgument &argument, const DBusMenuShortcut &obj)
+{
+    int id = qMetaTypeId<QStringList>();
+    argument.beginArray(id);
+    typename DBusMenuShortcut::ConstIterator it = obj.constBegin();
+    typename DBusMenuShortcut::ConstIterator end = obj.constEnd();
+    for ( ; it != end; ++it)
+        argument << *it;
+    argument.endArray();
+    return argument;
+}
+
+const QDBusArgument &operator>>(const QDBusArgument &argument, DBusMenuShortcut &obj)
+{
+    argument.beginArray();
+    obj.clear();
+    while (!argument.atEnd()) {
+        QStringList item;
+        argument >> item;
+        obj.push_back(item);
+    }
+    argument.endArray();
+
+    return argument;
+}
diff --git a/src/dbusmenushortcut_p.h b/src/dbusmenushortcut_p.h
index e26dd8c..d62c272 100644
--- a/src/dbusmenushortcut_p.h
+++ b/src/dbusmenushortcut_p.h
@@ -30,6 +30,7 @@


 class QKeySequence;
+class QDBusArgument;

 class DBUSMENU_EXPORT DBusMenuShortcut : public QList<QStringList>
 {
@@ -40,4 +41,7 @@ class DBUSMENU_EXPORT DBusMenuShortcut : public QList<QStringList>

 Q_DECLARE_METATYPE(DBusMenuShortcut)

+DBUSMENU_EXPORT QDBusArgument &operator<<(QDBusArgument &argument, const DBusMenuShortcut &);
+DBUSMENU_EXPORT const QDBusArgument &operator>>(const QDBusArgument &argument, DBusMenuShortcut &);
+
 #endif /* DBUSMENUSHORTCUT_H */
