Sophie

Sophie

distrib > Mandriva > 2011.0 > i586 > media > contrib-release-debug > by-pkgid > f90b8a36a33ce30f61d88e24153e9f71 > files > 79

desktop-data-model-debug-1.2.5-6mdv2011.0.i586.rpm

/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
#ifndef __HIPPO_CHAT_ROOM_H__
#define __HIPPO_CHAT_ROOM_H__

#include <hippo/hippo-person.h>

G_BEGIN_DECLS

typedef struct _HippoChatMessage   HippoChatMessage;
typedef struct _HippoChatRoom      HippoChatRoom;
typedef struct _HippoChatRoomClass HippoChatRoomClass;

#define HIPPO_TYPE_CHAT_ROOM              (hippo_chat_room_get_type ())
#define HIPPO_CHAT_ROOM(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), HIPPO_TYPE_CHAT_ROOM, HippoChatRoom))
#define HIPPO_CHAT_ROOM_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), HIPPO_TYPE_CHAT_ROOM, HippoChatRoomClass))
#define HIPPO_IS_CHAT_ROOM(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), HIPPO_TYPE_CHAT_ROOM))
#define HIPPO_IS_CHAT_ROOM_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), HIPPO_TYPE_CHAT_ROOM))
#define HIPPO_CHAT_ROOM_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), HIPPO_TYPE_CHAT_ROOM, HippoChatRoomClass))

GType            hippo_chat_room_get_type               (void) G_GNUC_CONST;

HippoChatRoom*    hippo_chat_room_new                     (const char   *chat_id,
                                                           HippoChatKind kind);

const char*       hippo_chat_room_get_id                  (HippoChatRoom  *room);
const char*       hippo_chat_room_get_jabber_id           (HippoChatRoom  *room);
HippoChatKind     hippo_chat_room_get_kind                (HippoChatRoom  *room);
HippoChatState    hippo_chat_room_get_user_state          (HippoChatRoom  *room,
                                                           HippoPerson    *person);
HippoChatMessage* hippo_chat_room_get_last_message        (HippoChatRoom  *room);
/* need to unref each element and free the list when done with this */
GSList*           hippo_chat_room_get_users               (HippoChatRoom  *room);
int               hippo_chat_room_get_viewing_user_count  (HippoChatRoom  *room);
int               hippo_chat_room_get_chatting_user_count (HippoChatRoom  *room);
/* This is not a copy, don't need to free list or its members */
GSList*           hippo_chat_room_get_messages            (HippoChatRoom  *room);
GTime             hippo_chat_room_get_date_last_ignored   (HippoChatRoom  *room);
gboolean          hippo_chat_room_get_ignored             (HippoChatRoom  *room);

/* === Methods used by HippoConnection to keep chat room updated === */

void     hippo_chat_room_set_kind                (HippoChatRoom *room,
                                                  HippoChatKind  kind);
void     hippo_chat_room_set_user_state          (HippoChatRoom *room,
                                                  HippoPerson   *person,
                                                  HippoChatState state);

/* Ownership of the message passes to the chat room, which may IMMEDIATELY FREE
 * the message if it's a dup
 */
void     hippo_chat_room_add_message             (HippoChatRoom    *room,
                                                  HippoChatMessage *message);
/* Called on reconnect, since users and messages will be resent */
void     hippo_chat_room_clear                   (HippoChatRoom    *room);

/* bump our count of desiring PARTICIPANT or VISITOR */
void            hippo_chat_room_increment_state_count (HippoChatRoom *room,
                                                       HippoChatState state);
void            hippo_chat_room_decrement_state_count (HippoChatRoom *room,
                                                       HippoChatState state);
/* based on the above counts, what state would the logged-in user like to be in */
HippoChatState  hippo_chat_room_get_desired_state     (HippoChatRoom *room);

/* === Methods on HippoChatMessage === */

HippoChatMessage* hippo_chat_message_new           (HippoPerson      *person,
                                                    const char       *text,
                                                    HippoSentiment    sentiment,
                                                    GTime             timestamp,
                                                    int               serial);

void              hippo_chat_message_free          (HippoChatMessage *message);
HippoChatMessage* hippo_chat_message_copy          (HippoChatMessage *message);
HippoPerson*      hippo_chat_message_get_person    (HippoChatMessage *message);
const char*       hippo_chat_message_get_text      (HippoChatMessage *message);
HippoSentiment    hippo_chat_message_get_sentiment (HippoChatMessage *message);
GTime             hippo_chat_message_get_timestamp (HippoChatMessage *message);
int               hippo_chat_message_get_serial    (HippoChatMessage *message);

G_END_DECLS

#endif /* __HIPPO_CHAT_ROOM_H__ */