inital gtk2 patch
[claws.git] / src / editvcard.c
index 4420b84355e53e78dd23395f36e3d036b77edc2c..a9b61c2347f8a85448f480877ecb3e1de5f12aa6 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 /*
- * Edit VCard address book data.
+ * Edit vCard address book data.
  */
 
 #ifdef HAVE_CONFIG_H
@@ -41,6 +41,9 @@
 #include "prefs_common.h"
 #include "addressitem.h"
 #include "vcard.h"
+#include "mgutils.h"
+#include "gtkutils.h"
+#include "manage_window.h"
 
 #define ADDRESSBOOK_GUESS_VCARD  "MyGnomeCard"
 
@@ -90,7 +93,7 @@ static void edit_vcard_file_check( void ) {
                sMsg = "";
        }
        else if( t == MGU_BAD_FORMAT ) {
-               sMsg = _("File does not appear to be VCard format.");
+               sMsg = _("File does not appear to be vCard format.");
        }
        else {
                sMsg = _("Could not read file.");
@@ -99,7 +102,7 @@ static void edit_vcard_file_check( void ) {
 }
 
 static void edit_vcard_file_ok( GtkWidget *widget, gpointer data ) {
-       gchar *sFile;
+       const gchar *sFile;
        AddressFileSelection *afs;
        GtkWidget *fileSel;
 
@@ -126,12 +129,12 @@ static void edit_vcard_file_cancel( GtkWidget *widget, gpointer data ) {
 static void edit_vcard_file_select_create( AddressFileSelection *afs ) {
        GtkWidget *fileSelector;
 
-       fileSelector = gtk_file_selection_new( _("Select VCard File") );
+       fileSelector = gtk_file_selection_new( _("Select vCard File") );
        gtk_file_selection_hide_fileop_buttons( GTK_FILE_SELECTION(fileSelector) );
-       gtk_signal_connect( GTK_OBJECT (GTK_FILE_SELECTION(fileSelector)->ok_button),
-                             "clicked", GTK_SIGNAL_FUNC (edit_vcard_file_ok), ( gpointer ) afs );
-       gtk_signal_connect( GTK_OBJECT (GTK_FILE_SELECTION(fileSelector)->cancel_button),
-                             "clicked", GTK_SIGNAL_FUNC (edit_vcard_file_cancel), ( gpointer ) afs );
+       g_signal_connect( G_OBJECT (GTK_FILE_SELECTION(fileSelector)->ok_button),
+                         "clicked", G_CALLBACK (edit_vcard_file_ok), ( gpointer ) afs );
+       g_signal_connect( G_OBJECT (GTK_FILE_SELECTION(fileSelector)->cancel_button),
+                         "clicked", G_CALLBACK (edit_vcard_file_cancel), ( gpointer ) afs );
        afs->fileSelector = fileSelector;
        afs->cancelled = TRUE;
 }
@@ -155,11 +158,12 @@ static gint edit_vcard_delete_event( GtkWidget *widget, GdkEventAny *event, gboo
        return TRUE;
 }
 
-static void edit_vcard_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
+static gboolean edit_vcard_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
        if (event && event->keyval == GDK_Escape) {
                *cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static void addressbook_edit_vcard_create( gboolean *cancelled ) {
@@ -179,18 +183,18 @@ static void addressbook_edit_vcard_create( gboolean *cancelled ) {
        GtkWidget *hsbox;
        gint top;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 450, -1);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 450, -1);
        gtk_container_set_border_width( GTK_CONTAINER(window), 0 );
-       gtk_window_set_title(GTK_WINDOW(window), _("Edit VCard Entry"));
+       gtk_window_set_title(GTK_WINDOW(window), _("Edit vCard Entry"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(edit_vcard_delete_event),
-                          cancelled);
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(edit_vcard_key_pressed),
-                          cancelled);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(edit_vcard_delete_event),
+                        cancelled);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(edit_vcard_key_pressed),
+                        cancelled);
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -202,7 +206,7 @@ static void addressbook_edit_vcard_create( gboolean *cancelled ) {
        gtk_table_set_row_spacings(GTK_TABLE(table), 8);
        gtk_table_set_col_spacings(GTK_TABLE(table), 8 );
 
-       // First row
+       /* First row */
        top = 0;
        label = gtk_label_new(_("Name"));
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0);
@@ -214,7 +218,7 @@ static void addressbook_edit_vcard_create( gboolean *cancelled ) {
        check_btn = gtk_button_new_with_label( _(" Check File "));
        gtk_table_attach(GTK_TABLE(table), check_btn, 2, 3, top, (top + 1), GTK_FILL, 0, 3, 0);
 
-       // Second row
+       /* Second row */
        top = 1;
        label = gtk_label_new(_("File"));
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0);
@@ -226,13 +230,13 @@ static void addressbook_edit_vcard_create( gboolean *cancelled ) {
        file_btn = gtk_button_new_with_label( _(" ... "));
        gtk_table_attach(GTK_TABLE(table), file_btn, 2, 3, top, (top + 1), GTK_FILL, 0, 3, 0);
 
-       // Status line
+       /* Status line */
        hsbox = gtk_hbox_new(FALSE, 0);
        gtk_box_pack_end(GTK_BOX(vbox), hsbox, FALSE, FALSE, BORDER_WIDTH);
        statusbar = gtk_statusbar_new();
        gtk_box_pack_start(GTK_BOX(hsbox), statusbar, TRUE, TRUE, BORDER_WIDTH);
 
-       // Button panel
+       /* Button panel */
        gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
                                &cancel_btn, _("Cancel"), NULL, NULL);
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
@@ -242,14 +246,14 @@ static void addressbook_edit_vcard_create( gboolean *cancelled ) {
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_vcard_ok), cancelled);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_vcard_cancel), cancelled);
-       gtk_signal_connect(GTK_OBJECT(file_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_vcard_file_select), NULL);
-       gtk_signal_connect(GTK_OBJECT(check_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_vcard_file_check), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(edit_vcard_ok), cancelled);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(edit_vcard_cancel), cancelled);
+       g_signal_connect(G_OBJECT(file_btn), "clicked",
+                        G_CALLBACK(edit_vcard_file_select), NULL);
+       g_signal_connect(G_OBJECT(check_btn), "clicked",
+                        G_CALLBACK(edit_vcard_file_check), NULL);
 
        gtk_widget_show_all(vbox);
 
