diff --git a/smsapp/main.cpp b/smsapp/main.cpp --- a/smsapp/main.cpp +++ b/smsapp/main.cpp @@ -42,13 +42,20 @@ aboutData.addAuthor(i18n("Simon Redman"), {}, "simon@ergotech.com"); KAboutData::setApplicationData(aboutData); + QString initialMessage; + { QCommandLineParser parser; aboutData.setupCommandLine(&parser); parser.addVersionOption(); parser.addHelpOption(); + parser.addOption(QCommandLineOption(QStringLiteral("message"), i18n("Send a message"), i18n("message"))); parser.process(app); aboutData.processCommandLine(&parser); + + if (parser.isSet(QStringLiteral("message"))) { + initialMessage = parser.value(QStringLiteral("message")); + } } KDBusService service(KDBusService::Unique); @@ -59,6 +66,7 @@ QQmlApplicationEngine engine; engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); + engine.rootContext()->setContextProperty(QStringLiteral("_initialMessage"), QVariant(initialMessage)); engine.load(QUrl("qrc:/qml/main.qml")); return app.exec(); diff --git a/smsapp/qml/ConversationDisplay.qml b/smsapp/qml/ConversationDisplay.qml --- a/smsapp/qml/ConversationDisplay.qml +++ b/smsapp/qml/ConversationDisplay.qml @@ -34,10 +34,18 @@ } property QtObject device property string conversationId + property string initialMessage property string phoneNumber title: person.person && person.person.name ? person.person.name : phoneNumber + Component.onCompleted: { + if (initialMessage.length > 0) { + message.text = initialMessage; + initialMessage = "" + } + } + function sendMessage() { console.log("sending sms", page.phoneNumber) model.sourceModel.sendReplyToConversation(message.text) diff --git a/smsapp/qml/ConversationList.qml b/smsapp/qml/ConversationList.qml --- a/smsapp/qml/ConversationList.qml +++ b/smsapp/qml/ConversationList.qml @@ -22,12 +22,29 @@ import QtQuick.Controls 2.1 import QtQuick.Layouts 1.1 import org.kde.people 1.0 -import org.kde.kirigami 2.2 as Kirigami +import org.kde.kirigami 2.4 as Kirigami import org.kde.kdeconnect 1.0 import org.kde.kdeconnect.sms 1.0 Kirigami.ScrollablePage { + id: root + property string initialMessage + + header: Kirigami.InlineMessage { + Layout.fillWidth: true + visible: root.initialMessage.length > 0 + text: i18n("Choose recepient") + + actions: [ + Kirigami.Action { + iconName: "dialog-cancel" + text: "Cancel" + onTriggered: initialMessage = "" + } + ] + } + footer: ComboBox { id: devicesCombo enabled: count > 0 @@ -98,10 +115,11 @@ personUri: model.personUri, phoneNumber: address, conversationId: model.conversationId, + initialMessage: root.initialMessage, device: device}) + initialMessage = "" } onClicked: { startChat(); } } - } } diff --git a/smsapp/qml/main.qml b/smsapp/qml/main.qml --- a/smsapp/qml/main.qml +++ b/smsapp/qml/main.qml @@ -33,5 +33,6 @@ pageStack.initialPage: ConversationList { title: i18n("KDE Connect SMS") + initialMessage: _initialMessage } }