Code cleanup

This commit is contained in:
Pierre Pronchery 2006-11-05 03:07:45 +00:00
parent 133ef7870a
commit 2cf7857e0f
3 changed files with 79 additions and 30 deletions

View File

@ -13,6 +13,7 @@ typedef enum _AccountConfigType
ACT_NONE = 0, ACT_NONE = 0,
ACT_STRING, ACT_STRING,
ACT_PASSWORD, ACT_PASSWORD,
ACT_FILE,
ACT_UINT16, ACT_UINT16,
ACT_BOOLEAN ACT_BOOLEAN
} AccountConfigType; } AccountConfigType;

View File

@ -13,10 +13,10 @@ char const mbox_name[] = "Local folder";
AccountConfig mbox_config[] = AccountConfig mbox_config[] =
{ {
{ "mbox", "Inbox file", ACT_STRING, NULL }, { "mbox", "Inbox file", ACT_FILE, NULL },
{ "spool", "Incoming mails file", ACT_STRING, NULL }, { "spool", "Incoming mails file", ACT_FILE, NULL },
{ "sent", "Sent mails file", ACT_STRING, NULL }, { "sent", "Sent mails file", ACT_FILE, NULL },
{ "draft", "Draft mails file", ACT_STRING, NULL }, { "draft", "Draft mails file", ACT_FILE, NULL },
{ NULL, NULL, ACT_NONE, NULL } { NULL, NULL, ACT_NONE, NULL }
}; };

View File

