diff options
| author | J-P Nurmi <jpnurmi@digia.com> | 2013-04-12 17:05:22 +0200 |
|---|---|---|
| committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-15 10:35:46 +0200 |
| commit | 2b309cf52dfff7307a055b2662e7ce1a53d44bdb (patch) | |
| tree | 9c539d9e93dbd41718cbc15d2f80d504fdece094 /src/controls/qtmenuitem.cpp | |
| parent | 88e867cbeedd9063a08b9c401a8e56d0fb43d17b (diff) | |
Rename QtMenuXxx to QQuickMenuXxx
Change-Id: I89aa205686f0bdf2b267ad17a8ae0470c2f4751f
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Diffstat (limited to 'src/controls/qtmenuitem.cpp')
| -rw-r--r-- | src/controls/qtmenuitem.cpp | 607 |
1 files changed, 0 insertions, 607 deletions
diff --git a/src/controls/qtmenuitem.cpp b/src/controls/qtmenuitem.cpp deleted file mode 100644 index 400fe2c97..000000000 --- a/src/controls/qtmenuitem.cpp +++ /dev/null @@ -1,607 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Quick Controls module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, 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, Digia gives you certain additional -** rights. These rights are described in the Digia 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. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtmenuitem_p.h" -#include "qquickaction_p.h" -#include "qtmenu_p.h" -#include "qtmenuitemcontainer_p.h" - -#include <private/qguiapplication_p.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/qpa/qplatformmenu.h> -#include <qquickitem.h> - -QT_BEGIN_NAMESPACE - -QtMenuBase::QtMenuBase(QObject *parent) - : QObject(parent), m_visible(true), m_parentMenu(0), m_container(0), m_visualItem(0) -{ - m_platformItem = QGuiApplicationPrivate::platformTheme()->createPlatformMenuItem(); -} - -QtMenuBase::~QtMenuBase() -{ - setParentMenu(0); - if (m_platformItem) { - delete m_platformItem; - m_platformItem = 0; - } -} - -void QtMenuBase::setVisible(bool v) -{ - if (v != m_visible) { - m_visible = v; - - if (m_platformItem) { - m_platformItem->setVisible(m_visible); - syncWithPlatformMenu(); - } - - emit visibleChanged(); - } -} - -QtMenu *QtMenuBase::parentMenu() const -{ - return m_parentMenu; -} - -void QtMenuBase::setParentMenu(QtMenu *parentMenu) -{ - if (m_parentMenu && m_parentMenu->platformMenu()) - m_parentMenu->platformMenu()->removeMenuItem(m_platformItem); - - m_parentMenu = parentMenu; -} - -QtMenuItemContainer *QtMenuBase::container() const -{ - return m_container; -} - -void QtMenuBase::setContainer(QtMenuItemContainer *c) -{ - m_container = c; -} - -void QtMenuBase::syncWithPlatformMenu() -{ - QtMenu *menu = parentMenu(); - if (menu && menu->platformMenu() && platformItem() - && menu->contains(this)) // If not, it'll be added later and then sync'ed - menu->platformMenu()->syncMenuItem(platformItem()); -} - -QQuickItem *QtMenuBase::visualItem() const -{ - return m_visualItem; -} - -void QtMenuBase::setVisualItem(QQuickItem *item) -{ - m_visualItem = item; -} - -/*! - \qmltype MenuSeparator - \instantiates QtMenuSeparator - \inqmlmodule QtQuick.Controls 1.0 - \ingroup menus - \brief MenuSeparator provides a separator for items inside a menu. - - \sa Menu, MenuItem -*/ - -/*! - \qmlproperty bool MenuSeparator::visible - - Whether the menu separator should be visible. -*/ - -/*! - \qmlproperty enumeration MenuSeparator::type - - This property is read-only and constant, and its value is \l MenuItemType.Separator. -*/ - -QtMenuSeparator::QtMenuSeparator(QObject *parent) - : QtMenuBase(parent) -{ - if (platformItem()) - platformItem()->setIsSeparator(true); -} - -QtMenuText::QtMenuText(QObject *parent) - : QtMenuBase(parent), m_action(new QQuickAction(this)) -{ - connect(m_action, SIGNAL(enabledChanged()), this, SLOT(updateEnabled())); - connect(m_action, SIGNAL(textChanged()), this, SLOT(updateText())); - connect(m_action, SIGNAL(iconNameChanged()), this, SLOT(updateIcon())); - connect(m_action, SIGNAL(iconNameChanged()), this, SIGNAL(iconNameChanged())); - connect(m_action, SIGNAL(iconSourceChanged()), this, SLOT(updateIcon())); - connect(m_action, SIGNAL(iconSourceChanged()), this, SIGNAL(iconSourceChanged())); -} - -QtMenuText::~QtMenuText() -{ - delete m_action; -} - -bool QtMenuText::enabled() const -{ - return action()->isEnabled(); -} - -void QtMenuText::setEnabled(bool e) -{ - action()->setEnabled(e); -} - -QString QtMenuText::text() const -{ - return m_action->text(); -} - -void QtMenuText::setText(const QString &t) -{ - m_action->setText(t); -} - -QUrl QtMenuText::iconSource() const -{ - return m_action->iconSource(); -} - -void QtMenuText::setIconSource(const QUrl &iconSource) -{ - m_action->setIconSource(iconSource); -} - -QString QtMenuText::iconName() const -{ - return m_action->iconName(); -} - -void QtMenuText::setIconName(const QString &iconName) -{ - m_action->setIconName(iconName); -} - -QIcon QtMenuText::icon() const -{ - return m_action->icon(); -} - -void QtMenuText::updateText() -{ - if (platformItem()) { - platformItem()->setText(text()); - syncWithPlatformMenu(); - } - emit __textChanged(); -} - -void QtMenuText::updateEnabled() -{ - if (platformItem()) { - platformItem()->setEnabled(enabled()); - syncWithPlatformMenu(); - } - emit enabledChanged(); -} - -void QtMenuText::updateIcon() -{ - if (platformItem()) { - platformItem()->setIcon(icon()); - syncWithPlatformMenu(); - } - emit __iconChanged(); -} - -/*! - \qmltype MenuItem - \instantiates QtMenuItem - \ingroup menus - \inqmlmodule QtQuick.Controls 1.0 - \brief MenuItem provides an item to add in a menu or a menu bar. - - \code - Menu { - text: "Edit" - - MenuItem { - text: "Cut" - shortcut: "Ctrl+X" - onTriggered: ... - } - - MenuItem { - text: "Copy" - shortcut: "Ctrl+C" - onTriggered: ... - } - - MenuItem { - text: "Paste" - shortcut: "Ctrl+V" - onTriggered: ... - } - } - \endcode - - \sa MenuBar, Menu, MenuSeparator, Action -*/ - -/*! - \qmlproperty bool MenuItem::visible - - Whether the menu item should be visible. Defaults to \c true. -*/ - -/*! - \qmlproperty enumeration MenuItem::type - - This property is read-only and constant, and its value is \l MenuItemType.Item. -*/ - -/*! - \qmlproperty string MenuItem::text - - Text for the menu item. Overrides the item's bound action \c text property. - - Mnemonics are supported by prefixing the shortcut letter with \&. - For instance, \c "\&Open" will bind the \c Alt-O shortcut to the - \c "Open" menu item. Note that not all platforms support mnemonics. - - Defaults to the empty string. - - \sa Action::text -*/ - -/*! - \qmlproperty bool MenuItem::enabled - - Whether the menu item is enabled, and responsive to user interaction. Defaults to \c true. -*/ - -/*! - \qmlproperty url MenuItem::iconSource - - Sets the icon file or resource url for the \l MenuItem icon. - Overrides the item's bound action \c iconSource property. Defaults to the empty URL. - - \sa iconName, Action::iconSource -*/ - -/*! - \qmlproperty string MenuItem::iconName - - Sets the icon name for the \l MenuItem icon. This will pick the icon - with the given name from the current theme. Overrides the item's bound - action \c iconName property. Defaults to the empty string. - - \sa iconSource, Action::iconName -*/ - -/*! \qmlsignal MenuItem::triggered() - - Emitted when either the menu item or its bound action have been activated. - - \sa trigger(), Action::triggered(), Action::toggled() -*/ - -/*! \qmlmethod MenuItem::trigger() - - Manually trigger a menu item. Will also trigger the item's bound action. - - \sa triggered(), Action::trigger() -*/ - -/*! - \qmlproperty string MenuItem::shortcut - - Shorcut bound to the menu item. Defaults to the empty string. - - \sa Action::shortcut -*/ - -/*! - \qmlproperty bool MenuItem::checkable - - Whether the menu item can be checked, or toggled. Defaults to \c false. - - \sa checked -*/ - -/*! - \qmlproperty bool MenuItem::checked - - If the menu item is checkable, this property reflects its checked state. Defaults to \c false. - - \sa checkable, Action::toggled() -*/ - -/*! \qmlproperty ExclusiveGroup MenuItem::exclusiveGroup - - If a menu item is checkable, an \l ExclusiveGroup can be attached to it. - All the menu items sharing the same exclusive group, and by extension, any \l Action sharing it, - become mutually exclusive selectable, meaning that only the last checked menu item will - actually be checked. - - Defaults to \c null, meaning no exclusive behavior is to be expected. - - \sa checked, checkable -*/ - -/*! \qmlsignal MenuItem::toggled(checked) - - Emitted whenever a menu item's \c checked property changes. - This usually happens at the same time as \l triggered(). - - \sa checked, triggered(), Action::triggered(), Action::toggled() -*/ - -/*! - \qmlproperty Action MenuItem::action - - The action bound to this menu item. It will provide values for all the properties of the menu item. - However, it is possible to override the action's \c text, \c iconSource, and \c iconName - properties by just assigning these properties, allowing some customization. - - In addition, the menu item \c triggered() and \c toggled() signals will not be emitted. - Instead, the action \c triggered() and \c toggled() signals will be. - - Defaults to \c null, meaning no action is bound to the menu item. -*/ - -QtMenuItem::QtMenuItem(QObject *parent) - : QtMenuText(parent), m_boundAction(0) -{ - connect(this, SIGNAL(__textChanged()), this, SIGNAL(textChanged())); - - connect(action(), SIGNAL(triggered()), this, SIGNAL(triggered())); - connect(action(), SIGNAL(toggled(bool)), this, SLOT(updateChecked())); - if (platformItem()) - connect(platformItem(), SIGNAL(activated()), this, SLOT(trigger())); -} - -QtMenuItem::~QtMenuItem() -{ - unbindFromAction(m_boundAction); - if (platformItem()) - disconnect(platformItem(), SIGNAL(activated()), this, SLOT(trigger())); -} - -void QtMenuItem::setParentMenu(QtMenu *parentMenu) -{ - QtMenuText::setParentMenu(parentMenu); - if (parentMenu) - connect(this, SIGNAL(triggered()), parentMenu, SLOT(updateSelectedIndex())); -} - -void QtMenuItem::bindToAction(QQuickAction *action) -{ - m_boundAction = action; - - connect(m_boundAction, SIGNAL(destroyed(QObject*)), this, SLOT(unbindFromAction(QObject*))); - - connect(m_boundAction, SIGNAL(triggered()), this, SIGNAL(triggered())); - connect(m_boundAction, SIGNAL(toggled(bool)), this, SLOT(updateChecked())); - connect(m_boundAction, SIGNAL(exclusiveGroupChanged()), this, SIGNAL(exclusiveGroupChanged())); - connect(m_boundAction, SIGNAL(enabledChanged()), this, SLOT(updateEnabled())); - connect(m_boundAction, SIGNAL(textChanged()), this, SLOT(updateText())); - connect(m_boundAction, SIGNAL(shortcutChanged(QString)), this, SLOT(updateShortcut())); - connect(m_boundAction, SIGNAL(checkableChanged()), this, SIGNAL(checkableChanged())); - connect(m_boundAction, SIGNAL(iconNameChanged()), this, SLOT(updateIcon())); - connect(m_boundAction, SIGNAL(iconNameChanged()), this, SIGNAL(iconNameChanged())); - connect(m_boundAction, SIGNAL(iconSourceChanged()), this, SLOT(updateIcon())); - connect(m_boundAction, SIGNAL(iconSourceChanged()), this, SIGNAL(iconSourceChanged())); - - if (m_boundAction->parent() != this) { - updateText(); - updateShortcut(); - updateEnabled(); - updateIcon(); - if (checkable()) - updateChecked(); - } -} - -void QtMenuItem::unbindFromAction(QObject *o) -{ - if (!o) - return; - - if (o == m_boundAction) - m_boundAction = 0; - - QQuickAction *action = qobject_cast<QQuickAction *>(o); - if (!action) - return; - - disconnect(action, SIGNAL(destroyed(QObject*)), this, SLOT(unbindFromAction(QObject*))); - - disconnect(action, SIGNAL(triggered()), this, SIGNAL(triggered())); - disconnect(action, SIGNAL(toggled(bool)), this, SLOT(updateChecked())); - disconnect(action, SIGNAL(exclusiveGroupChanged()), this, SIGNAL(exclusiveGroupChanged())); - disconnect(action, SIGNAL(enabledChanged()), this, SLOT(updateEnabled())); - disconnect(action, SIGNAL(textChanged()), this, SLOT(updateText())); - disconnect(action, SIGNAL(shortcutChanged(QString)), this, SLOT(updateShortcut())); - disconnect(action, SIGNAL(checkableChanged()), this, SIGNAL(checkableChanged())); - disconnect(action, SIGNAL(iconNameChanged()), this, SLOT(updateIcon())); - disconnect(action, SIGNAL(iconNameChanged()), this, SIGNAL(iconNameChanged())); - disconnect(action, SIGNAL(iconSourceChanged()), this, SLOT(updateIcon())); - disconnect(action, SIGNAL(iconSourceChanged()), this, SIGNAL(iconSourceChanged())); -} - -QQuickAction *QtMenuItem::action() const -{ - if (m_boundAction) - return m_boundAction; - return QtMenuText::action(); -} - -void QtMenuItem::setBoundAction(QQuickAction *a) -{ - if (a == m_boundAction) - return; - - if (m_boundAction) { - if (m_boundAction->parent() == this) - delete m_boundAction; - else - unbindFromAction(m_boundAction); - } - - bindToAction(a); - emit actionChanged(); -} - -QString QtMenuItem::text() const -{ - QString ownText = QtMenuText::text(); - if (!ownText.isEmpty()) - return ownText; - return m_boundAction ? m_boundAction->text() : QString(); -} - -QUrl QtMenuItem::iconSource() const -{ - QUrl ownIconSource = QtMenuText::iconSource(); - if (!ownIconSource.isEmpty()) - return ownIconSource; - return m_boundAction ? m_boundAction->iconSource() : QUrl(); -} - -QString QtMenuItem::iconName() const -{ - QString ownIconName = QtMenuText::iconName(); - if (!ownIconName.isEmpty()) - return ownIconName; - return m_boundAction ? m_boundAction->iconName() : QString(); -} - -QIcon QtMenuItem::icon() const -{ - QIcon ownIcon = QtMenuText::icon(); - if (!ownIcon.isNull()) - return ownIcon; - return m_boundAction ? m_boundAction->icon() : QIcon(); -} - -QString QtMenuItem::shortcut() const -{ - return action()->shortcut(); -} - -void QtMenuItem::setShortcut(const QString &shortcut) -{ - if (!m_boundAction) - action()->setShortcut(shortcut); -} - -void QtMenuItem::updateShortcut() -{ - if (platformItem()) { - platformItem()->setShortcut(QKeySequence(shortcut())); - syncWithPlatformMenu(); - } - emit shortcutChanged(); -} - -bool QtMenuItem::checkable() const -{ - return action()->isCheckable(); -} - -void QtMenuItem::setCheckable(bool checkable) -{ - if (!m_boundAction) - action()->setCheckable(checkable); -} - -bool QtMenuItem::checked() const -{ - return action()->isChecked(); -} - -void QtMenuItem::setChecked(bool checked) -{ - if (!m_boundAction) - action()->setChecked(checked); -} - -void QtMenuItem::updateChecked() -{ - bool checked = this->checked(); - if (platformItem()) { - platformItem()->setChecked(checked); - syncWithPlatformMenu(); - } - - emit toggled(checked); -} - -QQuickExclusiveGroup *QtMenuItem::exclusiveGroup() const -{ - return action()->exclusiveGroup(); -} - -void QtMenuItem::setExclusiveGroup(QQuickExclusiveGroup *eg) -{ - if (!m_boundAction) - action()->setExclusiveGroup(eg); -} - -void QtMenuItem::setEnabled(bool enabled) -{ - if (!m_boundAction) - action()->setEnabled(enabled); -} - -void QtMenuItem::trigger() -{ - action()->trigger(); -} - -QT_END_NAMESPACE |
