diff options
author | hjk <hjk@qt.io> | 2023-11-20 14:57:22 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-11-21 08:46:22 +0000 |
commit | 5a3261f15ad4a010e685211b49d6ec7559c0bc77 (patch) | |
tree | a8d3c6c2385250f026577d2ed1fb75cd118e2c53 /src/plugins/genericprojectmanager | |
parent | 50b9e601b0305253d5303fb49ea7b910d767d6d1 (diff) |
GenericProject: Code cosmetics
Compactify genericprojectwizard.cpp a bit.
Also, rename GenericProjectWizard to GenericProjectWizardFactory and
GenericProjectWizardDialog to GenericProjectWizard. That's what they are.
Change-Id: I9a7ac55b047cc9e40cb0c4f7f25bc6239686bf99
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins/genericprojectmanager')
-rw-r--r-- | src/plugins/genericprojectmanager/genericprojectwizard.cpp | 382 |
1 files changed, 176 insertions, 206 deletions
diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.cpp b/src/plugins/genericprojectmanager/genericprojectwizard.cpp index 02a1d29b0cb..ae7e421c293 100644 --- a/src/plugins/genericprojectmanager/genericprojectwizard.cpp +++ b/src/plugins/genericprojectmanager/genericprojectwizard.cpp @@ -24,9 +24,7 @@ #include <QDebug> #include <QDir> #include <QFileInfo> -#include <QPainter> #include <QPixmap> -#include <QStyle> #include <QVBoxLayout> #include <QWizardPage> @@ -40,267 +38,239 @@ const char ConfigFileTemplate[] = "// Add predefined macros for your project here. For example:\n" "// #define THE_ANSWER 42\n"; +class GenericProjectWizard; -class GenericProjectWizardDialog; - -class FilesSelectionWizardPage : public QWizardPage +class FilesSelectionWizardPage final : public QWizardPage { public: - FilesSelectionWizardPage(GenericProjectWizardDialog *genericProjectWizard, QWidget *parent = nullptr); - - bool isComplete() const override; - void initializePage() override; - void cleanupPage() override; - FilePaths selectedFiles() const; - FilePaths selectedPaths() const; - -private: - GenericProjectWizardDialog *m_genericProjectWizardDialog; - ProjectExplorer::SelectableFilesWidget *m_filesWidget; -}; + explicit FilesSelectionWizardPage(GenericProjectWizard *genericProjectWizard) + : m_genericProjectWizardDialog(genericProjectWizard), + m_filesWidget(new SelectableFilesWidget(this)) + { + auto layout = new QVBoxLayout(this); + + layout->addWidget(m_filesWidget); + m_filesWidget->enableFilterHistoryCompletion + (ProjectExplorer::Constants::ADD_FILES_DIALOG_FILTER_HISTORY_KEY); + m_filesWidget->setBaseDirEditable(false); + connect(m_filesWidget, &SelectableFilesWidget::selectedFilesChanged, + this, &FilesSelectionWizardPage::completeChanged); -FilesSelectionWizardPage::FilesSelectionWizardPage(GenericProjectWizardDialog *genericProjectWizard, - QWidget *parent) : - QWizardPage(parent), - m_genericProjectWizardDialog(genericProjectWizard), - m_filesWidget(new ProjectExplorer::SelectableFilesWidget(this)) -{ - auto layout = new QVBoxLayout(this); + setProperty(SHORT_TITLE_PROPERTY, Tr::tr("Files")); + } - layout->addWidget(m_filesWidget); - m_filesWidget->enableFilterHistoryCompletion - (ProjectExplorer::Constants::ADD_FILES_DIALOG_FILTER_HISTORY_KEY); - m_filesWidget->setBaseDirEditable(false); - connect(m_filesWidget, &ProjectExplorer::SelectableFilesWidget::selectedFilesChanged, - this, &FilesSelectionWizardPage::completeChanged); + bool isComplete() const final + { + return m_filesWidget->hasFilesSelected(); + } - setProperty(Utils::SHORT_TITLE_PROPERTY, Tr::tr("Files")); -} + void initializePage() final; -void FilesSelectionWizardPage::cleanupPage() -{ - m_filesWidget->cancelParsing(); -} + void cleanupPage() final + { + m_filesWidget->cancelParsing(); + } -bool FilesSelectionWizardPage::isComplete() const -{ - return m_filesWidget->hasFilesSelected(); -} + FilePaths selectedFiles() const + { + return m_filesWidget->selectedFiles(); + } -Utils::FilePaths FilesSelectionWizardPage::selectedPaths() const -{ - return m_filesWidget->selectedPaths(); -} + FilePaths selectedPaths() const + { + return m_filesWidget->selectedPaths(); + } -Utils::FilePaths FilesSelectionWizardPage::selectedFiles() const -{ - return m_filesWidget->selectedFiles(); -} +private: + GenericProjectWizard *m_genericProjectWizardDialog; + SelectableFilesWidget *m_filesWidget; +}; ////////////////////////////////////////////////////////////////////////////// // -// GenericProjectWizardDialog +// GenericProjectWizard // ////////////////////////////////////////////////////////////////////////////// -class GenericProjectWizardDialog : public Core::BaseFileWizard +class GenericProjectWizard final : public BaseFileWizard { Q_OBJECT public: - explicit GenericProjectWizardDialog(const Core::BaseFileWizardFactory *factory, QWidget *parent = nullptr); - - Utils::FilePath filePath() const; - void setFilePath(const Utils::FilePath &path); - Utils::FilePaths selectedFiles() const; - Utils::FilePaths selectedPaths() const; - - QString projectName() const; - - Utils::FileWizardPage *m_firstPage; - FilesSelectionWizardPage *m_secondPage; -}; + GenericProjectWizard(const BaseFileWizardFactory *factory, QWidget *parent) + : BaseFileWizard(factory, QVariantMap(), parent) + { + setWindowTitle(Tr::tr("Import Existing Project")); + + // first page + m_firstPage = new FileWizardPage; + m_firstPage->setTitle(Tr::tr("Project Name and Location")); + m_firstPage->setFileNameLabel(Tr::tr("Project name:")); + m_firstPage->setPathLabel(Tr::tr("Location:")); + addPage(m_firstPage); + + // second page + m_secondPage = new FilesSelectionWizardPage(this); + m_secondPage->setTitle(Tr::tr("File Selection")); + addPage(m_secondPage); + } -GenericProjectWizardDialog::GenericProjectWizardDialog(const Core::BaseFileWizardFactory *factory, - QWidget *parent) : - Core::BaseFileWizard(factory, QVariantMap(), parent) -{ - setWindowTitle(Tr::tr("Import Existing Project")); - - // first page - m_firstPage = new Utils::FileWizardPage; - m_firstPage->setTitle(Tr::tr("Project Name and Location")); - m_firstPage->setFileNameLabel(Tr::tr("Project name:")); - m_firstPage->setPathLabel(Tr::tr("Location:")); - addPage(m_firstPage); - - // second page - m_secondPage = new FilesSelectionWizardPage(this); - m_secondPage->setTitle(Tr::tr("File Selection")); - addPage(m_secondPage); -} + FilePath filePath() const + { + return m_firstPage->filePath(); + } -FilePath GenericProjectWizardDialog::filePath() const -{ - return m_firstPage->filePath(); -} + void setFilePath(const FilePath &path) + { + m_firstPage->setFilePath(path); + } -FilePaths GenericProjectWizardDialog::selectedPaths() const -{ - return m_secondPage->selectedPaths(); -} + FilePaths selectedFiles() const + { + return m_secondPage->selectedFiles(); + } -FilePaths GenericProjectWizardDialog::selectedFiles() const -{ - return m_secondPage->selectedFiles(); -} + FilePaths selectedPaths() const + { + return m_secondPage->selectedPaths(); + } -void GenericProjectWizardDialog::setFilePath(const FilePath &path) -{ - m_firstPage->setFilePath(path); -} + QString projectName() const + { + return m_firstPage->fileName(); + } -QString GenericProjectWizardDialog::projectName() const -{ - return m_firstPage->fileName(); -} + FileWizardPage *m_firstPage; + FilesSelectionWizardPage *m_secondPage; +}; ////////////////////////////////////////////////////////////////////////////// // -// GenericProjectWizard +// GenericProjectWizardFactory // ////////////////////////////////////////////////////////////////////////////// -class GenericProjectWizard : public Core::BaseFileWizardFactory +class GenericProjectWizardFactory final : public BaseFileWizardFactory { Q_OBJECT public: - GenericProjectWizard(); + GenericProjectWizardFactory() + { + setSupportedProjectTypes({Constants::GENERICPROJECT_ID}); + setIcon(ProjectExplorer::Icons::WIZARD_IMPORT_AS_PROJECT.icon()); + setDisplayName(Tr::tr("Import Existing Project")); + setId("Z.Makefile"); + setDescription( + Tr::tr("Imports existing projects that do not use qmake, CMake, Qbs, Meson, or Autotools. " + "This allows you to use %1 as a code editor.") + .arg(QGuiApplication::applicationDisplayName())); + setCategory(QLatin1String(ProjectExplorer::Constants::IMPORT_WIZARD_CATEGORY)); + setDisplayCategory(QLatin1String(ProjectExplorer::Constants::IMPORT_WIZARD_CATEGORY_DISPLAY)); + setFlags(IWizardFactory::PlatformIndependent); + } protected: - Core::BaseFileWizard *create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const override; - Core::GeneratedFiles generateFiles(const QWizard *w, QString *errorMessage) const override; - bool postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l, - QString *errorMessage) const override; -}; - -GenericProjectWizard::GenericProjectWizard() -{ - setSupportedProjectTypes({Constants::GENERICPROJECT_ID}); - setIcon(ProjectExplorer::Icons::WIZARD_IMPORT_AS_PROJECT.icon()); - setDisplayName(Tr::tr("Import Existing Project")); - setId("Z.Makefile"); - setDescription( - Tr::tr("Imports existing projects that do not use qmake, CMake, Qbs, Meson, or Autotools. " - "This allows you to use %1 as a code editor.") - .arg(QGuiApplication::applicationDisplayName())); - setCategory(QLatin1String(ProjectExplorer::Constants::IMPORT_WIZARD_CATEGORY)); - setDisplayCategory(QLatin1String(ProjectExplorer::Constants::IMPORT_WIZARD_CATEGORY_DISPLAY)); - setFlags(Core::IWizardFactory::PlatformIndependent); -} - -Core::BaseFileWizard *GenericProjectWizard::create(QWidget *parent, - const Core::WizardDialogParameters ¶meters) const -{ - auto wizard = new GenericProjectWizardDialog(this, parent); - wizard->setFilePath(parameters.defaultPath()); - const QList<QWizardPage *> pages = wizard->extensionPages(); - for (QWizardPage *p : pages) - wizard->addPage(p); - - return wizard; -} + BaseFileWizard *create(QWidget *parent, const WizardDialogParameters ¶meters) const final + { + auto wizard = new GenericProjectWizard(this, parent); + wizard->setFilePath(parameters.defaultPath()); + const QList<QWizardPage *> pages = wizard->extensionPages(); + for (QWizardPage *p : pages) + wizard->addPage(p); + + return wizard; + } -Core::GeneratedFiles GenericProjectWizard::generateFiles(const QWizard *w, - QString *errorMessage) const -{ - Q_UNUSED(errorMessage) - - auto wizard = qobject_cast<const GenericProjectWizardDialog *>(w); - const FilePath projectPath = wizard->filePath(); - const QString projectName = wizard->projectName(); - const FilePath creatorFileName = projectPath.pathAppended(projectName + ".creator"); - const FilePath filesFileName = projectPath.pathAppended(projectName + ".files"); - const FilePath includesFileName = projectPath.pathAppended(projectName + ".includes"); - const FilePath configFileName = projectPath.pathAppended(projectName + ".config"); - const FilePath cxxflagsFileName = projectPath.pathAppended(projectName + ".cxxflags"); - const FilePath cflagsFileName = projectPath.pathAppended(projectName + ".cflags"); - const QStringList paths = Utils::transform(wizard->selectedPaths(), &Utils::FilePath::toString); - - Utils::MimeType headerTy = Utils::mimeTypeForName(QLatin1String("text/x-chdr")); - - QStringList nameFilters = headerTy.globPatterns(); - - QStringList includePaths; - const QDir dir(projectPath.toString()); - for (const QString &path : paths) { - QFileInfo fileInfo(path); - if (fileInfo.fileName() != "include") - continue; - QDir thisDir(fileInfo.absoluteFilePath()); - - if (! thisDir.entryList(nameFilters, QDir::Files).isEmpty()) { - QString relative = dir.relativeFilePath(path); - if (relative.isEmpty()) - relative = QLatin1Char('.'); - includePaths.append(relative); + GeneratedFiles generateFiles(const QWizard *w, QString *errorMessage) const final + { + Q_UNUSED(errorMessage) + + auto wizard = qobject_cast<const GenericProjectWizard *>(w); + const FilePath projectPath = wizard->filePath(); + const QString projectName = wizard->projectName(); + const FilePath creatorFileName = projectPath.pathAppended(projectName + ".creator"); + const FilePath filesFileName = projectPath.pathAppended(projectName + ".files"); + const FilePath includesFileName = projectPath.pathAppended(projectName + ".includes"); + const FilePath configFileName = projectPath.pathAppended(projectName + ".config"); + const FilePath cxxflagsFileName = projectPath.pathAppended(projectName + ".cxxflags"); + const FilePath cflagsFileName = projectPath.pathAppended(projectName + ".cflags"); + const QStringList paths = Utils::transform(wizard->selectedPaths(), &FilePath::toString); + + MimeType headerTy = Utils::mimeTypeForName(QLatin1String("text/x-chdr")); + + QStringList nameFilters = headerTy.globPatterns(); + + QStringList includePaths; + const QDir dir(projectPath.toString()); + for (const QString &path : paths) { + QFileInfo fileInfo(path); + if (fileInfo.fileName() != "include") + continue; + QDir thisDir(fileInfo.absoluteFilePath()); + + if (! thisDir.entryList(nameFilters, QDir::Files).isEmpty()) { + QString relative = dir.relativeFilePath(path); + if (relative.isEmpty()) + relative = QLatin1Char('.'); + includePaths.append(relative); + } } - } - includePaths.append(QString()); // ensure newline at EOF + includePaths.append(QString()); // ensure newline at EOF - Core::GeneratedFile generatedCreatorFile(creatorFileName); - generatedCreatorFile.setContents(QLatin1String("[General]\n")); - generatedCreatorFile.setAttributes(Core::GeneratedFile::OpenProjectAttribute); + GeneratedFile generatedCreatorFile(creatorFileName); + generatedCreatorFile.setContents(QLatin1String("[General]\n")); + generatedCreatorFile.setAttributes(GeneratedFile::OpenProjectAttribute); - QStringList sources = Utils::transform(wizard->selectedFiles(), &Utils::FilePath::toString); - for (int i = 0; i < sources.length(); ++i) - sources[i] = dir.relativeFilePath(sources[i]); - Utils::sort(sources); - sources.append(QString()); // ensure newline at EOF + QStringList sources = Utils::transform(wizard->selectedFiles(), &FilePath::toString); + for (int i = 0; i < sources.length(); ++i) + sources[i] = dir.relativeFilePath(sources[i]); + Utils::sort(sources); + sources.append(QString()); // ensure newline at EOF - Core::GeneratedFile generatedFilesFile(filesFileName); - generatedFilesFile.setContents(sources.join(QLatin1Char('\n'))); + GeneratedFile generatedFilesFile(filesFileName); + generatedFilesFile.setContents(sources.join(QLatin1Char('\n'))); - Core::GeneratedFile generatedIncludesFile(includesFileName); - generatedIncludesFile.setContents(includePaths.join(QLatin1Char('\n'))); + GeneratedFile generatedIncludesFile(includesFileName); + generatedIncludesFile.setContents(includePaths.join(QLatin1Char('\n'))); - Core::GeneratedFile generatedConfigFile(configFileName); - generatedConfigFile.setContents(QLatin1String(ConfigFileTemplate)); + GeneratedFile generatedConfigFile(configFileName); + generatedConfigFile.setContents(QLatin1String(ConfigFileTemplate)); - Core::GeneratedFile generatedCxxFlagsFile(cxxflagsFileName); - generatedCxxFlagsFile.setContents( - QLatin1String(Constants::GENERICPROJECT_CXXFLAGS_FILE_TEMPLATE)); + GeneratedFile generatedCxxFlagsFile(cxxflagsFileName); + generatedCxxFlagsFile.setContents( + QLatin1String(Constants::GENERICPROJECT_CXXFLAGS_FILE_TEMPLATE)); - Core::GeneratedFile generatedCFlagsFile(cflagsFileName); - generatedCFlagsFile.setContents(QLatin1String(Constants::GENERICPROJECT_CFLAGS_FILE_TEMPLATE)); + GeneratedFile generatedCFlagsFile(cflagsFileName); + generatedCFlagsFile.setContents(QLatin1String(Constants::GENERICPROJECT_CFLAGS_FILE_TEMPLATE)); - Core::GeneratedFiles files; - files.append(generatedFilesFile); - files.append(generatedIncludesFile); - files.append(generatedConfigFile); - files.append(generatedCreatorFile); - files.append(generatedCxxFlagsFile); - files.append(generatedCFlagsFile); + GeneratedFiles files; + files.append(generatedFilesFile); + files.append(generatedIncludesFile); + files.append(generatedConfigFile); + files.append(generatedCreatorFile); + files.append(generatedCxxFlagsFile); + files.append(generatedCFlagsFile); - return files; -} + return files; + } -bool GenericProjectWizard::postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l, - QString *errorMessage) const -{ - Q_UNUSED(w) - return ProjectExplorer::CustomProjectWizard::postGenerateOpen(l, errorMessage); -} + bool postGenerateFiles(const QWizard *w, const GeneratedFiles &l, + QString *errorMessage) const final + { + Q_UNUSED(w) + return CustomProjectWizard::postGenerateOpen(l, errorMessage); + } +}; void FilesSelectionWizardPage::initializePage() { - m_filesWidget->resetModel(m_genericProjectWizardDialog->filePath(), Utils::FilePaths()); + m_filesWidget->resetModel(m_genericProjectWizardDialog->filePath(), FilePaths()); } void setupGenericProjectWizard() { - IWizardFactory::registerFactoryCreator([] { return new GenericProjectWizard; }); + IWizardFactory::registerFactoryCreator([] { return new GenericProjectWizardFactory; }); } } // GenericProjectManager::Internal |