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 }