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