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.
tdenetwork/kopete/libkopete/kopeteglobal.h

177 lines
5.3 KiB

/*
kopeteglobal.h - Kopete Globals
Copyright (c) 2004 by Richard Smith <kde@metafoo.co.uk>
Kopete (c) 2004 by the Kopete developers <kopete-devel@kde.org>
*************************************************************************
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
*************************************************************************
*/
#ifndef KOPETEGLOBAL_H
#define KOPETEGLOBAL_H
#include "kopetecontactproperty.h"
#include "kopete_export.h"
/**
* This namespace contains all of Kopete's core classes and functions.
*/
namespace Kopete
{
/**
* This namespace contains Kopete's global settings and functions
*/
namespace Global
{
class PropertiesPrivate;
/**
* \brief Installs one or more kopete emoticon themes from a tarball
* (either .kopete-emoticons or .tar.gz or .tar.bz2)
*
* @p localPath Full path to a local emoticon archive, use KIO to download
* files in case their are non-local.
*
* @return true in case install was successful, false otherwise. Errors are
* displayed by either KIO or by using KMessagebox directly.
*
* TODO: If possible, port it to KIO instead of using ugly blocking KTar
**/
KOPETE_EXPORT void installEmoticonTheme(const QString &localPath);
/**
* \brief Global facility to query/store templates that are needed by KopeteContactProperty
*
* Basically all a plugin author needs to worry about is creating ContactPropertyTmpl
* objects for all the properties he wants to set for a Kopete::Contact,
* everything else is handled behind the scenes.
**/
class KOPETE_EXPORT Properties
{
friend class Kopete::ContactPropertyTmpl;
public:
/**
* \brief Singleton accessor for this class.
*
* Use it to access the global list of property-templates or to get
* a reference to one of the common ContactPropertyTmpl objects
*/
static Properties *self();
/**
* Return a template with defined by @p key, if no such template has
* been registered ContactPropertyTmpl::null will be returned
*/
const ContactPropertyTmpl &tmpl(const QString &key) const;
/**
* @return a ready-to-use template for a contact's full name.
*
* This is actually no real property, it makes use of
* firstName() and lastName() to assemble an name that consists of
* both name parts
*/
const ContactPropertyTmpl &fullName() const;
/**
* Return default template for a contact's idle-time
*/
const ContactPropertyTmpl &idleTime() const;
/**
* Return default template for a contact's online-since time
* (i.e. time since he went from offline to online)
*/
const ContactPropertyTmpl &onlineSince() const;
/**
* @return default template for a contact's last-seen time
*/
const ContactPropertyTmpl &lastSeen() const;
/**
* @return default template for a contact's away-message
*/
const ContactPropertyTmpl &awayMessage() const;
/**
* @return default template for a contact's first name
*/
const ContactPropertyTmpl &firstName() const;
/**
* @return default template for a contact's last name
*/
const ContactPropertyTmpl &lastName() const;
/**
* @return default template for a contact's email-address
*/
const ContactPropertyTmpl &emailAddress() const;
/**
* @return default template for a contact's private phone number
*/
const ContactPropertyTmpl &privatePhone() const;
/**
* @return default template for a contact's private mobile number
*/
const ContactPropertyTmpl &privateMobilePhone() const;
/**
* @return default template for a contact's work phone number
*/
const ContactPropertyTmpl &workPhone() const;
/**
* @return default template for a contact's work mobile number
*/
const ContactPropertyTmpl &workMobilePhone() const;
/**
* @return default template for a contact's nickname (set by the contact)
*/
const ContactPropertyTmpl &nickName() const;
/**
* default template for a contact's photo.
*
* It could be either a QString or a QImage.
* If it's a QString, it should points to the path the image is stored.
*/
const ContactPropertyTmpl &photo() const;
/**
* @return a map of all registered ContactPropertyTmpl object
*/
const ContactPropertyTmpl::Map &templateMap() const;
/**
* return true if a template with key @p key is already registered,
* false otherwise
*/
bool isRegistered(const QString &key);
private:
Properties();
~Properties();
bool registerTemplate(const QString &key,
const ContactPropertyTmpl &tmpl);
void unregisterTemplate(const QString &key);
const ContactPropertyTmpl &createProp(const QString &key,
const QString &label, const QString &icon=QString::null,
bool persistent = false) const;
private:
static Properties *mSelf;
PropertiesPrivate *d;
}; // end class Properties
} // Global
} // Kopete
#endif
// vim: set noet ts=4 sts=4 sw=4: