1 /*!
2 	@file
3 	@author		Albert Semenov
4 	@date		07/2012
5 */
6 
7 #include "Precompiled.h"
8 #include "StatisticInfoControl.h"
9 #include "FactoryManager.h"
10 #include "CommandManager.h"
11 #include "SettingsManager.h"
12 #include "Application.h"
13 
14 namespace tools
15 {
16 
FACTORY_ITEM_ATTRIBUTE(StatisticInfoControl)17 	FACTORY_ITEM_ATTRIBUTE(StatisticInfoControl)
18 
19 	StatisticInfoControl::StatisticInfoControl() :
20 		mText(nullptr)
21 	{
22 	}
23 
~StatisticInfoControl()24 	StatisticInfoControl::~StatisticInfoControl()
25 	{
26 		MyGUI::Gui::getInstance().eventFrameStart -= MyGUI::newDelegate(this, &StatisticInfoControl::notifyFrameStart);
27 	}
28 
OnInitialise(Control * _parent,MyGUI::Widget * _place,const std::string & _layoutName)29 	void StatisticInfoControl::OnInitialise(Control* _parent, MyGUI::Widget* _place, const std::string& _layoutName)
30 	{
31 		Control::OnInitialise(_parent, _place, "StatisticInfoControl.layout");
32 
33 		assignWidget(mText, "Text");
34 
35 		CommandManager::getInstance().getEvent("Command_StatisticInfo")->connect(this, &StatisticInfoControl::command_StatisticInfo);
36 
37 		getRoot()->setVisible(SettingsManager::getInstance().getValue<bool>("Controls/StatisticInfoControl/Visible"));
38 
39 		MyGUI::Gui::getInstance().eventFrameStart += MyGUI::newDelegate(this, &StatisticInfoControl::notifyFrameStart);
40 	}
41 
command_StatisticInfo(const MyGUI::UString & _commandName,bool & _result)42 	void StatisticInfoControl::command_StatisticInfo(const MyGUI::UString& _commandName, bool& _result)
43 	{
44 		getRoot()->setVisible(!getRoot()->getVisible());
45 		SettingsManager::getInstance().setValue("Controls/StatisticInfoControl/Visible", getRoot()->getVisible());
46 
47 		_result = true;
48 	}
49 
notifyFrameStart(float _time)50 	void StatisticInfoControl::notifyFrameStart(float _time)
51 	{
52 		static float time = 0;
53 		time += _time;
54 		if (time > 1)
55 		{
56 			time -= 1;
57 
58 			std::string value;
59 
60 			MyGUI::MapString statistic = Application::getInstance().getStatistic();
61 			for (MyGUI::MapString::const_iterator info = statistic.begin(); info != statistic.end(); info ++)
62 			{
63 				if (!value.empty())
64 					value += "\n";
65 				value += (*info).first + " : " + (*info).second;
66 			}
67 
68 			mText->setCaption(value);
69 		}
70 	}
71 
72 }
73