summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/MatrixClient.h42
-rw-r--r--include/TextInputWidget.h22
-rw-r--r--include/Utils.h4
-rw-r--r--include/dialogs/PreviewUploadOverlay.h (renamed from include/dialogs/PreviewImageOverlay.h)22
-rw-r--r--include/timeline/TimelineView.h22
-rw-r--r--include/timeline/TimelineViewManager.h22
-rw-r--r--include/timeline/widgets/AudioItem.h3
-rw-r--r--include/timeline/widgets/FileItem.h3
-rw-r--r--include/timeline/widgets/ImageItem.h2
-rw-r--r--include/timeline/widgets/VideoItem.h3
10 files changed, 98 insertions, 47 deletions
diff --git a/include/MatrixClient.h b/include/MatrixClient.h

index 3efd2d0a..d9f5067a 100644 --- a/include/MatrixClient.h +++ b/include/MatrixClient.h
@@ -39,7 +39,8 @@ public: int txnId, const QString &roomid, const QString &msg, - const QFileInfo &info, + const QString &mime, + const int64_t media_size, const QString &url = "") noexcept; void login(const QString &username, const QString &password) noexcept; void registerUser(const QString &username, @@ -58,14 +59,17 @@ public: void downloadFile(const QString &event_id, const QUrl &url); void messages(const QString &room_id, const QString &from_token, int limit = 30) noexcept; void uploadImage(const QString &roomid, - const QSharedPointer<QIODevice> data, - const QString &filename); + const QString &filename, + const QSharedPointer<QIODevice> data); void uploadFile(const QString &roomid, - const QSharedPointer<QIODevice> data, - const QString &filename); + const QString &filename, + const QSharedPointer<QIODevice> data); void uploadAudio(const QString &roomid, - const QSharedPointer<QIODevice> data, - const QString &filename); + const QString &filename, + const QSharedPointer<QIODevice> data); + void uploadVideo(const QString &roomid, + const QString &filename, + const QSharedPointer<QIODevice> data); void uploadFilter(const QString &filter) noexcept; void joinRoom(const QString &roomIdOrAlias); void leaveRoom(const QString &roomId); @@ -108,12 +112,25 @@ signals: const QString &token); void versionSuccess(); void imageUploaded(const QString &roomid, - const QSharedPointer<QIODevice> data, const QString &filename, - const QString &url); - void fileUploaded(const QString &roomid, const QString &filename, const QString &url); - void audioUploaded(const QString &roomid, const QString &filename, const QString &url); - + const QString &url, + const QString &mime, + const int64_t size); + void fileUploaded(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + const int64_t size); + void audioUploaded(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + const int64_t size); + void videoUploaded(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + const int64_t size); void roomAvatarRetrieved(const QString &roomid, const QPixmap &img, const QString &url, @@ -143,6 +160,7 @@ signals: private: QNetworkReply *makeUploadRequest(QSharedPointer<QIODevice> iodev); + QJsonObject getUploadReply(QNetworkReply *reply); // Client API prefix. QString clientApiUrl_; diff --git a/include/TextInputWidget.h b/include/TextInputWidget.h
index 6d28009e..b89b7753 100644 --- a/include/TextInputWidget.h +++ b/include/TextInputWidget.h
@@ -27,12 +27,12 @@ #include "FlatButton.h" #include "LoadingIndicator.h" -#include "dialogs/PreviewImageOverlay.h" +#include "dialogs/PreviewUploadOverlay.h" #include "emoji/PickButton.h" namespace dialogs { -class PreviewImageOverlay; +class PreviewUploadOverlay; } class FilteredTextEdit : public QTextEdit @@ -53,9 +53,13 @@ signals: void heightChanged(int height); void startedTyping(); void stoppedTyping(); + void startedUpload(); void message(QString); void command(QString name, QString args); - void image(const QSharedPointer<QIODevice> iodev, const QString &img_name); + void image(QSharedPointer<QIODevice> data, const QString &filename); + void audio(QSharedPointer<QIODevice> data, const QString &filename); + void video(QSharedPointer<QIODevice> data, const QString &filename); + void file(QSharedPointer<QIODevice> data, const QString &filename); protected: void keyPressEvent(QKeyEvent *event) override; @@ -67,11 +71,12 @@ private: size_t history_index_; QTimer *typingTimer_; - dialogs::PreviewImageOverlay previewDialog_; + dialogs::PreviewUploadOverlay previewDialog_; void textChanged(); - void receiveImage(const QByteArray img, const QString &img_name); + void uploadData(const QByteArray data, const QString &media, const QString &filename); void afterCompletion(int); + void showPreview(const QMimeData *source, const QStringList &formats); }; class TextInputWidget : public QWidget @@ -95,9 +100,10 @@ signals: void sendTextMessage(QString msg); void sendEmoteMessage(QString msg); - void uploadImage(QSharedPointer<QIODevice> data, const QString &filename); - void uploadFile(QSharedPointer<QIODevice> data, const QString &filename); - void uploadAudio(QSharedPointer<QIODevice> data, const QString &filename); + void uploadImage(const QSharedPointer<QIODevice> data, const QString &filename); + void uploadFile(const QSharedPointer<QIODevice> data, const QString &filename); + void uploadAudio(const QSharedPointer<QIODevice> data, const QString &filename); + void uploadVideo(const QSharedPointer<QIODevice> data, const QString &filename); void sendJoinRoomRequest(const QString &room); diff --git a/include/Utils.h b/include/Utils.h
index bbe46dd8..2c764f88 100644 --- a/include/Utils.h +++ b/include/Utils.h
@@ -22,4 +22,8 @@ getMessageDescription(const TimelineEvent &event, const QString &localUser); //! surrogate pairs might be in use. QString firstChar(const QString &input); + +//! Get a human readable file size with the appropriate units attached. +QString +humanReadableFileSize(const uint64_t bytes); } diff --git a/include/dialogs/PreviewImageOverlay.h b/include/dialogs/PreviewUploadOverlay.h
index a1ab32ee..c9516719 100644 --- a/include/dialogs/PreviewImageOverlay.h +++ b/include/dialogs/PreviewUploadOverlay.h
@@ -28,28 +28,32 @@ class QMimeData; namespace dialogs { -class PreviewImageOverlay : public QWidget +class PreviewUploadOverlay : public QWidget { Q_OBJECT public: - PreviewImageOverlay(QWidget *parent = nullptr); + PreviewUploadOverlay(QWidget *parent = nullptr); - void setImageAndCreate(const QByteArray data, const QString &type); - void setImageAndCreate(const QString &path); + void setPreview(const QByteArray data, const QString &mime); + void setPreview(const QString &path); signals: - void confirmImageUpload(const QByteArray data, const QString &img_name); + void confirmUpload(const QByteArray data, const QString &media, const QString &filename); private: void init(); + void setLabels(const QString &type, const QString &mime, const int upload_size); + bool isImage_; QPixmap image_; - QByteArray imageData_; - QString imagePath_; + + QByteArray data_; + QString filePath_; + QString mediaType_; QLabel titleLabel_; - QLabel imageLabel_; - QLineEdit imageName_; + QLabel infoLabel_; + QLineEdit fileName_; FlatButton upload_; FlatButton cancel_; diff --git a/include/timeline/TimelineView.h b/include/timeline/TimelineView.h
index 6e1287c8..782f3afd 100644 --- a/include/timeline/TimelineView.h +++ b/include/timeline/TimelineView.h
@@ -44,6 +44,8 @@ struct PendingMessage int txn_id; QString body; QString filename; + QString mime; + int64_t media_size; QString event_id; TimelineItem *widget; @@ -51,12 +53,16 @@ struct PendingMessage int txn_id, QString body, QString filename, + QString mime, + int64_t media_size, QString event_id, TimelineItem *widget) : ty(ty) , txn_id(txn_id) , body(body) , filename(filename) + , mime(mime) + , media_size(media_size) , event_id(event_id) , widget(widget) {} @@ -87,10 +93,10 @@ public: void addUserMessage(mtx::events::MessageType ty, const QString &msg); template<class Widget, mtx::events::MessageType MsgType> - void addUserMessage( - const QString &url, - const QString &filename, - const QSharedPointer<QIODevice> data = QSharedPointer<QIODevice>(nullptr)); + void addUserMessage(const QString &url, + const QString &filename, + const QString &mime, + const int64_t size); void updatePendingMessage(int txn_id, QString event_id); void scrollDown(); QLabel *createDateSeparator(QDateTime datetime); @@ -236,11 +242,13 @@ template<class Widget, mtx::events::MessageType MsgType> void TimelineView::addUserMessage(const QString &url, const QString &filename, - const QSharedPointer<QIODevice> data) + const QString &mime, + const int64_t size) { auto with_sender = lastSender_ != local_user_; + auto trimmed = QFileInfo{filename}.fileName(); // Trim file path. - auto widget = new Widget(client_, url, data, filename, this); + auto widget = new Widget(client_, url, trimmed, size, this); TimelineItem *view_item = new TimelineItem(widget, local_user_, with_sender, scroll_widget_); @@ -255,7 +263,7 @@ TimelineView::addUserMessage(const QString &url, int txn_id = client_->incrementTransactionId(); - PendingMessage message(MsgType, txn_id, url, filename, "", view_item); + PendingMessage message(MsgType, txn_id, url, trimmed, mime, size, "", view_item); handleNewUserMessage(message); } diff --git a/include/timeline/TimelineViewManager.h b/include/timeline/TimelineViewManager.h
index 74d8588c..a531be88 100644 --- a/include/timeline/TimelineViewManager.h +++ b/include/timeline/TimelineViewManager.h
@@ -64,11 +64,25 @@ public slots: void queueTextMessage(const QString &msg); void queueEmoteMessage(const QString &msg); void queueImageMessage(const QString &roomid, - const QSharedPointer<QIODevice> data, const QString &filename, - const QString &url); - void queueFileMessage(const QString &roomid, const QString &filename, const QString &url); - void queueAudioMessage(const QString &roomid, const QString &filename, const QString &url); + const QString &url, + const QString &mime, + const int64_t dsize); + void queueFileMessage(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + const int64_t dsize); + void queueAudioMessage(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + const int64_t dsize); + void queueVideoMessage(const QString &roomid, + const QString &filename, + const QString &url, + const QString &mime, + const int64_t dsize); private slots: void messageSent(const QString &eventid, const QString &roomid, int txnid); diff --git a/include/timeline/widgets/AudioItem.h b/include/timeline/widgets/AudioItem.h
index ca81f498..06f4b8ff 100644 --- a/include/timeline/widgets/AudioItem.h +++ b/include/timeline/widgets/AudioItem.h
@@ -48,8 +48,8 @@ public: AudioItem(QSharedPointer<MatrixClient> client, const QString &url, - const QSharedPointer<QIODevice> data, const QString &filename, + const int64_t size, QWidget *parent = nullptr); QSize sizeHint() const override; @@ -76,7 +76,6 @@ private slots: void fileDownloaded(const QString &event_id, const QByteArray &data); private: - QString calculateFileSize(int nbytes) const; void init(); enum class AudioState diff --git a/include/timeline/widgets/FileItem.h b/include/timeline/widgets/FileItem.h
index 72589189..36d72f25 100644 --- a/include/timeline/widgets/FileItem.h +++ b/include/timeline/widgets/FileItem.h
@@ -42,8 +42,8 @@ public: FileItem(QSharedPointer<MatrixClient> client, const QString &url, - const QSharedPointer<QIODevice> data, const QString &filename, + const int64_t size, QWidget *parent = nullptr); QSize sizeHint() const override; @@ -64,7 +64,6 @@ private slots: void fileDownloaded(const QString &event_id, const QByteArray &data); private: - QString calculateFileSize(int nbytes) const; void openUrl(); void init(); diff --git a/include/timeline/widgets/ImageItem.h b/include/timeline/widgets/ImageItem.h
index d24b7239..9e5fa82b 100644 --- a/include/timeline/widgets/ImageItem.h +++ b/include/timeline/widgets/ImageItem.h
@@ -36,8 +36,8 @@ public: ImageItem(QSharedPointer<MatrixClient> client, const QString &url, - const QSharedPointer<QIODevice> data, const QString &filename, + const int64_t size, QWidget *parent = nullptr); void setImage(const QPixmap &image); diff --git a/include/timeline/widgets/VideoItem.h b/include/timeline/widgets/VideoItem.h
index 53c3e21a..65b87c95 100644 --- a/include/timeline/widgets/VideoItem.h +++ b/include/timeline/widgets/VideoItem.h
@@ -37,13 +37,12 @@ public: VideoItem(QSharedPointer<MatrixClient> client, const QString &url, - const QSharedPointer<QIODevice> data, const QString &filename, + const int64_t size, QWidget *parent = nullptr); private: void init(); - QString calculateFileSize(int nbytes) const; QUrl url_; QString text_;