Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qiosmenu.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QIOSMENU_H
6#define QIOSMENU_H
7
8#import <UIKit/UIKit.h>
9
10#include <QtCore/QtCore>
11#include <qpa/qplatformmenu.h>
12
13#import "quiview.h"
14
15#include <QtCore/qpointer.h>
16
17class QIOSMenu;
18@class QUIMenuController;
19@class QUIPickerView;
20
22{
23public:
25
26 void setText(const QString &text) override;
27 void setIcon(const QIcon &) override {}
28 void setMenu(QPlatformMenu *) override;
29 void setVisible(bool isVisible) override;
30 void setIsSeparator(bool) override;
31 void setFont(const QFont &) override {}
32 void setRole(MenuRole role) override;
33 void setCheckable(bool) override {}
34 void setChecked(bool) override {}
35#ifndef QT_NO_SHORTCUT
36 void setShortcut(const QKeySequence&) override;
37#endif
38 void setEnabled(bool enabled) override;
39 void setIconSize(int) override {}
40
42 QString m_text;
48};
49
51
52class QIOSMenu : public QPlatformMenu
53{
54public:
55 QIOSMenu();
56 ~QIOSMenu();
57
58 void insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before) override;
59 void removeMenuItem(QPlatformMenuItem *menuItem) override;
60 void syncMenuItem(QPlatformMenuItem *) override;
62
63 void setText(const QString &) override;
64 void setIcon(const QIcon &) override {}
65 void setEnabled(bool enabled) override;
66 void setVisible(bool visible) override;
67 void setMenuType(MenuType type) override;
68
69 void showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item) override;
70 void dismiss() override;
71
72 QPlatformMenuItem *menuItemAt(int position) const override;
73 QPlatformMenuItem *menuItemForTag(quintptr tag) const override;
74
75 void handleItemSelected(QIOSMenuItem *menuItem);
76
77 static QIOSMenu *currentMenu() { return m_currentMenu; }
78 static id menuActionTarget() { return m_currentMenu ? m_currentMenu->m_menuController : 0; }
79
80protected:
81 bool eventFilter(QObject *obj, QEvent *event) override;
82
83private:
84 bool m_enabled;
85 bool m_visible;
86 QString m_text;
87 MenuType m_menuType;
88 MenuType m_effectiveMenuType;
89 QPointer<QWindow> m_parentWindow;
90 QRect m_targetRect;
91 const QIOSMenuItem *m_targetItem;
92 QUIMenuController *m_menuController;
93 QUIPickerView *m_pickerView;
94 QIOSMenuItemList m_menuItems;
95
96 static QIOSMenu *m_currentMenu;
97
98 void updateVisibility();
99 void toggleShowUsingUIMenuController(bool show);
100 void toggleShowUsingUIPickerView(bool show);
101 QIOSMenuItemList visibleMenuItems() const;
102 QIOSMenuItemList filterFirstResponderActions(const QIOSMenuItemList &menuItems);
103 void repositionMenu();
104};
105
106#endif // QIOSMENU_H
void setChecked(bool) override
Definition qiosmenu.h:34
void setIcon(const QIcon &) override
Definition qiosmenu.h:27
QString m_text
Definition qiosmenu.h:42
void setIconSize(int) override
Definition qiosmenu.h:39
void setFont(const QFont &) override
Definition qiosmenu.h:31
void setText(const QString &text) override
Definition qiosmenu.mm:236
QIOSMenu * m_menu
Definition qiosmenu.h:46
void setIsSeparator(bool) override
Definition qiosmenu.mm:251
void setVisible(bool isVisible) override
Definition qiosmenu.mm:246
bool m_enabled
Definition qiosmenu.h:44
bool m_visible
Definition qiosmenu.h:41
void setCheckable(bool) override
Definition qiosmenu.h:33
bool m_separator
Definition qiosmenu.h:45
MenuRole m_role
Definition qiosmenu.h:43
void setShortcut(const QKeySequence &) override
Definition qiosmenu.mm:262
void setRole(MenuRole role) override
Definition qiosmenu.mm:256
void setEnabled(bool enabled) override
Definition qiosmenu.mm:268
void setMenu(QPlatformMenu *) override
Definition qiosmenu.mm:241
QKeySequence m_shortcut
Definition qiosmenu.h:47
void dismiss() override
Definition qiosmenu.mm:391
QPlatformMenuItem * menuItemAt(int position) const override
Definition qiosmenu.mm:532
void insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before) override
Definition qiosmenu.mm:293
void removeMenuItem(QPlatformMenuItem *menuItem) override
Definition qiosmenu.mm:305
void setText(const QString &) override
Definition qiosmenu.mm:327
QPlatformMenuItem * menuItemForTag(quintptr tag) const override
Definition qiosmenu.mm:539
static QIOSMenu * currentMenu()
Definition qiosmenu.h:77
void setVisible(bool visible) override
Definition qiosmenu.mm:337
void setIcon(const QIcon &) override
Definition qiosmenu.h:64
static id menuActionTarget()
Definition qiosmenu.h:78
bool eventFilter(QObject *obj, QEvent *event) override
Filters events if this object has been installed as an event filter for the watched object.
Definition qiosmenu.mm:456
void syncMenuItem(QPlatformMenuItem *) override
Definition qiosmenu.mm:312
void syncSeparatorsCollapsible(bool) override
Definition qiosmenu.h:61
void handleItemSelected(QIOSMenuItem *menuItem)
Definition qiosmenu.mm:347
void setEnabled(bool enabled) override
Definition qiosmenu.mm:332
void setMenuType(MenuType type) override
Definition qiosmenu.mm:342
long NSInteger
Q_FORWARD_DECLARE_OBJC_CLASS(NSString)
#define qApp
#define qGuiApp
const char kImePlatformDataHideShortcutsBar[]
QList< QIOSMenuItem * > QIOSMenuItemList
Definition qiosmenu.h:50
static NSString *const kSelectorPrefix
Definition qiosmenu.mm:26