diff options
author | Morten Sorvig <morten.sorvig@nokia.com> | 2011-09-06 14:10:50 +0200 |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@nokia.com> | 2011-09-07 11:00:36 +0200 |
commit | cee63e2c17c8e83a4366741da0cbd5fc852e5835 (patch) | |
tree | 75ccc2afe762a51984d6651d6ff6eb875b73cad6 /src/widgets/kernel | |
parent | e2be53891fe218c9a1a63c2d385d149d2b1f982f (diff) |
Cocoa: QMenu refactor.
This change prepares for enabling native menus
on OS X.
Move code from src/widgets to cocoa:
- qcocoaapplicaiton
- qcocoaapplicaitondelegate
- qcocoamenuloader
- qcocoamenu
- qmenu_mac
- misc helpers to qcocoahelpers
Create a QNSApplication and
QCocoaApplicationDelegate at application startup.
New Lighthouse API:
- class QPlatformMenu
- class QPlatformMenuBar
- QPlatformIntegration::createPlatformMenu()
- QPlatformIntegration::createPlatformMenuBar()
Platforms that wants a native menu integration
subclasses QPlatformMenu[|Bar] and implements the
create function. The default implementation returns
0, which causes QMenu to use the standard Qt
menus.
This API is based on the current native menu
abstraction that Mac, Wince and S60 uses in Qt 4.
The main difference is that the platform classes are
proper standalone classes and not #ifdeffed into
QMenuPrivate.
Change-Id: I3da41f80b0ae903a476937908b1f9b88014b7954
Reviewed-on: http://codereview.qt.nokia.com/4068
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Diffstat (limited to 'src/widgets/kernel')
-rw-r--r-- | src/widgets/kernel/kernel.pri | 2 | ||||
-rw-r--r-- | src/widgets/kernel/qplatformmenu_qpa.cpp | 51 | ||||
-rw-r--r-- | src/widgets/kernel/qplatformmenu_qpa.h | 88 |
3 files changed, 141 insertions, 0 deletions
diff --git a/src/widgets/kernel/kernel.pri b/src/widgets/kernel/kernel.pri index cebd106830..8fbf968581 100644 --- a/src/widgets/kernel/kernel.pri +++ b/src/widgets/kernel/kernel.pri @@ -174,12 +174,14 @@ qpa { HEADERS += \ kernel/qdesktopwidget_qpa_p.h \ kernel/qwidgetwindow_qpa_p.h \ + kernel/qplatformmenu_qpa.h \ SOURCES += \ kernel/qapplication_qpa.cpp \ kernel/qdesktopwidget_qpa.cpp \ kernel/qwidget_qpa.cpp \ kernel/qwidgetwindow_qpa.cpp \ + kernel/qplatformmenu_qpa.cpp \ } !qpa:!x11:mac { diff --git a/src/widgets/kernel/qplatformmenu_qpa.cpp b/src/widgets/kernel/qplatformmenu_qpa.cpp new file mode 100644 index 0000000000..57c2613079 --- /dev/null +++ b/src/widgets/kernel/qplatformmenu_qpa.cpp @@ -0,0 +1,51 @@ +#include "qplatformmenu_qpa.h" + +// +// QPlatformMenuAction +// + +QPlatformMenuAction::~QPlatformMenuAction() +{ + +} + +// +// QPlatformMenu +// +QPlatformMenu::QPlatformMenu() +{ +} + +QPlatformMenu::~QPlatformMenu() +{ + +} + +void QPlatformMenu::setMenuEnabled(bool enable) +{ + Q_UNUSED(enable); +} + +void QPlatformMenu::syncSeparatorsCollapsible(bool enable) +{ + Q_UNUSED(enable); +} + +// +// QPlatformMenuBar +// +QPlatformMenuBar::QPlatformMenuBar() +{ + +} + +QPlatformMenuBar::~QPlatformMenuBar() +{ + +} + +void QPlatformMenuBar::handleReparent(QWidget *newParent) +{ + Q_UNUSED(newParent); +} + diff --git a/src/widgets/kernel/qplatformmenu_qpa.h b/src/widgets/kernel/qplatformmenu_qpa.h new file mode 100644 index 0000000000..e3b816c9fe --- /dev/null +++ b/src/widgets/kernel/qplatformmenu_qpa.h @@ -0,0 +1,88 @@ +/**************************************************************************** + ** + ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). + ** All rights reserved. + ** Contact: Nokia Corporation (qt-info@nokia.com) + ** + ** This file is part of the QtGui module of the Qt Toolkit. + ** + ** $QT_BEGIN_LICENSE:LGPL$ + ** GNU Lesser General Public License Usage + ** This file may be used under the terms of the GNU Lesser General Public + ** License version 2.1 as published by the Free Software Foundation and + ** appearing in the file LICENSE.LGPL included in the packaging of this + ** file. Please review the following information to ensure the GNU Lesser + ** General Public License version 2.1 requirements will be met: + ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. + ** + ** In addition, as a special exception, Nokia gives you certain additional + ** rights. These rights are described in the Nokia Qt LGPL Exception + ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU General + ** Public License version 3.0 as published by the Free Software Foundation + ** and appearing in the file LICENSE.GPL included in the packaging of this + ** file. Please review the following information to ensure the GNU General + ** Public License version 3.0 requirements will be met: + ** http://www.gnu.org/copyleft/gpl.html. + ** + ** Other Usage + ** Alternatively, this file may be used in accordance with the terms and + ** conditions contained in a signed written agreement between you and Nokia. + ** + ** + ** + ** + ** + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + +#ifndef QPLATFORMMENU_H +#define QPLATFORMMENU_H + +#include <qglobal.h> +#include <qpointer.h> +#include <QtWidgets/qaction.h> + +QT_BEGIN_NAMESPACE + +class QMenuPrivate; +class Q_WIDGETS_EXPORT QPlatformMenuAction +{ +public: + virtual ~QPlatformMenuAction(); + QPointer<QAction> action; +}; + +class Q_WIDGETS_EXPORT QPlatformMenu { +public: + QPlatformMenu(); + virtual ~QPlatformMenu(); + + virtual bool merged(const QAction *action) const = 0; + + virtual void addAction(QAction *action, QAction *before) = 0; + virtual void removeAction(QAction *action) = 0; + virtual void syncAction(QAction *action) = 0; + + virtual void setMenuEnabled(bool enable); + virtual void syncSeparatorsCollapsible(bool enable); +}; + +struct Q_WIDGETS_EXPORT QPlatformMenuBar { + QPlatformMenuBar(); + virtual ~QPlatformMenuBar(); + + virtual void addAction(QAction *action, QAction *before = 0) = 0; + virtual void syncAction(QAction *action) = 0; + virtual void removeAction(QAction *action) = 0; + + virtual void handleReparent(QWidget *newParent); +}; + +QT_END_NAMESPACE + +#endif + |