diff options
Diffstat (limited to 'kexi/plugins/macros/lib/variable.h')
-rw-r--r-- | kexi/plugins/macros/lib/variable.h | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/kexi/plugins/macros/lib/variable.h b/kexi/plugins/macros/lib/variable.h new file mode 100644 index 000000000..26e9619ee --- /dev/null +++ b/kexi/plugins/macros/lib/variable.h @@ -0,0 +1,222 @@ +/*************************************************************************** + * This file is part of the KDE project + * copyright (C) 2005 by Sebastian Sauer (mail@dipe.org) + * copyright (C) 2005 by Tobi Krebs (tobi.krebs@gmail.com) + * + * This program 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 program 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 program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + ***************************************************************************/ + +#ifndef KOMACRO_VARIABLE_H +#define KOMACRO_VARIABLE_H + +#include <qobject.h> +#include <qdom.h> +#include <qvariant.h> +#include <ksharedptr.h> + +#include "metaparameter.h" + +namespace KoMacro { + + /** + * A variable value used to provide abstract access to variables. The + * class handles QVariant and QObject and provides access to them. + * Variable inherits KShared and implements reference couting. So, it's + * not needed to take care of memory-managment. + */ + class KOMACRO_EXPORT Variable : public MetaParameter + { + + /** + * Property to get and set a QVariant as variable. + */ + Q_PROPERTY(QVariant variant READ variant WRITE setVariant) + + /** + * Property to get and set a QObject as variable. + */ + Q_PROPERTY(QObject* object READ object WRITE setObject) + + /** + * Property to get a string-representation of the variable. + */ + Q_PROPERTY(QString string READ toString) + + public: + + /** + * A list of variables. + */ + typedef QValueList<KSharedPtr<Variable > > List; + + /** + * A map of variables. + */ + typedef QMap<QString, KSharedPtr<Variable > > Map; + + /** + * Default constructor. + */ + explicit Variable(); + + /** + * Constructor from the QVariant @p variant . + * + * @param variant The value this variable has. + * @param name The unique @a name() this variable has. + * @param text The describing @a text() this variable has. + */ + Variable(const QVariant& variant, const QString& name = QString::null, const QString& text = QString::null); + + /** + * Constructor from the QObject @p object . + * + * @param object The value this variable has. + */ + Variable(const QObject* object); + + /** + * Constructor from the QDomElement @p element . + * @deprecated replaced with methods of @a XMLHandler. + * @param element The QDomElement that may optional contains the + * variable content or other additional informations. + */ + Variable(const QDomElement& element); + + /** + * Destructor. + */ + virtual ~Variable(); + + /** + * @return the name this @a Variable has. + */ + QString name() const; + + /** + * Set the name @param name this @a Variable has. + */ + void setName(const QString& name); + + /** + * @return the caption this @a Variable has. + */ + QString text() const; + + /** + * Set the caption @param text this @a Variable has. + */ + void setText(const QString& text); + + /** + * Set the QObject @param object this variable has. A + * previously remembered value will be overwritten and + * the new type is a @a TypeObject . + */ + void setObject(const QObject* object); + + /** + * @return the QVariant this variable has. If this + * variable isn't a @a TypeVariant an invalid QVariant + * got returned. + */ + const QVariant variant() const; + + /** + * Set the QVariant @param variant this variable has. A + * previously remembered value will be overwritten and + * the new type is a @a TypeVariant . If @param detecttype is + * true the method tries to set the @a variantType according + * to the passed QVariant. If false the variantType won't + * be changed. + */ + void setVariant(const QVariant& variant, bool detecttype = true); + + /** + * @return the QObject this variable has. If this + * variable isn't a @a TypeObject NULL got returned. + */ + const QObject* object() const; + + /** + * Implicit conversion to QVariant operator. This method + * calls @a variant() internaly. + */ + operator QVariant () const; + + /** + * Implicit conversion to QObject operator. This method + * calls @a object() internaly. + */ + operator const QObject* () const; + + /** + * @return a string-represenation of the variable. + */ + const QString toString() const; + + /** + * @return a integer-represenation of the variable. + */ + int toInt() const; + + /** + * @return the optional list of @a Variable instances + * that are children of this @a Variable . + * + * @note that the list is returned call-by-reference. The + * list is accessed as getter/setter (read/write). So, + * don't set this method to const! + */ + List children() const; + + /** + * Append a @a Variable to the list of children this + * @a Variable has. + */ + void appendChild(KSharedPtr<Variable> variable); + + /** + * Clear the list of children this @a Variable has. + */ + void clearChildren(); + + /** + * Set the children this @a Variable has. + */ + void setChildren(const List& children); + +#if 0 + /** + * @return true if this @a Variable is enabled else + * false is returned. + */ + bool isEnabled() const; + + /** + * Set this @a Variable to be enabled if @param enabled is + * true else the variable is disabled. + */ + void setEnabled(const bool enabled); +#endif + private: + /// @internal d-pointer class. + class Private; + /// @internal d-pointer instance. + Private* const d; + }; + +} + +#endif |