Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qandroidplatformmenu.cpp
Go to the documentation of this file.
1
// Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
2
// Copyright (C) 2021 The Qt Company Ltd.
3
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
// Qt-Security score:significant reason:default
5
6
#
include
"androidjnimenu.h"
7
#
include
"qandroidplatformmenu.h"
8
#
include
"qandroidplatformmenuitem.h"
9
10
#
include
<
QtCore
/
qjnienvironment
.
h
>
11
#
include
<
QtCore
/
qjniobject
.
h
>
12
13
QT_BEGIN_NAMESPACE
14
15
QAndroidPlatformMenu::QAndroidPlatformMenu()
16
{
17
m_enabled =
true
;
18
m_isVisible =
true
;
19
}
20
21
QAndroidPlatformMenu
::~
QAndroidPlatformMenu
()
22
{
23
QtAndroidMenu
::
androidPlatformMenuDestroyed
(
this
)
;
24
}
25
26
void
QAndroidPlatformMenu
::
insertMenuItem
(QPlatformMenuItem *menuItem, QPlatformMenuItem *before)
27
{
28
QMutexLocker
lock(&m_menuItemsMutex);
29
m_menuItems.insert(std::find(m_menuItems.begin(),
30
m_menuItems.end(),
31
static_cast
<QAndroidPlatformMenuItem *>(before)),
32
static_cast
<QAndroidPlatformMenuItem *>(menuItem));
33
m_menuHash.insert(m_nextMenuId++, menuItem);
34
}
35
36
void
QAndroidPlatformMenu
::
removeMenuItem
(QPlatformMenuItem *menuItem)
37
{
38
QMutexLocker
lock(&m_menuItemsMutex);
39
PlatformMenuItemsType::iterator it = std::find(m_menuItems.begin(),
40
m_menuItems.end(),
41
static_cast
<QAndroidPlatformMenuItem *>(menuItem));
42
if
(it != m_menuItems.end())
43
m_menuItems.erase(it);
44
45
{
46
int
maxId = -1;
47
QHash<
int
, QPlatformMenuItem *>::iterator it = m_menuHash.begin();
48
while
(it != m_menuHash.end()) {
49
if
(it.value() == menuItem) {
50
it = m_menuHash.erase(it);
51
}
else
{
52
maxId = qMax(maxId, it.key());
53
++it;
54
}
55
}
56
57
m_nextMenuId = maxId + 1;
58
}
59
}
60
61
void
QAndroidPlatformMenu
::
syncMenuItem
(QPlatformMenuItem *menuItem)
62
{
63
PlatformMenuItemsType::iterator it;
64
for
(it = m_menuItems.begin(); it != m_menuItems.end(); ++it) {
65
if
((*it)->tag() == menuItem->tag())
66
break
;
67
}
68
69
if
(it != m_menuItems.end())
70
QtAndroidMenu
::
syncMenu
(
this
)
;
71
}
72
73
void
QAndroidPlatformMenu
::
syncSeparatorsCollapsible
(
bool
enable)
74
{
75
Q_UNUSED(enable);
76
}
77
78
void
QAndroidPlatformMenu
::setText(
const
QString &text)
79
{
80
m_text = text;
81
}
82
83
QString
QAndroidPlatformMenu
::
text
()
const
84
{
85
return
m_text;
86
}
87
88
void
QAndroidPlatformMenu
::
setIcon
(
const
QIcon &icon)
89
{
90
m_icon = icon;
91
}
92
93
QIcon
QAndroidPlatformMenu
::
icon
()
const
94
{
95
return
m_icon;
96
}
97
98
void
QAndroidPlatformMenu
::
setEnabled
(
bool
enabled)
99
{
100
m_enabled = enabled;
101
}
102
103
bool
QAndroidPlatformMenu
::
isEnabled
()
const
104
{
105
return
m_enabled;
106
}
107
108
void
QAndroidPlatformMenu
::
setVisible
(
bool
visible)
109
{
110
m_isVisible = visible;
111
}
112
113
bool
QAndroidPlatformMenu
::
isVisible
()
const
114
{
115
return
m_isVisible;
116
}
117
118
void
QAndroidPlatformMenu
::
showPopup
(
const
QWindow *parentWindow,
const
QRect &targetRect,
const
QPlatformMenuItem *item)
119
{
120
Q_UNUSED(parentWindow);
121
Q_UNUSED(item);
122
setVisible
(
true
)
;
123
QtAndroidMenu
::
showContextMenu
(
this
,
targetRect
)
;
124
}
125
126
QPlatformMenuItem
*
QAndroidPlatformMenu
::
menuItemForTag
(quintptr tag)
const
127
{
128
for
(QAndroidPlatformMenuItem *menuItem : m_menuItems) {
129
if
(menuItem->tag() == tag)
130
return
menuItem;
131
}
132
133
return
nullptr
;
134
}
135
136
QPlatformMenuItem
*
QAndroidPlatformMenu
::
menuItemAt
(
int
position)
const
137
{
138
if
(position < m_menuItems.size())
139
return
m_menuItems[position];
140
return
0;
141
}
142
143
int
QAndroidPlatformMenu
::
menuId
(QPlatformMenuItem *menu)
const
144
{
145
QHash<
int
, QPlatformMenuItem *>::const_iterator it;
146
for
(it = m_menuHash.constBegin(); it != m_menuHash.constEnd(); ++it) {
147
if
(it.value() == menu)
148
return
it.key();
149
}
150
151
return
-1;
152
}
153
154
QPlatformMenuItem
*
QAndroidPlatformMenu
::
menuItemForId
(
int
menuId)
const
155
{
156
return
m_menuHash.value(menuId);
157
}
158
159
QAndroidPlatformMenu
::
PlatformMenuItemsType
QAndroidPlatformMenu
::
menuItems
()
const
160
{
161
return
m_menuItems;
162
}
163
164
QMutex *
QAndroidPlatformMenu
::
menuItemsMutex
()
165
{
166
return
&m_menuItemsMutex;
167
}
168
169
QT_END_NAMESPACE
QAndroidPlatformMenu
Definition
qandroidplatformmenu.h:17
QAndroidPlatformMenu::syncMenuItem
void syncMenuItem(QPlatformMenuItem *menuItem) override
Definition
qandroidplatformmenu.cpp:61
QAndroidPlatformMenu::removeMenuItem
void removeMenuItem(QPlatformMenuItem *menuItem) override
Definition
qandroidplatformmenu.cpp:36
QAndroidPlatformMenu::menuId
int menuId(QPlatformMenuItem *menuItem) const
Definition
qandroidplatformmenu.cpp:143
QAndroidPlatformMenu::menuItemForTag
QPlatformMenuItem * menuItemForTag(quintptr tag) const override
Definition
qandroidplatformmenu.cpp:126
QAndroidPlatformMenu::menuItemForId
QPlatformMenuItem * menuItemForId(int menuId) const
Definition
qandroidplatformmenu.cpp:154
QAndroidPlatformMenu::showPopup
void showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item) override
Definition
qandroidplatformmenu.cpp:118
QAndroidPlatformMenu::PlatformMenuItemsType
QList< QAndroidPlatformMenuItem * > PlatformMenuItemsType
Definition
qandroidplatformmenu.h:19
QAndroidPlatformMenu::insertMenuItem
void insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before) override
Definition
qandroidplatformmenu.cpp:26
QAndroidPlatformMenu::syncSeparatorsCollapsible
void syncSeparatorsCollapsible(bool enable) override
Definition
qandroidplatformmenu.cpp:73
QAndroidPlatformMenu::isEnabled
bool isEnabled() const override
Definition
qandroidplatformmenu.cpp:103
QAndroidPlatformMenu::setIcon
void setIcon(const QIcon &icon) override
Definition
qandroidplatformmenu.cpp:88
QAndroidPlatformMenu::isVisible
bool isVisible() const
Definition
qandroidplatformmenu.cpp:113
QAndroidPlatformMenu::menuItemsMutex
QMutex * menuItemsMutex()
Definition
qandroidplatformmenu.cpp:164
QAndroidPlatformMenu::setEnabled
void setEnabled(bool enabled) override
Definition
qandroidplatformmenu.cpp:98
QAndroidPlatformMenu::setVisible
void setVisible(bool visible) override
Definition
qandroidplatformmenu.cpp:108
QAndroidPlatformMenu::text
QString text() const
Definition
qandroidplatformmenu.cpp:83
QAndroidPlatformMenu::icon
QIcon icon() const
Definition
qandroidplatformmenu.cpp:93
QAndroidPlatformMenu::menuItemAt
QPlatformMenuItem * menuItemAt(int position) const override
Definition
qandroidplatformmenu.cpp:136
QAndroidPlatformMenu::~QAndroidPlatformMenu
~QAndroidPlatformMenu()
Definition
qandroidplatformmenu.cpp:21
QAndroidPlatformMenu::menuItems
PlatformMenuItemsType menuItems() const
Definition
qandroidplatformmenu.cpp:159
QMutexLocker
\inmodule QtCore
Definition
qmutex.h:347
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QtAndroidMenu
Definition
androidjnimenu.h:22
QtAndroidMenu::syncMenu
void syncMenu(QAndroidPlatformMenu *menu)
Definition
androidjnimenu.cpp:86
QtAndroidMenu::androidPlatformMenuDestroyed
void androidPlatformMenuDestroyed(QAndroidPlatformMenu *menu)
Definition
androidjnimenu.cpp:96
QtAndroidMenu::showContextMenu
void showContextMenu(QAndroidPlatformMenu *menu, const QRect &anchorRect)
Definition
androidjnimenu.cpp:60
qtbase
src
plugins
platforms
android
qandroidplatformmenu.cpp
Generated on
for Qt by
1.18.0