summaryrefslogtreecommitdiffstats
path: root/lib/kofficecore/KoOasisSettings.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /lib/kofficecore/KoOasisSettings.cpp
downloadkoffice-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.cpp')
-rw-r--r--lib/kofficecore/KoOasisSettings.cpp224
1 files changed, 224 insertions, 0 deletions
diff --git a/lib/kofficecore/KoOasisSettings.cpp b/lib/kofficecore/KoOasisSettings.cpp
new file mode 100644
index 00000000..99f63524
--- /dev/null
+++ b/lib/kofficecore/KoOasisSettings.cpp
@@ -0,0 +1,224 @@
+/* This file is part of the KDE project
+ Copyright (C) 2004 Laurent Montel <montel@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.
+*/
+
+#include "KoOasisSettings.h"
+#include "KoXmlNS.h"
+#include "KoDom.h"
+#include <kdebug.h>
+
+KoOasisSettings::KoOasisSettings( const QDomDocument& doc )
+ : m_settingsElement( KoDom::namedItemNS( doc.documentElement(), KoXmlNS::office, "settings" ) ),
+ m_configNSURI( KoXmlNS::config )
+{
+ const QDomElement contents = doc.documentElement();
+ if ( m_settingsElement.isNull() )
+ kdDebug() << " document doesn't have tag 'office:settings'\n";
+}
+
+KoOasisSettings::KoOasisSettings( const QDomDocument& doc, const char* officeNSURI, const char* configNSURI )
+ : m_settingsElement( KoDom::namedItemNS( doc.documentElement(), officeNSURI, "settings" ) ),
+ m_configNSURI( configNSURI )
+{
+ const QDomElement contents = doc.documentElement();
+ if ( m_settingsElement.isNull() )
+ kdDebug() << " document doesn't have tag 'office:settings'\n";
+}
+
+KoOasisSettings::Items KoOasisSettings::itemSet( const QString& itemSetName ) const
+{
+ QDomElement e;
+ forEachElement( e, m_settingsElement )
+ {
+ if ( e.localName() == "config-item-set" &&
+ e.namespaceURI() == m_configNSURI &&
+ e.attributeNS( m_configNSURI, "name", QString::null ) == itemSetName )
+ {
+ return Items( e, this );
+ }
+ }
+
+ return Items( QDomElement(), this );
+}
+
+KoOasisSettings::IndexedMap KoOasisSettings::Items::indexedMap( const QString& itemMapName ) const
+{
+ QDomElement configItem;
+ forEachElement( configItem, m_element )
+ {
+ if ( configItem.localName() == "config-item-map-indexed" &&
+ configItem.namespaceURI() == m_settings->m_configNSURI &&
+ configItem.attributeNS( m_settings->m_configNSURI, "name", QString::null ) == itemMapName )
+ {
+ return IndexedMap( configItem, m_settings );
+ }
+ }
+ return IndexedMap( QDomElement(), m_settings );
+}
+
+KoOasisSettings::NamedMap KoOasisSettings::Items::namedMap( const QString& itemMapName ) const
+{
+ QDomElement configItem;
+ forEachElement( configItem, m_element )
+ {
+ if ( configItem.localName() == "config-item-map-named" &&
+ configItem.namespaceURI() == m_settings->m_configNSURI &&
+ configItem.attributeNS( m_settings->m_configNSURI, "name", QString::null ) == itemMapName )
+ {
+ return NamedMap( configItem, m_settings );
+ }
+ }
+ return NamedMap( QDomElement(), m_settings );
+}
+
+KoOasisSettings::Items KoOasisSettings::IndexedMap::entry( int entryIndex ) const
+{
+ int i = 0;
+ QDomElement entry;
+ forEachElement( entry, m_element )
+ {
+ if ( entry.localName() == "config-item-map-entry" &&
+ entry.namespaceURI() == m_settings->m_configNSURI )
+ {
+ if ( i == entryIndex )
+ return Items( entry, m_settings );
+ else
+ ++i;
+ }
+ }
+ return Items( QDomElement(), m_settings );
+}
+
+KoOasisSettings::Items KoOasisSettings::NamedMap::entry( const QString& entryName ) const
+{
+ QDomElement entry;
+ forEachElement( entry, m_element )
+ {
+ if ( entry.localName() == "config-item-map-entry" &&
+ entry.namespaceURI() == m_settings->m_configNSURI &&
+ entry.attributeNS( m_settings->m_configNSURI, "name", QString::null ) == entryName )
+ {
+ return Items( entry, m_settings );
+ }
+ }
+ return Items( QDomElement(), m_settings );
+}
+
+// helper method
+QString KoOasisSettings::Items::findConfigItem( const QDomElement& element,
+ const QString& item, bool* ok ) const
+{
+ QDomElement it;
+ forEachElement( it, element )
+ {
+ if ( it.localName() == "config-item" &&
+ it.namespaceURI() == m_settings->m_configNSURI &&
+ it.attributeNS( m_settings->m_configNSURI, "name", QString::null ) == item )
+ {
+ *ok = true;
+ return it.text();
+ }
+ }
+ *ok = false;
+ return QString::null;
+}
+
+
+QString KoOasisSettings::Items::findConfigItem( const QString& item, bool* ok ) const
+{
+ return findConfigItem( m_element, item, ok );
+}
+
+#if 0 // does anyone need this one? passing a default value does the job, too
+bool KoOasisSettings::Items::hasConfigItem( const QString& configName ) const
+{
+ bool ok;
+ (void)findConfigItem( configName, &ok );
+ return ok;
+}
+#endif
+
+QString KoOasisSettings::Items::parseConfigItemString( const QString& configName, const QString& defValue ) const
+{
+ bool ok;
+ const QString str = findConfigItem( configName, &ok );
+ return ok ? str : defValue;
+}
+
+int KoOasisSettings::Items::parseConfigItemInt( const QString& configName, int defValue ) const
+{
+ bool ok;
+ const QString str = findConfigItem( configName, &ok );
+ int value;
+ if ( ok ) {
+ value = str.toInt( &ok );
+ if ( ok )
+ return value;
+ }
+ return defValue;
+}
+
+double KoOasisSettings::Items::parseConfigItemDouble( const QString& configName, double defValue ) const
+{
+ bool ok;
+ const QString str = findConfigItem( configName, &ok );
+ double value;
+ if ( ok ) {
+ value = str.toDouble( &ok );
+ if ( ok )
+ return value;
+ }
+ return defValue;
+}
+
+bool KoOasisSettings::Items::parseConfigItemBool( const QString& configName, bool defValue ) const
+{
+ bool ok;
+ const QString str = findConfigItem( configName, &ok );
+ if ( str == "true" )
+ return true;
+ else if ( str == "false" )
+ return false;
+ return defValue;
+}
+
+short KoOasisSettings::Items::parseConfigItemShort( const QString& configName, short defValue ) const
+{
+ bool ok;
+ const QString str = findConfigItem( configName, &ok );
+ short value;
+ if ( ok ) {
+ value = str.toShort( &ok );
+ if ( ok )
+ return value;
+ }
+ return defValue;
+}
+
+long KoOasisSettings::Items::parseConfigItemLong( const QString& configName, long defValue ) const
+{
+ bool ok;
+ const QString str = findConfigItem( configName, &ok );
+ long value;
+ if ( ok ) {
+ value = str.toLong( &ok );
+ if ( ok )
+ return value;
+ }
+ return defValue;
+}