FreeRDP
Loading...
Searching...
No Matches
sdl_input_widget_pair_list.hpp
1
20#pragma once
21
22#include <string>
23#include <vector>
24#include <SDL3/SDL.h>
25
26#include "sdl_widget_list.hpp"
27#include "sdl_input_widget_pair.hpp"
28#include "sdl_buttons.hpp"
29
31{
32 public:
33 SdlInputWidgetPairList(const std::string& title, const std::vector<std::string>& labels,
34 const std::vector<std::string>& initial,
35 const std::vector<Uint32>& flags);
38
39 virtual ~SdlInputWidgetPairList() override;
40
41 SdlInputWidgetPairList& operator=(const SdlInputWidgetPairList& other) = delete;
42 SdlInputWidgetPairList& operator=(SdlInputWidgetPairList&& other) = delete;
43
44 int run(std::vector<std::string>& result);
45
46 protected:
47 bool updateInternal() override;
48 ssize_t get_index(const SDL_MouseButtonEvent& button);
49
50 private:
51 enum
52 {
53 INPUT_BUTTON_ACCEPT = 1,
54 INPUT_BUTTON_CANCEL = -2
55 };
56
57 ssize_t next(ssize_t current);
58 [[nodiscard]] bool valid(ssize_t current) const;
59 std::shared_ptr<SdlInputWidgetPair> get(ssize_t index);
60
61 std::vector<std::shared_ptr<SdlInputWidgetPair>> _list;
62};