//
//     Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
//     may also apply


//                 Generated by preSip
//            module kabc  version KDE_3_4_3


// This software is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this library; see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

namespace KABC
{

class Addressee
{
%TypeHeaderCode
#include <addressee.h>
%End


public:
//ig     typedef QValueList<KABC::Addressee> List;

%If ( KDE_3_4_2 -  )
    typedef QMap<QString,KABC::Addressee> Map;
%End

                         Addressee ();
                         Addressee (const KABC::Addressee&);

%If ( KDE_3_1_0 -  )
    bool                 operator == (const KABC::Addressee&) const;
    bool                 operator != (const KABC::Addressee&) const;
%End

    bool                 isEmpty () const;
    void                 setUid (const QString&);
    QString              uid () const;

%If ( KDE_3_1_0 -  )
    static QString       uidLabel ();
%End

    void                 setName (const QString&);
    QString              name () const;

%If ( KDE_3_1_0 -  )
    static QString       nameLabel ();
%End

    void                 setFormattedName (const QString&);
    QString              formattedName () const;

%If ( KDE_3_1_0 -  )
    static QString       formattedNameLabel ();
%End

    void                 setFamilyName (const QString&);
    QString              familyName () const;

%If ( KDE_3_1_0 -  )
    static QString       familyNameLabel ();
%End

    void                 setGivenName (const QString&);
    QString              givenName () const;

%If ( KDE_3_1_0 -  )
    static QString       givenNameLabel ();
%End

    void                 setAdditionalName (const QString&);
    QString              additionalName () const;

%If ( KDE_3_1_0 -  )
    static QString       additionalNameLabel ();
%End

    void                 setPrefix (const QString&);
    QString              prefix () const;

%If ( KDE_3_1_0 -  )
    static QString       prefixLabel ();
%End

    void                 setSuffix (const QString&);
    QString              suffix () const;

%If ( KDE_3_1_0 -  )
    static QString       suffixLabel ();
%End

    void                 setNickName (const QString&);
    QString              nickName () const;

%If ( KDE_3_1_0 -  )
    static QString       nickNameLabel ();
%End

    void                 setBirthday (const QDateTime&);
    QDateTime            birthday () const;

%If ( KDE_3_1_0 -  )
    static QString       birthdayLabel ();
    static QString       homeAddressStreetLabel ();
    static QString       homeAddressLocalityLabel ();
    static QString       homeAddressRegionLabel ();
    static QString       homeAddressPostalCodeLabel ();
    static QString       homeAddressCountryLabel ();
    static QString       homeAddressLabelLabel ();
    static QString       businessAddressStreetLabel ();
    static QString       businessAddressLocalityLabel ();
    static QString       businessAddressRegionLabel ();
    static QString       businessAddressPostalCodeLabel ();
    static QString       businessAddressCountryLabel ();
    static QString       businessAddressLabelLabel ();
    static QString       homePhoneLabel ();
    static QString       businessPhoneLabel ();
    static QString       mobilePhoneLabel ();
    static QString       homeFaxLabel ();
    static QString       businessFaxLabel ();
    static QString       carPhoneLabel ();
    static QString       isdnLabel ();
    static QString       pagerLabel ();
    static QString       emailLabel ();
%End

    void                 setMailer (const QString&);
    QString              mailer () const;

%If ( KDE_3_1_0 -  )
    static QString       mailerLabel ();
%End

    void                 setTimeZone (const KABC::TimeZone&);
    KABC::TimeZone       timeZone () const;

%If ( KDE_3_1_0 -  )
    static QString       timeZoneLabel ();
%End

    void                 setGeo (const KABC::Geo&);
    KABC::Geo            geo () const;

%If ( KDE_3_1_0 -  )
    static QString       geoLabel ();
%End

    void                 setTitle (const QString&);
    QString              title () const;

%If ( KDE_3_1_0 -  )
    static QString       titleLabel ();
%End

    void                 setRole (const QString&);
    QString              role () const;

%If ( KDE_3_1_0 -  )
    static QString       roleLabel ();
%End

