diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | qt-ui/completionmodels.cpp | 38 | ||||
-rw-r--r-- | qt-ui/completionmodels.h | 34 |
3 files changed, 74 insertions, 0 deletions
@@ -56,6 +56,7 @@ HEADERS = \ qt-ui/printdialog.h \ qt-ui/printoptions.h \ qt-ui/printlayout.h \ + qt-ui/completionmodels.h \ SOURCES = \ @@ -100,6 +101,7 @@ SOURCES = \ qt-ui/printdialog.cpp \ qt-ui/printoptions.cpp \ qt-ui/printlayout.cpp \ + qt-ui/completionmodels.cpp \ $(RESFILE) diff --git a/qt-ui/completionmodels.cpp b/qt-ui/completionmodels.cpp new file mode 100644 index 000000000..a72c1a6c5 --- /dev/null +++ b/qt-ui/completionmodels.cpp @@ -0,0 +1,38 @@ +#include "completionmodels.h" +#include "dive.h" +#include <boost/graph/graph_concepts.hpp> + +#define CREATE_SINGLETON(X) \ +X* X::instance() \ +{ \ + static X* self = new X(); \ + return self; \ +} + +CREATE_SINGLETON(BuddyCompletionModel); +CREATE_SINGLETON(DiveMasterCompletionModel); +CREATE_SINGLETON(LocationCompletionModel); +CREATE_SINGLETON(SuitCompletionModel); + +#undef CREATE_SINGLETON + +#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); \ + } \ + } \ + setStringList(list); \ +} + +CREATE_UPDATE_METHOD(BuddyCompletionModel, buddy); +CREATE_UPDATE_METHOD(DiveMasterCompletionModel, divemaster); +CREATE_UPDATE_METHOD(LocationCompletionModel, location); +CREATE_UPDATE_METHOD(SuitCompletionModel, suit); + diff --git a/qt-ui/completionmodels.h b/qt-ui/completionmodels.h new file mode 100644 index 000000000..42b81946c --- /dev/null +++ b/qt-ui/completionmodels.h @@ -0,0 +1,34 @@ +#ifndef COMPLETIONMODELS_H +#define COMPLETIONMODELS_H + +#include <QStringListModel> + +class BuddyCompletionModel : public QStringListModel { + Q_OBJECT +public: + static BuddyCompletionModel* instance(); + void updateModel(); +}; + +class DiveMasterCompletionModel : public QStringListModel { + Q_OBJECT +public: + static DiveMasterCompletionModel* instance(); + void updateModel(); +}; + +class LocationCompletionModel : public QStringListModel { + Q_OBJECT +public: + static LocationCompletionModel* instance(); + void updateModel(); +}; + +class SuitCompletionModel : public QStringListModel { + Q_OBJECT +public: + static SuitCompletionModel* instance(); + void updateModel(); +}; + +#endif |