From 75043d4d2d90c56ad5d8ef16d69073144238f81c Mon Sep 17 00:00:00 2001 From: Miquel Lionel Date: Thu, 14 Oct 2021 22:59:57 +0100 Subject: Make attachment button functional --- context.cpp | 17 ++++++++++++++++- context.h | 2 +- qml/ComposePane.qml | 21 ++++++++++++++++----- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/context.cpp b/context.cpp index 53cdd82..a138dd7 100644 --- a/context.cpp +++ b/context.cpp @@ -1,4 +1,7 @@ #include "context.h" +#include +#include +#include Context::Context(QObject *parent) : QObject(parent) @@ -264,8 +267,20 @@ Context::newMessage(int viewtype) } uint32_t -Context::sendMessage(uint32_t chatId, DcMessage *message) +Context::sendMessage(uint32_t chatId, DcMessage *message, QString attachment) { + QByteArray utf8attachFilename = attachment.toUtf8(); + if(strlen(utf8attachFilename.constData()) > 0){ + dc_msg_set_file(message->m_message, utf8attachFilename.constData(), NULL); + + QString ImgBlobPath; + QTextStream (&ImgBlobPath) << dc_get_blobdir(m_context) << "/" << dc_msg_get_filename(message->m_message); + + printf("\nPush it into blob dir :%s\n", ImgBlobPath.toUtf8().constData()); + QFile::copy(attachment, ImgBlobPath.toUtf8().constData()); + dc_msg_set_file(message->m_message, ImgBlobPath.toUtf8().constData(), NULL); + } + dc_prepare_msg(m_context, chatId, message->m_message); return dc_send_msg(m_context, chatId, message->m_message); } diff --git a/context.h b/context.h index 4e6409a..95b3275 100644 --- a/context.h +++ b/context.h @@ -53,7 +53,7 @@ public: Q_INVOKABLE QString getMessageInfo(uint32_t msgId); Q_INVOKABLE QString getMessageHtml(uint32_t msgId); Q_INVOKABLE DcMessage *newMessage(int viewtype); - Q_INVOKABLE uint32_t sendMessage(uint32_t chatId, DcMessage *message); + Q_INVOKABLE uint32_t sendMessage(uint32_t chatId, DcMessage *message, QString attachment); Q_INVOKABLE void importBackup(QString tarfile); private: diff --git a/qml/ComposePane.qml b/qml/ComposePane.qml index 6bcdec9..a108e9f 100644 --- a/qml/ComposePane.qml +++ b/qml/ComposePane.qml @@ -10,12 +10,18 @@ Pane { required property DcContext context required property var chatId required property var chat + property var attachFileUrl: "" property bool canSend: root.chat && root.chat.canSend property bool isContactRequest: root.chat && root.chat.isContactRequest function createMessage() { let DC_MSG_TEXT = 10; - var msg = root.context.newMessage(DC_MSG_TEXT); + let DC_MSG_FILE = 60; + + if (attachFileUrl.length > 0) + var msg = root.context.newMessage(DC_MSG_FILE); + else + var msg = root.context.newMessage(DC_MSG_TEXT); msg.setText(messageField.text); return msg; } @@ -30,8 +36,8 @@ Pane { onAccepted: { var url = attachFileDialog.fileUrl.toString() if (url.startsWith("file://")) { - var filename = url.substring(7) - console.log("Attaching " + filename) + attachFileUrl = url.substring(7) + console.log("Attaching " + attachFileUrl) } } } @@ -83,10 +89,15 @@ Pane { Layout.alignment: Qt.AlignBottom icon.name: "document-send" text: qsTr("Send") - enabled: messageField.length > 0 + enabled: messageField.length > 0 | attachFileUrl.length > 0 onClicked: { let msg = root.createMessage(); - root.context.sendMessage(root.chatId, msg); + if (attachFileUrl.length > 0) + root.context.sendMessage(root.chatId, msg, attachFileUrl) + else + root.context.sendMessage(root.chatId, msg, "") + + attachFileUrl = ""; messageField.text = ""; root.context.setDraft(chatId, null); } -- cgit v1.2.3-70-g09d2