Add Qt 5 support to Widget Gui wizard.

- Add flags to the wizards' QtProjectParameters, introduce
  flag to add widgets if required.
- Change the modules to be lists for easier checking.

Change-Id: I49a000565ffea1a1593cf20a84b240f5c7458ae3
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
This commit is contained in:
Friedemann Kleint
2012-02-10 12:29:53 +01:00
parent 6decffaccc
commit 22ffadc1e1
10 changed files with 72 additions and 39 deletions

View File

@@ -68,8 +68,8 @@ QtProjectParameters ConsoleAppWizardDialog::parameters() const
rc.fileName = projectName(); rc.fileName = projectName();
rc.path = path(); rc.path = path();
rc.selectedModules = selectedModules(); rc.selectedModules = selectedModulesList();
rc.deselectedModules = deselectedModules(); rc.deselectedModules = deselectedModulesList();
return rc; return rc;
} }

View File

@@ -98,10 +98,11 @@ QtProjectParameters GuiAppWizardDialog::projectParameters() const
{ {
QtProjectParameters rc; QtProjectParameters rc;
rc.type = QtProjectParameters::GuiApp; rc.type = QtProjectParameters::GuiApp;
rc.flags |= QtProjectParameters::WidgetsRequiredFlag;
rc.fileName = projectName(); rc.fileName = projectName();
rc.path = path(); rc.path = path();
rc.selectedModules = selectedModules(); rc.selectedModules = selectedModulesList();
rc.deselectedModules = deselectedModules(); rc.deselectedModules = deselectedModulesList();
return rc; return rc;
} }

View File

@@ -85,9 +85,9 @@ static const PluginBaseClasses *findPluginBaseClass(const QString &name)
// return dependencies of a plugin as a line ready for the 'QT=' line in a pro // return dependencies of a plugin as a line ready for the 'QT=' line in a pro
// file // file
static QString pluginDependencies(const PluginBaseClasses *plb) static QStringList pluginDependencies(const PluginBaseClasses *plb)
{ {
QString dependencies; QStringList dependencies;
const QChar blank = QLatin1Char(' '); const QChar blank = QLatin1Char(' ');
// Find the module names and convert to ids // Find the module names and convert to ids
QStringList pluginModules= plb->dependentModules ? QStringList pluginModules= plb->dependentModules ?
@@ -95,9 +95,7 @@ static QString pluginDependencies(const PluginBaseClasses *plb)
QStringList(); QStringList();
pluginModules.push_back(QLatin1String(plb->module)); pluginModules.push_back(QLatin1String(plb->module));
foreach (const QString &module, pluginModules) { foreach (const QString &module, pluginModules) {
if (!dependencies.isEmpty()) dependencies.append(ModulesPage::idOfModule(module));
dependencies += blank;
dependencies += ModulesPage::idOfModule(module);
} }
return dependencies; return dependencies;
} }
@@ -303,8 +301,8 @@ QtProjectParameters LibraryWizardDialog::parameters() const
} }
} else { } else {
// Modules from modules page // Modules from modules page
rc.selectedModules = selectedModules(); rc.selectedModules = selectedModulesList();
rc.deselectedModules = deselectedModules(); rc.deselectedModules = deselectedModulesList();
} }
return rc; return rc;
} }

View File

@@ -91,12 +91,12 @@ QString ModulesPage::idOfModule(const QString &module)
return QString(); return QString();
} }
QString ModulesPage::selectedModules() const QStringList ModulesPage::selectedModulesList() const
{ {
return modules(true); return modules(true);
} }
QString ModulesPage::deselectedModules() const QStringList ModulesPage::deselectedModulesList() const
{ {
return modules(false); return modules(false);
} }
@@ -115,7 +115,7 @@ void ModulesPage::setModuleEnabled(const QString &module, bool enabled) const
checkBox->setEnabled(enabled); checkBox->setEnabled(enabled);
} }
QString ModulesPage::modules(bool selected) const QStringList ModulesPage::modules(bool selected) const
{ {
QStringList modules; QStringList modules;
foreach (const QString &module, QtModulesInfo::modules()) { foreach (const QString &module, QtModulesInfo::modules()) {
@@ -123,5 +123,5 @@ QString ModulesPage::modules(bool selected) const
&& selected == field(module).toBool()) && selected == field(module).toBool())
modules << module; modules << module;
} }
return modules.join(QString(QLatin1Char(' '))); return modules;
} }

View File

@@ -34,6 +34,7 @@
#define MODULESPAGE_H #define MODULESPAGE_H
#include <QtCore/QMap> #include <QtCore/QMap>
#include <QtCore/QStringList>
#include <QtGui/QWizard> #include <QtGui/QWizard>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -49,8 +50,10 @@ class ModulesPage : public QWizardPage
public: public:
explicit ModulesPage(QWidget* parent = 0); explicit ModulesPage(QWidget* parent = 0);
QString selectedModules() const;
QString deselectedModules() const; QStringList selectedModulesList() const;
QStringList deselectedModulesList() const;
void setModuleSelected(const QString &module, bool selected = true) const; void setModuleSelected(const QString &module, bool selected = true) const;
void setModuleEnabled(const QString &module, bool enabled = true) const; void setModuleEnabled(const QString &module, bool enabled = true) const;
@@ -59,7 +62,7 @@ public:
private: private:
QMap<QString, QCheckBox*> m_moduleCheckBoxMap; QMap<QString, QCheckBox*> m_moduleCheckBoxMap;
QString modules(bool selected = true) const; QStringList modules(bool selected = true) const;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -44,7 +44,7 @@ namespace Internal {
// ----------- QtProjectParameters // ----------- QtProjectParameters
QtProjectParameters::QtProjectParameters() QtProjectParameters::QtProjectParameters()
: type(ConsoleApp) : type(ConsoleApp), flags(WidgetsRequiredFlag), qtVersionSupport(SupportQt4And5)
{ {
} }
@@ -57,12 +57,37 @@ QString QtProjectParameters::projectPath() const
return rc; return rc;
} }
// Write out a QT module line.
static inline void writeQtModulesList(QTextStream &str,
const QStringList &modules,
char op ='+')
{
if (const int size = modules.size()) {
str << "QT " << op << "= ";
for (int i =0; i < size; ++i) {
if (i)
str << ' ';
str << modules.at(i);
}
str << "\n\n";
}
}
void QtProjectParameters::writeProFile(QTextStream &str) const void QtProjectParameters::writeProFile(QTextStream &str) const
{ {
if (!selectedModules.isEmpty()) QStringList allSelectedModules = selectedModules;
str << "QT += " << selectedModules << "\n\n"; // Handling of widgets module.
if (!deselectedModules.isEmpty()) const bool addWidgetsModule =
str << "QT -= " << deselectedModules << "\n\n"; (flags & WidgetsRequiredFlag) && qtVersionSupport != SupportQt4Only
&& !allSelectedModules.contains(QLatin1String("widgets"));
if (addWidgetsModule && qtVersionSupport == SupportQt5Only)
allSelectedModules.append(QLatin1String("widgets"));
writeQtModulesList(str, allSelectedModules, '+');
writeQtModulesList(str, deselectedModules, '-');
if (addWidgetsModule && qtVersionSupport == SupportQt4And5)
str << "greaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\n";
const QString &effectiveTarget = target.isEmpty() ? fileName : target; const QString &effectiveTarget = target.isEmpty() ? fileName : target;
if (!effectiveTarget.isEmpty()) if (!effectiveTarget.isEmpty())
str << "TARGET = " << effectiveTarget << '\n'; str << "TARGET = " << effectiveTarget << '\n';

View File

@@ -51,6 +51,8 @@ QString createMacro(const QString &name, const QString &suffix);
struct QtProjectParameters { struct QtProjectParameters {
enum Type { ConsoleApp, GuiApp, StaticLibrary, SharedLibrary, Qt4Plugin, EmptyProject }; enum Type { ConsoleApp, GuiApp, StaticLibrary, SharedLibrary, Qt4Plugin, EmptyProject };
enum QtVersionSupport { SupportQt4And5, SupportQt4Only, SupportQt5Only };
enum Flags { WidgetsRequiredFlag = 0x1 };
QtProjectParameters(); QtProjectParameters();
// Return project path as "path/name" // Return project path as "path/name"
@@ -64,11 +66,13 @@ struct QtProjectParameters {
static QString libraryMacro(const QString &projectName); static QString libraryMacro(const QString &projectName);
Type type; Type type;
unsigned flags;
QtVersionSupport qtVersionSupport;
QString fileName; QString fileName;
QString target; QString target;
QString path; QString path;
QString selectedModules; QStringList selectedModules;
QString deselectedModules; QStringList deselectedModules;
QString targetDirectory; QString targetDirectory;
}; };

View File

@@ -260,35 +260,37 @@ int BaseQt4ProjectWizardDialog::addTargetSetupPage(QSet<QString> targets, bool m
return id; return id;
} }
QString BaseQt4ProjectWizardDialog::selectedModules() const QStringList BaseQt4ProjectWizardDialog::selectedModulesList() const
{ {
return m_modulesPage ? m_modulesPage->selectedModules() : m_selectedModules; return m_modulesPage ? m_modulesPage->selectedModulesList() : m_selectedModules;
} }
void BaseQt4ProjectWizardDialog::setSelectedModules(const QString &modules, bool lock) void BaseQt4ProjectWizardDialog::setSelectedModules(const QString &modules, bool lock)
{ {
const QStringList modulesList = modules.split(QLatin1Char(' '));
if (m_modulesPage) { if (m_modulesPage) {
foreach(const QString &module, modules.split(QLatin1Char(' '))) { foreach (const QString &module, modulesList) {
m_modulesPage->setModuleSelected(module, true); m_modulesPage->setModuleSelected(module, true);
m_modulesPage->setModuleEnabled(module, !lock); m_modulesPage->setModuleEnabled(module, !lock);
} }
} else { } else {
m_selectedModules = modules; m_selectedModules = modulesList;
} }
} }
QString BaseQt4ProjectWizardDialog::deselectedModules() const QStringList BaseQt4ProjectWizardDialog::deselectedModulesList() const
{ {
return m_modulesPage ? m_modulesPage->deselectedModules() : m_deselectedModules; return m_modulesPage ? m_modulesPage->deselectedModulesList() : m_deselectedModules;
} }
void BaseQt4ProjectWizardDialog::setDeselectedModules(const QString &modules) void BaseQt4ProjectWizardDialog::setDeselectedModules(const QString &modules)
{ {
const QStringList modulesList = modules.split(QLatin1Char(' '));
if (m_modulesPage) { if (m_modulesPage) {
foreach(const QString &module, modules.split(QLatin1Char(' '))) foreach (const QString &module, modulesList)
m_modulesPage->setModuleSelected(module, false); m_modulesPage->setModuleSelected(module, false);
} else { } else {
m_deselectedModules = modules; m_deselectedModules = modulesList;
} }
} }

View File

@@ -134,10 +134,10 @@ public:
static QSet<QString> desktopTarget(); static QSet<QString> desktopTarget();
QString selectedModules() const; QStringList selectedModulesList() const;
void setSelectedModules(const QString &, bool lock = false); void setSelectedModules(const QString &, bool lock = false);
QString deselectedModules() const; QStringList deselectedModulesList() const;
void setDeselectedModules(const QString &); void setDeselectedModules(const QString &);
bool writeUserFile(const QString &proFileName) const; bool writeUserFile(const QString &proFileName) const;
@@ -152,8 +152,8 @@ private:
ModulesPage *m_modulesPage; ModulesPage *m_modulesPage;
TargetSetupPage *m_targetSetupPage; TargetSetupPage *m_targetSetupPage;
QString m_selectedModules; QStringList m_selectedModules;
QString m_deselectedModules; QStringList m_deselectedModules;
QSet<QString> m_targets; QSet<QString> m_targets;
}; };

View File

@@ -91,8 +91,8 @@ QtProjectParameters TestWizardDialog::projectParameters() const
rc.path = path(); rc.path = path();
// Name binary "tst_xx" after the main source // Name binary "tst_xx" after the main source
rc.target = QFileInfo(m_testPage->sourcefileName()).baseName(); rc.target = QFileInfo(m_testPage->sourcefileName()).baseName();
rc.selectedModules = selectedModules(); rc.selectedModules = selectedModulesList();
rc.deselectedModules = deselectedModules(); rc.deselectedModules = deselectedModulesList();
return rc; return rc;
} }