// 出售商品的确定按钮 void Widget::on_sellOkBtn_clicked() { QString type = ui->sellTypeComboBox->currentText(); QString name = ui->sellBrandComboBox->currentText(); int value = ui->sellNumSpinBox->value(); // cellNumSpinBox的最大值就是以前的剩余量 int last = ui->sellNumSpinBox->maximum() - value; QSqlQuery query; // 获取以前的销售量 query.exec(QString("select sell from brand where name='%1' and type='%2'") .arg(name).arg(type)); query.next(); int sell = query.value(0).toInt() + value; // 事务操作 QSqlDatabase::database().transaction(); bool rtn = query.exec( QString("update brand set sell=%1,last=%2 where name='%3' and type='%4'") .arg(sell).arg(last).arg(name).arg(type)); if (rtn) { QSqlDatabase::database().commit(); QMessageBox::information(this, tr("提示"), tr("购买成功!"), QMessageBox::Ok); writeXml(); showDailyList(); on_sellCancelBtn_clicked(); } else { QSqlDatabase::database().rollback(); } }
std::string Value::writeToXml() const { std::ostringstream out; writeXml(out); return out.str(); }
void MessageTreeWidget::recoverMessageItem() { QString strName= currentClickItem->text(0); QString strContent = currentClickItem->text(1); QString strNumber = strName; QString strTerm = "错误"; if(mapName2Number.contains(strName)) { strNumber = mapName2Number[strName]; } if(mapblackNumberTerm.contains(strName)) { strTerm = mapblackNumberTerm[strName]; } // QMessageBox *message=new QMessageBox(QMessageBox::NoIcon, strNumber, strTerm); // message->show(); QString strSmsSum = "信息"; addSmsElemt(strMessagePathOpen,strNumber,strContent,strTerm,strSmsSum); QTreeWidgetItem *item = currentClickItem; QTreeWidgetItem *parent = item->parent(); parent->removeChild(currentClickItem); currentClickItem = NULL; writeXml(strMessagePathSave,this); emit updateTreeAllItem(); }
std::string XMLSchema::xml() const { xmlBuffer *b = xmlBufferCreate(); xmlTextWriterPtr w = xmlNewTextWriterMemory(b, 0); xmlTextWriterSetIndent(w, 1); xmlTextWriterStartDocument(w, NULL, "utf-8", NULL); xmlTextWriterStartElementNS(w, (const xmlChar*)"pc", (const xmlChar*)"PointCloudSchema", NULL); xmlTextWriterWriteAttributeNS(w, (const xmlChar*) "xmlns", (const xmlChar*)"pc", NULL, (const xmlChar*)"http://pointcloud.org/schemas/PC/"); xmlTextWriterWriteAttributeNS(w, (const xmlChar*)"xmlns", (const xmlChar*)"xsi", NULL, (const xmlChar*)"http://www.w3.org/2001/XMLSchema-instance"); writeXml(w); xmlTextWriterEndElement(w); xmlTextWriterEndDocument(w); std::string output((const char *)b->content, b->use); xmlFreeTextWriter(w); xmlBufferFree(b); return output; }
int main(int argc, char *argv[]) { QApplication app(argc, argv); QTreeWidget treeWidget; populateTree(&treeWidget); writeXml("out1.xml", &treeWidget); return app.exec(); }
bool Config::setValue(string attribute, string value, int value_id) { if (!readXml()) return false; while (node.nChildNode(attribute.c_str())<=value_id) { node.addChild(attribute.c_str()); } node.getChildNode(attribute.c_str(), value_id).deleteNodeContent(); node.addChild(attribute.c_str()); node.getChildNode(attribute.c_str(), value_id).addText(value.c_str()); return writeXml(); }
void rpnoc::Profile::newProfile( void ) { ProfileNameDialog oProfileDialog; oProfileDialog.exec(); QString oFilename = oProfileDialog.getFilename(); QString oTempUser = getUser(); QString oFile( "profiles/" + oTempUser + "/" + oFilename + ".xml" ); writeXml( oFile, &profileList ); profileList.append( oFilename + ".xml" ); log_i( "New profile Created '" + oFile + "'." ); showProfiles(); }
void MainWindow::saveFile() { QString fileName = QFileDialog::getSaveFileName(this, tr("Save document as:"), "", tr("XML (*.xml)")); if (!fileName.isEmpty()) { if (writeXml(fileName)) setWindowTitle(fileName); else QMessageBox::warning(this, tr("Warning"), tr("Failed to save the document."), QMessageBox::Cancel, QMessageBox::NoButton); } }
bool aBackup::dumpBase(const QString& rcfile, const QString& tmpDirName, int& prg, int totalSteps) { QDomDocument xml; xml.setContent(QString("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); QDomElement root = xml.createElement( "AnanasDump" ); xml.appendChild( root ); aDatabase db; if(db.init(rcfile)) { emit (progress(++prg,totalSteps)); db.exchangeDataSystables ( xml, false ); emit (progress(++prg,totalSteps)); db.exchangeDataCatalogues( xml, false ); emit (progress(++prg,totalSteps)); db.exchangeDataDocuments ( xml, false ); emit (progress(++prg,totalSteps)); db.exchangeDataJournals ( xml, false ); emit (progress(++prg,totalSteps)); db.exchangeDataInfoRegisters ( xml, false ); emit (progress(++prg,totalSteps)); db.exchangeDataAccumulationRegisters ( xml, false ); db.exchangeDataUniques ( xml, true ); aLog::print(aLog::Debug, tr("aBackup dump tables ok")); } else { setLastError(tr("Can't connect to database")); aLog::print(aLog::Error, tr("aBackup init rc file %1").arg(rcfile)); db.done(); return true; } qApp->processEvents(); emit (progress(++prg,totalSteps)); db.done(); if(writeXml(tmpDirName+"/content.xml",xml)==true) { setLastError(tr("Can't write content.xml")); aLog::print(aLog::Error, tr("aBackup write content.xml")); return true; } else { aLog::print(aLog::Info, tr("aBackup dump base to xml compleet")); } return false; }
bool QgsLayout::saveAsTemplate( const QString &path, const QgsReadWriteContext &context ) const { QFile templateFile( path ); if ( !templateFile.open( QIODevice::WriteOnly | QIODevice::Truncate ) ) { return false; } QDomDocument saveDocument; QDomElement elem = writeXml( saveDocument, context ); saveDocument.appendChild( elem ); if ( templateFile.write( saveDocument.toByteArray() ) == -1 ) return false; return true; }
QgsLayout *QgsLayout::clone() const { QDomDocument currentDoc; QgsReadWriteContext context; QDomElement elem = writeXml( currentDoc, context ); currentDoc.appendChild( elem ); std::unique_ptr< QgsLayout > newLayout = qgis::make_unique< QgsLayout >( mProject ); bool ok = false; newLayout->loadFromTemplate( currentDoc, context, true, &ok ); if ( !ok ) { return nullptr; } return newLayout.release(); }
void OriginalRecording::closeFiles() { for (int i = 0; i < fileArray.size(); i++) { if (fileArray[i] != nullptr) { if (blockIndex < BLOCK_LENGTH) { // fill out the rest of the current buffer writeContinuousBuffer(zeroBuffer.getReadPointer(0), BLOCK_LENGTH - blockIndex, i); diskWriteLock.enter(); fclose(fileArray[i]); fileArray.set(i,nullptr); diskWriteLock.exit(); } } } for (int i = 0; i < spikeFileArray.size(); i++) { if (spikeFileArray[i] != nullptr) { diskWriteLock.enter(); fclose(spikeFileArray[i]); spikeFileArray.set(i,nullptr); diskWriteLock.exit(); } } if (eventFile != nullptr) { diskWriteLock.enter(); fclose(eventFile); eventFile = nullptr; diskWriteLock.exit(); } if (messageFile != nullptr) { diskWriteLock.enter(); fclose(messageFile); messageFile = nullptr; diskWriteLock.exit(); } writeXml(); blockIndex = 0; }
void MessageTreeWidget::transpondItem() { TalkDlg *talkdlg = new TalkDlg(""); talkdlg->textEdit->setPlainText(currentClickItem->text(1)); talkdlg->show(); QString str = currentClickItem->text(1); if(talkdlg->textEdit->toPlainText().length()>0&&talkdlg->textEdit->toPlainText().compare(str)!=0) { QString strNumber; QString strContent; QString strTerm="草稿"; QString strSmsSum = "草稿箱"; strContent = talkdlg->textEdit->toPlainText(); strNumber = talkdlg->strCantactNumber; addSmsElemt(strMessagePathOpen,strNumber,strContent,strTerm,strSmsSum); } writeXml(strMessagePathSave,this); emit updateTreeAllItem(); }
void LapTimerThread::onThreadTerminated() { bufferCoord.writeEndElement(); bufferCoord.writeEndElement(); bufferCoord.writeEndDocument(); bufferWaypt.writeEndElement(); bufferWaypt.writeEndElement(); bufferWaypt.writeEndDocument(); bufferSpeed.writeEndElement(); bufferSpeed.writeEndElement(); bufferSpeed.writeEndDocument(); speedTmpFile.close(); coordTmpFile.close(); wayptTmpFile.close(); writeTxt(); infoFile.close(); if (mode) writeXml(); quit(); }
void dialog_inputs::on_btn_ok_clicked() { writeXml(); checkClose(); }
void Reports::dumpAllXML(std::ostream & os, bool omitDuplicates) { writeXml(os, omitDuplicates); }
bool QgsMapLayer::writeLayerXML( QDomElement& layerElement, QDomDocument& document ) { // use scale dependent visibility flag layerElement.setAttribute( "hasScaleBasedVisibilityFlag", hasScaleBasedVisibility() ? 1 : 0 ); layerElement.setAttribute( "minimumScale", QString::number( minimumScale() ) ); layerElement.setAttribute( "maximumScale", QString::number( maximumScale() ) ); // ID QDomElement layerId = document.createElement( "id" ); QDomText layerIdText = document.createTextNode( id() ); layerId.appendChild( layerIdText ); layerElement.appendChild( layerId ); // data source QDomElement dataSource = document.createElement( "datasource" ); QString src = source(); QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( this ); // TODO: what about postgres, mysql and others, they should not go through writePath() if ( vlayer && vlayer->providerType() == "spatialite" ) { QgsDataSourceURI uri( src ); QString database = QgsProject::instance()->writePath( uri.database() ); uri.setConnection( uri.host(), uri.port(), database, uri.username(), uri.password() ); src = uri.uri(); } else if ( vlayer && vlayer->providerType() == "ogr" ) { QStringList theURIParts = src.split( "|" ); theURIParts[0] = QgsProject::instance()->writePath( theURIParts[0] ); src = theURIParts.join( "|" ); } else if ( vlayer && vlayer->providerType() == "delimitedtext" ) { QUrl urlSource = QUrl::fromEncoded( src.toAscii() ); QUrl urlDest = QUrl::fromLocalFile( QgsProject::instance()->writePath( urlSource.toLocalFile() ) ); urlDest.setQueryItems( urlSource.queryItems() ); src = QString::fromAscii( urlDest.toEncoded() ); } else { src = QgsProject::instance()->writePath( src ); } QDomText dataSourceText = document.createTextNode( src ); dataSource.appendChild( dataSourceText ); layerElement.appendChild( dataSource ); // layer name QDomElement layerName = document.createElement( "layername" ); QDomText layerNameText = document.createTextNode( originalName() ); layerName.appendChild( layerNameText ); // layer title QDomElement layerTitle = document.createElement( "title" ) ; QDomText layerTitleText = document.createTextNode( title() ); layerTitle.appendChild( layerTitleText ); // layer abstract QDomElement layerAbstract = document.createElement( "abstract" ); QDomText layerAbstractText = document.createTextNode( abstract() ); layerAbstract.appendChild( layerAbstractText ); layerElement.appendChild( layerName ); layerElement.appendChild( layerTitle ); layerElement.appendChild( layerAbstract ); // layer keyword list QStringList keywordStringList = keywordList().split( "," ); if ( keywordStringList.size() > 0 ) { QDomElement layerKeywordList = document.createElement( "keywordList" ); for ( int i = 0; i < keywordStringList.size(); ++i ) { QDomElement layerKeywordValue = document.createElement( "value" ); QDomText layerKeywordText = document.createTextNode( keywordStringList.at( i ).trimmed() ); layerKeywordValue.appendChild( layerKeywordText ); layerKeywordList.appendChild( layerKeywordValue ); } layerElement.appendChild( layerKeywordList ); } // layer metadataUrl QString aDataUrl = dataUrl(); if ( !aDataUrl.isEmpty() ) { QDomElement layerDataUrl = document.createElement( "dataUrl" ) ; QDomText layerDataUrlText = document.createTextNode( aDataUrl ); layerDataUrl.appendChild( layerDataUrlText ); layerDataUrl.setAttribute( "format", dataUrlFormat() ); layerElement.appendChild( layerDataUrl ); } // layer attribution QString aAttribution = attribution(); if ( !aAttribution.isEmpty() ) { QDomElement layerAttribution = document.createElement( "attribution" ) ; QDomText layerAttributionText = document.createTextNode( aAttribution ); layerAttribution.appendChild( layerAttributionText ); layerAttribution.setAttribute( "href", attributionUrl() ); layerElement.appendChild( layerAttribution ); } // layer metadataUrl QString aMetadataUrl = metadataUrl(); if ( !aMetadataUrl.isEmpty() ) { QDomElement layerMetadataUrl = document.createElement( "metadataUrl" ) ; QDomText layerMetadataUrlText = document.createTextNode( aMetadataUrl ); layerMetadataUrl.appendChild( layerMetadataUrlText ); layerMetadataUrl.setAttribute( "type", metadataUrlType() ); layerMetadataUrl.setAttribute( "format", metadataUrlFormat() ); layerElement.appendChild( layerMetadataUrl ); } // timestamp if supported if ( timestamp() > QDateTime() ) { QDomElement stamp = document.createElement( "timestamp" ); QDomText stampText = document.createTextNode( timestamp().toString( Qt::ISODate ) ); stamp.appendChild( stampText ); layerElement.appendChild( stamp ); } layerElement.appendChild( layerName ); // zorder // This is no longer stored in the project file. It is superfluous since the layers // are written and read in the proper order. // spatial reference system id QDomElement mySrsElement = document.createElement( "srs" ); mCRS->writeXML( mySrsElement, document ); layerElement.appendChild( mySrsElement ); #if 0 // <transparencyLevelInt> QDomElement transparencyLevelIntElement = document.createElement( "transparencyLevelInt" ); QDomText transparencyLevelIntText = document.createTextNode( QString::number( getTransparency() ) ); transparencyLevelIntElement.appendChild( transparencyLevelIntText ); maplayer.appendChild( transparencyLevelIntElement ); #endif // now append layer node to map layer node writeCustomProperties( layerElement, document ); return writeXml( layerElement, document ); } // bool QgsMapLayer::writeXML
bool aBackup::exportData(const QString& rcfile, const QString &archfile, bool withTemplates ) { QDir dir; int prg=0; int totalSteps=10; QString temp; QString tmpDirName; QString srcDirName; QStringList templatesName; #ifndef _Windows temp = getenv("TMPDIR"); if(temp=="" || temp.isEmpty()) temp = P_tmpdir; #else temp = getenv("TEMP"); #endif tmpDirName = QString(temp+"/%1").arg(QDateTime::currentDateTime().toTime_t()); tmpDirName = QDir::convertSeparators(tmpDirName); //printf("copy name = %s\n",tmpDirName.ascii()); if(!dir.mkdir(tmpDirName)) { setLastError(tr("Can't create directory %s").arg(tmpDirName)); aLog::print(aLog::Error, tr("aBackup create temporary directory")); return true; } else { aLog::print(aLog::Debug, tr("aBackup create temporary directory %1").arg(tmpDirName)); } if(!dir.mkdir(tmpDirName+"/META-INF")) { setLastError(tr("Can't create directory %s").arg(tmpDirName+"/META-INF")); aLog::print(aLog::Error, tr("aBackup create temporary directory")); cleanupTmpFiles(tmpDirName, &templatesName); return true; } else { aLog::print(aLog::Debug, tr("aBackup create temporary directory %1").arg(tmpDirName+"/META-INF")); } aCfg cfg; // create copy of metadata if(cfg.readrc( rcfile )) { setLastError(tr("Invalid resource file")); aLog::print(aLog::Error, tr("aBackup invalid *.rc file")); cleanupTmpFiles(tmpDirName, &templatesName); return true; } else { aLog::print(aLog::Debug, tr("aBackup valid *.rc file")); } qApp->processEvents(); if(withTemplates) { srcDirName = QDir::convertSeparators(cfg.rc.value("workdir")); aLog::print(aLog::Debug, tr("aBackup workdir=%1").arg(srcDirName)); dir.setPath(srcDirName); templatesName = dir.entryList("templ_*.odt;templ_*.ods"); for(uint i=0; i<templatesName.count(); i++) { //ayTests::print2log("f:\\ERROR.log", "aBackup", tmpDirName + "/templates/"+templatesName[i]); aLog::print(aLog::Debug, tr("aBackup template %1 %2").arg(i).arg(tmpDirName + "/templates/"+templatesName[i])); // file.remove(); } } emit(progress(++prg,totalSteps)); if(cfg.write( tmpDirName+"/busines-schema.cfg" )) { setLastError(tr("Can't write resource file")); aLog::print(aLog::Error, tr("aBackup write %1 file").arg(tmpDirName+"/busines-schema.cfg")); cleanupTmpFiles(tmpDirName, &templatesName); return true; } else { aLog::print(aLog::Debug, tr("aBackup write %1 file").arg(tmpDirName+"/busines-schema.cfg")); } qApp->processEvents(); emit(progress(++prg,totalSteps)); // create dump if(dumpBase(rcfile,tmpDirName, prg, totalSteps )==true) { cleanupTmpFiles(tmpDirName, &templatesName); aLog::print(aLog::Error, tr("aBackup dump base error")); return true; } else { aLog::print(aLog::Debug, tr("aBackup bump base")); } if(writeXml(QDir::convertSeparators(tmpDirName+"/META-INF/manifest.xml"), createManifest(templatesName))==true) { setLastError(tr("Can't write file META-INF/manifest.xml")); aLog::print(aLog::Error, tr("aBackup write manifest.xml")); cleanupTmpFiles(tmpDirName, &templatesName); return true; } else { aLog::print(aLog::Debug, tr("aBackup write manifest.xml")); } // printf("%s\n",(createManifest(templatesName)).toString().ascii()); if(withTemplates) { QString destNamePref = tmpDirName + "/templates"; dir.mkdir(destNamePref); bool res = false; for(uint i=0; i<templatesName.count(); i++) { // printf("copy %s to %s\n", QString(srcDirName+"/"+templatesName[i]).ascii(), QString(destNamePref+"/"+templatesName[i]).ascii()); if(!aService::copyFile(QDir::convertSeparators(srcDirName+"/"+templatesName[i]), QDir::convertSeparators(destNamePref+"/"+templatesName[i]), true)) { setLastError(tr("Can't copy template file")); res&=true; } } } if(zipArchive(archfile + ".bsa", tmpDirName)==true) { // setLastError(tr("Can't zip archive")); cleanupTmpFiles(tmpDirName, &templatesName); aLog::print(aLog::Error, tr("aBackup zip archive")); return true; } else { aLog::print(aLog::Debug, tr("aBackup zip archive")); } // remove files and directories cleanupTmpFiles(tmpDirName, &templatesName); emit (progress(++prg,totalSteps)); setLastError(tr("Data export done without errors")); aLog::print(aLog::Debug, tr("aBackup export data ok")); return false; }
bool QgsMapLayer::writeXML( QDomNode & layer_node, QDomDocument & document ) { // general layer metadata QDomElement maplayer = document.createElement( "maplayer" ); // use scale dependent visibility flag maplayer.setAttribute( "hasScaleBasedVisibilityFlag", hasScaleBasedVisibility() ? 1 : 0 ); maplayer.setAttribute( "minimumScale", minimumScale() ); maplayer.setAttribute( "maximumScale", maximumScale() ); // ID QDomElement layerId = document.createElement( "id" ); QDomText layerIdText = document.createTextNode( id() ); layerId.appendChild( layerIdText ); maplayer.appendChild( layerId ); // data source QDomElement dataSource = document.createElement( "datasource" ); QString src = source(); QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( this ); if ( vlayer && vlayer->providerType() == "spatialite" ) { QgsDataSourceURI uri( src ); QString database = QgsProject::instance()->writePath( uri.database() ); uri.setConnection( uri.host(), uri.port(), database, uri.username(), uri.password() ); src = uri.uri(); } else if ( vlayer && vlayer->providerType() == "ogr" ) { QStringList theURIParts = src.split( "|" ); theURIParts[0] = QgsProject::instance()->writePath( theURIParts[0] ); src = theURIParts.join( "|" ); } else if ( vlayer && vlayer->providerType() == "delimitedtext" ) { QUrl urlSource = QUrl::fromEncoded( src.toAscii() ); QUrl urlDest = QUrl::fromLocalFile( QgsProject::instance()->writePath( urlSource.toLocalFile() ) ); urlDest.setQueryItems( urlSource.queryItems() ); src = QString::fromAscii( urlDest.toEncoded() ); } else { src = QgsProject::instance()->writePath( src ); } QDomText dataSourceText = document.createTextNode( src ); dataSource.appendChild( dataSourceText ); maplayer.appendChild( dataSource ); // layer name QDomElement layerName = document.createElement( "layername" ); QDomText layerNameText = document.createTextNode( name() ); layerName.appendChild( layerNameText ); // layer title QDomElement layerTitle = document.createElement( "title" ) ; QDomText layerTitleText = document.createTextNode( title() ); layerTitle.appendChild( layerTitleText ); // layer abstract QDomElement layerAbstract = document.createElement( "abstract" ); QDomText layerAbstractText = document.createTextNode( abstract() ); layerAbstract.appendChild( layerAbstractText ); maplayer.appendChild( layerName ); maplayer.appendChild( layerTitle ); maplayer.appendChild( layerAbstract ); // timestamp if supported if ( timestamp() > QDateTime() ) { QDomElement stamp = document.createElement( "timestamp" ); QDomText stampText = document.createTextNode( timestamp().toString( Qt::ISODate ) ); stamp.appendChild( stampText ); maplayer.appendChild( stamp ); } maplayer.appendChild( layerName ); // zorder // This is no longer stored in the project file. It is superfluous since the layers // are written and read in the proper order. // spatial reference system id QDomElement mySrsElement = document.createElement( "srs" ); mCRS->writeXML( mySrsElement, document ); maplayer.appendChild( mySrsElement ); // <transparencyLevelInt> QDomElement transparencyLevelIntElement = document.createElement( "transparencyLevelInt" ); QDomText transparencyLevelIntText = document.createTextNode( QString::number( getTransparency() ) ); transparencyLevelIntElement.appendChild( transparencyLevelIntText ); maplayer.appendChild( transparencyLevelIntElement ); // now append layer node to map layer node layer_node.appendChild( maplayer ); writeCustomProperties( maplayer, document ); return writeXml( maplayer, document ); } // bool QgsMapLayer::writeXML
void TestKeePass2Format::testXmlInvalidXmlChars() { QScopedPointer<Database> dbWrite(new Database()); QString strPlainInvalid = QString().append(QChar(0x02)).append(QChar(0x19)).append(QChar(0xFFFE)).append(QChar(0xFFFF)); QString strPlainValid = QString() .append(QChar(0x09)) .append(QChar(0x0A)) .append(QChar(0x20)) .append(QChar(0xD7FF)) .append(QChar(0xE000)) .append(QChar(0xFFFD)); // U+10437 in UTF-16: D801 DC37 // high low surrogate QString strSingleHighSurrogate1 = QString().append(QChar(0xD801)); QString strSingleHighSurrogate2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0x32)); QString strHighHighSurrogate = QString().append(QChar(0xD801)).append(QChar(0xD801)); QString strSingleLowSurrogate1 = QString().append(QChar(0xDC37)); QString strSingleLowSurrogate2 = QString().append(QChar((0x31))).append(QChar(0xDC37)).append(QChar(0x32)); QString strLowLowSurrogate = QString().append(QChar(0xDC37)).append(QChar(0xDC37)); QString strSurrogateValid1 = QString().append(QChar(0xD801)).append(QChar(0xDC37)); QString strSurrogateValid2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0xDC37)).append(QChar(0x32)); auto entry = new Entry(); entry->setUuid(QUuid::createUuid()); entry->setGroup(dbWrite->rootGroup()); entry->attributes()->set("PlainInvalid", strPlainInvalid); entry->attributes()->set("PlainValid", strPlainValid); entry->attributes()->set("SingleHighSurrogate1", strSingleHighSurrogate1); entry->attributes()->set("SingleHighSurrogate2", strSingleHighSurrogate2); entry->attributes()->set("HighHighSurrogate", strHighHighSurrogate); entry->attributes()->set("SingleLowSurrogate1", strSingleLowSurrogate1); entry->attributes()->set("SingleLowSurrogate2", strSingleLowSurrogate2); entry->attributes()->set("LowLowSurrogate", strLowLowSurrogate); entry->attributes()->set("SurrogateValid1", strSurrogateValid1); entry->attributes()->set("SurrogateValid2", strSurrogateValid2); QBuffer buffer; buffer.open(QIODevice::ReadWrite); bool hasError; QString errorString; writeXml(&buffer, dbWrite.data(), hasError, errorString); QVERIFY(!hasError); buffer.seek(0); auto dbRead = readXml(&buffer, true, hasError, errorString); if (hasError) { qWarning("Database read error: %s", qPrintable(errorString)); } QVERIFY(!hasError); QVERIFY(dbRead.data()); QCOMPARE(dbRead->rootGroup()->entries().size(), 1); Entry* entryRead = dbRead->rootGroup()->entries().at(0); EntryAttributes* attrRead = entryRead->attributes(); QCOMPARE(attrRead->value("PlainInvalid"), QString()); QCOMPARE(attrRead->value("PlainValid"), strPlainValid); QCOMPARE(attrRead->value("SingleHighSurrogate1"), QString()); QCOMPARE(attrRead->value("SingleHighSurrogate2"), QString("12")); QCOMPARE(attrRead->value("HighHighSurrogate"), QString()); QCOMPARE(attrRead->value("SingleLowSurrogate1"), QString()); QCOMPARE(attrRead->value("SingleLowSurrogate2"), QString("12")); QCOMPARE(attrRead->value("LowLowSurrogate"), QString()); QCOMPARE(attrRead->value("SurrogateValid1"), strSurrogateValid1); QCOMPARE(attrRead->value("SurrogateValid2"), strSurrogateValid2); }
MessageTreeWidget::~MessageTreeWidget() { writeXml(strMessagePathSave,this); combineXmlFile(strMessagePathOpen,strMessagePathSave,strMessagePathOpen); }
void dialog_delftParams::on_btn_ok_clicked() { writeXml(); checkClose(); }
bool QgsMapLayer::writeLayerXML( QDomElement& layerElement, QDomDocument& document, const QString& relativeBasePath ) { // use scale dependent visibility flag layerElement.setAttribute( "hasScaleBasedVisibilityFlag", hasScaleBasedVisibility() ? 1 : 0 ); layerElement.setAttribute( "minimumScale", QString::number( minimumScale() ) ); layerElement.setAttribute( "maximumScale", QString::number( maximumScale() ) ); // ID QDomElement layerId = document.createElement( "id" ); QDomText layerIdText = document.createTextNode( id() ); layerId.appendChild( layerIdText ); layerElement.appendChild( layerId ); // data source QDomElement dataSource = document.createElement( "datasource" ); QString src = source(); QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( this ); // TODO: what about postgres, mysql and others, they should not go through writePath() if ( vlayer && vlayer->providerType() == "spatialite" ) { QgsDataSourceURI uri( src ); QString database = QgsProject::instance()->writePath( uri.database(), relativeBasePath ); uri.setConnection( uri.host(), uri.port(), database, uri.username(), uri.password() ); src = uri.uri(); } else if ( vlayer && vlayer->providerType() == "ogr" ) { QStringList theURIParts = src.split( "|" ); theURIParts[0] = QgsProject::instance()->writePath( theURIParts[0], relativeBasePath ); src = theURIParts.join( "|" ); } else if ( vlayer && vlayer->providerType() == "gpx" ) { QStringList theURIParts = src.split( "?" ); theURIParts[0] = QgsProject::instance()->writePath( theURIParts[0], relativeBasePath ); src = theURIParts.join( "?" ); } else if ( vlayer && vlayer->providerType() == "delimitedtext" ) { QUrl urlSource = QUrl::fromEncoded( src.toAscii() ); QUrl urlDest = QUrl::fromLocalFile( QgsProject::instance()->writePath( urlSource.toLocalFile(), relativeBasePath ) ); urlDest.setQueryItems( urlSource.queryItems() ); src = QString::fromAscii( urlDest.toEncoded() ); } else { bool handled = false; if ( !vlayer ) { QgsRasterLayer *rlayer = qobject_cast<QgsRasterLayer *>( this ); // Update path for subdataset if ( rlayer && rlayer->providerType() == "gdal" ) { if ( src.startsWith( "NETCDF:" ) ) { // NETCDF:filename:variable // filename can be quoted with " as it can contain colons QRegExp r( "NETCDF:(.+):([^:]+)" ); if ( r.exactMatch( src ) ) { QString filename = r.cap( 1 ); if ( filename.startsWith( '"' ) && filename.endsWith( '"' ) ) filename = filename.mid( 1, filename.length() - 2 ); src = "NETCDF:\"" + QgsProject::instance()->writePath( filename, relativeBasePath ) + "\":" + r.cap( 2 ); handled = true; } } else if ( src.startsWith( "HDF4_SDS:" ) ) { // HDF4_SDS:subdataset_type:file_name:subdataset_index // filename can be quoted with " as it can contain colons QRegExp r( "HDF4_SDS:([^:]+):(.+):([^:]+)" ); if ( r.exactMatch( src ) ) { QString filename = r.cap( 2 ); if ( filename.startsWith( '"' ) && filename.endsWith( '"' ) ) filename = filename.mid( 1, filename.length() - 2 ); src = "HDF4_SDS:" + r.cap( 1 ) + ":\"" + QgsProject::instance()->writePath( filename, relativeBasePath ) + "\":" + r.cap( 3 ); handled = true; } } else if ( src.startsWith( "HDF5:" ) ) { // HDF5:file_name:subdataset // filename can be quoted with " as it can contain colons QRegExp r( "HDF5:(.+):([^:]+)" ); if ( r.exactMatch( src ) ) { QString filename = r.cap( 1 ); if ( filename.startsWith( '"' ) && filename.endsWith( '"' ) ) filename = filename.mid( 1, filename.length() - 2 ); src = "HDF5:\"" + QgsProject::instance()->writePath( filename, relativeBasePath ) + "\":" + r.cap( 2 ); handled = true; } } else if ( src.contains( QRegExp( "^(NITF_IM|RADARSAT_2_CALIB):" ) ) ) { // NITF_IM:0:filename // RADARSAT_2_CALIB:?:filename QRegExp r( "([^:]+):([^:]+):(.+)" ); if ( r.exactMatch( src ) ) { src = r.cap( 1 ) + ":" + r.cap( 2 ) + ":" + QgsProject::instance()->writePath( r.cap( 3 ), relativeBasePath ); handled = true; } } } } if ( !handled ) src = QgsProject::instance()->writePath( src, relativeBasePath ); } QDomText dataSourceText = document.createTextNode( src ); dataSource.appendChild( dataSourceText ); layerElement.appendChild( dataSource ); // layer name QDomElement layerName = document.createElement( "layername" ); QDomText layerNameText = document.createTextNode( originalName() ); layerName.appendChild( layerNameText ); // layer title QDomElement layerTitle = document.createElement( "title" ); QDomText layerTitleText = document.createTextNode( title() ); layerTitle.appendChild( layerTitleText ); // layer abstract QDomElement layerAbstract = document.createElement( "abstract" ); QDomText layerAbstractText = document.createTextNode( abstract() ); layerAbstract.appendChild( layerAbstractText ); layerElement.appendChild( layerName ); layerElement.appendChild( layerTitle ); layerElement.appendChild( layerAbstract ); // layer keyword list QStringList keywordStringList = keywordList().split( "," ); if ( keywordStringList.size() > 0 ) { QDomElement layerKeywordList = document.createElement( "keywordList" ); for ( int i = 0; i < keywordStringList.size(); ++i ) { QDomElement layerKeywordValue = document.createElement( "value" ); QDomText layerKeywordText = document.createTextNode( keywordStringList.at( i ).trimmed() ); layerKeywordValue.appendChild( layerKeywordText ); layerKeywordList.appendChild( layerKeywordValue ); } layerElement.appendChild( layerKeywordList ); } // layer metadataUrl QString aDataUrl = dataUrl(); if ( !aDataUrl.isEmpty() ) { QDomElement layerDataUrl = document.createElement( "dataUrl" ); QDomText layerDataUrlText = document.createTextNode( aDataUrl ); layerDataUrl.appendChild( layerDataUrlText ); layerDataUrl.setAttribute( "format", dataUrlFormat() ); layerElement.appendChild( layerDataUrl ); } // layer legendUrl QString aLegendUrl = legendUrl(); if ( !aLegendUrl.isEmpty() ) { QDomElement layerLegendUrl = document.createElement( "legendUrl" ); QDomText layerLegendUrlText = document.createTextNode( aLegendUrl ); layerLegendUrl.appendChild( layerLegendUrlText ); layerLegendUrl.setAttribute( "format", legendUrlFormat() ); layerElement.appendChild( layerLegendUrl ); } // layer attribution QString aAttribution = attribution(); if ( !aAttribution.isEmpty() ) { QDomElement layerAttribution = document.createElement( "attribution" ); QDomText layerAttributionText = document.createTextNode( aAttribution ); layerAttribution.appendChild( layerAttributionText ); layerAttribution.setAttribute( "href", attributionUrl() ); layerElement.appendChild( layerAttribution ); } // layer metadataUrl QString aMetadataUrl = metadataUrl(); if ( !aMetadataUrl.isEmpty() ) { QDomElement layerMetadataUrl = document.createElement( "metadataUrl" ); QDomText layerMetadataUrlText = document.createTextNode( aMetadataUrl ); layerMetadataUrl.appendChild( layerMetadataUrlText ); layerMetadataUrl.setAttribute( "type", metadataUrlType() ); layerMetadataUrl.setAttribute( "format", metadataUrlFormat() ); layerElement.appendChild( layerMetadataUrl ); } // timestamp if supported if ( timestamp() > QDateTime() ) { QDomElement stamp = document.createElement( "timestamp" ); QDomText stampText = document.createTextNode( timestamp().toString( Qt::ISODate ) ); stamp.appendChild( stampText ); layerElement.appendChild( stamp ); } layerElement.appendChild( layerName ); // zorder // This is no longer stored in the project file. It is superfluous since the layers // are written and read in the proper order. // spatial reference system id QDomElement mySrsElement = document.createElement( "srs" ); mCRS->writeXML( mySrsElement, document ); layerElement.appendChild( mySrsElement ); #if 0 // <transparencyLevelInt> QDomElement transparencyLevelIntElement = document.createElement( "transparencyLevelInt" ); QDomText transparencyLevelIntText = document.createTextNode( QString::number( getTransparency() ) ); transparencyLevelIntElement.appendChild( transparencyLevelIntText ); maplayer.appendChild( transparencyLevelIntElement ); #endif // now append layer node to map layer node writeCustomProperties( layerElement, document ); return writeXml( layerElement, document ); } // bool QgsMapLayer::writeXML
/** * * Fake params: --device ipod --connection usb --pid 4611 --vid 1452 --serial 000000C8B035 */ int main( int argc, char** argv ) { // Make sure the logger exists in this binary #ifdef Q_OS_WIN QString bytes = TwiddlyApplication::log( TwiddlyApplication::applicationName() ).absoluteFilePath(); const wchar_t* path = bytes.utf16(); #else QByteArray bytes = TwiddlyApplication::log( TwiddlyApplication::applicationName() ).absoluteFilePath().toLocal8Bit(); const char* path = bytes.data(); #endif new Logger( path ); TwiddlyApplication::setApplicationName( "iPodScrobbler" ); TwiddlyApplication::setApplicationVersion( "2" ); TwiddlyApplication app( argc, argv ); if ( app.isRunning() ) { qDebug() << "The iPod Scrobbler is already running. Shutting down" << app.arguments(); return 1; } // check we're using a compatible version of the plugin unicorn::Version compatibleVersion( 6, 0, 5, 4 ); unicorn::Version installedVersion; #ifdef Q_OS_WIN unicorn::ITunesPluginInfo* iTunesPluginInfo = new unicorn::ITunesPluginInfo; installedVersion = iTunesPluginInfo->installedVersion(); delete iTunesPluginInfo; #else // TODO: get the actual installed version installedVersion = unicorn::ITunesPluginInstaller::installedVersion(); #endif if ( installedVersion < compatibleVersion ) { // tell the app that the plugin is incompatible QStringList args; args << "--tray"; args << "--twiddly"; args << "incompatible-plugin"; Utils::startAudioscrobbler( args ); qDebug() << "The iTunes pluggin is old and incompatible. Please update. Shutting down" << app.arguments(); return 1; } try { if ( app.arguments().contains( "--bootstrap-needed?" ) ) { return AutomaticIPod::PlayCountsDatabase().isBootstrapNeeded(); } QDateTime start_time = QDateTime::currentDateTime(); QTime time; time.start(); if ( app.arguments().contains( "--bootstrap" ) ) { AutomaticIPod::PlayCountsDatabase().bootstrap(); } else // twiddle! { app.sendBusMessage( "--twiddling" ); IPod* ipod = IPod::fromCommandLineArguments( app.arguments() ); { QStringList args; args << "--tray"; args << "--twiddly"; args << "starting"; args << "--deviceId"; args << ipod->uid(); args << "--deviceName"; args << ipod->name; Utils::startAudioscrobbler( args ); } qDebug() << "Twiddling device: " << ipod->serial; ipod->twiddle(); //------------------------------------------------------------------ IPodType previousType = ipod->settings().type(); IPodType currentType = app.arguments().contains( "--manual" ) ? IPodManualType : IPodAutomaticType; if ( previousType == IPodManualType && currentType == IPodAutomaticType ) { qDebug() << "iPod switched from manual to automatic - deleting manual db and ignoring scrobbles"; // The iPod was manual, but is now automatic, we must: // 1. remove the manual db, to avoid misscrobbles if it ever becomes // manual again QString path = ManualIPod::PlayCountsDatabase( ipod ).path(); QFile( path ).remove(); // 2. not scrobble this time :( because any tracks that were on the // the iPod and are also in the iTunes library will be merged // and if they ever played on the iPod, will increase the iTunes // library playcounts. We need to sync the Automatic playcountsdb // but not scrobble anything. ipod->scrobbles().clear(); } ipod->settings().setType( currentType ); //------------------------------------------------------------------ if (ipod->scrobbles().count()) { // create a unique storage location for the XML QDir dir = ipod->saveDir().filePath( "scrobbles" ); QString filename = QDateTime::currentDateTime().toString( "yyyyMMddhhmmss" ) + ".xml"; QString path = dir.filePath( filename ); dir.mkpath( "." ); QDomDocument xml = ipod->scrobbles().xml(); xml.documentElement().setAttribute( "uid", ipod->uid() ); writeXml( xml, path ); QStringList args; args << "--tray"; args << "--twiddly"; args << "complete"; args << "--ipod-path"; args << path; args << "--deviceId"; args << ipod->uid(); args << "--deviceName"; args << ipod->name; Utils::startAudioscrobbler( args ); } else { QStringList args; args << "--tray"; args << "--twiddly"; args << "no-tracks-found"; args << "--deviceId"; args << ipod->uid(); args << "--deviceName"; args << ipod->name; Utils::startAudioscrobbler( args ); } // do last so we don't record a sync if we threw and thus it "didn't" happen ipod->settings().setLastSync( start_time ); delete ipod; } qDebug() << "Procedure took:" << time.elapsed() << "milliseconds"; } catch( QString& s ) { logException( s ); } catch( std::string& s ) { logException( QString::fromStdString( s ) ); } catch( const char* s ) { logException( s ); } catch( ITunesException& e ) { logException( e.what() ); } return 0; }