Makes it possible to send sms from kdeconnect-cli

Summary: Introduces --send-sms and --destination

Test Plan: Sent an sms to Albert Vaca

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Differential Revision: https://phabricator.kde.org/D3252
This commit is contained in:
Aleix Pol 2016-11-03 19:15:23 +01:00
parent 760c2a8a7e
commit 7d88340da7
3 changed files with 26 additions and 3 deletions

View file

@ -59,6 +59,8 @@ int main(int argc, char** argv)
parser.addOption(QCommandLineOption("share", i18n("Share a file to a said device"), "path")); parser.addOption(QCommandLineOption("share", i18n("Share a file to a said device"), "path"));
parser.addOption(QCommandLineOption("list-notifications", i18n("Display the notifications on a said device"))); parser.addOption(QCommandLineOption("list-notifications", i18n("Display the notifications on a said device")));
parser.addOption(QCommandLineOption("lock", i18n("Lock the specified device"))); parser.addOption(QCommandLineOption("lock", i18n("Lock the specified device")));
parser.addOption(QCommandLineOption("send-sms", i18n("Sends an SMS. Requires destination"), i18n("message")));
parser.addOption(QCommandLineOption("destination", i18n("Phone number to send the message"), i18n("phone number")));
parser.addOption(QCommandLineOption(QStringList("device") << "d", i18n("Device ID"), "dev")); parser.addOption(QCommandLineOption(QStringList("device") << "d", i18n("Device ID"), "dev"));
parser.addOption(QCommandLineOption(QStringList("name") << "n", i18n("Device Name"), "name")); parser.addOption(QCommandLineOption(QStringList("name") << "n", i18n("Device Name"), "name"));
parser.addOption(QCommandLineOption("encryption-info", i18n("Get encryption info about said device"))); parser.addOption(QCommandLineOption("encryption-info", i18n("Get encryption info about said device")));
@ -183,6 +185,15 @@ int main(int argc, char** argv)
msg.setArguments(QVariantList() << message); msg.setArguments(QVariantList() << message);
} }
QDBusConnection::sessionBus().call(msg); QDBusConnection::sessionBus().call(msg);
} else if(parser.isSet("send-sms")) {
if (parser.isSet("destination")) {
QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kdeconnect", "/modules/kdeconnect/devices/"+device+"/telephony", "org.kde.kdeconnect.device.telephony", "sendSms");
msg.setArguments({ parser.value("destination"), parser.value("send-sms") });
QDBusConnection::sessionBus().call(msg);
} else {
QTextStream(stderr) << i18n("error: should specify the SMS's recipient by passing --destination <phone number>");
return 1;
}
} else if(parser.isSet("ring")) { } else if(parser.isSet("ring")) {
QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kdeconnect", "/modules/kdeconnect/devices/"+device+"/findmyphone", "org.kde.kdeconnect.device.findmyphone", "ring"); QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kdeconnect", "/modules/kdeconnect/devices/"+device+"/findmyphone", "org.kde.kdeconnect.device.findmyphone", "ring");
QDBusConnection::sessionBus().call(msg); QDBusConnection::sessionBus().call(msg);

View file

@ -161,4 +161,14 @@ void TelephonyPlugin::showSendSmsDialog()
dialog->show(); dialog->show();
} }
void TelephonyPlugin::connected()
{
QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportScriptableContents);
}
QString TelephonyPlugin::dbusPath() const
{
return "/modules/kdeconnect/devices/" + device()->id() + "/telephony";
}
#include "telephonyplugin.moc" #include "telephonyplugin.moc"

View file

@ -37,21 +37,23 @@ class TelephonyPlugin
: public KdeConnectPlugin : public KdeConnectPlugin
{ {
Q_OBJECT Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.device.telephony")
public: public:
explicit TelephonyPlugin(QObject *parent, const QVariantList &args); explicit TelephonyPlugin(QObject *parent, const QVariantList &args);
bool receivePackage(const NetworkPackage& np) override; bool receivePackage(const NetworkPackage& np) override;
void connected() override { } void connected() override;
public Q_SLOTS: public Q_SLOTS:
void sendMutePackage(); Q_SCRIPTABLE void sendSms(const QString& phoneNumber, const QString& messageBody);
private Q_SLOTS: private Q_SLOTS:
void sendSms(const QString& phoneNumber, const QString& messageBody); void sendMutePackage();
void showSendSmsDialog(); void showSendSmsDialog();
private: private:
QString dbusPath() const;
KNotification* createNotification(const NetworkPackage& np); KNotification* createNotification(const NetworkPackage& np);
QDBusInterface m_telepathyInterface; QDBusInterface m_telepathyInterface;