summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2014-05-28 15:43:32 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-05-28 12:25:36 -0700
commit1e4f744165608d208690531d5ff5da558ccd31d2 (patch)
tree75353340237c12c1f617ebc7646d2f7dcf38e6ad /qt-ui
parent2f8f632cf6c1b4627b5307b6f325d6e8f6291f82 (diff)
downloadsubsurface-1e4f744165608d208690531d5ff5da558ccd31d2.tar.gz
Fixes showing the Empty Profile when Add / Plan dive is cancelled.
for some reason the next selected dive is NULL after cancelling the plan. I'm investigating. This patch fixes the show of the empty profile and it also untangles some parts of the code, keeping the mainwindow where it should belong : the mainwindow. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/diveplanner.cpp10
-rw-r--r--qt-ui/mainwindow.cpp9
-rw-r--r--qt-ui/mainwindow.h1
-rw-r--r--qt-ui/profile/profilewidget2.cpp24
4 files changed, 25 insertions, 19 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index e8e0b2ca3..6943283d9 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -256,7 +256,7 @@ DivePlannerWidget::DivePlannerWidget(QWidget *parent, Qt::WindowFlags f) : QWidg
connect(ui.buttonBox, SIGNAL(rejected()), plannerModel, SLOT(cancelPlan()));
connect(plannerModel, SIGNAL(planCreated()), MainWindow::instance(), SLOT(removeFakeDiveForAddAndPlan()));
connect(plannerModel, SIGNAL(planCreated()), MainWindow::instance(), SLOT(showProfile()));
- connect(plannerModel, SIGNAL(planCanceled()), MainWindow::instance(), SLOT(showProfile()));
+ connect(plannerModel, SIGNAL(planCanceled()), MainWindow::instance(), SLOT(planCanceled()));
/* set defaults. */
ui.startTime->setTime(QTime(1, 0));
@@ -653,18 +653,14 @@ void DivePlannerPointsModel::cancelPlan()
return;
}
}
- // we unselected all dives earlier, so restore that first and then recreate the dive list
- MainWindow::instance()->removeFakeDiveForAddAndPlan();
- MainWindow::instance()->dive_list()->restoreSelection();
- MainWindow::instance()->dive_list()->reload(DiveTripModel::CURRENT);
- MainWindow::instance()->refreshDisplay();
- emit planCanceled();
+
if (mode != ADD) {
free(stagingDive);
stagingDive = NULL;
}
setPlanMode(NOTHING);
diveplan.dp = NULL;
+ emit planCanceled();
}
DivePlannerPointsModel::Mode DivePlannerPointsModel::currentMode() const
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index ff932d31b..6cf7160b7 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -397,6 +397,15 @@ void MainWindow::removeFakeDiveForAddAndPlan()
delete_single_dive(idx);
}
+void MainWindow::planCanceled()
+{
+ removeFakeDiveForAddAndPlan();
+ showProfile();
+ dive_list()->restoreSelection();
+ dive_list()->reload(DiveTripModel::CURRENT);
+ refreshDisplay();
+}
+
void MainWindow::on_actionDivePlanner_triggered()
{
if(!plannerStateClean())
diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h
index 882534722..f34c7a58a 100644
--- a/qt-ui/mainwindow.h
+++ b/qt-ui/mainwindow.h
@@ -152,6 +152,7 @@ slots:
void showProfile();
void editCurrentDive();
void removeFakeDiveForAddAndPlan();
+ void planCanceled();
private:
Ui::MainWindow ui;
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index 6cb258060..8f2668767 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -88,7 +88,8 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : QGraphicsView(parent),
rulerItem(new RulerItem2()),
isGrayscale(false),
printMode(false),
- shouldCalculateMaxTime(true)
+ shouldCalculateMaxTime(true),
+ backgroundFile(":poster")
{
memset(&plotInfo, 0, sizeof(plotInfo));
@@ -566,9 +567,9 @@ void ProfileWidget2::mouseReleaseEvent(QMouseEvent *event)
void ProfileWidget2::fixBackgroundPos()
{
+ static QPixmap toBeScaled(backgroundFile);
if (currentState != EMPTY)
return;
- QPixmap toBeScaled = QPixmap(backgroundFile);
QPixmap p = toBeScaled.scaledToHeight(viewport()->height() - 40, Qt::SmoothTransformation);
int x = viewport()->width() / 2 - p.width() / 2;
int y = viewport()->height() / 2 - p.height() / 2;
@@ -666,7 +667,6 @@ void ProfileWidget2::setEmptyState()
currentState = EMPTY;
MainWindow::instance()->setToolButtonsEnabled(false);
- backgroundFile = QString(":poster");
fixBackgroundPos();
background->setVisible(true);
@@ -684,12 +684,14 @@ void ProfileWidget2::setEmptyState()
pn2GasItem->setVisible(false);
po2GasItem->setVisible(false);
pheGasItem->setVisible(false);
- Q_FOREACH (DiveCalculatedTissue *tissue, allTissues) {
- tissue->setVisible(false);
- }
- Q_FOREACH (DiveEventItem *event, eventItems) {
- event->setVisible(false);
- }
+
+ #define HIDE_ALL(TYPE, CONTAINER) \
+ Q_FOREACH (TYPE *item, CONTAINER) item->setVisible(false);
+ HIDE_ALL(DiveCalculatedTissue, allTissues);
+ HIDE_ALL(DiveEventItem, eventItems);
+ HIDE_ALL(DiveHandler, handles);
+ HIDE_ALL(QGraphicsSimpleTextItem, gases);
+ #undef HIDE_ALL
}
void ProfileWidget2::setProfileState()
@@ -1030,10 +1032,8 @@ void ProfileWidget2::disconnectTemporaryConnections()
disconnect(plannerModel, SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
this, SLOT(pointsRemoved(const QModelIndex &, int, int)));
-
- Q_FOREACH (QAction *action, actionsForKeys.values()) {
+ Q_FOREACH (QAction *action, actionsForKeys.values())
action->setShortcut(QKeySequence());
- }
}
void ProfileWidget2::pointInserted(const QModelIndex &parent, int start, int end)