Skip to content
This repository has been archived by the owner on May 5, 2023. It is now read-only.

Commit

Permalink
Merge branch 'gui-dev' of github.com:fomgleb/uchat
Browse files Browse the repository at this point in the history
  • Loading branch information
fomgleb committed Mar 15, 2023
2 parents 0021e86 + 9ae66cb commit 8ea088c
Show file tree
Hide file tree
Showing 12 changed files with 757 additions and 58 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
obj
uchat
uchat_server
/home/nicel/Campus/Uchat/uchat/client/src/gui/TestGUI.glade~
*.a
*.db
*.o
Expand Down
10 changes: 10 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"files.associations": {
"*.tcc": "c",
"optional": "c",
"memory": "c",
"numeric": "c",
"cmath": "c",
"typeinfo": "c"
}
}
25 changes: 23 additions & 2 deletions client/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <gtk/gtk.h>

#define LAST_LOADING_MESSAGES_COUNT 30
#define GUI_DATA(data) (*(t_gui_data *)data)

typedef enum e_authentication_mode {
REGISTER_MODE = REGISTER,
Expand All @@ -25,9 +26,29 @@ typedef struct s_user_message {
uint32_t order_in_chat;
} t_user_message;

// GUI
typedef struct s_chat_data {
t_gui_data gui_data;
t_chat chat;
} t_chat_data;

// GUI-----------------------------------------------------------------------------
char *get_entry_text(GtkBuilder *builder, char *entry_name);
void open_messenger_window(t_gui_data data);
void gui_init(int argc, char **argv);
void open_chat(GtkButton *bconfirm, gpointer user_data);
t_chat_data *create_chat_data(char *name, t_gui_data gui_data);

// GUI-Utils-----------------------------------------------------------------------
void add_to_box(GtkBuilder *builder, GtkWidget *new_element, char *box_name);
void write_label_text(GtkBuilder *builder, char *label_name, char *text);
void open_window(GtkBuilder *builder, char *window_name);
void close_window(GtkBuilder *builder, char *window_name);
void exit_app();
//--------------------------------------------------------------------------------

// Ne otnositsa k GUI
void create_new_chat_in_server(t_address server_address, id_t user_id, char *chat_name);
void handle_chatting(t_address server_address, id_t user_id, id_t chat_id);

void handle_authenticated_user_commands(t_address server_address, id_t user_id);

Expand Down Expand Up @@ -59,7 +80,7 @@ t_state_code rq_remove_member_from_chat(t_address server_address, id_t user_id,

// Data Input
t_authentication_data get_authentication_data(GtkWidget *enter_login, GtkWidget *enter_password);
t_chat_creation_data get_chat_creation_data(id_t owner_id);
t_chat_creation_data get_chat_creation_data(id_t owner_id, char *chat_name);
t_new_chat_member_data get_new_chat_member_data(id_t chat_id);
int console_input_int(char *message);
t_text_message_data get_text_message_data(id_t user_id, id_t chat_id);
Expand Down
273 changes: 272 additions & 1 deletion client/src/gui/TestGUI.glade
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<object class="GtkWindow" id="Authorization">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Authorization</property>
<property name="resizable">False</property>
<property name="window_position">center</property>
<signal name="destroy" handler="exit_app" swapped="no"/>
<child type="titlebar">
Expand All @@ -30,6 +31,7 @@
<property name="height_request">34</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="double_buffered">False</property>
<property name="max_length">40</property>
</object>
<packing>
Expand Down Expand Up @@ -70,6 +72,7 @@
<property name="height_request">34</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="double_buffered">False</property>
<property name="max_length">50</property>
<property name="visibility">False</property>
<property name="invisible_char">•</property>
Expand Down Expand Up @@ -98,6 +101,7 @@
<property name="height_request">34</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="double_buffered">False</property>
<property name="max_length">50</property>
<property name="visibility">False</property>
<property name="invisible_char">•</property>
Expand Down Expand Up @@ -266,5 +270,272 @@
</object>
</child>
</object>
<object class="GtkEntryCompletion" id="entrycompletion1"/>
<object class="GtkDialog" id="Create_room_window">
<property name="can_focus">False</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="default_width">320</property>
<property name="default_height">260</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<property name="deletable">False</property>
<child type="titlebar">
<object class="GtkLabel" id="Create chat">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Create room</property>
<attributes>
<attribute name="style" value="italic"/>
<attribute name="foreground" value="#000000000000"/>
</attributes>
</object>
</child>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="layout_style">center</property>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Close</property>
<property name="width_request">150</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="close_creater_chat_window" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Create</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="create_new_chat" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="height_request">50</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Name room:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="wname_room">
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkWindow" id="Messenger">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Messenger</property>
<property name="window_position">center</property>
<property name="default_width">1280</property>
<property name="default_height">720</property>
<property name="destroy_with_parent">True</property>
<property name="gravity">north-east</property>
<signal name="destroy" handler="exit_app" swapped="no"/>
<child type="titlebar">
<placeholder/>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="width_request">280</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkSearchEntry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="primary_icon_name">edit-find-symbolic</property>
<property name="primary_icon_activatable">False</property>
<property name="primary_icon_sensitive">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="height_request">610</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="chats_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="create_room">
<property name="label" translatable="yes">Create room</property>
<property name="height_request">80</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="open_creater_chat_window" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="chat_name">
<property name="height_request">34</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="height_request">656</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry">
<property name="width_request">1000</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
Loading

0 comments on commit 8ea088c

Please sign in to comment.