diff options
Diffstat (limited to 'include/ChatWindow.hpp')
-rw-r--r-- | include/ChatWindow.hpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/include/ChatWindow.hpp b/include/ChatWindow.hpp index 988b225..7a61d91 100644 --- a/include/ChatWindow.hpp +++ b/include/ChatWindow.hpp @@ -1,5 +1,6 @@ #pragma once +#include "ImageButton.hpp" #include <dchat/Room.hpp> #include <gtkmm/label.h> #include <gtkmm/togglebutton.h> @@ -20,35 +21,43 @@ namespace dchat { public: ChatWindow(); + ~ChatWindow(); void addRoom(std::shared_ptr<Room> room); void addMessage(const RoomAddMessageRequest &request); void addUser(std::shared_ptr<Room> room, std::shared_ptr<User> user); void setUserNickname(const UserChangeNicknameRequest &request); + void changeRoomName(const RoomChangeNameRequest &request); void scrollToBottom(); private: void setupTopBar(); void setupLeftPanel(Gtk::Paned *sidePanels); void setupMessageArea(Gtk::Grid *rightPanel); void setupChatInput(Gtk::Grid *rightPanel); + + void setCurrentRoom(std::shared_ptr<Room> room); private: Gtk::Grid topbar; Gtk::Entry topbarSearchBar; Gtk::Grid leftPanelChannels; - Gtk::Grid leftPanelUsers; + Gtk::Stack leftPanelUsersStack; + ImageButton addRoomButton; Gtk::Label currentChannelTitle; Gtk::ScrolledWindow messageArea; - Gtk::Grid messageAreaLayout; + Gtk::Stack messageAreaStack; Gtk::TextView chatInput; struct RoomData { + Gtk::Grid *leftPanelUsersLayout; + Gtk::Grid *messageAreaLayout; Gtk::ToggleButton *button; }; - odhtdb::MapHash<RoomData> roomDataById; + odhtdb::MapHash<RoomData*> roomDataById; odhtdb::MapHash<ChatMessage*> messageById; int chatPrevNumLines; int roomCount; + RoomData *currentRoomData; std::shared_ptr<Room> currentRoom; }; }
\ No newline at end of file |