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/kopetecontactproperty.h

196 lines
4.8 KiB

/*
kopetecontactproperty.h
Kopete::Contact Property class
Copyright (c) 2004 by Stefan Gehn <metz AT gehn.net>
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 _KOPETECONTACTPROPERTY_H_
#define _KOPETECONTACTPROPERTY_H_
#include <qvariant.h>
#include "kopete_export.h"
namespace Kopete
{
struct ContactPropertyTmplPrivate;
/**
* @author Stefan Gehn <metz AT gehn.net>
*
* The template class for registering properties in Kopete
* You need to use this if you want to set properties for a
* Kopete::Contact
**/
class KOPETE_EXPORT ContactPropertyTmpl
{
public:
/**
* Constructor only used for empty ContactPropertyTmpl objects
*
* Note: Only useful for the null object
**/
ContactPropertyTmpl();
/**
* Constructor
* @param key internal unique key for this template
* @param label a label to show for properties based on this template
* @param icon name of the icon to show for properties based on this template
* @param persistent if true, properties based on this template will be
* saved to the contactlist.
* @param richText Indicate that this property should be able to handle rich text
* @param privateProp if true, properties based on this template won't be
* visible to the user
**/
ContactPropertyTmpl( const QString &key,
const QString &label,
const QString &icon = QString::null,
bool persistent = false,
bool richText = false,
bool privateProp = false );
/**
* Copy constructor
**/
ContactPropertyTmpl(const ContactPropertyTmpl &other);
/** Destructor */
~ContactPropertyTmpl();
ContactPropertyTmpl &operator=(const ContactPropertyTmpl &other);
bool operator==(const ContactPropertyTmpl &other) const;
bool operator!=(const ContactPropertyTmpl &other) const;
/**
* Getter for the unique key. Properties based on this template will be
* stored with this key
**/
const QString &key() const;
/**
* Getter for i18ned label
**/
const QString &label() const;
/**
* Getter for icon to show aside or instead of @p label()
**/
const QString &icon() const;
/**
* Returns true if properties based on this template should
* be saved across Kopete sessions, false otherwise.
**/
bool persistent() const;
/**
* Returns true if properties based on this template are HTML formatted
**/
bool isRichText() const;
/**
* Returns true if properties based on this template are invisible to the user
**/
bool isPrivate() const;
/**
* An empty template, check for it using isNull()
*/
static ContactPropertyTmpl null;
/**
* Returns true if this object is an empty template
**/
bool isNull() const;
/**
* A Map of QString and ContactPropertyTmpl objects, based on QMap
**/
typedef QMap<QString, ContactPropertyTmpl> Map;
private:
ContactPropertyTmplPrivate *d;
};
/**
* @author Stefan Gehn <metz AT gehn.net>
*
* A data container for whatever information Kopete or any of its
* plugins want to store for a Kopete::Contact
**/
class KOPETE_EXPORT ContactProperty
{
// TODO: Add d-pointer !
public:
/**
* Constructor only used for empty ContactProperty objects
*
* Note: you cannot set a label or value later on!
**/
ContactProperty();
/**
* @param tmpl The contact property template this property is based on
* @param value The value this Property holds
**/
ContactProperty(const ContactPropertyTmpl &tmpl, const QVariant &value);
/** Destructor **/
~ContactProperty();
/**
* Getter for this properties template
**/
const ContactPropertyTmpl &tmpl() const;
/**
* Getter for this properties value
**/
const QVariant &value() const;
/**
* The null, i.e. empty, ContactProperty
*/
static ContactProperty null;
/**
* Returns true if this object is an empty Property (i.e. it holds no
* value), false otherwise.
**/
bool isNull() const;
/**
* Returns true if this property is HTML formatted
**/
bool isRichText() const;
/**
* A map of key,ContactProperty items
**/
typedef QMap<QString, ContactProperty> Map;
private:
QVariant mValue;
ContactPropertyTmpl mTemplate;
};
} // END namespace Kopete
#endif //_KOPETECONTACTPROPERTY_H_