diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /lib/kotext/KoVariable.h | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/kotext/KoVariable.h')
-rw-r--r-- | lib/kotext/KoVariable.h | 807 |
1 files changed, 807 insertions, 0 deletions
diff --git a/lib/kotext/KoVariable.h b/lib/kotext/KoVariable.h new file mode 100644 index 00000000..0129bbc2 --- /dev/null +++ b/lib/kotext/KoVariable.h @@ -0,0 +1,807 @@ +/* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <[email protected]> + + 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 kovariable_h +#define kovariable_h + +#include <qstring.h> +#include <qdatetime.h> +#include <qasciidict.h> +#include <qptrlist.h> +#include <qmap.h> +#include <qobject.h> +#include <kaction.h> +#include "KoRichText.h" +#include <qvariant.h> +#include <koffice_export.h> + +class QDomElement; +// Always add new types at the _end_ of this list (but before VT_ALL of course). +// (and update KWView::setupActions) +enum VariableType { + VT_NONE = -1, + + VT_DATE = 0, + VT_DATE_VAR_KWORD10 = 1, + VT_TIME = 2, + VT_TIME_VAR_KWORD10 = 3, + VT_PGNUM = 4, + // No number 5 + VT_CUSTOM = 6, + VT_MAILMERGE = 7, + VT_FIELD = 8, + VT_LINK = 9, + VT_NOTE = 10, + VT_FOOTNOTE = 11, + VT_STATISTIC = 12, + + VT_ALL = 256 +}; + +enum VariableFormat { + VF_DATE = 0, + VF_TIME = 1, + VF_STRING = 2, + VF_NUM = 3 +}; + +class KoVariable; +class KoOasisSettings; + +class KOTEXT_EXPORT KoVariableSettings +{ + public: + KoVariableSettings(); + virtual ~KoVariableSettings(); + + int startingPageNumber()const { return m_startingPageNumber; } + void setStartingPageNumber(int num) { m_startingPageNumber=num; } + + bool displayLink() const{ return m_displayLink; } + void setDisplayLink( bool b) { m_displayLink=b; } + + bool underlineLink() const { return m_underlineLink; } + void setUnderlineLink( bool b) { m_underlineLink=b; } + + bool displayComment() const { return m_displayComment; } + void setDisplayComment( bool b) { m_displayComment=b; } + + bool displayFieldCode() const { return m_displayFieldCode; } + void setDisplayFieldCode( bool b) { m_displayFieldCode=b; } + + virtual void save( QDomElement &parentElem ); + virtual void load( QDomElement &elem ); + + QDateTime lastPrintingDate() const; + void setLastPrintingDate( const QDateTime & _date); + + QDateTime creationDate() const; + void setCreationDate( const QDateTime & _date); + + QDateTime modificationDate() const; + void setModificationDate( const QDateTime & _date); + + virtual void saveOasis( KoXmlWriter &settingsWriter ) const; + virtual void loadOasis(const KoOasisSettings&settingsDoc); + + + private: + int m_startingPageNumber; + bool m_displayLink; + bool m_displayComment; + bool m_underlineLink; + bool m_displayFieldCode; + class KoVariableSettingPrivate; + KoVariableSettingPrivate *d; +}; + +/** + * Class: KoVariableFormat + * Base class for a variable format - held by KWDocument. + * Example of formats are time, date, string, number, floating-point number... + * The reason for formats to be separated is that it allows to + * customize the formats, to implement subformats (various date formats, etc.). + */ +class KOTEXT_EXPORT KoVariableFormat +{ +public: + KoVariableFormat() {} + virtual ~KoVariableFormat() {} + /** + * Return a key describing this format. + * Used for the flyweight pattern in KoVariableFormatCollection + */ + virtual QCString key() const = 0; + /** + * @return the key for a given set of properties. + * Use this key to lookup the format in the "variable format" collection. + * @param props properties of this format, e.g. DD/MM/YYYY for a date format. + */ + virtual QCString getKey( const QString& props ) const = 0; + /** + * Create a format from this key. + */ + virtual void load( const QCString &key ) = 0; + /** + * Use this format to convert a piece of data into a string. + */ + virtual QString convert(const QVariant& data ) const = 0; + /** + * Set the properties of this format, e.g. DD/MM/YYYY for a date format. + * WARNING: if you call this, you might be modifying a format that + * other variables use as well. Don't do it, use getKey. + */ + virtual void setFormatProperties( const QString& ) {} + /** + * @return the properties of this format, e.g. DD/MM/YYYY for a date format. + */ + virtual QString formatProperties() const { return QString::null; } + /** + * @return the list of available properties strings (e.g. hh:mm:ss) + */ + virtual QStringList formatPropsList() const { return QStringList(); } + /** + * @return the translated version of the list of format properties + */ + virtual QStringList translatedFormatPropsList() const { return QStringList(); } +}; + +/** + * Implementation of the "date" formats + * TODO: merge with KoVariableTimeFormat, for a single QDateTime-based class. + */ +class KOTEXT_EXPORT KoVariableDateFormat : public KoVariableFormat +{ +public: + KoVariableDateFormat(); + virtual QString convert(const QVariant& data ) const; + virtual QCString key() const; + virtual QCString getKey( const QString& props ) const; + virtual void load( const QCString &key ); + + /// Set the format string (e.g. DDMMYYYY) + virtual void setFormatProperties( const QString& props ) { + m_strFormat = props; + } + /// @return the format string (e.g. DDMMYYYY) + virtual QString formatProperties() const { return m_strFormat; } + + /// @return the list of available format strings + virtual QStringList formatPropsList() const { return staticFormatPropsList(); } + + /// @return the translated version of the list of formats + virtual QStringList translatedFormatPropsList() const { return staticTranslatedFormatPropsList(); } + + static QStringList staticFormatPropsList(); + static QStringList staticTranslatedFormatPropsList(); + +private: + QString m_strFormat; +}; + +/** + * Implementation of the "time" formats + */ +class KOTEXT_EXPORT KoVariableTimeFormat : public KoVariableFormat +{ +public: + KoVariableTimeFormat(); + virtual QString convert(const QVariant& data ) const; + virtual QCString key() const; + virtual QCString getKey( const QString& props ) const; + virtual void load( const QCString & /*key*/ ); + + /// Set the format string (e.g. hh:mm:ss) + virtual void setFormatProperties( const QString& props ) { + m_strFormat = props; + } + /// @return the format string (e.g. hh:mm:ss) + virtual QString formatProperties() const { return m_strFormat; } + + /// @return the list of available properties strings (e.g. hh:mm:ss) + virtual QStringList formatPropsList() const { return staticFormatPropsList(); } + + /// @return the translated version of the list of format properties + virtual QStringList translatedFormatPropsList() const { return staticTranslatedFormatPropsList(); } + + static QStringList staticFormatPropsList(); + static QStringList staticTranslatedFormatPropsList(); + +private: + QString m_strFormat; +}; + + +/** + * Implementation of the string format + */ +class KoVariableStringFormat : public KoVariableFormat +{ +public: + KoVariableStringFormat() : KoVariableFormat() {} + virtual QString convert(const QVariant& data ) const; + virtual QCString key() const; + virtual QCString getKey( const QString& props ) const; + virtual void load( const QCString & /*key*/ ) {} +}; + + +class KOTEXT_EXPORT KoVariableNumberFormat : public KoVariableFormat +{ +public: + KoVariableNumberFormat() : KoVariableFormat() {} + virtual QString convert(const QVariant& data ) const; + virtual QCString key() const; + virtual QCString getKey( const QString& props ) const; + virtual void load( const QCString & /*key*/ ) {} +}; + + +/** + * The collection of formats for variables. + * Example: date (short or long), time, string (prefix/suffix), number (prefix/suffix, decimals?)... + * Implements the flyweight pattern to share formats and create them on demand. + * Each KoDocument holds a KoVariableFormatCollection. + */ +class KOTEXT_EXPORT KoVariableFormatCollection +{ +public: + KoVariableFormatCollection(); + + /** + * Forget (and erase) all the formats this collection knows about + */ + void clear() { m_dict.clear(); } + + /** + * Find or create the format for the given @p key + */ + KoVariableFormat *format( const QCString &key ); + + // TODO Refcounting and removing unused formats + // Not critical, that we don't delete unused formats until closing the doc... +protected: + KoVariableFormat *createFormat( const QCString &key ); + +private: + QAsciiDict<KoVariableFormat> m_dict; +}; + +class KoVariable; +class KoVariableFormat; +class KoDocument; +class KoVariableFormatCollection; +class KoTextDocument; +class KoVariableCollection; +class KOTEXT_EXPORT KoVariableCollection : public QObject +{ + Q_OBJECT +public: + // Note that the KoVariableSettings becomes owned by the collection; + // we take it as argument so that it can be subclassed though. + KoVariableCollection(KoVariableSettings *settings, KoVariableFormatCollection *formatCollection); + ~KoVariableCollection(); + void registerVariable( KoVariable *var ); + void unregisterVariable( KoVariable *var ); + QValueList<KoVariable *> recalcVariables(int type); + + // For custom variables + void setVariableValue( const QString &name, const QString &value ); + QString getVariableValue( const QString &name ) const; + + const QPtrList<KoVariable>& getVariables() const { + return variables; + } + void clear(); + + bool customVariableExist(const QString &varname)const ; + + virtual KoVariable *createVariable( int type, short int subtype, KoVariableFormatCollection * coll, KoVariableFormat *varFormat,KoTextDocument *textdoc, KoDocument * doc, int _correct , bool _forceDefaultFormat=false, bool loadFootNote= true ); + + /// Load variable from OASIS file format (called "field" in the OASIS format) + virtual KoVariable* loadOasisField( KoTextDocument* textdoc, const QDomElement& tag, KoOasisContext& context ); + virtual KoVariable* loadOasisFieldCreateVariable( KoTextDocument* textdoc, const QDomElement& tag, KoOasisContext& context, const QString &key, int type ); + + KoVariableSettings *variableSetting() const { return m_variableSettings; } + KoVariableFormatCollection *formatCollection() const { return m_formatCollection; } + + /// Variable that's under the popupmenu + void setVariableSelected(KoVariable * var); + KoVariable *selectedVariable()const {return m_varSelected;} + + /// List of KActions to put into the popupmenu on a variable + QPtrList<KAction> popupActionList() const; + + protected slots: + // This is here because variables and formats are not QObjects + void slotChangeSubType(); + void slotChangeFormat(); + + private: + //typedef QMap<KAction *, int> VariableSubTextMap; + //VariableSubTextMap m_variableSubTextMap; + + QPtrList<KoVariable> variables; + QMap< QString, QString > varValues; // for custom variables + KoVariableSettings *m_variableSettings; + KoVariable *m_varSelected; + KoVariableFormatCollection *m_formatCollection; +}; + + +// ---------------------------------------------------------------- +// KoVariable and derived classes + + +class KoDocument; +class KoVariable; +class QDomElement; +class KoTextFormat; + + +/** + * A KoVariable is a custom item, i.e. considered as a single character. + * KoVariable is the abstract base class. + */ +class KOTEXT_EXPORT KoVariable : public KoTextCustomItem +{ +public: + KoVariable( KoTextDocument *fs, KoVariableFormat *varFormat,KoVariableCollection *varColl ); + virtual ~KoVariable(); + + virtual VariableType type() const = 0; + virtual short int subType() const { return 0; } + + // KoTextCustomItem stuff + virtual Placement placement() const { return PlaceInline; } + virtual void resize(); + virtual int ascent() const { return m_ascent; } // for text, ascent != height! + virtual int widthHint() const { return width; } + virtual int minimumWidth() const { return width; } + virtual void drawCustomItem( QPainter* p, int x, int y, int wpix, int hpix, int ascentpix, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected, int offset, bool drawingShadow); + + /** + * Called by drawCustomItem. Some special variables can + * reimplement drawCustomItem to change the parameters passed to + * drawCustomItemHelper + */ + void drawCustomItemHelper( QPainter* p, int x, int y, int wpix, int hpix, int ascentpix, const QColorGroup& cg, bool selected, int offset, KoTextFormat* fmt, const QFont& font, QColor textColor, bool drawingShadow ); + + void setVariableFormat( KoVariableFormat *_varFormat ); + + KoVariableFormat *variableFormat() const + { return m_varFormat; } + + KoVariableCollection *variableColl() const + { return m_varColl; } + + /** + * Returns the text to be displayed for this variable + * It doesn't need to be cached, convert() is fast, and it's the actual + * value (date, time etc.) that is cached in the variable already. + */ + virtual QString text(bool realValue=false); + + virtual QString fieldCode(); + + /// Return the variable value, as a QVariant, before format conversion + QVariant varValue() const { return m_varValue; } + + /** + * Ask this variable to recalculate and to repaint itself + * Only use this if you're working on a single variable (e.g. popupmenu). + * Otherwise, better do the repainting all at once. + * @see KoVariableCollection::recalcVariables() + */ + void recalcAndRepaint(); + + /** Save the variable. Public API, does the common job and then calls saveVariable. */ + virtual void save( QDomElement &parentElem ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + + /** Part of the KoTextCustomItem interface. Returns the code for a variable, see DTD. + * Do NOT reimplement in koVariable-derived classes. + */ + virtual int typeId() const { return 4; } + + /// List of available subtypes (translated). Use variableSubType() to map index to ID + virtual QStringList subTypeList(); + + /// Set this variable's subtype. + virtual void setVariableSubType( short int /*subtype*/ ) {} + + /** + * Converts the @p menuNumber to variable subtype number (VST_x) + */ + virtual short int variableSubType(short int menuNumber){ return menuNumber; } + + QString convertKlocaleToQDateTimeFormat( const QString & _format ); + +protected: + /** Variable should reimplement this to implement saving. */ + virtual void saveVariable( QDomElement &parentElem ) = 0; + virtual int correctValue() const { return 0;} + + KoVariableFormat *m_varFormat; + KoVariableCollection *m_varColl; + QVariant m_varValue; + int m_ascent; + + //typedef QMap<KAction *, int> SubTextMap; + //SubTextMap m_subTextMap; + class Private; + Private *d; +}; + + +/** + * Date-related variables + */ +class KOTEXT_EXPORT KoDateVariable : public KoVariable +{ +public: + KoDateVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *_varFormat,KoVariableCollection *_varColl , int _correctDate = 0); + + virtual VariableType type() const + { return VT_DATE; } + + enum { VST_DATE_FIX = 0, VST_DATE_CURRENT = 1, VST_DATE_LAST_PRINTING = 2, VST_DATE_CREATE_FILE = 3, VST_DATE_MODIFY_FILE =4 }; + static QStringList actionTexts(); + + virtual void recalc(); + virtual QString fieldCode(); + virtual void resize(); + void setDate( const QDate & _date ) { m_varValue = QVariant(_date); } + + virtual void saveVariable( QDomElement &parentElem ); + virtual int correctValue() const { return m_correctDate;} + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; + + virtual QStringList subTypeList(); + /// Set this variable's subtype. + virtual void setVariableSubType( short int subtype ) + { m_subtype = subtype; } + virtual short int subType() const { return m_subtype; } + /** + * Ask the user and return the date format string with prefix "DATE" + */ + static QCString formatStr( int & correct ); + /** + * Return the default date format for old file. + */ + static QCString defaultFormat(); + +protected: + short int m_subtype; + int m_correctDate; +}; + + +/** + * Time-related variables + */ +class KOTEXT_EXPORT KoTimeVariable : public KoVariable +{ +public: + KoTimeVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *varFormat, KoVariableCollection *_varColl, int _correct); + + virtual VariableType type() const + { return VT_TIME; } + + enum { VST_TIME_FIX = 0, VST_TIME_CURRENT = 1 }; + static QStringList actionTexts(); + + virtual void recalc(); + virtual void resize(); + virtual QString fieldCode(); + + void setTime( const QTime & _time ) { m_varValue = QVariant(_time); } + + virtual void saveVariable( QDomElement &parentElem ); + virtual int correctValue() const { return m_correctTime;} + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; + + virtual QStringList subTypeList(); + virtual void setVariableSubType( short int subtype ) + { m_subtype = subtype; } + virtual short int subType() const { return m_subtype; } + /** + * Returns the time format string with prefix "TIME" + */ + static QCString formatStr(int & _correct); + /** + * Return the default date format for old file. + */ + static QCString defaultFormat(); + +protected: + short int m_subtype; + int m_correctTime; // in minutes +}; + + + +/** + * A custom variable is a variable whose value is entered + * by the user. + */ +class KOTEXT_EXPORT KoCustomVariable : public KoVariable +{ +public: + KoCustomVariable(KoTextDocument *textdoc , const QString &name, KoVariableFormat *varFormat,KoVariableCollection *_varcoll ); + + virtual VariableType type() const + { return VT_CUSTOM; } + static QStringList actionTexts(); + + virtual void saveVariable( QDomElement &parentElem ); + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; + + QString name() const { return m_varValue.toString(); } + virtual void recalc(); + virtual QString fieldCode(); + + virtual QString text(bool realValue=false); + + QString value() const; + void setValue( const QString &v ); + +protected: +}; + + +/** + * Any variable that is a string, and whose value is automatically + * determined - as opposed to custom variables whose value is + * entered by the user + */ +class KOTEXT_EXPORT KoFieldVariable : public KoVariable +{ +public: + KoFieldVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *varFormat,KoVariableCollection *_varColl, KoDocument *_doc ); + + // Do not change existing values, they are saved in document files + enum FieldSubType { VST_NONE = -1, + VST_FILENAME = 0, VST_DIRECTORYNAME = 1, + VST_AUTHORNAME = 2, VST_EMAIL = 3, VST_COMPANYNAME = 4, + VST_PATHFILENAME = 5, VST_FILENAMEWITHOUTEXTENSION=6, + VST_TELEPHONE_WORK = 7, VST_FAX = 8, VST_COUNTRY = 9, + VST_TITLE = 10, VST_ABSTRACT = 11, + VST_POSTAL_CODE = 12, VST_CITY = 13, VST_STREET = 14, + VST_AUTHORTITLE = 15, VST_INITIAL = 16, VST_TELEPHONE_HOME = 17, VST_SUBJECT = 18, VST_KEYWORDS=19,VST_AUTHORPOSITION = 20 }; + + virtual VariableType type() const + { return VT_FIELD; } + + virtual void saveVariable( QDomElement &parentElem ); + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; + virtual QString fieldCode(); + + virtual void recalc(); + virtual QString text(bool realValue=false); + + QString value() const { return m_varValue.toString(); } + + static QStringList actionTexts(); + /** + * Converts @p menuNumber to field variable subtype number + */ + virtual short int variableSubType( short int menuNumber ); + /** + * Converts @p menuNumber to field variable subtype number + */ + static FieldSubType fieldSubType( short int menuNumber); + + virtual QStringList subTypeList(); + virtual void setVariableSubType( short int subtype ) + { m_subtype = subtype; } + virtual short int subType() const { return m_subtype; } + +protected: + short int m_subtype; + KoDocument *m_doc; +}; + + +class KOTEXT_EXPORT KoMailMergeVariable : public KoVariable +{ +public: + KoMailMergeVariable( KoTextDocument *textdoc, const QString &name, KoVariableFormat *varFormat, KoVariableCollection *_varColl ); + + virtual VariableType type() const + { return VT_MAILMERGE; } + static QStringList actionTexts(); + virtual QString fieldCode(); + + virtual void saveVariable( QDomElement &parentElem ); + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; + + virtual QString text(bool realValue=false); + QString name() const { return m_varValue.toString(); } + virtual QString value() const; + +protected: +}; + + +/** + * "current page number" and "number of pages" variables + * This is a base class, it must be inherited by applications, + * to provide recalc(). + */ +class KOTEXT_EXPORT KoPageVariable : public KoVariable +{ +public: + KoPageVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *varFormat ,KoVariableCollection *_varColl); + + virtual VariableType type() const + { return VT_PGNUM; } + + enum { VST_PGNUM_CURRENT = 0, VST_PGNUM_TOTAL = 1, VST_CURRENT_SECTION = 2 , VST_PGNUM_PREVIOUS = 3, VST_PGNUM_NEXT = 4 }; + static QStringList actionTexts(); + virtual QString fieldCode(); + + virtual QStringList subTypeList(); + + virtual void setVariableSubType( short int subtype ); + + // For the 'current page' variable. This is called by the app e.g. when painting + // a given page (see KWTextFrameSet::drawFrame and KPTextObject::recalcPageNum) + void setPgNum( int pgNum ) { m_varValue = QVariant( pgNum); } + // For the 'current section title' variable. Same thing. + void setSectionTitle( const QString& title ); + + virtual short int subType() const { return m_subtype; } + + virtual void recalc() = 0; + + virtual void saveVariable( QDomElement &parentElem ); + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; +protected: + short int m_subtype; +}; + + +class KOTEXT_EXPORT KoLinkVariable : public KoVariable +{ +public: + KoLinkVariable( KoTextDocument *textdoc, const QString & _linkName, const QString & _ulr,KoVariableFormat *varFormat, KoVariableCollection *_varColl ); + virtual void drawCustomItem( QPainter* p, int x, int y, int wpix, int hpix, int ascentpix, int /*cx*/, int /*cy*/, int /*cw*/, int /*ch*/, const QColorGroup& cg, bool selected, int offset, bool drawingShadow ); + + virtual VariableType type() const + { return VT_LINK; } + + static QStringList actionTexts(); + virtual QString fieldCode(); + + virtual void saveVariable( QDomElement &parentElem ); + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; + + virtual QString text(bool realValue=false); + QString value() const { return m_varValue.toString(); } + QString url() const { return m_url;} + + virtual void recalc(); + + void setLink(const QString & _linkName, const QString &_url) + { + m_varValue=QVariant(_linkName); + m_url=_url; + } + +protected: + QString m_url; +}; + + +// A custom item that display a small yellow rect. Right-clicking on it shows the comment. +class KOTEXT_EXPORT KoNoteVariable : public KoVariable +{ +public: + KoNoteVariable( KoTextDocument *textdoc, const QString & _note,KoVariableFormat *varFormat, KoVariableCollection *_varColl ); + virtual void drawCustomItem( QPainter* p, int x, int y, int wpix, int hpix, int ascentpix, int /*cx*/, int /*cy*/, int /*cw*/, int /*ch*/, const QColorGroup& cg, bool selected, int offset, bool drawingShadow ); + + virtual VariableType type() const + { return VT_NOTE; } + + static QStringList actionTexts(); + virtual QString fieldCode(); + + virtual void saveVariable( QDomElement &parentElem ); + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; + + virtual QString text(bool realValue=false); + QString note() const { return m_varValue.toString(); } + void setNote( const QString & _note) { m_varValue = QVariant(_note); } + virtual void recalc(); + + QString createdNote() const; +protected: + QDate m_createdNoteDate; +}; + + +class KOTEXT_EXPORT KoStatisticVariable : public KoVariable +{ +public: + KoStatisticVariable( KoTextDocument *textdoc, short int subtype, + KoVariableFormat *varFormat, + KoVariableCollection *_varColl); + + enum { + VST_STATISTIC_NB_WORD = 0, + VST_STATISTIC_NB_SENTENCE = 1, + VST_STATISTIC_NB_LINES = 2, + VST_STATISTIC_NB_CHARACTERE = 3, + VST_STATISTIC_NB_NON_WHITESPACE_CHARACTERE = 4, + VST_STATISTIC_NB_SYLLABLE = 5, + VST_STATISTIC_NB_FRAME = 6, + VST_STATISTIC_NB_EMBEDDED = 7, + VST_STATISTIC_NB_PICTURE = 8, + VST_STATISTIC_NB_TABLE = 9 + }; + + virtual VariableType type() const + { return VT_STATISTIC; } + static QStringList actionTexts(); + + virtual QStringList subTypeList(); + + virtual void saveVariable( QDomElement &parentElem ); + virtual void load( QDomElement &elem ); + virtual void loadOasis( const QDomElement &elem, KoOasisContext& context ); + virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const; + + virtual short int subType() const { return m_subtype; } + + virtual void setVariableSubType( short int subtype ); + + QString name() const { return m_varValue.toString(); } + virtual QString fieldCode(); + + QString value() const; + void setValue( const QString &v ); + static void setExtendedType( bool _b) { m_extendedType = _b; } + static bool extendedType() { return m_extendedType; } +protected: + short int m_subtype; + // extend type for kword. + static bool m_extendedType; +}; + + +#endif |