summaryrefslogtreecommitdiffstats
path: root/qt-models/models.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models/models.cpp')
-rw-r--r--qt-models/models.cpp283
1 files changed, 0 insertions, 283 deletions
diff --git a/qt-models/models.cpp b/qt-models/models.cpp
index 5b0fc1a0f..cd62dfc67 100644
--- a/qt-models/models.cpp
+++ b/qt-models/models.cpp
@@ -36,289 +36,6 @@ const QPixmap &trashIcon()
return trash;
}
-WeightModel::WeightModel(QObject *parent) : CleanerTableModel(parent),
- changed(false),
- rows(0)
-{
- //enum Column {REMOVE, TYPE, WEIGHT};
- setHeaderDataStrings(QStringList() << tr("") << tr("Type") << tr("Weight"));
-}
-
-weightsystem_t *WeightModel::weightSystemAt(const QModelIndex &index)
-{
- return &displayed_dive.weightsystem[index.row()];
-}
-
-void WeightModel::remove(const QModelIndex &index)
-{
- if (index.column() != REMOVE) {
- return;
- }
- beginRemoveRows(QModelIndex(), index.row(), index.row()); // yah, know, ugly.
- rows--;
- remove_weightsystem(&displayed_dive, index.row());
- changed = true;
- endRemoveRows();
-}
-
-void WeightModel::clear()
-{
- if (rows > 0) {
- beginRemoveRows(QModelIndex(), 0, rows - 1);
- endRemoveRows();
- }
-}
-
-QVariant WeightModel::data(const QModelIndex &index, int role) const
-{
- QVariant ret;
- if (!index.isValid() || index.row() >= MAX_WEIGHTSYSTEMS)
- return ret;
-
- weightsystem_t *ws = &displayed_dive.weightsystem[index.row()];
-
- switch (role) {
- case Qt::FontRole:
- ret = defaultModelFont();
- break;
- case Qt::TextAlignmentRole:
- ret = Qt::AlignCenter;
- break;
- case Qt::DisplayRole:
- case Qt::EditRole:
- switch (index.column()) {
- case TYPE:
- ret = gettextFromC::instance()->tr(ws->description);
- break;
- case WEIGHT:
- ret = get_weight_string(ws->weight, true);
- break;
- }
- break;
- case Qt::DecorationRole:
- if (index.column() == REMOVE)
- ret = trashIcon();
- break;
- case Qt::SizeHintRole:
- if (index.column() == REMOVE)
- ret = trashIcon().size();
- break;
- case Qt::ToolTipRole:
- if (index.column() == REMOVE)
- ret = tr("Clicking here will remove this weight system.");
- break;
- }
- return ret;
-}
-
-// this is our magic 'pass data in' function that allows the delegate to get
-// the data here without silly unit conversions;
-// so we only implement the two columns we care about
-void WeightModel::passInData(const QModelIndex &index, const QVariant &value)
-{
- weightsystem_t *ws = &displayed_dive.weightsystem[index.row()];
- if (index.column() == WEIGHT) {
- if (ws->weight.grams != value.toInt()) {
- ws->weight.grams = value.toInt();
- dataChanged(index, index);
- }
- }
-}
-//TODO: Move to C
-weight_t string_to_weight(const char *str)
-{
- const char *end;
- double value = strtod_flags(str, &end, 0);
- QString rest = QString(end).trimmed();
- QString local_kg = QObject::tr("kg");
- QString local_lbs = QObject::tr("lbs");
- weight_t weight;
-
- if (rest.startsWith("kg") || rest.startsWith(local_kg))
- goto kg;
- // using just "lb" instead of "lbs" is intentional - some people might enter the singular
- if (rest.startsWith("lb") || rest.startsWith(local_lbs))
- goto lbs;
- if (prefs.units.weight == prefs.units.LBS)
- goto lbs;
-kg:
- weight.grams = rint(value * 1000);
- return weight;
-lbs:
- weight.grams = lbs_to_grams(value);
- return weight;
-}
-
-//TODO: Move to C.
-depth_t string_to_depth(const char *str)
-{
- const char *end;
- double value = strtod_flags(str, &end, 0);
- QString rest = QString(end).trimmed();
- QString local_ft = QObject::tr("ft");
- QString local_m = QObject::tr("m");
- depth_t depth;
-
- if (rest.startsWith("m") || rest.startsWith(local_m))
- goto m;
- if (rest.startsWith("ft") || rest.startsWith(local_ft))
- goto ft;
- if (prefs.units.length == prefs.units.FEET)
- goto ft;
-m:
- depth.mm = rint(value * 1000);
- return depth;
-ft:
- depth.mm = feet_to_mm(value);
- return depth;
-}
-
-//TODO: Move to C.
-pressure_t string_to_pressure(const char *str)
-{
- const char *end;
- double value = strtod_flags(str, &end, 0);
- QString rest = QString(end).trimmed();
- QString local_psi = QObject::tr("psi");
- QString local_bar = QObject::tr("bar");
- pressure_t pressure;
-
- if (rest.startsWith("bar") || rest.startsWith(local_bar))
- goto bar;
- if (rest.startsWith("psi") || rest.startsWith(local_psi))
- goto psi;
- if (prefs.units.pressure == prefs.units.PSI)
- goto psi;
-bar:
- pressure.mbar = rint(value * 1000);
- return pressure;
-psi:
- pressure.mbar = psi_to_mbar(value);
- return pressure;
-}
-
-//TODO: Move to C.
-/* Imperial cylinder volumes need working pressure to be meaningful */
-volume_t string_to_volume(const char *str, pressure_t workp)
-{
- const char *end;
- double value = strtod_flags(str, &end, 0);
- QString rest = QString(end).trimmed();
- QString local_l = QObject::tr("l");
- QString local_cuft = QObject::tr("cuft");
- volume_t volume;
-
- if (rest.startsWith("l") || rest.startsWith("ℓ") || rest.startsWith(local_l))
- goto l;
- if (rest.startsWith("cuft") || rest.startsWith(local_cuft))
- goto cuft;
- /*
- * If we don't have explicit units, and there is no working
- * pressure, we're going to assume "liter" even in imperial
- * measurements.
- */
- if (!workp.mbar)
- goto l;
- if (prefs.units.volume == prefs.units.LITER)
- goto l;
-cuft:
- if (workp.mbar)
- value /= bar_to_atm(workp.mbar / 1000.0);
- value = cuft_to_l(value);
-l:
- volume.mliter = rint(value * 1000);
- return volume;
-}
-
-//TODO: Move to C.
-fraction_t string_to_fraction(const char *str)
-{
- const char *end;
- double value = strtod_flags(str, &end, 0);
- fraction_t fraction;
-
- fraction.permille = rint(value * 10);
- return fraction;
-}
-
-bool WeightModel::setData(const QModelIndex &index, const QVariant &value, int role)
-{
- QString vString = value.toString();
- weightsystem_t *ws = &displayed_dive.weightsystem[index.row()];
- switch (index.column()) {
- case TYPE:
- if (!value.isNull()) {
- //TODO: C-function weigth_system_set_description ?
- if (!ws->description || gettextFromC::instance()->tr(ws->description) != vString) {
- // loop over translations to see if one matches
- int i = -1;
- while (ws_info[++i].name) {
- if (gettextFromC::instance()->tr(ws_info[i].name) == vString) {
- ws->description = copy_string(ws_info[i].name);
- break;
- }
- }
- if (ws_info[i].name == NULL) // didn't find a match
- ws->description = strdup(vString.toUtf8().constData());
- changed = true;
- }
- }
- break;
- case WEIGHT:
- if (CHANGED()) {
- ws->weight = string_to_weight(vString.toUtf8().data());
- // now update the ws_info
- changed = true;
- WSInfoModel *wsim = WSInfoModel::instance();
- QModelIndexList matches = wsim->match(wsim->index(0, 0), Qt::DisplayRole, gettextFromC::instance()->tr(ws->description));
- if (!matches.isEmpty())
- wsim->setData(wsim->index(matches.first().row(), WSInfoModel::GR), ws->weight.grams);
- }
- break;
- }
- dataChanged(index, index);
- return true;
-}
-
-Qt::ItemFlags WeightModel::flags(const QModelIndex &index) const
-{
- if (index.column() == REMOVE)
- return Qt::ItemIsEnabled;
- return QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
-}
-
-int WeightModel::rowCount(const QModelIndex &parent) const
-{
- return rows;
-}
-
-void WeightModel::add()
-{
- if (rows >= MAX_WEIGHTSYSTEMS)
- return;
-
- int row = rows;
- beginInsertRows(QModelIndex(), row, row);
- rows++;
- changed = true;
- endInsertRows();
-}
-
-void WeightModel::updateDive()
-{
- clear();
- rows = 0;
- for (int i = 0; i < MAX_WEIGHTSYSTEMS; i++) {
- if (!weightsystem_none(&displayed_dive.weightsystem[i])) {
- rows = i + 1;
- }
- }
- if (rows > 0) {
- beginInsertRows(QModelIndex(), 0, rows - 1);
- endInsertRows();
- }
-}
-
//#################################################################################################
//#
//# Tree Model - a Basic Tree Model so I don't need to kill myself repeating this for every model.