From fc31b812c974cf85771b9f8c7af0fee194fc2782 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 11 Jan 2011 16:54:56 +0100 Subject: [PATCH] Maemo: Optionally remove packaging data on target removal. Task-number: QTCREATORBUG-2996 --- .../qt-maemo/maemoglobal.cpp | 1 + .../qt-maemo/maemotemplatesmanager.cpp | 28 +++++++++++++++++++ .../qt-maemo/maemotemplatesmanager.h | 1 + 3 files changed, 30 insertions(+) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp index 240da923da0..4c718cf007b 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp @@ -149,6 +149,7 @@ MaemoGlobal::MaemoVersion MaemoGlobal::version(const QtVersion *qtVersion) bool MaemoGlobal::removeRecursively(const QString &filePath, QString &error) { + error.clear(); QFileInfo fileInfo(filePath); if (!fileInfo.exists()) return true; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp index 43037f41f18..e7b4af5e9c2 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp @@ -104,6 +104,8 @@ void MaemoTemplatesManager::handleActiveProjectChanged(ProjectExplorer::Project this, SLOT(handleTarget(ProjectExplorer::Target*))); connect(project, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)), this, SLOT(handleTarget(ProjectExplorer::Target*))); + connect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), + SLOT(handleTargetRemoved(ProjectExplorer::Target*))); const QList &targets = project->targets(); foreach (Target * const target, targets) handleTarget(target); @@ -143,6 +145,32 @@ bool MaemoTemplatesManager::handleTarget(ProjectExplorer::Target *target) return true; } +void MaemoTemplatesManager::handleTargetRemoved(ProjectExplorer::Target *target) +{ + if (target->id() != QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) + return; + const QString debianPath = debianDirPath(target->project()); + if (!QFileInfo(debianPath).exists()) + return; + const int answer = QMessageBox::warning(0, tr("Qt Creator"), + tr("Do you want to remove the packaging directory\n" + "associated with the target?"), + QMessageBox::Yes | QMessageBox::No, QMessageBox::No); + if (answer == QMessageBox::No) + return; + QString error; + if (!MaemoGlobal::removeRecursively(debianPath, error)) + qDebug("%s", qPrintable(error)); + const QString packagingPath = target->project()->projectDirectory() + + QLatin1Char('/') + PackagingDirName; + const QStringList otherContents = QDir(packagingPath).entryList(QDir::Dirs + | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot); + if (otherContents.isEmpty()) { + if (!MaemoGlobal::removeRecursively(packagingPath, error)) + qDebug("%s", qPrintable(error)); + } +} + bool MaemoTemplatesManager::createDebianTemplatesIfNecessary(const ProjectExplorer::Target *target) { Project * const project = target->project(); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.h b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.h index afc2ee1062d..1b0c74e99ee 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.h @@ -95,6 +95,7 @@ private slots: void handleDebianFileChanged(const QString &filePath); void handleProjectToBeRemoved(ProjectExplorer::Project *project); void handleProFileUpdated(); + void handleTargetRemoved(ProjectExplorer::Target *target); private: explicit MaemoTemplatesManager(QObject *parent);