summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkh1 <qt-info@nokia.com>2011-05-19 16:09:26 +0200
committerkh1 <qt-info@nokia.com>2011-05-19 16:09:26 +0200
commit412fbc9875f7552e6277653643c54cf225a4bb62 (patch)
tree8ea44811923d6c586f41fcde586190ecf17f51eb
parent1bcaecfa876a406496bb67ac0a37ed988e20124d (diff)
Keep the settings on the stack.
-rw-r--r--installerbuilder/libinstaller/qinstaller.cpp22
-rw-r--r--installerbuilder/libinstaller/qinstaller.h2
-rw-r--r--installerbuilder/libinstaller/qinstaller_p.cpp70
-rw-r--r--installerbuilder/libinstaller/qinstaller_p.h5
4 files changed, 47 insertions, 52 deletions
diff --git a/installerbuilder/libinstaller/qinstaller.cpp b/installerbuilder/libinstaller/qinstaller.cpp
index 113393518..238e11e70 100644
--- a/installerbuilder/libinstaller/qinstaller.cpp
+++ b/installerbuilder/libinstaller/qinstaller.cpp
@@ -452,7 +452,7 @@ int Installer::downloadNeededArchives(RunMode runMode, double partProgressSize)
// don't have it on the stack, since it keeps the temporary files
DownloadArchivesJob* const archivesJob =
- new DownloadArchivesJob(d->m_installerSettings->publicKey(), this);
+ new DownloadArchivesJob(d->m_installerSettings.publicKey(), this);
archivesJob->setAutoDelete(false);
archivesJob->setArchivesToDownload(archivesToDownload);
connect(this, SIGNAL(installationInterrupted()), archivesJob, SLOT(cancel()));
@@ -625,8 +625,8 @@ QHash<QString, KDUpdater::PackageInfo> Installer::localInstalledPackages()
.arg(d->localComponentsXmlPath());
return installedPackages;
}
- packagesInfo.setApplicationName(d->m_installerSettings->applicationName());
- packagesInfo.setApplicationVersion(d->m_installerSettings->applicationVersion());
+ packagesInfo.setApplicationName(d->m_installerSettings.applicationName());
+ packagesInfo.setApplicationVersion(d->m_installerSettings.applicationVersion());
foreach (const KDUpdater::PackageInfo &info, packagesInfo.packageInfos())
installedPackages.insert(info.name, info);
@@ -705,7 +705,7 @@ bool Installer::fetchAllPackages()
QHash<QString, KDUpdater::PackageInfo> installedPackages = localInstalledPackages();
- QScopedPointer <GetRepositoriesMetaInfoJob> metaInfoJob(fetchMetaInformation(*d->m_installerSettings));
+ QScopedPointer <GetRepositoriesMetaInfoJob> metaInfoJob(fetchMetaInformation(d->m_installerSettings));
if (metaInfoJob->isCanceled() || metaInfoJob->error() != KDJob::NoError) {
if (metaInfoJob->error() != QInstaller::UserIgnoreError) {
verbose() << tr("Could not retrieve updates: %1").arg(metaInfoJob->errorString()) << std::endl;
@@ -714,7 +714,7 @@ bool Installer::fetchAllPackages()
}
if (!metaInfoJob->temporaryDirectories().isEmpty()) {
- if (!addUpdateResourcesFrom(metaInfoJob.data(), *d->m_installerSettings, true)) {
+ if (!addUpdateResourcesFrom(metaInfoJob.data(), d->m_installerSettings, true)) {
verbose() << tr("Could not add temporary update source information.") << std::endl;
return false;
}
@@ -804,7 +804,7 @@ bool Installer::fetchUpdaterPackages()
QHash<QString, KDUpdater::PackageInfo> installedPackages = localInstalledPackages();
- QScopedPointer <GetRepositoriesMetaInfoJob> metaInfoJob(fetchMetaInformation(*d->m_installerSettings));
+ QScopedPointer <GetRepositoriesMetaInfoJob> metaInfoJob(fetchMetaInformation(d->m_installerSettings));
if (metaInfoJob->isCanceled() || metaInfoJob->error() != KDJob::NoError) {
if (metaInfoJob->error() != QInstaller::UserIgnoreError) {
verbose() << tr("Could not retrieve updates: %1").arg(metaInfoJob->errorString()) << std::endl;
@@ -813,7 +813,7 @@ bool Installer::fetchUpdaterPackages()
}
if (!metaInfoJob->temporaryDirectories().isEmpty()) {
- if (!addUpdateResourcesFrom(metaInfoJob.data(), *d->m_installerSettings, true)) {
+ if (!addUpdateResourcesFrom(metaInfoJob.data(), d->m_installerSettings, true)) {
verbose() << tr("Could not add temporary update source information.") << std::endl;
return false;
}
@@ -984,7 +984,7 @@ bool Installer::removeWizardPageItem(Component *component, const QString &name)
void Installer::addRepositories(const QList<Repository> &repositories)
{
- d->m_installerSettings->addUserRepositories(repositories);
+ d->m_installerSettings.addUserRepositories(repositories);
}
/*!
@@ -993,7 +993,7 @@ void Installer::addRepositories(const QList<Repository> &repositories)
*/
void Installer::setTemporaryRepositories(const QList<Repository> &repositories, bool replace)
{
- d->m_installerSettings->setTemporaryRepositories(repositories, replace);
+ d->m_installerSettings.setTemporaryRepositories(repositories, replace);
}
/*!
@@ -1185,9 +1185,9 @@ QList<Component*> Installer::dependencies(const Component *component, QStringLis
return result;
}
-InstallerSettings Installer::settings() const
+const InstallerSettings &Installer::settings() const
{
- return *d->m_installerSettings;
+ return d->m_installerSettings;
}
/*!
diff --git a/installerbuilder/libinstaller/qinstaller.h b/installerbuilder/libinstaller/qinstaller.h
index e0019db46..db17373c4 100644
--- a/installerbuilder/libinstaller/qinstaller.h
+++ b/installerbuilder/libinstaller/qinstaller.h
@@ -206,7 +206,7 @@ public:
Q_INVOKABLE bool isProcessRunning(const QString &name) const;
- InstallerSettings settings() const;
+ const InstallerSettings &settings() const;
Q_INVOKABLE bool addWizardPage(QInstaller::Component *component, const QString &name, int page);
Q_INVOKABLE bool removeWizardPage(QInstaller::Component *component, const QString &name);
diff --git a/installerbuilder/libinstaller/qinstaller_p.cpp b/installerbuilder/libinstaller/qinstaller_p.cpp
index fdff4a1c6..39a50cab5 100644
--- a/installerbuilder/libinstaller/qinstaller_p.cpp
+++ b/installerbuilder/libinstaller/qinstaller_p.cpp
@@ -36,7 +36,6 @@
#include "common/binaryformat.h"
#include "common/errors.h"
#include "common/fileutils.h"
-#include "common/installersettings.h"
#include "common/utils.h"
#include "fsengineclient.h"
#include "messageboxhandler.h"
@@ -172,7 +171,6 @@ static void deferredRename(const QString &oldName, const QString &newName, bool
InstallerPrivate::InstallerPrivate()
: m_tempDirDeleter(0)
- , m_installerSettings(0)
, m_FSEngineClientHandler(0)
, q(0)
{
@@ -182,7 +180,6 @@ InstallerPrivate::InstallerPrivate(Installer *installer, qint64 magicInstallerMa
const QVector<KDUpdater::UpdateOperation*> &performedOperations)
: m_app(0)
, m_tempDirDeleter(new TempDirDeleter())
- , m_installerSettings(0)
, m_FSEngineClientHandler(createEngineClientHandler())
, m_status(Installer::Unfinished)
, m_forceRestart(false)
@@ -216,7 +213,6 @@ InstallerPrivate::~InstallerPrivate()
delete m_tempDirDeleter;
- delete m_installerSettings;
delete m_FSEngineClientHandler;
}
@@ -289,10 +285,8 @@ QString InstallerPrivate::localComponentsXmlPath() const
void InstallerPrivate::initialize()
{
try {
- delete m_installerSettings;
- m_installerSettings = new InstallerSettings(InstallerSettings::fromFileAndPrefix(
- QLatin1String(":/metadata/installer-config/config.xml"),
- QLatin1String(":/metadata/installer-config/")));
+ m_installerSettings = InstallerSettings(InstallerSettings::fromFileAndPrefix(QLatin1String
+ (":/metadata/installer-config/config.xml"), QLatin1String(":/metadata/installer-config/")));
} catch (const Error &e) {
qCritical("Could not parse Config: %s", qPrintable(e.message()));
// TODO: try better error handling
@@ -317,30 +311,30 @@ void InstallerPrivate::initialize()
#endif
// fill the variables defined in the settings
- m_vars.insert(QLatin1String("ProductName"), m_installerSettings->applicationName());
- m_vars.insert(QLatin1String("ProductVersion"), m_installerSettings->applicationVersion());
- m_vars.insert(QLatin1String("Title"), m_installerSettings->title());
- m_vars.insert(QLatin1String("MaintenanceTitle"), m_installerSettings->maintenanceTitle());
- m_vars.insert(QLatin1String("Publisher"), m_installerSettings->publisher());
- m_vars.insert(QLatin1String("Url"), m_installerSettings->url());
- m_vars.insert(QLatin1String("StartMenuDir"), m_installerSettings->startMenuDir());
-
- m_vars.insert(QLatin1String("TargetConfigurationFile"), m_installerSettings->configurationFileName());
- m_vars.insert(QLatin1String("LogoPixmap"), m_installerSettings->logo());
- m_vars.insert(QLatin1String("LogoSmallPixmap"), m_installerSettings->logoSmall());
- m_vars.insert(QLatin1String("WatermarkPixmap"), m_installerSettings->watermark());
-
- m_vars.insert(QLatin1String("RunProgram"), replaceVariables(m_installerSettings->runProgram()));
- const QString desc = m_installerSettings->runProgramDescription();
+ m_vars.insert(QLatin1String("ProductName"), m_installerSettings.applicationName());
+ m_vars.insert(QLatin1String("ProductVersion"), m_installerSettings.applicationVersion());
+ m_vars.insert(QLatin1String("Title"), m_installerSettings.title());
+ m_vars.insert(QLatin1String("MaintenanceTitle"), m_installerSettings.maintenanceTitle());
+ m_vars.insert(QLatin1String("Publisher"), m_installerSettings.publisher());
+ m_vars.insert(QLatin1String("Url"), m_installerSettings.url());
+ m_vars.insert(QLatin1String("StartMenuDir"), m_installerSettings.startMenuDir());
+
+ m_vars.insert(QLatin1String("TargetConfigurationFile"), m_installerSettings.configurationFileName());
+ m_vars.insert(QLatin1String("LogoPixmap"), m_installerSettings.logo());
+ m_vars.insert(QLatin1String("LogoSmallPixmap"), m_installerSettings.logoSmall());
+ m_vars.insert(QLatin1String("WatermarkPixmap"), m_installerSettings.watermark());
+
+ m_vars.insert(QLatin1String("RunProgram"), replaceVariables(m_installerSettings.runProgram()));
+ const QString desc = m_installerSettings.runProgramDescription();
if (!desc.isEmpty())
m_vars.insert(QLatin1String("RunProgramDescription"), desc);
#ifdef Q_WS_X11
if (m_launchedAsRoot)
- m_vars.insert(QLatin1String("TargetDir"), replaceVariables(m_installerSettings->adminTargetDir()));
+ m_vars.insert(QLatin1String("TargetDir"), replaceVariables(m_installerSettings.adminTargetDir()));
else
#endif
- m_vars.insert(QLatin1String("TargetDir"), replaceVariables(m_installerSettings->targetDir()));
- m_vars.insert(QLatin1String("RemoveTargetDir"), replaceVariables(m_installerSettings->removeTargetDir()));
+ m_vars.insert(QLatin1String("TargetDir"), replaceVariables(m_installerSettings.targetDir()));
+ m_vars.insert(QLatin1String("RemoveTargetDir"), replaceVariables(m_installerSettings.removeTargetDir()));
QSettingsWrapper creatorSettings(QSettingsWrapper::IniFormat, QSettingsWrapper::UserScope,
QLatin1String("Nokia"), QLatin1String("QtCreator"));
@@ -458,7 +452,7 @@ KDUpdater::UpdateOperation* InstallerPrivate::createOwnedOperation(const QString
QString InstallerPrivate::uninstallerName() const
{
- QString filename = m_installerSettings->uninstallerName();
+ QString filename = m_installerSettings.uninstallerName();
#if defined(Q_WS_MAC)
if (QFileInfo(QCoreApplication::applicationDirPath() + QLatin1String("/../..")).isBundle())
filename += QLatin1String(".app/Contents/MacOS/") + filename;
@@ -470,7 +464,7 @@ QString InstallerPrivate::uninstallerName() const
void InstallerPrivate::readUninstallerIniFile(const QString &targetDir)
{
- const QString iniPath = targetDir + QLatin1Char('/') + m_installerSettings->uninstallerIniFile();
+ const QString iniPath = targetDir + QLatin1Char('/') + m_installerSettings.uninstallerIniFile();
QSettingsWrapper cfg(iniPath, QSettingsWrapper::IniFormat);
const QVariantHash vars = cfg.value(QLatin1String("Variables")).toHash();
QHash<QString, QVariant>::ConstIterator it = vars.constBegin();
@@ -483,7 +477,7 @@ void InstallerPrivate::readUninstallerIniFile(const QString &targetDir)
const QStringList list = cfg.value(QLatin1String("Repositories")).toStringList();
foreach (const QString &url, list)
repositories.append(Repository(url));
- m_installerSettings->addUserRepositories(repositories);
+ m_installerSettings.addUserRepositories(repositories);
}
void InstallerPrivate::stopProcessesForUpdates(const QList<Component*> &components)
@@ -636,7 +630,7 @@ void InstallerPrivate::writeUninstaller(QVector<KDUpdater::UpdateOperation*> per
{
// write current state (variables) to the uninstaller ini file
- const QString iniPath = targetDir() + QLatin1Char('/') + m_installerSettings->uninstallerIniFile();
+ const QString iniPath = targetDir() + QLatin1Char('/') + m_installerSettings.uninstallerIniFile();
QSettingsWrapper cfg(iniPath, QSettingsWrapper::IniFormat);
QVariantHash vars;
QHash<QString, QString>::ConstIterator it = m_vars.constBegin();
@@ -649,7 +643,7 @@ void InstallerPrivate::writeUninstaller(QVector<KDUpdater::UpdateOperation*> per
cfg.setValue(QLatin1String("Variables"), vars);
QStringList list;
- foreach (const Repository &repository, m_installerSettings->userRepositories())
+ foreach (const Repository &repository, m_installerSettings.userRepositories())
list.append(repository.url().toString());
cfg.setValue(QLatin1String("Repositories"), list);
@@ -847,7 +841,7 @@ void InstallerPrivate::writeUninstaller(QVector<KDUpdater::UpdateOperation*> per
appendInt64(&out, opCount);
KDSaveFile *tmp = &out;
- KDSaveFile operations(targetDir() + QLatin1Char('/') + m_installerSettings->uninstallerName()
+ KDSaveFile operations(targetDir() + QLatin1Char('/') + m_installerSettings.uninstallerName()
+ QLatin1String(".dat"));
const bool datFileOpenend = operations.open(QIODevice::WriteOnly | QIODevice::Truncate);
if (datFileOpenend)
@@ -1032,8 +1026,8 @@ void InstallerPrivate::runInstaller()
// put the installed packages info into the target dir
KDUpdater::PackagesInfo* const packages = m_app->packagesInfo();
packages->setFileName(componentsXmlPath());
- packages->setApplicationName(m_installerSettings->applicationName());
- packages->setApplicationVersion(m_installerSettings->applicationVersion());
+ packages->setApplicationName(m_installerSettings.applicationName());
+ packages->setApplicationVersion(m_installerSettings.applicationVersion());
stopProcessesForUpdates(componentsToInstall);
@@ -1174,8 +1168,8 @@ void InstallerPrivate::runPackageUpdater()
KDUpdater::PackagesInfo *packages = m_app->packagesInfo();
packages->setFileName(packagesXml);
- packages->setApplicationName(m_installerSettings->applicationName());
- packages->setApplicationVersion(m_installerSettings->applicationVersion());
+ packages->setApplicationName(m_installerSettings.applicationName());
+ packages->setApplicationVersion(m_installerSettings.applicationVersion());
foreach (Component *component, componentsToInstall)
installComponent(component, progressOperationSize, adminRightsGained);
@@ -1500,8 +1494,8 @@ void InstallerPrivate::runUndoOperations(const QList<KDUpdater::UpdateOperation*
{
KDUpdater::PackagesInfo *packages = m_app->packagesInfo();
packages->setFileName(componentsXmlPath());
- packages->setApplicationName(m_installerSettings->applicationName());
- packages->setApplicationVersion(m_installerSettings->applicationVersion());
+ packages->setApplicationName(m_installerSettings.applicationName());
+ packages->setApplicationVersion(m_installerSettings.applicationVersion());
try {
foreach (KDUpdater::UpdateOperation *undoOperation, undoOperations) {
diff --git a/installerbuilder/libinstaller/qinstaller_p.h b/installerbuilder/libinstaller/qinstaller_p.h
index 93979683d..0b349105f 100644
--- a/installerbuilder/libinstaller/qinstaller_p.h
+++ b/installerbuilder/libinstaller/qinstaller_p.h
@@ -33,6 +33,8 @@
#ifndef QINSTALLER_P_H
#define QINSTALLER_P_H
+#include "common/installersettings.h"
+
#include <KDToolsCore/KDSysInfo>
#include <QtCore/QHash>
@@ -53,7 +55,6 @@ namespace QInstaller {
class Component;
class Installer;
-class InstallerSettings;
class TempDirDeleter;
class InstallerPrivate : public QObject
@@ -145,7 +146,6 @@ signals:
public:
KDUpdater::Application *m_app;
TempDirDeleter *m_tempDirDeleter;
- InstallerSettings *m_installerSettings;
FSEngineClientHandler *m_FSEngineClientHandler;
int m_status;
@@ -157,6 +157,7 @@ public:
bool m_needToWriteUninstaller;
QHash<QString, QString> m_vars;
QHash<QString, bool> m_sharedFlags;
+ InstallerSettings m_installerSettings;
QString m_installerBaseBinaryUnreplaced;
qint64 m_globalDictOffset;