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, ssize_t selected = -1);
38
39 ~SdlInputWidgetPairList() override;
40
41 SdlInputWidgetPairList& operator=(const SdlInputWidgetPairList& other) = delete;
42 SdlInputWidgetPairList& operator=(SdlInputWidgetPairList&& other) = delete;
43
44 [[nodiscard]] int run(std::vector<std::string>& result);
45 void parent(SDL_Window* parent);
46
47 protected:
48 [[nodiscard]] bool updateInternal() override;
49 [[nodiscard]] ssize_t get_index(const SDL_MouseButtonEvent& button);
50
51 private:
52 enum
53 {
54 INPUT_BUTTON_ACCEPT = 1,
55 INPUT_BUTTON_CANCEL = -2
56 };
57
58 [[nodiscard]] ssize_t next(ssize_t current);
59 [[nodiscard]] bool valid(ssize_t current) const;
60 [[nodiscard]] std::shared_ptr<SdlInputWidgetPair> get(ssize_t index);
61
62 std::vector<std::shared_ptr<SdlInputWidgetPair>> m_list;
63 ssize_t m_currentActiveTextInput = -1;
64};