TelegramTUI/inc/replymarkup.h

92 lines
1.7 KiB
C++

#pragma once
#include <cstdint>
#include <string>
#include <vector>
#include <ostream>
// interface
class ReplyMarkup {
public:
ReplyMarkup() {}
virtual ~ReplyMarkup() {}
};
class InlineButton {
public:
virtual ~InlineButton() {}
enum class ButtonType : uint32_t {
CALLBACK = 0,
CALLBACKPASSWORD,
LOGINURL,
SWITCHINLINE,
URL
};
static const std::string ButtonTypeTypes[];
static const std::string& getButtonTypeString(ButtonType t);
std::string text;
virtual ButtonType getButtonType() const = 0;
virtual void write(std::ostream& os) const = 0;
};
class InlineCallbackButton : public InlineButton {
public:
std::string data;
virtual ButtonType getButtonType() const override;
virtual void write(std::ostream& os) const override;
};
class InlineCallbackPasswordButton : public InlineButton {
public:
std::string data;
virtual ButtonType getButtonType() const override;
virtual void write(std::ostream& os) const override;
};
class InlineLoginURLButton : public InlineButton {
public:
std::string url;
int32_t id;
std::string forwardText;
virtual ButtonType getButtonType() const override;
virtual void write(std::ostream& os) const override;
};
class InlineSwitchInlineButton : public InlineButton {
public:
std::string query;
bool inCurrentChat;
virtual ButtonType getButtonType() const override;
virtual void write(std::ostream& os) const override;
};
class InlineURLButton : public InlineButton {
public:
std::string url;
virtual ButtonType getButtonType() const override;
virtual void write(std::ostream& os) const override;
};
class InlineReplyMarkup : public ReplyMarkup {
public:
virtual ~InlineReplyMarkup();
std::vector<InlineButton*> buttons;
};