MT Showcase SDK
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
CodiceServiceAPI.hpp
1 #pragma once
2 
3 #include "Export.hpp"
4 
5 #include <MultiWidgets/Widget.hpp>
6 
7 #include <QString>
8 
9 #include <memory>
10 
11 #include <Nimble/Size.hpp>
12 
13 #include <boost/expected/expected.hpp>
14 
15 namespace Showcase
16 {
17 
18  class SHOWCASE_API CodiceServiceAPI
19  {
20  public:
21 
24  {
25  Nimble::SizeF eraserSize;
26  };
27 
30  {
31  QString keyword;
32  };
33 
36  {
37  QString name;
38  QString email;
39  QByteArray personalFolder;
40  };
41 
43  enum class MarkerType {
45  Personal,
47  Eraser,
49  Keyword,
51  Guest,
53  Undefined
54  };
55 
56  class SHOWCASE_API MarkerProperties
57  {
58  public:
61  MarkerProperties(MarkerType type);
63  MarkerProperties(MarkerProperties&& o);
65  MarkerProperties & operator=(MarkerProperties && o);
66  ~MarkerProperties();
67 
70  const EraserMarkerProperties* eraserProperties() const;
71 
74  const KeywordMarkerProperties* keywordProperties() const;
75 
78  const PersonalMarkerProperties* personalProperties() const;
79 
81  MarkerType type() const;
82 
83  // This is just for implementation, not to be used
84  class D;
85  D& d();
86 
87  private:
88  std::unique_ptr<D> m_d;
89 
90  friend class CodiceService;
91  };
92 
96  virtual MarkerProperties markerProperties(uint64_t code) = 0;
97 
102  virtual bool registerPersonalMarker(uint64_t code, const QString & name, const QString & email) = 0;
103 
105  virtual boost::expected<MultiWidgets::WidgetPtr, QString> personalFolderWidget(uint64_t code) = 0;
106 
107  };
108 
109 }