mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
prefs: add option to display only actually used tanks
A user complained about the default cylinders list. Provide a preferences option to turn this off. When changing the preferences, the tank-info model will be completely rebuilt. Currently, this is a bit crude as this will be done for any preferences change. Suggested-by: Adolph Weidanz <weidanz.adolph@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
11e576ffbf
commit
296a391faa
8 changed files with 47 additions and 7 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
- desktop: add preferences option to disable default cylinder types
|
||||||
- mobile: add location service warning as required by Google Play
|
- mobile: add location service warning as required by Google Play
|
||||||
- mobile: fix manually adding dives in the past [#2971]
|
- mobile: fix manually adding dives in the past [#2971]
|
||||||
|
|
||||||
|
|
|
@ -246,11 +246,8 @@ int find_best_gasmix_match(struct gasmix mix, const struct cylinder_table *cylin
|
||||||
* we should pick up any other names from the dive
|
* we should pick up any other names from the dive
|
||||||
* logs directly.
|
* logs directly.
|
||||||
*/
|
*/
|
||||||
struct tank_info_table tank_info_table;
|
static void add_default_tank_infos(struct tank_info_table *table)
|
||||||
void reset_tank_info_table(struct tank_info_table *table)
|
|
||||||
{
|
{
|
||||||
clear_tank_info_table(table);
|
|
||||||
|
|
||||||
/* Size-only metric cylinders */
|
/* Size-only metric cylinders */
|
||||||
add_tank_info_metric(table, "10.0ℓ", 10000, 0);
|
add_tank_info_metric(table, "10.0ℓ", 10000, 0);
|
||||||
add_tank_info_metric(table, "11.1ℓ", 11100, 0);
|
add_tank_info_metric(table, "11.1ℓ", 11100, 0);
|
||||||
|
@ -301,6 +298,23 @@ void reset_tank_info_table(struct tank_info_table *table)
|
||||||
add_tank_info_metric(table, "D20 232 bar", 40000, 232);
|
add_tank_info_metric(table, "D20 232 bar", 40000, 232);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct tank_info_table tank_info_table;
|
||||||
|
void reset_tank_info_table(struct tank_info_table *table)
|
||||||
|
{
|
||||||
|
clear_tank_info_table(table);
|
||||||
|
if (prefs.display_default_tank_infos)
|
||||||
|
add_default_tank_infos(table);
|
||||||
|
|
||||||
|
/* Add cylinders from dive list */
|
||||||
|
for (int i = 0; i < dive_table.nr; ++i) {
|
||||||
|
const struct dive *dive = dive_table.dives[i];
|
||||||
|
for (int j = 0; j < dive->cylinders.nr; j++) {
|
||||||
|
const cylinder_t *cyl = get_cylinder(dive, j);
|
||||||
|
add_cylinder_description(&cyl->type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We hardcode the most common weight system types
|
* We hardcode the most common weight system types
|
||||||
* This is a bit odd as the weight system types don't usually encode weight
|
* This is a bit odd as the weight system types don't usually encode weight
|
||||||
|
|
|
@ -109,6 +109,7 @@ struct preferences {
|
||||||
// ********** Equipment tab *******
|
// ********** Equipment tab *******
|
||||||
const char *default_cylinder;
|
const char *default_cylinder;
|
||||||
bool display_unused_tanks;
|
bool display_unused_tanks;
|
||||||
|
bool display_default_tank_infos;
|
||||||
|
|
||||||
// ********** General **********
|
// ********** General **********
|
||||||
bool auto_recalculate_thumbnails;
|
bool auto_recalculate_thumbnails;
|
||||||
|
|
|
@ -14,8 +14,9 @@ void qPrefEquipment::loadSync(bool doSync)
|
||||||
{
|
{
|
||||||
disk_default_cylinder(doSync);
|
disk_default_cylinder(doSync);
|
||||||
disk_display_unused_tanks(doSync);
|
disk_display_unused_tanks(doSync);
|
||||||
|
disk_display_default_tank_infos(doSync);
|
||||||
}
|
}
|
||||||
|
|
||||||
HANDLE_PREFERENCE_TXT(Equipment, "default_cylinder", default_cylinder);
|
HANDLE_PREFERENCE_TXT(Equipment, "default_cylinder", default_cylinder);
|
||||||
HANDLE_PREFERENCE_BOOL(Equipment, "display_unused_tanks", display_unused_tanks);
|
HANDLE_PREFERENCE_BOOL(Equipment, "display_unused_tanks", display_unused_tanks);
|
||||||
|
HANDLE_PREFERENCE_BOOL(Equipment, "display_default_tank_infos", display_default_tank_infos);
|
||||||
|
|
|
@ -9,6 +9,7 @@ class qPrefEquipment : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(QString default_cylinder READ default_cylinder WRITE set_default_cylinder NOTIFY default_cylinderChanged)
|
Q_PROPERTY(QString default_cylinder READ default_cylinder WRITE set_default_cylinder NOTIFY default_cylinderChanged)
|
||||||
Q_PROPERTY(bool display_unused_tanks READ display_unused_tanks WRITE set_display_unused_tanks NOTIFY display_unused_tanksChanged)
|
Q_PROPERTY(bool display_unused_tanks READ display_unused_tanks WRITE set_display_unused_tanks NOTIFY display_unused_tanksChanged)
|
||||||
|
Q_PROPERTY(bool display_default_tank_infos READ display_default_tank_infos WRITE set_display_default_tank_infos NOTIFY display_default_tank_infosChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static qPrefEquipment *instance();
|
static qPrefEquipment *instance();
|
||||||
|
@ -21,19 +22,23 @@ public:
|
||||||
public:
|
public:
|
||||||
static QString default_cylinder() { return prefs.default_cylinder; }
|
static QString default_cylinder() { return prefs.default_cylinder; }
|
||||||
static bool display_unused_tanks() { return prefs.display_unused_tanks; }
|
static bool display_unused_tanks() { return prefs.display_unused_tanks; }
|
||||||
|
static bool display_default_tank_infos() { return prefs.display_default_tank_infos; }
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
static void set_default_cylinder(const QString& value);
|
static void set_default_cylinder(const QString& value);
|
||||||
static void set_display_unused_tanks(bool value);
|
static void set_display_unused_tanks(bool value);
|
||||||
|
static void set_display_default_tank_infos(bool value);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void default_cylinderChanged(const QString& value);
|
void default_cylinderChanged(const QString& value);
|
||||||
void display_unused_tanksChanged(bool value);
|
void display_unused_tanksChanged(bool value);
|
||||||
|
void display_default_tank_infosChanged(bool value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
qPrefEquipment() {}
|
qPrefEquipment() {}
|
||||||
static void disk_default_cylinder(bool doSync);
|
static void disk_default_cylinder(bool doSync);
|
||||||
static void disk_display_unused_tanks(bool doSync);
|
static void disk_display_unused_tanks(bool doSync);
|
||||||
|
static void disk_display_default_tank_infos(bool doSync);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -50,6 +50,7 @@ struct preferences default_prefs = {
|
||||||
.display_invalid_dives = false,
|
.display_invalid_dives = false,
|
||||||
.show_sac = false,
|
.show_sac = false,
|
||||||
.display_unused_tanks = false,
|
.display_unused_tanks = false,
|
||||||
|
.display_default_tank_infos = true,
|
||||||
.show_average_depth = true,
|
.show_average_depth = true,
|
||||||
.show_icd = false,
|
.show_icd = false,
|
||||||
.ascrate75 = 9000 / 60,
|
.ascrate75 = 9000 / 60,
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "core/settings/qPrefEquipment.h"
|
#include "core/settings/qPrefEquipment.h"
|
||||||
#include "core/qthelper.h"
|
#include "core/qthelper.h"
|
||||||
#include "core/dive.h"
|
#include "core/dive.h"
|
||||||
|
#include "qt-models/tankinfomodel.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
@ -23,6 +24,7 @@ PreferencesEquipment::~PreferencesEquipment()
|
||||||
void PreferencesEquipment::refreshSettings()
|
void PreferencesEquipment::refreshSettings()
|
||||||
{
|
{
|
||||||
ui->display_unused_tanks->setChecked(prefs.display_unused_tanks);
|
ui->display_unused_tanks->setChecked(prefs.display_unused_tanks);
|
||||||
|
ui->display_default_tank_infos->setChecked(prefs.display_default_tank_infos);
|
||||||
ui->default_cylinder->clear();
|
ui->default_cylinder->clear();
|
||||||
for (int i = 0; i < tank_info_table.nr; i++) {
|
for (int i = 0; i < tank_info_table.nr; i++) {
|
||||||
const tank_info &ti = tank_info_table.infos[i];
|
const tank_info &ti = tank_info_table.infos[i];
|
||||||
|
@ -36,5 +38,15 @@ void PreferencesEquipment::syncSettings()
|
||||||
{
|
{
|
||||||
auto equipment = qPrefEquipment::instance();
|
auto equipment = qPrefEquipment::instance();
|
||||||
qPrefEquipment::set_display_unused_tanks(ui->display_unused_tanks->isChecked());
|
qPrefEquipment::set_display_unused_tanks(ui->display_unused_tanks->isChecked());
|
||||||
|
qPrefEquipment::set_display_default_tank_infos(ui->display_default_tank_infos->isChecked());
|
||||||
equipment->set_default_cylinder(ui->default_cylinder->currentText());
|
equipment->set_default_cylinder(ui->default_cylinder->currentText());
|
||||||
|
|
||||||
|
// In case the user changed the tank info settings,
|
||||||
|
// reset the tank_info_table and inform the TankInfoModel of
|
||||||
|
// the changed table. It is somewhat questionable to do this here.
|
||||||
|
// Moreover, it is a bit crude, as this will be called for *any*
|
||||||
|
// preferences change. Perhaps, the model should listen to the
|
||||||
|
// precise changed signal of the preferences system?
|
||||||
|
reset_tank_info_table(&tank_info_table);
|
||||||
|
TankInfoModel::instance()->update();
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,6 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="display_unused_tanks">
|
<widget class="QCheckBox" name="display_unused_tanks">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -69,7 +68,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="display_default_tank_infos">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show default cylinder sizes in the cylinders selection of the equipment tab</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|
Loading…
Add table
Reference in a new issue