UIProgressModal.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicEditor
  4. #include "AtomicEditor.h"
  5. #include <Atomic/Core/Context.h>
  6. #include "AEEvents.h"
  7. #include "UI/UIMainFrame.h"
  8. #include "UI/Modal/UIProgressModal.h"
  9. #include <TurboBadger/tb_widgets_common.h>
  10. #include <TurboBadger/tb_window.h>
  11. #include <TurboBadger/tb_message_window.h>
  12. #include <TurboBadger/tb_editfield.h>
  13. #include <Atomic/UI/TBUI.h>
  14. using namespace tb;
  15. namespace AtomicEditor
  16. {
  17. /// Construct.
  18. ProgressModal::ProgressModal(Context* context, const String &title, const String &message) :
  19. AEWidget(context)
  20. , window_(0)
  21. , dimmer_(0)
  22. {
  23. TBUI* tbui = GetSubsystem<TBUI>();
  24. dimmer_ = new TBDimmer();
  25. window_ = new TBWindow();
  26. tbui->LoadResourceFile(window_->GetContentRoot(), "AtomicEditor/editor/ui/progressmodal.tb.txt");
  27. window_->ResizeToFitContent();
  28. delegate_->AddChild(window_);
  29. message_ = delegate_->GetWidgetByIDAndType<TBTextField>(TBIDC("message"));
  30. assert(message_);
  31. message_->SetText(message.CString());
  32. Center();
  33. }
  34. /// Destruct.
  35. ProgressModal::~ProgressModal()
  36. {
  37. }
  38. void ProgressModal::SetMessage(const String& message)
  39. {
  40. message_->SetText(message.CString());
  41. }
  42. void ProgressModal::Center()
  43. {
  44. TBUI* tbui = GetSubsystem<TBUI>();
  45. TBRect rect = window_->GetRect();
  46. TBWidget* root = tbui->GetRootWidget();
  47. TBRect bounds(0, 0, root->GetRect().w, root->GetRect().h);
  48. window_->SetRect(rect.CenterIn(bounds).MoveIn(bounds).Clip(bounds));
  49. delegate_->SetRect(bounds);
  50. }
  51. void ProgressModal::Show()
  52. {
  53. assert(!dimmer_->GetParent());
  54. TBUI* tbui = GetSubsystem<TBUI>();
  55. TBWidget* root = tbui->GetRootWidget();
  56. root->AddChild(dimmer_);
  57. root->AddChild(delegate_);
  58. }
  59. void ProgressModal::Hide()
  60. {
  61. if (dimmer_->GetParent())
  62. dimmer_->GetParent()->RemoveChild(dimmer_);
  63. if (delegate_->GetParent())
  64. delegate_->GetParent()->RemoveChild(delegate_);
  65. }
  66. }