YCLIMP
Yandex Command Line Interface Music Player
Loading...
Searching...
No Matches
DialogElement.hpp
1#pragma once
2
3#include "Primitives.hpp"
4
5#include <string>
6#include <variant>
7#include <vector>
8
9const std::string CANCEL_OPTION = "Cancel";
10const std::string OK_OPTION = "Ok";
11const std::string ADD_TO_NEW_PLAYLIST_OPTION = "AddToNewPlaylist";
12
22class HorizontalOptionChoice
23{
24public:
25 HorizontalOptionChoice(std::vector<std::string> options, const Recti& bounds);
26
27 void Draw() const;
28 void SelectNext();
29 void ConfirmCurrentChoice();
30 void HandleResizeEvent(const Recti& newBounds);
31
32 std::string_view GetFinalChoice() const;
33 std::size_t GetFinalChoiceIndx() const;
34
35private:
36 std::size_t mCurrentSelection;
37 std::vector<std::string> mOptions;
38 Recti mBounds;
39 bool mFinalChoice;
40};
41
49class DialogElement
50{
51public:
52 DialogElement(const Recti& bounds);
53
54 virtual void Draw() const = 0;
55 virtual void HandleResizeEvent(const Recti& newRect) = 0;
56 virtual void HandleRawInput(int rawInputChar) = 0;
57
58 virtual void SetFinished(std::string finishedStatus);
59 virtual bool IsFinished() const;
60 virtual const std::string& GetFinishedStatus() const;
61
62 void SetData(const std::variant<std::vector<std::size_t>, std::string>& data);
63 virtual std::variant<std::vector<std::size_t>, std::string> GetData() const;
64
65 virtual void InputUp() = 0;
66 virtual void InputDown() = 0;
67 virtual void InputLeft() = 0;
68 virtual void InputRight() = 0;
69 virtual void InputEnter() = 0;
70 virtual void InputTab() = 0;
71
72private:
73 bool mIsFinished;
74 std::string mFinishedStatus;
75 std::variant<std::vector<std::size_t>, std::string> mData;
76};
void SelectNext()
Next option in a loop (right selection)
Definition DialogElement.cpp:25