diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-03-23 16:11:23 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-03-23 16:11:23 +0100 |
commit | ae439547d303c34bfd7447fdd7145498794f1de8 (patch) | |
tree | 96f3e0e402578c3b22934001cd38b2fbf780c048 | |
parent | e1430017eb60976610f4963cd770116a4a486c2e (diff) | |
download | sink-ae439547d303c34bfd7447fdd7145498794f1de8.tar.gz sink-ae439547d303c34bfd7447fdd7145498794f1de8.zip |
DomainType::name
-rw-r--r-- | common/domain/applicationdomaintype.cpp | 64 | ||||
-rw-r--r-- | common/domain/applicationdomaintype.h | 52 |
2 files changed, 26 insertions, 90 deletions
diff --git a/common/domain/applicationdomaintype.cpp b/common/domain/applicationdomaintype.cpp index c9cef3f..44f5a75 100644 --- a/common/domain/applicationdomaintype.cpp +++ b/common/domain/applicationdomaintype.cpp | |||
@@ -65,6 +65,9 @@ int registerProperty() { | |||
65 | return 0; | 65 | return 0; |
66 | } | 66 | } |
67 | 67 | ||
68 | #define SINK_REGISTER_ENTITY(ENTITY) \ | ||
69 | constexpr const char *ENTITY::name; | ||
70 | |||
68 | #define SINK_REGISTER_PROPERTY(ENTITYTYPE, PROPERTY) \ | 71 | #define SINK_REGISTER_PROPERTY(ENTITYTYPE, PROPERTY) \ |
69 | constexpr const char *ENTITYTYPE::PROPERTY::name; \ | 72 | constexpr const char *ENTITYTYPE::PROPERTY::name; \ |
70 | static int foo##ENTITYTYPE##PROPERTY = registerProperty<ENTITYTYPE, ENTITYTYPE::PROPERTY>(); | 73 | static int foo##ENTITYTYPE##PROPERTY = registerProperty<ENTITYTYPE, ENTITYTYPE::PROPERTY>(); |
@@ -72,6 +75,10 @@ int registerProperty() { | |||
72 | namespace Sink { | 75 | namespace Sink { |
73 | namespace ApplicationDomain { | 76 | namespace ApplicationDomain { |
74 | 77 | ||
78 | constexpr const char *SinkResource::name; | ||
79 | constexpr const char *SinkAccount::name; | ||
80 | |||
81 | SINK_REGISTER_ENTITY(Mail); | ||
75 | SINK_REGISTER_PROPERTY(Mail, Sender); | 82 | SINK_REGISTER_PROPERTY(Mail, Sender); |
76 | SINK_REGISTER_PROPERTY(Mail, To); | 83 | SINK_REGISTER_PROPERTY(Mail, To); |
77 | SINK_REGISTER_PROPERTY(Mail, Cc); | 84 | SINK_REGISTER_PROPERTY(Mail, Cc); |
@@ -90,6 +97,7 @@ SINK_REGISTER_PROPERTY(Mail, MessageId); | |||
90 | SINK_REGISTER_PROPERTY(Mail, ParentMessageId); | 97 | SINK_REGISTER_PROPERTY(Mail, ParentMessageId); |
91 | SINK_REGISTER_PROPERTY(Mail, ThreadId); | 98 | SINK_REGISTER_PROPERTY(Mail, ThreadId); |
92 | 99 | ||
100 | SINK_REGISTER_ENTITY(Folder); | ||
93 | SINK_REGISTER_PROPERTY(Folder, Name); | 101 | SINK_REGISTER_PROPERTY(Folder, Name); |
94 | SINK_REGISTER_PROPERTY(Folder, Icon); | 102 | SINK_REGISTER_PROPERTY(Folder, Icon); |
95 | SINK_REGISTER_PROPERTY(Folder, SpecialPurpose); | 103 | SINK_REGISTER_PROPERTY(Folder, SpecialPurpose); |
@@ -98,6 +106,7 @@ SINK_REGISTER_PROPERTY(Folder, Parent); | |||
98 | SINK_REGISTER_PROPERTY(Folder, Count); | 106 | SINK_REGISTER_PROPERTY(Folder, Count); |
99 | SINK_REGISTER_PROPERTY(Folder, FullContentAvailable); | 107 | SINK_REGISTER_PROPERTY(Folder, FullContentAvailable); |
100 | 108 | ||
109 | SINK_REGISTER_ENTITY(Contact); | ||
101 | SINK_REGISTER_PROPERTY(Contact, Uid); | 110 | SINK_REGISTER_PROPERTY(Contact, Uid); |
102 | SINK_REGISTER_PROPERTY(Contact, Fn); | 111 | SINK_REGISTER_PROPERTY(Contact, Fn); |
103 | SINK_REGISTER_PROPERTY(Contact, Firstname); | 112 | SINK_REGISTER_PROPERTY(Contact, Firstname); |
@@ -106,6 +115,7 @@ SINK_REGISTER_PROPERTY(Contact, Emails); | |||
106 | SINK_REGISTER_PROPERTY(Contact, Vcard); | 115 | SINK_REGISTER_PROPERTY(Contact, Vcard); |
107 | SINK_REGISTER_PROPERTY(Contact, Addressbook); | 116 | SINK_REGISTER_PROPERTY(Contact, Addressbook); |
108 | 117 | ||
118 | SINK_REGISTER_ENTITY(Addressbook); | ||
109 | SINK_REGISTER_PROPERTY(Addressbook, Name); | 119 | SINK_REGISTER_PROPERTY(Addressbook, Name); |
110 | SINK_REGISTER_PROPERTY(Addressbook, Parent); | 120 | SINK_REGISTER_PROPERTY(Addressbook, Parent); |
111 | SINK_REGISTER_PROPERTY(Addressbook, LastUpdated); | 121 | SINK_REGISTER_PROPERTY(Addressbook, LastUpdated); |
@@ -384,60 +394,6 @@ SinkResource CardDavResource::create(const QByteArray &account) | |||
384 | return resource; | 394 | return resource; |
385 | } | 395 | } |
386 | 396 | ||
387 | template<> | ||
388 | QByteArray getTypeName<Contact>() | ||
389 | { | ||
390 | return "contact"; | ||
391 | } | ||
392 | |||
393 | template<> | ||
394 | QByteArray getTypeName<Addressbook>() | ||
395 | { | ||
396 | return "addressbook"; | ||
397 | } | ||
398 | |||
399 | template<> | ||
400 | QByteArray getTypeName<Event>() | ||
401 | { | ||
402 | return "event"; | ||
403 | } | ||
404 | |||
405 | template<> | ||
406 | QByteArray getTypeName<Todo>() | ||
407 | { | ||
408 | return "todo"; | ||
409 | } | ||
410 | |||
411 | template<> | ||
412 | QByteArray getTypeName<SinkResource>() | ||
413 | { | ||
414 | return "resource"; | ||
415 | } | ||
416 | |||
417 | template<> | ||
418 | QByteArray getTypeName<SinkAccount>() | ||
419 | { | ||
420 | return "account"; | ||
421 | } | ||
422 | |||
423 | template<> | ||
424 | QByteArray getTypeName<Identity>() | ||
425 | { | ||
426 | return "identity"; | ||
427 | } | ||
428 | |||
429 | template<> | ||
430 | QByteArray getTypeName<Mail>() | ||
431 | { | ||
432 | return "mail"; | ||
433 | } | ||
434 | |||
435 | template<> | ||
436 | QByteArray getTypeName<Folder>() | ||
437 | { | ||
438 | return "folder"; | ||
439 | } | ||
440 | |||
441 | QByteArrayList getTypeNames() | 397 | QByteArrayList getTypeNames() |
442 | { | 398 | { |
443 | static QByteArrayList types; | 399 | static QByteArrayList types; |
diff --git a/common/domain/applicationdomaintype.h b/common/domain/applicationdomaintype.h index 74b747d..47e5cfd 100644 --- a/common/domain/applicationdomaintype.h +++ b/common/domain/applicationdomaintype.h | |||
@@ -28,7 +28,8 @@ | |||
28 | #include <QUuid> | 28 | #include <QUuid> |
29 | #include "bufferadaptor.h" | 29 | #include "bufferadaptor.h" |
30 | 30 | ||
31 | #define SINK_ENTITY(TYPE) \ | 31 | #define SINK_ENTITY(TYPE, LOWERCASENAME) \ |
32 | static constexpr const char *name = #LOWERCASENAME; \ | ||
32 | typedef QSharedPointer<TYPE> Ptr; \ | 33 | typedef QSharedPointer<TYPE> Ptr; \ |
33 | using Entity::Entity; \ | 34 | using Entity::Entity; \ |
34 | TYPE() = default; \ | 35 | TYPE() = default; \ |
@@ -280,6 +281,7 @@ SINK_EXPORT QDebug operator<< (QDebug d, const BLOB &blob); | |||
280 | 281 | ||
281 | 282 | ||
282 | struct SINK_EXPORT SinkAccount : public ApplicationDomainType { | 283 | struct SINK_EXPORT SinkAccount : public ApplicationDomainType { |
284 | static constexpr const char *name = "account"; | ||
283 | typedef QSharedPointer<SinkAccount> Ptr; | 285 | typedef QSharedPointer<SinkAccount> Ptr; |
284 | explicit SinkAccount(const QByteArray &resourceInstanceIdentifier, const QByteArray &identifier, qint64 revision, const QSharedPointer<BufferAdaptor> &adaptor); | 286 | explicit SinkAccount(const QByteArray &resourceInstanceIdentifier, const QByteArray &identifier, qint64 revision, const QSharedPointer<BufferAdaptor> &adaptor); |
285 | explicit SinkAccount(const QByteArray &identifier); | 287 | explicit SinkAccount(const QByteArray &identifier); |
@@ -302,6 +304,7 @@ struct SINK_EXPORT SinkAccount : public ApplicationDomainType { | |||
302 | * and for creating and removing resource instances. | 304 | * and for creating and removing resource instances. |
303 | */ | 305 | */ |
304 | struct SINK_EXPORT SinkResource : public ApplicationDomainType { | 306 | struct SINK_EXPORT SinkResource : public ApplicationDomainType { |
307 | static constexpr const char *name = "resource"; | ||
305 | typedef QSharedPointer<SinkResource> Ptr; | 308 | typedef QSharedPointer<SinkResource> Ptr; |
306 | explicit SinkResource(const QByteArray &resourceInstanceIdentifier, const QByteArray &identifier, qint64 revision, const QSharedPointer<BufferAdaptor> &adaptor); | 309 | explicit SinkResource(const QByteArray &resourceInstanceIdentifier, const QByteArray &identifier, qint64 revision, const QSharedPointer<BufferAdaptor> &adaptor); |
307 | explicit SinkResource(const QByteArray &identifier); | 310 | explicit SinkResource(const QByteArray &identifier); |
@@ -325,7 +328,7 @@ struct SINK_EXPORT Entity : public ApplicationDomainType { | |||
325 | }; | 328 | }; |
326 | 329 | ||
327 | struct SINK_EXPORT Addressbook : public Entity { | 330 | struct SINK_EXPORT Addressbook : public Entity { |
328 | SINK_ENTITY(Addressbook); | 331 | SINK_ENTITY(Addressbook, addressbook); |
329 | SINK_REFERENCE_PROPERTY(Addressbook, Parent, parent); | 332 | SINK_REFERENCE_PROPERTY(Addressbook, Parent, parent); |
330 | SINK_PROPERTY(QString, Name, name); | 333 | SINK_PROPERTY(QString, Name, name); |
331 | SINK_EXTRACTED_PROPERTY(QDateTime, LastUpdated, lastUpdated); | 334 | SINK_EXTRACTED_PROPERTY(QDateTime, LastUpdated, lastUpdated); |
@@ -341,7 +344,7 @@ struct SINK_EXPORT Contact : public Entity { | |||
341 | Type type; | 344 | Type type; |
342 | QString email; | 345 | QString email; |
343 | }; | 346 | }; |
344 | SINK_ENTITY(Contact); | 347 | SINK_ENTITY(Contact, contact); |
345 | SINK_PROPERTY(QString, Uid, uid); | 348 | SINK_PROPERTY(QString, Uid, uid); |
346 | SINK_PROPERTY(QString, Fn, fn); | 349 | SINK_PROPERTY(QString, Fn, fn); |
347 | SINK_PROPERTY(QString, Firstname, firstname); | 350 | SINK_PROPERTY(QString, Firstname, firstname); |
@@ -352,7 +355,7 @@ struct SINK_EXPORT Contact : public Entity { | |||
352 | }; | 355 | }; |
353 | 356 | ||
354 | struct SINK_EXPORT Event : public Entity { | 357 | struct SINK_EXPORT Event : public Entity { |
355 | SINK_ENTITY(Event); | 358 | SINK_ENTITY(Event, event); |
356 | SINK_PROPERTY(QString, Uid, uid); | 359 | SINK_PROPERTY(QString, Uid, uid); |
357 | SINK_PROPERTY(QString, Summary, summary); | 360 | SINK_PROPERTY(QString, Summary, summary); |
358 | SINK_PROPERTY(QString, Description, description); | 361 | SINK_PROPERTY(QString, Description, description); |
@@ -360,15 +363,15 @@ struct SINK_EXPORT Event : public Entity { | |||
360 | }; | 363 | }; |
361 | 364 | ||
362 | struct SINK_EXPORT Todo : public Entity { | 365 | struct SINK_EXPORT Todo : public Entity { |
363 | SINK_ENTITY(Todo); | 366 | SINK_ENTITY(Todo, todo); |
364 | }; | 367 | }; |
365 | 368 | ||
366 | struct SINK_EXPORT Calendar : public Entity { | 369 | struct SINK_EXPORT Calendar : public Entity { |
367 | SINK_ENTITY(Calendar); | 370 | SINK_ENTITY(Calendar, calendar); |
368 | }; | 371 | }; |
369 | 372 | ||
370 | struct SINK_EXPORT Folder : public Entity { | 373 | struct SINK_EXPORT Folder : public Entity { |
371 | SINK_ENTITY(Folder); | 374 | SINK_ENTITY(Folder, folder); |
372 | SINK_REFERENCE_PROPERTY(Folder, Parent, parent); | 375 | SINK_REFERENCE_PROPERTY(Folder, Parent, parent); |
373 | SINK_PROPERTY(QString, Name, name); | 376 | SINK_PROPERTY(QString, Name, name); |
374 | SINK_PROPERTY(QByteArray, Icon, icon); | 377 | SINK_PROPERTY(QByteArray, Icon, icon); |
@@ -385,7 +388,7 @@ struct SINK_EXPORT Mail : public Entity { | |||
385 | QString emailAddress; | 388 | QString emailAddress; |
386 | }; | 389 | }; |
387 | 390 | ||
388 | SINK_ENTITY(Mail); | 391 | SINK_ENTITY(Mail, mail); |
389 | SINK_EXTRACTED_PROPERTY(Contact, Sender, sender); | 392 | SINK_EXTRACTED_PROPERTY(Contact, Sender, sender); |
390 | SINK_EXTRACTED_PROPERTY(QList<Contact>, To, to); | 393 | SINK_EXTRACTED_PROPERTY(QList<Contact>, To, to); |
391 | SINK_EXTRACTED_PROPERTY(QList<Contact>, Cc, cc); | 394 | SINK_EXTRACTED_PROPERTY(QList<Contact>, Cc, cc); |
@@ -424,6 +427,7 @@ enum SINK_EXPORT Status { | |||
424 | }; | 427 | }; |
425 | 428 | ||
426 | struct SINK_EXPORT Identity : public ApplicationDomainType { | 429 | struct SINK_EXPORT Identity : public ApplicationDomainType { |
430 | static constexpr const char *name = "resource"; | ||
427 | typedef QSharedPointer<Identity> Ptr; | 431 | typedef QSharedPointer<Identity> Ptr; |
428 | explicit Identity(const QByteArray &resourceInstanceIdentifier, const QByteArray &identifier, qint64 revision, const QSharedPointer<BufferAdaptor> &adaptor); | 432 | explicit Identity(const QByteArray &resourceInstanceIdentifier, const QByteArray &identifier, qint64 revision, const QSharedPointer<BufferAdaptor> &adaptor); |
429 | explicit Identity(const QByteArray &identifier); | 433 | explicit Identity(const QByteArray &identifier); |
@@ -487,34 +491,10 @@ namespace Mail { | |||
487 | * Do not store these types to disk, they may change over time. | 491 | * Do not store these types to disk, they may change over time. |
488 | */ | 492 | */ |
489 | template<class DomainType> | 493 | template<class DomainType> |
490 | QByteArray SINK_EXPORT getTypeName(); | 494 | QByteArray SINK_EXPORT getTypeName() |
491 | 495 | { | |
492 | template<> | 496 | return DomainType::name; |
493 | QByteArray SINK_EXPORT getTypeName<Contact>(); | 497 | } |
494 | |||
495 | template<> | ||
496 | QByteArray SINK_EXPORT getTypeName<Addressbook>(); | ||
497 | |||
498 | template<> | ||
499 | QByteArray SINK_EXPORT getTypeName<Event>(); | ||
500 | |||
501 | template<> | ||
502 | QByteArray SINK_EXPORT getTypeName<Todo>(); | ||
503 | |||
504 | template<> | ||
505 | QByteArray SINK_EXPORT getTypeName<SinkResource>(); | ||
506 | |||
507 | template<> | ||
508 | QByteArray SINK_EXPORT getTypeName<SinkAccount>(); | ||
509 | |||
510 | template<> | ||
511 | QByteArray SINK_EXPORT getTypeName<Identity>(); | ||
512 | |||
513 | template<> | ||
514 | QByteArray SINK_EXPORT getTypeName<Mail>(); | ||
515 | |||
516 | template<> | ||
517 | QByteArray SINK_EXPORT getTypeName<Folder>(); | ||
518 | 498 | ||
519 | QByteArrayList SINK_EXPORT getTypeNames(); | 499 | QByteArrayList SINK_EXPORT getTypeNames(); |
520 | 500 | ||