예제 #1
0
// 出售商品的确定按钮
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();
        }
}
예제 #2
0
파일: Value.cpp 프로젝트: eric-casellas/vle
std::string
Value::writeToXml() const
{
    std::ostringstream out;
    writeXml(out);
    return out.str();
}
예제 #3
0
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();
}
예제 #4
0
파일: XMLSchema.cpp 프로젝트: mloskot/PDAL
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();
}
예제 #6
0
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();
}
예제 #7
0
파일: profile.cpp 프로젝트: Snodig/Nagios
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();
}
예제 #8
0
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);
    }
}
예제 #9
0
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;
}
예제 #10
0
파일: qgslayout.cpp 프로젝트: NathanW2/QGIS
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;
}
예제 #11
0
파일: qgslayout.cpp 프로젝트: NathanW2/QGIS
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();
}
예제 #12
0
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;
}
예제 #13
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();
}
예제 #14
0
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();
}
예제 #15
0
void dialog_inputs::on_btn_ok_clicked()
{
    writeXml();

    checkClose();
}
예제 #16
0
파일: Reports.cpp 프로젝트: EmuxEvans/vera
void Reports::dumpAllXML(std::ostream & os, bool omitDuplicates)
{
    writeXml(os, omitDuplicates);
}
예제 #17
0
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
예제 #18
0
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;
}
예제 #19
0
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);
}
예제 #21
0
MessageTreeWidget::~MessageTreeWidget()
{
	writeXml(strMessagePathSave,this);
	combineXmlFile(strMessagePathOpen,strMessagePathSave,strMessagePathOpen);
}
예제 #22
0
void dialog_delftParams::on_btn_ok_clicked()
{
    writeXml();

    checkClose();
}
예제 #23
0
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
예제 #24
0
/**
  *
  * 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;
}