summary refs log tree commit diff
path: root/src/timeline
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2020-11-25 17:02:23 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2020-11-25 19:05:12 +0100
commitc74077a41f5e89c0331d682b481408ad22d7ec78 (patch)
treec867da89f8a4d9d61642f72b645337535b0bbee7 /src/timeline
parentFix enter when no completion available (diff)
downloadnheko-c74077a41f5e89c0331d682b481408ad22d7ec78.tar.xz
Implement Qml drag and drop
Diffstat (limited to 'src/timeline')
-rw-r--r--src/timeline/InputBar.cpp8
-rw-r--r--src/timeline/InputBar.h2
-rw-r--r--src/timeline/TimelineViewManager.cpp3
-rw-r--r--src/timeline/TimelineViewManager.h9
4 files changed, 22 insertions, 0 deletions
diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp

index b0d555b7..46bbd9a2 100644 --- a/src/timeline/InputBar.cpp +++ b/src/timeline/InputBar.cpp
@@ -1,6 +1,7 @@ #include "InputBar.h" #include <QClipboard> +#include <QDropEvent> #include <QFileDialog> #include <QGuiApplication> #include <QMimeData> @@ -44,6 +45,13 @@ InputBar::paste(bool fromMouse) md = QGuiApplication::clipboard()->mimeData(QClipboard::Clipboard); } + if (md) + insertMimeData(md); +} + +void +InputBar::insertMimeData(const QMimeData *md) +{ if (!md) return; diff --git a/src/timeline/InputBar.h b/src/timeline/InputBar.h
index 939e8dad..27aa4bc3 100644 --- a/src/timeline/InputBar.h +++ b/src/timeline/InputBar.h
@@ -9,6 +9,7 @@ class TimelineModel; class QMimeData; +class QDropEvent; class QStringList; class InputBar : public QObject @@ -36,6 +37,7 @@ public slots: void send(); void paste(bool fromMouse); + void insertMimeData(const QMimeData *data); void updateState(int selectionStart, int selectionEnd, int cursorPosition, QString text); void openFileSelection(); bool uploading() const { return uploading_; } diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index 1392c505..866e7c51 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp
@@ -1,6 +1,7 @@ #include "TimelineViewManager.h" #include <QDesktopServices> +#include <QDropEvent> #include <QMetaType> #include <QPalette> #include <QQmlContext> @@ -20,6 +21,7 @@ #include "dialogs/ImageOverlay.h" #include "emoji/EmojiModel.h" #include "emoji/Provider.h" +#include "ui/NhekoDropArea.h" #include <iostream> //only for debugging @@ -115,6 +117,7 @@ TimelineViewManager::TimelineViewManager(CallManager *callManager, ChatPage *par qmlRegisterType<DelegateChoice>("im.nheko", 1, 0, "DelegateChoice"); qmlRegisterType<DelegateChooser>("im.nheko", 1, 0, "DelegateChooser"); + qmlRegisterType<NhekoDropArea>("im.nheko", 1, 0, "NhekoDropArea"); qmlRegisterUncreatableType<DeviceVerificationFlow>( "im.nheko", 1, 0, "DeviceVerificationFlow", "Can't create verification flow from QML!"); qmlRegisterUncreatableType<UserProfile>( diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h
index 371e9af2..b9febf75 100644 --- a/src/timeline/TimelineViewManager.h +++ b/src/timeline/TimelineViewManager.h
@@ -105,6 +105,15 @@ public slots: void initWithMessages(const std::vector<QString> &roomIds); void setHistoryView(const QString &room_id); + TimelineModel *getHistoryView(const QString &room_id) + { + auto room = models.find(room_id); + if (room != models.end()) + return room.value().data(); + else + return nullptr; + } + void updateColorPalette(); void queueReactionMessage(const QString &reactedEvent, const QString &reactionKey); void queueCallMessage(const QString &roomid, const mtx::events::msg::CallInvite &);