00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef KOOASISSTYLES_H
00020 #define KOOASISSTYLES_H
00021
00022 #include <qdom.h>
00023 #include <qdict.h>
00024 #include <qvaluevector.h>
00025 #include <qmap.h>
00026 #include <koffice_export.h>
00027
00028 class KoGenStyles;
00029 class KoXmlWriter;
00030 class QBrush;
00031 class KoGenStyle;
00032 class KoStyleStack;
00033
00037 class KOFFICECORE_EXPORT KoOasisStyles
00038 {
00039 public:
00040 KoOasisStyles();
00041 ~KoOasisStyles();
00042
00046 void createStyleMap( const QDomDocument& doc, bool stylesDotXml );
00047
00057 const QDomElement* findStyle( const QString& name ) const;
00058
00065 const QDomElement* findStyle( const QString& name, const QString& family ) const;
00066
00068 const QDomElement* findStyleAutoStyle( const QString& name, const QString& family ) const;
00069
00072 QValueVector<QDomElement> userStyles() const;
00073
00076 const QDomElement* defaultStyle( const QString& family ) const;
00077
00079 const QDomElement& officeStyle() const { return m_officeStyle; }
00080
00082 const QDict<QDomElement>& listStyles() const { return m_listStyles; }
00083
00085 const QDict<QDomElement>& masterPages() const { return m_masterPages; }
00086
00088 const QDict<QDomElement>& drawStyles() const { return m_drawStyles; }
00089
00091 const QDict<QDomElement>& styles(const QString& family) const;
00092
00095 struct NumericStyleFormat
00096 {
00097 QString formatStr;
00098 QString prefix;
00099 QString suffix;
00100 enum { Number, Scientific, Fraction, Currency, Percentage,
00101 Date, Time, Boolean, Text } type;
00102 int precision;
00103 QString currencySymbol;
00104 };
00105
00106 typedef QMap<QString, NumericStyleFormat> DataFormatsMap;
00109 const DataFormatsMap& dataFormats() const { return m_dataFormats; }
00110
00111 static QString saveOasisDateStyle( KoGenStyles &mainStyles, const QString & _format, bool klocaleFormat,
00112 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00113 static QString saveOasisTimeStyle( KoGenStyles &mainStyles, const QString & _format, bool klocaleFormat,
00114 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00115 static QString saveOasisFractionStyle( KoGenStyles &mainStyles, const QString & _format,
00116 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00117 static QString saveOasisScientificStyle( KoGenStyles &mainStyles, const QString & _format,
00118 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00119 static QString saveOasisNumberStyle( KoGenStyles &mainStyles, const QString & _format,
00120 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00121 static QString saveOasisPercentageStyle( KoGenStyles &mainStyles, const QString & _format,
00122 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00123 static QString saveOasisCurrencyStyle( KoGenStyles &mainStyles, const QString & _format, const QString &symbol,
00124 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00125 static QString saveOasisTextStyle( KoGenStyles &mainStyles, const QString & _format,
00126 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00127
00128 static void saveOasisFillStyle( KoGenStyle &styleFill, KoGenStyles& mainStyles, const QBrush & brush );
00129 static QString saveOasisHatchStyle( KoGenStyles& mainStyles, const QBrush &brush );
00130
00131 static QBrush loadOasisFillStyle( const KoStyleStack &styleStack, const QString & fill, const KoOasisStyles & oasisStyles );
00132
00133 private:
00135 void insertStyles( const QDomElement& styles, bool styleAutoStyles = false );
00136
00137 private:
00138 void insertOfficeStyles( const QDomElement& styles );
00139 void insertStyle( const QDomElement& style, bool styleAutoStyles );
00140 void importDataStyle( const QDomElement& parent );
00141 static bool saveOasisTimeFormat( KoXmlWriter &elementWriter, QString & format, QString & text, bool &antislash );
00142 static void parseOasisDateKlocale(KoXmlWriter &elementWriter, QString & format, QString & text );
00143 static bool saveOasisKlocaleTimeFormat( KoXmlWriter &elementWriter, QString & format, QString & text );
00144 static void parseOasisTimeKlocale(KoXmlWriter &elementWriter, QString & format, QString & text );
00145 static void addKofficeNumericStyleExtension( KoXmlWriter & elementWriter, const QString &_suffix, const QString &_prefix );
00146
00147 KoOasisStyles( const KoOasisStyles & );
00148 KoOasisStyles& operator=( const KoOasisStyles & );
00149
00150 private:
00151 QDict<QDomElement> m_styles;
00152 QDict<QDomElement> m_defaultStyle;
00153 QDomElement m_officeStyle;
00154
00155 QDict<QDomElement> m_masterPages;
00156 QDict<QDomElement> m_listStyles;
00157
00158 QDict<QDomElement> m_drawStyles;
00159 DataFormatsMap m_dataFormats;
00160
00161 class Private;
00162 Private * const d;
00163 };
00164
00165 #endif