mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
planner: update variations in planner not mainwindow
When calculating variations, they were sent to the mainwindow, which updated displayed_dive accordingly. Do this directly in the planner-model. The idea is to detangle interdependencies and to make the code reusable (planner on mobile?). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
769915f3fe
commit
f123972dbf
4 changed files with 13 additions and 10 deletions
|
@ -206,7 +206,6 @@ MainWindow::MainWindow() : QMainWindow(),
|
|||
ui.menuFile->insertSeparator(ui.actionQuit);
|
||||
connect(DivePlannerPointsModel::instance(), SIGNAL(planCreated()), this, SLOT(planCreated()));
|
||||
connect(DivePlannerPointsModel::instance(), SIGNAL(planCanceled()), this, SLOT(planCanceled()));
|
||||
connect(DivePlannerPointsModel::instance(), SIGNAL(variationsComputed(QString)), this, SLOT(updateVariations(QString)));
|
||||
connect(plannerDetails->printPlan(), SIGNAL(pressed()), divePlannerWidget, SLOT(printDecoPlan()));
|
||||
connect(this, &MainWindow::showError, ui.mainErrorMessage, &NotificationWidget::showError, Qt::AutoConnection);
|
||||
|
||||
|
@ -805,14 +804,6 @@ void MainWindow::setPlanNotes()
|
|||
plannerDetails->divePlanOutput()->setHtml(displayed_dive.notes);
|
||||
}
|
||||
|
||||
void MainWindow::updateVariations(QString variations)
|
||||
{
|
||||
QString notes = QString(displayed_dive.notes);
|
||||
free(displayed_dive.notes);
|
||||
displayed_dive.notes = copy_qstring(notes.replace("VARIATIONS", variations));
|
||||
plannerDetails->divePlanOutput()->setHtml(displayed_dive.notes);
|
||||
}
|
||||
|
||||
void MainWindow::printPlan()
|
||||
{
|
||||
#ifndef NO_PRINTING
|
||||
|
|
|
@ -170,7 +170,6 @@ slots:
|
|||
// should only be enabled when the profile's visible.
|
||||
void disableShortcuts(bool disablePaste = true);
|
||||
void enableShortcuts();
|
||||
void updateVariations(QString);
|
||||
void startDiveSiteEdit();
|
||||
|
||||
private:
|
||||
|
|
|
@ -423,6 +423,9 @@ DivePlannerPointsModel::DivePlannerPointsModel(QObject *parent) : QAbstractTable
|
|||
{
|
||||
memset(&diveplan, 0, sizeof(diveplan));
|
||||
startTime.setTimeSpec(Qt::UTC);
|
||||
// use a Qt-connection to send the variations text across thread boundary (in case we
|
||||
// are calculating the variations in a background thread).
|
||||
connect(this, &DivePlannerPointsModel::variationsComputed, this, &DivePlannerPointsModel::computeVariationsDone);
|
||||
}
|
||||
|
||||
DivePlannerPointsModel *DivePlannerPointsModel::instance()
|
||||
|
@ -1147,6 +1150,7 @@ void DivePlannerPointsModel::computeVariations(struct diveplan *original_plan, c
|
|||
FRACTION(analyzeVariations(shallower, original, deeper, qPrintable(depth_units)), 60), qPrintable(depth_units),
|
||||
FRACTION(analyzeVariations(shorter, original, longer, qPrintable(time_units)), 60));
|
||||
|
||||
// By using a signal, we can transport the variations to the main thread.
|
||||
emit variationsComputed(QString(buf));
|
||||
#ifdef DEBUG_STOPVAR
|
||||
printf("\n\n");
|
||||
|
@ -1161,6 +1165,14 @@ finish:
|
|||
// setRecalc(oldRecalc);
|
||||
}
|
||||
|
||||
void DivePlannerPointsModel::computeVariationsDone(QString variations)
|
||||
{
|
||||
QString notes = QString(displayed_dive.notes);
|
||||
free(displayed_dive.notes);
|
||||
displayed_dive.notes = copy_qstring(notes.replace("VARIATIONS", variations));
|
||||
emit calculatedPlanNotes();
|
||||
}
|
||||
|
||||
void DivePlannerPointsModel::createPlan(bool replanCopy)
|
||||
{
|
||||
// Ok, so, here the diveplan creates a dive
|
||||
|
|
|
@ -126,6 +126,7 @@ private:
|
|||
void createPlan(bool replanCopy);
|
||||
struct diveplan diveplan;
|
||||
struct divedatapoint *cloneDiveplan(struct diveplan *plan_src, struct diveplan *plan_copy);
|
||||
void computeVariationsDone(QString text);
|
||||
void computeVariations(struct diveplan *diveplan, const struct deco_state *ds);
|
||||
void computeVariationsFreeDeco(struct diveplan *diveplan, struct deco_state *ds);
|
||||
int analyzeVariations(struct decostop *min, struct decostop *mid, struct decostop *max, const char *unit);
|
||||
|
|
Loading…
Reference in a new issue