Commit 4dc1b91a authored by LM's avatar LM

Cleaned up MainWindow init dramatically, relying now on Qts persistence...

Cleaned up MainWindow init dramatically, relying now on Qts persistence capabilities. Fixed a number of view persistence issues this way
parent 8bd61d71
This diff is collapsed.
...@@ -49,7 +49,6 @@ This file is part of the QGROUNDCONTROL project ...@@ -49,7 +49,6 @@ This file is part of the QGROUNDCONTROL project
#include "UASListWidget.h" #include "UASListWidget.h"
#include "MAVLinkProtocol.h" #include "MAVLinkProtocol.h"
#include "MAVLinkSimulationLink.h" #include "MAVLinkSimulationLink.h"
#include "AS4Protocol.h"
#include "ObjectDetectionView.h" #include "ObjectDetectionView.h"
#include "HUD.h" #include "HUD.h"
#include "JoystickWidget.h" #include "JoystickWidget.h"
...@@ -159,9 +158,6 @@ public slots: ...@@ -159,9 +158,6 @@ public slots:
/** @brief Show the project roadmap */ /** @brief Show the project roadmap */
void showRoadMap(); void showRoadMap();
/** @brief Shows the widgets based on configuration and current view and autopilot */
void presentView();
/** @brief Reload the CSS style sheet */ /** @brief Reload the CSS style sheet */
void reloadStylesheet(); void reloadStylesheet();
/** @brief Let the user select the CSS style sheet */ /** @brief Let the user select the CSS style sheet */
...@@ -193,29 +189,21 @@ public slots: ...@@ -193,29 +189,21 @@ public slots:
/** /**
* @brief Shows a Docked Widget based on the action sender * @brief Shows a Docked Widget based on the action sender
* *
* This slot is written to be used in conjunction with the addToToolsMenu function * This slot is written to be used in conjunction with the addTool() function
* It shows the QDockedWidget based on the action sender * It shows the QDockedWidget based on the action sender
* *
*/ */
void showToolWidget(bool visible); void showTool(bool visible);
/** /**
* @brief Shows a Widget from the center stack based on the action sender * @brief Shows a Widget from the center stack based on the action sender
* *
* This slot is written to be used in conjunction with the addToCentralWidgetsMenu function * This slot is written to be used in conjunction with the addCentralWidget() function
* It shows the Widget based on the action sender * It shows the Widget based on the action sender
* *
*/ */
void showCentralWidget(); void showCentralWidget();
/** @brief Change actively a QDockWidgets visibility by an action */
void showDockWidget(bool vis);
/** @brief Updates a QDockWidget's checked status based on its visibility */
void updateVisibilitySettings(bool vis);
/** @brief Updates a QDockWidget's location */
void updateLocationSettings (Qt::DockWidgetArea location);
protected: protected:
MainWindow(QWidget *parent = 0); MainWindow(QWidget *parent = 0);
...@@ -223,65 +211,19 @@ protected: ...@@ -223,65 +211,19 @@ protected:
/** @brief Set default window settings for the current autopilot type */ /** @brief Set default window settings for the current autopilot type */
void setDefaultSettingsForAp(); void setDefaultSettingsForAp();
// These defines are used to save the settings when selecting with
// which widgets populate the views
// FIXME: DO NOT PUT CUSTOM VALUES IN THIS ENUM since it is iterated over
// this will be fixed in a future release.
typedef enum _TOOLS_WIDGET_NAMES {
MENU_UAS_CONTROL_PARAM,
MENU_UAS_CONTROL,
MENU_UAS_INFO,
MENU_CAMERA,
MENU_UAS_LIST,
MENU_WAYPOINTS,
MENU_STATUS,
MENU_DETECTION,
MENU_DEBUG_CONSOLE,
MENU_PARAMETERS,
MENU_HDD_1,
MENU_HDD_2,
MENU_WATCHDOG,
MENU_HUD,
MENU_HSI,
MENU_RC_VIEW,
MENU_SLUGS_DATA,
MENU_SLUGS_PID,
MENU_SLUGS_HIL,
MENU_SLUGS_CAMERA,
MENU_MAVLINK_LOG_PLAYER,
MENU_VIDEO_STREAM_1,
MENU_VIDEO_STREAM_2,
CENTRAL_SEPARATOR= 255, // do not change
CENTRAL_LINECHART,
CENTRAL_PROTOCOL,
CENTRAL_MAP,
CENTRAL_3D_LOCAL,
CENTRAL_3D_MAP,
CENTRAL_OSGEARTH,
CENTRAL_GOOGLE_EARTH,
CENTRAL_HUD,
CENTRAL_DATA_PLOT,
} TOOLS_WIDGET_NAMES;
typedef enum _SETTINGS_SECTIONS {
SECTION_MENU,
SUB_SECTION_CHECKED,
SUB_SECTION_LOCATION,
} SETTINGS_SECTIONS;
typedef enum _VIEW_SECTIONS { typedef enum _VIEW_SECTIONS {
VIEW_ENGINEER, VIEW_ENGINEER,
VIEW_OPERATOR, VIEW_OPERATOR,
VIEW_PILOT, VIEW_PILOT,
VIEW_MAVLINK, VIEW_MAVLINK,
VIEW_UNCONNECTED, ///< View in unconnected mode, when no UAS is available VIEW_UNCONNECTED, ///< View in unconnected mode, when no UAS is available
VIEW_FULL ///< All widgets shown at once
} VIEW_SECTIONS; } VIEW_SECTIONS;
QHash<int, QAction*> toolsMenuActions; // Holds ptr to the Menu Actions QHash<int, QAction*> toolsMenuActions; // Holds ptr to the Menu Actions
QHash<int, QWidget*> dockWidgets; // Holds ptr to the Actual Dock widget QHash<int, QWidget*> dockWidgets; // Holds ptr to the Actual Dock widget
QHash<int, Qt::DockWidgetArea> dockWidgetLocations; // Holds the location // QHash<int, Qt::DockWidgetArea> dockWidgetLocations; // Holds the location
/** /**
* @brief Adds an already instantiated QDockedWidget to the Tools Menu * @brief Adds an already instantiated QDockedWidget to the Tools Menu
...@@ -290,24 +232,22 @@ protected: ...@@ -290,24 +232,22 @@ protected:
* tools menu and connects the QMenuAction to a slot that shows the widget and * tools menu and connects the QMenuAction to a slot that shows the widget and
* checks/unchecks the tools menu item * checks/unchecks the tools menu item
* *
* @param widget The QDockedWidget being added * @param widget The QDockWidget being added
* @param title The entry that will appear in the Menu and in the QDockedWidget title bar * @param title The entry that will appear in the Menu and in the QDockedWidget title bar
* @param slotName The slot to which the triggered() signal of the menu action will be connected.
* @param tool The ENUM defined in MainWindow.h that is associated to the widget
* @param location The default location for the QDockedWidget in case there is no previous key in the settings * @param location The default location for the QDockedWidget in case there is no previous key in the settings
*/ */
void addToToolsMenu (QWidget* widget, const QString title, const char * slotName, TOOLS_WIDGET_NAMES tool, Qt::DockWidgetArea location=Qt::RightDockWidgetArea); void addTool(QDockWidget* widget, const QString& title, Qt::DockWidgetArea location=Qt::RightDockWidgetArea);
/** // /**
* @brief Determines if a QDockWidget needs to be show and if so, shows it // * @brief Determines if a QDockWidget needs to be show and if so, shows it
* // *
* Based on the the autopilot and the current view it queries the settings and shows the // * Based on the the autopilot and the current view it queries the settings and shows the
* widget if necessary // * widget if necessary
* // *
* @param widget The QDockWidget requested to be shown // * @param widget The QDockWidget requested to be shown
* @param view The view for which the QDockWidget is requested // * @param view The view for which the QDockWidget is requested
*/ // */
void showTheWidget (TOOLS_WIDGET_NAMES widget, VIEW_SECTIONS view = VIEW_MAVLINK); // void showTheWidget (TOOLS_WIDGET_NAMES widget, VIEW_SECTIONS view = VIEW_MAVLINK);
/** /**
* @brief Adds an already instantiated QWidget to the center stack * @brief Adds an already instantiated QWidget to the center stack
...@@ -319,21 +259,8 @@ protected: ...@@ -319,21 +259,8 @@ protected:
* *
* @param widget The QWidget being added * @param widget The QWidget being added
* @param title The entry that will appear in the Menu * @param title The entry that will appear in the Menu
* @param slotName The slot to which the triggered() signal of the menu action will be connected.
* @param centralWidget The ENUM defined in MainWindow.h that is associated to the widget
*/
void addToCentralWidgetsMenu ( QWidget* widget, const QString title,const char * slotName, TOOLS_WIDGET_NAMES centralWidget);
/**
* @brief Determines if a QWidget needs to be show and if so, shows it
*
* Based on the the autopilot and the current view it queries the settings and shows the
* widget if necessary
*
* @param centralWidget The QWidget requested to be shown
* @param view The view for which the QWidget is requested
*/ */
void showTheCentralWidget (TOOLS_WIDGET_NAMES centralWidget, VIEW_SECTIONS view); void addCentralWidget(QWidget* widget, const QString& title);
/** @brief Catch window resize events */ /** @brief Catch window resize events */
void resizeEvent(QResizeEvent * event); void resizeEvent(QResizeEvent * event);
...@@ -343,24 +270,25 @@ protected: ...@@ -343,24 +270,25 @@ protected:
bool aboutToCloseFlag; bool aboutToCloseFlag;
bool changingViewsFlag; bool changingViewsFlag;
void clearView(); void storeViewState();
void loadViewState();
void buildCustomWidget(); void buildCustomWidget();
void buildCommonWidgets(); void buildCommonWidgets();
void buildPxWidgets(); // void buildPxWidgets();
void buildSlugsWidgets(); // void buildSlugsWidgets();
void connectCommonWidgets(); void connectCommonWidgets();
void connectPxWidgets(); // void connectPxWidgets();
void connectSlugsWidgets(); // void connectSlugsWidgets();
void arrangeCommonCenterStack(); void arrangeCommonCenterStack();
void arrangePxCenterStack(); // void arrangePxCenterStack();
void arrangeSlugsCenterStack(); // void arrangeSlugsCenterStack();
void connectCommonActions(); void connectCommonActions();
void connectPxActions(); // void connectPxActions();
void connectSlugsActions(); // void connectSlugsActions();
void configureWindowName(); void configureWindowName();
...@@ -369,13 +297,13 @@ protected: ...@@ -369,13 +297,13 @@ protected:
// TODO Should be moved elsewhere, as the protocol does not belong to the UI // TODO Should be moved elsewhere, as the protocol does not belong to the UI
MAVLinkProtocol* mavlink; MAVLinkProtocol* mavlink;
AS4Protocol* as4link;
MAVLinkSimulationLink* simulationLink; MAVLinkSimulationLink* simulationLink;
LinkInterface* udpLink; LinkInterface* udpLink;
QSettings settings; QSettings settings;
QStackedWidget *centerStack; QStackedWidget *centerStack;
QActionGroup centerStackActionGroup;
// Center widgets // Center widgets
QPointer<Linecharts> linechartWidget; QPointer<Linecharts> linechartWidget;
...@@ -451,7 +379,7 @@ protected: ...@@ -451,7 +379,7 @@ protected:
private: private:
Ui::MainWindow ui; Ui::MainWindow ui;
QString buildMenuKey (SETTINGS_SECTIONS section , TOOLS_WIDGET_NAMES tool, VIEW_SECTIONS view); // QString buildMenuKey (SETTINGS_SECTIONS section , TOOLS_WIDGET_NAMES tool, VIEW_SECTIONS view);
QString getWindowStateKey(); QString getWindowStateKey();
QString getWindowGeometryKey(); QString getWindowGeometryKey();
......
...@@ -42,6 +42,7 @@ QGCToolWidget::QGCToolWidget(const QString& title, QWidget *parent) : ...@@ -42,6 +42,7 @@ QGCToolWidget::QGCToolWidget(const QString& title, QWidget *parent) :
} }
this->setWindowTitle(title); this->setWindowTitle(title);
setObjectName(title+"WIDGET");
QList<UASInterface*> systems = UASManager::instance()->getUASList(); QList<UASInterface*> systems = UASManager::instance()->getUASList();
foreach (UASInterface* uas, systems) { foreach (UASInterface* uas, systems) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment