/*===================================================================== PIXHAWK Micro Air Vehicle Flying Robotics Toolkit (c) 2009, 2010 PIXHAWK PROJECT This file is part of the PIXHAWK project PIXHAWK is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. PIXHAWK is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with PIXHAWK. If not, see . ======================================================================*/ /** * @file * @brief Main application window * @author Lorenz Meier * */ #ifndef _MAINWINDOW_H_ #define _MAINWINDOW_H_ #include #include #include #include "ui_MainWindow.h" #include "LinkManager.h" #include "LinkInterface.h" #include "UASInterface.h" #include "UASManager.h" #include "UASControlWidget.h" #include "LinechartWidget.h" #include "UASInfoWidget.h" #include "WaypointList.h" #include "CameraView.h" #include "UASListWidget.h" #include "MAVLinkProtocol.h" #include "AS4Protocol.h" #include "ObjectDetectionView.h" #include "HUD.h" #include "PFD.h" #include "GaugePanel.h" #include "JoystickWidget.h" #include "input/JoystickInput.h" #include "DebugConsole.h" #include "MapWidget.h" #include "ParameterInterface.h" #include "XMLCommProtocolWidget.h" #include "HDDisplay.h" #include "LogCompressor.h" /** * @brief Main Application Window * **/ class MGMainWindow : public QMainWindow { Q_OBJECT public: MGMainWindow(QWidget *parent = 0); ~MGMainWindow(); UASControlWidget* control; LinechartWidget* linechart; UASInfoWidget* info; CameraView* camera; UASListWidget* list; WaypointList* waypoints; ObjectDetectionView* detection; HUD* hud; PFD* pfd; GaugePanel* gaugePanel; // Popup widgets JoystickWidget* joystickWidget; JoystickInput* joystick; /** User interface actions **/ QAction* connectUASAct; QAction* disconnectUASAct; QAction* startUASAct; QAction* returnUASAct; QAction* stopUASAct; QAction* killUASAct; QAction* simulateUASAct; public slots: /** * @brief Shows a status message on the bottom status bar * * The status message will be overwritten if a new message is posted to this function * * @param status message text * @param timeout how long the status should be displayed */ void showStatusMessage(const QString& status, int timeout); void setLastAction(QString status); void setLinkStatus(QString status); void addLink(); void configure(); void UASCreated(UASInterface* uas); void startVideoCapture(); void stopVideoCapture(); void saveScreen(); /** @brief Load view for pilot */ void loadPilotView(); /** @brief Load view for engineer */ void loadEngineerView(); /** @brief Load view for operator */ void loadOperatorView(); /** @brief Load view for general settings */ void loadSettingsView(); void reloadStylesheet(); void runTests(); protected: QStatusBar* statusBar; QStatusBar* createStatusBar(); void loadWidgets(); void connectActions(); void clearView(); // TODO Should be moved elsewhere, as the protocol does not belong to the UI MAVLinkProtocol* mavlink; AS4Protocol* as4link; LinkInterface* simulationLink; LinkInterface* udpLink; QDockWidget* controlDock; QStackedWidget* centerStack; DebugConsole* debugConsole; MapWidget* map; ParameterInterface* parameters; XMLCommProtocolWidget* protocol; HDDisplay* headDown1; HDDisplay* headDown2; LogCompressor* comp; QString screenFileName; QTimer* videoTimer; private: Ui::MGMainWindow ui; }; #endif /* _MAINWINDOW_H_ */