diff options
Diffstat (limited to 'qt-models/diveplannermodel.h')
-rw-r--r-- | qt-models/diveplannermodel.h | 117 |
1 files changed, 117 insertions, 0 deletions
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 <QAbstractTableModel> +#include <QDateTime> + +#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<int> &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<QPair<int, int> > 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<divedatapoint> divepoints; + QVector<sample> backupSamples; // For editing added dives. + QVector<QPair<int, int> > oldGases; + QDateTime startTime; + int tempGFHigh; + int tempGFLow; +}; + +#endif |