Esempio n. 1
0
int main(void){
    chat_t * chat = chat_new("First Chat");
    printf("1st task(Chat name is) : %s\n", get_chat_name(chat));//1st task

    user_t * firstUser = user_new("Dima", "Diachenko", 18);
    chat_add_user(chat, firstUser);
    user_t * secondUser = user_new("Gleb", "Davidov", 18);
    chat_add_user(chat, secondUser); //6th task

    list_t * users_list = list_new();
    users_list = chat_get_list_of_users(chat);

    printf("4th task (and 6th task)(Users in list) : %i\n", list_getSize(users_list));//4th task

    printf("2d task : List of users:\n"); // 2d task
    for(int i = 0; i < list_getSize(users_list); i++){
        user_t * tmp  = (user_t*) list_get(users_list, i);
        printf("%s %s %i\n", user_get_name(tmp), user_get_surname(tmp), user_get_age(tmp));
    }

    printf("7th task : %s - this user was removed!\n", user_get_surname(chat_remove_user_by_surname(chat, "Davidov")));//7th task

    users_list = chat_get_list_of_users(chat);

    printf("2d task : List of users:\n"); // 2d task
    for(int i = 0; i < list_getSize(users_list); i++){
        user_t * tmp  = (user_t*) list_get(users_list, i);
        printf("%s %s %i\n", user_get_name(tmp), user_get_surname(tmp), user_get_age(tmp));
    }

    message_t * msg1 = message_new("Hello!", firstUser);

    chat_add_message(chat, msg1);//8th task
    printf("8th task: added message to chat:\n%s:\t%s\n", user_get_surname(get_owner(msg1)), get_message_text(msg1));

    list_t * msgs_list = list_new();
    msgs_list = get_list_of_messages_of_one_user(chat, firstUser);//5th task
    printf("5th task : Messages of user %s\n", user_get_surname(firstUser));
    for(int i = 0; i < list_getSize(msgs_list); i++){
        message_t * tmpmsg = list_get(msgs_list, i);
        printf("%s\n", get_message_text(tmpmsg));
    }

    msgs_list = get_last_messages(chat, 1);
    printf("3d task : List of last messages(1):\n");
    for(int i = 0; i < list_getSize(msgs_list); i++){
        message_t * tmpmsg = list_get(msgs_list, i);
        printf("%s\n", get_message_text(tmpmsg));
    }

    return 0;
}
static void
sync_completed (InfSession       *session,
                InfXmlConnection *connection,
                gpointer          data)
{
	ChatData *cdata = (ChatData *)data;
	GeditPanel *panel;
	GeditCollaborationBookmark *bookmark;
	GeditCollaborationUser *user;
	GtkWidget *image;
	GtkWidget *hpaned;
	GtkWidget *sw;
	GtkWidget *tree_view;
	GeditCollaborationUserStore *store;
	InfUserTable *user_table;
	gchar *chat_name;

	g_signal_handlers_disconnect_by_func (session,
	                                      G_CALLBACK (sync_failed),
	                                      data);

	g_signal_handlers_disconnect_by_func (session,
	                                      G_CALLBACK (sync_completed),
	                                      data);

	bookmark = g_object_get_data (G_OBJECT (connection),
	                              BOOKMARK_DATA_KEY);

	if (bookmark)
	{
		user = gedit_collaboration_bookmark_get_user (bookmark);
	}
	else
	{
		user = gedit_collaboration_user_get_default ();
	}

	chat_name = get_chat_name (cdata->helper, connection);

	hpaned = gtk_hpaned_new ();
	gtk_widget_show (hpaned);

	gtk_paned_pack1 (GTK_PANED (hpaned), cdata->chat, TRUE, TRUE);
	gtk_widget_show (cdata->chat);

	build_user_view (cdata->helper, &tree_view, &sw, FALSE);
	gtk_widget_show (sw);
	user_table = inf_session_get_user_table (session);

	store = gedit_collaboration_user_store_new (user_table, FALSE);

	gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view),
				 GTK_TREE_MODEL (store));

	gtk_paned_pack2 (GTK_PANED (hpaned), sw, TRUE, TRUE);

	panel = gedit_window_get_bottom_panel (cdata->helper->priv->window);

	image = create_collaboration_image (cdata->helper);
	gedit_panel_add_item (panel,
	                      hpaned,
			      "GeditCollaborationChat",
			      chat_name ? chat_name : _("Chat"),
			      image);
	g_object_set_data (G_OBJECT (connection), CHAT_DATA_KEY, hpaned);

	cdata->user = gedit_collaboration_user_get_name (user);

	g_free (chat_name);
	request_join (cdata, cdata->user);
}