1 /*! 2 @file 3 @author Albert Semenov 4 @date 07/2012 5 */ 6 7 #include "Precompiled.h" 8 #include "TestState.h" 9 #include "FactoryManager.h" 10 #include "CommandManager.h" 11 #include "StateManager.h" 12 #include "DialogManager.h" 13 #include "MessageBoxManager.h" 14 #include "DataManager.h" 15 #include "DataUtility.h" 16 #include "SettingsManager.h" 17 18 namespace tools 19 { 20 FACTORY_ITEM_ATTRIBUTE(TestState)21 FACTORY_ITEM_ATTRIBUTE(TestState) 22 23 TestState::TestState() : 24 mTestWindow(nullptr), 25 mBack(nullptr) 26 { 27 CommandManager::getInstance().getEvent("Command_Test")->connect(this, &TestState::commandTest); 28 CommandManager::getInstance().getEvent("Command_Quit")->connect(this, &TestState::commandQuit); 29 } 30 ~TestState()31 TestState::~TestState() 32 { 33 if (mTestWindow != nullptr) 34 { 35 delete mTestWindow; 36 mTestWindow = nullptr; 37 } 38 39 if (mBack != nullptr) 40 { 41 delete mBack; 42 mBack = nullptr; 43 } 44 } 45 initState()46 void TestState::initState() 47 { 48 if (mBack == nullptr) 49 { 50 mBack = new Control(); 51 mBack->Initialise(SettingsManager::getInstance().getValue("TestState/BackgroundLayout")); 52 } 53 54 mBack->getRoot()->setVisible(true); 55 56 if (mTestWindow == nullptr) 57 { 58 mTestWindow = new TestWindow(); 59 mTestWindow->Initialise(); 60 mTestWindow->eventEndDialog.connect(this, &TestState::notifyEndDialogTest); 61 } 62 63 DataPtr data = DataUtility::getSelectedDataByType("Skin"); 64 if (data != nullptr) 65 { 66 mTestWindow->setSkinItem(data); 67 mTestWindow->getRoot()->setVisible(true); 68 mTestWindow->doModal(); 69 } 70 else 71 { 72 StateManager::getInstance().stateEvent(this, "Exit"); 73 } 74 } 75 cleanupState()76 void TestState::cleanupState() 77 { 78 mTestWindow->getRoot()->setVisible(false); 79 mBack->getRoot()->setVisible(false); 80 } 81 pauseState()82 void TestState::pauseState() 83 { 84 } 85 resumeState()86 void TestState::resumeState() 87 { 88 } 89 commandTest(const MyGUI::UString & _commandName,bool & _result)90 void TestState::commandTest(const MyGUI::UString& _commandName, bool& _result) 91 { 92 if (DialogManager::getInstance().getAnyDialog()) 93 return; 94 95 if (MessageBoxManager::getInstance().hasAny()) 96 return; 97 98 DataPtr data = DataUtility::getSelectedDataByType("Skin"); 99 if (data == nullptr) 100 return; 101 102 StateManager::getInstance().stateEvent("EditorState", "Test"); 103 104 _result = true; 105 } 106 commandQuit(const MyGUI::UString & _commandName,bool & _result)107 void TestState::commandQuit(const MyGUI::UString& _commandName, bool& _result) 108 { 109 if (MessageBoxManager::getInstance().hasAny()) 110 return; 111 112 if (!StateManager::getInstance().getStateActivate(this)) 113 return; 114 115 StateManager::getInstance().stateEvent("TestState", "Exit"); 116 117 _result = true; 118 } 119 notifyEndDialogTest(Dialog * _sender,bool _result)120 void TestState::notifyEndDialogTest(Dialog* _sender, bool _result) 121 { 122 _sender->endModal(); 123 124 StateManager::getInstance().stateEvent("TestState", "Exit"); 125 } 126 127 } 128