summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-08-28 11:06:26 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2014-08-29 12:39:48 +0200
commit42d2b1ba06ad38fe938bc69f34f0d5714b1f201b (patch)
treef3710c4ae17aa2f721950f8064bc8fc6b39677f4 /src
parentc855e20dff8feda133fa344ac9cb5542b986cf4f (diff)
Adjust implementation to not use the collection manager.
Change-Id: Ie38460ff4a94b5583cabb1ecad97cd6c9a906c15 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/libs/installer/binarycontent.cpp11
-rw-r--r--src/libs/installer/binaryformatengine.cpp8
-rw-r--r--src/libs/installer/binaryformatengine.h5
-rw-r--r--src/libs/installer/binaryformatenginehandler.cpp50
-rw-r--r--src/libs/installer/binaryformatenginehandler.h13
5 files changed, 30 insertions, 57 deletions
diff --git a/src/libs/installer/binarycontent.cpp b/src/libs/installer/binarycontent.cpp
index 33856adfa..049409b16 100644
--- a/src/libs/installer/binarycontent.cpp
+++ b/src/libs/installer/binarycontent.cpp
@@ -146,7 +146,6 @@ public:
QVector<QByteArray> m_resourceMappings;
QVector<Range<qint64> > m_metadataResourceSegments;
- ResourceCollectionManager m_collectionManager;
BinaryFormatEngineHandler m_binaryFormatEngineHandler;
};
@@ -156,7 +155,6 @@ BinaryContent::Private::Private()
, m_dataBlockStart(Q_INT64_C(0))
, m_appBinary(0)
, m_binaryDataFile(0)
- , m_binaryFormatEngineHandler(m_collectionManager)
{}
BinaryContent::Private::Private(const QString &path)
@@ -164,7 +162,6 @@ BinaryContent::Private::Private(const QString &path)
, m_dataBlockStart(Q_INT64_C(0))
, m_appBinary(new QFile(path))
, m_binaryDataFile(0)
- , m_binaryFormatEngineHandler(m_collectionManager)
{}
BinaryContent::Private::Private(const Private &other)
@@ -177,7 +174,6 @@ BinaryContent::Private::Private(const Private &other)
, m_performedOperationsData(other.m_performedOperationsData)
, m_resourceMappings(other.m_resourceMappings)
, m_metadataResourceSegments(other.m_metadataResourceSegments)
- , m_collectionManager(other.m_collectionManager)
, m_binaryFormatEngineHandler(other.m_binaryFormatEngineHandler)
{}
@@ -413,13 +409,14 @@ void BinaryContent::readBinaryData(BinaryContent &content, const QSharedPointer<
"position of resource collection block."));
}
- content.d->m_collectionManager.read(file, dataBlockStart);
- content.d->m_binaryFormatEngineHandler.setResourceCollectionManager(content.d->m_collectionManager);
+ ResourceCollectionManager collectionManager;
+ collectionManager.read(file, dataBlockStart);
+ content.d->m_binaryFormatEngineHandler.registerResources(collectionManager.collections());
if (!QInstaller::isVerbose())
return;
- const QList<ResourceCollection> collections = content.d->m_collectionManager.collections();
+ const QList<ResourceCollection> collections = collectionManager.collections();
qDebug() << "Number of resource collections loaded:" << collections.count();
foreach (const ResourceCollection &collection, collections) {
const QList<QSharedPointer<Resource> > resources = collection.resources();
diff --git a/src/libs/installer/binaryformatengine.cpp b/src/libs/installer/binaryformatengine.cpp
index e5130c8f6..9513d83c3 100644
--- a/src/libs/installer/binaryformatengine.cpp
+++ b/src/libs/installer/binaryformatengine.cpp
@@ -80,10 +80,10 @@ private:
namespace QInstaller {
-BinaryFormatEngine::BinaryFormatEngine(const ResourceCollectionManager &manager,
+BinaryFormatEngine::BinaryFormatEngine(const QHash<QByteArray, ResourceCollection> &collections,
const QString &fileName)
: m_resource(0)
- , m_manager(manager)
+ , m_collections(collections)
{
setFileName(fileName);
}
@@ -104,7 +104,7 @@ void BinaryFormatEngine::setFileName(const QString &file)
while (path.endsWith(sep))
path.chop(1);
- m_collection = m_manager.collectionByName(path.section(sep, 0, 0).toUtf8());
+ m_collection = m_collections.value(path.section(sep, 0, 0).toUtf8());
m_resource = m_collection.resourceByName(path.section(sep, 1, 1).toUtf8());
}
@@ -251,7 +251,7 @@ QStringList BinaryFormatEngine::entryList(QDir::Filters filters, const QStringLi
foreach (const QSharedPointer<Resource> &resource, m_collection.resources())
result.append(QString::fromUtf8(resource->name()));
} else if (m_collection.name().isEmpty() && (filters & QDir::Dirs)) {
- foreach (const ResourceCollection &collection, m_manager.collections())
+ foreach (const ResourceCollection &collection, m_collections)
result.append(QString::fromUtf8(collection.name()));
}
diff --git a/src/libs/installer/binaryformatengine.h b/src/libs/installer/binaryformatengine.h
index 0578e6e42..05a3a133f 100644
--- a/src/libs/installer/binaryformatengine.h
+++ b/src/libs/installer/binaryformatengine.h
@@ -53,7 +53,8 @@ class BinaryFormatEngine : public QAbstractFileEngine
Q_DISABLE_COPY(BinaryFormatEngine)
public:
- BinaryFormatEngine(const ResourceCollectionManager &manager, const QString &fileName);
+ BinaryFormatEngine(const QHash<QByteArray, ResourceCollection> &collections,
+ const QString &fileName);
void setFileName(const QString &file);
@@ -77,7 +78,7 @@ private:
ResourceCollection m_collection;
QSharedPointer<Resource> m_resource;
- const ResourceCollectionManager m_manager;
+ QHash<QByteArray, ResourceCollection> m_collections;
};
} // namespace QInstaller
diff --git a/src/libs/installer/binaryformatenginehandler.cpp b/src/libs/installer/binaryformatenginehandler.cpp
index 9e5f75c97..b5af66493 100644
--- a/src/libs/installer/binaryformatenginehandler.cpp
+++ b/src/libs/installer/binaryformatenginehandler.cpp
@@ -41,37 +41,22 @@
#include "binaryformatenginehandler.h"
#include "binaryformatengine.h"
-#include "binaryformat.h"
-#include <QDebug>
#include <QFile>
namespace QInstaller {
static BinaryFormatEngineHandler *s_instance = 0;
-
-class BinaryFormatEngineHandler::Private
-{
-public:
- Private(const ResourceCollectionManager &i)
- : manager(i)
- {
- }
-
- ResourceCollectionManager manager;
-};
-
-BinaryFormatEngineHandler::BinaryFormatEngineHandler(const ResourceCollectionManager &manager)
- : d(new Private(manager))
+BinaryFormatEngineHandler::BinaryFormatEngineHandler()
{
s_instance = this;
}
BinaryFormatEngineHandler::BinaryFormatEngineHandler(const BinaryFormatEngineHandler &other)
: QAbstractFileEngineHandler()
- , d(new Private(other.d->manager))
{
+ Q_UNUSED(other)
s_instance = this;
}
@@ -79,23 +64,17 @@ BinaryFormatEngineHandler::~BinaryFormatEngineHandler()
{
if (s_instance == this)
s_instance = 0;
- delete d;
-}
-
-void BinaryFormatEngineHandler::setResourceCollectionManager(const ResourceCollectionManager &manager)
-{
- d->manager = manager;
}
QAbstractFileEngine *BinaryFormatEngineHandler::create(const QString &fileName) const
{
return fileName.startsWith(QLatin1String("installer://"), Qt::CaseInsensitive )
- ? new BinaryFormatEngine(d->manager, fileName) : 0;
+ ? new BinaryFormatEngine(m_resources, fileName) : 0;
}
void BinaryFormatEngineHandler::reset()
{
- d->manager.reset();
+ m_resources.clear();
}
BinaryFormatEngineHandler *BinaryFormatEngineHandler::instance()
@@ -103,6 +82,12 @@ BinaryFormatEngineHandler *BinaryFormatEngineHandler::instance()
return s_instance;
}
+void BinaryFormatEngineHandler::registerResources(const QList<ResourceCollection> &collections)
+{
+ foreach (const ResourceCollection &collection, collections)
+ m_resources.insert(collection.name(), collection);
+}
+
void
BinaryFormatEngineHandler::registerResource(const QString &fileName, const QString &resourcePath)
{
@@ -115,17 +100,10 @@ BinaryFormatEngineHandler::registerResource(const QString &fileName, const QStri
while (path.endsWith(sep))
path.chop(1);
- const QString coll = path.section(sep, 0, 0);
- const QString resourceName = path.section(sep, 1, 1);
-
- ResourceCollection c = d->manager.collectionByName(coll.toUtf8());
- if (c.name().isEmpty())
- c.setName(coll.toUtf8());
-
- QSharedPointer<Resource> resource(new Resource(resourcePath));
- resource->setName(resourceName.toUtf8());
- c.appendResource(resource);
- d->manager.insertCollection(c);
+ const QByteArray resourceName = path.section(sep, 1, 1).toUtf8();
+ const QByteArray collectionName = path.section(sep, 0, 0).toUtf8();
+ m_resources[collectionName].appendResource(QSharedPointer<Resource>(new Resource(resourceName,
+ resourcePath)));
}
} // namespace QInstaller
diff --git a/src/libs/installer/binaryformatenginehandler.h b/src/libs/installer/binaryformatenginehandler.h
index 2a26aa5ba..4d45038f6 100644
--- a/src/libs/installer/binaryformatenginehandler.h
+++ b/src/libs/installer/binaryformatenginehandler.h
@@ -42,32 +42,29 @@
#ifndef BINARYFORMATENGINEHANDLER_H
#define BINARYFORMATENGINEHANDLER_H
-#include "installer_global.h"
+#include "binaryformat.h"
#include <QtCore/private/qabstractfileengine_p.h>
namespace QInstaller {
-class ResourceCollectionManager;
-
class INSTALLER_EXPORT BinaryFormatEngineHandler : public QAbstractFileEngineHandler
{
public:
- explicit BinaryFormatEngineHandler(const ResourceCollectionManager &manager);
+ BinaryFormatEngineHandler();
BinaryFormatEngineHandler(const BinaryFormatEngineHandler &other);
~BinaryFormatEngineHandler();
- QAbstractFileEngine *create(const QString &fileName) const;
- void setResourceCollectionManager(const ResourceCollectionManager &manager);
+ QAbstractFileEngine *create(const QString &fileName) const;
void reset();
static BinaryFormatEngineHandler *instance();
+ void registerResources(const QList<ResourceCollection> &collections);
void registerResource(const QString &fileName, const QString &resourcePath);
private:
- class Private;
- Private *const d;
+ QHash<QByteArray, ResourceCollection> m_resources;
};
} // namespace QInstaller