irda-app-remote-manager.hpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include <stdint.h>
  3. #include <string>
  4. #include <list>
  5. #include <vector>
  6. #include <irda.h>
  7. class IrdaAppRemoteButton {
  8. friend class IrdaAppRemoteManager;
  9. std::string name;
  10. IrdaMessage message;
  11. public:
  12. IrdaAppRemoteButton(const char* name, const IrdaMessage* message)
  13. : name(name), message (*message) {}
  14. ~IrdaAppRemoteButton() {}
  15. };
  16. class IrdaAppRemote {
  17. friend class IrdaAppRemoteManager;
  18. std::vector<IrdaAppRemoteButton> buttons;
  19. std::string name;
  20. bool add(const IrdaMessage*);
  21. void add_button(size_t remote_index, const char* button_name, const IrdaMessage* message);
  22. public:
  23. IrdaAppRemote(std::string name);
  24. };
  25. class IrdaAppRemoteManager {
  26. size_t current_remote_index;
  27. size_t current_button_index;
  28. std::vector<IrdaAppRemote> remotes;
  29. public:
  30. std::vector<std::string> get_remote_list() const;
  31. std::vector<std::string> get_button_list() const;
  32. void add_remote_with_button(const char* button_name, const IrdaMessage* message);
  33. void add_button(const char* button_name, const IrdaMessage* message);
  34. size_t get_current_remote(void) const;
  35. size_t get_current_button(void) const;
  36. const IrdaMessage* get_button_data(size_t button_index) const;
  37. void set_current_remote(size_t index);
  38. void set_current_button(size_t index);
  39. void rename_button(const char* str);
  40. void rename_remote(const char* str);
  41. std::string get_current_button_name();
  42. std::string get_current_remote_name();
  43. size_t get_current_remote_buttons_number();
  44. void delete_current_button();
  45. void delete_current_remote();
  46. IrdaAppRemoteManager();
  47. ~IrdaAppRemoteManager() {};
  48. };