pidgin/prefs/pidginprefs.c

changeset 41368
54d7cfc990eb
parent 41366
789f96848a43
child 41369
70144e5e0a89
equal deleted inserted replaced
41366:789f96848a43 41368:54d7cfc990eb
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"
103 GtkWidget *host; 102 GtkWidget *host;
104 GtkWidget *port; 103 GtkWidget *port;
105 GtkWidget *username; 104 GtkWidget *username;
106 GtkWidget *password; 105 GtkWidget *password;
107 } proxy; 106 } proxy;
108
109 /* Away page */
110 struct {
111 PidginPrefCombo idle_reporting;
112 GtkWidget *mins_before_away;
113 GtkWidget *idle_hbox;
114 GtkWidget *away_when_idle;
115 PidginPrefCombo auto_reply;
116 GtkWidget *startup_current_status;
117 GtkWidget *startup_hbox;
118 GtkWidget *startup_label;
119 } away;
120 107
121 #ifdef USE_VV 108 #ifdef USE_VV
122 /* Voice/Video page */ 109 /* Voice/Video page */
123 struct { 110 struct {
124 struct { 111 struct {
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 {

mercurial