mirror of
https://github.com/SpartanJ/eepp.git
synced 2026-10-28 00:48:44 +03:00
Added:
UIWidgetCreator::registerWidget UIWidgetCreator::unregisterWidget UIWidgetCreator::isWidgetRegistered --HG-- branch : dev
This commit is contained in:
@@ -9,6 +9,7 @@ namespace EE { namespace UI {
|
||||
class EE_API UIWidgetCreator {
|
||||
public:
|
||||
typedef cb::Callback1<UIWidget*, std::string> CustomWidgetCb;
|
||||
typedef cb::Callback0<UIWidget*> RegisterWidgetCb;
|
||||
|
||||
static UIWidget * createFromName( std::string widgetName );
|
||||
|
||||
@@ -17,8 +18,17 @@ class EE_API UIWidgetCreator {
|
||||
static void removeCustomWidgetCallback( std::string widgetName );
|
||||
|
||||
static bool existsCustomWidgetCallback( std::string widgetName );
|
||||
|
||||
static void registerWidget( std::string widgetName, const RegisterWidgetCb& cb );
|
||||
|
||||
static void unregisterWidget( std::string widgetName );
|
||||
|
||||
static bool isWidgetRegistered( std::string widgetName );
|
||||
protected:
|
||||
typedef std::map<std::string, UIWidgetCreator::CustomWidgetCb> WidgetCallbackMap;
|
||||
typedef std::map<std::string, UIWidgetCreator::RegisterWidgetCb> RegisteredWidgetCallbackMap;
|
||||
|
||||
static RegisteredWidgetCallbackMap registeredWidget;
|
||||
|
||||
static WidgetCallbackMap widgetCallback;
|
||||
};
|
||||
|
||||
@@ -34,6 +34,8 @@ namespace EE { namespace UI {
|
||||
|
||||
UIWidgetCreator::WidgetCallbackMap UIWidgetCreator::widgetCallback = UIWidgetCreator::WidgetCallbackMap();
|
||||
|
||||
UIWidgetCreator::RegisteredWidgetCallbackMap UIWidgetCreator::registeredWidget = UIWidgetCreator::RegisteredWidgetCallbackMap();
|
||||
|
||||
UIWidget * UIWidgetCreator::createFromName( std::string widgetName ) {
|
||||
String::toLowerInPlace( widgetName );
|
||||
|
||||
@@ -70,6 +72,10 @@ UIWidget * UIWidgetCreator::createFromName( std::string widgetName ) {
|
||||
else if ( widgetName == "touchdragable" ) return UITouchDragableWidget::New();
|
||||
else if ( widgetName == "gridlayout" ) return UIGridLayout::New();
|
||||
|
||||
if ( registeredWidget.find( widgetName ) != registeredWidget.end() ) {
|
||||
return registeredWidget[ widgetName ].Call();
|
||||
}
|
||||
|
||||
if ( widgetCallback.find( widgetName ) != widgetCallback.end() ) {
|
||||
return widgetCallback[ widgetName ].Call( widgetName );
|
||||
}
|
||||
@@ -89,4 +95,16 @@ bool UIWidgetCreator::existsCustomWidgetCallback( std::string widgetName ) {
|
||||
return widgetCallback.find( String::toLower( widgetName ) ) != widgetCallback.end();
|
||||
}
|
||||
|
||||
void UIWidgetCreator::registerWidget( std::string widgetName, const UIWidgetCreator::RegisterWidgetCb & cb ) {
|
||||
registeredWidget[ String::toLower( widgetName ) ] = cb;
|
||||
}
|
||||
|
||||
void UIWidgetCreator::unregisterWidget( std::string widgetName ) {
|
||||
registeredWidget.erase( String::toLower( widgetName ) );
|
||||
}
|
||||
|
||||
bool UIWidgetCreator::isWidgetRegistered( std::string widgetName ) {
|
||||
return registeredWidget.find( String::toLower( widgetName ) ) != registeredWidget.end();
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user