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/kofficecore/KoOasisSettings.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/kofficecore/KoOasisSettings.h')
-rw-r--r-- | lib/kofficecore/KoOasisSettings.h | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/lib/kofficecore/KoOasisSettings.h b/lib/kofficecore/KoOasisSettings.h new file mode 100644 index 00000000..cd1ae112 --- /dev/null +++ b/lib/kofficecore/KoOasisSettings.h @@ -0,0 +1,179 @@ +/* This file is part of the KDE project + Copyright (C) 2004 Laurent Montel <montel@kde.org> + David Faure <faure@kde.org> + + 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 KOOASISSETTINGS_H +#define KOOASISSETTINGS_H + +#include <qdom.h> +#include <koffice_export.h> + +/** + * @brief Parse settings.xml file. + * + * This class helps parsing the settings.xml file of an OASIS document. + * + * For reference, the structure of settings.xml looks like: + * <pre> + * \<office:settings\> + * \<config:config-item-set config:name="configure-settings"\> + * .... + * \</config:config-item-set\> + * \<config:config-item-set config:name="view-settings"\> + * \<config:config-item-map-indexed config:name="Views"\> + * \<config:config-item-map-entry\> + * \<config:config-item config:name="SnapLinesDrawing" config:type="string"\>value\</config:config-item\> + * .... + * \<config:config-item-map-named config:name="Tables"\> + * \<config:config-item-map-entry config:name="Sheet1"\> + * \<config:config-item config:name="CursorPositionX"\> + * ...... + * \</config:config-item-map-entry\> + * \<config:config-item-map-entry config:name="Sheet2"\> + * .... + * \</config:config-item-map-entry\> + * \</config:config-item-map-named\> + * ..... + * \</config:config-item-map-entry\> + * \</config:config-item-map-indexed\> + * \<config:config-item-map-indexed config:name="Interface"\> + * ....... + * \</config:config-item-map-indexed\> + * \</config:config-item-set\> + * \</office:settings\> + * </pre> + * Basically, an item-set is a set of named \<config-item\>s and/or maps. + * There are two kinds of maps (by-index or by-name), and entries in the + * maps contain \<config-item\>s too, or nested maps. + * + * The API of KoOasisSettings allows the caller to look for a given item-set + * or item-map once, and then lookup multiple items inside it. + * It also allows "drilling down" inside the tree in case of nesting. + */ +class KOFFICECORE_EXPORT KoOasisSettings +{ +public: + /** + * Normal KoOasisSettings constructor, for an OASIS settings.xml + */ + explicit KoOasisSettings( const QDomDocument& doc ); + + /** + * KoOasisSettings constructor for an OpenOffice-1.1 file + */ + KoOasisSettings( const QDomDocument& doc, const char* officeNSURI, const char* configNSURI ); + + class Items; + + /** + * Returns the toplevel item-set named @p itemSetName. + * If not found, the returned items instance is null. + */ + Items itemSet( const QString& itemSetName ) const; + + class IndexedMap; + class NamedMap; + /// Represents a collection of items (config-item or maps). + class KOFFICECORE_EXPORT Items + { + friend class KoOasisSettings; + friend class IndexedMap; + friend class NamedMap; + Items( const QDomElement& elem, const KoOasisSettings* settings ) + : m_element( elem ), m_settings( settings ) {} + public: + bool isNull() const { return m_element.isNull(); } + + /** + * Look for the config-item-map-indexed named @p itemMapName and return it. + * + * An indexed map is an array (or sequence), i.e. items are supposed to + * be retrieved by index. This is useful for e.g. "view 0", "view 1" etc. + */ + IndexedMap indexedMap( const QString& itemMapName ) const; + + /** + * Look for the config-item-map-named named @p mapItemName and return it. + * + * A named map is a map where items are retrieved by entry name, @see selectItemMapEntry + * @return false if no such map was found + */ + NamedMap namedMap( const QString& itemMapName ) const; + + int parseConfigItemInt( const QString& configName, int defValue = 0 ) const; + double parseConfigItemDouble( const QString& configName, double defValue = 0 ) const; + QString parseConfigItemString( const QString& configName, const QString& defValue = QString::null ) const; + bool parseConfigItemBool( const QString& configName, bool defValue = false ) const; + short parseConfigItemShort( const QString& configName, short defValue = 0 ) const; + long parseConfigItemLong( const QString& configName, long defValue = 0 ) const; + private: + /// @internal + QString findConfigItem( const QString& item, bool* ok ) const; + /// @internal + QString findConfigItem( const QDomElement& element, const QString& item, bool* ok ) const; + + QDomElement m_element; + const KoOasisSettings* m_settings; + }; + + /// Internal base class for IndexedMap and NamedMap + class Map + { + public: + bool isNull() const { return m_element.isNull(); } + protected: + Map( const QDomElement& elem, const KoOasisSettings* settings ) + : m_element( elem ), m_settings( settings ) {} + const QDomElement m_element; + const KoOasisSettings* m_settings; + }; + + class KOFFICECORE_EXPORT IndexedMap : public Map + { + friend class Items; + IndexedMap( const QDomElement& elem, const KoOasisSettings* settings ) + : Map( elem, settings ) {} + public: + /// Returns an entry in an indexed map + Items entry( int entryIndex ) const; + }; + + class KOFFICECORE_EXPORT NamedMap : public Map + { + friend class Items; + NamedMap( const QDomElement& elem, const KoOasisSettings* settings ) + : Map( elem, settings ) {} + public: + /// Returns an entry in a named map + Items entry( const QString& entryName ) const; + }; + +private: + friend class Items; + friend class IndexedMap; + friend class NamedMap; + const QDomElement m_settingsElement; + const char* m_configNSURI; + + class Private; + Private* d; +}; + +#endif |