summary refs log tree commit diff
path: root/src/TextInputWidget.h
diff options
context:
space:
mode:
authorJoseph Donofry <joedonofry@gmail.com>2020-02-28 19:10:39 -0500
committerGitHub <noreply@github.com>2020-02-28 19:10:39 -0500
commit30cb7c5b02bb8a21a8d7257cfe5a8bd3db891606 (patch)
treeddadd16c86600ce937b47798a9b3d5ff2fdec998 /src/TextInputWidget.h
parentMerge pull request #129 from nico202/master (diff)
parentMerge branch 'master' into 0.7.0-dev (diff)
downloadnheko-30cb7c5b02bb8a21a8d7257cfe5a8bd3db891606.tar.xz
Merge pull request #130 from Nheko-Reborn/0.7.0-dev
0.7.0 dev merge to master
Diffstat (limited to 'src/TextInputWidget.h')
-rw-r--r--src/TextInputWidget.h64
1 files changed, 37 insertions, 27 deletions
diff --git a/src/TextInputWidget.h b/src/TextInputWidget.h

index 8f634f6b..77d77e44 100644 --- a/src/TextInputWidget.h +++ b/src/TextInputWidget.h
@@ -18,23 +18,18 @@ #pragma once #include <deque> -#include <iterator> -#include <map> +#include <optional> -#include <QApplication> -#include <QDebug> +#include <QCoreApplication> #include <QHBoxLayout> #include <QPaintEvent> #include <QTextEdit> #include <QWidget> -#include "SuggestionsPopup.h" #include "dialogs/PreviewUploadOverlay.h" #include "emoji/PickButton.h" - -namespace dialogs { -class PreviewUploadOverlay; -} +#include "popups/ReplyPopup.h" +#include "popups/SuggestionsPopup.h" struct SearchResult; @@ -54,28 +49,37 @@ public: QSize minimumSizeHint() const override; void submit(); + void showReplyPopup(const RelatedInfo &related_); + void closeReply() + { + replyPopup_.hide(); + related = {}; + } + + // Used for replies + std::optional<RelatedInfo> related; signals: void heightChanged(int height); void startedTyping(); void stoppedTyping(); void startedUpload(); - void message(QString); + void message(QString, const std::optional<RelatedInfo> &); void command(QString name, QString args); - 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); + void media(QSharedPointer<QIODevice> data, + QString mimeClass, + const QString &filename, + const std::optional<RelatedInfo> &related); //! Trigger the suggestion popup. void showSuggestions(const QString &query); - void resultsRetrieved(const QVector<SearchResult> &results); + void resultsRetrieved(const std::vector<SearchResult> &results); void selectNextSuggestion(); void selectPreviousSuggestion(); void selectHoveredSuggestion(); public slots: - void showResults(const QVector<SearchResult> &results); + void showResults(const std::vector<SearchResult> &results); protected: void keyPressEvent(QKeyEvent *event) override; @@ -83,7 +87,7 @@ protected: void insertFromMimeData(const QMimeData *source) override; void focusOutEvent(QFocusEvent *event) override { - popup_.hide(); + suggestionsPopup_.hide(); QTextEdit::focusOutEvent(event); } @@ -92,7 +96,8 @@ private: size_t history_index_; QTimer *typingTimer_; - SuggestionsPopup popup_; + SuggestionsPopup suggestionsPopup_; + ReplyPopup replyPopup_; enum class AnchorType { @@ -104,7 +109,7 @@ private: int anchorWidth(AnchorType anchor) { return static_cast<int>(anchor); } - void closeSuggestions() { popup_.hide(); } + void closeSuggestions() { suggestionsPopup_.hide(); } void resetAnchor() { atTriggerPosition_ = -1; } bool isAnchorValid() { return atTriggerPosition_ != -1; } bool hasAnchor(int pos, AnchorType anchor) @@ -137,7 +142,7 @@ class TextInputWidget : public QWidget Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor) public: - TextInputWidget(QWidget *parent = 0); + TextInputWidget(QWidget *parent = nullptr); void stopTyping(); @@ -158,22 +163,27 @@ public slots: void openFileSelection(); void hideUploadSpinner(); void focusLineEdit() { input_->setFocus(); } - void addReply(const QString &username, const QString &msg); + void addReply(const RelatedInfo &related); + void closeReplyPopup() { input_->closeReply(); } private slots: void addSelectedEmoji(const QString &emoji); signals: - void sendTextMessage(QString msg); - void sendEmoteMessage(QString msg); + void sendTextMessage(const QString &msg, const std::optional<RelatedInfo> &related); + void sendEmoteMessage(QString msg, const std::optional<RelatedInfo> &related); void heightChanged(int height); - 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 uploadMedia(const QSharedPointer<QIODevice> data, + QString mimeClass, + const QString &filename, + const std::optional<RelatedInfo> &related); void sendJoinRoomRequest(const QString &room); + void sendInviteRoomRequest(const QString &userid, const QString &reason); + void sendKickRoomRequest(const QString &userid, const QString &reason); + void sendBanRoomRequest(const QString &userid, const QString &reason); + void sendUnbanRoomRequest(const QString &userid, const QString &reason); void startedTyping(); void stoppedTyping();