summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2014-12-13 22:06:52 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-12-17 21:33:55 -0800
commitb72c32da7defdbc0ff3100f13d1688f06770674a (patch)
tree82d3f3ddb07aacd771bd83a3c515d3ce873968f4
parent98085e25e55fb09ccaa5e9a934341895d5ffe5e6 (diff)
downloadsubsurface-b72c32da7defdbc0ff3100f13d1688f06770674a.tar.gz
Turn of replotting while the cylinder type combo box is active
Since replotting is expensive and it is triggered while scrolling through the list of cylinders, better not do it for improved user experience and replot only after the combo box loses focus. I hope this... Fixes #768 Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-ui/modeldelegates.cpp11
-rw-r--r--qt-ui/modeldelegates.h1
-rw-r--r--qt-ui/profile/profilewidget2.cpp9
-rw-r--r--qt-ui/profile/profilewidget2.h2
4 files changed, 23 insertions, 0 deletions
diff --git a/qt-ui/modeldelegates.cpp b/qt-ui/modeldelegates.cpp
index 9720e3f9e..6eac66f87 100644
--- a/qt-ui/modeldelegates.cpp
+++ b/qt-ui/modeldelegates.cpp
@@ -6,6 +6,8 @@
#include "diveplanner.h"
#include "simplewidgets.h"
#include "gettextfromc.h"
+#include "profile/profilewidget2.h"
+#include "mainwindow.h"
#include <QtDebug>
#include <QPainter>
@@ -252,6 +254,14 @@ void TankInfoDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
TankInfoDelegate::TankInfoDelegate(QObject *parent) : ComboBoxDelegate(TankInfoModel::instance(), parent)
{
+ connect(this, SIGNAL(closeEditor(QWidget *, QAbstractItemDelegate::EndEditHint)),
+ this, SLOT(reenableReplot(QWidget *, QAbstractItemDelegate::EndEditHint)));
+}
+
+void TankInfoDelegate::reenableReplot(QWidget *widget, QAbstractItemDelegate::EndEditHint hint)
+{
+ MainWindow::instance()->graphics()->setReplot(true);
+ MainWindow::instance()->graphics()->replot();
}
void TankInfoDelegate::revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint)
@@ -275,6 +285,7 @@ QWidget *TankInfoDelegate::createEditor(QWidget *parent, const QStyleOptionViewI
currCylinderData.type = copy_string(cyl->type.description);
currCylinderData.pressure = cyl->type.workingpressure.mbar;
currCylinderData.size = cyl->type.size.mliter;
+ MainWindow::instance()->graphics()->setReplot(false);
return delegate;
}
diff --git a/qt-ui/modeldelegates.h b/qt-ui/modeldelegates.h
index 173151a4a..f501c5214 100644
--- a/qt-ui/modeldelegates.h
+++ b/qt-ui/modeldelegates.h
@@ -57,6 +57,7 @@ public:
public
slots:
void revertModelData(QWidget *widget, QAbstractItemDelegate::EndEditHint hint);
+ void reenableReplot(QWidget *widget, QAbstractItemDelegate::EndEditHint hint);
};
class TankUseDelegate : public QStyledItemDelegate {
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index 1a9d5ccf7..649bda0d6 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -289,10 +289,14 @@ void ProfileWidget2::setupItemOnScene()
heartBeatAxis->setLinesVisible(true);
percentageAxis->setTextVisible(true);
percentageAxis->setLinesVisible(true);
+
+ replotEnabled = true;
}
void ProfileWidget2::replot()
{
+ if (!replotEnabled)
+ return;
dataModel->clear();
plotDive(0, true); // simply plot the displayed_dive again
}
@@ -1089,6 +1093,11 @@ struct plot_data *ProfileWidget2::getEntryFromPos(QPointF pos)
return entry;
}
+void ProfileWidget2::setReplot(bool state)
+{
+ replotEnabled = state;
+}
+
void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
{
if (currentState == ADD || currentState == PLAN) {
diff --git a/qt-ui/profile/profilewidget2.h b/qt-ui/profile/profilewidget2.h
index a1f216e48..9808a964b 100644
--- a/qt-ui/profile/profilewidget2.h
+++ b/qt-ui/profile/profilewidget2.h
@@ -103,6 +103,7 @@ slots: // Necessary to call from QAction's signals.
void pointInserted(const QModelIndex &parent, int start, int end);
void pointsRemoved(const QModelIndex &, int start, int end);
void plotPictures();
+ void setReplot(bool state);
void replot();
/* this is called for every move on the handlers. maybe we can speed up this a bit? */
@@ -145,6 +146,7 @@ private:
QString backgroundFile;
ToolTipItem *toolTipItem;
bool isPlotZoomed;
+ bool replotEnabled;
// All those here should probably be merged into one structure,
// So it's esyer to replicate for more dives later.
// In the meantime, keep it here.