From bd405c454a2d2dde4bebf58976c23ea93e3353b2 Mon Sep 17 00:00:00 2001 From: Kimmo Varis Date: Mon, 28 Feb 2011 15:58:44 +0200 Subject: [PATCH] GUI: Add GUI for ignored paths in project files. Add similar GUI than include paths has. Currently there is only possibly select directories directly from the GUI. But filename can be added to the path by editing it. --- gui/project.cpp | 6 ++++ gui/projectfile.ui | 61 ++++++++++++++++++++++++++++++++++++++- gui/projectfiledialog.cpp | 58 +++++++++++++++++++++++++++++++++++++ gui/projectfiledialog.h | 33 +++++++++++++++++++++ 4 files changed, 157 insertions(+), 1 deletion(-) diff --git a/gui/project.cpp b/gui/project.cpp index 963fcfeee..3467da289 100644 --- a/gui/project.cpp +++ b/gui/project.cpp @@ -85,6 +85,9 @@ void Project::Edit() dlg.SetDefines(defines); QStringList paths = mPFile->GetCheckPaths(); dlg.SetPaths(paths); + QStringList ignorepaths = mPFile->GetIgnoredPaths(); + dlg.SetIgnorePaths(ignorepaths); + int rv = dlg.exec(); if (rv == QDialog::Accepted) { @@ -96,6 +99,9 @@ void Project::Edit() mPFile->SetDefines(defines); QStringList paths = dlg.GetPaths(); mPFile->SetCheckPaths(paths); + QStringList ignorepaths = dlg.GetIgnorePaths(); + mPFile->SetIgnoredPaths(ignorepaths); + bool writeSuccess = mPFile->Write(); if (!writeSuccess) { diff --git a/gui/projectfile.ui b/gui/projectfile.ui index 7a978159a..9afb0f83e 100644 --- a/gui/projectfile.ui +++ b/gui/projectfile.ui @@ -17,7 +17,7 @@ - 1 + 2 @@ -196,6 +196,65 @@ + + + Ignore + + + + + + Paths: + + + + + + + + + + + + + + Add... + + + + + + + Edit + + + + + + + Remove + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + diff --git a/gui/projectfiledialog.cpp b/gui/projectfiledialog.cpp index f8a0d1241..11fdf8334 100644 --- a/gui/projectfiledialog.cpp +++ b/gui/projectfiledialog.cpp @@ -43,6 +43,9 @@ ProjectFileDialog::ProjectFileDialog(const QString &path, QWidget *parent) connect(mUI.mBtnRemoveInclude, SIGNAL(clicked()), this, SLOT(RemoveIncludeDir())); connect(mUI.mBtnEditPath, SIGNAL(clicked()), this, SLOT(EditPath())); connect(mUI.mBtnRemovePath, SIGNAL(clicked()), this, SLOT(RemovePath())); + connect(mUI.mBtnAddIgnorePath, SIGNAL(clicked()), this, SLOT(AddIgnorePath())); + connect(mUI.mBtnEditIgnorePath, SIGNAL(clicked()), this, SLOT(EditIgnorePath())); + connect(mUI.mBtnRemoveIgnorePath, SIGNAL(clicked()), this, SLOT(RemoveIgnorePath())); } void ProjectFileDialog::AddIncludeDir(const QString &dir) @@ -65,6 +68,16 @@ void ProjectFileDialog::AddPath(const QString &path) mUI.mListPaths->addItem(item); } +void ProjectFileDialog::AddIgnorePath(const QString &path) +{ + if (path.isNull() || path.isEmpty()) + return; + + QListWidgetItem *item = new QListWidgetItem(path); + item->setFlags(item->flags() | Qt::ItemIsEditable); + mUI.mListIgnoredPaths->addItem(item); +} + QString ProjectFileDialog::GetRootPath() const { QString root = mUI.mEditProjectRoot->text(); @@ -111,6 +124,18 @@ QStringList ProjectFileDialog::GetPaths() const return paths; } +QStringList ProjectFileDialog::GetIgnorePaths() const +{ + const int count = mUI.mListIncludeDirs->count(); + QStringList paths; + for (int i = 0; i < count; i++) + { + QListWidgetItem *item = mUI.mListIncludeDirs->item(i); + paths << item->text(); + } + return paths; +} + void ProjectFileDialog::SetRootPath(const QString &root) { mUI.mEditProjectRoot->setText(root); @@ -147,6 +172,14 @@ void ProjectFileDialog::SetPaths(const QStringList &paths) } } +void ProjectFileDialog::SetIgnorePaths(const QStringList &paths) +{ + foreach(QString path, paths) + { + AddIgnorePath(path); + } +} + void ProjectFileDialog::AddIncludeDir() { QString selectedDir = QFileDialog::getExistingDirectory(this, @@ -196,3 +229,28 @@ void ProjectFileDialog::RemovePath() QListWidgetItem *item = mUI.mListPaths->takeItem(row); delete item; } + +void ProjectFileDialog::AddIgnorePath() +{ + QString selectedDir = QFileDialog::getExistingDirectory(this, + tr("Select directory to ignore"), + QString()); + + if (!selectedDir.isEmpty()) + { + AddIgnorePath(selectedDir); + } +} + +void ProjectFileDialog::EditIgnorePath() +{ + QListWidgetItem *item = mUI.mListIgnoredPaths->currentItem(); + mUI.mListIgnoredPaths->editItem(item); +} + +void ProjectFileDialog::RemoveIgnorePath() +{ + const int row = mUI.mListIgnoredPaths->currentRow(); + QListWidgetItem *item = mUI.mListIgnoredPaths->takeItem(row); + delete item; +} diff --git a/gui/projectfiledialog.h b/gui/projectfiledialog.h index 9256d31c0..0d904ab38 100644 --- a/gui/projectfiledialog.h +++ b/gui/projectfiledialog.h @@ -66,6 +66,12 @@ public: */ QStringList GetPaths() const; + /** + * @brief Return ignored paths from the dialog control. + * @return List of ignored paths. + */ + QStringList GetIgnorePaths() const; + /** * @brief Set project root path to dialog control. * @param root Project root path to set to dialog control. @@ -90,6 +96,12 @@ public: */ void SetPaths(const QStringList &paths); + /** + * @brief Set ignored paths to dialog control. + * @param paths List of path names to set to dialog control. + */ + void SetIgnorePaths(const QStringList &paths); + protected slots: /** * @brief Browse for include directory. @@ -122,6 +134,21 @@ protected slots: */ void RemovePath(); + /** + * @brief Add new path to ignore. + */ + void AddIgnorePath(); + + /** + * @brief Edit ignored path in the list. + */ + void EditIgnorePath(); + + /** + * @brief Remove ignored path from the list. + */ + void RemoveIgnorePath(); + protected: /** @@ -136,6 +163,12 @@ protected: */ void AddPath(const QString &path); + /** + * @brief Add new path to ignore list. + * @param path Path to add. + */ + void AddIgnorePath(const QString &path); + private: Ui::ProjectFile mUI; };