1
0
Fork 0
flightgear/src/GUI/AddOnsController.hxx
2021-04-28 11:25:49 +01:00

85 lines
2.5 KiB
C++

#ifndef ADDONSCONTROLLER_HXX
#define ADDONSCONTROLLER_HXX
#include <QObject>
#include <QStringList>
class CatalogListModel;
class AddonsModel;
class LauncherMainWindow;
class PathListModel;
class LaunchConfig;
class AddOnsController : public QObject
{
Q_OBJECT
Q_PROPERTY(PathListModel* aircraftPaths READ aircraftPaths CONSTANT)
Q_PROPERTY(PathListModel* sceneryPaths READ sceneryPaths CONSTANT)
Q_PROPERTY(QStringList modulePaths READ modulePaths WRITE setModulePaths NOTIFY modulePathsChanged)
Q_PROPERTY(CatalogListModel* catalogs READ catalogs CONSTANT)
Q_PROPERTY(AddonsModel* modules READ modules NOTIFY modulesChanged)
Q_PROPERTY(bool isOfficialHangarRegistered READ isOfficialHangarRegistered NOTIFY isOfficialHangarRegisteredChanged)
Q_PROPERTY(bool showNoOfficialHangar READ showNoOfficialHangar NOTIFY showNoOfficialHangarChanged)
Q_PROPERTY(bool havePathsFromCommandLine READ havePathsFromCommandLine CONSTANT)
public:
explicit AddOnsController(LauncherMainWindow *parent, LaunchConfig* config);
PathListModel* aircraftPaths() const;
PathListModel* sceneryPaths() const;
QStringList modulePaths() const;
CatalogListModel* catalogs() const
{ return m_catalogs; }
AddonsModel* modules() const
{ return m_addonsModuleModel; }
Q_INVOKABLE QString addAircraftPath() const;
Q_INVOKABLE QString addSceneryPath() const;
Q_INVOKABLE QString addAddOnModulePath() const;
// we would ideally do this in-page, but needs some extra work
Q_INVOKABLE QString installCustomScenery();
Q_INVOKABLE void openDirectory(QString path);
bool isOfficialHangarRegistered();
bool showNoOfficialHangar() const;
Q_INVOKABLE void officialCatalogAction(QString s);
bool havePathsFromCommandLine() const;
signals:
void modulePathsChanged(QStringList modulePaths);
void modulesChanged();
void isOfficialHangarRegisteredChanged();
void showNoOfficialHangarChanged();
public slots:
void setModulePaths(QStringList modulePaths);
void setAddons(AddonsModel* addons);
void onAddonsChanged(void);
void collectArgs();
private:
void setLocalAircraftPaths();
bool shouldShowOfficialCatalogMessage() const;
void onCatalogsChanged();
LauncherMainWindow* m_launcher;
CatalogListModel* m_catalogs = nullptr;
AddonsModel* m_addonsModuleModel = nullptr;
LaunchConfig* m_config = nullptr;
PathListModel* m_aircraftPaths = nullptr;
PathListModel* m_sceneryPaths = nullptr;
QStringList m_addonModulePaths;
};
#endif // ADDONSCONTROLLER_HXX