[Evolution-hackers] Confusion between EServerSideSource's remote-deletable and removable properties



	Hi,
I'm sorry, but I'm quite confused with the EServerSideSource's
remote-deletable and removable properties. They seem to me like they
should do the same, mark the ESource with a flag that it can be removed
by a user, but they are actually not.

I'm currently playing with Public Folders support for EWS, and when I
subscribe to a public calendar, then the source is properly added, as
expected, but I cannot unsubscribe from it, I get an error:
> Data source 'Public Calendar Folder' is not removable
The reason might be that the underlying code [1] calls
e_source_remove_sync(), which is basically what I want from it, I want
to remove the source. The ews-backend in source registry takes care to
not delete the server side folder, thus it seems to me that it's
particularly a lie to claim e_server_side_source_set_remote_deletable()
when the code avoids it, but that's probably unrelated.

Maybe I'm just brain-stuck or such, please forgive me, but I cannot get
the right meaning and correlation between these two from their DOC. It
speaks something about DBus interfaces (oh my God, interfaces for
boolean properties on the source, really?), but I do not get from it why
the e_source_remove_sync() cannot work for whichever of these is TRUE.

I found that I should rather call the e_source_remote_delete() for one
type of the ESource, and the e_source_remove_sync() for another type,
but, isn't this unnecessary complicated? It basically means, that each
and every "remove this source, please" code will always look like:

   if (e_source_get_removable (source))
	e_source_remove (...);
   else if (e_source_get_remote_deletable (source))
	e_source_remote_delete (...);
   else
	g_warning ("I'm sorry, no way");

when the client side wants to make sure that they can satisfy user's
need to delete a source which is now useless for him/her.

Even it's nice to know whether the source is "local" or "remote", then
the simple operations like add/remove may not be that complicated.
I think, at least.

Can anyone clarify what I got wrong, please?
	Thanks and bye,
	Milan

[1]
http://git.gnome.org/browse/evolution-ews/tree/src/server/e-ews-folder.c?h=gnome-3-6#n606



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]