File indexing completed on 2024-04-14 15:38:18

0001 /***************************************************************************
0002  *   SPDX-FileCopyrightText: 2013 Eike Hein <hein@kde.org>
0003  *   SPDX-License-Identifier: GPL-2.0-or-later
0004  ***************************************************************************/
0005 
0006 #ifndef DRAGHELPER_H
0007 #define DRAGHELPER_H
0008 
0009 #include <QIcon>
0010 #include <QObject>
0011 
0012 #include "milou_export.h"
0013 
0014 class QQuickItem;
0015 class QMimeData;
0016 
0017 namespace Milou
0018 {
0019 class MILOU_EXPORT DragHelper : public QObject
0020 {
0021     Q_OBJECT
0022     Q_PROPERTY(int dragIconSize READ dragIconSize WRITE setDragIconSize NOTIFY dragIconSizeChanged)
0023 
0024 public:
0025     explicit DragHelper(QObject *parent = nullptr);
0026     ~DragHelper() override;
0027 
0028     int dragIconSize() const;
0029     void setDragIconSize(int size);
0030 
0031     Q_INVOKABLE bool isDrag(int oldX, int oldY, int newX, int newY) const;
0032     // TODO KF6 merge the two
0033     Q_INVOKABLE void startDrag(QQuickItem *item, QMimeData *mimeData, const QIcon &icon = QIcon());
0034     Q_INVOKABLE void startDrag(QQuickItem *item, QMimeData *mimeData, const QString &iconName);
0035 
0036 Q_SIGNALS:
0037     void dragIconSizeChanged();
0038     void dropped();
0039 
0040 private:
0041     int m_dragIconSize;
0042     Q_INVOKABLE void doDrag(QQuickItem *item, QMimeData *mimeData, const QIcon &icon = QIcon());
0043 };
0044 
0045 }
0046 
0047 #endif