    void                 setOrganization (const QString&);
    QString              organization () const;

%If ( KDE_3_1_0 -  )
    static QString       organizationLabel ();
%End

    void                 setNote (const QString&);
    QString              note () const;

%If ( KDE_3_1_0 -  )
    static QString       noteLabel ();
%End

    void                 setProductId (const QString&);
    QString              productId () const;

%If ( KDE_3_1_0 -  )
    static QString       productIdLabel ();
%End

    void                 setRevision (const QDateTime&);
    QDateTime            revision () const;

%If ( KDE_3_1_0 -  )
    static QString       revisionLabel ();
%End

    void                 setSortString (const QString&);
    QString              sortString () const;

%If ( KDE_3_1_0 -  )
    static QString       sortStringLabel ();
%End

    void                 setUrl (const KURL&);
    KURL                 url () const;

%If ( KDE_3_1_0 -  )
    static QString       urlLabel ();
    void                 setSecrecy (const KABC::Secrecy&);
    KABC::Secrecy        secrecy () const;
    static QString       secrecyLabel ();
    void                 setLogo (const KABC::Picture&);
    KABC::Picture        logo () const;
    static QString       logoLabel ();
    void                 setPhoto (const KABC::Picture&);
    KABC::Picture        photo () const;
    static QString       photoLabel ();
    void                 setSound (const KABC::Sound&);
    KABC::Sound          sound () const;
    static QString       soundLabel ();
    void                 setAgent (const KABC::Agent&);
    KABC::Agent          agent () const;
    static QString       agentLabel ();
%End

    void                 setNameFromString (const QString&);
    QString              realName () const;

%If ( KDE_3_1_0 -  )
    QString              assembledName () const;
%End

    QString              fullEmail (const QString& = QString ::null ) const;
    void                 insertEmail (const QString&, bool = 0);
    void                 removeEmail (const QString&);
    QString              preferredEmail () const;
    QStringList          emails () const;

%If ( KDE_3_4_2 -  )
    void                 setEmails (const QStringList&);
%End

    void                 insertPhoneNumber (const KABC::PhoneNumber&);
    void                 removePhoneNumber (const KABC::PhoneNumber&);
    KABC::PhoneNumber    phoneNumber (int) const;
    KABC::PhoneNumber::List phoneNumbers () const;

%If ( KDE_3_1_0 -  )
    KABC::PhoneNumber::List phoneNumbers (int) const;
%End

    KABC::PhoneNumber    findPhoneNumber (const QString&) const;

%If ( KDE_3_1_0 -  )
    void                 insertKey (const KABC::Key&);
    void                 removeKey (const KABC::Key&);
    KABC::Key            key (int, QString = QString ::null ) const;
    KABC::Key::List      keys () const;

%If ( KDE_3_4_2 -  )
    void                 setKeys (const KABC::Key::List&);
%End

    KABC::Key::List      keys (int, QString = QString ::null ) const;
    KABC::Key            findKey (const QString&) const;
%End

    void                 insertAddress (const KABC::Address&);
    void                 removeAddress (const KABC::Address&);
    KABC::Address        address (int) const;
    KABC::Address::List  addresses () const;

%If ( KDE_3_1_0 -  )
    KABC::Address::List  addresses (int) const;
%End

    KABC::Address        findAddress (const QString&) const;
    void                 insertCategory (const QString&);
    void                 removeCategory (const QString&);
    bool                 hasCategory (const QString&) const;
    void                 setCategories (const QStringList&);
    QStringList          categories () const;
    void                 insertCustom (const QString&, const QString&, const QString&);
    void                 removeCustom (const QString&, const QString&);
    QString              custom (const QString&, const QString&) const;
    void                 setCustoms (const QStringList&);
    QStringList          customs () const;

%If ( KDE_3_1_0 -  )
    static void          parseEmailAddress (const QString&, QString&, QString&);
%End

