diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.cpp index b93df4a8955ac2b0e3025f44c619377355ec7d74..7f31b67a066fce4e9e905c0f0c2259a8832d7a9a 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.cpp @@ -46,23 +46,24 @@ ItemLibrarySectionModel::~ItemLibrarySectionModel() int ItemLibrarySectionModel::rowCount(const QModelIndex &) const { - return m_privList.count(); + return visibleItemCount(); } QVariant ItemLibrarySectionModel::data(const QModelIndex &index, int role) const { - if (!index.isValid() || index.row()+1 > m_privList.count()) { + if (!index.isValid() || index.row() + 1 > visibleItemCount()) { qDebug() << Q_FUNC_INFO << "invalid index requested"; return QVariant(); } if (m_roleNames.contains(role)) { - QVariant value = m_privList.at(index.row())->property(m_roleNames.value(role)); + QList visibleItemList = visibleItems(); + QVariant value = visibleItemList.at(index.row())->property(m_roleNames.value(role)); if (ItemLibrarySectionModel* model = qobject_cast(value.value())) return QVariant::fromValue(model); - return m_privList.at(index.row())->property(m_roleNames.value(role)); + return visibleItemList.at(index.row())->property(m_roleNames.value(role)); } qWarning() << Q_FUNC_INFO << "invalid role requested"; @@ -90,16 +91,6 @@ void ItemLibrarySectionModel::addItem(ItemLibraryItem *element) element->setVisible(true); } -void ItemLibrarySectionModel::privateInsert(int pos, QObject *element) -{ - m_privList.insert(pos, element); -} - -void ItemLibrarySectionModel::privateRemove(int pos) -{ - m_privList.removeAt(pos); -} - const QList &ItemLibrarySectionModel::items() const { return m_itemList; @@ -123,4 +114,28 @@ void ItemLibrarySectionModel::addRoleNames() setRoleNames(m_roleNames); } +int ItemLibrarySectionModel::visibleItemCount() const +{ + int visibleItemCount = 0; + + foreach (ItemLibraryItem *itemLibraryItem, m_itemList) { + if (itemLibraryItem->isVisible()) + visibleItemCount += 1; + } + + return visibleItemCount; +} + +const QList ItemLibrarySectionModel::visibleItems() const +{ + QList visibleItemList; + + foreach (ItemLibraryItem *itemLibraryItem, m_itemList) { + if (itemLibraryItem->isVisible()) + visibleItemList.append(itemLibraryItem); + } + + return visibleItemList; +} + } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.h index 056ba18c59c8328d7686f00067deb346d4bd6f24..e61d93293c38c8d95f155d489339f0216a0fd8bc 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.h @@ -53,20 +53,17 @@ public: void addItem(ItemLibraryItem *item); - void privateInsert(int pos, QObject *item); - void privateRemove(int pos); - const QList &items() const; void resetModel(); private: // functions void addRoleNames(); + int visibleItemCount() const; + const QList visibleItems() const; private: // variables QList m_itemList; - - QList m_privList; QHash m_roleNames; };