GAction.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include <AK/AKString.h>
  3. #include <AK/Function.h>
  4. #include <AK/Retainable.h>
  5. #include <AK/Retained.h>
  6. #include <SharedGraphics/GraphicsBitmap.h>
  7. class GAction : public Retainable<GAction> {
  8. public:
  9. static Retained<GAction> create(const String& text, Function<void(const GAction&)> callback)
  10. {
  11. return adopt(*new GAction(text, move(callback)));
  12. }
  13. static Retained<GAction> create(const String& text, const String& custom_data, Function<void(const GAction&)> callback)
  14. {
  15. return adopt(*new GAction(text, custom_data, move(callback)));
  16. }
  17. static Retained<GAction> create(const String& text, RetainPtr<GraphicsBitmap>&& icon, Function<void(const GAction&)> callback)
  18. {
  19. return adopt(*new GAction(text, move(icon), move(callback)));
  20. }
  21. ~GAction();
  22. String text() const { return m_text; }
  23. String custom_data() const { return m_custom_data; }
  24. const GraphicsBitmap* icon() const { return m_icon.ptr(); }
  25. Function<void(GAction&)> on_activation;
  26. void activate();
  27. private:
  28. GAction(const String& text, Function<void(const GAction&)> = nullptr);
  29. GAction(const String& text, RetainPtr<GraphicsBitmap>&& icon, Function<void(const GAction&)> = nullptr);
  30. GAction(const String& text, const String& custom_data = String(), Function<void(const GAction&)> = nullptr);
  31. String m_text;
  32. String m_custom_data;
  33. RetainPtr<GraphicsBitmap> m_icon;
  34. };