    void                 dump () const;

%If ( KDE_3_1_0 -  )
    QString              asString () const;
    void                 setResource (KABC::Resource*);
    KABC::Resource*      resource () const;
    void                 setChanged (bool);
    bool                 changed () const;

%If ( KDE_3_4_2 -  )
    static void          setSortMode (KABC::SortMode*);
    bool                 operator < (const KABC::Addressee&);
%End

%End






};  // class Addressee


%If ( KDE_3_1_0 -  )
//igx QDataStream&         operator << (QDataStream&, const KABC::Addressee&);
//igx QDataStream&         operator >> (QDataStream&, KABC::Addressee&);
%End

};  // namespace KABC



%MappedType KABC::Addressee::List
//converts a Python list of KABC::Addressee
{
%TypeHeaderCode
#include <qvaluelist.h>
//typedef QValueList<KABC::Addressee> List;
%End

%ConvertFromTypeCode
    if (!sipCpp)
        return PyList_New(0);

    // Create the list
    PyObject *pylist;
    if ((pylist = PyList_New(0)) == NULL)
        return NULL;

    QValueList<KABC::Addressee> *cpplist = (QValueList<KABC::Addressee> *)sipCpp;
    PyObject *inst;

    // Get it.
    QValueList<KABC::Addressee>::Iterator it;
    for( it = cpplist->begin(); it != cpplist->end(); ++it )
    {
        if (((inst = sipConvertFromNewType(new KABC::Addressee (*it), sipType_KABC_Addressee, NULL)) == NULL)
            || PyList_Append (pylist, inst) < 0)
        {
            Py_DECREF (pylist);
            return NULL;
        }
    }

    return pylist;
%End


%ConvertToTypeCode
    if (sipIsErr == NULL)
        return PyList_Check(sipPy);

    QValueList<KABC::Addressee> *cpplist = new QValueList<KABC::Addressee>;

    PyObject *elem;
    KABC::Addressee *cpp;
    int iserr = 0;

    for (int i = 0; i < PyList_Size (sipPy); i++)
    {
        elem = PyList_GET_ITEM (sipPy, i);
        cpp = (KABC::Addressee *)sipForceConvertToType(elem, sipType_KABC_Addressee, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);

        if (iserr)
        {
            *sipIsErr = 1;
            delete cpplist;
            return 0;
        }

        cpplist->append (*cpp);
    }

    *sipCppPtr = cpplist;

    return 1;
%End
};

%MappedType KABC::Address::List
//converts a Python list of KABC::Address
{
%TypeHeaderCode
#include <qvaluelist.h>
//typedef QValueList<KABC::Address> List;
%End

%ConvertFromTypeCode
    if (!sipCpp)
        return PyList_New(0);

    // Create the list
    PyObject *pylist;
    if ((pylist = PyList_New(0)) == NULL)
        return NULL;

    QValueList<KABC::Address> *cpplist = (QValueList<KABC::Address> *)sipCpp;
    PyObject *inst;

    // Get it.
    QValueList<KABC::Address>::Iterator it;
    for( it = cpplist->begin(); it != cpplist->end(); ++it )
    {
        if (((inst = sipConvertFromNewType(new KABC::Address (*it), sipType_KABC_Address, NULL)) == NULL)
            || PyList_Append (pylist, inst) < 0)
        {
            Py_DECREF (pylist);
            return NULL;
        }
    }

    return pylist;
%End


%ConvertToTypeCode
    if (sipIsErr == NULL)
        return PyList_Check(sipPy);

    QValueList<KABC::Address> *cpplist = new QValueList<KABC::Address>;

    PyObject *elem;
    KABC::Address *cpp;
    int iserr = 0;

    for (int i = 0; i < PyList_Size (sipPy); i++)
    {
        elem = PyList_GET_ITEM (sipPy, i);
        cpp = (KABC::Address *)sipForceConvertToType(elem, sipType_KABC_Address, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);

        if (iserr)
        {
            *sipIsErr = 1;
            delete cpplist;
            return 0;
        }

        cpplist->append (*cpp);
    }

    *sipCppPtr = cpplist;

    return 1;
%End
};

