diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-12-08 15:19:01 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-12-09 19:26:24 +0000 |
commit | 38c47c0a7cf9e40aedea7fadefc82e448a740c45 (patch) | |
tree | 731788eedaecf8a997888afff09f3f79cfd89416 /src/templates/qquickpane.cpp | |
parent | 3a5bd3d4e564a1b3cd56ed2cfb5258e4ded763b6 (diff) |
Introduce Pane
Provides a background color that matches with the application style
and theme.
Change-Id: I5e7ea4fededaaf46687a2ea0391f43dbf55e3b42
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'src/templates/qquickpane.cpp')
-rw-r--r-- | src/templates/qquickpane.cpp | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/src/templates/qquickpane.cpp b/src/templates/qquickpane.cpp new file mode 100644 index 00000000..9f1f50dd --- /dev/null +++ b/src/templates/qquickpane.cpp @@ -0,0 +1,182 @@ +/**************************************************************************** +** +** Copyright (C) 2015 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 "qquickpane_p.h" +#include "qquickpane_p_p.h" + +QT_BEGIN_NAMESPACE + +/*! + \qmltype Pane + \inherits Control + \instantiates QQuickPane + \inqmlmodule Qt.labs.controls + \ingroup qtlabscontrols-containers + \brief A pane control. + + Pane provides a background color that matches with the application style + and theme. Pane does not provide a layout of its own, but requires you to + position its contents, for instance by creating a \l RowLayout or a + \l ColumnLayout. + + If only a single item is used within a Pane, it will resize to fit the + implicit size of its contained item. This makes it particularly suitable + for use together with layouts. + + \image qtlabscontrols-pane.png + + \snippet qtlabscontrols-pane.qml 1 + + \sa {Customizing Pane}, {Container Controls} +*/ + +QQuickPanePrivate::QQuickPanePrivate() : contentWidth(0), contentHeight(0) +{ +} + +QQuickPane::QQuickPane(QQuickItem *parent) : + QQuickControl(*(new QQuickPanePrivate), parent) +{ + setFlag(QQuickItem::ItemIsFocusScope); +} + +QQuickPane::QQuickPane(QQuickPanePrivate &dd, QQuickItem *parent) : + QQuickControl(dd, parent) +{ + setFlag(QQuickItem::ItemIsFocusScope); +} + +/*! + \qmlproperty real Qt.labs.controls::Pane::contentWidth + + This property holds the content width. It is used for calculating the + total implicit width of the pane. + + \note If only a single item is used within the pane, the implicit width + of its contained item is used as the content width. +*/ +qreal QQuickPane::contentWidth() const +{ + Q_D(const QQuickPane); + return d->contentWidth; +} + +void QQuickPane::setContentWidth(qreal width) +{ + Q_D(QQuickPane); + if (d->contentWidth != width) { + d->contentWidth = width; + emit contentWidthChanged(); + } +} + +/*! + \qmlproperty real Qt.labs.controls::Pane::contentHeight + + This property holds the content height. It is used for calculating the + total implicit height of the pane. + + \note If only a single item is used within the pane, the implicit height + of its contained item is used as the content height. +*/ +qreal QQuickPane::contentHeight() const +{ + Q_D(const QQuickPane); + return d->contentHeight; +} + +void QQuickPane::setContentHeight(qreal height) +{ + Q_D(QQuickPane); + if (d->contentHeight != height) { + d->contentHeight = height; + emit contentHeightChanged(); + } +} + +/*! + \qmlproperty list<Object> Qt.labs.controls::Pane::contentData + \default + + This property holds the list of content data. + + \sa Item::data +*/ +QQmlListProperty<QObject> QQuickPane::contentData() +{ + Q_D(QQuickPane); + return QQmlListProperty<QObject>(d->contentItem, Q_NULLPTR, + QQuickItemPrivate::data_append, + QQuickItemPrivate::data_count, + QQuickItemPrivate::data_at, + QQuickItemPrivate::data_clear); +} + +/*! + \qmlproperty list<Item> Qt.labs.controls::Pane::contentChildren + + This property holds the list of content children. + + \sa Item::children +*/ +QQmlListProperty<QQuickItem> QQuickPane::contentChildren() +{ + Q_D(QQuickPane); + return QQmlListProperty<QQuickItem>(d->contentItem, Q_NULLPTR, + QQuickItemPrivate::children_append, + QQuickItemPrivate::children_count, + QQuickItemPrivate::children_at, + QQuickItemPrivate::children_clear); +} + +void QQuickPane::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) +{ + QQuickControl::contentItemChange(newItem, oldItem); + if (oldItem) + disconnect(oldItem, &QQuickItem::childrenChanged, this, &QQuickPane::contentChildrenChanged); + if (newItem) + connect(newItem, &QQuickItem::childrenChanged, this, &QQuickPane::contentChildrenChanged); + emit contentChildrenChanged(); +} + +#ifndef QT_NO_ACCESSIBILITY +QAccessible::Role QQuickPane::accessibleRole() const +{ + return QAccessible::Pane; +} +#endif + +QT_END_NAMESPACE |