| 35 #include <purple.h> |
35 #include <purple.h> |
| 36 |
36 |
| 37 #include "gtkblist.h" |
37 #include "gtkblist.h" |
| 38 #include "gtkconv.h" |
38 #include "gtkconv.h" |
| 39 #include "gtkdialogs.h" |
39 #include "gtkdialogs.h" |
| 40 #include "gtksavedstatuses.h" |
|
| 41 #include "gtkutils.h" |
40 #include "gtkutils.h" |
| 42 #include "pidgincore.h" |
41 #include "pidgincore.h" |
| 43 #include "pidgindebug.h" |
42 #include "pidgindebug.h" |
| 44 #include "pidginprefs.h" |
43 #include "pidginprefs.h" |
| 45 #include "pidginprefsinternal.h" |
44 #include "pidginprefsinternal.h" |
| 1046 purple_prefs_get_string("/purple/proxy/type"), |
1033 purple_prefs_get_string("/purple/proxy/type"), |
| 1047 win); |
1034 win); |
| 1048 } |
1035 } |
| 1049 } |
1036 } |
| 1050 |
1037 |
| 1051 static void |
|
| 1052 set_idle_away(PurpleSavedStatus *status) |
|
| 1053 { |
|
| 1054 purple_prefs_set_int("/purple/savedstatus/idleaway", purple_savedstatus_get_creation_time(status)); |
|
| 1055 } |
|
| 1056 |
|
| 1057 static void |
|
| 1058 set_startupstatus(PurpleSavedStatus *status) |
|
| 1059 { |
|
| 1060 purple_prefs_set_int("/purple/savedstatus/startup", purple_savedstatus_get_creation_time(status)); |
|
| 1061 } |
|
| 1062 |
|
| 1063 static void |
|
| 1064 bind_away_page(PidginPrefsWindow *win) |
|
| 1065 { |
|
| 1066 GtkWidget *menu; |
|
| 1067 |
|
| 1068 /* Idle stuff */ |
|
| 1069 win->away.idle_reporting.type = PURPLE_PREF_STRING; |
|
| 1070 win->away.idle_reporting.key = "/purple/away/idle_reporting"; |
|
| 1071 pidgin_prefs_bind_dropdown(&win->away.idle_reporting); |
|
| 1072 |
|
| 1073 pidgin_prefs_bind_spin_button("/purple/away/mins_before_away", |
|
| 1074 win->away.mins_before_away); |
|
| 1075 |
|
| 1076 pidgin_prefs_bind_checkbox("/purple/away/away_when_idle", |
|
| 1077 win->away.away_when_idle); |
|
| 1078 |
|
| 1079 /* TODO: Show something useful if we don't have any saved statuses. */ |
|
| 1080 menu = pidgin_status_menu(purple_savedstatus_get_idleaway(), G_CALLBACK(set_idle_away)); |
|
| 1081 gtk_widget_show_all(menu); |
|
| 1082 gtk_box_pack_start(GTK_BOX(win->away.idle_hbox), menu, FALSE, FALSE, 0); |
|
| 1083 |
|
| 1084 g_object_bind_property(win->away.away_when_idle, "active", |
|
| 1085 menu, "sensitive", |
|
| 1086 G_BINDING_SYNC_CREATE); |
|
| 1087 |
|
| 1088 /* Away stuff */ |
|
| 1089 win->away.auto_reply.type = PURPLE_PREF_STRING; |
|
| 1090 win->away.auto_reply.key = "/purple/away/auto_reply"; |
|
| 1091 pidgin_prefs_bind_dropdown(&win->away.auto_reply); |
|
| 1092 |
|
| 1093 /* Signon status stuff */ |
|
| 1094 pidgin_prefs_bind_checkbox("/purple/savedstatus/startup_current_status", |
|
| 1095 win->away.startup_current_status); |
|
| 1096 |
|
| 1097 /* TODO: Show something useful if we don't have any saved statuses. */ |
|
| 1098 menu = pidgin_status_menu(purple_savedstatus_get_startup(), G_CALLBACK(set_startupstatus)); |
|
| 1099 gtk_widget_show_all(menu); |
|
| 1100 gtk_box_pack_start(GTK_BOX(win->away.startup_hbox), menu, FALSE, FALSE, 0); |
|
| 1101 gtk_label_set_mnemonic_widget(GTK_LABEL(win->away.startup_label), menu); |
|
| 1102 pidgin_set_accessible_label(menu, GTK_LABEL(win->away.startup_label)); |
|
| 1103 g_object_bind_property(win->away.startup_current_status, "active", |
|
| 1104 win->away.startup_hbox, "sensitive", |
|
| 1105 G_BINDING_SYNC_CREATE|G_BINDING_INVERT_BOOLEAN); |
|
| 1106 } |
|
| 1107 |
|
| 1108 #ifdef USE_VV |
1038 #ifdef USE_VV |
| 1109 static GList * |
1039 static GList * |
| 1110 get_vv_device_menuitems(PurpleMediaElementType type) |
1040 get_vv_device_menuitems(PurpleMediaElementType type) |
| 1111 { |
1041 { |
| 1112 GList *result = NULL; |
1042 GList *result = NULL; |
| 1621 #endif |
1551 #endif |
| 1622 |
1552 |
| 1623 bind_conv_page(win); |
1553 bind_conv_page(win); |
| 1624 bind_network_page(win); |
1554 bind_network_page(win); |
| 1625 bind_proxy_page(win); |
1555 bind_proxy_page(win); |
| 1626 bind_away_page(win); |
|
| 1627 #ifdef USE_VV |
1556 #ifdef USE_VV |
| 1628 vv = vv_page(win); |
1557 vv = vv_page(win); |
| 1629 gtk_container_add_with_properties(GTK_CONTAINER(stack), vv, "name", |
1558 gtk_container_add_with_properties(GTK_CONTAINER(stack), vv, "name", |
| 1630 "vv", "title", _("Voice/Video"), |
1559 "vv", "title", _("Voice/Video"), |
| 1631 NULL); |
1560 NULL); |
| 1742 widget_class, PidginPrefsWindow, proxy.password); |
1671 widget_class, PidginPrefsWindow, proxy.password); |
| 1743 gtk_widget_class_bind_template_callback(widget_class, |
1672 gtk_widget_class_bind_template_callback(widget_class, |
| 1744 proxy_button_clicked_cb); |
1673 proxy_button_clicked_cb); |
| 1745 gtk_widget_class_bind_template_callback(widget_class, |
1674 gtk_widget_class_bind_template_callback(widget_class, |
| 1746 proxy_print_option); |
1675 proxy_print_option); |
| 1747 |
|
| 1748 /* Away page */ |
|
| 1749 gtk_widget_class_bind_template_child( |
|
| 1750 widget_class, PidginPrefsWindow, |
|
| 1751 away.idle_reporting.combo); |
|
| 1752 gtk_widget_class_bind_template_child( |
|
| 1753 widget_class, PidginPrefsWindow, |
|
| 1754 away.mins_before_away); |
|
| 1755 gtk_widget_class_bind_template_child( |
|
| 1756 widget_class, PidginPrefsWindow, away.away_when_idle); |
|
| 1757 gtk_widget_class_bind_template_child( |
|
| 1758 widget_class, PidginPrefsWindow, away.idle_hbox); |
|
| 1759 gtk_widget_class_bind_template_child( |
|
| 1760 widget_class, PidginPrefsWindow, |
|
| 1761 away.auto_reply.combo); |
|
| 1762 gtk_widget_class_bind_template_child( |
|
| 1763 widget_class, PidginPrefsWindow, |
|
| 1764 away.startup_current_status); |
|
| 1765 gtk_widget_class_bind_template_child( |
|
| 1766 widget_class, PidginPrefsWindow, away.startup_hbox); |
|
| 1767 gtk_widget_class_bind_template_child( |
|
| 1768 widget_class, PidginPrefsWindow, away.startup_label); |
|
| 1769 } |
1676 } |
| 1770 |
1677 |
| 1771 static void |
1678 static void |
| 1772 pidgin_prefs_window_init(PidginPrefsWindow *win) |
1679 pidgin_prefs_window_init(PidginPrefsWindow *win) |
| 1773 { |
1680 { |