lib

KoVariable.h

00001 /* This file is part of the KDE project
00002    Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017  * Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #ifndef kovariable_h
00021 #define kovariable_h
00022 
00023 #include <qstring.h>
00024 #include <qdatetime.h>
00025 #include <qasciidict.h>
00026 #include <qptrlist.h>
00027 #include <qmap.h>
00028 #include <qobject.h>
00029 #include <kaction.h>
00030 #include "KoRichText.h"
00031 #include <qvariant.h>
00032 #include <koffice_export.h>
00033 
00034 class QDomElement;
00035 // Always add new types at the _end_ of this list (but before VT_ALL of course).
00036 // (and update KWView::setupActions)
00037 enum VariableType {
00038     VT_NONE             = -1,
00039 
00040     VT_DATE             = 0,
00041     VT_DATE_VAR_KWORD10 = 1,
00042     VT_TIME             = 2,
00043     VT_TIME_VAR_KWORD10 = 3,
00044     VT_PGNUM            = 4,
00045     // No number 5
00046     VT_CUSTOM           = 6,
00047     VT_MAILMERGE        = 7,
00048     VT_FIELD            = 8,
00049     VT_LINK             = 9,
00050     VT_NOTE             = 10,
00051     VT_FOOTNOTE         = 11,
00052     VT_STATISTIC        = 12,
00053 
00054     VT_ALL              = 256
00055 };
00056 
00057 enum VariableFormat {
00058     VF_DATE   = 0,
00059     VF_TIME   = 1,
00060     VF_STRING = 2,
00061     VF_NUM    = 3
00062 };
00063 
00064 class KoVariable;
00065 class KoOasisSettings;
00066 
00067 class KOTEXT_EXPORT KoVariableSettings
00068 {
00069  public:
00070     KoVariableSettings();
00071     virtual ~KoVariableSettings();
00072 
00073     int startingPageNumber()const { return m_startingPageNumber; }
00074     void setStartingPageNumber(int num) { m_startingPageNumber=num; }
00075 
00076     bool displayLink() const{ return m_displayLink; }
00077     void setDisplayLink( bool b) { m_displayLink=b; }
00078 
00079     bool underlineLink() const { return m_underlineLink; }
00080     void setUnderlineLink( bool b) { m_underlineLink=b; }
00081 
00082     bool displayComment() const { return m_displayComment; }
00083     void setDisplayComment( bool b) { m_displayComment=b; }
00084 
00085     bool displayFieldCode() const { return m_displayFieldCode; }
00086     void setDisplayFieldCode( bool b) { m_displayFieldCode=b; }
00087 
00088     virtual void save( QDomElement &parentElem );
00089     virtual void load( QDomElement &elem );
00090 
00091     QDateTime lastPrintingDate() const;
00092     void setLastPrintingDate( const QDateTime & _date);
00093 
00094     QDateTime creationDate() const;
00095     void setCreationDate( const QDateTime & _date);
00096 
00097     QDateTime modificationDate() const;
00098     void setModificationDate( const QDateTime & _date);
00099 
00100     virtual void saveOasis( KoXmlWriter &settingsWriter ) const;
00101     virtual void loadOasis(const KoOasisSettings&settingsDoc);
00102 
00103 
00104  private:
00105     int m_startingPageNumber;
00106     bool m_displayLink;
00107     bool m_displayComment;
00108     bool m_underlineLink;
00109     bool m_displayFieldCode;
00110     class KoVariableSettingPrivate;
00111     KoVariableSettingPrivate *d;
00112 };
00113 
00121 class KOTEXT_EXPORT KoVariableFormat
00122 {
00123 public:
00124     KoVariableFormat() {}
00125     virtual ~KoVariableFormat() {}
00130     virtual QCString key() const = 0;
00136     virtual QCString getKey( const QString& props ) const = 0;
00140     virtual void load( const QCString &key ) = 0;
00144     virtual QString convert(const QVariant& data ) const = 0;
00150     virtual void setFormatProperties( const QString& ) {}
00154     virtual QString formatProperties() const { return QString::null; }
00158     virtual QStringList formatPropsList() const { return QStringList(); }
00162     virtual QStringList translatedFormatPropsList() const { return QStringList(); }
00163 };
00164 
00169 class KOTEXT_EXPORT KoVariableDateFormat : public KoVariableFormat
00170 {
00171 public:
00172     KoVariableDateFormat();
00173     virtual QString convert(const QVariant& data ) const;
00174     virtual QCString key() const;
00175     virtual QCString getKey( const QString& props ) const;
00176     virtual void load( const QCString &key );
00177 
00179     virtual void setFormatProperties( const QString& props ) {
00180         m_strFormat = props;
00181     }
00183     virtual QString formatProperties() const { return m_strFormat; }
00184 
00186     virtual QStringList formatPropsList() const { return staticFormatPropsList(); }
00187 
00189     virtual QStringList translatedFormatPropsList() const { return staticTranslatedFormatPropsList(); }
00190 
00191     static QStringList staticFormatPropsList();
00192     static QStringList staticTranslatedFormatPropsList();
00193 
00194 private:
00195     QString m_strFormat;
00196 };
00197 
00201 class KOTEXT_EXPORT KoVariableTimeFormat : public KoVariableFormat
00202 {
00203 public:
00204     KoVariableTimeFormat();
00205     virtual QString convert(const QVariant& data ) const;
00206     virtual QCString key() const;
00207     virtual QCString getKey( const QString& props ) const;
00208     virtual void load( const QCString & /*key*/ );
00209 
00211     virtual void setFormatProperties( const QString& props ) {
00212         m_strFormat = props;
00213     }
00215     virtual QString formatProperties() const { return m_strFormat; }
00216 
00218     virtual QStringList formatPropsList() const { return staticFormatPropsList(); }
00219 
00221     virtual QStringList translatedFormatPropsList() const { return staticTranslatedFormatPropsList(); }
00222 
00223     static QStringList staticFormatPropsList();
00224     static QStringList staticTranslatedFormatPropsList();
00225 
00226 private:
00227     QString m_strFormat;
00228 };
00229 
00230 
00234 class KoVariableStringFormat : public KoVariableFormat
00235 {
00236 public:
00237     KoVariableStringFormat() : KoVariableFormat() {}
00238     virtual QString convert(const QVariant& data ) const;
00239     virtual QCString key() const;
00240     virtual QCString getKey( const QString& props ) const;
00241     virtual void load( const QCString & /*key*/ ) {}
00242 };
00243 
00244 
00245 class KOTEXT_EXPORT KoVariableNumberFormat : public KoVariableFormat
00246 {
00247 public:
00248     KoVariableNumberFormat() : KoVariableFormat() {}
00249     virtual QString convert(const QVariant& data ) const;
00250     virtual QCString key() const;
00251     virtual QCString getKey( const QString& props ) const;
00252     virtual void load( const QCString & /*key*/ ) {}
00253 };
00254 
00255 
00262 class KOTEXT_EXPORT KoVariableFormatCollection
00263 {
00264 public:
00265     KoVariableFormatCollection();
00266 
00270     void clear() { m_dict.clear(); }
00271 
00275     KoVariableFormat *format( const QCString &key );
00276 
00277     // TODO Refcounting and removing unused formats
00278     // Not critical, that we don't delete unused formats until closing the doc...
00279 protected:
00280     KoVariableFormat *createFormat( const QCString &key );
00281 
00282 private:
00283     QAsciiDict<KoVariableFormat> m_dict;
00284 };
00285 
00286 class KoVariable;
00287 class KoVariableFormat;
00288 class KoDocument;
00289 class KoVariableFormatCollection;
00290 class KoTextDocument;
00291 class KoVariableCollection;
00292 class KOTEXT_EXPORT KoVariableCollection : public QObject
00293 {
00294     Q_OBJECT
00295 public:
00296     // Note that the KoVariableSettings becomes owned by the collection;
00297     // we take it as argument so that it can be subclassed though.
00298     KoVariableCollection(KoVariableSettings *settings, KoVariableFormatCollection *formatCollection);
00299     ~KoVariableCollection();
00300     void registerVariable( KoVariable *var );
00301     void unregisterVariable( KoVariable *var );
00302     QValueList<KoVariable *> recalcVariables(int type);
00303 
00304     // For custom variables
00305     void setVariableValue( const QString &name, const QString &value );
00306     QString getVariableValue( const QString &name ) const;
00307 
00308     const QPtrList<KoVariable>& getVariables() const {
00309         return variables;
00310     }
00311     void clear();
00312 
00313     bool customVariableExist(const QString &varname)const ;
00314 
00315     virtual KoVariable *createVariable( int type, short int subtype, KoVariableFormatCollection * coll, KoVariableFormat *varFormat,KoTextDocument *textdoc, KoDocument * doc, int _correct , bool _forceDefaultFormat=false, bool loadFootNote= true );
00316 
00318     virtual KoVariable* loadOasisField( KoTextDocument* textdoc, const QDomElement& tag, KoOasisContext& context );
00319     virtual KoVariable* loadOasisFieldCreateVariable( KoTextDocument* textdoc, const QDomElement& tag, KoOasisContext& context, const QString &key, int type );
00320 
00321     KoVariableSettings *variableSetting() const { return m_variableSettings; }
00322     KoVariableFormatCollection *formatCollection() const { return m_formatCollection; }
00323 
00325     void setVariableSelected(KoVariable * var);
00326     KoVariable *selectedVariable()const {return m_varSelected;}
00327 
00329     QPtrList<KAction> popupActionList() const;
00330 
00331  protected slots:
00332     // This is here because variables and formats are not QObjects
00333     void slotChangeSubType();
00334     void slotChangeFormat();
00335 
00336  private:
00337     //typedef QMap<KAction *, int> VariableSubTextMap;
00338     //VariableSubTextMap m_variableSubTextMap;
00339 
00340     QPtrList<KoVariable> variables;
00341     QMap< QString, QString > varValues; // for custom variables
00342     KoVariableSettings *m_variableSettings;
00343     KoVariable *m_varSelected;
00344     KoVariableFormatCollection *m_formatCollection;
00345 };
00346 
00347 
00348 // ----------------------------------------------------------------
00349 //                KoVariable and derived classes
00350 
00351 
00352 class KoDocument;
00353 class KoVariable;
00354 class QDomElement;
00355 class KoTextFormat;
00356 
00357 
00362 class KOTEXT_EXPORT KoVariable : public KoTextCustomItem
00363 {
00364 public:
00365     KoVariable( KoTextDocument *fs, KoVariableFormat *varFormat,KoVariableCollection *varColl );
00366     virtual ~KoVariable();
00367 
00368     virtual VariableType type() const = 0;
00369     virtual short int subType() const { return 0; }
00370 
00371     // KoTextCustomItem stuff
00372     virtual Placement placement() const { return PlaceInline; }
00373     virtual void resize();
00374     virtual int ascent() const { return m_ascent; } // for text, ascent != height!
00375     virtual int widthHint() const { return width; }
00376     virtual int minimumWidth() const { return width; }
00377     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);
00378 
00384     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 );
00385 
00386     void setVariableFormat( KoVariableFormat *_varFormat );
00387 
00388     KoVariableFormat *variableFormat() const
00389         { return m_varFormat; }
00390 
00391     KoVariableCollection *variableColl() const
00392         { return m_varColl; }
00393 
00399     virtual QString text(bool realValue=false);
00400 
00401     virtual QString fieldCode();
00402 
00404     QVariant varValue() const { return m_varValue; }
00405 
00412     void recalcAndRepaint();
00413 
00415     virtual void save( QDomElement &parentElem );
00416     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00417     virtual void load( QDomElement &elem );
00418     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00419 
00423     virtual int typeId() const { return 4; }
00424 
00426     virtual QStringList subTypeList();
00427 
00429     virtual void setVariableSubType( short int /*subtype*/ ) {}
00430 
00434     virtual short int variableSubType(short int menuNumber){ return menuNumber; }
00435 
00436     QString convertKlocaleToQDateTimeFormat( const QString & _format );
00437 
00438 protected:
00440     virtual void saveVariable( QDomElement &parentElem ) = 0;
00441     virtual int correctValue() const { return 0;}
00442 
00443     KoVariableFormat *m_varFormat;
00444     KoVariableCollection *m_varColl;
00445     QVariant m_varValue;
00446     int m_ascent;
00447 
00448     //typedef QMap<KAction *, int> SubTextMap;
00449     //SubTextMap m_subTextMap;
00450     class Private;
00451     Private *d;
00452 };
00453 
00454 
00458 class KOTEXT_EXPORT KoDateVariable : public KoVariable
00459 {
00460 public:
00461     KoDateVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *_varFormat,KoVariableCollection *_varColl , int _correctDate = 0);
00462 
00463     virtual VariableType type() const
00464     { return VT_DATE; }
00465 
00466     enum { VST_DATE_FIX = 0, VST_DATE_CURRENT = 1, VST_DATE_LAST_PRINTING = 2, VST_DATE_CREATE_FILE = 3, VST_DATE_MODIFY_FILE =4 };
00467     static QStringList actionTexts();
00468 
00469     virtual void recalc();
00470     virtual QString fieldCode();
00471     virtual void resize();
00472     void setDate( const QDate & _date ) { m_varValue = QVariant(_date); }
00473 
00474     virtual void saveVariable( QDomElement &parentElem );
00475     virtual int correctValue() const { return m_correctDate;}
00476     virtual void load( QDomElement &elem );
00477     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00478     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00479 
00480     virtual QStringList subTypeList();
00482     virtual void setVariableSubType( short int subtype )
00483         { m_subtype = subtype; }
00484     virtual short int subType() const { return m_subtype; }
00488     static QCString formatStr( int & correct );
00492     static QCString defaultFormat();
00493 
00494 protected:
00495     short int m_subtype;
00496     int m_correctDate;
00497 };
00498 
00499 
00503 class KOTEXT_EXPORT KoTimeVariable : public KoVariable
00504 {
00505 public:
00506     KoTimeVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *varFormat, KoVariableCollection *_varColl,  int _correct);
00507 
00508     virtual VariableType type() const
00509     { return VT_TIME; }
00510 
00511     enum { VST_TIME_FIX = 0, VST_TIME_CURRENT = 1 };
00512     static QStringList actionTexts();
00513 
00514     virtual void recalc();
00515     virtual void resize();
00516     virtual QString fieldCode();
00517 
00518     void setTime( const QTime & _time ) { m_varValue = QVariant(_time); }
00519 
00520     virtual void saveVariable( QDomElement &parentElem );
00521     virtual int correctValue() const { return m_correctTime;}
00522     virtual void load( QDomElement &elem );
00523     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00524     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00525 
00526     virtual QStringList subTypeList();
00527     virtual void setVariableSubType( short int subtype )
00528         { m_subtype = subtype; }
00529     virtual short int subType() const { return m_subtype; }
00533     static QCString formatStr(int & _correct);
00537     static QCString defaultFormat();
00538 
00539 protected:
00540     short int m_subtype;
00541     int m_correctTime; // in minutes
00542 };
00543 
00544 
00545 
00550 class KOTEXT_EXPORT KoCustomVariable : public KoVariable
00551 {
00552 public:
00553     KoCustomVariable(KoTextDocument *textdoc , const QString &name, KoVariableFormat *varFormat,KoVariableCollection *_varcoll );
00554 
00555     virtual VariableType type() const
00556     { return VT_CUSTOM; }
00557     static QStringList actionTexts();
00558 
00559     virtual void saveVariable( QDomElement &parentElem );
00560     virtual void load( QDomElement &elem );
00561     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00562     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00563 
00564     QString name() const { return m_varValue.toString(); }
00565     virtual void recalc();
00566     virtual QString fieldCode();
00567 
00568     virtual QString text(bool realValue=false);
00569 
00570     QString value() const;
00571     void setValue( const QString &v );
00572 
00573 protected:
00574 };
00575 
00576 
00582 class KOTEXT_EXPORT KoFieldVariable : public KoVariable
00583 {
00584 public:
00585     KoFieldVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *varFormat,KoVariableCollection *_varColl, KoDocument *_doc );
00586 
00587     // Do not change existing values, they are saved in document files
00588     enum FieldSubType { VST_NONE = -1,
00589                         VST_FILENAME = 0, VST_DIRECTORYNAME = 1,
00590                         VST_AUTHORNAME = 2, VST_EMAIL = 3, VST_COMPANYNAME = 4,
00591             VST_PATHFILENAME = 5, VST_FILENAMEWITHOUTEXTENSION=6,
00592                         VST_TELEPHONE_WORK = 7, VST_FAX = 8, VST_COUNTRY = 9,
00593                         VST_TITLE = 10, VST_ABSTRACT = 11,
00594                         VST_POSTAL_CODE = 12, VST_CITY = 13, VST_STREET = 14,
00595                         VST_AUTHORTITLE = 15, VST_INITIAL = 16, VST_TELEPHONE_HOME = 17, VST_SUBJECT = 18, VST_KEYWORDS=19,VST_AUTHORPOSITION = 20 };
00596 
00597     virtual VariableType type() const
00598     { return VT_FIELD; }
00599 
00600     virtual void saveVariable( QDomElement &parentElem );
00601     virtual void load( QDomElement &elem );
00602     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00603     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00604     virtual QString fieldCode();
00605 
00606     virtual void recalc();
00607     virtual QString text(bool realValue=false);
00608 
00609     QString value() const { return m_varValue.toString(); }
00610 
00611     static QStringList actionTexts();
00615     virtual short int variableSubType( short int menuNumber );
00619     static FieldSubType fieldSubType( short int menuNumber);
00620 
00621     virtual QStringList subTypeList();
00622     virtual void setVariableSubType( short int subtype )
00623         { m_subtype = subtype; }
00624     virtual short int subType() const { return m_subtype; }
00625 
00626 protected:
00627     short int m_subtype;
00628     KoDocument *m_doc;
00629 };
00630 
00631 
00632 class KOTEXT_EXPORT KoMailMergeVariable : public KoVariable
00633 {
00634 public:
00635     KoMailMergeVariable( KoTextDocument *textdoc, const QString &name, KoVariableFormat *varFormat, KoVariableCollection *_varColl );
00636 
00637     virtual VariableType type() const
00638     { return VT_MAILMERGE; }
00639     static QStringList actionTexts();
00640     virtual QString fieldCode();
00641 
00642     virtual void saveVariable( QDomElement &parentElem );
00643     virtual void load( QDomElement &elem );
00644     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00645     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00646 
00647     virtual QString text(bool realValue=false);
00648     QString name() const { return m_varValue.toString(); }
00649     virtual QString value() const;
00650 
00651 protected:
00652 };
00653 
00654 
00660 class KOTEXT_EXPORT KoPageVariable : public KoVariable
00661 {
00662 public:
00663     KoPageVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *varFormat ,KoVariableCollection *_varColl);
00664 
00665     virtual VariableType type() const
00666     { return VT_PGNUM; }
00667 
00668     enum { VST_PGNUM_CURRENT = 0, VST_PGNUM_TOTAL = 1, VST_CURRENT_SECTION = 2 , VST_PGNUM_PREVIOUS = 3, VST_PGNUM_NEXT = 4 };
00669     static QStringList actionTexts();
00670     virtual QString fieldCode();
00671 
00672     virtual QStringList subTypeList();
00673 
00674     virtual void setVariableSubType( short int subtype );
00675 
00676     // For the 'current page' variable. This is called by the app e.g. when painting
00677     // a given page (see KWTextFrameSet::drawFrame and KPTextObject::recalcPageNum)
00678     void setPgNum( int pgNum ) { m_varValue = QVariant( pgNum); }
00679     // For the 'current section title' variable. Same thing.
00680     void setSectionTitle( const QString& title );
00681 
00682     virtual short int subType() const { return m_subtype; }
00683 
00684     virtual void recalc() = 0;
00685 
00686     virtual void saveVariable( QDomElement &parentElem );
00687     virtual void load( QDomElement &elem );
00688     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00689     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00690 protected:
00691     short int m_subtype;
00692 };
00693 
00694 
00695 class KOTEXT_EXPORT KoLinkVariable : public KoVariable
00696 {
00697 public:
00698     KoLinkVariable( KoTextDocument *textdoc, const QString & _linkName, const QString & _ulr,KoVariableFormat *varFormat, KoVariableCollection *_varColl );
00699     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 );
00700 
00701     virtual VariableType type() const
00702     { return VT_LINK; }
00703 
00704     static QStringList actionTexts();
00705     virtual QString fieldCode();
00706 
00707     virtual void saveVariable( QDomElement &parentElem );
00708     virtual void load( QDomElement &elem );
00709     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00710     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00711 
00712     virtual QString text(bool realValue=false);
00713     QString value() const { return m_varValue.toString(); }
00714     QString url() const { return m_url;}
00715 
00716     virtual void recalc();
00717 
00718     void setLink(const QString & _linkName, const QString &_url)
00719     {
00720         m_varValue=QVariant(_linkName);
00721         m_url=_url;
00722     }
00723 
00724 protected:
00725     QString m_url;
00726 };
00727 
00728 
00729 // A custom item that display a small yellow rect. Right-clicking on it shows the comment.
00730 class KOTEXT_EXPORT KoNoteVariable : public KoVariable
00731 {
00732 public:
00733     KoNoteVariable( KoTextDocument *textdoc, const QString & _note,KoVariableFormat *varFormat, KoVariableCollection *_varColl );
00734     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 );
00735 
00736     virtual VariableType type() const
00737     { return VT_NOTE; }
00738 
00739     static QStringList actionTexts();
00740     virtual QString fieldCode();
00741 
00742     virtual void saveVariable( QDomElement &parentElem );
00743     virtual void load( QDomElement &elem );
00744     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00745     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00746 
00747     virtual QString text(bool realValue=false);
00748     QString note() const { return m_varValue.toString(); }
00749     void setNote( const QString & _note) { m_varValue = QVariant(_note); }
00750     virtual void recalc();
00751 
00752     QString createdNote() const;
00753 protected:
00754     QDate m_createdNoteDate;
00755 };
00756 
00757 
00758 class KOTEXT_EXPORT KoStatisticVariable : public KoVariable
00759 {
00760 public:
00761     KoStatisticVariable( KoTextDocument *textdoc, short int subtype,
00762              KoVariableFormat *varFormat,
00763              KoVariableCollection *_varColl);
00764 
00765     enum {
00766     VST_STATISTIC_NB_WORD                      = 0,
00767     VST_STATISTIC_NB_SENTENCE                  = 1,
00768     VST_STATISTIC_NB_LINES                     = 2,
00769     VST_STATISTIC_NB_CHARACTERE                = 3,
00770     VST_STATISTIC_NB_NON_WHITESPACE_CHARACTERE = 4,
00771     VST_STATISTIC_NB_SYLLABLE                  = 5,
00772     VST_STATISTIC_NB_FRAME                     = 6,
00773     VST_STATISTIC_NB_EMBEDDED                  = 7,
00774     VST_STATISTIC_NB_PICTURE                   = 8,
00775     VST_STATISTIC_NB_TABLE                     = 9
00776     };
00777 
00778     virtual VariableType type() const
00779     { return VT_STATISTIC; }
00780     static QStringList actionTexts();
00781 
00782     virtual QStringList subTypeList();
00783 
00784     virtual void saveVariable( QDomElement &parentElem );
00785     virtual void load( QDomElement &elem );
00786     virtual void loadOasis( const QDomElement &elem, KoOasisContext& context );
00787     virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
00788 
00789     virtual short int subType() const { return m_subtype; }
00790 
00791     virtual void setVariableSubType( short int subtype );
00792 
00793     QString name() const { return m_varValue.toString(); }
00794     virtual QString fieldCode();
00795 
00796     QString value() const;
00797     void setValue( const QString &v );
00798     static void setExtendedType( bool _b) { m_extendedType = _b; }
00799     static bool extendedType() { return m_extendedType; }
00800 protected:
00801     short int m_subtype;
00802     // extend type for kword.
00803     static bool m_extendedType;
00804 };
00805 
00806 
00807 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys