Compare commits

..

2 Commits

3 changed files with 59 additions and 14 deletions

View File

@ -1,5 +1,5 @@
/* $Id$ */ /* $Id$ */
/* Copyright (c) 2011-2018 Pierre Pronchery <khorben@defora.org> */ /* Copyright (c) 2011-2024 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS Desktop Mailer */ /* This file is part of DeforaOS Desktop Mailer */
/* All rights reserved. /* All rights reserved.
* *
@ -45,6 +45,7 @@ typedef struct _AccountIdentity
{ {
char * from; char * from;
char * email; char * email;
char * organization;
char * signature; char * signature;
} AccountIdentity; } AccountIdentity;

View File

@ -2803,7 +2803,7 @@ static void _on_preferences_account_edit(gpointer data)
static GtkWidget * _account_edit(Mailer * mailer, Account * account) static GtkWidget * _account_edit(Mailer * mailer, Account * account)
{ {
char const * title; AccountData * ad;
char const * p; char const * p;
GtkWidget * window; GtkWidget * window;
char buf[80]; char buf[80];
@ -2816,16 +2816,27 @@ static GtkWidget * _account_edit(Mailer * mailer, Account * account)
GtkWidget * hbox; GtkWidget * hbox;
GtkSizeGroup * group; GtkSizeGroup * group;
title = account_get_title(account); if((ad = malloc(sizeof(*ad))) == NULL)
snprintf(buf, sizeof(buf), "%s%s", _("Edit account: "), title); /* FIXME report the error */
return NULL;
memset(ad, 0, sizeof(*ad));
ad->mailer = mailer;
if((ad->title = strdup(account_get_title(account))) == NULL)
{
/* FIXME report the error */
free(ad);
return NULL;
}
ad->account = account;
snprintf(buf, sizeof(buf), "%s%s", _("Edit account: "), ad->title);
window = gtk_dialog_new_with_buttons(buf, GTK_WINDOW(mailer->pr_window), window = gtk_dialog_new_with_buttons(buf, GTK_WINDOW(mailer->pr_window),
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK,
NULL); NULL);
g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK( g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(
_account_edit_on_closex), NULL); _account_edit_on_closex), ad);
g_signal_connect(G_OBJECT(window), "response", G_CALLBACK( g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(
_account_edit_on_response), NULL); _account_edit_on_response), ad);
#if GTK_CHECK_VERSION(2, 14, 0) #if GTK_CHECK_VERSION(2, 14, 0)
content = gtk_dialog_get_content_area(GTK_DIALOG(window)); content = gtk_dialog_get_content_area(GTK_DIALOG(window));
#else #else
@ -2848,7 +2859,9 @@ static GtkWidget * _account_edit(Mailer * mailer, Account * account)
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);
widget = gtk_entry_new(); widget = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(widget), title); gtk_entry_set_text(GTK_ENTRY(widget), ad->title);
g_signal_connect(G_OBJECT(widget), "changed", G_CALLBACK(
_on_entry_changed), &ad->title);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
/* identity */ /* identity */
@ -2866,8 +2879,12 @@ static GtkWidget * _account_edit(Mailer * mailer, Account * account)
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);
widget = gtk_entry_new(); widget = gtk_entry_new();
if((p = config_get(mailer->config, title, "identity_name")) != NULL) if((p = config_get(mailer->config, ad->title, "identity_name")) != NULL)
gtk_entry_set_text(GTK_ENTRY(widget), p); gtk_entry_set_text(GTK_ENTRY(widget), p);
/* XXX may fail */
ad->identity.from = (p != NULL) ? strdup(p) : NULL;
g_signal_connect(G_OBJECT(widget), "changed", G_CALLBACK(
_on_entry_changed), &ad->identity.from);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, TRUE, 0);
/* identity: address */ /* identity: address */
@ -2881,8 +2898,13 @@ static GtkWidget * _account_edit(Mailer * mailer, Account * account)
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);
widget = gtk_entry_new(); widget = gtk_entry_new();
if((p = config_get(mailer->config, title, "identity_email")) != NULL) if((p = config_get(mailer->config, ad->title, "identity_email"))
!= NULL)
gtk_entry_set_text(GTK_ENTRY(widget), p); gtk_entry_set_text(GTK_ENTRY(widget), p);
/* XXX may fail */
ad->identity.email = (p != NULL) ? strdup(p) : NULL;
g_signal_connect(G_OBJECT(widget), "changed", G_CALLBACK(
_on_entry_changed), &ad->identity.email);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, TRUE, 0);
/* identity: organization */ /* identity: organization */
@ -2896,9 +2918,13 @@ static GtkWidget * _account_edit(Mailer * mailer, Account * account)
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);
widget = gtk_entry_new(); widget = gtk_entry_new();
if((p = config_get(mailer->config, title, "identity_organization")) if((p = config_get(mailer->config, ad->title, "identity_organization"))
!= NULL) != NULL)
gtk_entry_set_text(GTK_ENTRY(widget), p); gtk_entry_set_text(GTK_ENTRY(widget), p);
/* XXX may fail */
ad->identity.organization = (p != NULL) ? strdup(p) : NULL;
g_signal_connect(G_OBJECT(widget), "changed", G_CALLBACK(
_on_entry_changed), &ad->identity.organization);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(frame), vbox2); gtk_container_add(GTK_CONTAINER(frame), vbox2);
@ -2918,15 +2944,33 @@ static GtkWidget * _account_edit(Mailer * mailer, Account * account)
static gboolean _account_edit_on_closex(GtkWidget * widget, GdkEvent * event, static gboolean _account_edit_on_closex(GtkWidget * widget, GdkEvent * event,
gpointer data) gpointer data)
{ {
_account_edit_on_response(widget, GTK_RESPONSE_CANCEL, data); AccountData * ad = data;
_account_edit_on_response(widget, GTK_RESPONSE_CANCEL, ad);
return TRUE; return TRUE;
} }
static void _account_edit_on_response(GtkWidget * widget, gint response, static void _account_edit_on_response(GtkWidget * widget, gint response,
gpointer data) gpointer data)
{ {
/* FIXME really implement */ AccountData * ad = data;
gtk_widget_hide(widget); gtk_widget_hide(widget);
switch(response)
{
case GTK_RESPONSE_OK:
/* FIXME really implement */
break;
case GTK_RESPONSE_CANCEL:
default:
break;
}
free(ad->title);
free(ad->identity.from);
free(ad->identity.email);
free(ad->identity.organization);
free(ad->identity.signature);
free(ad);
} }
static void _on_preferences_account_delete(gpointer data) static void _on_preferences_account_delete(gpointer data)

View File

@ -37,10 +37,10 @@ ldflags=`pkg-config --libs glib-2.0 libSystem` `pkg-config --libs openssl`
type=binary type=binary
#for Gtk+ 2 #for Gtk+ 2
#cflags=`pkg-config --cflags gtk+-2.0` #cflags=`pkg-config --cflags gtk+-2.0`
#ldflags=`pkg-config --libs gtk+-2.0` -ldl #ldflags=`pkg-config --libs gtk+-2.0`
#for Gtk+ 3 #for Gtk+ 3
cflags=`pkg-config --cflags gtk+-3.0` cflags=`pkg-config --cflags gtk+-3.0`
ldflags=`pkg-config --libs gtk+-3.0` -ldl ldflags=`pkg-config --libs gtk+-3.0`
sources=plugins.c sources=plugins.c
[tests.log] [tests.log]