diff options
Diffstat (limited to 'kopete/libkopete/kopetecontactproperty.h')
-rw-r--r-- | kopete/libkopete/kopetecontactproperty.h | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/kopete/libkopete/kopetecontactproperty.h b/kopete/libkopete/kopetecontactproperty.h new file mode 100644 index 00000000..b5c8f060 --- /dev/null +++ b/kopete/libkopete/kopetecontactproperty.h @@ -0,0 +1,195 @@ +/* + kopetecontactproperty.h + + Kopete::Contact Property class + + Copyright (c) 2004 by Stefan Gehn <metz AT gehn.net> + Kopete (c) 2004 by the Kopete developers <[email protected]> + + ************************************************************************* + * * + * 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_ |