1 /*!
2 	@file
3 	@author		Albert Semenov
4 	@date		08/2010
5 */
6 
7 #include "Precompiled.h"
8 #include "TestState.h"
9 #include "CommandManager.h"
10 #include "StateManager.h"
11 #include "DialogManager.h"
12 #include "MessageBoxManager.h"
13 #include "EditorWidgets.h"
14 #include "WidgetSelectorManager.h"
15 #include "FactoryManager.h"
16 
17 namespace tools
18 {
19 
FACTORY_ITEM_ATTRIBUTE(TestState)20 	FACTORY_ITEM_ATTRIBUTE(TestState)
21 
22 	TestState::TestState() :
23 		mTestLayout(nullptr),
24 		mBackgroundControl(nullptr)
25 	{
26 		CommandManager::getInstance().getEvent("Command_Quit")->connect(this, &TestState::commandQuit);
27 		CommandManager::getInstance().getEvent("Command_Test")->connect(this, &TestState::command_Test);
28 	}
29 
~TestState()30 	TestState::~TestState()
31 	{
32 		deleteTestLayout();
33 	}
34 
initState()35 	void TestState::initState()
36 	{
37 		WidgetSelectorManager::getInstance().saveSelectedWidget();
38 		WidgetSelectorManager::getInstance().setSelectedWidget(nullptr);
39 
40 		mTestLayout = EditorWidgets::getInstance().savexmlDocument();
41 		EditorWidgets::getInstance().clear();
42 		EditorWidgets::getInstance().loadxmlDocument(mTestLayout, true);
43 
44 		mBackgroundControl = new BackgroundControl();
45 	}
46 
cleanupState()47 	void TestState::cleanupState()
48 	{
49 		EditorWidgets::getInstance().clear();
50 		EditorWidgets::getInstance().loadxmlDocument(mTestLayout, false);
51 
52 		deleteTestLayout();
53 
54 		WidgetSelectorManager::getInstance().restoreSelectedWidget();
55 
56 		delete mBackgroundControl;
57 		mBackgroundControl = nullptr;
58 	}
59 
pauseState()60 	void TestState::pauseState()
61 	{
62 	}
63 
resumeState()64 	void TestState::resumeState()
65 	{
66 	}
67 
commandQuit(const MyGUI::UString & _commandName,bool & _result)68 	void TestState::commandQuit(const MyGUI::UString& _commandName, bool& _result)
69 	{
70 		if (MessageBoxManager::getInstance().hasAny())
71 			return;
72 
73 		if (!StateManager::getInstance().getStateActivate(this))
74 			return;
75 
76 		StateManager::getInstance().stateEvent("TestState", "Exit");
77 
78 		_result = true;
79 	}
80 
deleteTestLayout()81 	void TestState::deleteTestLayout()
82 	{
83 		if (mTestLayout != nullptr)
84 		{
85 			delete mTestLayout;
86 			mTestLayout = nullptr;
87 		}
88 	}
89 
command_Test(const MyGUI::UString & _commandName,bool & _result)90 	void TestState::command_Test(const MyGUI::UString& _commandName, bool& _result)
91 	{
92 		if (DialogManager::getInstance().getAnyDialog())
93 			return;
94 
95 		if (MessageBoxManager::getInstance().hasAny())
96 			return;
97 
98 		StateManager::getInstance().stateEvent("EditorState", "Test");
99 
100 		_result = true;
101 	}
102 
103 }
104