Mercurial > audlegacy-plugins
comparison src/scrobbler/configure.c @ 2943:d3e42ee17c93
added password prompt
author | Andrew O. Shadoura <bugzilla@tut.by> |
---|---|
date | Sun, 28 Sep 2008 19:12:11 +0300 |
parents | 19fb7d7dcf4e |
children | d93a97ce253d |
comparison
equal
deleted
inserted
replaced
2942:233cb5dffbf7 | 2943:d3e42ee17c93 |
---|---|
18 | 18 |
19 #include "configure.h" | 19 #include "configure.h" |
20 #include "plugin.h" | 20 #include "plugin.h" |
21 | 21 |
22 GtkWidget *entry1, *entry2, *ge_entry1, *ge_entry2, *cfgdlg; | 22 GtkWidget *entry1, *entry2, *ge_entry1, *ge_entry2, *cfgdlg; |
23 static GdkColor disabled_color; | |
23 guint apply_timeout = 0; /* ID of timeout to save new config */ | 24 guint apply_timeout = 0; /* ID of timeout to save new config */ |
24 gboolean running = TRUE; /* if plugin threads are running */ | 25 gboolean running = TRUE; /* if plugin threads are running */ |
25 | 26 |
26 static char *hexify(char *pass, int len) | 27 static char *hexify(char *pass, int len) |
27 { | 28 { |
38 } | 39 } |
39 *bp = 0; | 40 *bp = 0; |
40 return buf; | 41 return buf; |
41 } | 42 } |
42 | 43 |
44 static char *pwd = NULL; | |
45 static char *ge_pwd = NULL; | |
46 | |
43 static void saveconfig(void) | 47 static void saveconfig(void) |
44 { | 48 { |
45 mcs_handle_t *cfgfile; | 49 mcs_handle_t *cfgfile; |
46 | 50 |
47 const char *uid = gtk_entry_get_text(GTK_ENTRY(entry1)); | 51 const char *uid = gtk_entry_get_text(GTK_ENTRY(entry1)); |
48 const char *pwd = gtk_entry_get_text(GTK_ENTRY(entry2)); | |
49 const char *ge_uid = gtk_entry_get_text(GTK_ENTRY(ge_entry1)); | 52 const char *ge_uid = gtk_entry_get_text(GTK_ENTRY(ge_entry1)); |
50 const char *ge_pwd = gtk_entry_get_text(GTK_ENTRY(ge_entry2)); | |
51 | 53 |
52 if ((cfgfile = aud_cfg_db_open())) { | 54 if ((cfgfile = aud_cfg_db_open())) { |
53 aud_md5state_t md5state; | 55 aud_md5state_t md5state; |
54 unsigned char md5pword[16], ge_md5pword[16]; | 56 unsigned char md5pword[16], ge_md5pword[16]; |
55 | 57 |
97 if (apply_timeout) { /* config has been changed, but wasn't saved yet */ | 99 if (apply_timeout) { /* config has been changed, but wasn't saved yet */ |
98 g_source_remove(apply_timeout); | 100 g_source_remove(apply_timeout); |
99 apply_timeout = 0; | 101 apply_timeout = 0; |
100 saveconfig(); | 102 saveconfig(); |
101 } | 103 } |
104 g_free(pwd); | |
105 g_free(ge_pwd); | |
102 } | 106 } |
103 | 107 |
104 static void | 108 static void |
105 entry_changed(GtkWidget *widget, gpointer data) | 109 entry_changed(GtkWidget *widget, gpointer data) |
106 { | 110 { |
111 | 115 |
112 if (apply_timeout) | 116 if (apply_timeout) |
113 g_source_remove(apply_timeout); | 117 g_source_remove(apply_timeout); |
114 | 118 |
115 apply_timeout = g_timeout_add_seconds(10, (GSourceFunc) apply_config_changes, NULL); | 119 apply_timeout = g_timeout_add_seconds(10, (GSourceFunc) apply_config_changes, NULL); |
120 } | |
121 | |
122 static void entry_focus_in(GtkWidget *widget, gpointer data) | |
123 { | |
124 gtk_entry_set_text(GTK_ENTRY(widget), ""); | |
125 gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); | |
126 gtk_widget_modify_text(widget, GTK_STATE_NORMAL, NULL); | |
127 } | |
128 | |
129 static void entry_focus_out(GtkWidget *widget, gpointer data) | |
130 { | |
131 if (widget == entry2) | |
132 { | |
133 g_free(pwd); | |
134 pwd = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry2))); | |
135 } | |
136 if (widget == ge_entry2) | |
137 { | |
138 g_free(ge_pwd); | |
139 ge_pwd = g_strdup(gtk_entry_get_text(GTK_ENTRY(ge_entry2))); | |
140 } | |
141 entry_changed(widget, data); | |
142 gtk_entry_set_text(GTK_ENTRY(widget), "Change password"); | |
143 gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &disabled_color); | |
144 gtk_entry_set_visibility(GTK_ENTRY(widget), TRUE); | |
116 } | 145 } |
117 | 146 |
118 /* Generated by glade, sorta. */ | 147 /* Generated by glade, sorta. */ |
119 GtkWidget * | 148 GtkWidget * |
120 create_cfgdlg(void) | 149 create_cfgdlg(void) |
126 GtkWidget *label1; | 155 GtkWidget *label1; |
127 GtkWidget *label2; | 156 GtkWidget *label2; |
128 GtkWidget *himage1; | 157 GtkWidget *himage1; |
129 GtkWidget *align1; | 158 GtkWidget *align1; |
130 GtkWidget *notebook1; | 159 GtkWidget *notebook1; |
160 GtkStyle *style; | |
131 | 161 |
132 vbox2 = gtk_vbox_new (FALSE, 0); | 162 vbox2 = gtk_vbox_new (FALSE, 0); |
133 | 163 |
134 label1 = gtk_label_new (_("<b>Services</b>")); | 164 label1 = gtk_label_new (_("<b>Services</b>")); |
135 gtk_widget_show (label1); | 165 gtk_widget_show (label1); |
170 entry1 = gtk_entry_new (); | 200 entry1 = gtk_entry_new (); |
171 gtk_widget_show (entry1); | 201 gtk_widget_show (entry1); |
172 gtk_table_attach_defaults (GTK_TABLE (table1), entry1, 1, 2, 2, 3); | 202 gtk_table_attach_defaults (GTK_TABLE (table1), entry1, 1, 2, 2, 3); |
173 | 203 |
174 entry2 = gtk_entry_new (); | 204 entry2 = gtk_entry_new (); |
175 gtk_entry_set_visibility(GTK_ENTRY(entry2), FALSE); | 205 |
206 style = gtk_widget_get_style(entry2); | |
207 memcpy(&disabled_color, &(style->text[GTK_STATE_INSENSITIVE]), sizeof(GdkColor)); | |
208 gtk_widget_modify_text(entry2, GTK_STATE_NORMAL, &disabled_color); | |
209 | |
210 gtk_entry_set_text(GTK_ENTRY(entry2), "Change password"); | |
211 g_signal_connect(G_OBJECT(entry2), "focus-in-event", | |
212 G_CALLBACK(entry_focus_in), | |
213 NULL); | |
214 g_signal_connect(G_OBJECT(entry2), "focus-out-event", | |
215 G_CALLBACK(entry_focus_out), | |
216 NULL); | |
176 gtk_widget_show (entry2); | 217 gtk_widget_show (entry2); |
177 gtk_table_attach_defaults (GTK_TABLE (table1), entry2, 1, 2, 3, 4); | 218 gtk_table_attach_defaults (GTK_TABLE (table1), entry2, 1, 2, 3, 4); |
178 | 219 |
179 label1 = gtk_label_new (_("<b>Last.FM</b>")); | 220 label1 = gtk_label_new (_("<b>Last.FM</b>")); |
180 gtk_label_set_use_markup (GTK_LABEL (label1), TRUE); | 221 gtk_label_set_use_markup (GTK_LABEL (label1), TRUE); |
209 ge_entry1 = gtk_entry_new (); | 250 ge_entry1 = gtk_entry_new (); |
210 gtk_widget_show (ge_entry1); | 251 gtk_widget_show (ge_entry1); |
211 gtk_table_attach_defaults (GTK_TABLE (table1), ge_entry1, 1, 2, 2, 3); | 252 gtk_table_attach_defaults (GTK_TABLE (table1), ge_entry1, 1, 2, 2, 3); |
212 | 253 |
213 ge_entry2 = gtk_entry_new (); | 254 ge_entry2 = gtk_entry_new (); |
214 gtk_entry_set_visibility(GTK_ENTRY(ge_entry2), FALSE); | 255 gtk_widget_modify_text(ge_entry2, GTK_STATE_NORMAL, &disabled_color); |
256 | |
257 gtk_entry_set_text(GTK_ENTRY(ge_entry2), "Change password"); | |
258 g_signal_connect(G_OBJECT(ge_entry2), "focus-in-event", | |
259 G_CALLBACK(entry_focus_in), | |
260 NULL); | |
261 g_signal_connect(G_OBJECT(ge_entry2), "focus-out-event", | |
262 G_CALLBACK(entry_focus_out), | |
263 NULL); | |
264 | |
215 gtk_widget_show (ge_entry2); | 265 gtk_widget_show (ge_entry2); |
216 gtk_table_attach_defaults (GTK_TABLE (table1), ge_entry2, 1, 2, 3, 4); | 266 gtk_table_attach_defaults (GTK_TABLE (table1), ge_entry2, 1, 2, 3, 4); |
217 | 267 |
218 label1 = gtk_label_new (_("<b>Gerpok</b>")); | 268 label1 = gtk_label_new (_("<b>Gerpok</b>")); |
219 gtk_label_set_use_markup (GTK_LABEL (label1), TRUE); | 269 gtk_label_set_use_markup (GTK_LABEL (label1), TRUE); |
226 gtk_widget_show (himage1); | 276 gtk_widget_show (himage1); |
227 gtk_box_pack_start (GTK_BOX (vbox2), himage1, FALSE, FALSE, 0); | 277 gtk_box_pack_start (GTK_BOX (vbox2), himage1, FALSE, FALSE, 0); |
228 gtk_misc_set_alignment (GTK_MISC (himage1), 1, 0.5); | 278 gtk_misc_set_alignment (GTK_MISC (himage1), 1, 0.5); |
229 | 279 |
230 gtk_entry_set_text(GTK_ENTRY(entry1), ""); | 280 gtk_entry_set_text(GTK_ENTRY(entry1), ""); |
231 gtk_entry_set_text(GTK_ENTRY(entry2), ""); | 281 gtk_entry_set_text(GTK_ENTRY(ge_entry), ""); |
232 | 282 |
233 if ((db = aud_cfg_db_open())) { | 283 if ((db = aud_cfg_db_open())) { |
234 gchar *username = NULL; | 284 gchar *username = NULL; |
235 // last fm | 285 // last fm |
236 aud_cfg_db_get_string(db, "audioscrobbler", "username", | 286 aud_cfg_db_get_string(db, "audioscrobbler", "username", |
251 | 301 |
252 aud_cfg_db_close(db); | 302 aud_cfg_db_close(db); |
253 } | 303 } |
254 | 304 |
255 g_signal_connect(entry1, "changed", G_CALLBACK(entry_changed), NULL); | 305 g_signal_connect(entry1, "changed", G_CALLBACK(entry_changed), NULL); |
256 g_signal_connect(entry2, "changed", G_CALLBACK(entry_changed), NULL); | |
257 g_signal_connect(ge_entry1, "changed", G_CALLBACK(entry_changed), NULL); | 306 g_signal_connect(ge_entry1, "changed", G_CALLBACK(entry_changed), NULL); |
258 g_signal_connect(ge_entry2, "changed", G_CALLBACK(entry_changed), NULL); | |
259 | 307 |
260 return vbox2; | 308 return vbox2; |
261 } | 309 } |
262 | 310 |