2002-02-04  JP Rosevear  <jpr@ximian.com>

	* gui/contact-editor/e-contact-editor.c (find_address_mailing): tidy

	* conduit/address-conduit.c (addrconduit_load_configuration): load
	default address setting
	(addrconduit_save_configuration): save default address setting
	(e_addr_gui_new): new gui routine for conduit settings
	(e_addr_gui_fill_widgets): ditto
	(e_addr_gui_fill_config): ditto
	(e_addr_gui_destroy): ditto
	(e_addr_context_destroy): destroy the gui and new_cfg
	(local_record_from_ecard): reinstate commented out bits, determine
	which address to sync to pilot
	(ecard_from_remote_record): determine which address to sync from
	pilot
	(fill_widgets): put the gui widgets in
	(create_settings_window): create gui
	(save_settings): fill gui

svn path=/trunk/; revision=15568
This commit is contained in:
JP Rosevear
2002-02-04 20:45:42 +00:00
committed by JP Rosevear
parent 331b663182
commit 91b27c9b35
3 changed files with 178 additions and 21 deletions

View File

@ -1,5 +1,25 @@
2002-02-04 JP Rosevear <jpr@ximian.com> 2002-02-04 JP Rosevear <jpr@ximian.com>
* gui/contact-editor/e-contact-editor.c (find_address_mailing): tidy
* conduit/address-conduit.c (addrconduit_load_configuration): load
default address setting
(addrconduit_save_configuration): save default address setting
(e_addr_gui_new): new gui routine for conduit settings
(e_addr_gui_fill_widgets): ditto
(e_addr_gui_fill_config): ditto
(e_addr_gui_destroy): ditto
(e_addr_context_destroy): destroy the gui and new_cfg
(local_record_from_ecard): reinstate commented out bits, determine
which address to sync to pilot
(ecard_from_remote_record): determine which address to sync from
pilot
(fill_widgets): put the gui widgets in
(create_settings_window): create gui
(save_settings): fill gui
2002-02-04 JP Rosevear <jpr@ximian.com>
* gui/contact-editor/e-contact-editor.c (address_text_changed): if * gui/contact-editor/e-contact-editor.c (address_text_changed): if
the shown address in the mailing address or there is no mailing the shown address in the mailing address or there is no mailing
address, set the default flag and make sure the button is checked address, set the default flag and make sure the button is checked

View File

