- QDBusInterface kuiserver("org.kde.JobViewServer", "/JobViewServer", "org.kde.JobViewServer", QDBusConnection::sessionBus());
- QDBusReply<QString> reply = kuiserver.call("requestView", "kdenlive", "kdenlive", 1);
- //kDebug()<<"///// JOB REPLY: "<<reply;
- QStringList args;
- m_jobUiserver = new QDBusInterface("org.kde.JobViewServer", "/JobViewServer/JobView_1", "org.kde.JobView", QDBusConnection::sessionBus());
- reply = m_jobUiserver->call("setInfoMessage", tr("Rendering %1").arg(m_dest));
+ QDBusConnectionInterface* interface = QDBusConnection::sessionBus().interface();
+ if (interface && m_usekuiserver) {
+ if (!interface->isServiceRegistered("org.kde.JobViewServer")) {
+ qDebug() << "No org.kde.JobViewServer registered, trying to start kuiserver";
+ // m_logstream << "No org.kde.JobViewServer registered, trying to start kuiserver";
+ if (QProcess::startDetached("kuiserver")) {
+ qDebug() << "Started kuiserver";
+ // m_logstream << "Started kuiserver";
+ // Give it a couple of seconds to start
+ QTime t;
+ t.start();
+ while (!interface->isServiceRegistered("org.kde.JobViewServer") && t.elapsed() < 3000) {
+ SleepThread::msleep(100); //Sleep 100 ms
+ }
+ } else {
+ qDebug() << "Failed to start kuiserver";
+ // m_logstream << "Failed to start kuiserver";
+ }
+ }
+
+ if (interface->isServiceRegistered("org.kde.JobViewServer")) {
+ QDBusInterface kuiserver("org.kde.JobViewServer", "/JobViewServer", "org.kde.JobViewServer");
+ QDBusReply<QDBusObjectPath> objectPath = kuiserver.call("requestView", "kdenlive", "kdenlive", 1);
+ QString reply = ((QDBusObjectPath) objectPath).path();
+ m_jobUiserver = new QDBusInterface("org.kde.JobViewServer", reply, "org.kde.JobView");
+ if (m_jobUiserver) {
+ m_startTime = QTime::currentTime();
+ m_jobUiserver->call("setPercent", (uint) 0);
+ QDBusReply<QString> reply = m_jobUiserver->call("setInfoMessage", tr("Rendering %1").arg(QFileInfo(m_dest).fileName()));
+ m_jobUiserver->call("setDescriptionField", (uint) 0, tr("Rendering to"), m_dest);
+ QDBusConnection::sessionBus().connect("org.kde.JobViewServer", reply, "org.kde.JobView", "cancelRequested", this, SLOT(slotAbort()));
+ }
+ }
+ }
+
+ QString kdenliveId;
+ QDBusConnection connection = QDBusConnection::sessionBus();
+ QDBusConnectionInterface *ibus = connection.interface();
+ const QStringList services = ibus->registeredServiceNames();
+ foreach(const QString &service, services) {
+ if (!service.startsWith("org.kde.kdenlive"))
+ continue;
+ kdenliveId = service;
+ break;
+ }
+
+ QDBusConnection bus = QDBusConnection::sessionBus();
+ m_kdenliveinterface = new QDBusInterface(kdenliveId,
+ "/MainWindow",
+ "org.kdenlive.MainWindow",
+ bus,
+ this);
+
+ if (m_kdenliveinterface) {
+ m_dbusargs.append(m_dest);
+ m_dbusargs.append((int) 0);
+ m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingProgress", m_dbusargs);
+ connect(m_kdenliveinterface, SIGNAL(abortRenderJob(const QString &)),
+ this, SLOT(slotAbort(const QString&)));
+ }
+
+ // Because of the logging, we connect to stderr in all cases.
+ connect(m_renderProcess, SIGNAL(readyReadStandardError()), this, SLOT(receivedStderr()));