summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Molkentin <daniel.molkentin@nokia.com>2011-11-25 13:40:10 +0100
committerEike Ziller <eike.ziller@nokia.com>2011-11-25 13:57:19 +0100
commitf4ae2546618caa7c2932918dacc1b1d181e9919c (patch)
tree5d3e7242aca74b2ad4a80b0695cce5ff1080cd34
parenta1e707f93d9d954005e0510718301017e4afd861 (diff)
downloadqt-creator-f4ae2546618caa7c2932918dacc1b1d181e9919c.tar.gz
Copy dependencies specified in manifest file.
Change-Id: I7e97af90cb7cd4c93abe2330cfbd92581b2be22e Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
-rw-r--r--share/qtcreator/welcomescreen/widgets/ExampleDelegate.qml2
-rw-r--r--src/plugins/qtsupport/exampleslistmodel.cpp17
-rw-r--r--src/plugins/qtsupport/exampleslistmodel.h3
-rw-r--r--src/plugins/qtsupport/gettingstartedwelcomepage.cpp17
-rw-r--r--src/plugins/qtsupport/gettingstartedwelcomepage.h5
5 files changed, 33 insertions, 11 deletions
diff --git a/share/qtcreator/welcomescreen/widgets/ExampleDelegate.qml b/share/qtcreator/welcomescreen/widgets/ExampleDelegate.qml
index 72a30ae622..fb5769d624 100644
--- a/share/qtcreator/welcomescreen/widgets/ExampleDelegate.qml
+++ b/share/qtcreator/welcomescreen/widgets/ExampleDelegate.qml
@@ -294,7 +294,7 @@ Item {
script: {
delegate.state = "";
if (model.hasSourceCode)
- gettingStarted.openProject(model.projectPath, model.filesToOpen, model.docUrl)
+ gettingStarted.openProject(model.projectPath, model.filesToOpen, model.docUrl, model.dependencies)
else
gettingStarted.openSplitHelp(model.docUrl);
}
diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp
index 9c0d967fa3..88820bea26 100644
--- a/src/plugins/qtsupport/exampleslistmodel.cpp
+++ b/src/plugins/qtsupport/exampleslistmodel.cpp
@@ -65,6 +65,7 @@ ExamplesListModel::ExamplesListModel(QObject *parent) :
roleNames[Difficulty] = "difficulty";
roleNames[Type] = "type";
roleNames[HasSourceCode] = "hasSourceCode";
+ roleNames[Dependencies] = "dependencies";
setRoleNames(roleNames);
connect(QtVersionManager::instance(), SIGNAL(updateExamples(QString,QString,QString)),
@@ -73,7 +74,7 @@ ExamplesListModel::ExamplesListModel(QObject *parent) :
SLOT(helpInitialized()));
}
-static inline QString fixSTringForTags(const QString &string)
+static inline QString fixStringForTags(const QString &string)
{
QString returnString = string;
returnString.remove(QLatin1String("<i>"));
@@ -104,7 +105,9 @@ QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader* reader, co
} else if (reader->name() == QLatin1String("fileToOpen")) {
item.filesToOpen.append(projectsOffset + '/' + reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
} else if (reader->name() == QLatin1String("description")) {
- item.description = fixSTringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
+ item.description = fixStringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
+ } else if (reader->name() == QLatin1String("dependency")) {
+ item.dependencies.append(projectsOffset + '/' + reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
} else if (reader->name() == QLatin1String("tags")) {
item.tags = reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement).split(",");
m_tags.append(item.tags);
@@ -144,7 +147,9 @@ QList<ExampleItem> ExamplesListModel::parseDemos(QXmlStreamReader* reader, const
} else if (reader->name() == QLatin1String("fileToOpen")) {
item.filesToOpen.append(projectsOffset + '/' + reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
} else if (reader->name() == QLatin1String("description")) {
- item.description = fixSTringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
+ item.description = fixStringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
+ } else if (reader->name() == QLatin1String("dependency")) {
+ item.dependencies.append(projectsOffset + '/' + reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
} else if (reader->name() == QLatin1String("tags")) {
item.tags = reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement).split(",");
}
@@ -183,7 +188,9 @@ QList<ExampleItem> ExamplesListModel::parseTutorials(QXmlStreamReader* reader, c
} else if (reader->name() == QLatin1String("fileToOpen")) {
item.filesToOpen.append(projectsOffset + '/' + reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
} else if (reader->name() == QLatin1String("description")) {
- item.description = fixSTringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
+ item.description = fixStringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
+ } else if (reader->name() == QLatin1String("dependency")) {
+ item.dependencies.append(projectsOffset + '/' + reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
} else if (reader->name() == QLatin1String("tags")) {
item.tags = reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement).split(",");
}
@@ -362,6 +369,8 @@ QVariant ExamplesListModel::data(const QModelIndex &index, int role) const
return item.tags;
case Difficulty:
return item.difficulty;
+ case Dependencies:
+ return item.dependencies;
case HasSourceCode:
return item.hasSourceCode;
case Type:
diff --git a/src/plugins/qtsupport/exampleslistmodel.h b/src/plugins/qtsupport/exampleslistmodel.h
index 2c9fad97b7..12db413af3 100644
--- a/src/plugins/qtsupport/exampleslistmodel.h
+++ b/src/plugins/qtsupport/exampleslistmodel.h
@@ -42,7 +42,7 @@ namespace QtSupport {
namespace Internal {
enum ExampleRoles { Name=Qt::UserRole, ProjectPath, Description, ImageUrl,
- DocUrl, FilesToOpen, Tags, Difficulty, HasSourceCode, Type };
+ DocUrl, FilesToOpen, Tags, Difficulty, HasSourceCode, Type, Dependencies };
enum InstructionalType { Example=0, Demo, Tutorial };
@@ -56,6 +56,7 @@ struct ExampleItem {
QString docUrl;
QStringList filesToOpen;
QStringList tags;
+ QStringList dependencies;
int difficulty;
bool hasSourceCode;
};
diff --git a/src/plugins/qtsupport/gettingstartedwelcomepage.cpp b/src/plugins/qtsupport/gettingstartedwelcomepage.cpp
index de33e6e959..3f96fc4ca1 100644
--- a/src/plugins/qtsupport/gettingstartedwelcomepage.cpp
+++ b/src/plugins/qtsupport/gettingstartedwelcomepage.cpp
@@ -47,6 +47,7 @@
#include <QtCore/QMutexLocker>
#include <QtCore/QWeakPointer>
#include <QtCore/QWaitCondition>
+#include <QtCore/QDir>
#include <QtGui/QGraphicsProxyWidget>
#include <QtGui/QScrollBar>
#include <QtGui/QSortFilterProxyModel>
@@ -254,7 +255,7 @@ QStringList GettingStartedWelcomePage::tagList() const
return examplesModel()->tags();
}
-QString GettingStartedWelcomePage::copyToAlternativeLocation(const QFileInfo& proFileInfo, QStringList &filesToOpen)
+QString GettingStartedWelcomePage::copyToAlternativeLocation(const QFileInfo& proFileInfo, QStringList &filesToOpen, const QStringList& dependencies)
{
const QString projectDir = proFileInfo.canonicalPath();
QDialog d(Core::ICore::instance()->mainWindow());
@@ -309,6 +310,15 @@ QString GettingStartedWelcomePage::copyToAlternativeLocation(const QFileInfo& pr
for (it = filesToOpen.begin(); it != filesToOpen.end(); ++it)
it->replace(projectDir, targetDir);
+ foreach (const QString &dependency, dependencies) {
+ QString dirName = QDir(dependency).dirName();
+ if (!Utils::FileUtils::copyRecursively(dependency, targetDir + QDir::separator()+ dirName, &error)) {
+ QMessageBox::warning(Core::ICore::instance()->mainWindow(), tr("Cannot Copy Project"), error);
+ // do not fail, just warn;
+ }
+ }
+
+
return targetDir+ '/' + proFileInfo.fileName();
} else {
QMessageBox::warning(Core::ICore::instance()->mainWindow(), tr("Cannot Copy Project"), error);
@@ -320,7 +330,8 @@ QString GettingStartedWelcomePage::copyToAlternativeLocation(const QFileInfo& pr
}
-void GettingStartedWelcomePage::openProject(const QString &projectFile, const QStringList &additionalFilesToOpen, const QUrl &help)
+void GettingStartedWelcomePage::openProject(const QString &projectFile, const QStringList &additionalFilesToOpen,
+ const QUrl &help, const QStringList &dependencies)
{
QString proFile = projectFile;
if (proFile.isEmpty())
@@ -330,7 +341,7 @@ void GettingStartedWelcomePage::openProject(const QString &projectFile, const QS
QFileInfo proFileInfo(proFile);
// If the Qt is a distro Qt on Linux, it will not be writable, hence compilation will fail
if (!proFileInfo.isWritable())
- proFile = copyToAlternativeLocation(proFileInfo, filesToOpen);
+ proFile = copyToAlternativeLocation(proFileInfo, filesToOpen, dependencies);
// don't try to load help and files if loading the help request is being cancelled
QString errorMessage;
diff --git a/src/plugins/qtsupport/gettingstartedwelcomepage.h b/src/plugins/qtsupport/gettingstartedwelcomepage.h
index 0c84f6420a..02715e6219 100644
--- a/src/plugins/qtsupport/gettingstartedwelcomepage.h
+++ b/src/plugins/qtsupport/gettingstartedwelcomepage.h
@@ -68,12 +68,13 @@ signals:
public slots:
void openSplitHelp(const QUrl &help);
- void openProject(const QString& projectFile, const QStringList& additionalFilesToOpen, const QUrl& help);
+ void openProject(const QString& projectFile, const QStringList& additionalFilesToOpen,
+ const QUrl& help, const QStringList &dependencies);
void updateTagsModel();
private:
ExamplesListModel *examplesModel() const;
- QString copyToAlternativeLocation(const QFileInfo &fileInfo, QStringList &filesToOpen);
+ QString copyToAlternativeLocation(const QFileInfo &fileInfo, QStringList &filesToOpen, const QStringList &dependencies);
QDeclarativeEngine *m_engine;
bool m_showExamples;
};