UIProgressModal.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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/AtomicGameEngine
  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/UI.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. UI* tbui = GetSubsystem<UI>();
  24. dimmer_ = new TBDimmer();
  25. window_ = new TBWindow();
  26. window_->SetSettings(WINDOW_SETTINGS_DEFAULT & ~WINDOW_SETTINGS_CLOSE_BUTTON);
  27. tbui->LoadResourceFile(window_->GetContentRoot(), "AtomicEditor/editor/ui/progressmodal.tb.txt");
  28. window_->ResizeToFitContent();
  29. delegate_->AddChild(window_);
  30. message_ = delegate_->GetWidgetByIDAndType<TBTextField>(TBIDC("message"));
  31. assert(message_);
  32. message_->SetText(message.CString());
  33. window_->SetText(title.CString());
  34. Center();
  35. }
  36. /// Destruct.
  37. ProgressModal::~ProgressModal()
  38. {
  39. }
  40. void ProgressModal::SetMessage(const String& message)
  41. {
  42. message_->SetText(message.CString());
  43. }
  44. void ProgressModal::Center()
  45. {
  46. UI* tbui = GetSubsystem<UI>();
  47. TBRect rect = window_->GetRect();
  48. TBWidget* root = tbui->GetRootWidget();
  49. TBRect bounds(0, 0, root->GetRect().w, root->GetRect().h);
  50. window_->SetRect(rect.CenterIn(bounds).MoveIn(bounds).Clip(bounds));
  51. delegate_->SetRect(bounds);
  52. }
  53. void ProgressModal::Show()
  54. {
  55. assert(!dimmer_->GetParent());
  56. UI* tbui = GetSubsystem<UI>();
  57. TBWidget* root = tbui->GetRootWidget();
  58. root->AddChild(dimmer_);
  59. root->AddChild(delegate_);
  60. }
  61. void ProgressModal::Hide()
  62. {
  63. UI* tbui = GetSubsystem<UI>();
  64. tbui->GetRootWidget()->SetFocusRecursive(WIDGET_FOCUS_REASON_UNKNOWN);
  65. if (dimmer_->GetParent())
  66. dimmer_->GetParent()->RemoveChild(dimmer_);
  67. if (delegate_->GetParent())
  68. delegate_->GetParent()->RemoveChild(delegate_);
  69. }
  70. }