aboutsummaryrefslogtreecommitdiffstats
path: root/src/templates/qquicktabbar.cpp
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@theqtcompany.com>2015-09-16 16:01:33 +0200
committerMitch Curtis <mitch.curtis@theqtcompany.com>2015-09-17 11:41:22 +0000
commit7c5c9d1fb8bff09d955489f65098f3f63c53bef5 (patch)
tree73bd900bc161a532031b263e2ba5723439513a52 /src/templates/qquicktabbar.cpp
parent7e6973ad91efd62a3f4e4bb6592dd8e04e7225c0 (diff)
Move currentIndex, add/insert/removeItem to QQuickContainer
Change-Id: I6bb2adb4de972bb62f0e72c80cc50cf90964631f Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src/templates/qquicktabbar.cpp')
-rw-r--r--src/templates/qquicktabbar.cpp77
1 files changed, 16 insertions, 61 deletions
diff --git a/src/templates/qquicktabbar.cpp b/src/templates/qquicktabbar.cpp
index 38de7f49..ca0ba0ee 100644
--- a/src/templates/qquicktabbar.cpp
+++ b/src/templates/qquicktabbar.cpp
@@ -96,16 +96,17 @@ class QQuickTabBarPrivate : public QQuickContainerPrivate
Q_DECLARE_PUBLIC(QQuickTabBar)
public:
- QQuickTabBarPrivate() : currentIndex(0), group(Q_NULLPTR) { }
+ QQuickTabBarPrivate() : group(Q_NULLPTR) { }
void updateLayout();
void updateCurrent();
- void insertItem(int index, QQuickItem *item) Q_DECL_OVERRIDE;
- void moveItem(int from, int to) Q_DECL_OVERRIDE;
- void removeItem(int index, QQuickItem *item) Q_DECL_OVERRIDE;
+ void itemInserted(int index, QQuickItem *item) Q_DECL_OVERRIDE;
+ void itemMoved(int from, int to) Q_DECL_OVERRIDE;
+ void itemRemoved(QQuickItem *item) Q_DECL_OVERRIDE;
+
+ void onCurrentIndexChanged();
- int currentIndex;
QQuickExclusiveGroup *group;
};
@@ -135,40 +136,26 @@ void QQuickTabBarPrivate::updateCurrent()
q->setCurrentIndex(contentModel->indexOf(group->current(), Q_NULLPTR));
}
-void QQuickTabBarPrivate::insertItem(int index, QQuickItem *item)
+void QQuickTabBarPrivate::itemInserted(int, QQuickItem *item)
{
- QQuickContainerPrivate::insertItem(index, item);
-
group->addCheckable(item);
- if (contentModel->count() == 1 || currentIndex == index)
- group->setCurrent(item);
- else
- updateCurrent();
}
-void QQuickTabBarPrivate::moveItem(int from, int to)
+void QQuickTabBarPrivate::itemMoved(int, int)
{
- QQuickContainerPrivate::moveItem(from, to);
-
updateCurrent();
}
-void QQuickTabBarPrivate::removeItem(int index, QQuickItem *item)
+void QQuickTabBarPrivate::itemRemoved(QQuickItem *item)
{
- Q_Q(QQuickTabBar);
- bool currentChanged = false;
- if (index == currentIndex) {
- group->setCurrent(contentModel->get(index - 1));
- } else if (index < currentIndex) {
- --currentIndex;
- currentChanged = true;
- }
group->removeCheckable(item);
+}
- QQuickContainerPrivate::removeItem(index, item);
-
- if (currentChanged)
- emit q->currentIndexChanged();
+void QQuickTabBarPrivate::onCurrentIndexChanged()
+{
+ Q_Q(QQuickTabBar);
+ if (q->isComponentComplete())
+ group->setCurrent(contentModel->get(currentIndex));
}
QQuickTabBar::QQuickTabBar(QQuickItem *parent) :
@@ -182,40 +169,8 @@ QQuickTabBar::QQuickTabBar(QQuickItem *parent) :
d->group = new QQuickExclusiveGroup(this);
connect(d->group, &QQuickExclusiveGroup::currentChanged, this, &QQuickTabBar::currentItemChanged);
QObjectPrivate::connect(d->group, &QQuickExclusiveGroup::currentChanged, d, &QQuickTabBarPrivate::updateCurrent);
-}
-/*!
- \qmlproperty int QtQuickControls2::TabBar::currentIndex
-
- This property holds the current index.
-*/
-int QQuickTabBar::currentIndex() const
-{
- Q_D(const QQuickTabBar);
- return d->currentIndex;
-}
-
-void QQuickTabBar::setCurrentIndex(int index)
-{
- Q_D(QQuickTabBar);
- if (d->currentIndex != index) {
- d->currentIndex = index;
- emit currentIndexChanged();
- if (isComponentComplete())
- d->group->setCurrent(d->contentModel->get(index));
- }
-}
-
-/*!
- \qmlproperty Item QtQuickControls2::TabBar::currentItem
- \readonly
-
- This property holds the current item.
-*/
-QQuickItem *QQuickTabBar::currentItem() const
-{
- Q_D(const QQuickTabBar);
- return qobject_cast<QQuickItem *>(d->group->current());
+ QObjectPrivate::connect(this, &QQuickContainer::currentIndexChanged, d, &QQuickTabBarPrivate::onCurrentIndexChanged);
}
void QQuickTabBar::updatePolish()