button_element.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "button_element.h"
  2. #include <gui/elements.h>
  3. ButtonElement::ButtonElement() {
  4. }
  5. ButtonElement::~ButtonElement() {
  6. }
  7. void ButtonElement::draw(Canvas* canvas) {
  8. if(text != nullptr) {
  9. canvas_set_font(canvas, FontSecondary);
  10. switch(type) {
  11. case Type::Left:
  12. elements_button_left(canvas, text);
  13. break;
  14. case Type::Center:
  15. elements_button_center(canvas, text);
  16. break;
  17. case Type::Right:
  18. elements_button_right(canvas, text);
  19. break;
  20. }
  21. }
  22. }
  23. bool ButtonElement::input(InputEvent* event) {
  24. bool consumed = false;
  25. if(event->type == InputTypeShort && callback != nullptr) {
  26. switch(type) {
  27. case Type::Left:
  28. if(event->key == InputKeyLeft) {
  29. callback(context);
  30. consumed = true;
  31. }
  32. break;
  33. case Type::Center:
  34. if(event->key == InputKeyOk) {
  35. callback(context);
  36. consumed = true;
  37. }
  38. break;
  39. case Type::Right:
  40. if(event->key == InputKeyRight) {
  41. callback(context);
  42. consumed = true;
  43. }
  44. break;
  45. }
  46. }
  47. return consumed;
  48. }
  49. void ButtonElement::set_type(Type _type, const char* _text) {
  50. lock_model();
  51. type = _type;
  52. text = _text;
  53. unlock_model(true);
  54. }
  55. void ButtonElement::set_callback(void* _context, ButtonElementCallback _callback) {
  56. context = _context;
  57. callback = _callback;
  58. }