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>
This commit is contained in:
Tomaz Canabrava 2013-08-13 10:30:22 -03:00
parent 663ab6e23e
commit 84f73a5fb1
3 changed files with 74 additions and 0 deletions

View file

@ -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)

View file

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

34
qt-ui/completionmodels.h Normal file
View file

@ -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