1
/****************************************************************************
3
** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
4
** Contact: https://www.qt.io/licensing/
6
** This file is part of the plugins of the Qt Toolkit.
8
** $QT_BEGIN_LICENSE:LGPL$
9
** Commercial License Usage
10
** Licensees holding valid commercial Qt licenses may use this file in
11
** accordance with the commercial license agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and The Qt Company. For licensing terms
14
** and conditions see https://www.qt.io/terms-conditions. For further
15
** information use the contact form at https://www.qt.io/contact-us.
17
** GNU Lesser General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
** General Public License version 3 as published by the Free Software
20
** Foundation and appearing in the file LICENSE.LGPL3 included in the
21
** packaging of this file. Please review the following information to
22
** ensure the GNU Lesser General Public License version 3 requirements
23
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
25
** GNU General Public License Usage
26
** Alternatively, this file may be used under the terms of the GNU
27
** General Public License version 2.0 or (at your option) the GNU General
28
** Public license version 3 or any later version approved by the KDE Free
29
** Qt Foundation. The licenses are as published by the Free Software
30
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31
** included in the packaging of this file. Please review the following
32
** information to ensure the GNU General Public License requirements will
33
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34
** https://www.gnu.org/licenses/gpl-3.0.html.
38
****************************************************************************/
40
#include "qandroidplatformmenubar.h"
41
#include "qandroidplatformmenu.h"
42
#include "androidjnimenu.h"
46
QAndroidPlatformMenuBar::QAndroidPlatformMenuBar()
49
QtAndroidMenu::addMenuBar(this);
52
QAndroidPlatformMenuBar::~QAndroidPlatformMenuBar()
54
QtAndroidMenu::removeMenuBar(this);
57
void QAndroidPlatformMenuBar::insertMenu(QPlatformMenu *menu, QPlatformMenu *before)
59
QMutexLocker lock(&m_menusListMutex);
60
m_menus.insert(std::find(m_menus.begin(),
62
static_cast<QAndroidPlatformMenu *>(before)),
63
static_cast<QAndroidPlatformMenu *>(menu));
66
void QAndroidPlatformMenuBar::removeMenu(QPlatformMenu *menu)
68
QMutexLocker lock(&m_menusListMutex);
69
m_menus.erase(std::find(m_menus.begin(),
71
static_cast<QAndroidPlatformMenu *>(menu)));
74
void QAndroidPlatformMenuBar::syncMenu(QPlatformMenu *menu)
76
QtAndroidMenu::syncMenu(static_cast<QAndroidPlatformMenu *>(menu));
79
void QAndroidPlatformMenuBar::handleReparent(QWindow *newParentWindow)
81
if (m_parentWindow == newParentWindow)
83
m_parentWindow = newParentWindow;
84
QtAndroidMenu::setMenuBar(this, newParentWindow);
87
QPlatformMenu *QAndroidPlatformMenuBar::menuForTag(quintptr tag) const
89
for (QPlatformMenu *menu : m_menus) {
90
if (menu->tag() == tag)
97
QWindow *QAndroidPlatformMenuBar::parentWindow() const
99
return m_parentWindow;
102
QAndroidPlatformMenuBar::PlatformMenusType QAndroidPlatformMenuBar::menus() const
107
QMutex *QAndroidPlatformMenuBar::menusListMutex()
109
return &m_menusListMutex;