Open-Typer
Open source typewriting tutor program
Loading...
Searching...
No Matches
QmlUtils.h
1/*
2 * QmlUtils.h
3 * This file is part of Open-Typer
4 *
5 * Copyright (C) 2022-2023 - adazem009
6 *
7 * Open-Typer is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * Open-Typer is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with Open-Typer. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef QMLUTILS_H
22#define QMLUTILS_H
23
24#include <QObject>
25#include <QQuickItem>
26#include <QFont>
27#include "validator/MistakeRecord.h"
28#include "validator/CharacterRecord.h"
29
31class Q_DECL_EXPORT QmlUtils : public QObject
32{
33 Q_OBJECT
34 Q_PROPERTY(QQuickItem *blurSource READ blurSource WRITE setBlurSource NOTIFY blurSourceChanged) // deprecated
35 Q_PROPERTY(QQuickItem *bgBlur READ bgBlur WRITE setBgBlur NOTIFY bgBlurChanged)
36 Q_PROPERTY(QQuickItem *menuBarBlur READ menuBarBlur WRITE setMenuBarBlur NOTIFY menuBarBlurChanged)
37 Q_PROPERTY(QQuickItem *tabBarBlur READ tabBarBlur WRITE setTabBarBlur NOTIFY tabBarBlurChanged)
38 Q_PROPERTY(QQuickItem *activeFocusItem READ activeFocusItem WRITE setActiveFocusItem NOTIFY activeFocusItemChanged)
39 public:
40 enum StandardIcon
41 {
42 NoIcon = 0,
43 Information = 1,
44 Warning = 2,
45 Critical = 3,
46 Question = 4
47 };
48 Q_ENUM(StandardIcon)
49
50 Q_DECL_DEPRECATED QQuickItem *blurSource(void);
51 Q_DECL_DEPRECATED void setBlurSource(QQuickItem *item);
52 QQuickItem *bgBlur(void);
53 void setBgBlur(QQuickItem *item);
54 QQuickItem *menuBarBlur(void);
55 void setMenuBarBlur(QQuickItem *item);
56 QQuickItem *tabBarBlur() const;
57 void setTabBarBlur(QQuickItem *newTabBarBlur);
58 QQuickItem *activeFocusItem(void);
59 void setActiveFocusItem(QQuickItem *newActiveFocusItem);
60 Q_INVOKABLE static bool nativeMenuBar(void);
61 Q_INVOKABLE static int qtVersionMajor(void);
62 Q_INVOKABLE static int qtVersionMinor(void);
63 Q_INVOKABLE static int qtVersionPatch(void);
64 Q_INVOKABLE static int compareQtVersions(int major1, int minor1, int patch1, int major2, int minor2, int patch2);
65 Q_INVOKABLE static bool qtVersionAtLeast(int major, int minor, int patch);
66 Q_INVOKABLE static QString applicationRevision(void);
67 Q_INVOKABLE static int applicationBuildYear(void);
68 Q_INVOKABLE static void restartApplication(void);
69 Q_INVOKABLE static bool osWindows(void);
70 Q_INVOKABLE static bool osWasm(void);
71 Q_INVOKABLE static bool osMac(void);
72 Q_INVOKABLE void reloadMenuBar(void);
73 static QPixmap standardIcon(StandardIcon icon);
74 Q_INVOKABLE static QString standardIconStr(StandardIcon icon);
75 Q_INVOKABLE static QStringList fontFamilies(bool fixedPitch = false);
76 Q_INVOKABLE static QString translateStandardButton(QString buttonText);
77 Q_INVOKABLE static MistakeRecord createMistakeRecord(void);
78 Q_INVOKABLE static CharacterRecord createCharacterRecord(void);
79 Q_INVOKABLE static QQuickItem *findFirstControl(QQuickItem *rootItem);
80 Q_INVOKABLE static bool itemHasChild(QQuickItem *item, QQuickItem *child);
81
82 private:
83 static QString convertPixmap(QPixmap pixmap);
84 static QList<QQuickItem *> itemChildren(QQuickItem *item);
85 QQuickItem *m_blurSource = nullptr;
86 QQuickItem *m_bgBlur = nullptr;
87 QQuickItem *m_menuBarBlur = nullptr;
88 QQuickItem *m_tabBarBlur = nullptr;
89 QQuickItem *m_activeFocusItem = nullptr;
90
91 signals:
92 void blurSourceChanged(QQuickItem *item);
93 void bgBlurChanged(QQuickItem *item);
94 void menuBarBlurChanged(QQuickItem *item);
95 void tabBarBlurChanged(QQuickItem *item);
96 void activeFocusItemChanged(void);
97 void menuBarReloadTriggered(void);
98 void screenKeyboardChanged(bool layoutChanged); // used to update the keyboard after changing settings related to it
99};
100
101#endif // QMLUTILS_H
The CharacterRecord class can be used to store character records.
Definition CharacterRecord.h:32
The MistakeRecord class can be used to store mistake records.
Definition MistakeRecord.h:29
The QmlUtils class acts like a bridge for QML code.
Definition QmlUtils.h:32