diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2015-05-28 14:40:07 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-05-29 14:07:54 -0700 |
commit | 338c0f22aabefcfd5a5e87fceb4c82e73af3f5a9 (patch) | |
tree | 2e7723c95fcd73a0936c97fa8d1f7632b10b5fb2 /qt-models/completionmodels.cpp | |
parent | 29e7459d6bd922043eb0d6ed0445d28e2f6ed10f (diff) | |
download | subsurface-338c0f22aabefcfd5a5e87fceb4c82e73af3f5a9.tar.gz |
Move the models to its own folder
This is an attempt to help share code between the desktop version of
Subsurface and the mobile version.
More code will be moved around and the models will be split in a way that
will help recompile times and also creation of different interfaces for
different form-factors.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/completionmodels.cpp')
-rw-r--r-- | qt-models/completionmodels.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/qt-models/completionmodels.cpp b/qt-models/completionmodels.cpp new file mode 100644 index 000000000..f2e70afd1 --- /dev/null +++ b/qt-models/completionmodels.cpp @@ -0,0 +1,69 @@ +#include "completionmodels.h" +#include "dive.h" +#include "mainwindow.h" + +#define CREATE_UPDATE_METHOD(Class, diveStructMember) \ + void Class::updateModel() \ + { \ + QStringList list; \ + struct dive *dive; \ + int i = 0; \ + for_each_dive (i, dive) \ + { \ + QString buddy(dive->diveStructMember); \ + if (!list.contains(buddy)) { \ + list.append(buddy); \ + } \ + } \ + std::sort(list.begin(), list.end()); \ + setStringList(list); \ + } + +#define CREATE_CSV_UPDATE_METHOD(Class, diveStructMember) \ + void Class::updateModel() \ + { \ + QSet<QString> set; \ + struct dive *dive; \ + int i = 0; \ + for_each_dive (i, dive) \ + { \ + QString buddy(dive->diveStructMember); \ + foreach (const QString &value, buddy.split(",", QString::SkipEmptyParts)) \ + { \ + set.insert(value.trimmed()); \ + } \ + } \ + QStringList setList = set.toList(); \ + std::sort(setList.begin(), setList.end()); \ + setStringList(setList); \ + } + +CREATE_CSV_UPDATE_METHOD(BuddyCompletionModel, buddy); +CREATE_CSV_UPDATE_METHOD(DiveMasterCompletionModel, divemaster); +CREATE_UPDATE_METHOD(SuitCompletionModel, suit); + +void LocationCompletionModel::updateModel() +{ + QStringList list; + struct dive_site *ds; + int i = 0; + for_each_dive_site(i, ds) { + if (!list.contains(ds->name)) + list.append(ds->name); + } + std::sort(list.begin(), list.end()); + setStringList(list); +} + +void TagCompletionModel::updateModel() +{ + if (g_tag_list == NULL) + return; + QStringList list; + struct tag_entry *current_tag_entry = g_tag_list->next; + while (current_tag_entry != NULL) { + list.append(QString(current_tag_entry->tag->name)); + current_tag_entry = current_tag_entry->next; + } + setStringList(list); +} |