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 };
00101
00102 typedef QMap<QString, NumericStyleFormat> DataFormatsMap;
00105 const DataFormatsMap& dataFormats() const { return m_dataFormats; }
00106
00107 static QString saveOasisDateStyle( KoGenStyles &mainStyles, const QString & _format, bool klocaleFormat );
00108 static QString saveOasisTimeStyle( KoGenStyles &mainStyles, const QString & _format, bool klocaleFormat );
00109 static QString saveOasisFractionStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00110 static QString saveOasisScientificStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00111 static QString saveOasisPercentageStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00112 static QString saveOasisCurrencyStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00113 static QString saveOasisTextStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00114
00115 static void saveOasisFillStyle( KoGenStyle &styleFill, KoGenStyles& mainStyles, const QBrush & brush );
00116 static QString saveOasisHatchStyle( KoGenStyles& mainStyles, const QBrush &brush );
00117
00118 static QBrush loadOasisFillStyle( const KoStyleStack &styleStack, const QString & fill, const KoOasisStyles & oasisStyles );
00119
00120 private:
00122 void insertStyles( const QDomElement& styles, bool styleAutoStyles = false );
00123
00124 private:
00125 void insertOfficeStyles( const QDomElement& styles );
00126 void insertStyle( const QDomElement& style, bool styleAutoStyles );
00127 void importDataStyle( const QDomElement& parent );
00128 static bool saveOasisTimeFormat( KoXmlWriter &elementWriter, QString & format, QString & text, bool &antislash );
00129 static void parseOasisDateKlocale(KoXmlWriter &elementWriter, QString & format, QString & text );
00130 static bool saveOasisKlocaleTimeFormat( KoXmlWriter &elementWriter, QString & format, QString & text );
00131 static void parseOasisTimeKlocale(KoXmlWriter &elementWriter, QString & format, QString & text );
00132 static void addKofficeNumericStyleExtension( KoXmlWriter & elementWriter, const QString &_suffix, const QString &_prefix );
00133
00134 KoOasisStyles( const KoOasisStyles & );
00135 KoOasisStyles& operator=( const KoOasisStyles & );
00136
00137 private:
00138 QDict<QDomElement> m_styles;
00139 QDict<QDomElement> m_defaultStyle;
00140 QDomElement m_officeStyle;
00141
00142 QDict<QDomElement> m_masterPages;
00143 QDict<QDomElement> m_listStyles;
00144
00145 QDict<QDomElement> m_drawStyles;
00146 DataFormatsMap m_dataFormats;
00147
00148 class Private;
00149 Private * const d;
00150 };
00151
00152 #endif