summaryrefslogtreecommitdiff
path: root/src/plugins/qtsupport/exampleslistmodel.cpp
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@digia.com>2014-02-03 17:17:08 +0100
committerKai Koehne <kai.koehne@digia.com>2014-03-13 14:19:22 +0100
commitdc72ebd2732ac272e0b71eb64736fafc1cf63e87 (patch)
tree90dd093ae55eb683de270cb24ef2eb9ca3f01f08 /src/plugins/qtsupport/exampleslistmodel.cpp
parentfdb543620e838f98f8911d77022facbd2e1bc861 (diff)
downloadqt-creator-dc72ebd2732ac272e0b71eb64736fafc1cf63e87.tar.gz
Unify selection of 'valid' Qt versions for welcome page
Change-Id: I79ba4ac9f132a535efd9d362790b8e1d2b62d900 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Diffstat (limited to 'src/plugins/qtsupport/exampleslistmodel.cpp')
-rw-r--r--src/plugins/qtsupport/exampleslistmodel.cpp92
1 files changed, 46 insertions, 46 deletions
diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp
index a37da71f4b..885f3cd59d 100644
--- a/src/plugins/qtsupport/exampleslistmodel.cpp
+++ b/src/plugins/qtsupport/exampleslistmodel.cpp
@@ -63,8 +63,9 @@ void setUniqueQtVersionIdSetting(int id)
settings->setValue(QLatin1String(currentQtVersionFilterSettingsKeyC), id);
}
-QtVersionsModel::QtVersionsModel(QObject *parent)
- : QStandardItemModel(parent)
+QtVersionsModel::QtVersionsModel(ExamplesListModel *examplesModel, QObject *parent) :
+ QStandardItemModel(parent),
+ examplesModel(examplesModel)
{
QHash<int, QByteArray> roleNames;
roleNames[Qt::UserRole + 1] = "text";
@@ -74,22 +75,19 @@ QtVersionsModel::QtVersionsModel(QObject *parent)
int QtVersionsModel::findHighestQtVersion()
{
- QList<BaseQtVersion *> qtVersions = QtVersionManager::validVersions();
+ QList<BaseQtVersion *> qtVersions = examplesModel->qtVersions();
BaseQtVersion *newVersion = 0;
foreach (BaseQtVersion *version, qtVersions) {
-
- if (version->isValid() && version->hasDemos() && version->hasExamples()) {
- if (!newVersion) {
+ if (!newVersion) {
+ newVersion = version;
+ } else {
+ if (version->qtVersion() > newVersion->qtVersion()) {
+ newVersion = version;
+ } else if (version->qtVersion() == newVersion->qtVersion()
+ && version->uniqueId() < newVersion->uniqueId()) {
newVersion = version;
- } else {
- if (version->qtVersion() > newVersion->qtVersion()) {
- newVersion = version;
- } else if (version->qtVersion() == newVersion->qtVersion()
- && version->uniqueId() < newVersion->uniqueId()) {
- newVersion = version;
- }
}
}
}
@@ -108,12 +106,7 @@ void QtVersionsModel::setupQtVersions()
beginResetModel();
clear();
- // prioritize default qt version
- QList<BaseQtVersion *> qtVersions = QtVersionManager::validVersions();
- ProjectExplorer::Kit *defaultKit = ProjectExplorer::KitManager::defaultKit();
- BaseQtVersion *defaultVersion = QtKitInformation::qtVersion(defaultKit);
- if (defaultVersion && qtVersions.contains(defaultVersion))
- qtVersions.move(qtVersions.indexOf(defaultVersion), 0);
+ QList<BaseQtVersion *> qtVersions = examplesModel->qtVersions();
int qtVersionSetting = uniqueQtVersionIdSetting();
int newQtVersionSetting = noQtVersionsId;
@@ -133,12 +126,10 @@ void QtVersionsModel::setupQtVersions()
foreach (BaseQtVersion *version, qtVersions) {
- if (version->hasDemos() || version->hasExamples()) {
- QStandardItem *newItem = new QStandardItem();
- newItem->setData(version->displayName(), Qt::UserRole + 1);
- newItem->setData(version->uniqueId(), Qt::UserRole + 2);
- appendRow(newItem);
- }
+ QStandardItem *newItem = new QStandardItem();
+ newItem->setData(version->displayName(), Qt::UserRole + 1);
+ newItem->setData(version->uniqueId(), Qt::UserRole + 2);
+ appendRow(newItem);
}
endResetModel();
}
@@ -467,6 +458,28 @@ void ExamplesListModel::updateExamples()
emit tagsUpdated();
}
+
+QList<QtSupport::BaseQtVersion*> ExamplesListModel::qtVersions() const
+{
+ QList<BaseQtVersion*> versions = QtVersionManager::validVersions();
+
+ QMutableListIterator<BaseQtVersion*> iter(versions);
+ while (iter.hasNext()) {
+ BaseQtVersion *version = iter.next();
+ if (!version->hasExamples()
+ && !version->hasDemos())
+ iter.remove();
+ }
+
+ // prioritize default qt version
+ ProjectExplorer::Kit *defaultKit = ProjectExplorer::KitManager::defaultKit();
+ BaseQtVersion *defaultVersion = QtKitInformation::qtVersion(defaultKit);
+ if (defaultVersion && versions.contains(defaultVersion))
+ versions.move(versions.indexOf(defaultVersion), 0);
+
+ return versions;
+}
+
QStringList ExamplesListModel::exampleSources(QString *examplesInstallPath, QString *demosInstallPath,
QString *examplesFallback, QString *demosFallback,
QString *sourceFallback)
@@ -510,21 +523,12 @@ QStringList ExamplesListModel::exampleSources(QString *examplesInstallPath, QStr
QString potentialSourceFallback;
const QStringList pattern(QLatin1String("*.xml"));
- // prioritize default qt version
- QList<BaseQtVersion *> qtVersions = QtVersionManager::validVersions();
- ProjectExplorer::Kit *defaultKit = ProjectExplorer::KitManager::defaultKit();
- BaseQtVersion *defaultVersion = QtKitInformation::qtVersion(defaultKit);
- if (defaultVersion && qtVersions.contains(defaultVersion))
- qtVersions.move(qtVersions.indexOf(defaultVersion), 0);
-
- foreach (BaseQtVersion *version, qtVersions) {
-
+ foreach (BaseQtVersion *version, qtVersions()) {
//filter for qt versions
if (version->uniqueId() != m_uniqueQtId && m_uniqueQtId != noQtVersionsId)
continue;
- // qt5 with examples OR demos manifest
- if (version->qtVersion().majorVersion == 5 && (version->hasExamples() || version->hasDemos())) {
+ if (version->qtVersion().majorVersion == 5) {
// examples directory in Qt5 is under the qtbase submodule,
// search other submodule directories for further manifest files
QDir qt5docPath = QDir(version->documentationPath());
@@ -532,10 +536,8 @@ QStringList ExamplesListModel::exampleSources(QString *examplesInstallPath, QStr
const QStringList demosPattern(QLatin1String("demos-manifest.xml"));
QFileInfoList fis;
foreach (QFileInfo subDir, qt5docPath.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) {
- if (version->hasExamples())
- fis << QDir(subDir.absoluteFilePath()).entryInfoList(examplesPattern);
- if (version->hasDemos())
- fis << QDir(subDir.absoluteFilePath()).entryInfoList(demosPattern);
+ fis << QDir(subDir.absoluteFilePath()).entryInfoList(examplesPattern);
+ fis << QDir(subDir.absoluteFilePath()).entryInfoList(demosPattern);
}
if (!fis.isEmpty()) {
foreach (const QFileInfo &fi, fis)
@@ -549,17 +551,15 @@ QStringList ExamplesListModel::exampleSources(QString *examplesInstallPath, QStr
}
QFileInfoList fis;
- if (version->hasExamples())
- fis << QDir(version->examplesPath()).entryInfoList(pattern);
- if (version->hasDemos())
- fis << QDir(version->demosPath()).entryInfoList(pattern);
+ fis << QDir(version->examplesPath()).entryInfoList(pattern);
+ fis << QDir(version->demosPath()).entryInfoList(pattern);
if (!fis.isEmpty()) {
foreach (const QFileInfo &fi, fis)
sources.append(fi.filePath());
return sources;
}
// check if this Qt version would be the preferred fallback, Qt 4 only
- if (version->qtVersion().majorVersion == 4 && version->hasExamples() && version->hasDemos()) { // cached, so no performance hit
+ if (version->qtVersion().majorVersion == 4) { // cached, so no performance hit
if (potentialExamplesFallback.isEmpty()) {
potentialExamplesFallback = version->examplesPath();
potentialDemosFallback = version->demosPath();
@@ -661,7 +661,7 @@ ExamplesListModelFilter::ExamplesListModelFilter(ExamplesListModel *sourceModel,
m_showTutorialsOnly(true),
m_sourceModel(sourceModel),
m_timerId(0),
- m_qtVersionModel(new QtVersionsModel(this)),
+ m_qtVersionModel(new QtVersionsModel(sourceModel, this)),
m_blockIndexUpdate(false),
m_qtVersionManagerInitialized(false),
m_helpManagerInitialized(false),