Line data Source code
1 : /*
2 : * SPDX-License-Identifier: GPL-3.0-only
3 : * MuseScore-CLA-applies
4 : *
5 : * MuseScore Studio
6 : * Music Composition & Notation
7 : *
8 : * Copyright (C) 2021 MuseScore Limited and others
9 : *
10 : * This program is free software: you can redistribute it and/or modify
11 : * it under the terms of the GNU General Public License version 3 as
12 : * published by the Free Software Foundation.
13 : *
14 : * This program is distributed in the hope that it will be useful,
15 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 : * GNU General Public License for more details.
18 : *
19 : * You should have received a copy of the GNU General Public License
20 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 : */
22 :
23 : #pragma once
24 :
25 : #include <qqmlintegration.h>
26 :
27 : #include "types/ret.h"
28 :
29 : #include "modularity/ioc.h"
30 : #include "global/iapplication.h"
31 : #include "ui/iwindowscontroller.h"
32 :
33 : #include "windowview.h"
34 :
35 : namespace muse::uicomponents {
36 : class DialogView : public WindowView
37 : {
38 : Q_OBJECT
39 : QML_ELEMENT;
40 :
41 : Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)
42 : Q_PROPERTY(QString objectId READ objectId WRITE setObjectId NOTIFY objectIdChanged)
43 : Q_PROPERTY(bool modal READ modal WRITE setModal NOTIFY modalChanged)
44 : Q_PROPERTY(bool frameless READ frameless WRITE setFrameless NOTIFY framelessChanged)
45 : Q_PROPERTY(bool resizable READ resizable WRITE setResizable NOTIFY resizableChanged)
46 : Q_PROPERTY(bool alwaysAboveApp READ alwaysAboveApp WRITE setAlwaysAboveApp NOTIFY alwaysAboveAppChanged)
47 : Q_PROPERTY(QVariantMap ret READ ret WRITE setRet NOTIFY retChanged)
48 :
49 : GlobalInject<IApplication> application;
50 : ContextInject<ui::IWindowsController> windowsController = { this };
51 :
52 : public:
53 : explicit DialogView(QQuickItem* parent = nullptr);
54 0 : ~DialogView() override = default;
55 :
56 : QString title() const;
57 : void setTitle(QString title);
58 :
59 : QString objectId() const;
60 : void setObjectId(QString objectId);
61 :
62 : bool modal() const;
63 : void setModal(bool modal);
64 :
65 : bool frameless() const;
66 : void setFrameless(bool frameless);
67 :
68 : bool resizable() const;
69 : void setResizable(bool resizable);
70 :
71 : bool alwaysAboveApp() const;
72 : void setAlwaysAboveApp(bool alwaysAbove);
73 :
74 : QVariantMap ret() const;
75 : void setRet(QVariantMap ret);
76 : void setRetCode(Ret::Code code);
77 :
78 : Q_INVOKABLE void show();
79 : Q_INVOKABLE void hide();
80 : Q_INVOKABLE void raise();
81 : Q_INVOKABLE void accept();
82 : Q_INVOKABLE void reject(int code = -1);
83 :
84 : signals:
85 : void titleChanged(QString title);
86 : void objectIdChanged(QString objectId);
87 : void modalChanged(bool modal);
88 : void framelessChanged(bool frameless);
89 : void resizableChanged(bool resizable);
90 : void alwaysAboveAppChanged();
91 : void retChanged(QVariantMap ret);
92 :
93 : private:
94 : void initView() override;
95 :
96 : void beforeOpen() override;
97 : void afterShow() override;
98 : void onHidden() override;
99 :
100 : void updateGeometry() override;
101 : QRect viewGeometry() const override;
102 :
103 : QString m_objectId;
104 : QString m_title;
105 : bool m_modal = true;
106 : bool m_frameless = false;
107 : bool m_alwaysAboveApp = false;
108 : QVariantMap m_ret;
109 : };
110 : }
|