Hello!

SyncEvolution supports X-EVOLUTION-UI-SLOT, a parameter for
TEL/EMAIL/X-AIM/... which specifies in which slot of the GUI the
corresponding value is to be displayed. That's useful because there's a
fixed number of slots but an unlimited number of values, plus the order
is also something that the user might want to tweak.

I just discovered that Nokia phones get confused by this parameter in
an... interesting way. Sending a new VCARD with X-EVOLUTION-UI-SLOT
isn't a problem, but sending an update with it causes the phone to
remove all TEL/EMAIL properties (even if unchanged) -
http://bugs.meego.com/show_bug.cgi?id=2566

We already discussed before that declaring this parameter in CTCap
causes the phone to not send EMAIL/TEL to us
(http://bugzilla.moblin.org/show_bug.cgi?id=8868). Because CTCap has to
be available before knowing who we talk to, the solution was to not show
X-EVOLUTION-UI-SLOT (show="no" in the config).

Now I would go one step further and suppress generating this parameter
for a peer, after identifying the peer. I thought that this should be
possible with the remoterule config option, but <parameter> doesn't
support that according to the documentation. BTW, the config parser
doesn't complain when it is specified, it just doesn't do anything.

Is adding support for it a good idea? The semantic would be "during
parsing and generating, ignore parameter unless no remoterule set or
rule is active". I'm a bit uncertain whether this should apply during
parsing *and* generating, because parsing something that was sent to us
shouldn't do any harm. But it wouldn't be consistent.

Can someone give me some pointers into the source code for adding this?

One more question about the commit which introduced the concept of
multiple active rules (3627eb1cf5e48981f56940f2f2c292e6c253d5d3).
Currently, TMimeDirProfileHandler::fActiveRemoteRules can only be set
such that it contains multiple rules via the config parser, right?

void TMimeDirProfileHandler::getOptionsFromDatastore(void)
{
...
   fActiveRemoteRules =
fRelatedDatastoreP->getSession()->fActiveRemoteRules; // copy the list
...
}

TMimeDirProfileHandler::setRemoteRule() wipes out the list before adding
one entry. As a result, the PARSE/MAKETEXTWITHPROFILE() macros can only
be run with one active rule, because that rule is set with
setRemoteRule().

In the solution that I have in mind, enabling the X-EVOLUTION-UI-SLOT
would be done like this:

    <subrule name="HAVE-EVOLUTION-UI-SLOT">
      <!-- parameter X-EVOLUTION-UI-SLOT is not generated by default,
           must be enabled for peers which support it -->
    </subrule>

    <remoterule name="SyncEvolution">
      <manufacturer>Patrick Ohly</manufacturer>
      <model>SyncEvolution</model>

      <include rule="HAVE-EVOLUTION-UI-SLOT"/>
    </remoterule>

    <remoterule name="EVOLUTION">
      <deviceid>none - this rule is activated via its name in 
MAKE/PARSETEXTWITHPROFILE() macro calls</deviceid>

      <include rule="HAVE-EVOLUTION-UI-SLOT"/>
    </remoterule>


MAKETEXTWITHPROFILE(... "EVOLUTION")

Except that the last step doesn't work yet either. Would it make sense
to extend TMimeDirProfileHandler::setRemoteRule() such that setting a
rule also sets all included rules? Or should isActiveRule() do a
recursive check?

Both depends on TRemoteRuleConfig containing a list of the <include>
rules, something I that haven't checked.

-- 
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.



_______________________________________________
os-libsynthesis mailing list
os-libsynthesis@synthesis.ch
http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis

Reply via email to