diff options
Diffstat (limited to 'src/imports/platform/qquickplatformmenuitemgroup.cpp')
-rw-r--r-- | src/imports/platform/qquickplatformmenuitemgroup.cpp | 392 |
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" |