00001
00026 #ifndef _GAIM_GTK_LIST_H_
00027 #define _GAIM_GTK_LIST_H_
00028
00029 #include "blist.h"
00030
00031 enum {
00032 STATUS_ICON_COLUMN,
00033 STATUS_ICON_VISIBLE_COLUMN,
00034 NAME_COLUMN,
00035 WARNING_COLUMN,
00036 IDLE_COLUMN,
00037 BUDDY_ICON_COLUMN,
00038 NODE_COLUMN,
00039 BLIST_COLUMNS
00040 };
00041
00042 typedef enum {
00043 GAIM_STATUS_ICON_LARGE,
00044 GAIM_STATUS_ICON_SMALL
00045
00046 } GaimStatusIconSize;
00047
00048
00049
00050
00054 typedef struct {
00055 GtkWidget *window;
00056 GtkWidget *vbox;
00059 GtkWidget *treeview;
00060 GtkTreeStore *treemodel;
00061 GtkTreeViewColumn *idle_column,
00062 *warning_column,
00063 *buddy_icon_column;
00064
00065 GtkItemFactory *ift;
00066 GtkWidget *bpmenu;
00068 GtkWidget *bbox;
00069 GtkTooltips *tooltips;
00071 guint refresh_timer;
00073 guint timeout;
00074 GdkRectangle tip_rect;
00077 GdkRectangle contact_rect;
00080 GaimBlistNode *mouseover_contact;
00082 GtkWidget *tipwindow;
00084 GaimBlistNode *selected_node;
00086 GdkPixbuf *east, *south;
00087 GdkWindow *east_shadow, *south_shadow;
00089 } GaimGtkBuddyList;
00090
00091 #define GAIM_GTK_BLIST(list) ((GaimGtkBuddyList *)(list)->ui_data)
00092 #define GAIM_IS_GTK_BLIST(list) \
00093 ((list)->ui_ops == gaim_gtk_blist_get_ui_ops())
00094
00095
00096
00097
00098
00102 void gaim_gtk_blist_init(void);
00103
00109 GaimBlistUiOps *gaim_gtk_blist_get_ui_ops(void);
00110
00118 GdkPixbuf *create_prpl_icon(GaimAccount *account);
00119
00126 void gaim_gtk_blist_refresh(GaimBuddyList *list);
00127
00132 void gaim_gtk_blist_update_toolbar();
00133
00139 void gaim_gtk_blist_docklet_toggle();
00140 void gaim_gtk_blist_docklet_add();
00141 void gaim_gtk_blist_docklet_remove();
00142 void gaim_gtk_blist_update_columns();
00143 void gaim_gtk_blist_update_refresh_timeout();
00144
00148 GdkPixbuf *gaim_gtk_blist_get_status_icon(GaimBlistNode *node,
00149 GaimStatusIconSize size);
00150
00151
00152
00153
00154
00155 typedef GtkTreeIter (*gaim_gtk_blist_sort_function)(GaimBlistNode *new, GaimBuddyList *blist, GtkTreeIter group, GtkTreeIter *cur);
00156
00157 extern GSList *gaim_gtk_blist_sort_methods;
00158
00159 struct gaim_gtk_blist_sort_method {
00160 char *id;
00161 char *name;
00162 gaim_gtk_blist_sort_function func;
00163 };
00164
00173 void gaim_gtk_blist_sort_method_reg(const char *id, const char *name, gaim_gtk_blist_sort_function func);
00174
00180 void gaim_gtk_blist_sort_method_unreg(const char *id);
00181
00187 void gaim_gtk_blist_sort_method_set(const char *id);
00188
00192 void gaim_gtk_blist_setup_sort_methods();
00193
00197 void gaim_gtk_blist_update_protocol_actions();
00198
00202 void gaim_gtk_blist_show_join_chat(void);
00203
00204 #endif