diff --git a/dbus/org.nemo.ssu.xml b/dbus/org.nemo.ssu.xml
index f23f828..e9711ee 100644
--- a/dbus/org.nemo.ssu.xml
+++ b/dbus/org.nemo.ssu.xml
@@ -93,6 +93,11 @@
+
+
+
+
+
diff --git a/ssu.pro b/ssu.pro
index e034f15..5be9a7f 100644
--- a/ssu.pro
+++ b/ssu.pro
@@ -31,13 +31,3 @@ static_config.files = repos.ini ssu-defaults.ini board-mappings.ini
static_config.path = /usr/share/ssu
INSTALLS += config static_config oneshot macros
-
-system(qdbusxml2cpp \
- -c SsuAdaptor \
- -a ssud/ssuadaptor.h:ssud/ssuadaptor.cpp \
- dbus/org.nemo.ssu.xml)
-
-system(qdbusxml2cpp \
- -c SsuProxy \
- -p ssucli/ssuproxy.h:ssucli/ssuproxy.cpp \
- dbus/org.nemo.ssu.xml)
diff --git a/ssucli/ssucli.cpp b/ssucli/ssucli.cpp
index 23cf14e..5cd7578 100644
--- a/ssucli/ssucli.cpp
+++ b/ssucli/ssucli.cpp
@@ -22,6 +22,8 @@
SsuCli::SsuCli()
: QObject()
{
+ qDBusRegisterMetaType();
+
connect(this, SIGNAL(done()),
QCoreApplication::instance(), SLOT(quit()), Qt::DirectConnection);
connect(&ssu, SIGNAL(done()),
diff --git a/ssucli/ssucli.h b/ssucli/ssucli.h
index 924557a..4bf81ed 100644
--- a/ssucli/ssucli.h
+++ b/ssucli/ssucli.h
@@ -14,7 +14,7 @@
#include
#include "libssu/ssu.h"
-#include "ssuproxy.h"
+#include "ssu_interface.h"
class SsuCli: public QObject
{
diff --git a/ssucli/ssucli.pro b/ssucli/ssucli.pro
index cbc8b09..eb3b7c8 100644
--- a/ssucli/ssucli.pro
+++ b/ssucli/ssucli.pro
@@ -5,8 +5,11 @@ include(ssucli_dependencies.pri)
QT += network dbus
CONFIG += link_pkgconfig
-HEADERS = ssucli.h \
- ssuproxy.h
+HEADERS = ssucli.h
SOURCES = main.cpp \
- ssucli.cpp \
- ssuproxy.cpp
+ ssucli.cpp
+
+ssu_dbus_interface.files = ../dbus/org.nemo.ssu.xml
+ssu_dbus_interface.source_flags = -c SsuProxy
+ssu_dbus_interface.header_flags = -c SsuProxy -i ssud/ssud_dbus.h
+DBUS_INTERFACES += ssu_dbus_interface
diff --git a/ssud/ssud.cpp b/ssud/ssud.cpp
index 2af9181..5e702a0 100644
--- a/ssud/ssud.cpp
+++ b/ssud/ssud.cpp
@@ -6,7 +6,7 @@
*/
#include "ssud.h"
-#include "ssuadaptor.h"
+#include "ssu_adaptor.h"
#include "libssu/ssudeviceinfo.h"
#include "libssu/ssurepomanager.h"
@@ -19,6 +19,8 @@ const char *Ssud::OBJECT_PATH = "/org/nemo/ssu";
Ssud::Ssud(QObject *parent)
: QObject(parent)
{
+ qDBusRegisterMetaType();
+ qDBusRegisterMetaType>();
QDBusConnection connection = QDBusConnection::systemBus();
if (!connection.registerObject(OBJECT_PATH, this)) {
qFatal("Cannot register object at %s", OBJECT_PATH);
@@ -231,3 +233,21 @@ void Ssud::updateRepos()
repoManager.update();
autoclose.start();
}
+
+QList Ssud::listRepos(bool rnd)
+{
+ QList reposList;
+ SsuRepoManager repoManager;
+
+ for (const QString &repo : repoManager.repos(rnd)) {
+ const QString repoUrl = ssu.repoUrl(repo, rnd);
+
+ SsuRepo ssuRepo;
+ ssuRepo.name = repo;
+ ssuRepo.url = repoUrl;
+
+ reposList.append(ssuRepo);
+ }
+ autoclose.start();
+ return reposList;
+}
diff --git a/ssud/ssud.h b/ssud/ssud.h
index 21cda7e..17ddcea 100644
--- a/ssud/ssud.h
+++ b/ssud/ssud.h
@@ -13,6 +13,7 @@
#include
#include "libssu/ssu.h"
+#include "ssud_dbus.h"
class Ssud: public QObject
{
@@ -45,6 +46,7 @@ public slots:
void modifyRepo(int action, const QString &repo);
void addRepo(const QString &repo, const QString &url);
void updateRepos();
+ QList listRepos(bool rnd);
bool error();
QString lastError();
diff --git a/ssud/ssud.pro b/ssud/ssud.pro
index b33b9af..7615bc1 100644
--- a/ssud/ssud.pro
+++ b/ssud/ssud.pro
@@ -5,9 +5,10 @@ include(ssud_dependencies.pri)
QT += network dbus
CONFIG += link_pkgconfig
-HEADERS = ssuadaptor.h \
- ssud.h
-SOURCES = ssuadaptor.cpp \
+HEADERS = \
+ ssud.h \
+ ssud_dbus.h
+SOURCES = \
ssud.cpp \
main.cpp
@@ -23,3 +24,8 @@ conf.files = ../dbus/$${DBUS_SERVICE_NAME}.conf
conf.path = /etc/dbus-1/system.d/
INSTALLS += systemd service conf
+
+ssu_dbus_adaptor.files = ../dbus/org.nemo.ssu.xml
+ssu_dbus_adaptor.source_flags = -c SsuAdaptor
+ssu_dbus_adaptor.header_flags = -c SsuAdaptor -i ssud/ssud_dbus.h
+DBUS_ADAPTORS += ssu_dbus_adaptor
diff --git a/ssud/ssud_dbus.h b/ssud/ssud_dbus.h
new file mode 100644
index 0000000..53bf2b1
--- /dev/null
+++ b/ssud/ssud_dbus.h
@@ -0,0 +1,32 @@
+#ifndef SSUD_INCLUDE_H
+#define SSUD_INCLUDE_H
+
+#include
+#include
+#include
+
+struct SsuRepo {
+ QString name;
+ QString url;
+ QVariantMap parameters;
+};
+
+inline QDBusArgument &operator<<(QDBusArgument &argument, const SsuRepo &myRepo)
+{
+ argument.beginStructure();
+ argument << myRepo.name << myRepo.url << myRepo.parameters;
+ argument.endStructure();
+ return argument;
+}
+
+inline const QDBusArgument &operator>>(const QDBusArgument &argument, SsuRepo &myRepo)
+{
+ argument.beginStructure();
+ argument >> myRepo.name >> myRepo.url >> myRepo.parameters;
+ argument.endStructure();
+ return argument;
+}
+
+Q_DECLARE_METATYPE(SsuRepo)
+
+#endif // SSUD_INCLUDE_H