summaryrefslogtreecommitdiffstats
path: root/docs/design.md
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2015-10-16 15:38:03 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2015-10-16 15:38:03 +0200
commit86d57962752d2a6b39efc4f7098f83dda3cf9c88 (patch)
tree5162e21a3c1c89d5045fef04b14c7b1ace3553aa /docs/design.md
parent543aa147fe44cd5329d2303f8632bda5990552a5 (diff)
downloadkube-86d57962752d2a6b39efc4f7098f83dda3cf9c88.tar.gz
kube-86d57962752d2a6b39efc4f7098f83dda3cf9c88.zip
documentation
Diffstat (limited to 'docs/design.md')
-rw-r--r--docs/design.md11
1 files changed, 10 insertions, 1 deletions
diff --git a/docs/design.md b/docs/design.md
index 2e2b6997..4ab2e887 100644
--- a/docs/design.md
+++ b/docs/design.md
@@ -23,7 +23,7 @@ The overall architecture is split into three layers; Ui, Domain Logic and Infras
23 23
24The UI Layer consists of views (mostly written in QML), view-models (models that are view specific and potentially implement user interaction details), and the glue code to use various controllers from the interface. Different UI layers may exist for different form factors. 24The UI Layer consists of views (mostly written in QML), view-models (models that are view specific and potentially implement user interaction details), and the glue code to use various controllers from the interface. Different UI layers may exist for different form factors.
25 25
26The domain logic layer holds the application state. It povides models to access data and controllers to act upon it. The domain logic is by definition Kontact Quick specific and not sharable with other applications, at it needs to be taylored exactly according to the requirements of Kontact Quick. 26The domain logic layer holds the application state. It povides models to access data and controllers to act upon it. The domain logic is by definition Kontact Quick specific and not sharable with other applications, as it needs to be taylored exactly according to the requirements of Kontact Quick.
27 27
28The infrastructure layer provides: 28The infrastructure layer provides:
29 29
@@ -52,6 +52,9 @@ Of course controllers will need to share functionality internally as soon as an
52## Infrastructure 52## Infrastructure
53 53
54The infrastructure layer interfaces with the rest of the system. It is the place where we can integrate with various native infrastructure parts. 54The infrastructure layer interfaces with the rest of the system. It is the place where we can integrate with various native infrastructure parts.
55The interface of the infrastructure layer, that is used by the domain logic, may not expose any implementation details of any infrastructure part, to ensure that all infrastructure parts are exchangable.
56
57Note: The infrastructure blocks will use only types provided by the domain logic. This means i.e. that no KCalCore containers may be used in such an interface. To avoid hard dependencies on any specific implementation, the infrastructure parts will have to have interfaces, and a factory must be used to supply concrete implementations. That way it is also possible to inject dummy implementations.
55 58
56### Akonadi Next 59### Akonadi Next
57Akonadi Next is used for primary data access and handles all synchronization. 60Akonadi Next is used for primary data access and handles all synchronization.
@@ -92,3 +95,9 @@ External applications, like the KDE calendar plasmoid, should be able to load pa
92The same mechanism should probably be used by Kontact Quick itself to ensure loose coupling and allow mashups with various content types. 95The same mechanism should probably be used by Kontact Quick itself to ensure loose coupling and allow mashups with various content types.
93 96
94Note: We'll probably want a component-viewer application to easily load and test individual components (similar to plasmoidviewer). 97Note: We'll probably want a component-viewer application to easily load and test individual components (similar to plasmoidviewer).
98
99## Testing
100
101* Controllers can be tested by providing mock implementations of the relevant infrastructure parts.
102* Models can be tested by providing fake implementations of the relevant infrastructure parts.
103* Infrastructure parts can be tested individually.