Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions src/mumble/DBus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,16 @@ void MumbleDBus::openUrl(const QString &url, const QDBusMessage &msg) {
valid = valid && (u.scheme() == QLatin1String("mumble"));
if (!valid) {
QDBusConnection::sessionBus().send(
msg.createErrorReply(QLatin1String("net.sourceforge.mumble.Error.url"), QLatin1String("Invalid URL")));
msg.createErrorReply(dbusErrorPrefix() + QLatin1String(".url"), QLatin1String("Invalid URL")));
} else {
Global::get().mw->openUrl(u);
}
}

void MumbleDBus::getCurrentUrl(const QDBusMessage &msg) {
if (!Global::get().sh || !Global::get().sh->isRunning() || !Global::get().uiSession) {
QDBusConnection::sessionBus().send(msg.createErrorReply(
QLatin1String("net.sourceforge.mumble.Error.connection"), QLatin1String("Not connected")));
QDBusConnection::sessionBus().send(
msg.createErrorReply(dbusErrorPrefix() + QLatin1String(".connection"), QLatin1String("Not connected")));
return;
}
QString host, user, pw;
Expand Down Expand Up @@ -68,8 +68,8 @@ void MumbleDBus::getCurrentUrl(const QDBusMessage &msg) {

void MumbleDBus::getTalkingUsers(const QDBusMessage &msg) {
if (!Global::get().sh || !Global::get().sh->isRunning() || !Global::get().uiSession) {
QDBusConnection::sessionBus().send(msg.createErrorReply(
QLatin1String("net.sourceforge.mumble.Error.connection"), QLatin1String("Not connected")));
QDBusConnection::sessionBus().send(
msg.createErrorReply(dbusErrorPrefix() + QLatin1String(".connection"), QLatin1String("Not connected")));
return;
}
QStringList names;
Expand Down Expand Up @@ -97,8 +97,8 @@ void MumbleDBus::setTransmitMode(unsigned int mode, const QDBusMessage &msg) {
Global::get().s.atTransmit = Settings::PushToTalk;
break;
default:
QDBusConnection::sessionBus().send(msg.createErrorReply(
QLatin1String("net.sourceforge.mumble.Error.transmitMode"), QLatin1String("Invalid transmit mode")));
QDBusConnection::sessionBus().send(msg.createErrorReply(dbusErrorPrefix() + QLatin1String(".transmitMode"),
QLatin1String("Invalid transmit mode")));
return;
}
QMetaObject::invokeMethod(Global::get().mw, "updateTransmitModeComboBox", Qt::QueuedConnection);
Expand Down
22 changes: 21 additions & 1 deletion src/mumble/DBus.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,12 @@
class QDBusMessage;

class MumbleDBus : public QDBusAbstractAdaptor {
protected:
virtual QString dbusErrorPrefix() const { return QLatin1String("info.mumble.Error"); }

private:
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "net.sourceforge.mumble.Mumble")
Q_CLASSINFO("D-Bus Interface", "info.mumble.Mumble")
Comment thread
M-Shaheer-Ahsan marked this conversation as resolved.
Q_DISABLE_COPY(MumbleDBus)
Q_PROPERTY(bool mute READ isSelfMuted WRITE setSelfMuted)
Q_PROPERTY(bool deaf READ isSelfDeaf WRITE setSelfDeaf)
Expand Down Expand Up @@ -45,4 +48,21 @@ public slots:
void stopTalking();
};

/**
* Legacy DBus adaptor for backwards compatibility.
* Exposes the same interface as MumbleDBus but under the old
* net.sourceforge.mumble.Mumble name.
*/
class MumbleDBusLegacy : public MumbleDBus {
protected:
QString dbusErrorPrefix() const override { return QLatin1String("net.sourceforge.mumble.Error"); }

private:
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "net.sourceforge.mumble.Mumble")
Q_DISABLE_COPY(MumbleDBusLegacy)
public:
MumbleDBusLegacy(QObject *parent) : MumbleDBus(parent) {}
};

#endif
26 changes: 22 additions & 4 deletions src/mumble/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -588,11 +588,19 @@ int main(int argc, char **argv) {
#endif
bool sent = false;
#ifdef USE_DBUS
QDBusInterface qdbi(QLatin1String("net.sourceforge.mumble.mumble"), QLatin1String("/"),
QLatin1String("net.sourceforge.mumble.Mumble"));
QDBusInterface qdbi(QLatin1String("info.mumble.mumble"), QLatin1String("/"),
QLatin1String("info.mumble.Mumble"));

QDBusMessage reply = qdbi.call(QLatin1String("openUrl"), QLatin1String(url.toEncoded()));
sent = (reply.type() == QDBusMessage::ReplyMessage);

if (!sent) {
QDBusInterface qdbiLegacy(QLatin1String("net.sourceforge.mumble.mumble"), QLatin1String("/"),
QLatin1String("net.sourceforge.mumble.Mumble"));

reply = qdbiLegacy.call(QLatin1String("openUrl"), QLatin1String(url.toEncoded()));
sent = (reply.type() == QDBusMessage::ReplyMessage);
}
#else
sent = SocketRPC::send(QLatin1String("Mumble"), QLatin1String("url"), param);
#endif
Expand All @@ -601,11 +609,19 @@ int main(int argc, char **argv) {
} else {
bool sent = false;
#ifdef USE_DBUS
QDBusInterface qdbi(QLatin1String("net.sourceforge.mumble.mumble"), QLatin1String("/"),
QLatin1String("net.sourceforge.mumble.Mumble"));
QDBusInterface qdbi(QLatin1String("info.mumble.mumble"), QLatin1String("/"),
QLatin1String("info.mumble.Mumble"));

QDBusMessage reply = qdbi.call(QLatin1String("focus"));
sent = (reply.type() == QDBusMessage::ReplyMessage);

if (!sent) {
QDBusInterface qdbiLegacy(QLatin1String("net.sourceforge.mumble.mumble"), QLatin1String("/"),
QLatin1String("net.sourceforge.mumble.Mumble"));

reply = qdbiLegacy.call(QLatin1String("focus"));
sent = (reply.type() == QDBusMessage::ReplyMessage);
}
#else
sent = SocketRPC::send(QLatin1String("Mumble"), QLatin1String("focus"));
#endif
Expand Down Expand Up @@ -801,7 +817,9 @@ int main(int argc, char **argv) {

#ifdef USE_DBUS
new MumbleDBus(Global::get().mw);
new MumbleDBusLegacy(Global::get().mw);
QDBusConnection::sessionBus().registerObject(QLatin1String("/"), Global::get().mw);
QDBusConnection::sessionBus().registerService(QLatin1String("info.mumble.mumble"));
QDBusConnection::sessionBus().registerService(QLatin1String("net.sourceforge.mumble.mumble"));
#endif

Expand Down
Loading