File indexing completed on 2024-06-09 05:30:03

0001 /*
0002     SPDX-FileCopyrightText: 2016, 2019 Kai Uwe Broulik <kde@privat.broulik.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QAction>
0010 #include <QObject>
0011 #include <QPointer>
0012 #include <QQuickItem>
0013 #include <QUrl>
0014 #include <qqmlregistration.h>
0015 
0016 class NotificationFileMenu : public QObject
0017 {
0018     Q_OBJECT
0019     QML_ELEMENT
0020     Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
0021     Q_PROPERTY(QQuickItem *visualParent READ visualParent WRITE setVisualParent NOTIFY visualParentChanged)
0022     Q_PROPERTY(bool visible READ visible WRITE setVisible NOTIFY visibleChanged)
0023 
0024 public:
0025     explicit NotificationFileMenu(QObject *parent = nullptr);
0026     ~NotificationFileMenu() override;
0027 
0028     QUrl url() const;
0029     void setUrl(const QUrl &url);
0030 
0031     QQuickItem *visualParent() const;
0032     void setVisualParent(QQuickItem *visualParent);
0033 
0034     bool visible() const;
0035     void setVisible(bool visible);
0036 
0037     Q_INVOKABLE void open(int x, int y);
0038 
0039 Q_SIGNALS:
0040     void actionTriggered(QAction *action);
0041 
0042     void urlChanged();
0043     void visualParentChanged();
0044     void visibleChanged();
0045 
0046 private:
0047     QUrl m_url;
0048     QPointer<QQuickItem> m_visualParent;
0049     bool m_visible = false;
0050 };