I guess I've probably always been aware that there was some suckage
here, but I never really knew how bad.

So the other night I was trying to implement support for tweaking cache
expiration preferences for IMAP4, but ran into some problems with
providing a decent way of providing a UI for it.

camel_object_[g,s]etv():

The problem with this method is that you can only specify a value type
and a label. This makes it hard to present any sort of more complex
user-input device for the user beyond true/false and possibly string
input? (which is probably why CAMEL_ARG_BOO and CAMEL_ARG_STR were the
only 2 arg-types mapped in the UI for folder properties).

If you want to request a float or integer from the user, then you have
no way of specifying an input range - nor do you have a proper way to
represent the following UI:

Cached messages should expire after [3600H] seconds.

(e.g. text before and after the spinbutton, which helps to make the
user-input query more readable)

There's also no way to link inputs. For exmaple:

[X] Expire messages older than [3600H] seconds.

or

[X] Enable XYZ
   XYZ should happen after [3600H] seconds.

In the second example, the followup UI element should be disabled if the
dependency element hasn't been enabled.

I'm not sure which of the 2 above methods is the preferred choice
(probably only 1 of them needs to be possible to do).


camel-provider properties:

Suffers from most of the same problems listed above.



Not sure how exactly to fix these issues, but figured I'd maybe get the
ball rolling by sending this mail and seeing if other people had ideas.
The best I can come up with is some sort of XML blurb describing how the
UI should look in some toolkit-agnostic way, but I'm not sure of the
details.

Jeff


_______________________________________________
Evolution-hackers mailing list
Evolution-hackers@gnome.org
http://mail.gnome.org/mailman/listinfo/evolution-hackers

Reply via email to