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
qandroidplatformmenubar.cpp
Go to the documentation of this file.
1
// Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
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
#
include
"qandroidplatformmenubar.h"
6
#
include
"qandroidplatformmenu.h"
7
#
include
"androidjnimenu.h"
8
9
QT_BEGIN_NAMESPACE
10
11
QAndroidPlatformMenuBar::QAndroidPlatformMenuBar()
12
{
13
m_parentWindow = 0;
14
QtAndroidMenu::addMenuBar(
this
);
15
}
16
17
QAndroidPlatformMenuBar
::~
QAndroidPlatformMenuBar
()
18
{
19
QtAndroidMenu
::
removeMenuBar
(
this
)
;
20
}
21
22
void
QAndroidPlatformMenuBar
::
insertMenu
(QPlatformMenu *menu, QPlatformMenu *before)
23
{
24
QMutexLocker
lock(&m_menusListMutex);
25
m_menus.insert(std::find(m_menus.begin(),
26
m_menus.end(),
27
static_cast
<QAndroidPlatformMenu *>(before)),
28
static_cast
<QAndroidPlatformMenu *>(menu));
29
m_menuHash.insert(m_nextMenuId++, menu);
30
}
31
32
void
QAndroidPlatformMenuBar
::
removeMenu
(QPlatformMenu *menu)
33
{
34
QMutexLocker
lock(&m_menusListMutex);
35
m_menus.erase(std::find(m_menus.begin(),
36
m_menus.end(),
37
static_cast
<QAndroidPlatformMenu *>(menu)));
38
39
int
maxId = -1;
40
QHash<
int
, QPlatformMenu *>::iterator it = m_menuHash.begin();
41
while
(it != m_menuHash.end()) {
42
if
(it.value() == menu) {
43
it = m_menuHash.erase(it);
44
}
else
{
45
maxId = qMax(maxId, it.key());
46
++it;
47
}
48
}
49
50
m_nextMenuId = maxId + 1;
51
}
52
53
int
QAndroidPlatformMenuBar
::
menuId
(QPlatformMenu *menu)
const
54
{
55
QHash<
int
, QPlatformMenu *>::const_iterator it;
56
for
(it = m_menuHash.constBegin(); it != m_menuHash.constEnd(); ++it) {
57
if
(it.value() == menu)
58
return
it.key();
59
}
60
61
return
-1;
62
}
63
64
void
QAndroidPlatformMenuBar
::
syncMenu
(QPlatformMenu *menu)
65
{
66
QtAndroidMenu
::
syncMenu
(
static_cast
<
QAndroidPlatformMenu
*>(menu)
)
;
67
}
68
69
void
QAndroidPlatformMenuBar
::
handleReparent
(QWindow *newParentWindow)
70
{
71
if
(m_parentWindow == newParentWindow)
72
return
;
73
m_parentWindow = newParentWindow;
74
QtAndroidMenu
::
setMenuBar
(
this
,
newParentWindow
)
;
75
}
76
77
QPlatformMenu
*
QAndroidPlatformMenuBar
::
menuForTag
(quintptr tag)
const
78
{
79
for
(QAndroidPlatformMenu *menu : m_menus) {
80
if
(menu->tag() == tag)
81
return
menu;
82
}
83
84
return
nullptr
;
85
}
86
87
QPlatformMenu
*
QAndroidPlatformMenuBar
::
menuForId
(
int
menuId)
const
88
{
89
return
m_menuHash.value(menuId);
90
}
91
92
QWindow *
QAndroidPlatformMenuBar
::
parentWindow
()
const
93
{
94
return
m_parentWindow;
95
}
96
97
QAndroidPlatformMenuBar
::
PlatformMenusType
QAndroidPlatformMenuBar
::
menus
()
const
98
{
99
return
m_menus;
100
}
101
102
QMutex *
QAndroidPlatformMenuBar
::
menusListMutex
()
103
{
104
return
&m_menusListMutex;
105
}
106
107
QT_END_NAMESPACE
QAndroidPlatformMenuBar
Definition
qandroidplatformmenubar.h:17
QAndroidPlatformMenuBar::menus
PlatformMenusType menus() const
Definition
qandroidplatformmenubar.cpp:97
QAndroidPlatformMenuBar::parentWindow
QWindow * parentWindow() const override
Definition
qandroidplatformmenubar.cpp:92
QAndroidPlatformMenuBar::insertMenu
void insertMenu(QPlatformMenu *menu, QPlatformMenu *before) override
Definition
qandroidplatformmenubar.cpp:22
QAndroidPlatformMenuBar::handleReparent
void handleReparent(QWindow *newParentWindow) override
Definition
qandroidplatformmenubar.cpp:69
QAndroidPlatformMenuBar::syncMenu
void syncMenu(QPlatformMenu *menu) override
Definition
qandroidplatformmenubar.cpp:64
QAndroidPlatformMenuBar::menuId
int menuId(QPlatformMenu *menu) const
Definition
qandroidplatformmenubar.cpp:53
QAndroidPlatformMenuBar::menusListMutex
QMutex * menusListMutex()
Definition
qandroidplatformmenubar.cpp:102
QAndroidPlatformMenuBar::menuForId
QPlatformMenu * menuForId(int menuId) const
Definition
qandroidplatformmenubar.cpp:87
QAndroidPlatformMenuBar::menuForTag
QPlatformMenu * menuForTag(quintptr tag) const override
Definition
qandroidplatformmenubar.cpp:77
QAndroidPlatformMenuBar::~QAndroidPlatformMenuBar
~QAndroidPlatformMenuBar()
Definition
qandroidplatformmenubar.cpp:17
QAndroidPlatformMenuBar::removeMenu
void removeMenu(QPlatformMenu *menu) override
Definition
qandroidplatformmenubar.cpp:32
QAndroidPlatformMenuBar::PlatformMenusType
QList< QAndroidPlatformMenu * > PlatformMenusType
Definition
qandroidplatformmenubar.h:19
QAndroidPlatformMenu
Definition
qandroidplatformmenu.h:17
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::removeMenuBar
void removeMenuBar(QAndroidPlatformMenuBar *menuBar)
Definition
androidjnimenu.cpp:143
QtAndroidMenu::setMenuBar
void setMenuBar(QAndroidPlatformMenuBar *menuBar, QWindow *window)
Definition
androidjnimenu.cpp:103
qtbase
src
plugins
platforms
android
qandroidplatformmenubar.cpp
Generated on
for Qt by
1.18.0