From d0d61182cb565afb1873dd81288e41f7876d96bf Mon Sep 17 00:00:00 2001 From: ck <qt-info@nokia.com> Date: Mon, 7 Jun 2010 17:13:11 +0200 Subject: [PATCH] Maemo deployment: Force remote file name to be same as local file name. INSTALLS does not support an arbitrary target file name. Reviewed-by: kh1 --- .../qt-maemo/maemopackagecontents.cpp | 57 ++++++++++--------- .../qt-maemo/maemopackagecontents.h | 12 ++-- .../qt-maemo/maemopackagecreationstep.cpp | 5 +- .../qt-maemo/maemopackagecreationwidget.cpp | 2 +- 4 files changed, 41 insertions(+), 35 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp index 957f7d0b9b1..774f52a2811 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp @@ -42,12 +42,12 @@ namespace { const char * const MODIFIED_KEY = "Qt4ProjectManager.BuildStep.MaemoPackage.Modified"; - const char * const REMOTE_EXE_KEY - = "Qt4ProjectManager.BuildStep.MaemoPackage.RemoteExe"; + const char * const REMOTE_EXE_DIR_KEY + = "Qt4ProjectManager.BuildStep.MaemoPackage.RemoteExeDir"; const char * const LOCAL_FILES_KEY = "Qt4ProjectManager.BuildStep.MaemoPackage.LocalFiles"; - const char * const REMOTE_FILES_KEY - = "Qt4ProjectManager.BuildStep.MaemoPackage.RemoteFiles"; + const char * const REMOTE_DIRS_KEY + = "Qt4ProjectManager.BuildStep.MaemoPackage.RemoteDirs"; } namespace Qt4ProjectManager { @@ -65,7 +65,7 @@ MaemoPackageContents::Deployable MaemoPackageContents::deployableAt(int row) con Q_ASSERT(row >= 0 && row < rowCount()); return row == 0 ? Deployable(m_packageStep->localExecutableFilePath(), - remoteExecutableFilePath()) + remoteExecutableDir()) : m_deployables.at(row - 1); } @@ -109,7 +109,7 @@ QVariant MaemoPackageContents::data(const QModelIndex &index, int role) const if (index.column() == 0 && role == Qt::DisplayRole) return d.localFilePath; if (role == Qt::DisplayRole || role == Qt::EditRole) - return d.remoteFilePath; + return d.remoteDir; return QVariant(); } @@ -128,11 +128,11 @@ bool MaemoPackageContents::setData(const QModelIndex &index, || role != Qt::EditRole) return false; - const QString &remoteFilePath = value.toString(); + const QString &remoteDir = value.toString(); if (index.row() == 0) - m_remoteExecutableFilePath = remoteFilePath; + m_remoteExecutableDir = remoteDir; else - m_deployables[index.row() - 1].remoteFilePath = remoteFilePath; + m_deployables[index.row() - 1].remoteDir = remoteDir; m_modified = true; emit dataChanged(index, index); return true; @@ -143,57 +143,60 @@ QVariant MaemoPackageContents::headerData(int section, { if (orientation == Qt::Vertical || role != Qt::DisplayRole) return QVariant(); - return section == 0 ? tr("Local File Path") : tr("Remote File Path"); + return section == 0 ? tr("Local File Path") : tr("Remote Directory"); } QVariantMap MaemoPackageContents::toMap() const { QVariantMap map; map.insert(MODIFIED_KEY, m_modified); - map.insert(REMOTE_EXE_KEY, m_remoteExecutableFilePath); + map.insert(REMOTE_EXE_DIR_KEY, m_remoteExecutableDir); QDir dir; QStringList localFiles; - QStringList remoteFiles; + QStringList remoteDirs; foreach (const Deployable &p, m_deployables) { localFiles << dir.fromNativeSeparators(p.localFilePath); - remoteFiles << p.remoteFilePath; + remoteDirs << p.remoteDir; } map.insert(LOCAL_FILES_KEY, localFiles); - map.insert(REMOTE_FILES_KEY, remoteFiles); + map.insert(REMOTE_DIRS_KEY, remoteDirs); return map; } void MaemoPackageContents::fromMap(const QVariantMap &map) { m_modified = map.value(MODIFIED_KEY).toBool(); - m_remoteExecutableFilePath = map.value(REMOTE_EXE_KEY).toString(); + m_remoteExecutableDir = map.value(REMOTE_EXE_DIR_KEY).toString(); const QStringList localFiles = map.value(LOCAL_FILES_KEY).toStringList(); - const QStringList remoteFiles = map.value(REMOTE_FILES_KEY).toStringList(); - if (localFiles.count() != remoteFiles.count()) + const QStringList remoteDirs = map.value(REMOTE_DIRS_KEY).toStringList(); + if (localFiles.count() != remoteDirs.count()) qWarning("%s: serialized data inconsistent", Q_FUNC_INFO); QDir dir; - const int count = qMin(localFiles.count(), remoteFiles.count()); + const int count = qMin(localFiles.count(), remoteDirs.count()); for (int i = 0; i < count; ++i) { m_deployables << Deployable(dir.toNativeSeparators(localFiles.at(i)), - remoteFiles.at(i)); + remoteDirs.at(i)); } } -QString MaemoPackageContents::remoteExecutableFilePath() const +QString MaemoPackageContents::remoteExecutableDir() const { - if (m_remoteExecutableFilePath.isEmpty()) { + if (m_remoteExecutableDir.isEmpty()) { const Qt4ProjectType projectType = m_packageStep->qt4BuildConfiguration()->qt4Target()->qt4Project() ->rootProjectNode()->projectType(); - const QString remoteDir = projectType == LibraryTemplate - ? QLatin1String("/usr/local/lib/") - : QLatin1String("/usr/local/bin/"); - m_remoteExecutableFilePath - = remoteDir + m_packageStep->executableFileName(); + m_remoteExecutableDir = projectType == LibraryTemplate + ? QLatin1String("/usr/local/lib") + : QLatin1String("/usr/local/bin"); } - return m_remoteExecutableFilePath; + return m_remoteExecutableDir; +} + +QString MaemoPackageContents::remoteExecutableFilePath() const +{ + return remoteExecutableDir() + '/' + m_packageStep->executableFileName(); } } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h index 2f039f71764..b4f05cb15ff 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h @@ -46,17 +46,17 @@ class MaemoPackageContents : public QAbstractTableModel public: struct Deployable { - Deployable(const QString &localFilePath, const QString &remoteFilePath) - : localFilePath(localFilePath), remoteFilePath(remoteFilePath) {} + Deployable(const QString &localFilePath, const QString &remoteDir) + : localFilePath(localFilePath), remoteDir(remoteDir) {} bool operator==(const Deployable &other) const { return localFilePath == other.localFilePath - && remoteFilePath == other.remoteFilePath; + && remoteDir == other.remoteDir; } QString localFilePath; - QString remoteFilePath; + QString remoteDir; }; MaemoPackageContents(MaemoPackageCreationStep *packageStep); @@ -83,11 +83,13 @@ private: virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + QString remoteExecutableDir() const; + private: const MaemoPackageCreationStep * const m_packageStep; QList<Deployable> m_deployables; bool m_modified; - mutable QString m_remoteExecutableFilePath; + mutable QString m_remoteExecutableDir; }; } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp index ee133b823cf..192e039635e 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp @@ -181,8 +181,9 @@ bool MaemoPackageCreationStep::createPackage() for (int i = 0; i < m_packageContents->rowCount(); ++i) { const MaemoPackageContents::Deployable &d = m_packageContents->deployableAt(i); - const QString targetFile = debianRoot.path() + '/' + d.remoteFilePath; - const QString absTargetDir = QFileInfo(targetFile).dir().path(); + const QString absTargetDir = debianRoot.path() + '/' + d.remoteDir; + const QString targetFile + = absTargetDir + '/' + QFileInfo(d.localFilePath).fileName(); const QString relTargetDir = debianRoot.relativeFilePath(absTargetDir); if (!debianRoot.exists(relTargetDir) && !debianRoot.mkpath(relTargetDir)) { diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp index 7e6bf7cc555..e837b21b840 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp @@ -100,7 +100,7 @@ void MaemoPackageCreationWidget::addFile() QTC_ASSERT(bc, return); const QString title = tr("Choose a local file"); const QString baseDir = bc->target()->project()->projectDirectory(); - const QString localFile = QFileDialog::getOpenFileName(this, title, baseDir); + const QString localFile = QFileDialog::getOpenFileName(this, title, baseDir); // TODO: Support directories? if (localFile.isEmpty()) return; const MaemoPackageContents::Deployable -- GitLab