diff options
author | Mitch Curtis <mitch.curtis@theqtcompany.com> | 2015-09-16 16:01:33 +0200 |
---|---|---|
committer | Mitch Curtis <mitch.curtis@theqtcompany.com> | 2015-09-17 11:41:22 +0000 |
commit | 7c5c9d1fb8bff09d955489f65098f3f63c53bef5 (patch) | |
tree | 73bd900bc161a532031b263e2ba5723439513a52 /src/templates/qquicktabbar.cpp | |
parent | 7e6973ad91efd62a3f4e4bb6592dd8e04e7225c0 (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.cpp | 77 |
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() |