File indexing completed on 2024-05-12 05:40:55

0001 #include <QApplication>
0002 
0003 #include <QJSEngine>
0004 #include <QQmlEngine>
0005 #include <QQuickStyle>
0006 #include <QUndoStack>
0007 #include <QVariant>
0008 
0009 #include "controller/view_controller/mindmapcontroller.h"
0010 #include "data/campaignmanager.h"
0011 #include "rwidgets/mediacontainers/mindmapview.h"
0012 #include "utils/iohelper.h"
0013 #include "utils/mappinghelper.h"
0014 #include <common_qml/theme.h>
0015 
0016 #include "controller/view_controller/sidemenucontroller.h"
0017 #include "model/playermodel.h"
0018 //#include "utils/iohelper.h"
0019 #include "mindmap/data/nodestyle.h"
0020 #include "mindmap/qmlItems/linkitem.h"
0021 #include "updater/media/mindmapupdater.h"
0022 #include "worker/iohelper.h"
0023 #include "test_root_path.h"
0024 
0025 void registerMindmapType()
0026 {
0027     customization::Theme::setPath(QString("%1/../../resources/stylesheet/qml/theme.ini").arg(tests::root_path));
0028     qRegisterMetaType<PlayerModel*>("PlayerModel*");
0029     qRegisterMetaType<customization::Theme*>("customization::Theme*");
0030     qRegisterMetaType<customization::StyleSheet*>("customization::StyleSheet*");
0031 
0032     qmlRegisterAnonymousType<PlayerModel>("PlayerModel", 1);
0033 
0034     qmlRegisterSingletonType<customization::Theme>("Customization", 1, 0, "Theme",
0035                                                    [](QQmlEngine* engine, QJSEngine*) -> QObject* {
0036                                                        auto instead= customization::Theme::instance();
0037                                                        engine->setObjectOwnership(instead, QQmlEngine::CppOwnership);
0038                                                        return instead;
0039                                                    });
0040 
0041     qmlRegisterType<utils::MappingHelper>("utils", 1, 0, "MappingHelper");
0042     qmlRegisterUncreatableType<MindMapController>("mindmap", 1, 0, "MindMapController",
0043                                                   "MindMapController can't be created in qml");
0044     qmlRegisterUncreatableType<mindmap::MindItem>("mindmap", 1, 0, "MindItem", "Enum only");
0045     qmlRegisterType<mindmap::SelectionController>("mindmap", 1, 0, "SelectionController");
0046     qmlRegisterUncreatableType<RemotePlayerModel>("mindmap", 1, 0, "RemotePlayerModel", "property values");
0047     qmlRegisterType<mindmap::LinkItem>("mindmap", 1, 0, "MindLink");
0048     qmlRegisterType<mindmap::NodeStyle>("mindmap", 1, 0, "NodeStyle");
0049     qmlRegisterUncreatableType<mindmap::PositionedItem>("mindmap", 1, 0, "PositionedItem", "Enum only");
0050     qmlRegisterType<mindmap::SideMenuController>("mindmap", 1, 0, "SideMenuController");
0051     qmlRegisterUncreatableType<mindmap::MindItemModel>("mindmap", 1, 0, "MindItemModel",
0052                                                        "MindItemModel can't be created in qml");
0053 }
0054 
0055 int main(int argc, char* argv[])
0056 {
0057     QApplication app(argc, argv);
0058 
0059     Q_INIT_RESOURCE(viewsqml);
0060     Q_INIT_RESOURCE(textedit);
0061     Q_INIT_RESOURCE(rolisteam);
0062     Q_INIT_RESOURCE(resources);
0063 
0064     auto format= QSurfaceFormat::defaultFormat();
0065     if(QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGL)
0066     {
0067         format.setVersion(3, 2);
0068         format.setProfile(QSurfaceFormat::CoreProfile);
0069     }
0070     format.setDepthBufferSize(24);
0071     format.setStencilBufferSize(8);
0072     format.setSamples(8);
0073     QSurfaceFormat::setDefaultFormat(format);
0074 
0075     QQuickStyle::setStyle("rolistyle");
0076     QQuickStyle::setFallbackStyle("Fusion");
0077 
0078     PlayerModel* pmodel= new PlayerModel();
0079     registerMindmapType();
0080     auto model= new RemotePlayerModel(pmodel);
0081 
0082     campaign::CampaignManager campaignManager(nullptr);
0083     campaignManager.openCampaign(
0084         QUrl(QString("file://%1/manual/mindmap/campaign").arg(tests::root_path)));
0085 
0086     MindMapUpdater updater(nullptr, &campaignManager);
0087     auto serializedData= utils::IOHelper::loadFile(QString("file://%1/manual/mindmap/campaign/media/test.rmap").arg(tests::root_path));
0088 
0089     QUndoStack undoStack;
0090     MindMapController::setRemotePlayerModel(model);
0091 
0092     MindMapController ctrl("uuid1");
0093     IOHelper::readMindmapController(&ctrl, serializedData);
0094     updater.addMediaController(&ctrl);
0095     QObject::connect(&ctrl, &MindMapController::performCommand, &ctrl,
0096                      [&undoStack](QUndoCommand* cmd) { undoStack.push(cmd); });
0097     ctrl.setLocalGM(true);
0098 
0099     ctrl.setLocalId("uuid");
0100     ctrl.setOwnerId("uuid");
0101 
0102     MindMapView view(&ctrl);
0103 
0104     view.show();
0105     return app.exec();
0106 }