@ -638,6 +638,7 @@ static void _on_assistant_prepare(GtkWidget * widget, GtkWidget * page,
static GtkWidget * _update_string(AccountConfig * config, GtkSizeGroup * group); static GtkWidget * _update_string(AccountConfig * config, GtkSizeGroup * group);
static GtkWidget * _update_password(AccountConfig * config, static GtkWidget * _update_password(AccountConfig * config,
GtkSizeGroup * group); GtkSizeGroup * group);
static GtkWidget * _update_file(AccountConfig * config, GtkSizeGroup * group);
static GtkWidget * _update_uint16(AccountConfig * config, GtkSizeGroup * group); static GtkWidget * _update_uint16(AccountConfig * config, GtkSizeGroup * group);
static GtkWidget * _update_boolean(AccountConfig * config); static GtkWidget * _update_boolean(AccountConfig * config);
static GtkWidget * _account_config_update(AccountConfig * config) static GtkWidget * _account_config_update(AccountConfig * config)
@ -647,41 +648,41 @@ static GtkWidget * _account_config_update(AccountConfig * config)
{ {
GtkWidget * vbox; GtkWidget * vbox;
GtkSizeGroup * group; GtkSizeGroup * group;
GtkWidget * widget;
unsigned int i; unsigned int i;
vbox = gtk_vbox_new(FALSE, 4); vbox = gtk_vbox_new(FALSE, 4);
gtk_container_set_border_width(GTK_CONTAINER(vbox), 4); gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
for(i = 0; config[i].name != NULL; i++) for(i = 0; config[i].name != NULL; i++)
{
switch(config[i].type) switch(config[i].type)
{ {
case ACT_NONE: case ACT_NONE:
continue; continue;
case ACT_STRING: case ACT_STRING:
gtk_box_pack_start(GTK_BOX(vbox), widget = _update_string(&config[i], group);
_update_string(&config[i],
group), FALSE, TRUE, 0);
break; break;
case ACT_PASSWORD: case ACT_PASSWORD:
gtk_box_pack_start(GTK_BOX(vbox), widget = _update_password(&config[i], group);
_update_password(&config[i], break;
group), FALSE, TRUE, 0); case ACT_FILE:
widget = _update_file(&config[i], group);
break; break;
case ACT_UINT16: case ACT_UINT16:
gtk_box_pack_start(GTK_BOX(vbox), widget = _update_uint16(&config[i], group);
_update_uint16(&config[i],
group), FALSE, TRUE, 0);
break; break;
case ACT_BOOLEAN: case ACT_BOOLEAN:
gtk_box_pack_start(GTK_BOX(vbox), widget = _update_boolean(&config[i]);
_update_boolean(&config[i]),
FALSE, TRUE, 0);
break; break;
} }
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
}
gtk_widget_show_all(vbox); gtk_widget_show_all(vbox);
return vbox; return vbox;
} }
static void _on_string_changed(GtkWidget * widget, gpointer data);
static GtkWidget * _update_string(AccountConfig * config, GtkSizeGroup * group) static GtkWidget * _update_string(AccountConfig * config, GtkSizeGroup * group)
{ {
GtkWidget * hbox; GtkWidget * hbox;
@ -693,10 +694,28 @@ static GtkWidget * _update_string(AccountConfig * config, GtkSizeGroup * group)
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
widget = gtk_entry_new(); widget = gtk_entry_new();
gtk_size_group_add_widget(group, widget); gtk_size_group_add_widget(group, widget);
g_signal_connect(G_OBJECT(widget), "changed", G_CALLBACK(
_on_string_changed), &config->value);
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0);
return hbox; return hbox;
} }
static void _on_string_changed(GtkWidget * widget, gpointer data)
{
const char * text;
char ** value = data;
char * p;
text = gtk_entry_get_text(GTK_ENTRY(widget));
if((p = realloc(*value, strlen(text)+1)) == NULL)
{
mailer_error(NULL, strerror(errno), 0);
return;
}
*value = p;
strcpy(p, text);
}
static GtkWidget * _update_password(AccountConfig * config, static GtkWidget * _update_password(AccountConfig * config,
GtkSizeGroup * group) GtkSizeGroup * group)
{ {
@ -710,6 +729,24 @@ static GtkWidget * _update_password(AccountConfig * config,
widget = gtk_entry_new(); widget = gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE);
gtk_size_group_add_widget(group, widget); gtk_size_group_add_widget(group, widget);
g_signal_connect(G_OBJECT(widget), "changed", G_CALLBACK(
_on_string_changed), &config->value);
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0);
return hbox;
}
static GtkWidget * _update_file(AccountConfig * config, GtkSizeGroup * group)
{
GtkWidget * hbox;
GtkWidget * widget;
hbox = gtk_hbox_new(FALSE, 0);
widget = gtk_label_new(config->title);
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
widget = gtk_file_chooser_button_new("Choose file",
GTK_FILE_CHOOSER_ACTION_OPEN);
gtk_size_group_add_widget(group, widget);
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0);
return hbox; return hbox;
} }
@ -738,6 +775,7 @@ static GtkWidget * _display_string(AccountConfig * config,
GtkSizeGroup * group); GtkSizeGroup * group);
static GtkWidget * _display_password(AccountConfig * config, static GtkWidget * _display_password(AccountConfig * config,
GtkSizeGroup * group); GtkSizeGroup * group);
static GtkWidget * _display_file(AccountConfig * config, GtkSizeGroup * group);
static GtkWidget * _display_uint16(AccountConfig * config, static GtkWidget * _display_uint16(AccountConfig * config,
GtkSizeGroup * group); GtkSizeGroup * group);
static GtkWidget * _display_boolean(AccountConfig * config, static GtkWidget * _display_boolean(AccountConfig * config,
@ -747,37 +785,36 @@ static GtkWidget * _account_config_display(AccountConfig * config)
{ {
GtkWidget * vbox; GtkWidget * vbox;
GtkSizeGroup * group; GtkSizeGroup * group;
GtkWidget * widget;
unsigned int i; unsigned int i;
vbox = gtk_vbox_new(FALSE, 4); vbox = gtk_vbox_new(FALSE, 4);
gtk_container_set_border_width(GTK_CONTAINER(vbox), 4); gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
for(i = 0; config[i].name != NULL; i++) for(i = 0; config[i].name != NULL; i++)
{
switch(config[i].type) switch(config[i].type)
{ {
case ACT_NONE: case ACT_NONE:
continue; continue;
case ACT_STRING: case ACT_STRING:
gtk_box_pack_start(GTK_BOX(vbox), widget = _display_string(&config[i], group);
_display_string(&config[i],
group), FALSE, TRUE, 0);
break; break;
case ACT_PASSWORD: case ACT_PASSWORD:
gtk_box_pack_start(GTK_BOX(vbox), widget = _display_password(&config[i], group);
_display_password(&config[i], break;
group), FALSE, TRUE, 0); case ACT_FILE:
widget = _display_file(&config[i], group);
break; break;
case ACT_UINT16: case ACT_UINT16:
gtk_box_pack_start(GTK_BOX(vbox), widget = _display_uint16(&config[i], group);
_display_uint16(&config[i],
group), FALSE, TRUE, 0);
break; break;
case ACT_BOOLEAN: case ACT_BOOLEAN:
gtk_box_pack_start(GTK_BOX(vbox), widget = _display_boolean(&config[i], group);
_display_boolean(&config[i],
group), FALSE, TRUE, 0);
break; break;
} }
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
}
gtk_widget_show_all(vbox); gtk_widget_show_all(vbox);
return vbox; return vbox;
} }
@ -791,23 +828,32 @@ static GtkWidget * _display_string(AccountConfig * config, GtkSizeGroup * group)
widget = gtk_label_new(config->title); widget = gtk_label_new(config->title);
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
widget = gtk_label_new("FIXME"); widget = gtk_label_new(config->value);
gtk_size_group_add_widget(group, widget); gtk_size_group_add_widget(group, widget);
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0);
return hbox; return hbox;
} }
static GtkWidget * _display_file(AccountConfig * config, GtkSizeGroup * group)
{
return _display_string(config, group);
}
static GtkWidget * _display_password(AccountConfig * config, static GtkWidget * _display_password(AccountConfig * config,
GtkSizeGroup * group) GtkSizeGroup * group)
{ {
GtkWidget * hbox; GtkWidget * hbox;
GtkWidget * widget; GtkWidget * widget;
PangoFontDescription * desc;
hbox = gtk_hbox_new(FALSE, 0); hbox = gtk_hbox_new(FALSE, 0);
widget = gtk_label_new(config->title); widget = gtk_label_new(config->title);
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
widget = gtk_label_new("FIXME"); widget = gtk_label_new("hidden");
desc = pango_font_description_new();
pango_font_description_set_style(desc, PANGO_STYLE_ITALIC);
gtk_widget_modify_font(widget, desc);
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5);
gtk_size_group_add_widget(group, widget); gtk_size_group_add_widget(group, widget);
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0);
@ -824,6 +870,7 @@ static GtkWidget * _display_uint16(AccountConfig * config, GtkSizeGroup * group)
widget = gtk_label_new(config->title); widget = gtk_label_new(config->title);
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
/* FIXME will be malloced? */
snprintf(buf, sizeof(buf), "%u", (uint16_t)config->value); snprintf(buf, sizeof(buf), "%u", (uint16_t)config->value);
widget = gtk_label_new(buf); widget = gtk_label_new(buf);
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5);
@ -842,6 +889,7 @@ static GtkWidget * _display_boolean(AccountConfig * config,
widget = gtk_label_new(config->title); widget = gtk_label_new(config->title);
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
/* FIXME will be malloced? */
widget = gtk_label_new(config->value != 0 ? "Yes" : "No"); widget = gtk_label_new(config->value != 0 ? "Yes" : "No");
gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5);
gtk_size_group_add_widget(group, widget); gtk_size_group_add_widget(group, widget);