From 3062983d075761c457249b8c3c1248aa0d45e46a Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 9 Apr 2015 14:00:26 +0200 Subject: Use QByteArray instead of QString All identifiers should be latin1 and we make this explicit by using QByteArray. QString is reserved for strings that can be UTF-8 or alike. --- common/clientapi.cpp | 6 ++--- common/clientapi.h | 66 +++++++++++++++++++++++------------------------ common/domainadaptor.h | 10 +++---- common/resourceaccess.cpp | 10 +++---- common/resourceaccess.h | 4 +-- 5 files changed, 48 insertions(+), 48 deletions(-) (limited to 'common') diff --git a/common/clientapi.cpp b/common/clientapi.cpp index 6f0b421..0281b79 100644 --- a/common/clientapi.cpp +++ b/common/clientapi.cpp @@ -18,20 +18,20 @@ namespace Domain { template<> -QString getTypeName() +QByteArray getTypeName() { return "event"; } template<> -QString getTypeName() +QByteArray getTypeName() { return "todo"; } } // namespace Domain -void Store::shutdown(const QString &identifier) +void Store::shutdown(const QByteArray &identifier) { Akonadi2::ResourceAccess resourceAccess(identifier); //FIXME this starts the resource, just to shut it down again if it's not running in the first place. diff --git a/common/clientapi.h b/common/clientapi.h index 0ee934c..37fb185 100644 --- a/common/clientapi.h +++ b/common/clientapi.h @@ -180,9 +180,9 @@ namespace Domain { class BufferAdaptor { public: virtual ~BufferAdaptor() {} - virtual QVariant getProperty(const QString &key) const { return QVariant(); } - virtual void setProperty(const QString &key, const QVariant &value) {} - virtual QStringList availableProperties() const { return QStringList(); } + virtual QVariant getProperty(const QByteArray &key) const { return QVariant(); } + virtual void setProperty(const QByteArray &key, const QVariant &value) {} + virtual QList availableProperties() const { return QList(); } }; class MemoryBufferAdaptor : public BufferAdaptor { @@ -202,12 +202,12 @@ public: virtual ~MemoryBufferAdaptor() {} - virtual QVariant getProperty(const QString &key) const { return mValues.value(key); } - virtual void setProperty(const QString &key, const QVariant &value) { mValues.insert(key, value); } - virtual QStringList availableProperties() const { return mValues.keys(); } + virtual QVariant getProperty(const QByteArray &key) const { return mValues.value(key); } + virtual void setProperty(const QByteArray &key, const QVariant &value) { mValues.insert(key, value); } + virtual QByteArrayList availableProperties() const { return mValues.keys(); } private: - QHash mValues; + QHash mValues; }; /** @@ -222,7 +222,7 @@ public: { } - AkonadiDomainType(const QString &resourceName, const QString &identifier, qint64 revision, const QSharedPointer &adaptor) + AkonadiDomainType(const QByteArray &resourceName, const QByteArray &identifier, qint64 revision, const QSharedPointer &adaptor) : mAdaptor(adaptor), mResourceName(resourceName), mIdentifier(identifier), @@ -232,17 +232,17 @@ public: virtual ~AkonadiDomainType() {} - virtual QVariant getProperty(const QString &key) const { return mAdaptor->getProperty(key); } - virtual void setProperty(const QString &key, const QVariant &value){ mChangeSet.insert(key, value); mAdaptor->setProperty(key, value); } + virtual QVariant getProperty(const QByteArray &key) const { return mAdaptor->getProperty(key); } + virtual void setProperty(const QByteArray &key, const QVariant &value){ mChangeSet.insert(key, value); mAdaptor->setProperty(key, value); } private: QSharedPointer mAdaptor; - QHash mChangeSet; + QHash mChangeSet; /* * Each domain object needs to store the resource, identifier, revision triple so we can link back to the storage location. */ QString mResourceName; - QString mIdentifier; + QByteArray mIdentifier; qint64 mRevision; }; @@ -274,13 +274,13 @@ class Folder : public AkonadiDomainType { */ template -QString getTypeName(); +QByteArray getTypeName(); template<> -QString getTypeName(); +QByteArray getTypeName(); template<> -QString getTypeName(); +QByteArray getTypeName(); } @@ -307,13 +307,13 @@ class Query public: Query() : syncOnDemand(true), processAll(false) {} //Could also be a propertyFilter - QStringList resources; + QByteArrayList resources; //Could also be a propertyFilter - QStringList ids; + QByteArrayList ids; //Filters to apply - QHash propertyFilter; + QHash propertyFilter; //Properties to retrieve - QSet requestedProperties; + QSet requestedProperties; bool syncOnDemand; bool processAll; }; @@ -331,7 +331,7 @@ template class StoreFacade { public: virtual ~StoreFacade(){}; - QString type() const { return Domain::getTypeName(); } + QByteArray type() const { return Domain::getTypeName(); } virtual Async::Job create(const DomainType &domainObject) = 0; virtual Async::Job modify(const DomainType &domainObject) = 0; virtual Async::Job remove(const DomainType &domainObject) = 0; @@ -354,15 +354,15 @@ public: return factory; } - static QString key(const QString &resource, const QString &type) + static QByteArray key(const QByteArray &resource, const QByteArray &type) { return resource + type; } template - void registerFacade(const QString &resource) + void registerFacade(const QByteArray &resource) { - const QString typeName = Domain::getTypeName(); + const QByteArray typeName = Domain::getTypeName(); mFacadeRegistry.insert(key(resource, typeName), [](){ return new Facade; }); } @@ -376,16 +376,16 @@ public: * FIXME the factory function should really be returning QSharedPointer, which doesn't work (std::shared_pointer would though). That way i.e. a test could keep the object alive until it's done. */ template - void registerFacade(const QString &resource, const std::function &customFactoryFunction) + void registerFacade(const QByteArray &resource, const std::function &customFactoryFunction) { - const QString typeName = Domain::getTypeName(); + const QByteArray typeName = Domain::getTypeName(); mFacadeRegistry.insert(key(resource, typeName), customFactoryFunction); } template - QSharedPointer > getFacade(const QString &resource) + QSharedPointer > getFacade(const QByteArray &resource) { - const QString typeName = Domain::getTypeName(); + const QByteArray typeName = Domain::getTypeName(); auto factoryFunction = mFacadeRegistry.value(key(resource, typeName)); if (factoryFunction) { return QSharedPointer >(static_cast* >(factoryFunction())); @@ -395,7 +395,7 @@ public: } private: - QHash > mFacadeRegistry; + QHash > mFacadeRegistry; }; /** @@ -424,7 +424,7 @@ public: // query tells us in which resources we're interested // TODO: queries to individual resources could be parallelized Async::Job job = Async::null(); - for(const QString &resource : query.resources) { + for(const QByteArray &resource : query.resources) { auto facade = FacadeFactory::instance().getFacade(resource); //We have to bind an instance to the function callback. Since we use a shared pointer this keeps the result provider instance (and thus also the emitter) alive. std::function addCallback = std::bind(&ResultProvider::add, resultSet, std::placeholders::_1); @@ -463,7 +463,7 @@ public: */ //TODO return job that tracks progress until resource has stored the message in it's queue? template - static void create(const DomainType &domainObject, const QString &resourceIdentifier) { + static void create(const DomainType &domainObject, const QByteArray &resourceIdentifier) { //Potentially move to separate thread as well auto facade = FacadeFactory::instance().getFacade(resourceIdentifier); auto job = facade->create(domainObject); @@ -478,7 +478,7 @@ public: * This includes moving etc. since these are also simple settings on a property. */ template - static void modify(const DomainType &domainObject, const QString &resourceIdentifier) { + static void modify(const DomainType &domainObject, const QByteArray &resourceIdentifier) { //Potentially move to separate thread as well auto facade = FacadeFactory::instance().getFacade(resourceIdentifier); facade.modify(domainObject); @@ -488,13 +488,13 @@ public: * Remove an entity. */ template - static void remove(const DomainType &domainObject, const QString &resourceIdentifier) { + static void remove(const DomainType &domainObject, const QByteArray &resourceIdentifier) { //Potentially move to separate thread as well auto facade = FacadeFactory::instance().getFacade(resourceIdentifier); facade.remove(domainObject); } - static void shutdown(const QString &resourceIdentifier); + static void shutdown(const QByteArray &resourceIdentifier); }; } diff --git a/common/domainadaptor.h b/common/domainadaptor.h index e46e893..692c8c1 100644 --- a/common/domainadaptor.h +++ b/common/domainadaptor.h @@ -21,7 +21,7 @@ #include "entity_generated.h" #include -#include +#include #include #include "clientapi.h" //for domain parts @@ -35,7 +35,7 @@ template class PropertyMapper { public: - void setProperty(const QString &key, const QVariant &value, BufferType *buffer) + void setProperty(const QByteArray &key, const QVariant &value, BufferType *buffer) { if (mWriteAccessors.contains(key)) { auto accessor = mWriteAccessors.value(key); @@ -43,7 +43,7 @@ public: } } - virtual QVariant getProperty(const QString &key, BufferType const *buffer) const + virtual QVariant getProperty(const QByteArray &key, BufferType const *buffer) const { if (mReadAccessors.contains(key)) { auto accessor = mReadAccessors.value(key); @@ -51,8 +51,8 @@ public: } return QVariant(); } - QHash > mReadAccessors; - QHash > mWriteAccessors; + QHash > mReadAccessors; + QHash > mWriteAccessors; }; //The factory should define how to go from an entitybuffer (local + resource buffer), to a domain type adapter. diff --git a/common/resourceaccess.cpp b/common/resourceaccess.cpp index 7320e50..7a343f9 100644 --- a/common/resourceaccess.cpp +++ b/common/resourceaccess.cpp @@ -64,8 +64,8 @@ public: class ResourceAccess::Private { public: - Private(const QString &name, ResourceAccess *ra); - QString resourceName; + Private(const QByteArray &name, ResourceAccess *ra); + QByteArray resourceName; QLocalSocket *socket; QTimer *tryOpenTimer; bool startingProcess; @@ -77,7 +77,7 @@ public: uint messageId; }; -ResourceAccess::Private::Private(const QString &name, ResourceAccess *q) +ResourceAccess::Private::Private(const QByteArray &name, ResourceAccess *q) : resourceName(name), socket(new QLocalSocket(q)), tryOpenTimer(new QTimer(q)), @@ -87,7 +87,7 @@ ResourceAccess::Private::Private(const QString &name, ResourceAccess *q) { } -ResourceAccess::ResourceAccess(const QString &resourceName, QObject *parent) +ResourceAccess::ResourceAccess(const QByteArray &resourceName, QObject *parent) : QObject(parent), d(new Private(resourceName, this)) { @@ -112,7 +112,7 @@ ResourceAccess::~ResourceAccess() } -QString ResourceAccess::resourceName() const +QByteArray ResourceAccess::resourceName() const { return d->resourceName; } diff --git a/common/resourceaccess.h b/common/resourceaccess.h index a5a2547..088bf36 100644 --- a/common/resourceaccess.h +++ b/common/resourceaccess.h @@ -35,10 +35,10 @@ class ResourceAccess : public QObject Q_OBJECT public: - ResourceAccess(const QString &resourceName, QObject *parent = 0); + ResourceAccess(const QByteArray &resourceName, QObject *parent = 0); ~ResourceAccess(); - QString resourceName() const; + QByteArray resourceName() const; bool isReady() const; Async::Job sendCommand(int commandId); -- cgit v1.2.3