QGCCore.h 3.99 KB
Newer Older
pixhawk's avatar
pixhawk committed
1
/*=====================================================================
Don Gagne's avatar
Don Gagne committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
 
 QGroundControl Open Source Ground Control Station
 
 (c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 
 This file is part of the QGROUNDCONTROL project
 
 QGROUNDCONTROL 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.
 
 QGROUNDCONTROL 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 QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
 
 ======================================================================*/
pixhawk's avatar
pixhawk committed
23 24 25

/**
 * @file
26
 *   @brief Definition of main class
pixhawk's avatar
pixhawk committed
27 28 29 30 31 32
 *
 *   @author Lorenz Meier <mavteam@student.ethz.ch>
 *
 */


Don Gagne's avatar
Don Gagne committed
33 34
#ifndef QGCAPPLICATION_H
#define QGCAPPLICATION_H
pixhawk's avatar
pixhawk committed
35 36 37 38 39 40

#include <QApplication>

#include "MainWindow.h"
#include "UASManager.h"
#include "LinkManager.h"
41
#ifdef QGC_RTLAB_ENABLED
42 43
#include "OpalLink.h"
#endif
44

Don Gagne's avatar
Don Gagne committed
45

pixhawk's avatar
pixhawk committed
46 47 48 49 50 51 52
/**
 * @brief The main application and management class.
 *
 * This class is started by the main method and provides
 * the central management unit of the groundstation application.
 *
 **/
Don Gagne's avatar
Don Gagne committed
53
class QGCApplication : public QApplication
pixhawk's avatar
pixhawk committed
54
{
55
    Q_OBJECT
Don Gagne's avatar
Don Gagne committed
56
    
pixhawk's avatar
pixhawk committed
57
public:
Don Gagne's avatar
Don Gagne committed
58 59
    QGCApplication(int &argc, char* argv[]);
    ~QGCApplication();
60 61 62 63
    
    /// @brief Initialize the applicaation.
    /// @return false: init failed, app should exit
    bool init(void);
64
    
Don Gagne's avatar
Don Gagne committed
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
    /// @brief Sets the persistent flag to delete all settings the next time QGroundControl is started.
    void deleteAllSettingsNextBoot(void);
    
    /// @brief Clears the persistent flag to delete all settings the next time QGroundControl is started.
    void clearDeleteAllSettingsNextBoot(void);
    
    /// @brief Returns the location of user visible saved file associated with QGroundControl
    QString savedFilesLocation(void);
    
    /// @brief Sets the location of user visible saved file associated with QGroundControl
    void setSavedFilesLocation(QString& location);
    
    /// @brief Location to save and load parameter files from.
    QString savedParameterFilesLocation(void);
    
    /// @brief Location to save and load mavlink log files from
    QString mavlinkLogFilesLocation(void);
    
    /// @brief Validates that the specified location will work for the saved files location.
    bool validatePossibleSavedFilesLocation(QString& location);
    
    /// @brief Returns true is all mavlink connections should be logged
    bool promptFlightDataSave(void);
    
    /// @brief Sets the flag to log all mavlink connections
    void setPromptFlightDataSave(bool promptForSave);
    
pixhawk's avatar
pixhawk committed
92
protected:
93
    void startLinkManager();
Don Gagne's avatar
Don Gagne committed
94
    
95 96 97 98 99 100
    /**
     * @brief Start the robot managing system
     *
     * The robot manager keeps track of the configured robots.
     **/
    void startUASManager();
Don Gagne's avatar
Don Gagne committed
101
    
pixhawk's avatar
pixhawk committed
102
private:
103
    MainWindow* _mainWindow;
Don Gagne's avatar
Don Gagne committed
104 105 106 107 108 109 110 111 112
    
    static const char* _settingsVersionKey;             ///< Settings key which hold settings version
    static const char* _deleteAllSettingsKey;           ///< If this settings key is set on boot, all settings will be deleted
    static const char* _savedFilesLocationKey;          ///< Settings key for user visible saved files location
    static const char* _promptFlightDataSave;           ///< Settings key to prompt for saving Flight Data Log for all flights
    
    static const char* _defaultSavedFileDirectoryName;      ///< Default name for user visible save file directory
    static const char* _savedFileMavlinkLogDirectoryName;   ///< Name of mavlink log subdirectory
    static const char* _savedFileParameterDirectoryName;    ///< Name of parameter subdirectory
pixhawk's avatar
pixhawk committed
113 114
};

Don Gagne's avatar
Don Gagne committed
115 116 117 118
/// @brief Returns the QGCApplication object singleton.
QGCApplication* qgcApp(void);

#endif