a bug fix and a improvement
Dirk Hohndel
dirk at hohndel.org
Thu Aug 20 22:27:13 PDT 2015
On Thu, Aug 20, 2015 at 10:34:03PM -0300, Tomaz Canabrava wrote:
> From 7129f1b4530febcffcb5729cbf918133d64f51c0 Mon Sep 17 00:00:00 2001
> From: Tomaz Canabrava <tomaz.canabrava at intel.com>
> Date: Thu, 20 Aug 2015 22:24:49 -0300
> Subject: [PATCH 2/2] Save Properties for each State of the mainWindow
>
> Each state can have the same widgets but with different
> properties - currently I'm using "enabled" : true and false
> for the DiveSiteEdit, it looks like a big amount of code
> for such a small thing but it was the cleaner way that
> I tougth of doing.
>
> Signed-off-by: Tomaz Canabrava <tomaz.canabrava at intel.com>
> ---
> qt-ui/mainwindow.cpp | 31 +++++++++++++++++++++++++++++++
> qt-ui/mainwindow.h | 17 +++++++++++++++++
> 2 files changed, 48 insertions(+)
>
> diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
> index 1a12305..dec5503 100644
> --- a/qt-ui/mainwindow.cpp
> +++ b/qt-ui/mainwindow.cpp
> @@ -119,6 +119,13 @@ MainWindow::MainWindow() : QMainWindow(),
>
> QWidget *diveSitePictures = new QWidget(); // Placeholder
>
> + std::pair<QByteArray, QVariant> enabled = std::make_pair("enabled", QVariant(true));
> + std::pair<QByteArray, QVariant> disabled = std::make_pair("enabled", QVariant(false));
Why std::pair instead of QPair which we use in many other places?
> + PropertyList enabledList;
> + PropertyList disabledList;
> + enabledList.push_back(enabled);
> + disabledList.push_back(disabled);
> +
> registerApplicationState("Default", mainTab, profileContainer, diveListView, globeGps );
> registerApplicationState("AddDive", mainTab, profileContainer, diveListView, globeGps );
> registerApplicationState("EditDive", mainTab, profileContainer, diveListView, globeGps );
> @@ -126,6 +133,13 @@ MainWindow::MainWindow() : QMainWindow(),
> registerApplicationState("EditPlannedDive", plannerWidget, profileContainer, diveListView, globeGps );
> registerApplicationState("EditDiveSite", diveSiteEdit, diveSitePictures, diveListView, globeGps);
>
> + setStateProperties("Default", enabledList, enabledList, enabledList,enabledList);
> + setStateProperties("AddDive", enabledList, enabledList, enabledList,enabledList);
> + setStateProperties("EditDive", enabledList, enabledList, enabledList,enabledList);
> + setStateProperties("PlanDive", enabledList, enabledList, enabledList,enabledList);
> + setStateProperties("EditPlannedDive", enabledList, enabledList, enabledList,enabledList);
> + setStateProperties("EditDiveSite", enabledList, enabledList, disabledList, enabledList);
I'm completely baffled by this. There is one disabledList hiding in here
and 23 references to enabledList.
> +
> setApplicationState("Default");
>
> ui.multiFilter->hide();
> @@ -213,6 +227,11 @@ MainWindow::~MainWindow()
> m_Instance = NULL;
> }
>
> +void MainWindow::setStateProperties(const QByteArray& state, const PropertyList& tl, const PropertyList& tr, const PropertyList& bl, const PropertyList& br)
> +{
> + stateProperties[state] = PropertiesForQuadrant(tl, tr, bl, br);
> +}
> +
> void MainWindow::on_actionDiveSiteEdit_triggered() {
> setApplicationState("EditDiveSite");
> }
> @@ -1726,9 +1745,21 @@ void MainWindow::setApplicationState(const QByteArray& state) {
> }
>
> SET_CURRENT_INDEX( topLeft )
> + Q_FOREACH(const WidgetProperty& p, stateProperties[state].topLeft) {
> + ui.topLeft->currentWidget()->setProperty( p.first.data(), p.second);
> + }
> SET_CURRENT_INDEX( topRight )
> + Q_FOREACH(const WidgetProperty& p, stateProperties[state].topRight) {
> + ui.topRight->currentWidget()->setProperty( p.first.data(), p.second);
> + }
> SET_CURRENT_INDEX( bottomLeft )
> + Q_FOREACH(const WidgetProperty& p, stateProperties[state].bottomLeft) {
> + ui.bottomLeft->currentWidget()->setProperty( p.first.data(), p.second);
> + }
> SET_CURRENT_INDEX( bottomRight )
> + Q_FOREACH(const WidgetProperty& p, stateProperties[state].bottomRight) {
> + ui.bottomRight->currentWidget()->setProperty( p.first.data(), p.second);
> + }
So what does this do? I'm confused.
> diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h
> index 4df1d12..2d2ea88 100644
> --- a/qt-ui/mainwindow.h
> +++ b/qt-ui/mainwindow.h
> @@ -39,6 +39,9 @@ class PlannerSettingsWidget;
> class QUndoStack;
> class LocationInformationWidget;
>
> +typedef std::pair<QByteArray, QVariant> WidgetProperty;
> +typedef QVector<WidgetProperty> PropertyList;
> +
> enum MainWindowTitleFormat {
> MWTF_DEFAULT,
> MWTF_FILENAME
> @@ -89,6 +92,7 @@ public:
> void printPlan();
> void checkSurvey(QSettings *s);
> void setApplicationState(const QByteArray& state);
> + void setStateProperties(const QByteArray& state, const PropertyList& tl, const PropertyList& tr, const PropertyList& bl,const PropertyList& br);
> bool inPlanner();
> QUndoStack *undoStack;
> NotificationWidget *getNotificationWidget();
> @@ -225,7 +229,20 @@ private:
> QWidget *bottomLeft;
> QWidget *bottomRight;
> };
> +
> + struct PropertiesForQuadrant {
> + PropertiesForQuadrant(){}
> + PropertiesForQuadrant(const PropertyList& tl, const PropertyList& tr,const PropertyList& bl,const PropertyList& br) :
> + topLeft(tl), topRight(tr), bottomLeft(bl), bottomRight(br) {}
> + PropertyList topLeft;
> + PropertyList topRight;
> + PropertyList bottomLeft;
> + PropertyList bottomRight;
> + };
> +
> QHash<QByteArray, WidgetForQuadrant> applicationState;
> + QHash<QByteArray, PropertiesForQuadrant> stateProperties;
> +
> QByteArray currentApplicationState;
> WindowTitleUpdate *wtu;
> };
OK, I need a bit more of an explanation before I accept this patch.
/D
More information about the subsurface
mailing list