aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qtsupport/exampleslistmodel.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2023-01-17 10:35:24 +0100
committerEike Ziller <eike.ziller@qt.io>2023-01-18 10:17:11 +0000
commit4d71a24cb9cd6c10a77ea3b32d7117d616a27508 (patch)
tree74fd190e6a0e623c608ef921fcd97b4b642bc80b /src/plugins/qtsupport/exampleslistmodel.cpp
parentad643fdd30047be8855cc14db7d9a78f8655d0d2 (diff)
Welcome/Qt: Show featured examples in separate section
Task-number: QTCREATORBUG-28546 Change-Id: I9cf42cd11b442f720070c250da789d23001a1375 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/qtsupport/exampleslistmodel.cpp')
-rw-r--r--src/plugins/qtsupport/exampleslistmodel.cpp39
1 files changed, 28 insertions, 11 deletions
diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp
index a1424cdcb8..c7c32e9f29 100644
--- a/src/plugins/qtsupport/exampleslistmodel.cpp
+++ b/src/plugins/qtsupport/exampleslistmodel.cpp
@@ -3,6 +3,8 @@
#include "exampleslistmodel.h"
+#include "qtsupporttr.h"
+
#include <QBuffer>
#include <QApplication>
#include <QDir>
@@ -263,24 +265,26 @@ static QPixmap fetchPixmapAndUpdatePixmapCache(const QString &url)
return pixmap;
}
-ExamplesListModel::ExamplesListModel(ExampleSetModel *exampleSetModel,
- bool isExamples,
- QObject *parent)
- : Core::ListModel(parent)
+ExamplesViewController::ExamplesViewController(ExampleSetModel *exampleSetModel,
+ SectionedGridView *view,
+ bool isExamples,
+ QObject *parent)
+ : QObject(parent)
, m_exampleSetModel(exampleSetModel)
+ , m_view(view)
, m_isExamples(isExamples)
{
if (isExamples) {
connect(m_exampleSetModel,
&ExampleSetModel::selectedExampleSetChanged,
this,
- &ExamplesListModel::updateExamples);
+ &ExamplesViewController::updateExamples);
}
connect(Core::HelpManager::Signals::instance(),
&Core::HelpManager::Signals::documentationChanged,
this,
- &ExamplesListModel::updateExamples);
- setPixmapFunction(fetchPixmapAndUpdatePixmapCache);
+ &ExamplesViewController::updateExamples);
+ view->setPixmapFunction(fetchPixmapAndUpdatePixmapCache);
updateExamples();
}
@@ -493,7 +497,7 @@ static QList<ExampleItem *> parseTutorials(QXmlStreamReader *reader, const QStri
return result;
}
-void ExamplesListModel::updateExamples()
+void ExamplesViewController::updateExamples()
{
QString examplesInstallPath;
QString demosInstallPath;
@@ -501,7 +505,7 @@ void ExamplesListModel::updateExamples()
const QStringList sources = m_exampleSetModel->exampleSources(&examplesInstallPath,
&demosInstallPath);
- clear();
+ m_view->clear();
QList<ExampleItem *> items;
for (const QString &exampleSource : sources) {
@@ -550,8 +554,21 @@ void ExamplesListModel::updateExamples()
[](ExampleItem *item) { return item->tags.contains("ios"); });
}
}
-
- appendItems(static_container_cast<ListItem *>(items));
+ Utils::sort(items, [](ExampleItem *first, ExampleItem *second) {
+ return first->name.compare(second->name, Qt::CaseInsensitive) < 0;
+ });
+
+ QList<ExampleItem *> featured;
+ QList<ExampleItem *> other;
+ std::tie(featured, other) = Utils::partition(items,
+ [](ExampleItem *i) { return i->isHighlighted; });
+
+ if (!featured.isEmpty()) {
+ m_view->addSection({Tr::tr("Featured", "Category for highlighted examples"), 0},
+ static_container_cast<ListItem *>(featured));
+ }
+ m_view->addSection({Tr::tr("Other", "Category for all other examples"), 1},
+ static_container_cast<ListItem *>(other));
}
void ExampleSetModel::updateQtVersionList()