52 lines
812 B
C++
52 lines
812 B
C++
#pragma once
|
|
|
|
#include <thread>
|
|
|
|
#include "slimchat.h"
|
|
#include "tgclient.h"
|
|
#include "message.h"
|
|
|
|
class View;
|
|
class ViewChat;
|
|
class ViewChatList;
|
|
|
|
class TgTUI {
|
|
public:
|
|
|
|
TgTUI();
|
|
~TgTUI();
|
|
|
|
void run();
|
|
void stop();
|
|
|
|
const std::vector<SlimChat>& getChats();
|
|
|
|
private:
|
|
enum class ViewMode {
|
|
ChatList = 0,
|
|
Chat = 1,
|
|
};
|
|
|
|
void initDoneCB();
|
|
|
|
void threadLoop();
|
|
|
|
void handleNewChat(objptr<td_api::chat> chat);
|
|
void handleChatMessages(const std::vector<std::shared_ptr<Message>>& msgs);
|
|
|
|
void switchToView(ViewMode vm);
|
|
|
|
TGClient tgclient;
|
|
|
|
ViewMode currentViewMode;
|
|
View* currentView = nullptr;
|
|
ViewChatList* viewChatList = nullptr;
|
|
ViewChat* viewChat = nullptr;
|
|
|
|
std::vector<SlimChat> chats;
|
|
std::vector<std::shared_ptr<Message>> messages;
|
|
|
|
bool shouldRun = false;
|
|
std::thread tuiThread;
|
|
};
|