| 110 static GdkAtom _PurpleUnseenCount = GDK_NONE; |
110 static GdkAtom _PurpleUnseenCount = GDK_NONE; |
| 111 #endif |
111 #endif |
| 112 |
112 |
| 113 /* notification set/unset */ |
113 /* notification set/unset */ |
| 114 static int notify(PurpleConversation *conv, gboolean increment); |
114 static int notify(PurpleConversation *conv, gboolean increment); |
| 115 static void notify_win(PidginWindow *purplewin); |
115 static void notify_win(PidginWindow *purplewin, PurpleConversation *conv); |
| 116 static void unnotify(PurpleConversation *conv, gboolean reset); |
116 static void unnotify(PurpleConversation *conv, gboolean reset); |
| 117 static int unnotify_cb(GtkWidget *widget, gpointer data, |
117 static int unnotify_cb(GtkWidget *widget, gpointer data, |
| 118 PurpleConversation *conv); |
118 PurpleConversation *conv); |
| 119 |
119 |
| 120 /* gtk widget callbacks for prefs panel */ |
120 /* gtk widget callbacks for prefs panel */ |
| 139 static void handle_urgent(PidginWindow *purplewin, gboolean set); |
139 static void handle_urgent(PidginWindow *purplewin, gboolean set); |
| 140 |
140 |
| 141 /* raise function */ |
141 /* raise function */ |
| 142 static void handle_raise(PidginWindow *purplewin); |
142 static void handle_raise(PidginWindow *purplewin); |
| 143 |
143 |
| |
144 /* present function */ |
| |
145 static void handle_present(PurpleConversation *conv); |
| |
146 |
| 144 /****************************************/ |
147 /****************************************/ |
| 145 /* Begin doing stuff below this line... */ |
148 /* Begin doing stuff below this line... */ |
| 146 /****************************************/ |
149 /****************************************/ |
| 147 static guint |
150 static guint |
| 148 count_messages(PidginWindow *purplewin) |
151 count_messages(PidginWindow *purplewin) |
| 191 count = GPOINTER_TO_INT(purple_conversation_get_data(conv, "notify-message-count")); |
194 count = GPOINTER_TO_INT(purple_conversation_get_data(conv, "notify-message-count")); |
| 192 count++; |
195 count++; |
| 193 purple_conversation_set_data(conv, "notify-message-count", GINT_TO_POINTER(count)); |
196 purple_conversation_set_data(conv, "notify-message-count", GINT_TO_POINTER(count)); |
| 194 } |
197 } |
| 195 |
198 |
| 196 notify_win(purplewin); |
199 notify_win(purplewin, conv); |
| 197 } |
200 } |
| 198 |
201 |
| 199 return 0; |
202 return 0; |
| 200 } |
203 } |
| 201 |
204 |
| 202 static void |
205 static void |
| 203 notify_win(PidginWindow *purplewin) |
206 notify_win(PidginWindow *purplewin, PurpleConversation *conv) |
| 204 { |
207 { |
| 205 if (count_messages(purplewin) <= 0) |
208 if (count_messages(purplewin) <= 0) |
| 206 return; |
209 return; |
| 207 |
210 |
| 208 if (purple_prefs_get_bool("/plugins/gtk/X11/notify/method_count")) |
211 if (purple_prefs_get_bool("/plugins/gtk/X11/notify/method_count")) |
| 213 handle_string(purplewin); |
216 handle_string(purplewin); |
| 214 if (purple_prefs_get_bool("/plugins/gtk/X11/notify/method_urgent")) |
217 if (purple_prefs_get_bool("/plugins/gtk/X11/notify/method_urgent")) |
| 215 handle_urgent(purplewin, TRUE); |
218 handle_urgent(purplewin, TRUE); |
| 216 if (purple_prefs_get_bool("/plugins/gtk/X11/notify/method_raise")) |
219 if (purple_prefs_get_bool("/plugins/gtk/X11/notify/method_raise")) |
| 217 handle_raise(purplewin); |
220 handle_raise(purplewin); |
| |
221 if (purple_prefs_get_bool("/plugins/gtk/X11/notify/method_present")) |
| |
222 handle_present(conv); |
| 218 } |
223 } |
| 219 |
224 |
| 220 static void |
225 static void |
| 221 unnotify(PurpleConversation *conv, gboolean reset) |
226 unnotify(PurpleConversation *conv, gboolean reset) |
| 222 { |
227 { |
| 768 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); |
779 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); |
| 769 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), |
780 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), |
| 770 purple_prefs_get_bool("/plugins/gtk/X11/notify/method_raise")); |
781 purple_prefs_get_bool("/plugins/gtk/X11/notify/method_raise")); |
| 771 g_signal_connect(G_OBJECT(toggle), "toggled", |
782 g_signal_connect(G_OBJECT(toggle), "toggled", |
| 772 G_CALLBACK(method_toggle_cb), "method_raise"); |
783 G_CALLBACK(method_toggle_cb), "method_raise"); |
| |
784 |
| |
785 /* Present conversation method button */ |
| |
786 toggle = gtk_check_button_new_with_mnemonic(_("_Present conversation window")); |
| |
787 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); |
| |
788 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), |
| |
789 purple_prefs_get_bool("/plugins/gtk/X11/notify/method_present")); |
| |
790 g_signal_connect(G_OBJECT(toggle), "toggled", |
| |
791 G_CALLBACK(method_toggle_cb), "method_present"); |
| 773 |
792 |
| 774 /*---------- "Notification Removals" ----------*/ |
793 /*---------- "Notification Removals" ----------*/ |
| 775 frame = pidgin_make_frame(ret, _("Notification Removal")); |
794 frame = pidgin_make_frame(ret, _("Notification Removal")); |
| 776 vbox = gtk_vbox_new(FALSE, 5); |
795 vbox = gtk_vbox_new(FALSE, 5); |
| 777 gtk_container_add(GTK_CONTAINER(frame), vbox); |
796 gtk_container_add(GTK_CONTAINER(frame), vbox); |
| 943 purple_prefs_add_string("/plugins/gtk/X11/notify/title_string", "(*)"); |
962 purple_prefs_add_string("/plugins/gtk/X11/notify/title_string", "(*)"); |
| 944 purple_prefs_add_bool("/plugins/gtk/X11/notify/method_urgent", FALSE); |
963 purple_prefs_add_bool("/plugins/gtk/X11/notify/method_urgent", FALSE); |
| 945 purple_prefs_add_bool("/plugins/gtk/X11/notify/method_count", FALSE); |
964 purple_prefs_add_bool("/plugins/gtk/X11/notify/method_count", FALSE); |
| 946 purple_prefs_add_bool("/plugins/gtk/X11/notify/method_count_xprop", FALSE); |
965 purple_prefs_add_bool("/plugins/gtk/X11/notify/method_count_xprop", FALSE); |
| 947 purple_prefs_add_bool("/plugins/gtk/X11/notify/method_raise", FALSE); |
966 purple_prefs_add_bool("/plugins/gtk/X11/notify/method_raise", FALSE); |
| |
967 purple_prefs_add_bool("/plugins/gtk/X11/notify/method_present", FALSE); |
| 948 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_focus", TRUE); |
968 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_focus", TRUE); |
| 949 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_click", FALSE); |
969 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_click", FALSE); |
| 950 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_type", TRUE); |
970 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_type", TRUE); |
| 951 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_send", TRUE); |
971 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_send", TRUE); |
| 952 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_switch", TRUE); |
972 purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_switch", TRUE); |