Commit ac135e41 authored by Boudewijn Rempt's avatar Boudewijn Rempt

Return KoStore to its rightful place, libs/store

Merged with libs/odf in 2010, it's now split up again.
parent cbc68a1e
......@@ -804,7 +804,9 @@ set(KUNDO2_INCLUDES ${CMAKE_SOURCE_DIR}/libs/kundo2)
# koodf is at the bottom of the stack
set(KOODF_INCLUDES ${CMAKE_SOURCE_DIR}/libs/odf
${CMAKE_SOURCE_DIR}/libs/store
${CMAKE_BINARY_DIR}/libs/odf
${CMAKE_BINARY_DIR}/libs/store
${KOVERSION_INCLUDES}
)
......
......@@ -13,6 +13,7 @@ if (SHOULD_BUILD_LIB_CALLIGRA)
add_subdirectory( koplugin )
add_subdirectory( widgetutils )
add_subdirectory( widgets )
add_subdirectory( store )
add_subdirectory( odf )
add_subdirectory( textlayout )
add_subdirectory( kotext )
......
......@@ -5,13 +5,8 @@ include_directories( ${KOODF_INCLUDES} )
########### libkoodf ###############
if( Qca-qt5_FOUND )
add_definitions( -DQCA2 )
endif()
set(koodf_LIB_SRCS
KoOdf.cpp
KoXmlNS.cpp
KoOdfManifestEntry.cpp
KoDocumentInfo.cpp
KoGenStyle.cpp
......@@ -36,15 +31,6 @@ set(koodf_LIB_SRCS
KoPageLayout.cpp
KoPageFormat.cpp
KoColumns.cpp
KoStore.cpp
KoTarStore.cpp
KoDirectoryStore.cpp
KoZipStore.cpp
KoLZF.cpp
KoXmlReader.cpp
KoXmlWriter.cpp
KoEncryptedStore.cpp
KoEncryptionChecker.cpp
KoUnit.cpp
KoOdfNotesConfiguration.cpp
KoOdfBibliographyConfiguration.cpp
......@@ -58,11 +44,8 @@ add_library(koodf SHARED ${koodf_LIB_SRCS})
add_dependencies(koodf writeodf.h-target)
generate_export_header(koodf BASE_NAME koodf)
target_link_libraries(koodf KF5::Archive KF5::Wallet KF5::KIOWidgets KF5::I18n KF5::KDELibs4Support Qt5::Xml)
target_link_libraries(koodf LINK_INTERFACE_LIBRARIES KF5::I18n KF5::KDELibs4Support Qt5::Xml)
if( Qca-qt5_FOUND )
target_link_libraries(koodf qca-qt5)
endif()
target_link_libraries(koodf kostore KF5::Archive KF5::Wallet KF5::KIOWidgets KF5::I18n Qt5::PrintSupport Qt5::Gui Qt5::Xml KF5::KDELibs4Support)
target_link_libraries(koodf LINK_INTERFACE_LIBRARIES kostore KF5::I18n Qt5::PrintSupport Qt5::Gui Qt5::Xml KF5::KDELibs4Support)
set_target_properties(koodf PROPERTIES
VERSION ${GENERIC_CALLIGRA_LIB_VERSION} SOVERSION ${GENERIC_CALLIGRA_LIB_SOVERSION}
......@@ -73,7 +56,6 @@ install(TARGETS koodf ${INSTALL_TARGETS_DEFAULT_ARGS} )
install( FILES
${CMAKE_CURRENT_BINARY_DIR}/koodf_export.h
KoOdf.h
KoXmlNS.h
KoOdfManifestEntry.h
KoGenStyle.h
KoGenStyles.h
......@@ -101,11 +83,6 @@ install( FILES
KoPageLayout.h
KoPageFormat.h
KoColumns.h
KoStore.h
KoStoreDevice.h
KoXmlReader.h
KoXmlWriter.h
KoXmlReaderForward.h
KoUnit.h
KoElementReference.h
KoTableTemplate.h
......
......@@ -31,7 +31,6 @@
#include <kconfig.h>
#include <kconfiggroup.h>
#include <kdebug.h>
#include <kglobal.h>
#include <klocalizedstring.h>
#include <kuser.h>
#include <kemailsettings.h>
......
......@@ -27,7 +27,6 @@
#include <QDateTime>
#include <QTime>
#include <kglobal.h>
#include <klocalizedstring.h>
#include <kdebug.h>
......
......@@ -24,7 +24,7 @@
#include <klocalizedstring.h>
#include <kdebug.h>
#include <kglobal.h>
// paper formats ( mm )
#define PG_A3_WIDTH 297.0
#define PG_A3_HEIGHT 420.0
......
......@@ -26,7 +26,6 @@
#include <QTransform>
#include <klocalizedstring.h>
#include <kglobal.h>
#include <kdebug.h>
// ensure the same order as in KoUnit::Unit
......
......@@ -3,33 +3,21 @@ include_directories( ${KOODF_INCLUDES} )
########### next target ###############
set(lzftest_SRCS ../KoLZF.cpp TestKoLZF.cpp )
kde4_add_unit_test(TestKoLZF TESTNAME libs-odf-TestKoLZF ${lzftest_SRCS})
target_link_libraries(TestKoLZF Qt5::Test)
########### next target ###############
set(xmlvectortest_SRCS ../KoLZF.cpp TestKoXmlVector.cpp )
kde4_add_unit_test(TestKoXmlVector TESTNAME libs-odf-TestKoXmlVector ${xmlvectortest_SRCS})
target_link_libraries(TestKoXmlVector Qt5::Test)
########### next target ###############
set(TestKoGenStyles_SRCS TestKoGenStyles.cpp )
kde4_add_unit_test(TestKoGenStyles TESTNAME libs-odf-TestKoGenStyles ${TestKoGenStyles_SRCS})
target_link_libraries(TestKoGenStyles koodf KF5::I18n KF5::KDELibs4Support Qt5::Test)
target_link_libraries(TestKoGenStyles koodf KF5::I18n Qt5::Test)
########### next target ###############
set(TestOdfSettings_SRCS TestOdfSettings.cpp )
kde4_add_unit_test(TestOdfSettings TESTNAME libs-odf-TestOdfSettings ${TestOdfSettings_SRCS})
target_link_libraries(TestOdfSettings koodf KF5::I18n KF5::KDELibs4Support Qt5::Test)
target_link_libraries(TestOdfSettings koodf KF5::I18n Qt5::Test)
########### next target ###############
set(TestKoOdfLoadingContext_SRCS TestKoOdfLoadingContext.cpp )
kde4_add_unit_test(TestKoOdfLoadingContext TESTNAME libs-odf-TestKoOdfLoadingContext ${TestKoOdfLoadingContext_SRCS})
target_link_libraries(TestKoOdfLoadingContext koodf KF5::I18n KF5::KDELibs4Support Qt5::Test)
target_link_libraries(TestKoOdfLoadingContext koodf KF5::I18n Qt5::Test)
########### next target ###############
......@@ -57,7 +45,7 @@ set(storedroptest_SRCS storedroptest.cpp )
kde4_add_executable(storedroptest TEST ${storedroptest_SRCS})
target_link_libraries(storedroptest koodf KF5::I18n KF5::KDELibs4Support Qt5::Widgets)
target_link_libraries(storedroptest koodf KF5::I18n Qt5::Widgets)
########### next target ###############
......@@ -71,7 +59,7 @@ target_link_libraries(kodomtest koodf Qt5::Test )
set(storageTest_SRCS TestStorage.cpp )
kde4_add_unit_test(TestStorage TESTNAME libs-store-storage ${storageTest_SRCS})
target_link_libraries(TestStorage koodf KF5::I18n KF5::KDELibs4Support Qt5::Test)
target_link_libraries(TestStorage koodf KF5::I18n Qt5::Test)
########### next target ###############
......
......@@ -22,6 +22,8 @@
#include "writeodf/writeodfconfig.h"
#include "writeodf/writeodftext.h"
#include "koodf_export.h"
namespace writeodf {
template <class T>
......
include_directories({KOVERSION_INCLUDES})
add_subdirectory(tests)
########### libkostore ###############
if( Qca-qt5_FOUND )
add_definitions( -DQCA2 )
endif()
set(kostore_LIB_SRCS
KoDirectoryStore.cpp
KoEncryptedStore.cpp
KoEncryptionChecker.cpp
KoLZF.cpp
KoStore.cpp
KoTarStore.cpp
KoXmlNS.cpp
KoXmlReader.cpp
KoXmlWriter.cpp
KoZipStore.cpp
)
add_library(kostore SHARED ${kostore_LIB_SRCS})
generate_export_header(kostore BASE_NAME kostore)
target_link_libraries(kostore KF5::Archive KF5::Wallet KF5::KIOWidgets KF5::I18n KF5::KDELibs4Support)
target_link_libraries(kostore LINK_INTERFACE_LIBRARIES KF5::I18n Qt5::PrintSupport Qt5::Gui Qt5::Xml)
if( Qca-qt5_FOUND )
target_link_libraries(kostore qca-qt5)
endif()
set_target_properties(kostore PROPERTIES
VERSION ${GENERIC_CALLIGRA_LIB_VERSION} SOVERSION ${GENERIC_CALLIGRA_LIB_SOVERSION}
)
install(TARGETS kostore ${INSTALL_TARGETS_DEFAULT_ARGS} )
install( FILES
${CMAKE_CURRENT_BINARY_DIR}/kostore_export.h
KoStore.h
DESTINATION ${INCLUDE_INSTALL_DIR}/calligra COMPONENT Devel)
/* This file is part of the KDE project
* Copyright (C) 2009 Boudewijn Rempt <boud@valdyas.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 "KoEncryptionChecker.h"
#ifdef QCA2
// QCA headers have "slots" and "signals", which QT_NO_SIGNALS_SLOTS_KEYWORDS does not like
#define slots Q_SLOTS
#define signals Q_SIGNALS
#include <QtCrypto>
#undef slots
#undef signals
#include <kdebug.h>
bool KoEncryptionChecker::isEncryptionSupported()
{
QCA::Initializer* initializer = new QCA::Initializer();
bool supported = QCA::isSupported("sha1") && QCA::isSupported("pbkdf2(sha1)") && QCA::isSupported("blowfish-cfb");
if (!supported) {
kWarning(30002) << "QCA is enabled but sha1, pbkdf2(sha1) or blowfish-cfb are not supported. Encryption is disabled.";
}
delete initializer;
return supported;
}
#else
bool KoEncryptionChecker::isEncryptionSupported()
{
return false;
}
#endif
/* This file is part of the KDE project
* Copyright (C) 2009 Boudewijn Rempt
*
* 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 KO_ENCRYPTION_CHECKER
#define KO_ENCRYPTION_CHECKER
#include "kostore_export.h"
namespace KoEncryptionChecker
{
KOSTORE_EXPORT bool isEncryptionSupported();
}
#endif
......@@ -23,7 +23,7 @@
#include <QByteArray>
#include <QIODevice>
#include "koodf_export.h"
#include "kostore_export.h"
class QWidget;
class QUrl;
......@@ -35,7 +35,7 @@ class KoStorePrivate;
* We call a "store" the file on the hard disk (the one the users sees)
* and call a "file" a file inside the store.
*/
class KOODF_EXPORT KoStore
class KOSTORE_EXPORT KoStore
{
public:
......
......@@ -22,14 +22,14 @@
#include <QString>
#include "koodf_export.h"
#include "kostore_export.h"
/**
* Repository of XML namespaces used for ODF documents.
*
* Please make sure that you do not use the variables provided by this class in
* the destructor of a static object.
*/
class KOODF_EXPORT KoXmlNS
class KOSTORE_EXPORT KoXmlNS
{
public:
static const QString office;
......
......@@ -23,7 +23,7 @@
// KOXML_USE_QDOM is defined there
#include "KoXmlReaderForward.h"
#include "koodf_export.h"
#include "kostore_export.h"
#include <QPair>
#include <QtXml>
......@@ -77,7 +77,7 @@ enum KoXmlNamedItemType {
*
* @author Ariya Hidayat <ariya@kde.org>
*/
class KOODF_EXPORT KoXmlNode
class KOSTORE_EXPORT KoXmlNode
{
public:
......@@ -171,7 +171,7 @@ protected:
* @author Ariya Hidayat <ariya@kde.org>
*/
class KOODF_EXPORT KoXmlElement: public KoXmlNode
class KOSTORE_EXPORT KoXmlElement: public KoXmlNode
{
public:
KoXmlElement();
......@@ -201,7 +201,7 @@ private:
* KoXmlText represents a text in a DOM tree.
* @author Ariya Hidayat <ariya@kde.org>
*/
class KOODF_EXPORT KoXmlText: public KoXmlNode
class KOSTORE_EXPORT KoXmlText: public KoXmlNode
{
public:
KoXmlText();
......@@ -223,7 +223,7 @@ private:
* KoXmlCDATASection represents a CDATA section in a DOM tree.
* @author Ariya Hidayat <ariya@kde.org>
*/
class KOODF_EXPORT KoXmlCDATASection: public KoXmlText
class KOSTORE_EXPORT KoXmlCDATASection: public KoXmlText
{
public:
KoXmlCDATASection();
......@@ -247,7 +247,7 @@ private:
* @author Ariya Hidayat <ariya@kde.org>
*/
class KOODF_EXPORT KoXmlDocumentType: public KoXmlNode
class KOSTORE_EXPORT KoXmlDocumentType: public KoXmlNode
{
public:
KoXmlDocumentType();
......@@ -277,7 +277,7 @@ private:
* @author Ariya Hidayat <ariya@kde.org>
*/
class KOODF_EXPORT KoXmlDocument: public KoXmlNode
class KOSTORE_EXPORT KoXmlDocument: public KoXmlNode
{
public:
explicit KoXmlDocument(bool stripSpaces = false);
......@@ -360,7 +360,7 @@ namespace KoXml
*
* Note: do *NOT* use getElementsByTagNameNS, it's recursive!
*/
KOODF_EXPORT KoXmlElement namedItemNS(const KoXmlNode& node,
KOSTORE_EXPORT KoXmlElement namedItemNS(const KoXmlNode& node,
const QString& nsURI, const QString& localName);
/**
......@@ -374,7 +374,7 @@ KOODF_EXPORT KoXmlElement namedItemNS(const KoXmlNode& node,
* give fast access to certain sections of the document using
* the office-text-content-prelude condition as @a KoXmlNamedItemType .
*/
KOODF_EXPORT KoXmlElement namedItemNS(const KoXmlNode& node,
KOSTORE_EXPORT KoXmlElement namedItemNS(const KoXmlNode& node,
const QString& nsURI, const QString& localName,
KoXmlNamedItemType type);
......@@ -382,23 +382,23 @@ KOODF_EXPORT KoXmlElement namedItemNS(const KoXmlNode& node,
* Explicitly load child nodes of specified node, up to given depth.
* This function has no effect if QDom is used.
*/
KOODF_EXPORT void load(KoXmlNode& node, int depth = 1);
KOSTORE_EXPORT void load(KoXmlNode& node, int depth = 1);
/**
* Unload child nodes of specified node.
* This function has no effect if QDom is used.
*/
KOODF_EXPORT void unload(KoXmlNode& node);
KOSTORE_EXPORT void unload(KoXmlNode& node);
/**
* Get the number of child nodes of specified node.
*/
KOODF_EXPORT int childNodesCount(const KoXmlNode& node);
KOSTORE_EXPORT int childNodesCount(const KoXmlNode& node);
/**
* Return the name of all attributes of specified node.
*/
KOODF_EXPORT QStringList attributeNames(const KoXmlNode& node);
KOSTORE_EXPORT QStringList attributeNames(const KoXmlNode& node);
/**
* Convert KoXmlNode classes to the corresponding QDom classes, which has
......@@ -411,7 +411,7 @@ KOODF_EXPORT QStringList attributeNames(const KoXmlNode& node);
*
* @see asQDomDocument, asQDomElement
*/
KOODF_EXPORT void asQDomNode(QDomDocument& ownerDoc, const KoXmlNode& node);
KOSTORE_EXPORT void asQDomNode(QDomDocument& ownerDoc, const KoXmlNode& node);
/**
* Convert KoXmlNode classes to the corresponding QDom classes, which has
......@@ -421,13 +421,13 @@ KOODF_EXPORT void asQDomNode(QDomDocument& ownerDoc, const KoXmlNode& node);
* NOTE: If ownerDoc is not empty, this may fail, @see QDomDocument
*
*/
KOODF_EXPORT void asQDomElement(QDomDocument& ownerDoc, const KoXmlElement& element);
KOSTORE_EXPORT void asQDomElement(QDomDocument& ownerDoc, const KoXmlElement& element);
/**
* Converts the whole @p document into a QDomDocument
* If KOXML_USE_QDOM is defined, just returns @p document
*/
KOODF_EXPORT QDomDocument asQDomDocument(const KoXmlDocument& document);
KOSTORE_EXPORT QDomDocument asQDomDocument(const KoXmlDocument& document);
/*
* Load an XML document from specified device to a document. You can of
......@@ -438,7 +438,7 @@ KOODF_EXPORT QDomDocument asQDomDocument(const KoXmlDocument& document);
*
* Note: it is assumed that the XML uses UTF-8 encoding.
*/
KOODF_EXPORT bool setDocument(KoXmlDocument& doc, QIODevice* device,
KOSTORE_EXPORT bool setDocument(KoXmlDocument& doc, QIODevice* device,
bool namespaceProcessing, QString* errorMsg = 0,
int* errorLine = 0, int* errorColumn = 0);
}
......
......@@ -24,7 +24,7 @@
#include <QMap>
#include <QIODevice>
#include "koodf_export.h"
#include "kostore_export.h"
/**
* A class for writing out XML (to any QIODevice), with a special attention on performance.
......@@ -32,7 +32,7 @@
* document in memory (like QDom does), and avoids using QTextStream at all
* (which in Qt3 has major performance issues when converting to utf8).
*/
class KOODF_EXPORT KoXmlWriter
class KOSTORE_EXPORT KoXmlWriter
{
public:
/**
......
/**
* \mainpage
*
* KoStore is a library which contains a wrapper around karchive
*/
// DOXYGEN_SET_PROJECT_NAME = KoStore
// DOXYGEN_SET_IGNORE_PREFIX = Ko K
set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} )
include_directories( ${KOODF_INCLUDES} )
########### next target ###############
set(lzftest_SRCS ../KoLZF.cpp TestKoLZF.cpp )
kde4_add_unit_test(TestKoLZF TESTNAME libs-odf-TestKoLZF ${lzftest_SRCS})
target_link_libraries(TestKoLZF Qt5::Test)
########### next target ###############
set(xmlvectortest_SRCS ../KoLZF.cpp TestKoXmlVector.cpp )
kde4_add_unit_test(TestKoXmlVector TESTNAME libs-odf-TestKoXmlVector ${xmlvectortest_SRCS})
target_link_libraries(TestKoXmlVector Qt5::Test)
/* This file is part of the KDE project
* Copyright 2015 Friedrich W. H. Kossebau <kossebau@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 "TestKoXmlVector.h"
#include <KoXmlVector.h>
#include <QTest>
#include <QDebug>
enum TestEnum
{
FirstType = 0,
SecondType = 1,
ThirdType = 2,
FourthType = 3,
FifthType = 4
};
class TestStruct
{
public:
bool attr: 1;
TestEnum type: 3;
unsigned int number: 28;
QString string;
};
Q_DECLARE_TYPEINFO(TestStruct, Q_MOVABLE_TYPE);
static QDataStream& operator<<(QDataStream& s, const TestStruct& item)
{
quint8 flag = item.attr ? 1 : 0;
s << flag;
s << (quint8) item.type;
s << item.number;
s << item.string;
return s;
}
static QDataStream& operator>>(QDataStream& s, TestStruct& item)
{
quint8 flag;
quint8 type;
int number;
QString string;
s >> flag;
s >> type;
s >> number;
s >> string;
item.attr = (flag != 0);
item.type = (TestEnum) type;
item.number = number;
item.string = string;
return s;
}
void TestKoXmlVector::simpleConstructor()
{
KoXmlVector<TestStruct> vector;
QCOMPARE(vector.count(), 0);
QCOMPARE(vector.size(), 0);
QCOMPARE(vector.isEmpty(), true);
}
static const int writeAndReadUncompressedCount = 5;
void TestKoXmlVector::writeAndRead_data()
{
QTest::addColumn<unsigned int>("itemCount");
for(unsigned int i = 0; i < writeAndReadUncompressedCount*3+1; ++i) {
QTest::newRow(QByteArray::number(i)) << i;
}
}
void TestKoXmlVector::writeAndRead()
{
QFETCH(unsigned int, itemCount);
KoXmlVector<TestStruct, writeAndReadUncompressedCount+1> vector;
// add 3x items than what would not be compressed
for (unsigned int i = 0; i < itemCount; ++i) {
// test adding
TestStruct &item = vector.newItem();
const bool attr = (i % 2) == 0;
const TestEnum type = (TestEnum)(i % 5);
const unsigned int number = i;
const QString string = QString::number(i);
item.attr = attr;
item.type = type;
item.number = number;
item.string = string;
QCOMPARE(vector.count(), (signed)i+1);
QCOMPARE(vector.size(), (signed)i+1);
QCOMPARE(vector.isEmpty(), false);
}
vector.squeeze();
// now check all in a row again, so including all the uncompressed
for (unsigned int i = 0; i < itemCount; ++i) {
const bool attr = (i % 2) == 0;
const TestEnum type = (TestEnum)(i % 5);
const unsigned int number = i;
const QString string = QString::number(i);
const TestStruct &readItem = vector[i];
QCOMPARE(readItem.attr, attr);
QCOMPARE(readItem.type, type);
QCOMPARE(readItem.number, number);
QCOMPARE(readItem.string, string);
}
// and backwards
for (unsigned int ri = itemCount; ri > 0; --ri) {
const unsigned int i = ri-1;
const bool attr = (i % 2) == 0;
const TestEnum type = (TestEnum)(i % 5);
const unsigned int number = i;
const QString string = QString::number(i);
const TestStruct &readItem = vector[i];
QCOMPARE(readItem.attr, attr);
QCOMPARE(readItem.type, type);
QCOMPARE(readItem.number, number);
QCOMPARE(readItem.string, string);
}
}
QTEST_GUILESS_MAIN(TestKoXmlVector)
/* This file is part of the KDE project
* Copyright 2015 Friedrich W. H. Kossebau <kossebau@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 TESTKOXMLVECTOR_H
#define TESTKOXMLVECTOR_H
// Qt
#include <QObject>
class TestKoXmlVector : public QObject
{
Q_OBJECT