summaryrefslogtreecommitdiffstats
path: root/sync/src/sync_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'sync/src/sync_main.c')
-rw-r--r--sync/src/sync_main.c108
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",