roomlist.h

Go to the documentation of this file.
00001 
00026 #ifndef _PURPLE_ROOMLIST_H_
00027 #define _PURPLE_ROOMLIST_H_
00028 
00029 typedef struct _PurpleRoomlist PurpleRoomlist;
00030 typedef struct _PurpleRoomlistRoom PurpleRoomlistRoom;
00031 typedef struct _PurpleRoomlistField PurpleRoomlistField;
00032 typedef struct _PurpleRoomlistUiOps PurpleRoomlistUiOps;
00033 
00039 typedef enum
00040 {
00041     PURPLE_ROOMLIST_ROOMTYPE_CATEGORY = 0x01, 
00042     PURPLE_ROOMLIST_ROOMTYPE_ROOM = 0x02      
00044 } PurpleRoomlistRoomType;
00045 
00049 typedef enum
00050 {
00051     PURPLE_ROOMLIST_FIELD_BOOL,
00052     PURPLE_ROOMLIST_FIELD_INT,
00053     PURPLE_ROOMLIST_FIELD_STRING 
00055 } PurpleRoomlistFieldType;
00056 
00057 #include "account.h"
00058 #include "glib.h"
00059 
00060 /**************************************************************************/
00062 /**************************************************************************/
00063 
00067 struct _PurpleRoomlist {
00068     PurpleAccount *account; 
00069     GList *fields; 
00070     GList *rooms; 
00071     gboolean in_progress; 
00072     gpointer ui_data; 
00073     gpointer proto_data; 
00074     guint ref; 
00075 };
00076 
00080 struct _PurpleRoomlistRoom {
00081     PurpleRoomlistRoomType type; 
00082     gchar *name; 
00083     GList *fields; 
00084     PurpleRoomlistRoom *parent; 
00085     gboolean expanded_once; 
00086 };
00087 
00091 struct _PurpleRoomlistField {
00092     PurpleRoomlistFieldType type; 
00093     gchar *label; 
00094     gchar *name; 
00095     gboolean hidden; 
00096 };
00097 
00101 struct _PurpleRoomlistUiOps {
00102     void (*show_with_account)(PurpleAccount *account); 
00103     void (*create)(PurpleRoomlist *list); 
00104     void (*set_fields)(PurpleRoomlist *list, GList *fields); 
00105     void (*add_room)(PurpleRoomlist *list, PurpleRoomlistRoom *room); 
00106     void (*in_progress)(PurpleRoomlist *list, gboolean flag); 
00107     void (*destroy)(PurpleRoomlist *list); 
00109     void (*_purple_reserved1)(void);
00110     void (*_purple_reserved2)(void);
00111     void (*_purple_reserved3)(void);
00112     void (*_purple_reserved4)(void);
00113 };
00114 
00115 
00116 #ifdef __cplusplus
00117 extern "C" {
00118 #endif
00119 
00120 /**************************************************************************/
00122 /**************************************************************************/
00134 void purple_roomlist_show_with_account(PurpleAccount *account);
00135 
00144 PurpleRoomlist *purple_roomlist_new(PurpleAccount *account);
00145 
00151 void purple_roomlist_ref(PurpleRoomlist *list);
00152 
00161 void purple_roomlist_unref(PurpleRoomlist *list);
00162 
00172 void purple_roomlist_set_fields(PurpleRoomlist *list, GList *fields);
00173 
00183 void purple_roomlist_set_in_progress(PurpleRoomlist *list, gboolean in_progress);
00184 
00194 gboolean purple_roomlist_get_in_progress(PurpleRoomlist *list);
00195 
00203 void purple_roomlist_room_add(PurpleRoomlist *list, PurpleRoomlistRoom *room);
00204 
00214 PurpleRoomlist *purple_roomlist_get_list(PurpleConnection *gc);
00215 
00224 void purple_roomlist_cancel_get_list(PurpleRoomlist *list);
00225 
00237 void purple_roomlist_expand_category(PurpleRoomlist *list, PurpleRoomlistRoom *category);
00238 
00241 /**************************************************************************/
00243 /**************************************************************************/
00255 PurpleRoomlistRoom *purple_roomlist_room_new(PurpleRoomlistRoomType type, const gchar *name,
00256                                          PurpleRoomlistRoom *parent);
00257 
00265 void purple_roomlist_room_add_field(PurpleRoomlist *list, PurpleRoomlistRoom *room, gconstpointer field);
00266 
00273 void purple_roomlist_room_join(PurpleRoomlist *list, PurpleRoomlistRoom *room);
00274 
00277 /**************************************************************************/
00279 /**************************************************************************/
00293 PurpleRoomlistField *purple_roomlist_field_new(PurpleRoomlistFieldType type,
00294                                            const gchar *label, const gchar *name,
00295                                            gboolean hidden);
00298 /**************************************************************************/
00300 /**************************************************************************/
00308 void purple_roomlist_set_ui_ops(PurpleRoomlistUiOps *ops);
00309 
00316 PurpleRoomlistUiOps *purple_roomlist_get_ui_ops(void);
00317 
00320 #ifdef __cplusplus
00321 }
00322 #endif
00323 
00324 #endif /* _PURPLE_ROOMLIST_H_ */