File indexing completed on 2024-06-23 05:14:15

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     utils/dragqueen.h
0003 
0004     This file is part of Kleopatra, the KDE keymanager
0005     SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include <QLabel>
0013 #include <QMimeData>
0014 #include <QPoint>
0015 #include <QPointer>
0016 
0017 namespace Kleo
0018 {
0019 
0020 class DragQueen : public QLabel
0021 {
0022     Q_OBJECT
0023     Q_PROPERTY(QString url READ url WRITE setUrl)
0024 public:
0025     explicit DragQueen(QWidget *widget = nullptr, Qt::WindowFlags f = {});
0026     explicit DragQueen(const QString &text, QWidget *widget = nullptr, Qt::WindowFlags f = {});
0027     ~DragQueen() override;
0028 
0029     void setUrl(const QString &url);
0030     QString url() const;
0031 
0032     void setMimeData(QMimeData *md);
0033     QMimeData *mimeData() const;
0034 
0035 protected:
0036     void mousePressEvent(QMouseEvent *) override;
0037     void mouseMoveEvent(QMouseEvent *) override;
0038 
0039 private:
0040     QPointer<QMimeData> m_data;
0041     QPoint m_dragStartPosition;
0042     QString m_dataFormat;
0043 };
0044 
0045 }