/****************************************************************************
 ** ScStw Libraries
 ** Copyright (C) 2020  Itsblue development
 **
 ** This program 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.
 **
 ** This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
 ****************************************************************************/

#include "../headers/scstwlibraries.h"

ScStwLibraries::ScStwLibraries(QObject *parent) : QObject(parent)
{

}

void ScStwLibraries::init() {
#ifdef ScStwLibraries_QML
    qmlRegisterType<ScStw>("de.itsblue.ScStw", 2, 0, "ScStw");
    qRegisterMetaType<ScStwSettings::BaseStationSetting>("ScStwSettings::BaseStationSetting");
    qRegisterMetaType<ScStw::SocketCommand>("ScStw::SocketCommand");
    qRegisterMetaType<ScStw::StatusCode>("ScStw::StatusCode");

    qmlRegisterUncreatableType<ScStwRace>("de.itsblue.ScStw", 2, 0, "ScStwRace", "ScStwRace is not creatable");
    qmlRegisterType<ScStwTimer>("de.itsblue.ScStw", 2, 0, "ScStwTimer");

#ifdef ScStwLibraries_ClientLibs
    qmlRegisterType<ScStwClient>("de.itsblue.ScStw", 2, 0, "ScStwClient");
    qmlRegisterType<ScStwSettings>("de.itsblue.ScStw", 2, 0, "ScStwSettings");
    qmlRegisterUncreatableType<ScStwSetting>("de.itsblue.ScStw", 2, 0, "ScStwSetting", "The ScStwSetting is manage by a ScStwSettings instance and therefore not creatable");
#endif
#endif

    qRegisterMetaType<ScStw::PadState>("ScStw::PadState");
}


#ifdef ScStwLibraries_QML
#ifdef ScStwLibraries_Styling
void ScStwLibraries::initStyling(QQmlApplicationEngine *engine) {
    qmlRegisterUncreatableType<ScStwAppTheme>("de.itsblue.ScStw.Styling", 2, 0, "ScStwAppTheme", "The ScStwAppTheme has to be managed by a ScStwAppTheme manager and is therefore not creatable");
    qmlRegisterType<ScStwAppThemeManager>("de.itsblue.ScStw.Styling", 2, 0, "ScStwAppThemeManager");
    engine->addImportPath(":/lib");
}
#endif
#endif
