On Friday 21 June 2013 19:15:41 Thomas Lübking wrote:
> On Freitag, 21. Juni 2013 17:25:56 CEST, Kevin Krammer wrote:
> > Hmm, how often does it check that, or is a plugin only
> > ReadOnly if it can never ever write, e.g. addressbook file
> > on a read-only optical drive?
> 
> I'd say, a simple member return will do.
> The plugin can either write or not by backend design or
> backend or plugin option. Ie. you either "return true;"
> "return false" or "return m_canWrite;" where m_canWrite can
> be obtained from a config file or server capabilities on
> init.
> 
> Whether the write will succeed (eg. because you went offline
> or the user silently chmod -w) is a different matter. If this
> can be expected to happen, i'd say it's the plugins duty to
> cache the values and sync them whenever possible, or
> ultimately inform the user that writing is atm. not possble
> because of <very specific reason of temporary failure here>
> 
> I'd say whenever opening the desktop.
> The addressbook can then either return a cached value or a
> static value or can perform an update (initially setting it
> disabled and enable the action if possible) - depending on
> the plugin nature.
> 
> >> /**
> >> * @short Return true if contact exists in addressbook
> >> **/
> >> virtual bool contactExist(const QString &email) const = 0;
> > 
> > That looks like something that shouldn't be synchronous.
> 
> I'd frankly rather ask: why in the first place?
> 
> The GUI does not have to reflect the API, so there's no need
> to have distinct functions openContactWindow() and
> openAddContactWindow() Trojitá *announces* editing only if
> supported by the backend but it can just call the plugin to
> openContactWindow(HumanName, Mail) - if the plugin says: "not
> editable". this call comes for a present account (or the
> plugin says "No Contact for Eric Cartman found"), otherwise
> the account is checked in the plugin and in doubt added. This
> has the advance of not having to ask the server twice
> ("exists contact" + "add it" | "edit it") to get the relevant
> dialog on screen (being a void call anyway, thus can in doubt
> spawn a new thread/process and return early)
> 
> Cheers,
> Thomas

This sounds better. Gui button for adding new contact can be 
active only if plugin supports writing. And opening contact when 
clicking on button near email address can be handled by one 
openContactWindow() function. So plugin will handle searching for 
contact and if not exist in addressbook and plugin is read only, 
then it should show error message. I will change it.

-- 
Pali Rohár
pali.ro...@gmail.com

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to