##// END OF EJS Templates
New Plugin Manager and interface to remove all the previous crap!...
New Plugin Manager and interface to remove all the previous crap! Let's use Qt plugin API and make it much simpler.

File last commit:

r66:a991e131f5a8 default
r118:de85e8465e67 tip 1.0
Show More
xmldriver.cpp
105 lines | 2.6 KiB | text/x-c | CppLexer
#include "xmldriver.h"
#include <socexplorerengine.h>
#include <QFile>
#include <QDebug>
XMLDriver::XMLDriver(QObject *parent) :
QObject(parent)
{
this->xmlFiles = new QList<xmlfile*>();
this->scanXmlFiles();
}
int XMLDriver::checkXmlFile(const QString &fileName)
{
QDomDocument document;
QFile file( fileName );
if( !file.open( QIODevice::ReadOnly ) )
return 0;
document.setContent(&file);
if(document.isNull())
return 0;
file.close();
return 1;
}
int XMLDriver::createXmlFile(const QString &fileName)
{
QDomDocument* xmlDoc=new QDomDocument();
QDomProcessingInstruction header = xmlDoc->createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"utf-8\"" );
xmlDoc->appendChild( header );
QDomElement rootnode= xmlDoc->createElement("socExplorerXml");
rootnode.setAttribute("name",fileName);
xmlDoc->appendChild(rootnode);
QFile file( fileName );
if(!file.exists())
{
if( !file.open( QIODevice::WriteOnly ) )
return 0;
QTextStream ts( &file );
ts << xmlDoc->toString();
file.close();
return 1;
}
return 0;
}
QList<xmlfile *> XMLDriver::getFileList(const QString &tagNameFilter)
{
QList<xmlfile*> list;
for(int i=0;i<xmlFiles->count();i++)
{
if(xmlFiles->at(i)->rootTagName()==tagNameFilter)
{
list.append(xmlFiles->at(i));
}
}
return list;
}
QList<QDomNodeList> XMLDriver::getAllNodes(const QString &tagName)
{
QList<QDomNodeList> list;
for(int i=0;i<xmlFiles->count();i++)
{
QDomNodeList nodes=xmlFiles->at(i)->getRootElement()->elementsByTagName(tagName);
if(!nodes.isEmpty())
{
list.append(nodes);
}
}
return list;
}
void XMLDriver::registerXmlFile(const QString &fileName)
{
for(int i=0;i<xmlFiles->count();i++)
{
if(xmlFiles->at(i)->fileName()==fileName)
{
return;
}
}
xmlFiles->append(new xmlfile(fileName));
}
void XMLDriver::scanXmlFiles()
{
QDir shareDir(SocExplorerEngine::sharePath());
QFileInfoList list = shareDir.entryInfoList();
for (int i = 0; i < list.size(); ++i)
{
QFileInfo fileInfo = list.at(i);
if(fileInfo.isFile())
{
if(fileInfo.fileName().contains(".xml") && !fileInfo.fileName().contains(".xml~"))
{
qDebug()<<"Found " + fileInfo.fileName();
if(checkXmlFile(fileInfo.absoluteFilePath()))
{
registerXmlFile(fileInfo.absoluteFilePath());
}
}
}
}
}