pidgin/prefs/pidginawayprefs.c

changeset 41622
4e81efb6f325
parent 41548
3353c766c6cf
child 41640
d8636f8db50a
equal deleted inserted replaced
41621:29d99e6066b3 41622:4e81efb6f325
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 *****************************************************************************/

mercurial