summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/Controllers/PreviousStatusStore.cpp')
-rw-r--r--Swift/Controllers/PreviousStatusStore.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/Swift/Controllers/PreviousStatusStore.cpp b/Swift/Controllers/PreviousStatusStore.cpp
new file mode 100644
index 0000000..42f2124
--- /dev/null
+++ b/Swift/Controllers/PreviousStatusStore.cpp
@@ -0,0 +1,47 @@
+#include "PreviousStatusStore.h"
+
+#include "Swiften/Base/foreach.h"
+
+namespace Swift {
+
+PreviousStatusStore::PreviousStatusStore() {
+
+}
+
+PreviousStatusStore::~PreviousStatusStore() {
+
+}
+
+void PreviousStatusStore::addStatus(StatusShow::Type status, const String& message) {
+ //FIXME: remove old entries
+ store_.push_back(TypeStringPair(status, message));
+}
+
+std::vector<TypeStringPair> PreviousStatusStore::exactMatchSuggestions(StatusShow::Type status, const String& message) {
+ std::vector<TypeStringPair> suggestions;
+ suggestions.push_back(TypeStringPair(status, message));
+ return suggestions;
+}
+
+std::vector<TypeStringPair> PreviousStatusStore::getSuggestions(const String& message) {
+ std::vector<TypeStringPair> suggestions;
+ foreach (TypeStringPair status, store_) {
+ if (status.second == message) {
+ suggestions.clear();
+ suggestions.push_back(status);
+ break;
+ } else if (status.second.contains(message)) {
+ suggestions.push_back(status);
+ }
+ }
+ if (suggestions.size() == 0) {
+ TypeStringPair suggestion(StatusShow::Online, message);
+ suggestions.push_back(suggestion);
+ }
+ if (suggestions.size() == 1) {
+ suggestions = exactMatchSuggestions(suggestions[0].first, suggestions[0].second);
+ }
+ return suggestions;
+}
+
+}