Cut'n'paste for dive data: implement paste side

This should correctly set all the values and puts us in edit mode.
Testing so far looks good for both single dive and multiple dives selected
(i.e., you can paste into multiple dives).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2014-08-17 08:26:09 -06:00
parent 822eb7558d
commit 29f50c6aee
3 changed files with 44 additions and 0 deletions

View file

@ -1173,3 +1173,43 @@ void MainTab::removeSelectedPhotos()
QString fileUrl = photoIndex.data(Qt::DisplayPropertyRole).toString();
DivePictureModel::instance()->removePicture(fileUrl);
}
#define SHOW_SELECTIVE(_component) \
if (what._component) \
ui._component->setText(displayed_dive._component);
void MainTab::showAndTriggerEditSelective(struct dive_components what)
{
// take the data in our copyPasteDive and apply it to selected dives
enableEdition();
SHOW_SELECTIVE(location);
SHOW_SELECTIVE(buddy);
SHOW_SELECTIVE(divemaster);
SHOW_SELECTIVE(suit);
if (what.notes) {
QString tmp(displayed_dive.notes);
if (tmp.contains("<table"))
ui.notes->setHtml(tmp);
else
ui.notes->setPlainText(tmp);
}
if (what.rating)
ui.rating->setCurrentStars(displayed_dive.rating);
if (what.visibility)
ui.visibility->setCurrentStars(displayed_dive.visibility);
if (what.gps)
updateGpsCoordinates(&displayed_dive);
if (what.tags) {
char buf[1024];
taglist_get_tagstring(displayed_dive.tag_list, buf, 1024);
ui.tagWidget->setText(QString(buf));
}
if (what.cylinders) {
cylindersModel->updateDive();
cylindersModel->changed = true;
}
if (what.weights) {
weightModel->updateDive();
weightModel->changed = true;
}
}

View file

@ -49,6 +49,8 @@ public:
bool isEditing();
void updateCoordinatesText(qreal lat, qreal lon);
void nextInputField(QKeyEvent *event);
void showAndTriggerEditSelective(struct dive_components what);
signals:
void addDiveFinished();

View file

@ -1314,4 +1314,6 @@ void MainWindow::on_copy_triggered()
void MainWindow::on_paste_triggered()
{
// take the data in our copyPasteDive and apply it to selected dives
selective_copy_dive(&copyPasteDive, &displayed_dive, what, false);
ui.InfoWidget->showAndTriggerEditSelective(what);
}