code_uiselectitem.cpp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // UISelectItem and UISelectItemSource application source code
  2. #include <ThirdParty/TurboBadger/tb_widgets.h>
  3. #include <Atomic/UI/UISelectItem.h>
  4. #include <Atomic/UI/UISelectList.h>
  5. #include <Atomic/UI/UILayout.h>
  6. #include "PeriodicApp.h"
  7. void PeriodicApp::setup_uiselectitem( UIWidget *layout )
  8. {
  9. PODVector<UIWidget*> dest;
  10. layout->SearchWidgetClass( "TBButton", dest );
  11. for (unsigned ii = 0; ii < dest.Size(); ii++)
  12. SubscribeToEvent(dest[ii], E_WIDGETEVENT, ATOMIC_HANDLER(PeriodicApp, HandleUiselectitemEvent ));
  13. UISelectList *mylist = new UISelectList(context_);
  14. mylist->SetId( "UISelectItemList"); // tag it, in case we want to get it again later
  15. UILayoutParams *lpx = new UILayoutParams(context_);
  16. lpx->SetWidth (200);
  17. lpx->SetHeight(256);
  18. lpx->SetMinWidth(200);
  19. lpx->SetMinHeight(256);
  20. lpx->SetMaxWidth (200);
  21. lpx->SetMaxHeight(256);
  22. mylist->SetLayoutParams(lpx);
  23. UIWidget* lower = layout->GetWidget("selectitemlower");
  24. UIWidget* mysvc = layout->GetWidget("selectitemlayout");
  25. mysvc->AddChildBefore(mylist, lower);
  26. SubscribeToEvent(mylist, E_WIDGETEVENT, ATOMIC_HANDLER(PeriodicApp, HandleUiselectitemEvent ));
  27. UISelectItemSource *sis = new UISelectItemSource(context_);
  28. sis->AddItem( new UISelectItem( context_, "UISelectItem1", "sitem1" ) );
  29. sis->AddItem( new UISelectItem( context_, "UISelectItem2", "sitem2" ) );
  30. sis->AddItem( new UISelectItem( context_, "UISelectItem3", "sitem3", "DuckButton" ) );
  31. sis->AddItem( new UISelectItem( context_, "UISelectItem4", "sitem4", "LogoAtomic" ) );
  32. context_->SetGlobalVar( "selectitemptr", sis ); // make a global reference.
  33. mylist->SetSource(sis); // assign this into the list
  34. }
  35. void PeriodicApp::HandleUiselectitemEvent(StringHash eventType, VariantMap& eventData)
  36. {
  37. using namespace WidgetEvent;
  38. UIWidget* widget = static_cast<UIWidget*>(eventData[P_TARGET].GetPtr());
  39. String refid = eventData[P_REFID].GetString();
  40. if ( widget == NULL ) return;
  41. if (eventData[P_TYPE] == UI_EVENT_TYPE_CLICK)
  42. {
  43. if (widget->GetId() == "uiselectitemcode" )
  44. {
  45. AppLog( "UISelectItem support : " + widget->GetId() + " was pressed " );
  46. ViewCode ( "Components/code_uiselectitem.cpp", widget->GetParent() );
  47. }
  48. if (widget->GetId() == "uiselectitemlayout" )
  49. {
  50. AppLog( "UISelectItem support : " + widget->GetId() + " was pressed ");
  51. ViewCode ( "Scenes/layout_uiselectitem.ui.txt", widget->GetParent() );
  52. }
  53. if (widget->GetId() == "UISelectItemList" )
  54. {
  55. AppLog( "UISelectItem event : " + widget->GetId() + " and " + refid + " was selected ");
  56. }
  57. if (widget->GetId() == "uisi1" )
  58. {
  59. AppLog( "UISelectItem action : " + widget->GetId() + " was pressed ");
  60. UISelectItemSource *gsis = (UISelectItemSource*)context_->GetGlobalVar("selectitemptr").GetPtr();
  61. UISelectList* slist = static_cast<UISelectList*>(widget->FindWidget("UISelectItemList"));
  62. gsis->AddItem( new UISelectItem( context_, "New UISelectItem") );
  63. slist->SetSource(gsis);
  64. }
  65. if (widget->GetId() == "uisi2" )
  66. {
  67. AppLog( "UISelectItem action : " + widget->GetId() + " was pressed ");
  68. UISelectItemSource *gsis = (UISelectItemSource*)context_->GetGlobalVar("selectitemptr").GetPtr();
  69. UISelectList* slist = static_cast<UISelectList*>(widget->FindWidget("UISelectItemList"));
  70. gsis->AddItem( new UISelectItem( context_,"Newer UISelectItem", "neweritem" ) );
  71. slist->SetSource(gsis);
  72. }
  73. if (widget->GetId() == "uisi3" )
  74. {
  75. AppLog( "UISelectItem action : " + widget->GetId() + " was pressed ");
  76. UISelectItemSource *gsis = (UISelectItemSource*)context_->GetGlobalVar("selectitemptr").GetPtr();
  77. UISelectList* slist = static_cast<UISelectList*>(widget->FindWidget("UISelectItemList"));
  78. gsis->AddItem( new UISelectItem(context_, "A Duck", "aduck", "DuckButton" ) );
  79. slist->SetSource(gsis);
  80. }
  81. if (widget->GetId() == "uisi4" )
  82. {
  83. AppLog( "UISelectItem action : " + widget->GetId() + " was pressed ");
  84. UISelectItemSource *gsis = (UISelectItemSource*)context_->GetGlobalVar("selectitemptr").GetPtr();
  85. UISelectList* slist = static_cast<UISelectList*>(widget->FindWidget("UISelectItemList"));
  86. gsis->AddItem( new UISelectItem(context_, "Atomic!", "atomic", "LogoAtomic" ) );
  87. slist->SetSource(gsis);
  88. }
  89. if (widget->GetId() == "uisi5" )
  90. {
  91. AppLog( "UISelectItem action : " + widget->GetId() + " was pressed ");
  92. UISelectItemSource *gsis = (UISelectItemSource*)context_->GetGlobalVar("selectitemptr").GetPtr();
  93. UISelectList* slist = static_cast<UISelectList*>(widget->FindWidget("UISelectItemList"));
  94. gsis->Clear();
  95. slist->SetSource(gsis);
  96. }
  97. }
  98. }