Changeset 3408 for trunk/jons-gtk2-gui
- Timestamp:
- 03/24/03 04:01:55 (6 years ago)
- Files:
-
- 1 modified
-
trunk/jons-gtk2-gui/src/system_status.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/jons-gtk2-gui/src/system_status.cpp
r3324 r3408 19 19 */ 20 20 21 #include "utilities.h" 21 22 #include "licq_gtk.h" 22 23 … … 24 25 25 26 GtkWidget *system_status; 27 bool allow_refresh = true; 26 28 27 void system_status_click(GtkWidget *, GdkEventButton *, gpointer);28 29 void system_message_window(); 29 30 void licq_tray_start_flashing(); 30 31 void licq_tray_stop_flashing(); 32 void convo_open(ICQUser *); 31 33 32 GtkWidget *system_status_new(gint borderwidth) 34 gboolean 35 system_status_click(GtkWidget *w, GdkEventButton *event, gpointer) 36 { 37 /* Make sure we have a double click here */ 38 if (event->type != GDK_2BUTTON_PRESS || event->button != 1) 39 return TRUE; 40 41 /* If no events are pending, leave */ 42 if (ICQUser::getNumUserEvents() == 0) 43 return TRUE; 44 45 /* Check for system messages first */ 46 ICQOwner *owner = gUserManager.FetchOwner(LOCK_R); 47 gushort owner_events = owner->NewMessages(); 48 49 if (owner_events > 0) { 50 system_message_window(); 51 gUserManager.DropOwner(); 52 return TRUE; 53 } 54 else 55 gUserManager.DropOwner(); 56 57 /* Now for the user messages */ 58 allow_refresh = false; 59 FOR_EACH_USER_START(LOCK_R) 60 { 61 if (pUser->NewMessages() > 0) 62 convo_open(pUser); 63 } 64 FOR_EACH_USER_END 65 allow_refresh = true; 66 67 contact_list_refresh(); 68 system_status_refresh(); 69 70 return TRUE; 71 } 72 73 GtkWidget * 74 system_status_new() 33 75 { 34 76 system_status = gtk_statusbar_new(); 35 77 36 gtk_container_set_border_width(GTK_CONTAINER(system_status), borderwidth);78 gtk_container_set_border_width(GTK_CONTAINER(system_status), 2); 37 79 38 80 /* The event box for new messages */ … … 46 88 G_CALLBACK(system_status_click), 0); 47 89 48 gtk_widget_show(system_status); 49 gtk_widget_show(event_box); 90 gtk_widget_show_all(event_box); 50 91 51 92 return event_box; … … 55 96 system_status_refresh() 56 97 { 98 if (!allow_refresh) 99 return; 100 57 101 ICQOwner *owner = gUserManager.FetchOwner(LOCK_R); 58 102 gushort num_owner_events = owner->NewMessages(); … … 61 105 gulong num_user_event = ICQUser::getNumUserEvents() - num_owner_events; 62 106 63 guint id = gtk_statusbar_get_context_id(GTK_STATUSBAR(system_status),64 "Status");65 gtk_statusbar_pop(GTK_STATUSBAR(system_status), id);66 107 if (num_owner_events > 0) 67 gtk_statusbar_push(GTK_STATUSBAR(system_status), id, "SysMsg");108 status_change(system_status, "sta", "SysMsg"); 68 109 else if (num_user_event > 0) { 69 110 gchar *label; … … 73 114 label = g_strdup_printf("%ld msgs", num_user_event); 74 115 75 gtk_statusbar_push(GTK_STATUSBAR(system_status), id, label);116 status_change(system_status, "sta", label); 76 117 g_free(label); 77 118 } 78 119 else 79 gtk_statusbar_push(GTK_STATUSBAR(system_status), id, "No msgs");120 status_change(system_status, "sta", "No msgs"); 80 121 81 122 if (num_owner_events > 0 || num_user_event > 0) … … 84 125 licq_tray_stop_flashing(); 85 126 } 86 87 void88 system_status_click(GtkWidget *w, GdkEventButton *event, gpointer d)89 {90 /* Make sure we have a double click here */91 if (event->type != GDK_2BUTTON_PRESS || event->button != 1)92 return;93 94 /* If no events are pending, leave */95 if (ICQUser::getNumUserEvents() == 0)96 return;97 98 /* Check for system messages first */99 ICQOwner *owner = gUserManager.FetchOwner(LOCK_R);100 gushort owner_events = owner->NewMessages();101 102 if (owner_events > 0) {103 system_message_window();104 gUserManager.DropOwner();105 return;106 }107 else108 gUserManager.DropOwner();109 110 /* Now for the user messages */111 FOR_EACH_USER_START(LOCK_R)112 {113 if(pUser->NewMessages() > 0)114 convo_open(pUser, false);115 }116 FOR_EACH_USER_END117 118 contact_list_refresh();119 system_status_refresh();120 }
