I agree with your solution.
You can implemented it :)
Regards,
Le mardi 07 juillet 2009 à 22:05 -0400, Chris Frey a écrit :
> On Sat, Jul 04, 2009 at 08:07:39AM +0200, Nicolas wrote:
> > Hi,
> >
> > To avoid a little bug.
> >
> > Indeed, in the code you have :
> > if (...) {
> > }
> > if (...) {
> > }
> > ...
> >
> > But, If you define a home fax number, you have :
> > type == fax
> > AND
> > type == home
>
>
> I don't think the if/else is the correct fix here either. The if/if
> was intentional at the time (right from the original time I coded it).
>
> It looks like the meaning of TYPE is really a bitfield, using words as
> the bits. The example in RFC 2426, section 3.3.1, shows:
>
> TEL;TYPE=work,voice,pref,msg:+1-213-555-1234
>
> The problem is how we map that to Blackberry fields.
>
> The RFC gives the following TYPEs:
>
> "home" to indicate a telephone number associated with a residence
> "msg" to indicate the telephone number has voice messaging support
> "work" to indicate a telephone number associated with a place of work
> "pref" to indicate a preferred-use telephone number
> "voice" to indicate a voice telephone number
> "fax" to indicate a facsimile telephone number
> "cell" to indicate a cellular telephone number
> "video" to indicate a video conferencing telephone number
> "pager" to indicate a paging device telephone number
> "bbs" to indicate a bulletin board system telephone number
> "modem" to indicate a MODEM connected telephone number
> "car" to indicate a car-phone telephone number
> "isdn" to indicate an ISDN service telephone number
> "pcs" to indicate a personal communication services telephone number
> The default type is "voice".
>
> It appears that it is legal to combine all or none of the above types,
> regardless if they make sense or not.
>
> (I don't know why the RFC thought it was necessary to differentiate between
> cell and pcs phones...
> http://en.wikipedia.org/wiki/Personal_Communications_Service)
>
> The Blackberry has the following phone fields:
>
> (Phone) (deprecated field in Barry)
> Fax
> WorkPhone
> HomePhone
> MobilePhone
> Pager
> Radio
> WorkPhone2
> HomePhone2
> OtherPhone
>
>
> So... from the Blackberry to VCARD... (optional in parentheses)
> Convert each of these fields in the following order, using the given types:
>
> Phone: voice,pref (if field is non-empty)
> Fax: fax
> WorkPhone*: work,voice,(msg)
> HomePhone*: home,voice,(msg)
> MobilePhone: msg,pref,cell
> Pager: msg,pager
> Radio: ignored by Barry
> OtherPhone: voice
>
> Doing this is fairly straightforward... basically tack on the same
> TYPE codes each time you generate the VCARD.
>
> And from VCARD to Blackberry:
>
> home/work limit destination to Home* or Work* fields
>
> cell/pcs/car MobilePhone field only
> pager Pager field only
> fax Fax field only
>
> pref Overwrites existing data, or moves field1 into field2
>
> voice TYPE ignored by Barry (assumed to always exist,
> unless on of the other "only" fields exist)
> msg TYPE ignored by Barry
> bbs/video/modem entire TEL ignored by Barry
> isdn entire TEL ignored by Barry
>
> Logic:
>
> Check for any TEL-ignore types, and throw away if present.
> Convert type codes into a bit field.
> Check for conflicts:
> pager can coexist with cell/pcs/car
> fax conflicts with cell/pcs/car
> fax conflicts with pager
> If conflict, log and ignore entire TEL.
> Else, assign "only" field to its destination.
> If anything remaining, distribute according to this logic,
> inclusively:
> home: HomePhone or HomePhone2
> work: WorkPhone or WorkPhone2
> If anything is marked pref, then insert into head of list, or
> overwrite existing field.
>
> Examples:
>
> voice,home,work
> Will put the given TEL in the next available HomePhone *and*
> WorkPhone fields.
>
> home
> Put in next available HomePhone field.
>
> home,fax
> Put in Fax field.
>
> home,fax,pref
> Put in Fax field even if it already contains something.
>
> fax,pager
> Log an error and ignore entire TEL.
>
> msg,fax
> Ignore msg type and put in Fax field.
>
> cell,msg,voice,pref
> Ignore msg type, put in MobilePhone, and replace existing
> MobilePhone data since this is marked pref.
>
> home,voice,msg,pref
> Ignore msg type, copy HomePhone to HomePhone2, and put
> this TEL into HomePhone, since it is marked pref.
>
> bbs
> Ignored completely.
>
>
> What do you think?
> - Chris
>
>
> Footnotes: related git commits to reference:
> f5a76b6de9ab2720a7e87b5559a4c4396a7da4dc
> c82a410246557739b1892102f61ab4362c2c385d
>
>
> ------------------------------------------------------------------------------
> Enter the BlackBerry Developer Challenge
> This is your chance to win up to $100,000 in prizes! For a limited time,
> vendors submitting new applications to BlackBerry App World(TM) will have
> the opportunity to enter the BlackBerry Developer Challenge. See full prize
> details at: http://p.sf.net/sfu/Challenge
> _______________________________________________
> Barry-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/barry-devel
--
Nicolas VIVIEN
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Barry-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/barry-devel