mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 07:23:23 +00:00
More multi-edit fixes
This time for values that aren't simply text. For normal integers this is rather straight forward. For the 'when' timestamp we simply assume that this is a shift in time. What is still missing is consistent handling of the three fields that are implemented as tags: tags, buddy and divemaster. We have special code for tags that makes no sense in a multi-edit scenario. And we treat divemaster and buddy as a single string - which kinda works but treats "Bill, Joe" and "Joe, Bill" as different. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
20595ac0d7
commit
024420a60d
1 changed files with 19 additions and 8 deletions
|
@ -864,6 +864,11 @@ void MainTab::rejectChanges()
|
||||||
mydive->what = strdup(textByteArray.data()); \
|
mydive->what = strdup(textByteArray.data()); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define EDIT_VALUE(what, value) \
|
||||||
|
if (mydive->what == current_dive->what) { \
|
||||||
|
mydive->what = value; \
|
||||||
|
}
|
||||||
|
|
||||||
#define EDIT_TRIP_TEXT(what, text) \
|
#define EDIT_TRIP_TEXT(what, text) \
|
||||||
QByteArray textByteArray = text.toUtf8(); \
|
QByteArray textByteArray = text.toUtf8(); \
|
||||||
free(what); \
|
free(what); \
|
||||||
|
@ -900,14 +905,14 @@ void MainTab::on_divemaster_textChanged()
|
||||||
|
|
||||||
void MainTab::on_airtemp_textChanged(const QString &text)
|
void MainTab::on_airtemp_textChanged(const QString &text)
|
||||||
{
|
{
|
||||||
EDIT_SELECTED_DIVES(mydive->airtemp.mkelvin = parseTemperatureToMkelvin(text));
|
EDIT_SELECTED_DIVES(EDIT_VALUE(airtemp.mkelvin, parseTemperatureToMkelvin(text)));
|
||||||
markChangedWidget(ui.airtemp);
|
markChangedWidget(ui.airtemp);
|
||||||
validate_temp_field(ui.airtemp, text);
|
validate_temp_field(ui.airtemp, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainTab::on_watertemp_textChanged(const QString &text)
|
void MainTab::on_watertemp_textChanged(const QString &text)
|
||||||
{
|
{
|
||||||
EDIT_SELECTED_DIVES(mydive->watertemp.mkelvin = parseTemperatureToMkelvin(text));
|
EDIT_SELECTED_DIVES(EDIT_VALUE(watertemp.mkelvin, parseTemperatureToMkelvin(text)));
|
||||||
markChangedWidget(ui.watertemp);
|
markChangedWidget(ui.watertemp);
|
||||||
validate_temp_field(ui.watertemp, text);
|
validate_temp_field(ui.watertemp, text);
|
||||||
}
|
}
|
||||||
|
@ -939,14 +944,18 @@ void MainTab::validate_temp_field(QLineEdit *tempField,const QString &text)
|
||||||
missing_precision = false;
|
missing_precision = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// changing the time stamp on multiple dives really needs to be a relative shift
|
||||||
void MainTab::on_dateTimeEdit_dateTimeChanged(const QDateTime &datetime)
|
void MainTab::on_dateTimeEdit_dateTimeChanged(const QDateTime &datetime)
|
||||||
{
|
{
|
||||||
QDateTime dateTimeUtc(datetime);
|
QDateTime dateTimeUtc(datetime);
|
||||||
dateTimeUtc.setTimeSpec(Qt::UTC);
|
dateTimeUtc.setTimeSpec(Qt::UTC);
|
||||||
EDIT_SELECTED_DIVES(mydive->when = dateTimeUtc.toTime_t());
|
time_t offset = current_dive->when - dateTimeUtc.toTime_t();
|
||||||
|
EDIT_SELECTED_DIVES(mydive->when -= offset);
|
||||||
markChangedWidget(ui.dateTimeEdit);
|
markChangedWidget(ui.dateTimeEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// changing the tags on multiple dives is semantically strange - what's the right thing to do?
|
||||||
void MainTab::saveTags()
|
void MainTab::saveTags()
|
||||||
{
|
{
|
||||||
EDIT_SELECTED_DIVES(
|
EDIT_SELECTED_DIVES(
|
||||||
|
@ -1017,9 +1026,6 @@ void MainTab::on_notes_textChanged()
|
||||||
markChangedWidget(ui.notes);
|
markChangedWidget(ui.notes);
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef EDIT_TEXT
|
|
||||||
#undef EDIT_TRIP_TEXT
|
|
||||||
|
|
||||||
void MainTab::on_coordinates_textChanged(const QString &text)
|
void MainTab::on_coordinates_textChanged(const QString &text)
|
||||||
{
|
{
|
||||||
bool gpsChanged = false;
|
bool gpsChanged = false;
|
||||||
|
@ -1036,14 +1042,19 @@ void MainTab::on_coordinates_textChanged(const QString &text)
|
||||||
|
|
||||||
void MainTab::on_rating_valueChanged(int value)
|
void MainTab::on_rating_valueChanged(int value)
|
||||||
{
|
{
|
||||||
EDIT_SELECTED_DIVES(mydive->rating = value);
|
EDIT_SELECTED_DIVES(EDIT_VALUE(rating, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainTab::on_visibility_valueChanged(int value)
|
void MainTab::on_visibility_valueChanged(int value)
|
||||||
{
|
{
|
||||||
EDIT_SELECTED_DIVES(mydive->visibility = value);
|
EDIT_SELECTED_DIVES(EDIT_VALUE(visibility, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef EDIT_SELECTED_DIVES
|
||||||
|
#undef EDIT_TEXT
|
||||||
|
#undef EDIT_TRIP_TEXT
|
||||||
|
#undef EDIT_VALUE
|
||||||
|
|
||||||
void MainTab::editCylinderWidget(const QModelIndex &index)
|
void MainTab::editCylinderWidget(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
if (cylindersModel->changed && editMode == NONE) {
|
if (cylindersModel->changed && editMode == NONE) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue