dbus service: add GetTemplateConfig method

This commit is contained in:
Jussi Kukkonen 2009-04-07 10:16:07 +03:00
parent 807a10fce9
commit b8fa1233ad
4 changed files with 122 additions and 3 deletions

View file

@ -41,12 +41,19 @@
<method name="GetTemplates"> <method name="GetTemplates">
<arg type="a(ss)" name="templates" direction="out" /> <arg type="a(ss)" name="templates" direction="out" />
</method> </method>
<method name="GetTemplateConfig">
<arg type="s" name="server" direction="in" />
<arg type="a(sss)" name="properties" direction="out"/>
<!-- properties array:
namespace, property_name, value
"calendar", "sync", "disabled" -->
</method>
<method name="GetServers"> <method name="GetServers">
<arg type="a(ss)" name="servers" direction="out" /> <arg type="a(ss)" name="servers" direction="out" />
</method> </method>
<method name="GetServerConfig"> <method name="GetServerConfig">
<arg type="s" name="server" direction="in" /> <arg type="s" name="template" direction="in" />
<arg type="a(sss)" name="properties" direction="out"/> <arg type="a(sss)" name="properties" direction="out"/>
<!-- properties array: <!-- properties array:
namespace, property_name, value namespace, property_name, value

View file

@ -19,8 +19,9 @@
static gboolean syncevo_start_sync (SyncevoDBusServer *obj, char *server, GPtrArray *sources, GError **error); static gboolean syncevo_start_sync (SyncevoDBusServer *obj, char *server, GPtrArray *sources, GError **error);
static gboolean syncevo_abort_sync (SyncevoDBusServer *obj, char *server, GError **error); static gboolean syncevo_abort_sync (SyncevoDBusServer *obj, char *server, GError **error);
static gboolean syncevo_set_password (SyncevoDBusServer *obj, char *server, char *password, GError **error); static gboolean syncevo_set_password (SyncevoDBusServer *obj, char *server, char *password, GError **error);
static gboolean syncevo_get_servers (SyncevoDBusServer *obj, GPtrArray **servers, GError **error);
static gboolean syncevo_get_templates (SyncevoDBusServer *obj, GPtrArray **templates, GError **error); static gboolean syncevo_get_templates (SyncevoDBusServer *obj, GPtrArray **templates, GError **error);
static gboolean syncevo_get_template_config (SyncevoDBusServer *obj, char *templ, GPtrArray **options, GError **error);
static gboolean syncevo_get_servers (SyncevoDBusServer *obj, GPtrArray **servers, GError **error);
static gboolean syncevo_get_server_config (SyncevoDBusServer *obj, char *server, GPtrArray **options, GError **error); static gboolean syncevo_get_server_config (SyncevoDBusServer *obj, char *server, GPtrArray **options, GError **error);
static gboolean syncevo_set_server_config (SyncevoDBusServer *obj, char *server, GPtrArray *options, GError **error); static gboolean syncevo_set_server_config (SyncevoDBusServer *obj, char *server, GPtrArray *options, GError **error);
#include "syncevo-dbus-glue.h" #include "syncevo-dbus-glue.h"
@ -343,6 +344,55 @@ syncevo_get_templates (SyncevoDBusServer *obj,
return TRUE; return TRUE;
} }
static gboolean
syncevo_get_template_config (SyncevoDBusServer *obj,
char *templ,
GPtrArray **options,
GError **error)
{
SyncevoOption *option;
if (!templ || !options) {
*error = g_error_new (g_quark_from_static_string ("syncevo-dbus-server"),
1, "Template and options parameters must be given");
return FALSE;
}
if (obj->server) {
*error = g_error_new (g_quark_from_static_string ("syncevo-dbus-server"),
1, "GetTemplateConfig is currently not supported when a sync is in progress");
return FALSE;
}
*options = g_ptr_array_new ();
boost::shared_ptr<EvolutionSyncConfig> config (EvolutionSyncConfig::createServerTemplate (string (templ)));
if (!config.get()) {
*error = g_error_new (g_quark_from_static_string ("syncevo-dbus-server"),
1, "No template '%s' found", templ);
return FALSE;
}
option = syncevo_option_new (NULL, g_strdup ("syncURL"), g_strdup(config->getSyncURL()));
g_ptr_array_add (*options, option);
option = syncevo_option_new (NULL, g_strdup("username"), g_strdup(config->getUsername()));
g_ptr_array_add (*options, option);
option = syncevo_option_new (NULL, g_strdup("password"), g_strdup(config->getPassword()));
g_ptr_array_add (*options, option);
list<string> sources = config->getSyncSources();
BOOST_FOREACH(const string &name, sources) {
boost::shared_ptr<EvolutionSyncSourceConfig> source_config = config->getSyncSourceConfig(name);
option = syncevo_option_new (g_strdup (name.c_str()), g_strdup ("sync"), g_strdup (source_config->getSync()));
g_ptr_array_add (*options, option);
option = syncevo_option_new (g_strdup (name.c_str()), g_strdup ("uri"), g_strdup (source_config->getURI()));
g_ptr_array_add (*options, option);
}
return TRUE;
}
static gboolean static gboolean
syncevo_get_server_config (SyncevoDBusServer *obj, syncevo_get_server_config (SyncevoDBusServer *obj,
char *server, char *server,
@ -364,7 +414,6 @@ syncevo_get_server_config (SyncevoDBusServer *obj,
} }
*options = g_ptr_array_new (); *options = g_ptr_array_new ();
const string srv (server);
boost::shared_ptr<EvolutionSyncConfig> from(new EvolutionSyncConfig (string (server))); boost::shared_ptr<EvolutionSyncConfig> from(new EvolutionSyncConfig (string (server)));
/* if config does not exist, create from template */ /* if config does not exist, create from template */

View file

@ -357,6 +357,56 @@ void syncevo_service_get_templates_async (SyncevoService *service,
data); data);
} }
gboolean syncevo_service_get_template_config (SyncevoService *service,
char *template,
GPtrArray **options,
GError **error)
{
SyncevoServicePrivate *priv;
priv = GET_PRIVATE (service);
return org_Moblin_SyncEvolution_get_template_config (priv->proxy,
template,
options,
error);
}
static void
get_template_config_async_callback (DBusGProxy *proxy,
GPtrArray *options,
GError *error,
SyncevoAsyncData *data)
{
(*(SyncevoGetTemplateConfigCb)data->callback) (data->service,
options,
error,
data->userdata);
g_slice_free (SyncevoAsyncData, data);
}
void
syncevo_service_get_template_config_async (SyncevoService *service,
char *template,
SyncevoGetServerConfigCb callback,
gpointer userdata)
{
SyncevoAsyncData *data;
SyncevoServicePrivate *priv;
priv = GET_PRIVATE (service);
data = g_slice_new0 (SyncevoAsyncData);
data->service = service;
data->callback = G_CALLBACK (callback);
data->userdata = userdata;
org_Moblin_SyncEvolution_get_template_config_async
(priv->proxy,
template,
(org_Moblin_SyncEvolution_get_server_config_reply) get_template_config_async_callback,
data);
}
gboolean syncevo_service_get_server_config (SyncevoService *service, gboolean syncevo_service_get_server_config (SyncevoService *service,
char *server, char *server,
GPtrArray **options, GPtrArray **options,

View file

@ -73,6 +73,19 @@ void syncevo_service_get_templates_async (SyncevoService *service,
SyncevoGetTemplatesCb callback, SyncevoGetTemplatesCb callback,
gpointer userdata); gpointer userdata);
gboolean syncevo_service_get_template_config (SyncevoService *service,
char *template,
GPtrArray **options,
GError **error);
typedef void (*SyncevoGetTemplateConfigCb) (SyncevoService *service,
GPtrArray *options,
GError *error,
gpointer userdata);
void syncevo_service_get_template_config_async (SyncevoService *service,
char *template,
SyncevoGetTemplateConfigCb callback,
gpointer userdata);
gboolean syncevo_service_get_server_config (SyncevoService *service, gboolean syncevo_service_get_server_config (SyncevoService *service,
char *server, char *server,
GPtrArray **options, GPtrArray **options,