File indexing completed on 2024-05-12 17:08:48

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 <QObject>
0010 #include <QPointer>
0011 #include <QQuickItem>
0012 #include <QUrl>
0013 
0014 class QAction;
0015 
0016 class FileMenu : public QObject
0017 {
0018     Q_OBJECT
0019     Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
0020     Q_PROPERTY(QQuickItem *visualParent READ visualParent WRITE setVisualParent NOTIFY visualParentChanged)
0021     Q_PROPERTY(bool visible READ visible WRITE setVisible NOTIFY visibleChanged)
0022 
0023 public:
0024     explicit FileMenu(QObject *parent = nullptr);
0025     ~FileMenu() override;
0026 
0027     QUrl url() const;
0028     void setUrl(const QUrl &url);
0029 
0030     QQuickItem *visualParent() const;
0031     void setVisualParent(QQuickItem *visualParent);
0032 
0033     bool visible() const;
0034     void setVisible(bool visible);
0035 
0036     Q_INVOKABLE void open(int x, int y);
0037 
0038 Q_SIGNALS:
0039     void actionTriggered(QAction *action);
0040 
0041     void urlChanged();
0042     void visualParentChanged();
0043     void visibleChanged();
0044 
0045 private:
0046     QUrl m_url;
0047     QPointer<QQuickItem> m_visualParent;
0048     bool m_visible = false;
0049 };