summaryrefslogtreecommitdiff
path: root/src/controls/qtmenuitem.cpp
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2013-02-27 14:02:22 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-01 11:05:58 +0100
commitb0d19a08b4f34859c8643495d1910690c48644c9 (patch)
tree99c1df3b9763abaff24a1f1b8ff54c88b1f6c0d6 /src/controls/qtmenuitem.cpp
parent6215e42377fbe5bc0e67a08702bede2982a363d9 (diff)
downloadqtquickcontrols-b0d19a08b4f34859c8643495d1910690c48644c9.tar.gz
MenuBar, Menu, MenuItem, Action: New, reviewed API
Change-Id: Ic018c0d9c61ddf6fdf05750bf172cf5e306d0508 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Diffstat (limited to 'src/controls/qtmenuitem.cpp')
-rw-r--r--src/controls/qtmenuitem.cpp125
1 files changed, 96 insertions, 29 deletions
diff --git a/src/controls/qtmenuitem.cpp b/src/controls/qtmenuitem.cpp
index c53f9858..4c43bac0 100644
--- a/src/controls/qtmenuitem.cpp
+++ b/src/controls/qtmenuitem.cpp
@@ -51,7 +51,8 @@
QT_BEGIN_NAMESPACE
QtMenuBase::QtMenuBase(QObject *parent)
- : QObject(parent), m_parentMenu(0), m_visualItem(0)
+ : QObject(parent), m_visible(true),
+ m_parentMenu(0), m_visualItem(0)
{
m_platformItem = QGuiApplicationPrivate::platformTheme()->createPlatformMenuItem();
}
@@ -61,6 +62,14 @@ QtMenuBase::~QtMenuBase()
delete m_platformItem;
}
+void QtMenuBase::setVisible(bool v)
+{
+ if (v != m_visible) {
+ m_visible = v;
+ emit visibleChanged();
+ }
+}
+
QtMenu *QtMenuBase::parentMenu() const
{
return m_parentMenu;
@@ -93,7 +102,6 @@ void QtMenuBase::setVisualItem(QQuickItem *item)
\qmltype MenuSeparator
\instantiates QtMenuSeparator
\inqmlmodule QtQuick.Controls 1.0
- \inherits Item
\ingroup menus
\brief MenuSeparator provides a separator for your items inside a menu.
@@ -107,6 +115,73 @@ QtMenuSeparator::QtMenuSeparator(QObject *parent)
platformItem()->setIsSeparator(true);
}
+QtMenuText::QtMenuText(QObject *parent)
+ : QtMenuBase(parent), m_enabled(true)
+{ }
+
+QtMenuText::~QtMenuText()
+{ }
+
+void QtMenuText::setParentMenu(QtMenu *parentMenu)
+{
+ QtMenuBase::setParentMenu(parentMenu);
+ connect(this, SIGNAL(triggered()), parentMenu, SLOT(updateSelectedIndex()));
+}
+
+void QtMenuText::trigger()
+{
+ emit triggered();
+}
+
+void QtMenuText::setEnabled(bool enabled)
+{
+ if (enabled != m_enabled) {
+ m_enabled = enabled;
+ if (platformItem()) {
+ platformItem()->setEnabled(m_enabled);
+ syncWithPlatformMenu();
+ }
+
+ emit enabledChanged();
+ }
+}
+
+void QtMenuText::setText(const QString &text)
+{
+ if (text != m_text) {
+ m_text = text;
+ if (platformItem()) {
+ platformItem()->setText(m_text);
+ syncWithPlatformMenu();
+ }
+ emit textChanged();
+ }
+}
+
+void QtMenuText::setIconSource(const QUrl &iconSource)
+{
+ if (iconSource != m_iconSource) {
+ m_iconSource = iconSource;
+ if (platformItem()) {
+ platformItem()->setIcon(icon());
+ syncWithPlatformMenu();
+ }
+
+ emit iconSourceChanged();
+ }
+}
+
+void QtMenuText::setIconName(const QString &iconName)
+{
+ if (iconName != m_iconName) {
+ m_iconName = iconName;
+ if (platformItem()) {
+ platformItem()->setIcon(icon());
+ syncWithPlatformMenu();
+ }
+ emit iconNameChanged();
+ }
+}
/*!
\qmltype MenuItem
@@ -206,8 +281,15 @@ QtMenuSeparator::QtMenuSeparator(QObject *parent)
\sa triggered(), Action::trigger()
*/
+/*! \qmlproperty ExclusiveGroup MenuItem::exclusiveGroup
+
+ ...
+
+ \sa checked, checkable
+*/
+
QtMenuItem::QtMenuItem(QObject *parent)
- : QtMenuBase(parent), m_action(0)
+ : QtMenuText(parent), m_action(0)
{ }
QtMenuItem::~QtMenuItem()
@@ -215,12 +297,6 @@ QtMenuItem::~QtMenuItem()
unbindFromAction(m_action);
}
-void QtMenuItem::setParentMenu(QtMenu *parentMenu)
-{
- QtMenuBase::setParentMenu(parentMenu);
- connect(this, SIGNAL(triggered()), parentMenu, SLOT(updateSelectedIndex()));
-}
-
void QtMenuItem::bindToAction(QtAction *action)
{
m_action = action;
@@ -316,11 +392,7 @@ void QtMenuItem::setText(const QString &text)
void QtMenuItem::updateText()
{
- if (platformItem()) {
- platformItem()->setText(text());
- syncWithPlatformMenu();
- }
- emit textChanged();
+ QtMenuText::setText(text());
}
QString QtMenuItem::shortcut() const
@@ -394,11 +466,7 @@ void QtMenuItem::setEnabled(bool enabled)
void QtMenuItem::updateEnabled()
{
- if (platformItem()) {
- platformItem()->setEnabled(enabled());
- syncWithPlatformMenu();
- }
- emit enabledChanged();
+ QtMenuText::setEnabled(enabled());
}
QUrl QtMenuItem::iconSource() const
@@ -413,11 +481,7 @@ void QtMenuItem::setIconSource(const QUrl &iconSource)
void QtMenuItem::updateIconSource()
{
- if (platformItem()) {
- platformItem()->setIcon(m_action->icon());
- syncWithPlatformMenu();
- }
- emit iconSourceChanged();
+ QtMenuText::setIconSource(iconSource());
}
QString QtMenuItem::iconName() const
@@ -432,17 +496,20 @@ void QtMenuItem::setIconName(const QString &iconName)
void QtMenuItem::updateIconName()
{
- if (platformItem()) {
- platformItem()->setIcon(m_action->icon());
- syncWithPlatformMenu();
- }
- emit iconNameChanged();
+ QtMenuText::setIconName(iconName());
+}
+
+QIcon QtMenuItem::icon() const
+{
+ return m_action ? m_action->icon() : QtMenuText::icon();
}
void QtMenuItem::trigger()
{
if (m_action)
m_action->trigger();
+ else
+ QtMenuText::trigger();
}
QT_END_NAMESPACE