TelegramTUI/inc/tgtui.h

47 lines
767 B
C
Raw Normal View History

2023-11-20 19:57:37 +01:00
#pragma once
2023-11-23 21:36:16 +01:00
#include <memory>
2023-11-20 19:57:37 +01:00
#include <thread>
#include "slimchat.h"
#include "tgclient.h"
2023-11-20 22:11:07 +01:00
#include "message.h"
2023-11-20 19:57:37 +01:00
2023-11-21 21:50:38 +01:00
#include <cdk/cdk.h>
2023-11-20 19:57:37 +01:00
2023-11-23 21:36:16 +01:00
class Crypt;
2023-11-20 19:57:37 +01:00
class TgTUI {
public:
TgTUI();
~TgTUI();
void run();
void stop();
const std::vector<SlimChat>& getChats();
private:
void initDoneCB();
void threadLoop();
void handleNewChat(objptr<td_api::chat> chat);
2023-11-20 22:11:07 +01:00
void handleChatMessages(const std::vector<std::shared_ptr<Message>>& msgs);
2023-11-20 19:57:37 +01:00
TGClient tgclient;
2023-11-23 21:36:16 +01:00
std::unique_ptr<Crypt> crypt;
2023-11-20 19:57:37 +01:00
std::vector<SlimChat> chats;
2023-11-23 20:25:00 +01:00
std::vector<char*> chatsItemList;
2023-11-20 22:11:07 +01:00
std::vector<std::shared_ptr<Message>> messages;
2023-11-21 21:50:38 +01:00
CDKSCROLL* chatsScroll = nullptr;
CDKSCROLL* chatScroll = nullptr;
2023-11-23 22:22:45 +01:00
CDKENTRY* textEntry = nullptr;
2023-11-21 21:50:38 +01:00
2023-11-20 19:57:37 +01:00
bool shouldRun = false;
std::thread tuiThread;
};