1
0
Fork 0
mirror of https://github.com/subsurface/subsurface.git synced 2025-02-19 22:16:15 +00:00
subsurface/qt-ui/completionmodels.cpp
Tomaz Canabrava 84f73a5fb1 Added classes to handle the Completion of Dive Editions.
Added classes to handle the completion of dive editions, the
classes are BuddyCompletionModel, DiveMasterCompletionModel,
SuitCompletionModel and LocationCompletionModel, thanks to
plain old C macros, code got really small. and I hope the
logic is better than the Gtk version. :)
Now next step is to integrate it to the Ui. shouldn't be hard.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-08-13 10:30:22 -03:00

38 lines
914 B
C++

#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);