1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#include <config.h>
#include <gconf/gconf-client.h>
#include <glib/gmain.h>
#include <libgnome/gnome-init.h>
#include <libedataserver/e-source-list.h>
static GConfClient *conf_client;
static GMainLoop *main_loop;
static char *arg_hostname, *arg_username, *arg_password;
static void
add_account (const char *conf_key, const char *hostname, const char *username)
{
ESourceList *source_list;
ESourceGroup *group;
ESource *source;
char *group_name;
source_list = e_source_list_new_for_gconf (conf_client, conf_key);
group_name = g_strdup_printf (hostname);
group = e_source_group_new (group_name, "groupwise://");
e_source_list_add_group (source_list, group, -1);
g_free (group_name);
group_name = g_strdup_printf ("%s:7181/soap/", hostname);
source = e_source_new ("Calendar", group_name);
e_source_set_property (source, "auth", "1");
e_source_set_property (source, "username", username);
e_source_group_add_source (group, source, -1);
e_source_list_sync (source_list, NULL);
g_free (group_name);
g_object_unref (source);
g_object_unref (group);
g_object_unref (source_list);
}
static gboolean
idle_cb (gpointer data)
{
add_account ("/apps/evolution/calendar/sources", arg_hostname, arg_username);
add_account ("/apps/evolution/tasks/sources", arg_hostname, arg_username);
g_main_loop_quit (main_loop);
return FALSE;
}
int
main (int argc, char *argv[])
{
gnome_program_init (PACKAGE, VERSION,
LIBGNOME_MODULE,
argc, argv,
NULL);
if (argc != 3 && argc != 4) {
g_print ("Usage: %s hostname username [password]\n", argv[0]);
return -1;
}
arg_hostname = argv[1];
arg_username = argv[2];
if (argc == 4)
arg_password = argv[3];
else
arg_password = NULL;
conf_client = gconf_client_get_default ();
main_loop = g_main_loop_new (NULL, TRUE);
g_idle_add ((GSourceFunc) idle_cb, NULL);
g_main_loop_run (main_loop);
/* terminate */
g_object_unref (conf_client);
g_main_loop_unref (main_loop);
return 0;
}
|