diff options
-rw-r--r-- | dive.h | 8 | ||||
-rw-r--r-- | equipment.c | 18 | ||||
-rw-r--r-- | qt-ui/mainwindow.cpp | 4 | ||||
-rw-r--r-- | qt-ui/modeldelegates.cpp | 1 | ||||
-rw-r--r-- | qt-ui/models.cpp | 34 | ||||
-rw-r--r-- | qt-ui/models.h | 1 |
6 files changed, 49 insertions, 17 deletions
@@ -732,17 +732,17 @@ struct event *get_next_event(struct event *event, char *name); * dialog */ -struct tank_info { +struct tank_info_t { const char *name; int cuft, ml, psi, bar; }; -extern struct tank_info tank_info[100]; +extern struct tank_info_t tank_info[100]; -struct ws_info { +struct ws_info_t { const char *name; int grams; }; -extern struct ws_info ws_info[100]; +extern struct ws_info_t ws_info[100]; extern bool cylinder_nodata(cylinder_t *cyl); extern bool cylinder_none(void *_data); diff --git a/equipment.c b/equipment.c index cd3984c86..0c5939ff3 100644 --- a/equipment.c +++ b/equipment.c @@ -473,11 +473,21 @@ void add_cylinder_description(cylinder_type_t *type) void add_weightsystem_description(weightsystem_t *weightsystem) { const char *desc; + int i; desc = weightsystem->description; if (!desc) return; - /* now do something with it... */ + for (i = 0; i < 100 && ws_info[i].name != NULL; i++) { + if (strcmp(ws_info[i].name, desc) == 0) { + ws_info[i].grams = weightsystem->weight.grams; + return; + } + } + if (i < 100) { + ws_info[i].name = desc; + ws_info[i].grams = weightsystem->weight.grams; + } } #endif /* USE_GTK_UI */ @@ -821,7 +831,7 @@ static void record_weightsystem_changes(weightsystem_t *ws, struct ws_widget *we * we should pick up any other names from the dive * logs directly. */ -struct tank_info tank_info[100] = { +struct tank_info_t tank_info[100] = { /* Need an empty entry for the no-cylinder case */ { "", }, @@ -915,7 +925,7 @@ bad_tank_info: * We hardcode the most common weight system types * This is a bit odd as the weight system types don't usually encode weight */ -struct ws_info ws_info[100] = { +struct ws_info_t ws_info[100] = { { N_("integrated"), 0 }, { N_("belt"), 0 }, { N_("ankle"), 0 }, @@ -927,7 +937,7 @@ struct ws_info ws_info[100] = { static void fill_ws_list(GtkListStore *store) { GtkTreeIter iter; - struct ws_info *info = ws_info; + struct ws_info_t *info = ws_info; while (info->name) { gtk_list_store_append(store, &iter); diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 4eead9616..f2f95897a 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -744,6 +744,8 @@ void MainWindow::importFiles(const QStringList fileNames) ui->globe->reload(); ui->ListWidget->reload(DiveTripModel::TREE); ui->ListWidget->setFocus(); + WSInfoModel *wsim = WSInfoModel::instance(); + wsim->updateInfo(); } void MainWindow::loadFiles(const QStringList fileNames) @@ -769,4 +771,6 @@ void MainWindow::loadFiles(const QStringList fileNames) ui->globe->reload(); ui->ListWidget->reload(DiveTripModel::TREE); ui->ListWidget->setFocus(); + WSInfoModel *wsim = WSInfoModel::instance(); + wsim->updateInfo(); } diff --git a/qt-ui/modeldelegates.cpp b/qt-ui/modeldelegates.cpp index 3549625f3..13201e436 100644 --- a/qt-ui/modeldelegates.cpp +++ b/qt-ui/modeldelegates.cpp @@ -238,7 +238,6 @@ void WSInfoDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, co } mymodel->setData(IDX(WeightModel::TYPE), v, Qt::EditRole); mymodel->passInData(IDX(WeightModel::WEIGHT), grams); - qDebug() << "Fixme, every weight is 0.0 grams. see:" << grams; } WSInfoDelegate::WSInfoDelegate(QObject* parent): ComboBoxDelegate(WSInfoModel::instance(), parent) diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 25429154f..479f58582 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -549,7 +549,7 @@ bool WSInfoModel::insertRows(int row, int count, const QModelIndex& parent) bool WSInfoModel::setData(const QModelIndex& index, const QVariant& value, int role) { - struct ws_info *info = &ws_info[index.row()]; + struct ws_info_t *info = &ws_info[index.row()]; switch(index.column()) { case DESCRIPTION: info->name = strdup(value.toByteArray().data()); @@ -577,7 +577,7 @@ QVariant WSInfoModel::data(const QModelIndex& index, int role) const if (!index.isValid()) { return ret; } - struct ws_info *info = &ws_info[index.row()]; + struct ws_info_t *info = &ws_info[index.row()]; int gr = info->grams; switch(role){ @@ -636,7 +636,25 @@ const QString& WSInfoModel::biggerString() const WSInfoModel::WSInfoModel() : QAbstractTableModel(), rows(-1) { - struct ws_info *info = ws_info; + struct ws_info_t *info = ws_info; + for (info = ws_info; info->name; info++, rows++){ + QString wsInfoName(info->name); + if( wsInfoName.count() > biggerEntry.count()){ + biggerEntry = wsInfoName; + } + } + + if (rows > -1) { + beginInsertRows(QModelIndex(), 0, rows); + endInsertRows(); + } +} + +void WSInfoModel::updateInfo() +{ + struct ws_info_t *info = ws_info; + beginRemoveRows(QModelIndex(), 0, this->rows); + endRemoveRows(); for (info = ws_info; info->name; info++, rows++){ QString wsInfoName(info->name); if( wsInfoName.count() > biggerEntry.count()){ @@ -657,7 +675,7 @@ void WSInfoModel::update() endRemoveRows(); rows = -1; } - struct ws_info *info = ws_info; + struct ws_info_t *info = ws_info; for (info = ws_info; info->name; info++, rows++); if (rows > -1) { @@ -687,7 +705,7 @@ bool TankInfoModel::insertRows(int row, int count, const QModelIndex& parent) bool TankInfoModel::setData(const QModelIndex& index, const QVariant& value, int role) { - struct tank_info *info = &tank_info[index.row()]; + struct tank_info_t *info = &tank_info[index.row()]; switch(index.column()) { case DESCRIPTION: info->name = strdup(value.toByteArray().data()); @@ -722,7 +740,7 @@ QVariant TankInfoModel::data(const QModelIndex& index, int role) const return defaultModelFont(); } if (role == Qt::DisplayRole || role == Qt::EditRole) { - struct tank_info *info = &tank_info[index.row()]; + struct tank_info_t *info = &tank_info[index.row()]; int ml = info->ml; double bar = (info->psi) ? psi_to_bar(info->psi) : info->bar; @@ -779,7 +797,7 @@ int TankInfoModel::rowCount(const QModelIndex& parent) const TankInfoModel::TankInfoModel() : QAbstractTableModel(), rows(-1) { - struct tank_info *info = tank_info; + struct tank_info_t *info = tank_info; for (info = tank_info; info->name; info++, rows++){ QString infoName(info->name); if (infoName.count() > biggerEntry.count()){ @@ -800,7 +818,7 @@ void TankInfoModel::update() endRemoveRows(); rows = -1; } - struct tank_info *info = tank_info; + struct tank_info_t *info = tank_info; for (info = tank_info; info->name; info++, rows++); if (rows > -1) { diff --git a/qt-ui/models.h b/qt-ui/models.h index 22cfe4b7e..c60856478 100644 --- a/qt-ui/models.h +++ b/qt-ui/models.h @@ -59,6 +59,7 @@ public: const QString& biggerString() const; void clear(); void update(); + void updateInfo(); private: int rows; QString biggerEntry; |