diff options
Diffstat (limited to 'sinksh/sinksh_utils.cpp')
-rw-r--r-- | sinksh/sinksh_utils.cpp | 74 |
1 files changed, 38 insertions, 36 deletions
diff --git a/sinksh/sinksh_utils.cpp b/sinksh/sinksh_utils.cpp index 5a01d40..0b9a34d 100644 --- a/sinksh/sinksh_utils.cpp +++ b/sinksh/sinksh_utils.cpp | |||
@@ -27,33 +27,29 @@ | |||
27 | 27 | ||
28 | namespace SinkshUtils { | 28 | namespace SinkshUtils { |
29 | 29 | ||
30 | static QStringList s_types = QStringList() << "resource" | ||
31 | << "folder" | ||
32 | << "mail" | ||
33 | << "event" | ||
34 | << "account"; | ||
35 | |||
36 | bool isValidStoreType(const QString &type) | 30 | bool isValidStoreType(const QString &type) |
37 | { | 31 | { |
38 | return s_types.contains(type); | 32 | return Sink::ApplicationDomain::getTypeNames().contains(type.toLatin1()); |
39 | } | 33 | } |
40 | 34 | ||
41 | StoreBase &getStore(const QString &type) | 35 | StoreBase &getStore(const QString &type) |
42 | { | 36 | { |
43 | if (type == "folder") { | 37 | using namespace Sink::ApplicationDomain; |
44 | static Store<Sink::ApplicationDomain::Folder> store; | 38 | |
39 | if (type == getTypeName<Folder>()) { | ||
40 | static Store<Folder> store; | ||
45 | return store; | 41 | return store; |
46 | } else if (type == "mail") { | 42 | } else if (type == getTypeName<Mail>()) { |
47 | static Store<Sink::ApplicationDomain::Mail> store; | 43 | static Store<Mail> store; |
48 | return store; | 44 | return store; |
49 | } else if (type == "event") { | 45 | } else if (type == getTypeName<Event>()) { |
50 | static Store<Sink::ApplicationDomain::Event> store; | 46 | static Store<Event> store; |
51 | return store; | 47 | return store; |
52 | } else if (type == "resource") { | 48 | } else if (type == getTypeName<SinkResource>()) { |
53 | static Store<Sink::ApplicationDomain::SinkResource> store; | 49 | static Store<SinkResource> store; |
54 | return store; | 50 | return store; |
55 | } else if (type == "account") { | 51 | } else if (type == getTypeName<SinkResource>()) { |
56 | static Store<Sink::ApplicationDomain::SinkAccount> store; | 52 | static Store<SinkAccount> store; |
57 | return store; | 53 | return store; |
58 | } | 54 | } |
59 | 55 | ||
@@ -66,19 +62,20 @@ StoreBase &getStore(const QString &type) | |||
66 | 62 | ||
67 | QList<QByteArray> requestedProperties(const QString &type) | 63 | QList<QByteArray> requestedProperties(const QString &type) |
68 | { | 64 | { |
69 | if (type == "folder") { | 65 | using namespace Sink::ApplicationDomain; |
70 | return QList<QByteArray>() << "name" | 66 | if (type == getTypeName<Folder>()) { |
71 | << "parent"; | 67 | return QList<QByteArray>() << Folder::Name::name |
72 | } else if (type == "mail") { | 68 | << Folder::Parent::name; |
73 | return QList<QByteArray>() << "subject" | 69 | } else if (type == getTypeName<Mail>()) { |
74 | << "folder" | 70 | return QList<QByteArray>() << Mail::Subject::name |
75 | << "date"; | 71 | << Mail::Folder::name |
76 | } else if (type == "event") { | 72 | << Mail::Date::name; |
77 | return QList<QByteArray>() << "summary"; | 73 | } else if (type == getTypeName<Event>()) { |
78 | } else if (type == "resource") { | 74 | return QList<QByteArray>() << Event::Summary::name; |
79 | return QList<QByteArray>() << "type" << "account"; | 75 | } else if (type == getTypeName<SinkResource>()) { |
80 | } else if (type == "account") { | 76 | return QList<QByteArray>() << SinkResource::ResourceType::name << SinkResource::Account::name; |
81 | return QList<QByteArray>() << "type" << "name"; | 77 | } else if (type == getTypeName<SinkAccount>()) { |
78 | return QList<QByteArray>() << SinkAccount::AccountType::name << SinkAccount::Name::name; | ||
82 | } | 79 | } |
83 | return QList<QByteArray>(); | 80 | return QList<QByteArray>(); |
84 | } | 81 | } |
@@ -112,11 +109,19 @@ QStringList resourceCompleter(const QStringList &, const QString &fragment, Stat | |||
112 | return Utils::filteredCompletions(resourceIds(), fragment); | 109 | return Utils::filteredCompletions(resourceIds(), fragment); |
113 | } | 110 | } |
114 | 111 | ||
112 | static QStringList toStringList(const QByteArrayList &l) | ||
113 | { | ||
114 | QStringList list; | ||
115 | for (const auto &s : l) { | ||
116 | list << s; | ||
117 | } | ||
118 | return list; | ||
119 | } | ||
120 | |||
115 | QStringList resourceOrTypeCompleter(const QStringList &commands, const QString &fragment, State &state) | 121 | QStringList resourceOrTypeCompleter(const QStringList &commands, const QString &fragment, State &state) |
116 | { | 122 | { |
117 | static QStringList types = s_types; | ||
118 | if (commands.count() == 1) { | 123 | if (commands.count() == 1) { |
119 | return Utils::filteredCompletions(s_types, fragment); | 124 | return Utils::filteredCompletions(toStringList(Sink::ApplicationDomain::getTypeNames()), fragment); |
120 | } | 125 | } |
121 | 126 | ||
122 | return Utils::filteredCompletions(resourceIds(), fragment); | 127 | return Utils::filteredCompletions(resourceIds(), fragment); |
@@ -124,18 +129,15 @@ QStringList resourceOrTypeCompleter(const QStringList &commands, const QString & | |||
124 | 129 | ||
125 | QStringList typeCompleter(const QStringList &commands, const QString &fragment, State &state) | 130 | QStringList typeCompleter(const QStringList &commands, const QString &fragment, State &state) |
126 | { | 131 | { |
127 | return Utils::filteredCompletions(s_types, fragment); | 132 | return Utils::filteredCompletions(toStringList(Sink::ApplicationDomain::getTypeNames()), fragment); |
128 | } | 133 | } |
129 | 134 | ||
130 | QMap<QString, QString> keyValueMapFromArgs(const QStringList &args) | 135 | QMap<QString, QString> keyValueMapFromArgs(const QStringList &args) |
131 | { | 136 | { |
132 | // TODO: this is not the most clever of algorithms. preserved during the port of commands | ||
133 | // from sink_client ... we can probably do better, however ;) | ||
134 | QMap<QString, QString> map; | 137 | QMap<QString, QString> map; |
135 | for (int i = 0; i + 2 <= args.size(); i += 2) { | 138 | for (int i = 0; i + 2 <= args.size(); i += 2) { |
136 | map.insert(args.at(i), args.at(i + 1)); | 139 | map.insert(args.at(i), args.at(i + 1)); |
137 | } | 140 | } |
138 | |||
139 | return map; | 141 | return map; |
140 | } | 142 | } |
141 | } | 143 | } |