Disconnect temporary connections on the Profile.

This code adds the disconnections of temporaries. A temporary connection
is a connection that should be active only on a certain state, and we need
to clean that for the new state that will enter after.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-05-21 21:23:19 -03:00 committed by Dirk Hohndel
parent 27afb33806
commit e249fe8703
2 changed files with 19 additions and 1 deletions

View file

@ -606,6 +606,7 @@ void ProfileWidget2::setEmptyState()
if (currentState == EMPTY)
return;
disconnectTemporaryConnections();
setBackgroundBrush(getColor(::BACKGROUND, isGrayscale));
dataModel->clear();
currentState = EMPTY;
@ -648,6 +649,7 @@ void ProfileWidget2::setProfileState()
return;
}
disconnectTemporaryConnections();
currentState = PROFILE;
MainWindow::instance()->setToolButtonsEnabled(true);
toolTipItem->readPos();
@ -707,6 +709,7 @@ void ProfileWidget2::setAddState()
if (currentState == ADD)
return;
disconnectTemporaryConnections();
/* show the same stuff that the profile shows. */
currentState = ADD; /* enable the add state. */
setBackgroundBrush(QColor(Qt::blue).light());
@ -717,6 +720,7 @@ void ProfileWidget2::setPlanState()
if (currentState == PLAN)
return;
disconnectTemporaryConnections();
/* show the same stuff that the profile shows. */
currentState = PLAN; /* enable the add state. */
setBackgroundBrush(QColor(Qt::green).light());
@ -920,6 +924,18 @@ void ProfileWidget2::editName()
replot();
}
void ProfileWidget2::disconnectTemporaryConnections()
{
DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance();
disconnect(plannerModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SLOT(replot()));
disconnect(plannerModel, SIGNAL(cylinderModelEdited()), this, SLOT(replot()));
disconnect(plannerModel, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
this, SLOT(pointInserted(const QModelIndex &, int, int)));
disconnect(plannerModel, SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
this, SLOT(pointsRemoved(const QModelIndex &, int, int)));
}
void ProfileWidget2::pointInserted(const QModelIndex &parent, int start, int end)
{
DiveHandler *item = new DiveHandler();

View file

@ -67,7 +67,6 @@ public:
ProfileWidget2(QWidget *parent = 0);
void plotDives(QList<dive *> dives);
void replot();
virtual bool eventFilter(QObject *, QEvent *);
void setupItem(AbstractProfilePolygonItem *item, DiveCartesianAxis *hAxis, DiveCartesianAxis *vAxis, DivePlotDataModel *model, int vData, int hData, int zValue);
void setPrintMode(bool mode, bool grayscale = false);
@ -90,6 +89,7 @@ slots: // Necessary to call from QAction's signals.
void makeFirstDC();
void pointInserted(const QModelIndex &parent, int start, int end);
void pointsRemoved(const QModelIndex &, int start, int end);
void replot();
protected:
virtual void resizeEvent(QResizeEvent *event);
@ -105,6 +105,8 @@ private: /*methods*/
void setupItemSizes();
void addItemsToScene();
void setupItemOnScene();
void disconnectTemporaryConnections();
private:
DivePlotDataModel *dataModel;
int zoomLevel;