Merge commit 'syncevolution-1-1-1'
Conflicts: configure-pre.in src/syncevo/SyncContext.cpp src/syncevo/configs/datatypes/10calendar-fieldlist.xml test/ClientTest.cpp test/client-test-main.cpp test/synccompare.pl Conflicts all resolved by using the code from "master" branch. Caused by similar changes on release branch.
This commit is contained in:
commit
ed05a9ab51
101
NEWS
101
NEWS
|
@ -1,3 +1,104 @@
|
|||
SyncEvolution 1.1 -> 1.1.1, 26.12.2010
|
||||
======================================
|
||||
|
||||
Maintenance release, in particular improving syncing with phones.
|
||||
There was a bug that could cause all kinds of weird behavior after
|
||||
a failed sync with a phone, so updating is highly recommended.
|
||||
|
||||
* Synthesis engine: fixed a corruption issue in internal meta data which
|
||||
caused duplicates and other problems in a pretty indeterminstic way;
|
||||
apparently caused by failed syncs (BMC #11044).
|
||||
|
||||
* Synthesis engine: recurrence rules with end date now sent correctly to phones (BMC #11241).
|
||||
|
||||
The RRULE property was not encoded correctly previously during the
|
||||
iCalendar 2.0 -> vCalendar 1.0 conversion. Events with recurrence count
|
||||
were okay. Probably also affected SyncML servers without iCalendar 2.0
|
||||
support.
|
||||
|
||||
The fix was confirmed to work with Nokia phones. It also helps with Sony Ericsson
|
||||
phones, but at least the t700 still has a problem: depending on the phone's
|
||||
time zone, it repeats the event for one day too long (BMC #10092).
|
||||
|
||||
* Synthesis engine: fixed broken time zone information when sending to phone;
|
||||
previously that broke sending calendar updates to Nokia phones (BMC #9600).
|
||||
|
||||
iCalendar 2.0 time zone definitions imported from libical were not
|
||||
encoded correctly in vCalendar 1.0 items as sent to phones. Nokia
|
||||
phones accepted such data when part of a new event, but rejected
|
||||
updates of it.
|
||||
|
||||
* Synthesis engine: shorter TZIDs, might help N900 calendar (BMC #6680).
|
||||
|
||||
The shorter TZIDs will be included in iCalendar 2.0 data exported
|
||||
by libsyntesis and thus SyncEvolution. This change is motivated primarily
|
||||
by the observation that the N900 calendar storage can handle TZID=<location>,
|
||||
but not TZID=/softwarestudio.org/Tzfile/<location>.
|
||||
|
||||
* ScheduleWorld: disable configuration template because service has shut down.
|
||||
|
||||
The template is only hidden from the GTK sync-ui, but remains in SyncEvolution
|
||||
for the time being because it is referenced in several places.
|
||||
|
||||
* Evolution CalDAV: added workaround for "must sync twice" (BMC #10265)
|
||||
|
||||
The Evolution CalDAV backend seems to update its data when closing the
|
||||
database, not when opening it. As a result, syncevolution had to be run
|
||||
twice to see all data changes. The workaround is to open the database
|
||||
twice at the start of the sync. This is done for all calendar databases,
|
||||
regardless of which backend they use, in case that some other (yet unknown)
|
||||
backend needs the same workaround.
|
||||
|
||||
* GTK sync-ui: workaround for "Sync Now" button not reacting to online
|
||||
status changed (BMC #9949).
|
||||
|
||||
* Changed slow sync handling. Some users have complained about getting
|
||||
duplicated contacts (BMC #10081). The exact reason is not known (no
|
||||
useful logs provided yet), but it might be due to using "duplicate"
|
||||
as resolution strategy during slow syncs.
|
||||
|
||||
This caused slightly different contacts to be duplicated instead of
|
||||
merging the two copies, reasoning that "no data loss" is better than
|
||||
"duplicates". This release switches to a mode where the engine
|
||||
tries harder to avoid duplicates by merging data if modification
|
||||
time stamps are available for contacts (usually they are). When fields
|
||||
differ, the more recent data is kept.
|
||||
|
||||
* convert absolute alarm back to relative (BMC #11233)
|
||||
|
||||
Experiments show that at least Nokia phones (and thus perhaps also
|
||||
Mobical.com) interpret a fixed alarm as "repeat alarm with the same
|
||||
relative offset as on first occurrence". The same transformation to
|
||||
relative alarm times is applied whenever the transformation to
|
||||
absolute alarm is enabled for a peer.
|
||||
|
||||
* Sony Ericsson: enable conversion to absolute alarm times (BMC #10092)
|
||||
|
||||
Like Nokia and Mobical.net, Sony Ericsson phones also seem to be unable
|
||||
to deal with relative alarm times - verified with t700.
|
||||
|
||||
* Sony Ericsson C510: workaround for SyncML violation
|
||||
|
||||
The phone does not sent identifiers for the target database;
|
||||
using the source identifier as fallback allows a sync to
|
||||
run.
|
||||
|
||||
* Fixed a regression affecting users who had created a config
|
||||
with SyncEvolution < 1.0. Using the config worked once, then
|
||||
failed with "No configuration for ... found". Users must
|
||||
manually remove the empty "peers" directory inside their
|
||||
affected configuration, the fix only makes configs without that
|
||||
directory usable again (BMC #9381).
|
||||
|
||||
* Removed obsolete workaround for older mKCal calendar storage.
|
||||
* Fixed error message in QtContacts backend.
|
||||
* Same SYNCEVOLUTION_DEBUG code as in master branch.
|
||||
* Some updates to synccompare, including a workaround for a Perl
|
||||
bug seen on Debian Testing with Perl 5.10.1-16 (Perl panic).
|
||||
* Fix compilation of syncevo-dbus-server with libnotify 0.7.0 (BMC #10453).
|
||||
* Fixed compilation on Debian GNU/Hurd (no MAX_PATH, Mac OS X confusion).
|
||||
|
||||
|
||||
SyncEvolution 1.0.1 -> 1.1, 26.10.2010
|
||||
======================================
|
||||
|
||||
|
|
51
README.rst
51
README.rst
|
@ -87,7 +87,7 @@ peer. Depending on which parameters are given, different operations
|
|||
are executed.
|
||||
|
||||
Starting with SyncEvolution 1.0, <config> strings can have different
|
||||
meanings. Typically, a simple string like `scheduleworld` refers to
|
||||
meanings. Typically, a simple string like `memotoo` refers to
|
||||
the configuration for that peer, as it did in previous releases. A
|
||||
peer is either a SyncML server (the traditional usage of
|
||||
SyncEvolution) or a client (the new feature in 1.0).
|
||||
|
@ -107,7 +107,7 @@ the context name.
|
|||
When different peers are meant to synchronize different local
|
||||
databases, then different contexts have to be used when setting up the
|
||||
peers by appending a context name after the `at` sign, as in
|
||||
`scheduleworld2@other-context`. Later on, if `scheduleworld2` is
|
||||
`memotoo2@other-context`. Later on, if `memotoo2` is
|
||||
unique, the `@other-context` suffix becomes optional.
|
||||
|
||||
Sometimes it is also useful to change configuration options of a
|
||||
|
@ -305,8 +305,8 @@ a list of valid values.
|
|||
of the template configurations (see --template option). When
|
||||
creating a new configuration and listing sources explicitly on the
|
||||
command line, only those sources will be set to active in the new
|
||||
configuration, i.e. `syncevolution -c scheduleworld addressbook`
|
||||
followed by `syncevolution scheduleworld` will only synchronize the
|
||||
configuration, i.e. `syncevolution -c memotoo addressbook`
|
||||
followed by `syncevolution memotoo` will only synchronize the
|
||||
address book. The other sources are created in a disabled state.
|
||||
When modifying an existing configuration and sources are specified,
|
||||
then the source properties of only those sources are modified.
|
||||
|
@ -412,7 +412,7 @@ a list of valid values.
|
|||
for known SyncML peers. Defaults to the <config> name, so --template
|
||||
only has to be specified when creating multiple different configurations
|
||||
for the same peer, or when using a template that is named differently
|
||||
than the peer. `default` is an alias for `scheduleworld` and can be
|
||||
than the peer. `default` is an alias for `memotoo` and can be
|
||||
used as the starting point for servers which do not have a built-in
|
||||
template.
|
||||
|
||||
|
@ -475,12 +475,12 @@ List the known configuration templates::
|
|||
|
||||
syncevolution --template ?
|
||||
|
||||
Create a new configuration, using the existing ScheduleWorld template::
|
||||
Create a new configuration, using the existing Memotoo template::
|
||||
|
||||
syncevolution --configure \
|
||||
--sync-property "username=123456" \
|
||||
--sync-property "password=!@#ABcd1234" \
|
||||
scheduleworld
|
||||
memotoo
|
||||
|
||||
Note that putting passwords into the command line, even for
|
||||
short-lived processes as the one above, is a security risk in shared
|
||||
|
@ -493,29 +493,29 @@ This command shows the directory containing the file::
|
|||
|
||||
Review configuration::
|
||||
|
||||
syncevolution --print-config scheduleworld
|
||||
syncevolution --print-config memotoo
|
||||
|
||||
Synchronize all sources::
|
||||
|
||||
syncevolution scheduleworld
|
||||
syncevolution memotoo
|
||||
|
||||
Deactivate all sources::
|
||||
|
||||
syncevolution --configure \
|
||||
--source-property sync=none \
|
||||
scheduleworld
|
||||
memotoo
|
||||
|
||||
Activate address book synchronization again, using the --sync shortcut::
|
||||
|
||||
syncevolution --configure \
|
||||
--sync two-way \
|
||||
scheduleworld addressbook
|
||||
memotoo addressbook
|
||||
|
||||
Change the password for a configuration::
|
||||
|
||||
syncevolution --configure \
|
||||
--sync-property password=foo \
|
||||
scheduleworld
|
||||
memotoo
|
||||
|
||||
Set up another configuration for under a different account, using
|
||||
the same default databases as above::
|
||||
|
@ -523,8 +523,8 @@ the same default databases as above::
|
|||
syncevolution --configure \
|
||||
--sync-property username=joe \
|
||||
--sync-property password=foo \
|
||||
--template scheduleworld \
|
||||
scheduleworld_joe
|
||||
--template memotoo \
|
||||
memotoo_joe
|
||||
|
||||
Set up another configuration using the same account, but different
|
||||
local databases (can be used to simulate synchronizing between two
|
||||
|
@ -534,7 +534,7 @@ clients, see `Exchanging Data`_::
|
|||
--sync-property "username=123456" \
|
||||
--sync-property "password=!@#ABcd1234" \
|
||||
--source-property sync=none \
|
||||
scheduleworld@other
|
||||
memotoo@other
|
||||
|
||||
syncevolution --configure \
|
||||
--source-property evolutionsource=<name of other address book> \
|
||||
|
@ -542,16 +542,16 @@ clients, see `Exchanging Data`_::
|
|||
|
||||
syncevolution --configure \
|
||||
--source-property sync=two-way \
|
||||
scheduleworld@other addressbook
|
||||
memotoo@other addressbook
|
||||
|
||||
syncevolution scheduleworld
|
||||
syncevolution scheduleworld@other
|
||||
syncevolution memotoo
|
||||
syncevolution memotoo@other
|
||||
|
||||
Migrate a configuration from the <= 0.7 format to the current one
|
||||
and/or updates the configuration so that it looks like configurations
|
||||
created anew with the current syncevolution::
|
||||
|
||||
syncevolution --migrate scheduleworld
|
||||
syncevolution --migrate memotoo
|
||||
|
||||
|
||||
NOTES
|
||||
|
@ -571,16 +571,9 @@ possible because it cannot represent all data that Evolution stores.
|
|||
the same applies to other data sources.
|
||||
|
||||
How the server stores the items depends on its implementation and
|
||||
configuration. In the default Funambol server installation, contacts
|
||||
and calendar items are converted into an internal format, but at
|
||||
least for contacts it preserves most of the properties used by
|
||||
Evolution whereas iCalendar 2.0 items are not preserved properly
|
||||
up to and including Funambol 8.0. ScheduleWorld uses the same format
|
||||
as Evolution for calendars and tasks and thus requires no conversion.
|
||||
|
||||
To check which data is preserved, one can use this procedure
|
||||
(described for contacts, but works the same way for calendars and
|
||||
tasks):
|
||||
configuration. To check which data is preserved, one can use this
|
||||
procedure (described for contacts, but works the same way for
|
||||
calendars and tasks):
|
||||
|
||||
1. synchronize the address book with the server
|
||||
2. create a new address book in Evolution and view it in Evolution
|
||||
|
|
|
@ -178,34 +178,45 @@ void EvolutionCalendarSource::open()
|
|||
ESource *source = findSource(sources, id);
|
||||
bool onlyIfExists = true;
|
||||
bool created = false;
|
||||
if (!source) {
|
||||
// might have been special "<<system>>" or "<<default>>", try that and
|
||||
// creating address book from file:// URI before giving up
|
||||
if ((id.empty() || id == "<<system>>") && m_newSystem) {
|
||||
m_calendar.set(m_newSystem(), (string("system ") + m_typeName).c_str());
|
||||
} else if (!id.compare(0, 7, "file://")) {
|
||||
m_calendar.set(e_cal_new_from_uri(id.c_str(), m_type), (string("creating ") + m_typeName).c_str());
|
||||
} else {
|
||||
throwError(string("not found: '") + id + "'");
|
||||
}
|
||||
created = true;
|
||||
onlyIfExists = false;
|
||||
} else {
|
||||
m_calendar.set(e_cal_new(source, m_type), m_typeName.c_str());
|
||||
}
|
||||
|
||||
e_cal_set_auth_func(m_calendar, eCalAuthFunc, this);
|
||||
// Open twice. This solves an issue where Evolution's CalDAV
|
||||
// backend only updates its local cache *after* a sync (= while
|
||||
// closing the calendar?), instead of doing it *before* a sync (in
|
||||
// e_cal_open()).
|
||||
//
|
||||
// This workaround is applied to *all* backends because there might
|
||||
// be others with similar problems and for local storage it is
|
||||
// a reasonably cheap operation (so no harm there).
|
||||
for (int retries = 0; retries < 2; retries++) {
|
||||
if (!source) {
|
||||
// might have been special "<<system>>" or "<<default>>", try that and
|
||||
// creating address book from file:// URI before giving up
|
||||
if ((id.empty() || id == "<<system>>") && m_newSystem) {
|
||||
m_calendar.set(m_newSystem(), (string("system ") + m_typeName).c_str());
|
||||
} else if (!id.compare(0, 7, "file://")) {
|
||||
m_calendar.set(e_cal_new_from_uri(id.c_str(), m_type), (string("creating ") + m_typeName).c_str());
|
||||
} else {
|
||||
throwError(string("not found: '") + id + "'");
|
||||
}
|
||||
created = true;
|
||||
onlyIfExists = false;
|
||||
} else {
|
||||
m_calendar.set(e_cal_new(source, m_type), m_typeName.c_str());
|
||||
}
|
||||
|
||||
e_cal_set_auth_func(m_calendar, eCalAuthFunc, this);
|
||||
|
||||
if (!e_cal_open(m_calendar, onlyIfExists, &gerror)) {
|
||||
if (created) {
|
||||
// opening newly created address books often failed, perhaps that also applies to calendars - try again
|
||||
g_clear_error(&gerror);
|
||||
sleep(5);
|
||||
if (!e_cal_open(m_calendar, onlyIfExists, &gerror)) {
|
||||
if (!e_cal_open(m_calendar, onlyIfExists, &gerror)) {
|
||||
if (created) {
|
||||
// opening newly created address books often failed, perhaps that also applies to calendars - try again
|
||||
g_clear_error(&gerror);
|
||||
sleep(5);
|
||||
if (!e_cal_open(m_calendar, onlyIfExists, &gerror)) {
|
||||
throwError(string("opening ") + m_typeName, gerror );
|
||||
}
|
||||
} else {
|
||||
throwError(string("opening ") + m_typeName, gerror );
|
||||
}
|
||||
} else {
|
||||
throwError(string("opening ") + m_typeName, gerror );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -379,6 +379,18 @@ public:
|
|||
setWBXML(m_options.m_isWBXML, true);
|
||||
setRetryDuration(m_options.m_retryDuration, true);
|
||||
setRetryInterval(m_options.m_retryInterval, true);
|
||||
if (m_options.m_syncMode == SYNC_TWO_WAY &&
|
||||
m_options.m_checkReport.syncMode == SYNC_NONE) {
|
||||
// For this test, any kind of final sync mode is
|
||||
// acceptable. Disable slow sync prevention
|
||||
// temporarily. The check for the requested sync
|
||||
// mode is perhaps too conservative, but in
|
||||
// practice the only test where slow sync
|
||||
// prevention caused a test failure was
|
||||
// Client::Sync::vcard30::testTwoWaySync after
|
||||
// some other failed test, so let's be conservative...
|
||||
setPreventSlowSync(false);
|
||||
}
|
||||
SyncContext::prepare();
|
||||
}
|
||||
|
||||
|
|
|
@ -450,7 +450,7 @@ sometimes also a beta or alpha suffix),
|
|||
<arg type="s" name="config" direction="in">
|
||||
<doc:doc><doc:summary>name of configuration to be created or used in session</doc:summary></doc:doc>
|
||||
</arg>
|
||||
<arg type="a(s)" name="flags" direction="in">
|
||||
<arg type="as" name="flags" direction="in">
|
||||
<doc:doc><doc:summary>optional flags</doc:summary></doc:doc>
|
||||
</arg>
|
||||
<arg type="o" name="session" direction="out">
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
Get the session flags set with Server.StartSessionWithFlags().
|
||||
</doc:description>
|
||||
</doc:doc>
|
||||
<arg type="a(s)" name="flags" direction="out">
|
||||
<arg type="as" name="flags" direction="out">
|
||||
<doc:doc><doc:summary>session flags</doc:summary></doc:doc>
|
||||
</arg>
|
||||
</method>
|
||||
|
|
|
@ -644,6 +644,35 @@ syncevo_server_start_session (SyncevoServer *syncevo,
|
|||
data);
|
||||
}
|
||||
|
||||
void
|
||||
syncevo_server_start_no_sync_session (SyncevoServer *syncevo,
|
||||
const char *config_name,
|
||||
SyncevoServerStartSessionCb callback,
|
||||
gpointer userdata)
|
||||
{
|
||||
ServerAsyncData *data;
|
||||
SyncevoServerPrivate *priv;
|
||||
char *flags[2] = {"no-sync", NULL};
|
||||
|
||||
priv = GET_PRIVATE (syncevo);
|
||||
|
||||
data = server_async_data_new (syncevo, G_CALLBACK (callback), userdata);
|
||||
|
||||
if (!priv->proxy && !syncevo_server_get_new_proxy (syncevo)) {
|
||||
if (callback) {
|
||||
g_idle_add ((GSourceFunc)start_session_error, data);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
org_syncevolution_Server_start_session_with_flags_async
|
||||
(priv->proxy,
|
||||
config_name,
|
||||
flags,
|
||||
(org_syncevolution_Server_start_session_reply) start_session_callback,
|
||||
data);
|
||||
}
|
||||
|
||||
static void
|
||||
get_sessions_callback (SyncevoServer *syncevo,
|
||||
SyncevoSessions *sessions,
|
||||
|
@ -705,14 +734,14 @@ syncevo_server_get_sessions (SyncevoServer *syncevo,
|
|||
static void
|
||||
check_presence_callback (SyncevoServer *syncevo,
|
||||
char *status,
|
||||
char *transport,
|
||||
char **transports,
|
||||
GError *error,
|
||||
ServerAsyncData *data)
|
||||
{
|
||||
if (data->callback) {
|
||||
(*(SyncevoServerGetPresenceCb)data->callback) (data->server,
|
||||
status,
|
||||
transport,
|
||||
transports,
|
||||
error,
|
||||
data->userdata);
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ void syncevo_server_get_sessions (SyncevoServer *syncevo,
|
|||
|
||||
typedef void (*SyncevoServerGetPresenceCb) (SyncevoServer *syncevo,
|
||||
char *status,
|
||||
char *transport,
|
||||
char **transports,
|
||||
GError *error,
|
||||
gpointer userdata);
|
||||
void syncevo_server_get_presence (SyncevoServer *syncevo,
|
||||
|
|
|
@ -292,6 +292,46 @@ generic_error (SessionAsyncData *data)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
get_config_name_callback (DBusGProxy *proxy,
|
||||
char *name,
|
||||
GError *error,
|
||||
SessionAsyncData *data)
|
||||
{
|
||||
if (data->callback) {
|
||||
(*(SyncevoSessionGetConfigNameCb)data->callback) (data->session,
|
||||
name,
|
||||
error,
|
||||
data->userdata);
|
||||
}
|
||||
session_async_data_free (data);
|
||||
}
|
||||
|
||||
void
|
||||
syncevo_session_get_config_name (SyncevoSession *session,
|
||||
SyncevoSessionGetConfigNameCb callback,
|
||||
gpointer userdata)
|
||||
{
|
||||
SessionAsyncData *data;
|
||||
SyncevoSessionPrivate *priv;
|
||||
|
||||
priv = GET_PRIVATE (session);
|
||||
|
||||
data = session_async_data_new (session, G_CALLBACK (callback), userdata);
|
||||
|
||||
if (!priv->proxy) {
|
||||
if (callback) {
|
||||
g_idle_add ((GSourceFunc)generic_error, data);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
org_syncevolution_Session_get_config_name_async
|
||||
(priv->proxy,
|
||||
(org_syncevolution_Session_get_config_name_reply) get_config_name_callback,
|
||||
data);
|
||||
}
|
||||
|
||||
static void
|
||||
get_config_callback (DBusGProxy *proxy,
|
||||
SyncevoConfig *configuration,
|
||||
|
|
|
@ -60,6 +60,14 @@ typedef void (*SyncevoSessionGenericCb) (SyncevoSession *session,
|
|||
GError *error,
|
||||
gpointer userdata);
|
||||
|
||||
typedef void (*SyncevoSessionGetConfigNameCb) (SyncevoSession *session,
|
||||
char *name,
|
||||
GError *error,
|
||||
gpointer userdata);
|
||||
void syncevo_session_get_config_name (SyncevoSession *session,
|
||||
SyncevoSessionGetConfigNameCb callback,
|
||||
gpointer userdata);
|
||||
|
||||
typedef void (*SyncevoSessionGetConfigCb) (SyncevoSession *session,
|
||||
SyncevoConfig *config,
|
||||
GError *error,
|
||||
|
|
|
@ -244,7 +244,7 @@ get_config_for_overwrite_prevention_cb (SyncevoSession *session,
|
|||
sync_config_widget_set_name (data->widget, name);
|
||||
g_free (name);
|
||||
|
||||
syncevo_server_start_session (data->widget->server,
|
||||
syncevo_server_start_no_sync_session (data->widget->server,
|
||||
data->widget->config_name,
|
||||
(SyncevoServerStartSessionCb)start_session_for_config_write_cb,
|
||||
data);
|
||||
|
@ -359,7 +359,7 @@ stop_clicked_cb (GtkButton *btn, SyncConfigWidget *self)
|
|||
data->widget = self;
|
||||
data->delete = FALSE;
|
||||
data->temporary = FALSE;
|
||||
syncevo_server_start_session (self->server,
|
||||
syncevo_server_start_no_sync_session (self->server,
|
||||
self->config_name,
|
||||
(SyncevoServerStartSessionCb)start_session_for_config_write_cb,
|
||||
data);
|
||||
|
@ -462,7 +462,7 @@ use_clicked_cb (GtkButton *btn, SyncConfigWidget *self)
|
|||
data->delete = FALSE;
|
||||
data->temporary = FALSE;
|
||||
data->basename = g_strdup (self->config_name);
|
||||
syncevo_server_start_session (self->server,
|
||||
syncevo_server_start_no_sync_session (self->server,
|
||||
self->config_name,
|
||||
(SyncevoServerStartSessionCb)start_session_for_config_write_cb,
|
||||
data);
|
||||
|
@ -519,7 +519,7 @@ reset_delete_clicked_cb (GtkButton *btn, SyncConfigWidget *self)
|
|||
data->delete = TRUE;
|
||||
data->temporary = FALSE;
|
||||
|
||||
syncevo_server_start_session (self->server,
|
||||
syncevo_server_start_no_sync_session (self->server,
|
||||
self->config_name,
|
||||
(SyncevoServerStartSessionCb)start_session_for_config_write_cb,
|
||||
data);
|
||||
|
@ -777,7 +777,7 @@ init_source (char *name,
|
|||
data->temporary = TRUE;
|
||||
data->widgets = source_widgets_ref (widgets);
|
||||
|
||||
syncevo_server_start_session (self->server,
|
||||
syncevo_server_start_no_sync_session (self->server,
|
||||
self->config_name,
|
||||
(SyncevoServerStartSessionCb)start_session_for_config_write_cb,
|
||||
data);
|
||||
|
|
|
@ -185,7 +185,7 @@ static void update_services_list (app_data *data);
|
|||
static void update_service_ui (app_data *data);
|
||||
static void setup_new_service_clicked (GtkButton *btn, app_data *data);
|
||||
static gboolean source_config_update_widget (source_config *source);
|
||||
static void get_presence_cb (SyncevoServer *server, char *status, char *transport,
|
||||
static void get_presence_cb (SyncevoServer *server, char *status, char **transport,
|
||||
GError *error, app_data *data);
|
||||
static void get_reports_cb (SyncevoServer *server, SyncevoReports *reports,
|
||||
GError *error, app_data *data);
|
||||
|
@ -1210,7 +1210,7 @@ autosync_toggle_cb (GtkWidget *widget, gpointer x, app_data *data)
|
|||
op_data->data = data;
|
||||
op_data->operation = OP_SAVE;
|
||||
op_data->started = FALSE;
|
||||
syncevo_server_start_session (data->server,
|
||||
syncevo_server_start_no_sync_session (data->server,
|
||||
data->current_service->name,
|
||||
(SyncevoServerStartSessionCb)start_session_cb,
|
||||
op_data);
|
||||
|
@ -3328,7 +3328,7 @@ set_online_status (app_data *data, gboolean online)
|
|||
static void
|
||||
get_presence_cb (SyncevoServer *server,
|
||||
char *status,
|
||||
char *transport,
|
||||
char **transports,
|
||||
GError *error,
|
||||
app_data *data)
|
||||
{
|
||||
|
@ -3343,7 +3343,7 @@ get_presence_cb (SyncevoServer *server,
|
|||
set_online_status (data, strcmp (status, "") == 0);
|
||||
}
|
||||
g_free (status);
|
||||
g_free (transport);
|
||||
g_strfreev (transports);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -3456,7 +3456,7 @@ server_presence_changed_cb (SyncevoServer *server,
|
|||
{
|
||||
if (data->current_service &&
|
||||
config_name && status &&
|
||||
strcmp (data->current_service->name, config_name) == 0) {
|
||||
g_strcasecmp (data->current_service->name, config_name) == 0) {
|
||||
|
||||
set_online_status (data, strcmp (status, "") == 0);
|
||||
}
|
||||
|
@ -3549,9 +3549,9 @@ sync_ui_create ()
|
|||
G_CALLBACK (server_shutdown_cb), data);
|
||||
g_signal_connect (data->server, "session-changed",
|
||||
G_CALLBACK (server_session_changed_cb), data);
|
||||
g_signal_connect (data->server, "presence_changed",
|
||||
g_signal_connect (data->server, "presence-changed",
|
||||
G_CALLBACK (server_presence_changed_cb), data);
|
||||
g_signal_connect (data->server, "templates_changed",
|
||||
g_signal_connect (data->server, "templates-changed",
|
||||
G_CALLBACK (server_templates_changed_cb), data);
|
||||
g_signal_connect (data->server, "info-request",
|
||||
G_CALLBACK (info_request_cb), data);
|
||||
|
|
|
@ -6110,7 +6110,11 @@ void AutoSyncManager::Notification::send(const char *summary,
|
|||
notify_notification_clear_actions(m_notification);
|
||||
notify_notification_close(m_notification, NULL);
|
||||
}
|
||||
#if !defined(NOTIFY_CHECK_VERSION)
|
||||
m_notification = notify_notification_new(summary, body, NULL, NULL);
|
||||
#else // NOTIFY_CHECK_VERSION(0,7,0) is redundant, because 0.7.0 introduced NOTIFY_CHECK_VERSION
|
||||
m_notification = notify_notification_new(summary, body, NULL);
|
||||
#endif
|
||||
//if actions are not supported, don't add actions
|
||||
//An example is Ubuntu Notify OSD. It uses an alert box
|
||||
//instead of a bubble when a notification is appended with actions.
|
||||
|
|
|
@ -1854,7 +1854,7 @@ public:
|
|||
"peers/scheduleworld/config.ini:# SSLVerifyHost = 1\n"
|
||||
"peers/scheduleworld/config.ini:WebURL = http://www.scheduleworld.com\n"
|
||||
"peers/scheduleworld/config.ini:# IconURI = \n"
|
||||
"peers/scheduleworld/config.ini:ConsumerReady = 1\n"
|
||||
"peers/scheduleworld/config.ini:# ConsumerReady = 0\n"
|
||||
|
||||
"peers/scheduleworld/sources/addressbook/.internal.ini:# adminData = \n"
|
||||
"peers/scheduleworld/sources/addressbook/.internal.ini:# synthesisID = 0\n"
|
||||
|
@ -3111,7 +3111,7 @@ private:
|
|||
"spds/syncml/config.txt:# SSLVerifyHost = 1\n"
|
||||
"spds/syncml/config.txt:WebURL = http://www.scheduleworld.com\n"
|
||||
"spds/syncml/config.txt:# IconURI = \n"
|
||||
"spds/syncml/config.txt:ConsumerReady = 1\n"
|
||||
"spds/syncml/config.txt:# ConsumerReady = 0\n"
|
||||
"spds/sources/addressbook/config.txt:sync = two-way\n"
|
||||
"spds/sources/addressbook/config.txt:type = addressbook:text/vcard\n"
|
||||
"spds/sources/addressbook/config.txt:# evolutionsource = \n"
|
||||
|
@ -3151,6 +3151,10 @@ private:
|
|||
"WebURL = http://www.scheduleworld.com",
|
||||
"WebURL = http://my.funambol.com");
|
||||
|
||||
boost::replace_first(config,
|
||||
"# ConsumerReady = 0",
|
||||
"ConsumerReady = 1");
|
||||
|
||||
boost::replace_first(config,
|
||||
"# enableWBXML = 1",
|
||||
"enableWBXML = 0");
|
||||
|
@ -3195,10 +3199,6 @@ private:
|
|||
"WebURL = http://www.scheduleworld.com",
|
||||
"WebURL = http://www.synthesis.ch");
|
||||
|
||||
boost::replace_first(config,
|
||||
"ConsumerReady = 1",
|
||||
"# ConsumerReady = 0");
|
||||
|
||||
boost::replace_first(config,
|
||||
"addressbook/config.ini:uri = card3",
|
||||
"addressbook/config.ini:uri = contacts");
|
||||
|
|
|
@ -612,7 +612,11 @@ boost::shared_ptr<SyncConfig> SyncConfig::createPeerTemplate(const string &serve
|
|||
boost::iequals(server, "default")) {
|
||||
config->setSyncURL("http://sync.scheduleworld.com/funambol/ds");
|
||||
config->setWebURL("http://www.scheduleworld.com");
|
||||
config->setConsumerReady(true);
|
||||
// ScheduleWorld was shut down end of November 2010.
|
||||
// Completely removing all traces of it from SyncEvolution
|
||||
// source code is too intrusive for the time being, so
|
||||
// just disable it in the UI.
|
||||
// config->setConsumerReady(false);
|
||||
source = config->getSyncSourceConfig("addressbook");
|
||||
source->setURI("card3");
|
||||
source->setSourceType("addressbook:text/vcard");
|
||||
|
|
|
@ -118,9 +118,10 @@ void splitPath(const string &path, string &dir, string &file)
|
|||
|
||||
bool relToAbs(string &path)
|
||||
{
|
||||
char buffer[PATH_MAX+1];
|
||||
if (realpath(path.c_str(), buffer)) {
|
||||
char *buffer;
|
||||
if ((buffer = realpath(path.c_str(), NULL)) != NULL) {
|
||||
path = buffer;
|
||||
free(buffer);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
|
|
@ -5,7 +5,6 @@ description = http://www.scheduleworld.org
|
|||
=== config.ini ===
|
||||
syncURL = http://sync.scheduleworld.com/funambol/ds
|
||||
WebURL = http://www.scheduleworld.com
|
||||
ConsumerReady = TRUE
|
||||
|
||||
=== sources/addressbook/config.ini ===
|
||||
type = addressbook:text/vcard
|
||||
|
|
|
@ -58,6 +58,7 @@ http://bugzilla.moblin.org/show_bug.cgi?id=3009
|
|||
Client::Sync::text::testOneWayFromClient, \
|
||||
Client::Sync::text::Retry,Client::Sync::text::Suspend, \
|
||||
|
||||
disable "prevent slow sync"
|
||||
|
||||
* Test Profiles Settings
|
||||
N/A
|
||||
|
|
Loading…
Reference in New Issue