58 lines
2.4 KiB
C++
58 lines
2.4 KiB
C++
#include "KeyboardFactory.hpp"
|
|
#include "constants.hpp"
|
|
|
|
TgBot::InlineKeyboardMarkup::Ptr KeyboardFactory::createMainMenu() {
|
|
auto keyboard = std::make_shared<TgBot::InlineKeyboardMarkup>();
|
|
TgBot::InlineKeyboardButton::Ptr button1(new TgBot::InlineKeyboardButton);
|
|
button1->text = BotConstants::Button::FIND_ANIME;
|
|
button1->callbackData = BotConstants::Callback::FIND_ANIME;
|
|
TgBot::InlineKeyboardButton::Ptr button2(new TgBot::InlineKeyboardButton);
|
|
button2->text = BotConstants::Button::MY_TITLES;
|
|
button2->callbackData = BotConstants::Callback::MY_TITLES;
|
|
|
|
keyboard->inlineKeyboard = {{button1, button2}};
|
|
return keyboard;
|
|
}
|
|
|
|
TgBot::InlineKeyboardMarkup::Ptr KeyboardFactory::createMyTitles(std::vector<Title> titles) {
|
|
auto keyboard = std::make_shared<TgBot::InlineKeyboardMarkup>();
|
|
std::vector<TgBot::InlineKeyboardButton::Ptr> row;
|
|
std::vector<std::vector<TgBot::InlineKeyboardButton::Ptr>> layout;
|
|
|
|
int counter = 0;
|
|
for(Title& title : titles) {
|
|
if(counter >= 6) {
|
|
break;
|
|
}
|
|
auto button = std::make_shared<TgBot::InlineKeyboardButton>();
|
|
button->text = std::to_string(title.num) + " " + title.name;
|
|
button->callbackData = "title:" + std::to_string(title.num);
|
|
row.push_back(button);
|
|
counter++;
|
|
if(counter % 2 == 0) {
|
|
layout.push_back(row);
|
|
row.clear();
|
|
}
|
|
}
|
|
|
|
// TODO: Додумать логику, когда пришло 6 записей в конце
|
|
if(counter % 2 == 1) {
|
|
auto button = std::make_shared<TgBot::InlineKeyboardButton>();
|
|
button->text = BotConstants::Button::PREV;
|
|
button->callbackData = BotConstants::Callback::LIST_PREV + std::to_string(titles[0].num);
|
|
layout[counter / 2].push_back(button);
|
|
}
|
|
else {
|
|
auto button_prev = std::make_shared<TgBot::InlineKeyboardButton>();
|
|
button_prev->text = BotConstants::Button::PREV;
|
|
button_prev->callbackData = BotConstants::Callback::LIST_PREV + std::to_string(titles[0].num);
|
|
auto button_next = std::make_shared<TgBot::InlineKeyboardButton>();
|
|
button_next->text = BotConstants::Button::NEXT;
|
|
button_next->callbackData = BotConstants::Callback::LIST_NEXT + std::to_string(titles[5].num);
|
|
layout.push_back({button_prev, button_next});
|
|
}
|
|
|
|
keyboard->inlineKeyboard = layout;
|
|
|
|
return keyboard;
|
|
}
|