From f432b764e78ac3d66f5ab1bfc7c18fbdb75624e5 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Thu, 28 May 2015 16:23:49 -0300 Subject: Move DivePlannerModel and CylinderModel to qt-models Still trying to make it easier for the Mobile Port: This patch is a bit bigger than I hopped, but it was the smallest that I could get. A lot of TODO items where added where I broke the code because the current implementation would break the QML implementtion on the designer. I'll most probably fix those myself when I finish the transition to the models to the new folder. I only moved both models at once because there's an interdependency between them (seems inevitable, tough, but I'll take a better look at it later). Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- qt-models/diveplannermodel.h | 117 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 qt-models/diveplannermodel.h (limited to 'qt-models/diveplannermodel.h') diff --git a/qt-models/diveplannermodel.h b/qt-models/diveplannermodel.h new file mode 100644 index 000000000..403b86b6d --- /dev/null +++ b/qt-models/diveplannermodel.h @@ -0,0 +1,117 @@ +#ifndef DIVEPLANNERMODEL_H +#define DIVEPLANNERMODEL_H + +#include +#include + +#include "dive.h" + +class DivePlannerPointsModel : public QAbstractTableModel { + Q_OBJECT +public: + static DivePlannerPointsModel *instance(); + enum Sections { + REMOVE, + DEPTH, + DURATION, + RUNTIME, + GAS, + CCSETPOINT, + COLUMNS + }; + enum Mode { + NOTHING, + PLAN, + ADD + }; + virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; + virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + virtual Qt::ItemFlags flags(const QModelIndex &index) const; + void gaschange(const QModelIndex &index, QString newgas); + void removeSelectedPoints(const QVector &rows); + void setPlanMode(Mode mode); + bool isPlanner(); + void createSimpleDive(); + void setupStartTime(); + void clear(); + Mode currentMode() const; + bool setRecalc(bool recalc); + bool recalcQ(); + void tanksUpdated(); + void rememberTanks(); + bool tankInUse(struct gasmix gasmix); + void setupCylinders(); + /** + * @return the row number. + */ + void editStop(int row, divedatapoint newData); + divedatapoint at(int row); + int size(); + struct diveplan &getDiveplan(); + QStringList &getGasList(); + QVector > collectGases(dive *d); + int lastEnteredPoint(); + void removeDeco(); + static bool addingDeco; + +public +slots: + int addStop(int millimeters = 0, int seconds = 0, struct gasmix *gas = 0, int ccpoint = 0, bool entered = true); + void addCylinder_clicked(); + void setGFHigh(const int gfhigh); + void triggerGFHigh(); + void setGFLow(const int ghflow); + void triggerGFLow(); + void setSurfacePressure(int pressure); + void setSalinity(int salinity); + int getSurfacePressure(); + void setBottomSac(double sac); + void setDecoSac(double sac); + void setStartTime(const QTime &t); + void setStartDate(const QDate &date); + void setLastStop6m(bool value); + void setDropStoneMode(bool value); + void setVerbatim(bool value); + void setDisplayRuntime(bool value); + void setDisplayDuration(bool value); + void setDisplayTransitions(bool value); + void setRecreationalMode(bool value); + void setSafetyStop(bool value); + void savePlan(); + void saveDuplicatePlan(); + void remove(const QModelIndex &index); + void cancelPlan(); + void createTemporaryPlan(); + void deleteTemporaryPlan(); + void loadFromDive(dive *d); + void emitDataChanged(); + void setRebreatherMode(int mode); + void setReserveGas(int reserve); + +signals: + void planCreated(); + void planCanceled(); + void cylinderModelEdited(); + void startTimeChanged(QDateTime); + void recreationChanged(bool); + void calculatedPlanNotes(const QString& notes); + +private: + explicit DivePlannerPointsModel(QObject *parent = 0); + bool addGas(struct gasmix mix); + void createPlan(bool replanCopy); + struct diveplan diveplan; + Mode mode; + bool recalc; + QVector divepoints; + QVector backupSamples; // For editing added dives. + QVector > oldGases; + QDateTime startTime; + int tempGFHigh; + int tempGFLow; +}; + +#endif -- cgit v1.2.3-70-g09d2