@ -40,6 +40,7 @@
#include <gpilotd/gnome-pilot-conduit-sync-abs.h> #include <gpilotd/gnome-pilot-conduit-sync-abs.h>
#include <libgpilotdCM/gnome-pilot-conduit-management.h> #include <libgpilotdCM/gnome-pilot-conduit-management.h>
#include <libgpilotdCM/gnome-pilot-conduit-config.h> #include <libgpilotdCM/gnome-pilot-conduit-config.h>
#include <e-dialog-widgets.h>
#include <e-pilot-map.h> #include <e-pilot-map.h>
#include <e-pilot-settings.h> #include <e-pilot-settings.h>
#include <e-pilot-util.h> #include <e-pilot-util.h>
@ -131,6 +132,7 @@ static int priority_label [] = {
typedef struct _EAddrLocalRecord EAddrLocalRecord; typedef struct _EAddrLocalRecord EAddrLocalRecord;
typedef struct _EAddrConduitCfg EAddrConduitCfg; typedef struct _EAddrConduitCfg EAddrConduitCfg;
typedef struct _EAddrConduitGui EAddrConduitGui;
typedef struct _EAddrConduitContext EAddrConduitContext; typedef struct _EAddrConduitContext EAddrConduitContext;
/* Local Record */ /* Local Record */
@ -164,6 +166,8 @@ struct _EAddrConduitCfg {
GnomePilotConduitSyncType sync_type; GnomePilotConduitSyncType sync_type;
gboolean secret; gboolean secret;
ECardSimpleAddressId default_address;
gchar *last_uri; gchar *last_uri;
}; };
@ -173,7 +177,7 @@ addrconduit_load_configuration (guint32 pilot_id)
EAddrConduitCfg *c; EAddrConduitCfg *c;
GnomePilotConduitManagement *management; GnomePilotConduitManagement *management;
GnomePilotConduitConfig *config; GnomePilotConduitConfig *config;
gchar prefix[256]; gchar *address, prefix[256];
g_snprintf (prefix, 255, "/gnome-pilot.d/e-address-conduit/Pilot_%u/", g_snprintf (prefix, 255, "/gnome-pilot.d/e-address-conduit/Pilot_%u/",
pilot_id); pilot_id);
@ -192,6 +196,14 @@ addrconduit_load_configuration (guint32 pilot_id)
gnome_config_push_prefix (prefix); gnome_config_push_prefix (prefix);
c->secret = gnome_config_get_bool ("secret=FALSE"); c->secret = gnome_config_get_bool ("secret=FALSE");
address = gnome_config_get_string ("default_address=business");
if (!strcmp (address, "business"))
c->default_address = E_CARD_SIMPLE_ADDRESS_ID_BUSINESS;
else if (!strcmp (address, "home"))
c->default_address = E_CARD_SIMPLE_ADDRESS_ID_HOME;
else if (!strcmp (address, "other"))
c->default_address = E_CARD_SIMPLE_ADDRESS_ID_OTHER;
g_free (address);
c->last_uri = gnome_config_get_string ("last_uri"); c->last_uri = gnome_config_get_string ("last_uri");
gnome_config_pop_prefix (); gnome_config_pop_prefix ();
@ -209,6 +221,19 @@ addrconduit_save_configuration (EAddrConduitCfg *c)
gnome_config_push_prefix (prefix); gnome_config_push_prefix (prefix);
gnome_config_set_bool ("secret", c->secret); gnome_config_set_bool ("secret", c->secret);
switch (c->default_address) {
case E_CARD_SIMPLE_ADDRESS_ID_BUSINESS:
gnome_config_set_string ("default_address", "business");
break;
case E_CARD_SIMPLE_ADDRESS_ID_HOME:
gnome_config_set_string ("default_address", "home");
break;
case E_CARD_SIMPLE_ADDRESS_ID_OTHER:
gnome_config_set_string ("default_address", "other");
break;
default:
g_warning ("Unknown default_address value");
}
gnome_config_set_string ("last_uri", c->last_uri); gnome_config_set_string ("last_uri", c->last_uri);
gnome_config_pop_prefix (); gnome_config_pop_prefix ();
@ -225,9 +250,10 @@ addrconduit_dupe_configuration (EAddrConduitCfg *c)
retval = g_new0 (EAddrConduitCfg, 1); retval = g_new0 (EAddrConduitCfg, 1);
retval->sync_type = c->sync_type; retval->sync_type = c->sync_type;
retval->secret = c->secret;
retval->pilot_id = c->pilot_id; retval->pilot_id = c->pilot_id;
retval->secret = c->secret;
retval->default_address = c->default_address;
retval->last_uri = g_strdup (c->last_uri); retval->last_uri = g_strdup (c->last_uri);
return retval; return retval;
@ -242,12 +268,91 @@ addrconduit_destroy_configuration (EAddrConduitCfg *c)
g_free (c); g_free (c);
} }
/* Gui */
struct _EAddrConduitGui {
GtkWidget *default_address;
};
static EAddrConduitGui *
e_addr_gui_new (EPilotSettings *ps)
{
EAddrConduitGui *gui;
GtkWidget *lbl, *menu;
gint rows, i;
static const char *items[] = {"Business", "Home", "Other", NULL};
g_return_val_if_fail (ps != NULL, NULL);
g_return_val_if_fail (E_IS_PILOT_SETTINGS (ps), NULL);
gtk_table_resize (GTK_TABLE (ps), E_PILOT_SETTINGS_TABLE_ROWS + 1,
E_PILOT_SETTINGS_TABLE_COLS);
gui = g_new0 (EAddrConduitGui, 1);
rows = E_PILOT_SETTINGS_TABLE_ROWS;
lbl = gtk_label_new (_("Default Sync Address:"));
gtk_misc_set_alignment (GTK_MISC (lbl), 0.0, 0.5);
gui->default_address = gtk_option_menu_new ();
menu = gtk_menu_new ();
for (i = 0; items[i] != NULL; i++) {
GtkWidget *item;
item = gtk_menu_item_new_with_label (items[i]);
gtk_widget_show (item);
gtk_menu_append (GTK_MENU (menu), item);
}
gtk_widget_show (menu);
gtk_option_menu_set_menu (GTK_OPTION_MENU (gui->default_address), menu);
gtk_table_attach_defaults (GTK_TABLE (ps), lbl, 0, 1, rows, rows + 1);
gtk_table_attach_defaults (GTK_TABLE (ps), gui->default_address, 1, 2, rows, rows + 1);
gtk_widget_show (lbl);
gtk_widget_show (gui->default_address);
return gui;
}
static const int default_address_map[] = {
E_CARD_SIMPLE_ADDRESS_ID_BUSINESS,
E_CARD_SIMPLE_ADDRESS_ID_HOME,
E_CARD_SIMPLE_ADDRESS_ID_OTHER,
-1
};
static void
e_addr_gui_fill_widgets (EAddrConduitGui *gui, EAddrConduitCfg *cfg)
{
g_return_if_fail (gui != NULL);
g_return_if_fail (cfg != NULL);
e_dialog_option_menu_set (gui->default_address,
cfg->default_address,
default_address_map);
}
static void
e_addr_gui_fill_config (EAddrConduitGui *gui, EAddrConduitCfg *cfg)
{
g_return_if_fail (gui != NULL);
g_return_if_fail (cfg != NULL);
cfg->default_address = e_dialog_option_menu_get (gui->default_address,
default_address_map);
}
static void
e_addr_gui_destroy (EAddrConduitGui *gui)
{
g_free (gui);
}
/* Context */ /* Context */
struct _EAddrConduitContext { struct _EAddrConduitContext {
EAddrConduitCfg *cfg;
GnomePilotDBInfo *dbi; GnomePilotDBInfo *dbi;
EAddrConduitCfg *cfg;
EAddrConduitCfg *new_cfg; EAddrConduitCfg *new_cfg;
EAddrConduitGui *gui;
GtkWidget *ps; GtkWidget *ps;
struct AddressAppInfo ai; struct AddressAppInfo ai;
@ -271,6 +376,7 @@ e_addr_context_new (guint32 pilot_id)
ctxt->cfg = addrconduit_load_configuration (pilot_id); ctxt->cfg = addrconduit_load_configuration (pilot_id);
ctxt->new_cfg = addrconduit_dupe_configuration (ctxt->cfg); ctxt->new_cfg = addrconduit_dupe_configuration (ctxt->cfg);
ctxt->gui = NULL;
ctxt->ps = NULL; ctxt->ps = NULL;
ctxt->ebook = NULL; ctxt->ebook = NULL;
ctxt->cards = NULL; ctxt->cards = NULL;
@ -291,7 +397,11 @@ e_addr_context_destroy (EAddrConduitContext *ctxt)
if (ctxt->cfg != NULL) if (ctxt->cfg != NULL)
addrconduit_destroy_configuration (ctxt->cfg); addrconduit_destroy_configuration (ctxt->cfg);
if (ctxt->new_cfg != NULL)
addrconduit_destroy_configuration (ctxt->new_cfg);
if (ctxt->gui != NULL)
e_addr_gui_destroy (ctxt->gui);
if (ctxt->ebook != NULL) if (ctxt->ebook != NULL)
gtk_object_unref (GTK_OBJECT (ctxt->ebook)); gtk_object_unref (GTK_OBJECT (ctxt->ebook));
@ -776,6 +886,7 @@ local_record_from_ecard (EAddrLocalRecord *local, ECard *ecard, EAddrConduitCont
{ {
ECardSimple *simple; ECardSimple *simple;
const ECardDeliveryAddress *delivery; const ECardDeliveryAddress *delivery;
ECardSimpleAddressId mailing_address;
int phone = entryPhone1; int phone = entryPhone1;
gboolean syncable; gboolean syncable;
@ -810,16 +921,16 @@ local_record_from_ecard (EAddrLocalRecord *local, ECard *ecard, EAddrConduitCont
memset (&addr, 0, sizeof (struct Address)); memset (&addr, 0, sizeof (struct Address));
unpack_Address (&addr, record, 0xffff); unpack_Address (&addr, record, 0xffff);
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
// if (addr.entry[entryPhone1 + i]) if (addr.entry[entryPhone1 + i])
// local->addr->entry[entryPhone1 + i] = local->addr->entry[entryPhone1 + i] =
// strdup (addr.entry[entryPhone1 + i]); strdup (addr.entry[entryPhone1 + i]);
local->addr->phoneLabel[i] = addr.phoneLabel[i]; local->addr->phoneLabel[i] = addr.phoneLabel[i];
} }
local->addr->showPhone = addr.showPhone; local->addr->showPhone = addr.showPhone;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
// if (addr.entry[entryCustom1 + i]) if (addr.entry[entryCustom1 + i])
// local->addr->entry[entryCustom1 + i] = local->addr->entry[entryCustom1 + i] =
// strdup (addr.entry[entryCustom1 + i]); strdup (addr.entry[entryCustom1 + i]);
} }
free_Address (&addr); free_Address (&addr);
} }
@ -833,7 +944,18 @@ local_record_from_ecard (EAddrLocalRecord *local, ECard *ecard, EAddrConduitCont
local->addr->entry[entryCompany] = e_pilot_utf8_to_pchar (ecard->org); local->addr->entry[entryCompany] = e_pilot_utf8_to_pchar (ecard->org);
local->addr->entry[entryTitle] = e_pilot_utf8_to_pchar (ecard->title); local->addr->entry[entryTitle] = e_pilot_utf8_to_pchar (ecard->title);
delivery = e_card_simple_get_delivery_address (simple, E_CARD_SIMPLE_ADDRESS_ID_BUSINESS); mailing_address = -1;
for (i = 0; i < E_CARD_SIMPLE_ADDRESS_ID_LAST; i++) {
const ECardAddrLabel *address;
address = e_card_simple_get_address(simple, i);
if (address && (address->flags & E_CARD_ADDR_DEFAULT))
mailing_address = i;
}
if (mailing_address == -1)
mailing_address = ctxt->cfg->default_address;
delivery = e_card_simple_get_delivery_address (simple, mailing_address);
if (delivery) { if (delivery) {
local->addr->entry[entryAddress] = e_pilot_utf8_to_pchar (delivery->street); local->addr->entry[entryAddress] = e_pilot_utf8_to_pchar (delivery->street);
local->addr->entry[entryCity] = e_pilot_utf8_to_pchar (delivery->city); local->addr->entry[entryCity] = e_pilot_utf8_to_pchar (delivery->city);
@ -958,6 +1080,7 @@ ecard_from_remote_record(EAddrConduitContext *ctxt,
ECardName *name; ECardName *name;
ECardDeliveryAddress *delivery; ECardDeliveryAddress *delivery;
ECardAddrLabel *label; ECardAddrLabel *label;
ECardSimpleAddressId mailing_address;
char *txt; char *txt;
ECardSimpleField next_mail, next_home, next_work, next_fax; ECardSimpleField next_mail, next_home, next_work, next_fax;
ECardSimpleField next_other, next_main, next_pager, next_mobile; ECardSimpleField next_other, next_main, next_pager, next_mobile;
@ -1000,8 +1123,19 @@ ecard_from_remote_record(EAddrConduitContext *ctxt,
g_free (txt); g_free (txt);
/* Address */ /* Address */
mailing_address = -1;
for (i = 0; i < E_CARD_SIMPLE_ADDRESS_ID_LAST; i++) {
const ECardAddrLabel *addr;
addr = e_card_simple_get_address(simple, i);
if (addr && (addr->flags & E_CARD_ADDR_DEFAULT))
mailing_address = i;
}
if (mailing_address == -1)
mailing_address = ctxt->cfg->default_address;
delivery = e_card_delivery_address_new (); delivery = e_card_delivery_address_new ();
delivery->flags = E_CARD_ADDR_WORK; delivery->flags |= E_CARD_ADDR_DEFAULT;
delivery->street = get_entry_text (address, entryAddress); delivery->street = get_entry_text (address, entryAddress);
delivery->city = get_entry_text (address, entryCity); delivery->city = get_entry_text (address, entryCity);
delivery->region = get_entry_text (address, entryState); delivery->region = get_entry_text (address, entryState);
@ -1009,12 +1143,12 @@ ecard_from_remote_record(EAddrConduitContext *ctxt,
delivery->code = get_entry_text (address, entryZip); delivery->code = get_entry_text (address, entryZip);
label = e_card_address_label_new (); label = e_card_address_label_new ();
label->flags = E_CARD_ADDR_WORK; label->flags |= E_CARD_ADDR_DEFAULT;
label->data = e_card_delivery_address_to_string (delivery); label->data = e_card_delivery_address_to_string (delivery);
e_card_simple_set_address (simple, E_CARD_SIMPLE_ADDRESS_ID_BUSINESS, label); e_card_simple_set_address (simple, mailing_address, label);
e_card_simple_set_delivery_address (simple, E_CARD_SIMPLE_ADDRESS_ID_BUSINESS, delivery); e_card_simple_set_delivery_address (simple, mailing_address, delivery);
e_card_delivery_address_unref (delivery); e_card_delivery_address_unref (delivery);
e_card_address_label_unref (label); e_card_address_label_unref (label);
@ -1644,6 +1778,8 @@ fill_widgets (EAddrConduitContext *ctxt)
{ {
e_pilot_settings_set_secret (E_PILOT_SETTINGS (ctxt->ps), e_pilot_settings_set_secret (E_PILOT_SETTINGS (ctxt->ps),
ctxt->cfg->secret); ctxt->cfg->secret);
e_addr_gui_fill_widgets (ctxt->gui, ctxt->cfg);
} }
static gint static gint
@ -1654,6 +1790,8 @@ create_settings_window (GnomePilotConduit *conduit,
LOG ("create_settings_window"); LOG ("create_settings_window");
ctxt->ps = e_pilot_settings_new (); ctxt->ps = e_pilot_settings_new ();
ctxt->gui = e_addr_gui_new (E_PILOT_SETTINGS (ctxt->ps));
gtk_container_add (GTK_CONTAINER (parent), ctxt->ps); gtk_container_add (GTK_CONTAINER (parent), ctxt->ps);
gtk_widget_show (ctxt->ps); gtk_widget_show (ctxt->ps);
@ -1676,7 +1814,8 @@ save_settings (GnomePilotConduit *conduit, EAddrConduitContext *ctxt)
ctxt->new_cfg->secret = ctxt->new_cfg->secret =
e_pilot_settings_get_secret (E_PILOT_SETTINGS (ctxt->ps)); e_pilot_settings_get_secret (E_PILOT_SETTINGS (ctxt->ps));
e_addr_gui_fill_config (ctxt->gui, ctxt->new_cfg);
addrconduit_save_configuration (ctxt->new_cfg); addrconduit_save_configuration (ctxt->new_cfg);
} }

View File

@ -2014,8 +2014,6 @@ find_address_mailing (EContactEditor *editor)
} }
} }
} }
} }
static void static void