You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/libkdepim/addresseeview.h

205 lines
5.8 KiB

/*
This file is part of libkdepim.
Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KPIM_ADDRESSEEVIEW_H
#define KPIM_ADDRESSEEVIEW_H
#include <qcstring.h>
#include <kabc/addressee.h>
#include <ktextbrowser.h>
#include <kimproxy.h>
#include <kdepimmacros.h>
namespace KIO {
class Job;
}
class KToggleAction;
class QPopupMenu;
namespace KPIM {
class KDE_EXPORT AddresseeView : public KTextBrowser
{
Q_OBJECT
public:
/**
Constructor.
@param config The config object where the settings are stored
which fields will be shown.
*/
AddresseeView( QWidget *parent = 0, const char *name = 0,
KConfig *config = 0 );
~AddresseeView();
/**
Sets the addressee object. The addressee is displayed immediately.
@param addr The addressee object.
*/
void setAddressee( const KABC::Addressee& addr );
/**
Returns the current addressee object.
*/
KABC::Addressee addressee() const;
/**
This enums are used by enableLinks to set which kind of links shall
be enabled.
*/
enum LinkMask {
NoLinks = 0,
AddressLinks = 1,
EmailLinks = 2,
PhoneLinks = 4,
URLLinks = 8,
IMLinks = 16,
DefaultLinks = AddressLinks | EmailLinks | PhoneLinks | URLLinks | IMLinks
};
/**
Sets which parts of the contact shall be presented as links.
The mask can be OR'ed LinkMask. By default all links are enabled.
*/
void enableLinks( int linkMask );
/**
This enums are used by vCardAsHTML to decide which fields shall be
shown.
*/
enum FieldMask {
NoFields = 0,
BirthdayFields = 1,
AddressFields = 2,
EmailFields = 4,
PhoneFields = 8,
URLFields = 16,
IMFields = 32,
CustomFields = 64,
DefaultFields = AddressFields | EmailFields | PhoneFields | URLFields
};
/**
Returns the HTML representation of a contact.
The HTML code looks like
<div>
<table>
...
</table>
</div>
@param addr The addressee object.
@param linkMask The mask for which parts of the contact will
be displayed as links.
The links looks like this:
"addr://<addr id>" for addresses
"mailto:<email address>" for emails
"phone://<phone number>" for phone numbers
"http://<url>" for urls
"im:<im addrss>" for instant messaging addresses
"sms://<phone number>" for sending a sms
@param internalLoading If true, the loading of internal pictures is done automatically.
@param fieldMask The mask for which fields of the contact will
be displayed.
*/
static QString vCardAsHTML( const KABC::Addressee& addr, ::KIMProxy *proxy, LinkMask linkMask = DefaultLinks,
bool internalLoading = true, FieldMask fieldMask = DefaultFields );
/**
* Encodes a QPixmap as a PNG into a data: URL (rfc2397), readable by the data kio protocol
* @param pixmap the pixmap to encode
* @return a data: URL
*/
static QString pixmapAsDataUrl( const QPixmap& pixmap );
signals:
void urlHighlighted( const QString &url );
void emailHighlighted( const QString &email );
void phoneNumberHighlighted( const QString &number );
void faxNumberHighlighted( const QString &number );
void highlightedMessage( const QString &message );
void addressClicked( const QString &uid );
protected:
virtual void urlClicked( const QString &url );
virtual void emailClicked( const QString &mail );
virtual void phoneNumberClicked( const QString &number );
virtual void smsTextClicked( const QString &number );
virtual void sendSMS( const QString &number, const QString &msg );
virtual void faxNumberClicked( const QString &number );
virtual void imAddressClicked();
virtual QPopupMenu *createPopupMenu( const QPoint& );
private slots:
void slotMailClicked( const QString&, const QString& );
void slotUrlClicked( const QString& );
void slotHighlighted( const QString& );
void slotPresenceChanged( const QString & );
void slotPresenceInfoExpired();
void configChanged();
void data( KIO::Job*, const QByteArray& );
void result( KIO::Job* );
private:
void load();
void save();
void updateView();
QString strippedNumber( const QString &number );
KConfig *mConfig;
bool mDefaultConfig;
QByteArray mImageData;
KIO::Job *mImageJob;
KToggleAction *mActionShowBirthday;
KToggleAction *mActionShowAddresses;
KToggleAction *mActionShowEmails;
KToggleAction *mActionShowPhones;
KToggleAction *mActionShowURLs;
KToggleAction *mActionShowIMAddresses;
KToggleAction *mActionShowCustomFields;
KABC::Addressee mAddressee;
int mLinkMask;
class AddresseeViewPrivate;
AddresseeViewPrivate *d;
::KIMProxy *mKIMProxy;
};
}
#endif