@@ -259,17 +263,18 @@ static void addressbook_edit_vcard_create( gboolean *cancelled ) {
        vcardedit.ok_btn     = ok_btn;
        vcardedit.cancel_btn = cancel_btn;
        vcardedit.statusbar  = statusbar;
-       vcardedit.status_cid = gtk_statusbar_get_context_id( GTK_STATUSBAR(statusbar), "Edit VCard Dialog" );
+       vcardedit.status_cid = gtk_statusbar_get_context_id( GTK_STATUSBAR(statusbar), "Edit vCard Dialog" );
 }
 
-AddressVCard *addressbook_edit_vcard( AddressVCard *vcard ) {
+AdapterDSource *addressbook_edit_vcard( AddressIndex *addrIndex, AdapterDSource *ads ) {
        static gboolean cancelled;
        gchar *sName;
        gchar *sFile;
-       VCardFile *vcf;
+       AddressDataSource *ds = NULL;
+       VCardFile *vcf = NULL;
        gboolean fin;
 
-       if (!vcardedit.window)
+       if( ! vcardedit.window )
                addressbook_edit_vcard_create(&cancelled);
        gtk_widget_grab_focus(vcardedit.ok_btn);
        gtk_widget_grab_focus(vcardedit.name_entry);
@@ -277,18 +282,19 @@ AddressVCard *addressbook_edit_vcard( AddressVCard *vcard ) {
        manage_window_set_transient(GTK_WINDOW(vcardedit.window));
 
        edit_vcard_status_show( "" );
-       if( vcard ) {
-               vcf = vcard->cardFile;
-               if (vcf->name)
-                       gtk_entry_set_text(GTK_ENTRY(vcardedit.name_entry), vcf->name);
+       if( ads ) {
+               ds = ads->dataSource;
+               vcf = ds->rawDataSource;
+               if ( vcard_get_name( vcf ) )
+                       gtk_entry_set_text(GTK_ENTRY(vcardedit.name_entry), vcard_get_name( vcf ) );
                if (vcf->path)
                        gtk_entry_set_text(GTK_ENTRY(vcardedit.file_entry), vcf->path);
-               gtk_window_set_title( GTK_WINDOW(vcardedit.window), _("Edit VCard Entry"));
+               gtk_window_set_title( GTK_WINDOW(vcardedit.window), _("Edit vCard Entry"));
        }
        else {
                gtk_entry_set_text(GTK_ENTRY(vcardedit.name_entry), ADDRESSBOOK_GUESS_VCARD );
                gtk_entry_set_text(GTK_ENTRY(vcardedit.file_entry), vcard_find_gnomecard() );
-               gtk_window_set_title( GTK_WINDOW(vcardedit.window), _("Add New VCard Entry"));
+               gtk_window_set_title( GTK_WINDOW(vcardedit.window), _("Add New vCard Entry"));
        }
 
        gtk_main();
@@ -302,21 +308,19 @@ AddressVCard *addressbook_edit_vcard( AddressVCard *vcard ) {
        if( *sFile == '\0' ) fin = TRUE;
 
        if( ! fin ) {
-               if( ! vcard ) {
-                       vcard = g_new0(AddressVCard, 1);
-                       ADDRESS_OBJECT_TYPE(vcard) = ADDR_VCARD;
+               if( ! ads ) {
                        vcf = vcard_create();
-                       vcard->cardFile = vcf;
+                       ds = addrindex_index_add_datasource( addrIndex, ADDR_IF_VCARD, vcf );
+                       ads = addressbook_create_ds_adapter( ds, ADDR_VCARD, NULL );
                }
-               g_free( vcard->name );
-               vcard->name = g_strdup( sName );
+               addressbook_ads_set_name( ads, sName );
                vcard_set_name( vcf, sName );
                vcard_set_file( vcf, sFile );
        }
        g_free( sName );
        g_free( sFile );
 
-       return vcard;
+       return ads;
 }
 
 /*