mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
Dive list: add context menu function to renumber dive(s)
No attempt is made to ensure that what the user does is sane. So this can result in duplicate numbers, non-consecutive numbers, non-monotonous numbers, whatever floats the users boat. You can renumber a single dive or all selected dives (with a starting number given that is applied to the oldest selected dive and then for each newer selected dive that number is incremented by one). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
4d14059d7c
commit
b303f217a9
7 changed files with 32 additions and 10 deletions
2
dive.h
2
dive.h
|
@ -554,7 +554,7 @@ extern unsigned int dc_airtemp(struct divecomputer *dc);
|
|||
extern unsigned int dc_watertemp(struct divecomputer *dc);
|
||||
extern struct dive *merge_dives(struct dive *a, struct dive *b, int offset, bool prefer_downloaded);
|
||||
extern struct dive *try_to_merge(struct dive *a, struct dive *b, bool prefer_downloaded);
|
||||
extern void renumber_dives(int nr);
|
||||
extern void renumber_dives(int start_nr, bool selected_only);
|
||||
extern void copy_events(struct dive *s, struct dive *d);
|
||||
extern void copy_cylinders(struct dive *s, struct dive *d);
|
||||
extern void copy_samples(struct dive *s, struct dive *d);
|
||||
|
|
|
@ -529,6 +529,12 @@ void DiveListView::mergeDives()
|
|||
MainWindow::instance()->refreshDisplay();
|
||||
}
|
||||
|
||||
void DiveListView::renumberDives()
|
||||
{
|
||||
RenumberDialog::instance()->renumberOnlySelected();
|
||||
RenumberDialog::instance()->show();
|
||||
}
|
||||
|
||||
void DiveListView::merge_trip(const QModelIndex &a, int offset)
|
||||
{
|
||||
int i = a.row() + offset;
|
||||
|
@ -768,6 +774,7 @@ void DiveListView::contextMenuEvent(QContextMenuEvent *event)
|
|||
if (amount_selected > 1 && consecutive_selected())
|
||||
popup.addAction(tr("merge selected dives"), this, SLOT(mergeDives()));
|
||||
if (amount_selected >= 1) {
|
||||
popup.addAction(tr("renumber dive(s)"), this, SLOT(renumberDives()));
|
||||
popup.addAction(tr("save As"), this, SLOT(saveSelectedDivesAs()));
|
||||
popup.addAction(tr("export As UDDF"), this, SLOT(exportSelectedDivesAsUDDF()));
|
||||
popup.addAction(tr("export As CSV"), this, SLOT(exportSelectedDivesAsCSV()));
|
||||
|
|
|
@ -48,6 +48,7 @@ slots:
|
|||
void addToTripAbove();
|
||||
void addToTripBelow();
|
||||
void mergeDives();
|
||||
void renumberDives();
|
||||
void saveSelectedDivesAs();
|
||||
void exportSelectedDivesAsUDDF();
|
||||
void exportSelectedDivesAsCSV();
|
||||
|
|
|
@ -444,6 +444,7 @@ void MainWindow::on_actionAddDive_triggered()
|
|||
|
||||
void MainWindow::on_actionRenumber_triggered()
|
||||
{
|
||||
RenumberDialog::instance()->renumberOnlySelected(false);
|
||||
RenumberDialog::instance()->show();
|
||||
}
|
||||
|
||||
|
|
|
@ -16,8 +16,9 @@
|
|||
#include <QDateTime>
|
||||
#include <QShortcut>
|
||||
#include "exif.h"
|
||||
#include "../dive.h"
|
||||
#include "../file.h"
|
||||
#include "dive.h"
|
||||
#include "file.h"
|
||||
#include "display.h"
|
||||
#include "mainwindow.h"
|
||||
#include "helpers.h"
|
||||
|
||||
|
@ -117,15 +118,24 @@ RenumberDialog *RenumberDialog::instance()
|
|||
return self;
|
||||
}
|
||||
|
||||
void RenumberDialog::renumberOnlySelected(bool selected)
|
||||
{
|
||||
if (selected && amount_selected == 1)
|
||||
ui.groupBox->setTitle(tr("New number"));
|
||||
else
|
||||
ui.groupBox->setTitle(tr("New starting number"));
|
||||
selectedOnly = selected;
|
||||
}
|
||||
|
||||
void RenumberDialog::buttonClicked(QAbstractButton *button)
|
||||
{
|
||||
if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) {
|
||||
qDebug() << "Renumbering.";
|
||||
renumber_dives(ui.spinBox->value());
|
||||
renumber_dives(ui.spinBox->value(), selectedOnly);
|
||||
}
|
||||
}
|
||||
|
||||
RenumberDialog::RenumberDialog(QWidget *parent) : QDialog(parent)
|
||||
RenumberDialog::RenumberDialog(QWidget *parent) : QDialog(parent), selectedOnly(false)
|
||||
{
|
||||
ui.setupUi(this);
|
||||
connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
|
||||
|
|
|
@ -40,6 +40,7 @@ class RenumberDialog : public QDialog {
|
|||
Q_OBJECT
|
||||
public:
|
||||
static RenumberDialog *instance();
|
||||
void renumberOnlySelected(bool selected = true);
|
||||
private
|
||||
slots:
|
||||
void buttonClicked(QAbstractButton *button);
|
||||
|
@ -47,6 +48,7 @@ slots:
|
|||
private:
|
||||
explicit RenumberDialog(QWidget *parent);
|
||||
Ui::RenumberDialog ui;
|
||||
bool selectedOnly;
|
||||
};
|
||||
|
||||
class ShiftTimesDialog : public QDialog {
|
||||
|
|
|
@ -149,13 +149,14 @@ void parse_argument(const char *arg)
|
|||
} while (*++p);
|
||||
}
|
||||
|
||||
void renumber_dives(int nr)
|
||||
void renumber_dives(int start_nr, bool selected_only)
|
||||
{
|
||||
int i;
|
||||
int i, nr = start_nr;
|
||||
struct dive *dive;
|
||||
|
||||
for (i = 0; i < dive_table.nr; i++) {
|
||||
struct dive *dive = dive_table.dives[i];
|
||||
dive->number = nr + i;
|
||||
for_each_dive (i, dive) {
|
||||
if (dive->selected)
|
||||
dive->number = nr++;
|
||||
}
|
||||
mark_divelist_changed(true);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue