Raspberry Pi Weighting Control System
This project serves as a simple weighting control system, that was realized as a Bachelor Thesis
screen_manager.h
Go to the documentation of this file.
1 #ifndef SCREEN_MANAGER_H
2 #define SCREEN_MANAGER_H
3 
4 #include <stdint.h>
5 #include <unordered_map>
6 #include <vector>
7 #include <memory>
8 #include "gui_element.h"
9 
10 #define PREV_SCREEN_Q_MAX 50
11 
12 #define LOGIN_SCREEN 1
13 #define MEASURING_SCREEN 2
14 #define SELECTION_SCREEN 3
15 #define DETAIL_SCREEN 4
16 #define ADMIN_SELECT_SCREEN 5
17 #define ADMIN_CTRL_SCREEN 6
18 
20  private:
21  uint8_t selected_screen = 1;
22  //std::map<uint8_t, std::unique_ptr<screen_interface>> available_screens;
23  std::unordered_map<uint8_t, std::vector<std::unique_ptr<gui_element>>> available_screens;
24  std::vector<uint8_t> prev_screen_stack; // FIXME - deque might be a bit more efficient
25 
26  void render_screen(std::vector<std::unique_ptr<gui_element>> &elements);
27  bool is_screen_available_to_user(const uint8_t *screens, const uint8_t count, const uint8_t requested);
28 
29  public:
32 
34  void render_active_screen();
35  // added instead of making selecte_screen public, because setter is being used
36  uint8_t get_selected_screen();
37  void refresh_screen_elements(uint8_t screen);
38  void refresh_all_screns();
39  void set_selected_screen(uint8_t screen);
44  uint8_t get_screen_count();
45 };
46 
47 #endif
Paren class for other gui elements.
Definition: gui_element.h:8
gui_element * focused
void clear_previous_screen_stack()
void pop_screen_from_previous()
void set_selected_screen(uint8_t screen)
uint8_t get_screen_count()
void push_screen_to_previous()
void set_err_screen_content()
gui_element * activated
void render_active_screen()
void refresh_screen_elements(uint8_t screen)
uint8_t get_selected_screen()