1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
/*!
@file
@author Albert Semenov
@date 09/2010
*/
#include "Precompiled.h"
#include "SettingsUpdateResourcesControl.h"
#include "SettingsManager.h"
#include "Localise.h"
#include "FactoryManager.h"
namespace tools
{
FACTORY_ITEM_ATTRIBUTE(SettingsUpdateResourcesControl)
SettingsUpdateResourcesControl::SettingsUpdateResourcesControl() :
mResourceAdd(nullptr),
mResourceDelete(nullptr),
mResources(nullptr),
mTextFieldControl(nullptr)
{
}
SettingsUpdateResourcesControl::~SettingsUpdateResourcesControl()
{
mResourceAdd->eventMouseButtonClick -= MyGUI::newDelegate(this, &SettingsUpdateResourcesControl::notifyClickAdd);
mResourceDelete->eventMouseButtonClick -= MyGUI::newDelegate(this, &SettingsUpdateResourcesControl::notifyClickDelete);
delete mTextFieldControl;
mTextFieldControl = nullptr;
}
void SettingsUpdateResourcesControl::OnInitialise(Control* _parent, MyGUI::Widget* _place, const std::string& _layoutName)
{
Control::OnInitialise(_parent, _place, _layoutName);
assignWidget(mResourceAdd, "ResourceAdd");
assignWidget(mResourceDelete, "ResourceDelete");
assignWidget(mResources, "Resources");
mTextFieldControl = new TextFieldControl();
mTextFieldControl->Initialise();
mTextFieldControl->eventEndDialog.connect(this, &SettingsUpdateResourcesControl::notifyEndDialog);
mResourceAdd->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsUpdateResourcesControl::notifyClickAdd);
mResourceDelete->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsUpdateResourcesControl::notifyClickDelete);
}
void SettingsUpdateResourcesControl::loadSettings()
{
mResources->removeAllItems();
SettingsManager::VectorString paths = SettingsManager::getInstance().getValueList("Resources/UpdateResource.List");
for (SettingsManager::VectorString::const_iterator item = paths.begin(); item != paths.end(); ++ item)
mResources->addItem(*item);
}
void SettingsUpdateResourcesControl::saveSettings()
{
SettingsManager::VectorString paths;
for (size_t index = 0; index < mResources->getItemCount(); ++ index)
paths.push_back(mResources->getItemNameAt(index));
SettingsManager::getInstance().setValueList("Resources/UpdateResource.List", paths);
}
void SettingsUpdateResourcesControl::notifyClickAdd(MyGUI::Widget* _sender)
{
mResources->addItem("");
mResources->beginToItemAt(mResources->getItemCount() - 1);
mTextFieldControl->setCaption(replaceTags("CaptionAddResource"));
mTextFieldControl->setTextField("");
MyGUI::Widget* widget = mResources->getWidgetByIndex(mResources->getItemCount() - 1);
if (widget != nullptr)
mTextFieldControl->setCoord(MyGUI::IntCoord(widget->getAbsoluteLeft(), widget->getAbsoluteTop(), widget->getWidth(), widget->getHeight()));
mTextFieldControl->doModal();
}
void SettingsUpdateResourcesControl::notifyClickDelete(MyGUI::Widget* _sender)
{
size_t index = mResources->getIndexSelected();
if (index != MyGUI::ITEM_NONE)
mResources->removeItemAt(index);
}
void SettingsUpdateResourcesControl::notifyEndDialog(Dialog* _sender, bool _result)
{
mTextFieldControl->endModal();
if (_result)
{
if (mTextFieldControl->getTextField() != "")
{
mResources->setItemNameAt(mResources->getItemCount() - 1, mTextFieldControl->getTextField());
return;
}
}
mResources->removeItemAt(mResources->getItemCount() - 1);
}
void SettingsUpdateResourcesControl::OnCommand(const std::string& _command)
{
Control::OnCommand(_command);
if (_command == "Command_LoadSettings")
loadSettings();
else if (_command == "Command_SaveSettings")
saveSettings();
}
}
|