diff src/gui/widgets/drop_list_widget.cc @ 317:b1f4d1867ab1

services: VERY initial Kitsu support it only supports user authentication for now, but it's definitely a start.
author Paper <paper@paper.us.eu.org>
date Wed, 12 Jun 2024 04:07:10 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gui/widgets/drop_list_widget.cc	Wed Jun 12 04:07:10 2024 -0400
@@ -0,0 +1,47 @@
+#include "gui/widgets/drop_list_widget.h"
+
+#include <QDragMoveEvent>
+#include <QDropEvent>
+#include <QMimeData>
+#include <QFileInfo>
+
+/* currently this only sends local paths that are folders */
+
+DroppableListWidget::DroppableListWidget(QWidget* parent) : QListWidget(parent) {
+	setAcceptDrops(true);
+}
+
+void DroppableListWidget::dragMoveEvent(QDragMoveEvent* event) {
+	if (event->mimeData()->hasUrls())
+		event->acceptProposedAction();
+}
+
+void DroppableListWidget::dragEnterEvent(QDragEnterEvent* event) {
+	if (event->mimeData()->hasUrls())
+		event->acceptProposedAction();
+}
+
+void DroppableListWidget::dropEvent(QDropEvent* event) {
+	const QMimeData* mime_data = event->mimeData();
+
+	if (!mime_data->hasUrls())
+		return;
+
+	QStringList path_list;
+	QList<QUrl> url_list = mime_data->urls();
+
+	for (const auto& url : url_list) {
+		if (!url.isLocalFile())
+			continue;
+
+		const QString file = url.toLocalFile();
+		const QFileInfo fileinfo(file);
+		if (fileinfo.exists() && fileinfo.isDir())
+			path_list.append(file);
+	}
+
+	if (!path_list.isEmpty())
+		emit FilesDropped(path_list);
+
+	event->acceptProposedAction();
+}
\ No newline at end of file