aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-06-09 22:54:39 +0200
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-06-09 21:04:55 +0000
commit356ed5addc48663174019b1e40f970b727567166 (patch)
treed5c61d0fd923e125fd3567ac7c42062140ad4ffc /src
parent375cd1cadb5aaa50d76490f0fecb401620fb5677 (diff)
Container: resize the content automatically
Change-Id: If7964b64b6f78fc77e1095d69658e27bcb89a6f8 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/controls/qquickcontainer.cpp25
-rw-r--r--src/controls/qquickcontainer_p.h3
-rw-r--r--src/controls/qquickcontainer_p_p.h4
-rw-r--r--src/controls/qquicktabview.cpp2
-rw-r--r--src/imports/calendar/CalendarView.qml5
-rw-r--r--src/imports/calendar/DayOfWeekRow.qml5
-rw-r--r--src/imports/calendar/WeekNumberColumn.qml5
-rw-r--r--src/imports/controls/Frame.qml4
-rw-r--r--src/imports/controls/GroupBox.qml4
-rw-r--r--src/imports/controls/PageIndicator.qml5
-rw-r--r--src/imports/controls/TabBar.qml5
-rw-r--r--src/imports/controls/TabView.qml5
-rw-r--r--src/imports/controls/ToolBar.qml4
13 files changed, 33 insertions, 43 deletions
diff --git a/src/controls/qquickcontainer.cpp b/src/controls/qquickcontainer.cpp
index 456dd6c8..4c31e12e 100644
--- a/src/controls/qquickcontainer.cpp
+++ b/src/controls/qquickcontainer.cpp
@@ -53,6 +53,15 @@ QQuickContainerPrivate::QQuickContainerPrivate() :
{
}
+void QQuickContainerPrivate::resizeContent()
+{
+ Q_Q(QQuickContainer);
+ if (contentItem) {
+ contentItem->setPosition(QPointF(q->leftPadding(), q->topPadding()));
+ contentItem->setSize(QSizeF(q->availableWidth(), q->availableHeight()));
+ }
+}
+
QQuickContainer::QQuickContainer(QQuickItem *parent) :
QQuickControl(*(new QQuickContainerPrivate), parent)
{
@@ -120,11 +129,27 @@ void QQuickContainer::setContentItem(QQuickItem *item)
if (item) {
if (!item->parentItem())
item->setParentItem(this);
+ if (isComponentComplete())
+ d->resizeContent();
}
emit contentItemChanged();
}
}
+void QQuickContainer::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
+{
+ Q_D(QQuickContainer);
+ QQuickControl::geometryChanged(newGeometry, oldGeometry);
+ d->resizeContent();
+}
+
+void QQuickContainer::paddingChange()
+{
+ Q_D(QQuickContainer);
+ QQuickControl::paddingChange();
+ d->resizeContent();
+}
+
void QQuickContainer::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
{
Q_UNUSED(newItem);
diff --git a/src/controls/qquickcontainer_p.h b/src/controls/qquickcontainer_p.h
index 6e3e224a..783f79fa 100644
--- a/src/controls/qquickcontainer_p.h
+++ b/src/controls/qquickcontainer_p.h
@@ -81,6 +81,9 @@ Q_SIGNALS:
protected:
QQuickContainer(QQuickContainerPrivate &dd, QQuickItem *parent);
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE;
+ void paddingChange() Q_DECL_OVERRIDE;
+
virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem);
private:
diff --git a/src/controls/qquickcontainer_p_p.h b/src/controls/qquickcontainer_p_p.h
index c0b52cec..538ecc3c 100644
--- a/src/controls/qquickcontainer_p_p.h
+++ b/src/controls/qquickcontainer_p_p.h
@@ -54,9 +54,13 @@ QT_BEGIN_NAMESPACE
class Q_QUICKCONTROLS_EXPORT QQuickContainerPrivate : public QQuickControlPrivate
{
+ Q_DECLARE_PUBLIC(QQuickContainer)
+
public:
QQuickContainerPrivate();
+ void resizeContent();
+
qreal contentWidth;
qreal contentHeight;
QQuickItem *contentItem;
diff --git a/src/controls/qquicktabview.cpp b/src/controls/qquicktabview.cpp
index 3a79a725..4b2485b0 100644
--- a/src/controls/qquicktabview.cpp
+++ b/src/controls/qquicktabview.cpp
@@ -130,7 +130,7 @@ void QQuickTabView::setTabBar(QQuickTabBar *bar)
void QQuickTabView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QQuickTabView);
- QQuickControl::geometryChanged(newGeometry, oldGeometry);
+ QQuickContainer::geometryChanged(newGeometry, oldGeometry);
if (d->bar) {
QQuickItemPrivate *p = QQuickItemPrivate::get(d->bar);
if (!p->widthValid) {
diff --git a/src/imports/calendar/CalendarView.qml b/src/imports/calendar/CalendarView.qml
index 6d182b49..d9d5d42f 100644
--- a/src/imports/calendar/CalendarView.qml
+++ b/src/imports/calendar/CalendarView.qml
@@ -64,11 +64,6 @@ AbstractCalendarView {
rows: 6
columns: 7
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
Repeater {
id: repeater
model: control.source
diff --git a/src/imports/calendar/DayOfWeekRow.qml b/src/imports/calendar/DayOfWeekRow.qml
index c92b76bc..cec70551 100644
--- a/src/imports/calendar/DayOfWeekRow.qml
+++ b/src/imports/calendar/DayOfWeekRow.qml
@@ -63,11 +63,6 @@ AbstractDayOfWeekRow {
contentItem: Row {
id: row
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
Repeater {
model: control.source
delegate: control.delegate
diff --git a/src/imports/calendar/WeekNumberColumn.qml b/src/imports/calendar/WeekNumberColumn.qml
index 2dbde919..149384f3 100644
--- a/src/imports/calendar/WeekNumberColumn.qml
+++ b/src/imports/calendar/WeekNumberColumn.qml
@@ -63,11 +63,6 @@ AbstractWeekNumberColumn {
contentItem: Column {
id: column
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
Repeater {
model: control.source
delegate: control.delegate
diff --git a/src/imports/controls/Frame.qml b/src/imports/controls/Frame.qml
index 01bb0e53..02972e4b 100644
--- a/src/imports/controls/Frame.qml
+++ b/src/imports/controls/Frame.qml
@@ -54,10 +54,6 @@ AbstractFrame {
contentItem: Item {
id: content
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
}
background: Rectangle {
diff --git a/src/imports/controls/GroupBox.qml b/src/imports/controls/GroupBox.qml
index d4ae204e..78eb4393 100644
--- a/src/imports/controls/GroupBox.qml
+++ b/src/imports/controls/GroupBox.qml
@@ -55,10 +55,6 @@ AbstractGroupBox {
contentItem: Item {
id: content
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
}
label: Text {
diff --git a/src/imports/controls/PageIndicator.qml b/src/imports/controls/PageIndicator.qml
index cea0a050..54fe52ec 100644
--- a/src/imports/controls/PageIndicator.qml
+++ b/src/imports/controls/PageIndicator.qml
@@ -66,11 +66,6 @@ AbstractPageIndicator {
contentItem: Row {
id: row
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
spacing: control.Theme.spacing
Repeater {
diff --git a/src/imports/controls/TabBar.qml b/src/imports/controls/TabBar.qml
index 88ef7031..845cf3d0 100644
--- a/src/imports/controls/TabBar.qml
+++ b/src/imports/controls/TabBar.qml
@@ -64,11 +64,6 @@ AbstractTabBar {
contentItem: ListView {
id: listView
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
spacing: 1
orientation: ListView.Horizontal
boundsBehavior: Flickable.StopAtBounds
diff --git a/src/imports/controls/TabView.qml b/src/imports/controls/TabView.qml
index 63327d29..0fb6840b 100644
--- a/src/imports/controls/TabView.qml
+++ b/src/imports/controls/TabView.qml
@@ -68,11 +68,6 @@ AbstractTabView {
Binding { target: control; property: "currentIndex"; value: listView.currentIndex }
Binding { target: listView; property: "currentIndex"; value: control.currentIndex }
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
-
orientation: Qt.Horizontal
snapMode: ListView.SnapOneItem
boundsBehavior: Flickable.StopAtBounds
diff --git a/src/imports/controls/ToolBar.qml b/src/imports/controls/ToolBar.qml
index 0ec2b4c0..43666db2 100644
--- a/src/imports/controls/ToolBar.qml
+++ b/src/imports/controls/ToolBar.qml
@@ -54,10 +54,6 @@ AbstractToolBar {
contentItem: Item {
id: content
- x: control.leftPadding
- y: control.topPadding
- width: control.availableWidth
- height: control.availableHeight
}
background: Rectangle {