aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/platform/qquickplatformmenuitemgroup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/platform/qquickplatformmenuitemgroup.cpp')
-rw-r--r--src/imports/platform/qquickplatformmenuitemgroup.cpp392
1 files changed, 0 insertions, 392 deletions
diff --git a/src/imports/platform/qquickplatformmenuitemgroup.cpp b/src/imports/platform/qquickplatformmenuitemgroup.cpp
deleted file mode 100644
index e0773bb1..00000000
--- a/src/imports/platform/qquickplatformmenuitemgroup.cpp
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt Labs Templates module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL3$
-** 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 The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/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 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or later 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 2.0 requirements will be
-** met: http://www.gnu.org/licenses/gpl-2.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qquickplatformmenuitemgroup_p.h"
-#include "qquickplatformmenuitem_p.h"
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \qmltype MenuItemGroup
- \inherits QtObject
-//! \instantiates QQuickPlatformMenuItemGroup
- \inqmlmodule Qt.labs.platform
- \since 5.8
- \brief A group for managing native menu items.
-
- The MenuItemGroup groups native menu items together.
-
- MenuItemGroup is exclusive by default. In an exclusive menu item
- group, only one item can be checked at any time; checking another
- item automatically unchecks the previously checked one. MenuItemGroup
- can be configured as non-exclusive, which is particularly useful for
- showing, hiding, enabling and disabling items together as a group.
-
- The most straight-forward way to use MenuItemGroup is to assign
- a list of items.
-
- \code
- Menu {
- id: verticalMenu
- title: qsTr("Vertical")
-
- MenuItemGroup {
- id: verticalGroup
- items: verticalMenu.items
- }
-
- MenuItem { text: qsTr("Top"); checkable: true }
- MenuItem { text: qsTr("Center"); checked: true }
- MenuItem { text: qsTr("Bottom"); checkable: true }
- }
- \endcode
-
- The same menu may sometimes contain items that should not be included
- in the same exclusive group. Such cases are best handled using the
- \l {MenuItem::group}{group} property.
-
- \code
- Menu {
- id: horizontalMenu
- title: qsTr("Horizontal")
-
- MenuItemGroup {
- id: horizontalGroup
- }
-
- MenuItem {
- checked: true
- text: qsTr("Left")
- group: horizontalGroup
- }
- MenuItem {
- checkable: true
- text: qsTr("Center")
- group: horizontalGroup
- }
- MenuItem {
- text: qsTr("Right")
- checkable: true
- group: horizontalGroup
- }
-
- MenuItem { separator: true }
- MenuItem { text: qsTr("Justify"); checkable: true }
- MenuItem { text: qsTr("Absolute"); checkable: true }
- }
- \endcode
-
- More advanced use cases can be handled using the addItem() and
- removeItem() methods.
-
- \labs
-
- \sa MenuItem
-*/
-
-/*!
- \qmlsignal Qt.labs.platform::MenuItemGroup::triggered(MenuItem item)
-
- This signal is emitted when an \a item in the group is triggered by the user.
-
- \sa MenuItem::triggered()
-*/
-
-/*!
- \qmlsignal Qt.labs.platform::MenuItemGroup::hovered(MenuItem item)
-
- This signal is emitted when an \a item in the group is hovered by the user.
-
- \sa MenuItem::hovered()
-*/
-
-QQuickPlatformMenuItemGroup::QQuickPlatformMenuItemGroup(QObject *parent)
- : QObject(parent), m_enabled(true), m_visible(true), m_exclusive(true), m_checkedItem(nullptr)
-{
-}
-
-QQuickPlatformMenuItemGroup::~QQuickPlatformMenuItemGroup()
-{
- clear();
-}
-
-/*!
- \qmlproperty bool Qt.labs.platform::MenuItemGroup::enabled
-
- This property holds whether the group is enabled. The default value is \c true.
-
- The enabled state of the group affects the enabled state of each item in the group,
- except that explicitly disabled items are not enabled even if the group is enabled.
-*/
-bool QQuickPlatformMenuItemGroup::isEnabled() const
-{
- return m_enabled;
-}
-
-void QQuickPlatformMenuItemGroup::setEnabled(bool enabled)
-{
- if (m_enabled == enabled)
- return;
-
- m_enabled = enabled;
- emit enabledChanged();
-
- for (QQuickPlatformMenuItem *item : qAsConst(m_items)) {
- if (item->m_enabled) {
- item->sync();
- emit item->enabledChanged();
- }
- }
-}
-
-/*!
- \qmlproperty bool Qt.labs.platform::MenuItemGroup::visible
-
- This property holds whether the group is visible. The default value is \c true.
-
- The visibility of the group affects the visibility of each item in the group,
- except that explicitly hidden items are not visible even if the group is visible.
-*/
-bool QQuickPlatformMenuItemGroup::isVisible() const
-{
- return m_visible;
-}
-
-void QQuickPlatformMenuItemGroup::setVisible(bool visible)
-{
- if (m_visible == visible)
- return;
-
- m_visible = visible;
- emit visibleChanged();
-
- for (QQuickPlatformMenuItem *item : qAsConst(m_items)) {
- if (item->m_visible) {
- item->sync();
- emit item->visibleChanged();
- }
- }
-}
-
-/*!
- \qmlproperty bool Qt.labs.platform::MenuItemGroup::exclusive
-
- This property holds whether the group is exclusive. The default value is \c true.
-
- In an exclusive menu item group, only one item can be checked at any time;
- checking another item automatically unchecks the previously checked one.
-*/
-bool QQuickPlatformMenuItemGroup::isExclusive() const
-{
- return m_exclusive;
-}
-
-void QQuickPlatformMenuItemGroup::setExclusive(bool exclusive)
-{
- if (m_exclusive == exclusive)
- return;
-
- m_exclusive = exclusive;
- emit exclusiveChanged();
-
- for (QQuickPlatformMenuItem *item : qAsConst(m_items))
- item->sync();
-}
-
-/*!
- \qmlproperty MenuItem Qt.labs.platform::MenuItemGroup::checkedItem
-
- This property holds the currently checked item in the group, or \c null if no item is checked.
-*/
-QQuickPlatformMenuItem *QQuickPlatformMenuItemGroup::checkedItem() const
-{
- return m_checkedItem;
-}
-
-void QQuickPlatformMenuItemGroup::setCheckedItem(QQuickPlatformMenuItem *item)
-{
- if (m_checkedItem == item)
- return;
-
- if (m_checkedItem)
- m_checkedItem->setChecked(false);
-
- m_checkedItem = item;
- emit checkedItemChanged();
-
- if (item)
- item->setChecked(true);
-}
-
-/*!
- \qmlproperty list<MenuItem> Qt.labs.platform::MenuItemGroup::items
-
- This property holds the list of items in the group.
-*/
-QQmlListProperty<QQuickPlatformMenuItem> QQuickPlatformMenuItemGroup::items()
-{
- return QQmlListProperty<QQuickPlatformMenuItem>(this, nullptr, items_append, items_count, items_at, items_clear);
-}
-
-/*!
- \qmlmethod void Qt.labs.platform::MenuItemGroup::addItem(MenuItem item)
-
- Adds an \a item to the group.
-*/
-void QQuickPlatformMenuItemGroup::addItem(QQuickPlatformMenuItem *item)
-{
- if (!item || m_items.contains(item))
- return;
-
- m_items.append(item);
- item->setGroup(this);
-
- connect(item, &QQuickPlatformMenuItem::checkedChanged, this, &QQuickPlatformMenuItemGroup::updateCurrent);
- connect(item, &QQuickPlatformMenuItem::triggered, this, &QQuickPlatformMenuItemGroup::activateItem);
- connect(item, &QQuickPlatformMenuItem::hovered, this, &QQuickPlatformMenuItemGroup::hoverItem);
-
- if (m_exclusive && item->isChecked())
- setCheckedItem(item);
-
- emit itemsChanged();
-}
-
-/*!
- \qmlmethod void Qt.labs.platform::MenuItemGroup::removeItem(MenuItem item)
-
- Removes an \a item from the group.
-*/
-void QQuickPlatformMenuItemGroup::removeItem(QQuickPlatformMenuItem *item)
-{
- if (!item || !m_items.contains(item))
- return;
-
- m_items.removeOne(item);
- item->setGroup(nullptr);
-
- disconnect(item, &QQuickPlatformMenuItem::checkedChanged, this, &QQuickPlatformMenuItemGroup::updateCurrent);
- disconnect(item, &QQuickPlatformMenuItem::triggered, this, &QQuickPlatformMenuItemGroup::activateItem);
- disconnect(item, &QQuickPlatformMenuItem::hovered, this, &QQuickPlatformMenuItemGroup::hoverItem);
-
- if (m_checkedItem == item)
- setCheckedItem(nullptr);
-
- emit itemsChanged();
-}
-
-/*!
- \qmlmethod void Qt.labs.platform::MenuItemGroup::clear()
-
- Removes all items from the group.
-*/
-void QQuickPlatformMenuItemGroup::clear()
-{
- if (m_items.isEmpty())
- return;
-
- for (QQuickPlatformMenuItem *item : qAsConst(m_items)) {
- item->setGroup(nullptr);
- disconnect(item, &QQuickPlatformMenuItem::checkedChanged, this, &QQuickPlatformMenuItemGroup::updateCurrent);
- disconnect(item, &QQuickPlatformMenuItem::triggered, this, &QQuickPlatformMenuItemGroup::activateItem);
- disconnect(item, &QQuickPlatformMenuItem::hovered, this, &QQuickPlatformMenuItemGroup::hoverItem);
- }
-
- setCheckedItem(nullptr);
-
- m_items.clear();
- emit itemsChanged();
-}
-
-QQuickPlatformMenuItem *QQuickPlatformMenuItemGroup::findCurrent() const
-{
- for (QQuickPlatformMenuItem *item : m_items) {
- if (item->isChecked())
- return item;
- }
- return nullptr;
-}
-
-void QQuickPlatformMenuItemGroup::updateCurrent()
-{
- if (!m_exclusive)
- return;
-
- QQuickPlatformMenuItem *item = qobject_cast<QQuickPlatformMenuItem*>(sender());
- if (item && item->isChecked())
- setCheckedItem(item);
-}
-
-void QQuickPlatformMenuItemGroup::activateItem()
-{
- QQuickPlatformMenuItem *item = qobject_cast<QQuickPlatformMenuItem*>(sender());
- if (item)
- emit triggered(item);
-}
-
-void QQuickPlatformMenuItemGroup::hoverItem()
-{
- QQuickPlatformMenuItem *item = qobject_cast<QQuickPlatformMenuItem*>(sender());
- if (item)
- emit hovered(item);
-}
-
-void QQuickPlatformMenuItemGroup::items_append(QQmlListProperty<QQuickPlatformMenuItem> *prop, QQuickPlatformMenuItem *item)
-{
- QQuickPlatformMenuItemGroup *group = static_cast<QQuickPlatformMenuItemGroup *>(prop->object);
- group->addItem(item);
-}
-
-int QQuickPlatformMenuItemGroup::items_count(QQmlListProperty<QQuickPlatformMenuItem> *prop)
-{
- QQuickPlatformMenuItemGroup *group = static_cast<QQuickPlatformMenuItemGroup *>(prop->object);
- return group->m_items.count();
-}
-
-QQuickPlatformMenuItem *QQuickPlatformMenuItemGroup::items_at(QQmlListProperty<QQuickPlatformMenuItem> *prop, int index)
-{
- QQuickPlatformMenuItemGroup *group = static_cast<QQuickPlatformMenuItemGroup *>(prop->object);
- return group->m_items.value(index);
-}
-
-void QQuickPlatformMenuItemGroup::items_clear(QQmlListProperty<QQuickPlatformMenuItem> *prop)
-{
- QQuickPlatformMenuItemGroup *group = static_cast<QQuickPlatformMenuItemGroup *>(prop->object);
- group->clear();
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qquickplatformmenuitemgroup_p.cpp"