mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Cleanup: use getDiveSelection() for shifting time
There are two cases where dive-times are shifted: in an explicit dialog and when editing the date/time of a dive. In each of these cases, the selected dives were collected manually. Instead use the getDiveSelection() function. Since this returns a std::vector, change the argument of Command::ShiftTime() to such a std::vector. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
62adc24d15
commit
c495a49b1b
6 changed files with 14 additions and 30 deletions
|
@ -24,7 +24,7 @@ void deleteDive(const QVector<struct dive*> &divesToDelete)
|
||||||
execute(new DeleteDive(divesToDelete));
|
execute(new DeleteDive(divesToDelete));
|
||||||
}
|
}
|
||||||
|
|
||||||
void shiftTime(const QVector<dive *> &changedDives, int amount)
|
void shiftTime(const std::vector<dive *> &changedDives, int amount)
|
||||||
{
|
{
|
||||||
execute(new ShiftTime(changedDives, amount));
|
execute(new ShiftTime(changedDives, amount));
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ void addDive(dive *d, bool autogroup, bool newNumber);
|
||||||
void importDives(struct dive_table *dives, struct trip_table *trips,
|
void importDives(struct dive_table *dives, struct trip_table *trips,
|
||||||
struct dive_site_table *sites, int flags, const QString &source); // The tables are consumed!
|
struct dive_site_table *sites, int flags, const QString &source); // The tables are consumed!
|
||||||
void deleteDive(const QVector<struct dive*> &divesToDelete);
|
void deleteDive(const QVector<struct dive*> &divesToDelete);
|
||||||
void shiftTime(const QVector<dive *> &changedDives, int amount);
|
void shiftTime(const std::vector<dive *> &changedDives, int amount);
|
||||||
void renumberDives(const QVector<QPair<dive *, int>> &divesToRenumber);
|
void renumberDives(const QVector<QPair<dive *, int>> &divesToRenumber);
|
||||||
void removeDivesFromTrip(const QVector<dive *> &divesToRemove);
|
void removeDivesFromTrip(const QVector<dive *> &divesToRemove);
|
||||||
void removeAutogenTrips();
|
void removeAutogenTrips();
|
||||||
|
|
|
@ -579,10 +579,10 @@ void DeleteDive::redoit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ShiftTime::ShiftTime(const QVector<dive *> &changedDives, int amount)
|
ShiftTime::ShiftTime(std::vector<dive *> changedDives, int amount)
|
||||||
: diveList(changedDives), timeChanged(amount)
|
: diveList(changedDives), timeChanged(amount)
|
||||||
{
|
{
|
||||||
setText(tr("shift time of %n dives", "", changedDives.count()));
|
setText(tr("shift time of %n dives", "", changedDives.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShiftTime::redoit()
|
void ShiftTime::redoit()
|
||||||
|
@ -601,11 +601,12 @@ void ShiftTime::redoit()
|
||||||
sort_dive_table(&trip->dives); // Keep the trip-table in order
|
sort_dive_table(&trip->dives); // Keep the trip-table in order
|
||||||
|
|
||||||
// Send signals
|
// Send signals
|
||||||
emit diveListNotifier.divesTimeChanged(timeChanged, diveList);
|
QVector<dive *> dives = QVector<dive *>::fromStdVector(diveList);
|
||||||
emit diveListNotifier.divesChanged(diveList, DiveField::DATETIME);
|
emit diveListNotifier.divesTimeChanged(timeChanged, dives);
|
||||||
|
emit diveListNotifier.divesChanged(dives, DiveField::DATETIME);
|
||||||
|
|
||||||
// Select the changed dives
|
// Select the changed dives
|
||||||
setSelection(std::vector<dive *>(diveList.begin(), diveList.end()), diveList[0]);
|
setSelection(diveList, diveList[0]);
|
||||||
|
|
||||||
// Negate the time-shift so that the next call does the reverse
|
// Negate the time-shift so that the next call does the reverse
|
||||||
timeChanged = -timeChanged;
|
timeChanged = -timeChanged;
|
||||||
|
@ -613,7 +614,7 @@ void ShiftTime::redoit()
|
||||||
|
|
||||||
bool ShiftTime::workToBeDone()
|
bool ShiftTime::workToBeDone()
|
||||||
{
|
{
|
||||||
return !diveList.isEmpty();
|
return !diveList.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShiftTime::undoit()
|
void ShiftTime::undoit()
|
||||||
|
|
|
@ -133,14 +133,14 @@ private:
|
||||||
|
|
||||||
class ShiftTime : public DiveListBase {
|
class ShiftTime : public DiveListBase {
|
||||||
public:
|
public:
|
||||||
ShiftTime(const QVector<dive *> &changedDives, int amount);
|
ShiftTime(std::vector<dive *> changedDives, int amount);
|
||||||
private:
|
private:
|
||||||
void undoit() override;
|
void undoit() override;
|
||||||
void redoit() override;
|
void redoit() override;
|
||||||
bool workToBeDone() override;
|
bool workToBeDone() override;
|
||||||
|
|
||||||
// For redo and undo
|
// For redo and undo
|
||||||
QVector<dive *> diveList;
|
std::vector<dive *> diveList;
|
||||||
int timeChanged;
|
int timeChanged;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -222,17 +222,8 @@ void ShiftTimesDialog::buttonClicked(QAbstractButton *button)
|
||||||
amount = ui.timeEdit->time().hour() * 3600 + ui.timeEdit->time().minute() * 60;
|
amount = ui.timeEdit->time().hour() * 3600 + ui.timeEdit->time().minute() * 60;
|
||||||
if (ui.backwards->isChecked())
|
if (ui.backwards->isChecked())
|
||||||
amount *= -1;
|
amount *= -1;
|
||||||
if (amount != 0) {
|
if (amount != 0)
|
||||||
// DANGER, DANGER - this could get our dive_table unsorted...
|
Command::shiftTime(getDiveSelection(), amount);
|
||||||
int i;
|
|
||||||
struct dive *d;
|
|
||||||
QVector<dive *> affectedDives;
|
|
||||||
for_each_dive (i, d) {
|
|
||||||
if (d->selected)
|
|
||||||
affectedDives.append(d);
|
|
||||||
}
|
|
||||||
Command::shiftTime(affectedDives, amount);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -677,18 +677,10 @@ void MainTab::on_depth_editingFinished()
|
||||||
// all dives are shifted by an offset.
|
// all dives are shifted by an offset.
|
||||||
static void shiftTime(QDateTime &dateTime)
|
static void shiftTime(QDateTime &dateTime)
|
||||||
{
|
{
|
||||||
QVector<dive *> dives;
|
|
||||||
struct dive *d;
|
|
||||||
int i;
|
|
||||||
for_each_dive (i, d) {
|
|
||||||
if (d->selected)
|
|
||||||
dives.append(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
timestamp_t when = dateTime.toTime_t();
|
timestamp_t when = dateTime.toTime_t();
|
||||||
if (current_dive && current_dive->when != when) {
|
if (current_dive && current_dive->when != when) {
|
||||||
timestamp_t offset = when - current_dive->when;
|
timestamp_t offset = when - current_dive->when;
|
||||||
Command::shiftTime(dives, (int)offset);
|
Command::shiftTime(getDiveSelection(), (int)offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue