From 6aa00e7d95484d03d7af4f1281610e92ba1fa3b9 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 7 Dec 2010 18:30:36 +0100 Subject: [PATCH] Maemo: Manage project's display name for package manager. Task-number: QTCREATORBUG-3063 --- .../qt-maemo/maemopackagecreationwidget.cpp | 69 ++++++++++++++----- .../qt-maemo/maemopackagecreationwidget.h | 13 +++- .../qt-maemo/maemopackagecreationwidget.ui | 53 ++++++++++---- .../qt-maemo/maemotemplatesmanager.cpp | 23 ++++++- .../qt-maemo/maemotemplatesmanager.h | 4 ++ 5 files changed, 128 insertions(+), 34 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp index 6ba9ab0821a..6f54b544b34 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp @@ -57,6 +57,8 @@ #include #include +using namespace ProjectExplorer; + namespace Qt4ProjectManager { namespace Internal { @@ -82,11 +84,9 @@ void MaemoPackageCreationWidget::init() void MaemoPackageCreationWidget::initGui() { - const ProjectExplorer::Project * const project - = m_step->buildConfiguration()->target()->project(); - updateDebianFileList(project); - updateVersionInfo(project); - updatePackageManagerIcon(project); + updateDebianFileList(thisProject()); + updateVersionInfo(thisProject()); + handleControlFileUpdate(thisProject()); connect(m_step, SIGNAL(packageFilePathChanged()), this, SIGNAL(updateSummary())); connect(m_step, SIGNAL(qtVersionChanged()), this, @@ -101,14 +101,13 @@ void MaemoPackageCreationWidget::initGui() SLOT(updateVersionInfo(const ProjectExplorer::Project*))); connect(MaemoTemplatesManager::instance(), SIGNAL(controlChanged(const ProjectExplorer::Project*)), this, - SLOT(updatePackageManagerIcon(const ProjectExplorer::Project*))); + SLOT(handleControlFileUpdate(const ProjectExplorer::Project*))); + connect(m_ui->nameLineEdit, SIGNAL(editingFinished()), SLOT(setName())); } void MaemoPackageCreationWidget::updateDebianFileList(const ProjectExplorer::Project *project) { - const ProjectExplorer::Project * const ourProject - = m_step->buildConfiguration()->target()->project(); - if (ourProject == project) + if (thisProject() == project) m_ui->debianFilesComboBox->clear(); const QStringList &debianFiles = MaemoTemplatesManager::instance() ->debianFiles(project); @@ -120,7 +119,7 @@ void MaemoPackageCreationWidget::updateDebianFileList(const ProjectExplorer::Pro void MaemoPackageCreationWidget::updateVersionInfo(const ProjectExplorer::Project *project) { - if (project != m_step->buildConfiguration()->target()->project()) + if (project != thisProject()) return; QString error; @@ -136,11 +135,17 @@ void MaemoPackageCreationWidget::updateVersionInfo(const ProjectExplorer::Projec m_ui->patch->setValue(list.value(2, QLatin1String("0")).toInt()); } -void MaemoPackageCreationWidget::updatePackageManagerIcon(const ProjectExplorer::Project *project) +void MaemoPackageCreationWidget::handleControlFileUpdate(const Project *project) { - if (project != m_step->buildConfiguration()->target()->project()) + if (project != thisProject()) return; + updatePackageManagerIcon(project); + updateName(project); + updateShortDescription(project); +} +void MaemoPackageCreationWidget::updatePackageManagerIcon(const Project *project) +{ QString error; const QIcon &icon = MaemoTemplatesManager::instance()->packageManagerIcon(project, &error); @@ -152,6 +157,17 @@ void MaemoPackageCreationWidget::updatePackageManagerIcon(const ProjectExplorer: } } +void MaemoPackageCreationWidget::updateName(const Project *project) +{ + m_ui->nameLineEdit->setText(MaemoTemplatesManager::instance()->name(project)); +} + +void MaemoPackageCreationWidget::updateShortDescription(const Project *project) +{ + // TODO: Implment + Q_UNUSED(project); +} + void MaemoPackageCreationWidget::setPackageManagerIcon() { QString imageFilter = tr("Images") + QLatin1String("( "); @@ -164,12 +180,26 @@ void MaemoPackageCreationWidget::setPackageManagerIcon() QString(), imageFilter); if (!iconFileName.isEmpty()) { QString error; - if (!MaemoTemplatesManager::instance()->setPackageManagerIcon(m_step-> - buildConfiguration()->target()->project(), iconFileName, &error)) + if (!MaemoTemplatesManager::instance()->setPackageManagerIcon(thisProject(), + iconFileName, &error)) QMessageBox::critical(this, tr("Could Not Set New Icon"), error); } } +void MaemoPackageCreationWidget::setName() +{ + if (!MaemoTemplatesManager::instance()->setName(thisProject(), + m_ui->nameLineEdit->text())) { + QMessageBox::critical(this, tr("File Error"), + tr("Could not set project name.")); + } +} + +void MaemoPackageCreationWidget::setShortDescription() +{ + +} + void MaemoPackageCreationWidget::handleToolchainChanged() { if (!m_step->maemoToolChain()) @@ -217,13 +247,18 @@ void MaemoPackageCreationWidget::versionInfoChanged() void MaemoPackageCreationWidget::editDebianFile() { - const QString debianFilePath = MaemoTemplatesManager::instance() - ->debianDirPath(m_step->buildConfiguration()->target()->project()) - + QLatin1Char('/') + m_ui->debianFilesComboBox->currentText(); + const QString debianFilePath + = MaemoTemplatesManager::instance()->debianDirPath(thisProject()) + + QLatin1Char('/') + m_ui->debianFilesComboBox->currentText(); Core::EditorManager::instance()->openEditor(debianFilePath, QString(), Core::EditorManager::ModeSwitch); } +Project *MaemoPackageCreationWidget::thisProject() const +{ + return m_step->buildConfiguration()->target()->project(); +} + } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.h b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.h index a3cc90d11ce..b12714616d3 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.h @@ -68,13 +68,20 @@ private slots: void editDebianFile(); void versionInfoChanged(); void initGui(); - void updateDebianFileList(const ProjectExplorer::Project *project); - void updateVersionInfo(const ProjectExplorer::Project *project); - void updatePackageManagerIcon(const ProjectExplorer::Project *project); + void updateDebianFileList(const ProjectExplorer::Project *thisProject); + void updateVersionInfo(const ProjectExplorer::Project *thisProject); + void handleControlFileUpdate(const ProjectExplorer::Project *thisProject); void setPackageManagerIcon(); + void setName(); + void setShortDescription(); void handleToolchainChanged(); private: + void updatePackageManagerIcon(const ProjectExplorer::Project *thisProject); + void updateName(const ProjectExplorer::Project *thisProject); + void updateShortDescription(const ProjectExplorer::Project *thisProject); + ProjectExplorer::Project *thisProject() const; + MaemoPackageCreationStep * const m_step; Ui::MaemoPackageCreationWidget * const m_ui; }; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.ui b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.ui index cee514016c2..628289acc12 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.ui +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.ui @@ -7,7 +7,7 @@ 0 0 505 - 162 + 189 @@ -157,26 +157,19 @@ - + - <b>Adapt Debian file:</b> + <b>Name for Package Manager:</b> - + - + - - - Edit - - - - - + Qt::Horizontal @@ -242,6 +235,40 @@ + + + + <b>Adapt Debian file:</b> + + + + + + + + + + + + Edit + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp index a6020558457..317692926f0 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp @@ -62,6 +62,7 @@ namespace Internal { namespace { const QByteArray IconFieldName("XB-Maemo-Icon-26:"); +const QByteArray DescriptionFieldName("XB-Maemo-Display-Name"); const QLatin1String PackagingDirName("qtc_packaging"); const QLatin1String DebianDirNameFremantle("debian_fremantle"); } // anonymous namespace @@ -260,6 +261,8 @@ bool MaemoTemplatesManager::adaptControlFile(const Project *project) adaptControlFileField(controlContents, "Section", "user/hidden"); adaptControlFileField(controlContents, "Priority", "optional"); + adaptControlFileField(controlContents, DescriptionFieldName, + project->displayName().toUtf8()); const int buildDependsOffset = controlContents.indexOf("Build-Depends:"); if (buildDependsOffset == -1) { qDebug("Unexpected: no Build-Depends field in debian control file."); @@ -566,6 +569,24 @@ bool MaemoTemplatesManager::setPackageManagerIcon(const Project *project, return true; } +QString MaemoTemplatesManager::name(const Project *project) const +{ + return controlFileFieldValue(project, DescriptionFieldName); +} + +bool MaemoTemplatesManager::setName(const Project *project, + const QString &description) +{ + QFile controlFile(controlFilePath(project)); + if (!controlFile.open(QIODevice::ReadWrite)) + return false; + QByteArray contents = controlFile.readAll(); + adaptControlFileField(contents, DescriptionFieldName, description.toUtf8()); + controlFile.resize(0); + controlFile.write(contents); + return true; +} + QStringList MaemoTemplatesManager::debianFiles(const Project *project) const { return QDir(debianDirPath(project)) @@ -603,7 +624,7 @@ QString MaemoTemplatesManager::controlFileFieldValue(const Project *project, if (valueEndPos == -1) valueEndPos = contents.count(); return QString::fromUtf8(contents.mid(valueStartPos, - valueEndPos - valueStartPos)); + valueEndPos - valueStartPos)).trimmed(); } void MaemoTemplatesManager::raiseError(const QString &reason) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.h b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.h index f504076f3eb..cd7e021855d 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.h @@ -71,6 +71,10 @@ public: bool setPackageManagerIcon(const ProjectExplorer::Project *project, const QString &iconFilePath, QString *error) const; + QString name(const ProjectExplorer::Project *project) const; + bool setName(const ProjectExplorer::Project *project, + const QString &description); + QString controlFileFieldValue(const ProjectExplorer::Project *project, const QString &key) const;