| 32 struct _PidginAwayPrefs { |
32 struct _PidginAwayPrefs { |
| 33 AdwPreferencesPage parent; |
33 AdwPreferencesPage parent; |
| 34 |
34 |
| 35 PidginPrefCombo idle_reporting; |
35 PidginPrefCombo idle_reporting; |
| 36 GtkWidget *mins_before_away; |
36 GtkWidget *mins_before_away; |
| 37 GtkWidget *idle_hbox; |
37 GtkWidget *idle_row; |
| 38 GtkWidget *away_when_idle; |
38 GtkWidget *away_when_idle; |
| 39 PidginPrefCombo auto_reply; |
39 PidginPrefCombo auto_reply; |
| 40 GtkWidget *startup_current_status; |
40 GtkWidget *startup_current_status; |
| 41 GtkWidget *startup_hbox; |
41 GtkWidget *startup_row; |
| 42 GtkWidget *startup_label; |
|
| 43 }; |
42 }; |
| 44 |
43 |
| 45 G_DEFINE_TYPE(PidginAwayPrefs, pidgin_away_prefs, ADW_TYPE_PREFERENCES_PAGE) |
44 G_DEFINE_TYPE(PidginAwayPrefs, pidgin_away_prefs, ADW_TYPE_PREFERENCES_PAGE) |
| 46 |
45 |
| 47 /****************************************************************************** |
46 /****************************************************************************** |
| 79 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
78 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
| 80 mins_before_away); |
79 mins_before_away); |
| 81 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
80 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
| 82 away_when_idle); |
81 away_when_idle); |
| 83 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
82 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
| 84 idle_hbox); |
83 idle_row); |
| 85 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
84 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
| 86 auto_reply.combo); |
85 auto_reply.combo); |
| 87 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
86 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
| 88 startup_current_status); |
87 startup_current_status); |
| 89 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
88 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
| 90 startup_hbox); |
89 startup_row); |
| 91 gtk_widget_class_bind_template_child(widget_class, PidginAwayPrefs, |
|
| 92 startup_label); |
|
| 93 } |
90 } |
| 94 |
91 |
| 95 static void |
92 static void |
| 96 pidgin_away_prefs_init(PidginAwayPrefs *prefs) |
93 pidgin_away_prefs_init(PidginAwayPrefs *prefs) |
| 97 { |
94 { |
| 104 pidgin_prefs_bind_dropdown(&prefs->idle_reporting); |
101 pidgin_prefs_bind_dropdown(&prefs->idle_reporting); |
| 105 |
102 |
| 106 pidgin_prefs_bind_spin_button("/purple/away/mins_before_away", |
103 pidgin_prefs_bind_spin_button("/purple/away/mins_before_away", |
| 107 prefs->mins_before_away); |
104 prefs->mins_before_away); |
| 108 |
105 |
| 109 pidgin_prefs_bind_checkbox("/purple/away/away_when_idle", |
106 pidgin_prefs_bind_switch("/purple/away/away_when_idle", |
| 110 prefs->away_when_idle); |
107 prefs->away_when_idle); |
| 111 |
108 |
| 112 /* TODO: Show something useful if we don't have any saved statuses. */ |
109 /* TODO: Show something useful if we don't have any saved statuses. */ |
| 113 menu = pidgin_status_menu(purple_savedstatus_get_idleaway(), |
110 menu = pidgin_status_menu(purple_savedstatus_get_idleaway(), |
| 114 G_CALLBACK(set_idle_away)); |
111 G_CALLBACK(set_idle_away)); |
| 115 gtk_box_append(GTK_BOX(prefs->idle_hbox), menu); |
112 gtk_widget_set_valign(menu, GTK_ALIGN_CENTER); |
| |
113 adw_action_row_add_suffix(ADW_ACTION_ROW(prefs->idle_row), menu); |
| |
114 adw_action_row_set_activatable_widget(ADW_ACTION_ROW(prefs->idle_row), |
| |
115 menu); |
| 116 |
116 |
| 117 g_object_bind_property(prefs->away_when_idle, "active", |
117 g_object_bind_property(prefs->away_when_idle, "active", |
| 118 menu, "sensitive", |
118 menu, "sensitive", |
| 119 G_BINDING_SYNC_CREATE); |
119 G_BINDING_SYNC_CREATE); |
| 120 |
120 |
| 122 prefs->auto_reply.type = PURPLE_PREF_STRING; |
122 prefs->auto_reply.type = PURPLE_PREF_STRING; |
| 123 prefs->auto_reply.key = "/purple/away/auto_reply"; |
123 prefs->auto_reply.key = "/purple/away/auto_reply"; |
| 124 pidgin_prefs_bind_dropdown(&prefs->auto_reply); |
124 pidgin_prefs_bind_dropdown(&prefs->auto_reply); |
| 125 |
125 |
| 126 /* Signon status stuff */ |
126 /* Signon status stuff */ |
| 127 pidgin_prefs_bind_checkbox("/purple/savedstatus/startup_current_status", |
127 pidgin_prefs_bind_switch("/purple/savedstatus/startup_current_status", |
| 128 prefs->startup_current_status); |
128 prefs->startup_current_status); |
| 129 |
129 |
| 130 /* TODO: Show something useful if we don't have any saved statuses. */ |
130 /* TODO: Show something useful if we don't have any saved statuses. */ |
| 131 menu = pidgin_status_menu(purple_savedstatus_get_startup(), |
131 menu = pidgin_status_menu(purple_savedstatus_get_startup(), |
| 132 G_CALLBACK(set_startupstatus)); |
132 G_CALLBACK(set_startupstatus)); |
| 133 gtk_box_append(GTK_BOX(prefs->startup_hbox), menu); |
133 gtk_widget_set_valign(menu, GTK_ALIGN_CENTER); |
| 134 gtk_label_set_mnemonic_widget(GTK_LABEL(prefs->startup_label), menu); |
134 adw_action_row_add_suffix(ADW_ACTION_ROW(prefs->startup_row), menu); |
| 135 pidgin_set_accessible_label(menu, GTK_LABEL(prefs->startup_label)); |
135 adw_action_row_set_activatable_widget(ADW_ACTION_ROW(prefs->startup_row), |
| |
136 menu); |
| 136 g_object_bind_property(prefs->startup_current_status, "active", |
137 g_object_bind_property(prefs->startup_current_status, "active", |
| 137 prefs->startup_hbox, "sensitive", |
138 prefs->startup_row, "sensitive", |
| 138 G_BINDING_SYNC_CREATE|G_BINDING_INVERT_BOOLEAN); |
139 G_BINDING_SYNC_CREATE|G_BINDING_INVERT_BOOLEAN); |
| 139 } |
140 } |
| 140 |
141 |
| 141 /****************************************************************************** |
142 /****************************************************************************** |
| 142 * API |
143 * API |
| 143 *****************************************************************************/ |
144 *****************************************************************************/ |