diff options
Diffstat (limited to 'sync/src/sync_main.c')
-rw-r--r-- | sync/src/sync_main.c | 108 |
1 files changed, 82 insertions, 26 deletions
diff --git a/sync/src/sync_main.c b/sync/src/sync_main.c index 85ca89c..c5d4278 100644 --- a/sync/src/sync_main.c +++ b/sync/src/sync_main.c @@ -14,6 +14,7 @@ #include "sync_item.h" #include "sync_evo2_item.h" #include "sync_file_item.h" +#include "sync_syncml_item.h" #if 0 static gboolean sync_clean_backup (SyncData *data) @@ -231,13 +232,13 @@ sync_failed_cb (SyncGroup *group, SyncData *data) g_source_remove (data->animate_id); } -static gboolean +gboolean sync_activate_cursor_item_cb (GtkIconView *iconview, SyncData *data) { return FALSE; } -static void +void sync_item_activated_cb (GtkIconView *iconview, GtkTreePath *arg1, SyncData *data) { @@ -282,6 +283,8 @@ sync_item_activated_cb (GtkIconView *iconview, GtkTreePath *arg1, data->xml, "sync_image_notebook"); gtk_notebook_set_current_page ( GTK_NOTEBOOK (widget), IMAGE_TAB_PREPARE); + widget = glade_xml_get_widget (data->xml, "cancel_button"); + gtk_widget_set_sensitive (widget, TRUE); widget = glade_xml_get_widget (data->xml, "main_notebook"); gtk_notebook_set_current_page (GTK_NOTEBOOK (widget), TAB_SYNC); data->animate_id = g_timeout_add ( @@ -289,7 +292,7 @@ sync_item_activated_cb (GtkIconView *iconview, GtkTreePath *arg1, } } -static void +void sync_sync_button_cb (GtkWidget *source, SyncData *data) { GtkWidget *widget = glade_xml_get_widget (data->xml, "main_iconview"); @@ -302,13 +305,79 @@ sync_sync_button_cb (GtkWidget *source, SyncData *data) } } -static void +void +sync_abort_cb (GtkWidget *source, SyncData *data) +{ + GtkWidget *widget = glade_xml_get_widget (data->xml, "cancel_button"); + gtk_widget_set_sensitive (widget, FALSE); + sync_group_abort (data->group); +} + +void +sync_conflict_resolve_cb (GtkWidget *source, SyncData *data) +{ + GtkWidget *widget; + SyncGroupConflictRes res = IGNORE; + + if (strcmp (gtk_widget_get_name (source), "abort_button") == 0) { + widget = glade_xml_get_widget (data->xml, "cancel_button"); + gtk_widget_set_sensitive (widget, FALSE); + res = ABORT; + } else if (strcmp (gtk_widget_get_name (source), "ignore_button") == 0) + res = IGNORE; + else if (strcmp (gtk_widget_get_name (source), "use_local_button") == 0) + res = USE_ITEM1; + else if (strcmp (gtk_widget_get_name (source), "use_ext_button") == 0) + res = USE_ITEM2; + + sync_group_resolve_conflict (data->group, res); + widget = glade_xml_get_widget (data->xml, "main_notebook"); + gtk_notebook_set_current_page (GTK_NOTEBOOK (widget), TAB_SYNC); +} + +void sync_chooser_cb (GtkWidget *source, SyncData *data) { GtkWidget *widget = glade_xml_get_widget (data->xml, "main_notebook"); gtk_notebook_set_current_page (GTK_NOTEBOOK (widget), TAB_CHOOSE); } +/* From Dates */ +static void +dates_autoconnect (const gchar *handler_name, GObject *object, + const gchar *signal_name, const gchar *signal_data, + GObject *connect_object, gboolean after, + gpointer user_data) +{ + static GModule *symbols = NULL; + GCallback func; + GCallback *pfunc = &func; + + if (!symbols) { + symbols = g_module_open(NULL, 0); + } + + if (!g_module_symbol (symbols, handler_name, (gpointer *)pfunc)) { + g_warning ("Handler '%s' not found.", handler_name); + return; + } + + if (connect_object) { + if (after) + g_signal_connect_object (object, signal_name, + func, connect_object, G_CONNECT_AFTER); + else + g_signal_connect_object (object, signal_name, + func, connect_object, 0); + } else { + if (after) + g_signal_connect_after(object, signal_name, + func, user_data); + else + g_signal_connect(object, signal_name, func, user_data); + } +} + int main (int argc, char **argv) { @@ -369,6 +438,13 @@ main (int argc, char **argv) 0, COL_NAME, "Test", COL_PIXBUF, data.backup_icon, -1); g_free (temp_path); + preset_item = g_object_ref (sync_syncml_item_new ("Mobical", + "http://www.mobical.net/sync/server", CONTACTS, + "guest", "guest", "con")); + g_hash_table_insert (data.sync_items, "Mobical", preset_item); + gtk_list_store_insert_with_values (GTK_LIST_STORE (data.model), &iter, + 0, COL_NAME, "Mobical", COL_PIXBUF, data.network_icon, -1); + /* TODO: Insert saved items */ /* TODO: Avahi detection of local sync servers */ /* TODO: Bluetooth scanning? */ @@ -381,28 +457,8 @@ main (int argc, char **argv) gtk_tree_path_free (path); - widget = glade_xml_get_widget (data.xml, "quit_menuitem"); - g_signal_connect (G_OBJECT (widget), "activate", - G_CALLBACK (gtk_main_quit), NULL); - widget = glade_xml_get_widget (data.xml, "main_window"); - g_signal_connect (G_OBJECT (widget), "destroy", - G_CALLBACK (gtk_main_quit), NULL); - widget = glade_xml_get_widget (data.xml, "main_iconview"); - g_signal_connect (G_OBJECT (widget), "activate-cursor-item", - G_CALLBACK (sync_activate_cursor_item_cb), &data); - g_signal_connect (G_OBJECT (widget), "item-activated", - G_CALLBACK (sync_item_activated_cb), &data); - widget = glade_xml_get_widget (data.xml, "sync_button"); - g_signal_connect (G_OBJECT (widget), "clicked", - G_CALLBACK (sync_sync_button_cb), &data); - - widget = glade_xml_get_widget (data.xml, "success_close_button"); - g_signal_connect (G_OBJECT (widget), "clicked", - G_CALLBACK (sync_chooser_cb), &data); - - widget = glade_xml_get_widget (data.xml, "error_close_button"); - g_signal_connect (G_OBJECT (widget), "clicked", - G_CALLBACK (sync_chooser_cb), &data); + /* Connect signals */ + glade_xml_signal_autoconnect_full (data.xml, dates_autoconnect, &data); /* Connect SyncGroup signals */ g_signal_connect (G_OBJECT (data.group), "started", |