本文整理汇总了C++中QDomNode::isNull方法的典型用法代码示例。如果您正苦于以下问题:C++ QDomNode::isNull方法的具体用法?C++ QDomNode::isNull怎么用?C++ QDomNode::isNull使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QDomNode
的用法示例。
在下文中一共展示了QDomNode::isNull方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: convertProfile
bool ConfigBase::convertProfile( const QString &profile ) {
if ( profile.isNull() || profile.isEmpty() ) {
return false;
}
QFile xml( profile );
if ( !xml.exists() ) {
return false;
}
xml.open( QIODevice::ReadOnly );
QDomDocument doc;
doc.setContent( &xml );
xml.close();
QDomNode node = doc.documentElement().firstChild();
QString dosboxBinary, dosboxVersion;
#ifdef Q_OS_UNIX
dosboxBinary = searchDosboxBinary();
dosboxVersion = "0.72";
#endif
QStringList gameProfiles;
bool winHide = true;
bool keyMapper = false;
while ( !node.isNull() ) {
qApp->processEvents();
if ( node.toElement().tagName() == "software_info" ) {
// iterate over section node
QDomNode sectionNode = node;
while ( !sectionNode.isNull() ) {
qApp->processEvents();
// iterate over setting node
QDomNode settingNode = sectionNode.firstChild();
while ( !settingNode.isNull() ) {
qApp->processEvents();
QString name = settingNode.toElement().attribute( "name" );
if ( name == "binary" ) {
dosboxBinary = settingNode.toElement().text();
} else if ( name == "version" ) {
dosboxVersion = settingNode.toElement().text();
} else if ( name == "winHide" ) {
winHide = settingNode.toElement().text() == "false" || settingNode.toElement().text().isEmpty() || settingNode.toElement().text().isNull() ? false : true;
} else if ( name == "keyMapper" ) {
keyMapper = settingNode.toElement().text() == "false" || settingNode.toElement().text().isEmpty() || settingNode.toElement().text().isNull() ? false : true;
} else if ( settingNode.hasChildNodes() ) {
// iterate over setting child nodes
QDomNode settingChildNode = settingNode.firstChild();
while ( !settingChildNode.isNull() ) {
qApp->processEvents();
if ( settingChildNode.toElement().tagName() == "value" ) {
gameProfiles.append( settingChildNode.toElement().text() );
}
settingChildNode = settingChildNode.nextSibling();
}
}
settingNode = settingNode.nextSibling();
}
sectionNode = sectionNode.nextSibling();
}
}
node = node.nextSibling();
}
xmlPreferences().setString( "binary", dosboxBinary, "DOSBox" );
xmlPreferences().setString( "version", dosboxVersion, "DOSBox" );
if ( gameProfiles.isEmpty() || gameProfiles.size() <= 0 ) {
gameProfiles = readProfiles();
}
//.........这里部分代码省略.........
示例2: createMapLayer
QgsMapLayer* QgsRemoteOWSBuilder::createMapLayer(
const QDomElement& elem,
const QString& layerName,
QList<QTemporaryFile*>& filesToRemove,
QList<QgsMapLayer*>& layersToRemove, bool allowCaching ) const
{
if ( elem.isNull() )
{
return nullptr;
}
//parse service element
QDomNode serviceNode = elem.namedItem( QStringLiteral( "Service" ) );
if ( serviceNode.isNull() )
{
QgsDebugMsg( "No <Service> node found, returning 0" );
return nullptr; //service node is necessary
}
//parse OnlineResource element
QDomNode onlineResourceNode = elem.namedItem( QStringLiteral( "OnlineResource" ) );
if ( onlineResourceNode.isNull() )
{
QgsDebugMsg( "No <OnlineResource> element, returning 0" );
return nullptr;
}
//get uri
QDomElement onlineResourceElement = onlineResourceNode.toElement();
QString url = onlineResourceElement.attribute( QStringLiteral( "href" ) );
QgsMapLayer* result = nullptr;
QString serviceName = serviceNode.toElement().text();
//append missing ? or & at the end of the url, but only for WFS and WMS
if ( serviceName == QLatin1String( "WFS" ) || serviceName == QLatin1String( "WMS" ) )
{
if ( !url.endsWith( QLatin1String( "?" ) ) && !url.endsWith( QLatin1String( "&" ) ) )
{
if ( url.contains( QLatin1String( "?" ) ) )
{
url.append( "&" );
}
else
{
url.append( "?" );
}
}
}
if ( serviceName == QLatin1String( "WFS" ) )
{
//support for old format where type is explicitly given and not part of url
QString tname = onlineResourceElement.attribute( QStringLiteral( "type" ) );
if ( !tname.isEmpty() )
{
url.append( "SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=" + tname );
}
if ( allowCaching )
{
result = QgsMSLayerCache::instance()->searchLayer( url, layerName );
}
if ( result )
{
return result;
}
result = new QgsVectorLayer( url, layerNameFromUri( url ), QStringLiteral( "WFS" ) );
if ( result->isValid() )
{
if ( allowCaching )
{
QgsMSLayerCache::instance()->insertLayer( url, layerName, result );
}
else
{
layersToRemove.push_back( result );
}
}
}
else if ( serviceName == QLatin1String( "WMS" ) )
{
result = wmsLayerFromUrl( url, layerName, layersToRemove, allowCaching );
}
else if ( serviceName == QLatin1String( "WCS" ) )
{
QgsDebugMsg( "Trying to get WCS layer" );
result = wcsLayerFromUrl( url, layerName, filesToRemove, layersToRemove );
}
else if ( serviceName == QLatin1String( "SOS" ) )
{
result = sosLayer( elem, url, layerName, layersToRemove, allowCaching );
}
if ( !result || !result->isValid() )
{
QgsDebugMsg( "Error, maplayer is 0 or invalid" );
if ( result )
{
//.........这里部分代码省略.........
示例3: file
SyncDocument *SyncDocument::load(const QString &fileName)
{
SyncDocument *ret = new SyncDocument;
ret->fileName = fileName;
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::critical(NULL, "Error", file.errorString());
return NULL;
}
QDomDocument doc;
QString err;
if (!doc.setContent(&file, &err)) {
file.close();
QMessageBox::critical(NULL, "Error", err);
return NULL;
}
file.close();
QDomNamedNodeMap attribs = doc.documentElement().attributes();
QDomNode rowsParam = attribs.namedItem("rows");
if (!rowsParam.isNull()) {
QString rowsString = rowsParam.nodeValue();
ret->setRows(rowsString.toInt());
}
QDomNodeList trackNodes =
doc.documentElement().elementsByTagName("track");
for (int i = 0; i < trackNodes.count(); ++i) {
QDomNode trackNode = trackNodes.item(i);
QDomNamedNodeMap attribs = trackNode.attributes();
QString name = attribs.namedItem("name").nodeValue();
// look up track-name, create it if it doesn't exist
SyncTrack *t = ret->findTrack(name.toUtf8());
if (!t)
t = ret->createTrack(name.toUtf8().constData());
QDomNodeList rowNodes = trackNode.childNodes();
for (int i = 0; i < rowNodes.count(); ++i) {
QDomNode keyNode = rowNodes.item(i);
QString baseName = keyNode.nodeName();
if (baseName == "key") {
QDomNamedNodeMap rowAttribs = keyNode.attributes();
QString rowString = rowAttribs.namedItem("row").nodeValue();
QString valueString = rowAttribs.namedItem("value").nodeValue();
QString interpolationString = rowAttribs.namedItem("interpolation").nodeValue();
SyncTrack::TrackKey k;
k.row = rowString.toInt();
k.value = valueString.toFloat();
k.type = SyncTrack::TrackKey::KeyType(interpolationString.toInt());
Q_ASSERT(!t->isKeyFrame(k.row));
t->setKey(k);
}
}
}
// YUCK: gathers from entire document
QDomNodeList bookmarkNodes =
doc.documentElement().elementsByTagName("bookmark");
for (int i = 0; i < bookmarkNodes.count(); ++i) {
QDomNode bookmarkNode =
bookmarkNodes.item(i);
QDomNamedNodeMap bookmarkAttribs =
bookmarkNode.attributes();
QString str =
bookmarkAttribs.namedItem("row").nodeValue();
int row = str.toInt();
ret->toggleRowBookmark(row);
}
return ret;
}
示例4: add_files
void XMLHandler::add_files(QList<QString> file_list)
{
QDomDocument doc;
QFile file(filename);
if (!file.open(QIODevice::ReadOnly))
return;
if (!doc.setContent(&file)) {
file.close();
return;
}
file.close();
QDomElement docElem = doc.documentElement();
QDomNode n = docElem.firstChild();
QDomElement files_tag;
while(!n.isNull()) {
QDomElement e = n.toElement();
if(!e.isNull() && e.tagName() == "Files") {
files_tag = e;
}
n = n.nextSibling();
}
// get file ID of last file element
QDomElement last_file_element = files_tag.lastChildElement();
QString last_file_ID_str = last_file_element.attribute("ID");
int last_file_ID = last_file_ID_str.toInt();
// TODO: check for duplicate files
// append files from QList<QString>
int file_ID= last_file_ID + 1;
for (int i = 0; i < file_list.size(); ++i)
{
QString path = file_list[i];
QString filename = path.section("/",-1,-1);
QDomElement file_tag = doc.createElement("File");
file_tag.setAttribute("ID", QString::number(file_ID));
files_tag.appendChild(file_tag);
file_ID++;
QDomElement file_name_tag = doc.createElement("Name");
file_tag.appendChild(file_name_tag);
QDomText t1 = doc.createTextNode(filename);
file_name_tag.appendChild(t1);
QDomElement location_name_tag = doc.createElement("Location");
file_tag.appendChild(location_name_tag);
QDomText t2 = doc.createTextNode(path);
location_name_tag.appendChild(t2);
}
// write to file
QString xml = doc.toString();
if (!file.open(QFile::WriteOnly | QFile::Text))
{
qDebug() << "Could not open file for writing!";
}
QTextStream out(&file);
out << xml;
file.flush();
file.close();
}
示例5: save
void VCButton_Test::save()
{
QWidget w;
Scene* sc = new Scene(m_doc);
m_doc->addFunction(sc);
m_doc->setWorkspacePath(QDir("../../../gfx").absolutePath());
VCButton btn(&w, m_doc);
btn.setCaption("Foobar");
btn.setIconPath("../../../gfx/qlcplus.png");
btn.setFunction(sc->id());
btn.setAction(VCButton::Flash);
btn.setKeySequence(QKeySequence(keySequenceB));
btn.setAdjustIntensity(true);
btn.setIntensityAdjustment(0.2);
QDomDocument xmldoc;
QDomElement root = xmldoc.createElement("Root");
xmldoc.appendChild(root);
int function = 0, action = 0, key = 0, intensity = 0, wstate = 0, appearance = 0;
QCOMPARE(btn.saveXML(&xmldoc, &root), true);
QDomElement tag = root.firstChild().toElement();
QCOMPARE(tag.tagName(), QString("Button"));
QCOMPARE(tag.attribute("Icon"), QString("qlcplus.png"));
QCOMPARE(tag.attribute("Caption"), QString("Foobar"));
QDomNode node = tag.firstChild();
while (node.isNull() == false)
{
QDomElement tag = node.toElement();
if (tag.tagName() == "Function")
{
function++;
QCOMPARE(tag.attribute("ID"), QString::number(sc->id()));
}
else if (tag.tagName() == "Action")
{
action++;
QCOMPARE(tag.text(), QString("Flash"));
}
else if (tag.tagName() == "Key")
{
key++;
QCOMPARE(tag.text(), QKeySequence(keySequenceB).toString());
}
else if (tag.tagName() == "Intensity")
{
intensity++;
QCOMPARE(tag.attribute("Adjust"), QString("True"));
QCOMPARE(tag.text(), QString("20"));
}
else if (tag.tagName() == "WindowState")
{
wstate++;
}
else if (tag.tagName() == "Appearance")
{
appearance++;
}
else
{
QFAIL(QString("Unexpected tag: %1").arg(tag.tagName()).toUtf8().constData());
}
node = node.nextSibling();
}
QCOMPARE(function, 1);
QCOMPARE(action, 1);
QCOMPARE(key, 1);
QCOMPARE(intensity, 1);
QCOMPARE(wstate, 1);
QCOMPARE(appearance, 1);
}
示例6: setParameters
bool TemporalVarianceBGModule::setParameters(QDomNode& config)
{
QDomNode n;
if(config.isNull()) //Parameter set for module not defined
{
this->bgSizeWindow = 11;
this->fgSizeWindow = 5; //influye en la permanencia de los fantasmas.
this->detectionFactorThreshold = 7.0;//valores altos, clasifican a mas pixeles como fondo
this->fgVarianceThreshold = 187.0;//un pixel con varianza mayor a este umbral es considerado pixel en movimiento
this->factorSigmoid = 3;//entre mas grande es este valor, mas pixeles son clasificados como fondo
this->minScale = 0;
this->maxScale = 80;
this->displayFirstModel = true;
this->displayFeatureMap = true;
m_tuningActivated = false;
}
else
{
if( !( n = XmlCommon::XmlCommon::getParameterNode("bgSizeWindow", config) ).isNull() )
this->bgSizeWindow = XmlCommon::getParameterValue(n).toInt();
else
{
this->bgSizeWindow = 9;
AppendToLog("TemporalVarianceBGModule: Warning: 'bgSizeWindow' not defined. Taking defaults: \n\t\tbgSizeWindow = " + QString::number(this->bgSizeWindow) + "\n");
}
if( !( n = XmlCommon::XmlCommon::getParameterNode("fgSizeWindow", config) ).isNull() )
this->fgSizeWindow = XmlCommon::getParameterValue(n).toInt();
else
{
this->fgSizeWindow = 4;
AppendToLog("TemporalVarianceBGModule: Warning: 'fgSizeWindow' not defined. Taking defaults: \n\t\tfgSizeWindow = " + QString::number(this->fgSizeWindow) + "\n");
}
if( !( n = XmlCommon::XmlCommon::getParameterNode("detectionFactorThreshold", config) ).isNull() )
this->detectionFactorThreshold = XmlCommon::getParameterValue(n).toFloat();
else
{
this->detectionFactorThreshold = 7;
AppendToLog("TemporalVarianceBGModule: Warning: 'detectionFactorThreshold' not defined. Taking defaults: \n\t\tdetectionFactorThreshold = " + QString::number(this->detectionFactorThreshold) + "\n");
}
if( !( n = XmlCommon::XmlCommon::getParameterNode("fgVarianceThreshold", config) ).isNull() )
this->fgVarianceThreshold = XmlCommon::getParameterValue(n).toFloat();
else
{
this->fgVarianceThreshold = 187;
AppendToLog("TemporalVarianceBGModule: Warning: 'fgVarianceThreshold' not defined. Taking defaults: \n\t\tfgVarianceThreshold = " + QString::number(this->fgVarianceThreshold) + "\n");
}
if( !( n = XmlCommon::XmlCommon::getParameterNode("factorSigmoid", config) ).isNull() )
this->factorSigmoid = XmlCommon::getParameterValue(n).toInt();
else
{
this->factorSigmoid = 3;
AppendToLog("TemporalVarianceBGModule: Warning: 'factorSigmoid' not defined. Taking defaults: \n\t\tfactorSigmoid = " + QString::number(this->factorSigmoid) + "\n");
}
if( !( n = XmlCommon::XmlCommon::getParameterNode("minScale", config) ).isNull() )
this->minScale = XmlCommon::getParameterValue(n).toInt();
else
{
this->minScale = 0;
AppendToLog("TemporalVarianceBGModule: Warning: 'minScale' not defined. Taking defaults: \n\t\tminScale = " + QString::number(this->minScale) + "\n");
}
if( !( n = XmlCommon::XmlCommon::getParameterNode("maxScale", config) ).isNull() )
this->maxScale = XmlCommon::getParameterValue(n).toInt();
else
{
this->maxScale = 255;
AppendToLog("TemporalVarianceBGModule: Warning: 'maxScale' not defined. Taking defaults: \n\t\tmaxScale = " + QString::number(this->maxScale) + "\n");
}
if( !( n = XmlCommon::XmlCommon::getParameterNode("displayFeatureMap", config) ).isNull() )
this->displayFeatureMap = XmlCommon::getParameterValue(n) == "true" ? true : false;
else
{
this->displayFeatureMap = false;
AppendToLog("TemporalVarianceBGModule: Warning: 'displayFeatureMap' not defined. Taking defaults: \n\t\tdisplayFeatureMap = false \n");
}
if( !( n = XmlCommon::XmlCommon::getParameterNode("displayFirstModel", config) ).isNull() )
this->displayFirstModel = XmlCommon::getParameterValue(n) == "true" ? true : false;
else
{
this->displayFirstModel = false;
AppendToLog("TemporalVarianceBGModule: Warning: 'displayFirstModel' not defined. Taking defaults: \n\t\tdisplayFirstModel = false \n");
}
if( ( n = XmlCommon::getParameterNode("TuningActivated", config) ).isNull() ) {
m_tuningActivated = false;
} else {
m_tuningActivated = XmlCommon::getParameterValue(n) == "true" ? true : false;
if(m_tuningActivated) {
m_data->tuningEnded = false;
}
}
}
//Setea la lista de parametros y la lista de tipos de parametros utilizadas en el ParameterDialog.
addParameter("bgSizeWindow", QString::number(this->bgSizeWindow), "int");
addParameter("fgSizeWindow", QString::number(this->fgSizeWindow), "int");
addParameter("detectionFactorThreshold", QString::number(this->detectionFactorThreshold), "float");
addParameter("fgVarianceThreshold", QString::number(this->fgVarianceThreshold), "float");
//.........这里部分代码省略.........
示例7: loadXML
bool Chaser::loadXML(const QDomElement* root)
{
QDomNode node;
QDomElement tag;
Q_ASSERT(root != NULL);
if (root->tagName() != KXMLQLCFunction)
{
qDebug() << "Function node not found!";
return false;
}
if (root->attribute(KXMLQLCFunctionType) !=
typeToString(Function::Chaser))
{
qWarning("Function is not a chaser!");
return false;
}
/* Load chaser contents */
node = root->firstChild();
while (node.isNull() == false)
{
tag = node.toElement();
if (tag.tagName() == KXMLQLCBus)
{
/* Bus */
setBus(tag.text().toUInt());
}
else if (tag.tagName() == KXMLQLCFunctionDirection)
{
/* Direction */
setDirection(Function::stringToDirection(tag.text()));
}
else if (tag.tagName() == KXMLQLCFunctionRunOrder)
{
/* Run Order */
setRunOrder(Function::stringToRunOrder(tag.text()));
}
else if (tag.tagName() == KXMLQLCFunctionStep)
{
t_function_id fid = -1;
int num = 0;
num = tag.attribute(KXMLQLCFunctionNumber).toInt();
fid = tag.text().toInt();
/* Don't check for the member function's existence,
because it might not have been loaded yet. */
if (num >= m_steps.size())
m_steps.append(fid);
else
m_steps.insert(num, fid);
}
else
{
qDebug() << "Unknown chaser tag:" << tag.tagName();
}
node = node.nextSibling();
}
return true;
}
示例8: loadXML
bool VCSlider::loadXML(const QDomElement* root)
{
bool visible = false;
int x = 0;
int y = 0;
int w = 0;
int h = 0;
SliderMode sliderMode = Playback;
QDomElement tag;
QDomNode node;
QString caption;
QString str;
Q_ASSERT(root != NULL);
if (root->tagName() != KXMLQLCVCSlider)
{
qWarning() << Q_FUNC_INFO << "Slider node not found";
return false;
}
/* Caption */
caption = root->attribute(KXMLQLCVCCaption);
if (root->attribute(KXMLQLCVCSliderInvertedAppearance) == "false")
setInvertedAppearance(false);
else
setInvertedAppearance(true);
/* Children */
node = root->firstChild();
while (node.isNull() == false)
{
tag = node.toElement();
if (tag.tagName() == KXMLQLCWindowState)
{
loadXMLWindowState(&tag, &x, &y, &w, &h, &visible);
setGeometry(x, y, w, h);
}
else if (tag.tagName() == KXMLQLCVCWidgetAppearance)
{
loadXMLAppearance(&tag);
}
else if (tag.tagName() == KXMLQLCVCSliderMode)
{
sliderMode = stringToSliderMode(tag.text());
str = tag.attribute(KXMLQLCVCSliderValueDisplayStyle);
setValueDisplayStyle(stringToValueDisplayStyle(str));
}
else if (tag.tagName() == KXMLQLCVCSliderLevel)
{
loadXMLLevel(&tag);
}
else if (tag.tagName() == KXMLQLCVCWidgetInput)
{
loadXMLInput(&tag);
}
else if (tag.tagName() == KXMLQLCVCSliderPlayback)
{
loadXMLPlayback(&tag);
}
else
{
qWarning() << Q_FUNC_INFO << "Unknown slider tag:" << tag.tagName();
}
node = node.nextSibling();
}
/* Set the mode last, after everything else has been set */
setSliderMode(sliderMode);
setCaption(caption);
return true;
}
示例9: ParseDescription
/**
* \fn UPNPScanner::ParseDescription(const QUrl&, QNetworkReply*)
* Parse the device description XML return my a media server.
*/
bool UPNPScanner::ParseDescription(const QUrl &url, QNetworkReply *reply)
{
if (url.isEmpty() || !reply)
return false;
QByteArray data = reply->readAll();
if (data.isEmpty())
{
LOG(VB_GENERAL, LOG_ERR, LOC +
QString("%1 returned an empty device description.")
.arg(url.toString()));
return false;
}
// parse the device description
QString controlURL = QString();
QString eventURL = QString();
QString friendlyName = QString("Unknown");
QString URLBase = QString();
QDomDocument doc;
QString errorMessage;
int errorLine = 0;
int errorColumn = 0;
if (!doc.setContent(data, false, &errorMessage, &errorLine, &errorColumn))
{
LOG(VB_GENERAL, LOG_ERR, LOC +
QString("Failed to parse device description from %1")
.arg(url.toString()));
LOG(VB_GENERAL, LOG_ERR, LOC + QString("Line: %1 Col: %2 Error: '%3'")
.arg(errorLine).arg(errorColumn).arg(errorMessage));
return false;
}
QDomElement docElem = doc.documentElement();
QDomNode n = docElem.firstChild();
while (!n.isNull())
{
QDomElement e1 = n.toElement();
if (!e1.isNull())
{
if(e1.tagName() == "device")
ParseDevice(e1, controlURL, eventURL, friendlyName);
if (e1.tagName() == "URLBase")
URLBase = e1.text();
}
n = n.nextSibling();
}
if (controlURL.isEmpty())
{
LOG(VB_UPNP, LOG_ERR, LOC +
QString("Failed to parse device description for %1")
.arg(url.toString()));
return false;
}
// if no URLBase was provided, use the known url
if (URLBase.isEmpty())
URLBase = url.toString(QUrl::RemovePath | QUrl::RemoveFragment |
QUrl::RemoveQuery);
// strip leading slashes off the controlURL
while (!controlURL.isEmpty() && controlURL.left(1) == "/")
controlURL = controlURL.mid(1);
// strip leading slashes off the eventURL
//while (!eventURL.isEmpty() && eventURL.left(1) == "/")
// eventURL = eventURL.mid(1);
// strip trailing slashes off URLBase
while (!URLBase.isEmpty() && URLBase.right(1) == "/")
URLBase = URLBase.mid(0, URLBase.size() - 1);
controlURL = URLBase + "/" + controlURL;
QString fulleventURL = URLBase + "/" + eventURL;
LOG(VB_UPNP, LOG_INFO, LOC + QString("Control URL for %1 at %2")
.arg(friendlyName).arg(controlURL));
LOG(VB_UPNP, LOG_INFO, LOC + QString("Event URL for %1 at %2")
.arg(friendlyName).arg(fulleventURL));
// update the server details. If the server has gone away since the request
// was posted, this will silently fail and we won't try again
QString usn;
QUrl qeventurl = QUrl(fulleventURL);
int timeout = 0;
m_lock.lock();
QHashIterator<QString,MediaServer*> it(m_servers);
while (it.hasNext())
{
it.next();
if (it.value()->m_URL == url)
{
usn = it.key();
//.........这里部分代码省略.........
示例10: readInfo
bool KigPlugin::readInfo( KFileMetaInfo& metainfo, uint /*what*/ )
{
KFileMetaInfoGroup metagroup = appendGroup( metainfo, "KigInfo");
QString sfile = metainfo.path();
bool iscompressed = false;
QFile f( sfile );
if ( !sfile.endsWith( ".kig", false ) )
{
iscompressed = true;
QString tempdir = KGlobal::dirs()->saveLocation( "tmp" );
if ( tempdir.isEmpty() )
return false;
QString tempname = sfile.section( '/', -1 );
if ( sfile.endsWith( ".kigz", false ) )
{
tempname.remove( QRegExp( "\\.[Kk][Ii][Gg][Zz]$" ) );
}
else
return false;
// reading compressed file
KTar* ark = new KTar( sfile, "application/x-gzip" );
ark->open( IO_ReadOnly );
const KArchiveDirectory* dir = ark->directory();
QStringList entries = dir->entries();
QStringList kigfiles = entries.grep( QRegExp( "\\.kig$" ) );
if ( kigfiles.count() != 1 )
return false;
const KArchiveEntry* kigz = dir->entry( kigfiles[0] );
if ( !kigz->isFile() )
return false;
dynamic_cast<const KArchiveFile*>( kigz )->copyTo( tempdir );
f.setName( tempdir + kigz->name() );
}
if ( !f.open( IO_ReadOnly ) )
return false;
QDomDocument doc( "KigDocument" );
if ( !doc.setContent( &f ) )
return false;
f.close();
// removing temp file
if ( iscompressed )
f.remove();
QDomElement main = doc.documentElement();
// reading the version...
QString version = main.attribute( "Version" );
if ( version.isEmpty() ) version = main.attribute( "version" );
if ( version.isEmpty() ) version = i18n( "Translators: Not Available", "n/a" );
appendItem( metagroup, "Version", version );
// reading the compatibility version...
QString compatversion = main.attribute( "CompatibilityVersion" );
if ( compatversion.isEmpty() )
compatversion = i18n( "%1 represents Kig version",
"%1 (as the version)" ).arg( version );
appendItem( metagroup, "CompatVersion", compatversion );
// reading the Coordinate System...
QCString coordsystem;
for ( QDomNode n = main.firstChild(); ! n.isNull(); n = n.nextSibling() )
{
QDomElement e = n.toElement();
if ( e.isNull() ) continue;
if ( e.tagName() == "CoordinateSystem" )
coordsystem = e.text().latin1();
}
appendItem( metagroup, "CoordSystem", coordsystem );
// has Kig document the grid?
bool btmp = true;
QString stmp = main.attribute( "grid" );
if ( !( stmp.isEmpty() || ( stmp != "0" ) ) )
btmp = ( stmp != "0" );
QString stmp2 = btmp ? i18n( "Yes" ) : i18n( "No" );
appendItem( metagroup, "Grid", stmp2 );
// has Kig document the axes?
btmp = true;
stmp = main.attribute( "axes" );
if ( !( stmp.isEmpty() || ( stmp != "0" ) ) )
btmp = ( stmp != "0" );
stmp2 = btmp ? i18n( "Yes" ) : i18n( "No" );
appendItem( metagroup, "Axes", stmp2 );
stmp2 = iscompressed ? i18n( "Yes" ) : i18n( "No" );
appendItem( metagroup, "Compressed", stmp2 );
return true;
}
示例11: loadXML
bool EFX::loadXML(const QDomElement& root)
{
if (root.tagName() != KXMLQLCFunction)
{
qWarning() << "Function node not found!";
return false;
}
if (root.attribute(KXMLQLCFunctionType) != typeToString(Function::EFX))
{
qWarning("Function is not an EFX!");
return false;
}
/* Load EFX contents */
QDomNode node = root.firstChild();
while (node.isNull() == false)
{
QDomElement tag = node.toElement();
if (tag.tagName() == KXMLQLCBus)
{
/* Bus */
QString str = tag.attribute(KXMLQLCBusRole);
if (str == KXMLQLCBusFade)
m_legacyFadeBus = tag.text().toUInt();
else if (str == KXMLQLCBusHold)
m_legacyHoldBus = tag.text().toUInt();
}
else if (tag.tagName() == KXMLQLCFunctionSpeed)
{
loadXMLSpeed(tag);
}
else if (tag.tagName() == KXMLQLCEFXFixture)
{
EFXFixture* ef = new EFXFixture(this);
ef->loadXML(tag);
if (ef->head().isValid())
{
if (addFixture(ef) == false)
delete ef;
}
}
else if (tag.tagName() == KXMLQLCEFXPropagationMode)
{
/* Propagation mode */
setPropagationMode(stringToPropagationMode(tag.text()));
}
else if (tag.tagName() == KXMLQLCEFXAlgorithm)
{
/* Algorithm */
setAlgorithm(stringToAlgorithm(tag.text()));
}
else if (tag.tagName() == KXMLQLCFunctionDirection)
{
loadXMLDirection(tag);
}
else if (tag.tagName() == KXMLQLCFunctionRunOrder)
{
loadXMLRunOrder(tag);
}
else if (tag.tagName() == KXMLQLCEFXWidth)
{
/* Width */
setWidth(tag.text().toInt());
}
else if (tag.tagName() == KXMLQLCEFXHeight)
{
/* Height */
setHeight(tag.text().toInt());
}
else if (tag.tagName() == KXMLQLCEFXRotation)
{
/* Rotation */
setRotation(tag.text().toInt());
}
else if (tag.tagName() == KXMLQLCEFXStartOffset)
{
/* StartOffset */
setStartOffset(tag.text().toInt());
}
else if (tag.tagName() == KXMLQLCEFXIsRelative)
{
/* IsRelative */
setIsRelative(tag.text().toInt() != 0);
}
else if (tag.tagName() == KXMLQLCEFXAxis)
{
/* Axes */
loadXMLAxis(tag);
}
else
{
qWarning() << "Unknown EFX tag:" << tag.tagName();
}
node = node.nextSibling();
}
return true;
//.........这里部分代码省略.........
示例12: recognized
QList< Choqok::Post* > TwitterSearch::parseAtom(const QByteArray& buffer)
{
kDebug();
QDomDocument document;
QList<Choqok::Post*> statusList;
document.setContent( buffer );
QDomElement root = document.documentElement();
if ( root.tagName() != "feed" ) {
kDebug() << "There is no feed element in Atom feed " << buffer.data();
return statusList;
}
QDomNode node = root.firstChild();
QString timeStr;
while ( !node.isNull() ) {
if ( node.toElement().tagName() != "entry" ) {
node = node.nextSibling();
continue;
}
QDomNode entryNode = node.firstChild();
Choqok::Post *status = new Choqok::Post;
status->isPrivate = false;
while ( !entryNode.isNull() ) {
QDomElement elm = entryNode.toElement();
if ( elm.tagName() == "id" ) {
// Fomatting example: "tag:search.twitter.com,2005:1235016836"
ChoqokId id;
if(m_rId.exactMatch(elm.text())) {
id = m_rId.cap(1);
}
/* sscanf( qPrintable( elm.text() ),
"tag:search.twitter.com,%*d:%d", &id);*/
status->postId = id;
} else if ( elm.tagName() == "published" ) {
// Formatting example: "2009-02-21T19:42:39Z"
// Need to extract date in similar fashion to dateFromString
int year, month, day, hour, minute, second;
sscanf( qPrintable( elm.text() ),
"%d-%d-%dT%d:%d:%d%*s", &year, &month, &day, &hour, &minute, &second);
QDateTime recognized( QDate( year, month, day), QTime( hour, minute, second ) );
recognized.setTimeSpec( Qt::UTC );
status->creationDateTime = recognized;
} else if ( elm.tagName() == "title" ) {
status->content = elm.text();
} else if ( elm.tagName() == "twitter:source" ) {
status->source = elm.text();
} else if ( elm.tagName() == "link") {
if(elm.attributeNode( "rel" ).value() == "image") {
status->author.profileImageUrl = elm.attribute( "href" );
} else if(elm.attributeNode( "rel" ).value() == "alternate") {
status->link = elm.attribute( "href" );
}
} else if ( elm.tagName() == "author") {
QDomNode userNode = entryNode.firstChild();
while ( !userNode.isNull() )
{
if ( userNode.toElement().tagName() == "name" )
{
QString fullName = userNode.toElement().text();
int bracketPos = fullName.indexOf( " ", 0 );
QString screenName = fullName.left( bracketPos );
QString name = fullName.right ( fullName.size() - bracketPos - 2 );
name.chop( 1 );
status->author.realName = name;
status->author.userName = screenName;
}
userNode = userNode.nextSibling();
}
}
entryNode = entryNode.nextSibling();
}
status->isFavorited = false;
statusList.insert( 0, status );
node = node.nextSibling();
}
return statusList;
}
示例13: layersAndStylesCapabilities
void QgsSLDConfigParser::layersAndStylesCapabilities( QDomElement& parentElement, QDomDocument& doc, const QString& version, bool fullProjectSettings ) const
{
Q_UNUSED( version );
Q_UNUSED( fullProjectSettings );
//iterate over all <UserLayer> nodes
if ( mXMLDoc )
{
QDomNode sldNode = mXMLDoc->documentElement();
if ( !sldNode.isNull() )
{
//create wgs84 to reproject the layer bounding boxes
//QgsCoordinateReferenceSystem wgs84;
//wgs84.createFromEpsg(4326);
QDomNodeList layerNodeList = sldNode.toElement().elementsByTagName( "UserLayer" );
for ( int i = 0; i < layerNodeList.size(); ++i )
{
QDomElement layerElement = doc.createElement( "Layer" );
layerElement.setAttribute( "queryable", "1" ); //support GetFeatureInfo for all layers
parentElement.appendChild( layerElement );
//add name
QDomNodeList nameList = layerNodeList.item( i ).toElement().elementsByTagName( "Name" );
if ( !nameList.isEmpty() )
{
//layer name
QDomElement layerNameElement = doc.createElement( "Name" );
QDomText layerNameText = doc.createTextNode( nameList.item( 0 ).toElement().text() );
layerNameElement.appendChild( layerNameText );
layerElement.appendChild( layerNameElement );
}
//add title
QDomNodeList titleList = layerNodeList.item( i ).toElement().elementsByTagName( "Title" );
if ( !titleList.isEmpty() )
{
QDomElement layerTitleElement = doc.createElement( "Title" );
QDomText layerTitleText = doc.createTextNode( titleList.item( 0 ).toElement().text() );
layerTitleElement.appendChild( layerTitleText );
layerElement.appendChild( layerTitleElement );
}
//add abstract
QDomNodeList abstractList = layerNodeList.item( i ).toElement().elementsByTagName( "Abstract" );
if ( !abstractList.isEmpty() )
{
QDomElement layerAbstractElement = doc.createElement( "Abstract" );
QDomText layerAbstractText = doc.createTextNode( abstractList.item( 0 ).toElement().text() );
layerAbstractElement.appendChild( layerAbstractText );
layerElement.appendChild( layerAbstractElement );
}
//get QgsMapLayer object to add Ex_GeographicalBoundingBox, Bounding Box
QList<QgsMapLayer*> layerList = mapLayerFromStyle( nameList.item( 0 ).toElement().text(), "" );
if ( layerList.size() < 1 )//error while generating the layer
{
QgsDebugMsg( "Error, no maplayer in layer list" );
continue;
}
//get only the first layer since we don't want to have the other ones in the capabilities document
QgsMapLayer* theMapLayer = layerList.at( 0 );
if ( !theMapLayer )//error while generating the layer
{
QgsDebugMsg( "Error, QgsMapLayer object is 0" );
continue;
}
//append geographic bbox and the CRS elements
QStringList crsNumbers = QgsConfigParserUtils::createCrsListForLayer( theMapLayer );
QStringList crsRestriction; //no crs restrictions in SLD parser
QgsConfigParserUtils::appendCrsElementsToLayer( layerElement, doc, crsNumbers, crsRestriction );
QgsConfigParserUtils::appendLayerBoundingBoxes( layerElement, doc, theMapLayer->extent(), theMapLayer->crs(), crsNumbers, crsRestriction );
//iterate over all <UserStyle> nodes within a user layer
QDomNodeList userStyleList = layerNodeList.item( i ).toElement().elementsByTagName( "UserStyle" );
for ( int j = 0; j < userStyleList.size(); ++j )
{
QDomElement styleElement = doc.createElement( "Style" );
layerElement.appendChild( styleElement );
//Name
QDomNodeList nameList = userStyleList.item( j ).toElement().elementsByTagName( "Name" );
if ( !nameList.isEmpty() )
{
QDomElement styleNameElement = doc.createElement( "Name" );
QDomText styleNameText = doc.createTextNode( nameList.item( 0 ).toElement().text() );
styleNameElement.appendChild( styleNameText );
styleElement.appendChild( styleNameElement );
QDomElement styleTitleElement = doc.createElement( "Title" );
QDomText styleTitleText = doc.createTextNode( nameList.item( 0 ).toElement().text() );
styleTitleElement.appendChild( styleTitleText );
styleElement.appendChild( styleTitleElement );
}
//Title
QDomNodeList titleList = userStyleList.item( j ).toElement().elementsByTagName( "Title" );
if ( !titleList.isEmpty() )
{
QDomElement styleTitleElement = doc.createElement( "Title" );
//.........这里部分代码省略.........
示例14: mapLayerFromUserLayer
QgsMapLayer* QgsSLDConfigParser::mapLayerFromUserLayer( const QDomElement& userLayerElem, const QString& layerName, bool allowCaching ) const
{
QgsDebugMsg( "Entering." );
QgsMSLayerBuilder* layerBuilder = nullptr;
QDomElement builderRootElement;
//hosted vector data?
QDomNode hostedVDSNode = userLayerElem.namedItem( "HostedVDS" );
if ( !hostedVDSNode.isNull() )
{
builderRootElement = hostedVDSNode.toElement();
layerBuilder = new QgsHostedVDSBuilder();
}
//hosted raster data?
QDomNode hostedRDSNode = userLayerElem.namedItem( "HostedRDS" );
if ( !layerBuilder && !hostedRDSNode.isNull() )
{
builderRootElement = hostedRDSNode.toElement();
layerBuilder = new QgsHostedRDSBuilder();
}
//remote OWS (WMS, WFS, WCS)?
QDomNode remoteOWSNode = userLayerElem.namedItem( "RemoteOWS" );
if ( !layerBuilder && !remoteOWSNode.isNull() )
{
builderRootElement = remoteOWSNode.toElement();
layerBuilder = new QgsRemoteOWSBuilder( mParameterMap );
}
//remote vector/raster datasource
QDomNode remoteRDSNode = userLayerElem.namedItem( "RemoteRDS" );
if ( !layerBuilder && !remoteRDSNode.isNull() )
{
builderRootElement = remoteRDSNode.toElement();
layerBuilder = new QgsRemoteDataSourceBuilder();
QgsDebugMsg( "Detected remote raster datasource" );
}
QDomNode remoteVDSNode = userLayerElem.namedItem( "RemoteVDS" );
if ( !layerBuilder && !remoteVDSNode.isNull() )
{
builderRootElement = remoteVDSNode.toElement();
layerBuilder = new QgsRemoteDataSourceBuilder();
QgsDebugMsg( "Detected remote vector datasource" );
}
//sent vector/raster datasource
QDomNode sentVDSNode = userLayerElem.namedItem( "SentVDS" );
if ( !layerBuilder && !sentVDSNode.isNull() )
{
builderRootElement = sentVDSNode.toElement();
layerBuilder = new QgsSentDataSourceBuilder();
}
QDomNode sentRDSNode = userLayerElem.namedItem( "SentRDS" );
if ( !layerBuilder && !sentRDSNode.isNull() )
{
builderRootElement = sentRDSNode.toElement();
layerBuilder = new QgsSentDataSourceBuilder();
}
if ( !layerBuilder )
{
return nullptr;
}
QgsMapLayer* theMapLayer = layerBuilder->createMapLayer( builderRootElement, layerName, mFilesToRemove, mLayersToRemove, allowCaching );
if ( theMapLayer )
{
setCrsForLayer( builderRootElement, theMapLayer ); //consider attributes "epsg" and "proj"
}
//maybe the datasource is defined in the fallback SLD?
if ( !theMapLayer && mFallbackParser )
{
QList<QgsMapLayer*> fallbackList = mFallbackParser->mapLayerFromStyle( layerName, "", allowCaching );
if ( !fallbackList.isEmpty() )
{
QgsMapLayer* fallbackLayer = fallbackList.at( 0 ); //todo: prevent crash if layer list is empty
if ( fallbackLayer )
{
theMapLayer = dynamic_cast<QgsVectorLayer*>( fallbackLayer );
}
}
}
#if 0 //todo: fixme
//GML from outside the SLD?
if ( !theMapLayer )
{
QMap<QString, QDomDocument*>::const_iterator gmlIt = mExternalGMLDatasets.find( layerName );
if ( gmlIt != mExternalGMLDatasets.end() )
{
QgsDebugMsg( "Trying to get maplayer from external GML" );
theMapLayer = vectorLayerFromGML( gmlIt.value()->documentElement() );
}
}
#endif //0
//.........这里部分代码省略.........
示例15: loadTrackSpecificSettings
void InstrumentTrack::loadTrackSpecificSettings( const QDomElement & thisElement )
{
silenceAllNotes( true );
lock();
m_volumeModel.loadSettings( thisElement, "vol" );
m_panningModel.loadSettings( thisElement, "pan" );
m_pitchRangeModel.loadSettings( thisElement, "pitchrange" );
m_pitchModel.loadSettings( thisElement, "pitch" );
m_effectChannelModel.setRange( 0, Engine::fxMixer()->numChannels()-1 );
m_effectChannelModel.loadSettings( thisElement, "fxch" );
m_baseNoteModel.loadSettings( thisElement, "basenote" );
m_useMasterPitchModel.loadSettings( thisElement, "usemasterpitch");
// clear effect-chain just in case we load an old preset without FX-data
m_audioPort.effects()->clear();
QDomNode node = thisElement.firstChild();
while( !node.isNull() )
{
if( node.isElement() )
{
if( m_soundShaping.nodeName() == node.nodeName() )
{
m_soundShaping.restoreState( node.toElement() );
}
else if( m_noteStacking.nodeName() == node.nodeName() )
{
m_noteStacking.restoreState( node.toElement() );
}
else if( m_arpeggio.nodeName() == node.nodeName() )
{
m_arpeggio.restoreState( node.toElement() );
}
else if( m_midiPort.nodeName() == node.nodeName() )
{
m_midiPort.restoreState( node.toElement() );
}
else if( m_audioPort.effects()->nodeName() == node.nodeName() )
{
m_audioPort.effects()->restoreState( node.toElement() );
}
else if( node.nodeName() == "instrument" )
{
delete m_instrument;
m_instrument = NULL;
m_instrument = Instrument::instantiate( node.toElement().attribute( "name" ), this );
m_instrument->restoreState( node.firstChildElement() );
emit instrumentChanged();
}
// compat code - if node-name doesn't match any known
// one, we assume that it is an instrument-plugin
// which we'll try to load
else if( AutomationPattern::classNodeName() != node.nodeName() &&
ControllerConnection::classNodeName() != node.nodeName() &&
!node.toElement().hasAttribute( "id" ) )
{
delete m_instrument;
m_instrument = NULL;
m_instrument = Instrument::instantiate( node.nodeName(), this );
if( m_instrument->nodeName() == node.nodeName() )
{
m_instrument->restoreState( node.toElement() );
}
emit instrumentChanged();
}
}
node = node.nextSibling();
}
updatePitchRange();
unlock();
}