diff options
author | kh1 <karsten.heimrich@digia.com> | 2014-08-28 11:06:26 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2014-08-29 12:39:48 +0200 |
commit | 42d2b1ba06ad38fe938bc69f34f0d5714b1f201b (patch) | |
tree | f3710c4ae17aa2f721950f8064bc8fc6b39677f4 /src | |
parent | c855e20dff8feda133fa344ac9cb5542b986cf4f (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.cpp | 11 | ||||
-rw-r--r-- | src/libs/installer/binaryformatengine.cpp | 8 | ||||
-rw-r--r-- | src/libs/installer/binaryformatengine.h | 5 | ||||
-rw-r--r-- | src/libs/installer/binaryformatenginehandler.cpp | 50 | ||||
-rw-r--r-- | src/libs/installer/binaryformatenginehandler.h | 13 |
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 |