[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [plasmate/terietor/kconfigxt] editors/kconfigxt: kconfigxtwriter works
From: Giorgos Tsiapaliwkas <terietor () gmail ! com>
Date: 2012-07-17 16:49:08
Message-ID: 20120717164908.6B43AA6094 () git ! kde ! org
[Download RAW message or body]
Git commit acabade8e15f51e4d0f62b6c53fcba67ad43a240 by Giorgos Tsiapaliwkas.
Committed on 17/07/2012 at 18:48.
Pushed by tsiapaliwkas into branch 'terietor/kconfigxt'.
kconfigxtwriter works
M +19 -10 editors/kconfigxt/kconfigxteditor.cpp
M +35 -27 editors/kconfigxt/kconfigxtwriter.cpp
M +2 -1 editors/kconfigxt/kconfigxtwriter.h
http://commits.kde.org/plasmate/acabade8e15f51e4d0f62b6c53fcba67ad43a240
diff --git a/editors/kconfigxt/kconfigxteditor.cpp b/editors/kconfigxt/kconfigxteditor.cpp
index 20c6376..d6f6449 100644
--- a/editors/kconfigxt/kconfigxteditor.cpp
+++ b/editors/kconfigxt/kconfigxteditor.cpp
@@ -161,6 +161,7 @@ void KConfigXtEditor::giveElementsToWriter(KConfigXtReaderItem& newElement)
{
takeDataFromParser();
m_keysValuesTypes.append(newElement);
+
KConfigXtWriter writer(filename().pathOrUrl());
QList<KConfigXtWriterItem> list = writer.readerItemsToWriterIems(m_groups, m_keysValuesTypes);
writer.setData(list);
@@ -196,11 +197,14 @@ void KConfigXtEditor::setupWidgetsForEntries(QTreeWidgetItem *item)
//also we will take new keys values and types so clear our list
m_keysValuesTypes.clear();
- //take keys,values and types for the specified group
- takeDataFromParser(item->text(0));
+ //take keys,values,types and groups
+ takeDataFromParser();
- foreach(const KConfigXtReaderItem& item, m_keysValuesTypes) {
- addEntryToUi(item.entryName(), item.entryType(), item.entryValue());
+ foreach(const KConfigXtReaderItem& entry, m_keysValuesTypes) {
+ //check if this group has an entry
+ if (item->text(0) == entry.groupName()) {
+ addEntryToUi(entry.entryName(), entry.entryType(), entry.entryValue());
+ }
}
}
@@ -223,13 +227,18 @@ void KConfigXtEditor::takeDataFromParser()
//take the name of the groups, also due to the fact
//that we take data from a parser we have to be careful so
//check if the group exists in the list
- if (!item.groupName().isEmpty() && !m_groups.contains(item.groupName())) {
- m_groups << item.groupName();
- }
+ if (!item.groupName().isEmpty()) {
+ if (!m_groups.contains(item.groupName())) {
+ m_groups << item.groupName();
+ }
+
+ if (!m_keysValuesTypes.contains(item) &&
+ !item.entryName().isEmpty())
+ {
+ //take the entries
+ m_keysValuesTypes.append(item);
+ }
- if (!m_keysValuesTypes.contains(item)) {
- //take the entrie
- m_keysValuesTypes.append(item);
}
}
}
diff --git a/editors/kconfigxt/kconfigxtwriter.cpp b/editors/kconfigxt/kconfigxtwriter.cpp
index eca35dd..b8db949 100644
--- a/editors/kconfigxt/kconfigxtwriter.cpp
+++ b/editors/kconfigxt/kconfigxtwriter.cpp
@@ -55,29 +55,29 @@ void KConfigXtWriterItem::setEntries(QList<KConfigXtReaderItem> entries)
}
KConfigXtWriter::KConfigXtWriter(QObject *parent)
- : QObject(parent)
+ : QObject(parent),
+ m_writer(0),
+ m_xmlFile(0)
{
}
KConfigXtWriter::KConfigXtWriter(const QString& xmlFilePath, QObject *parent)
- : QObject(parent)
+ : QObject(parent),
+ m_writer(0),
+ m_xmlFile(0)
{
setConfigXmlFile(xmlFilePath);
}
void KConfigXtWriter::setConfigXmlFile(const QString& filename)
{
- QFile xmlFile(filename);
+ m_xmlFile = new QFile(filename, this);
- //clear the file
- xmlFile.resize(0);
-
- if (!xmlFile.open(QIODevice::ReadWrite)) {
+ if (!m_xmlFile->open(QIODevice::WriteOnly)) {
return;
}
- m_writer.setDevice(&xmlFile);
-
+ m_writer = new QXmlStreamWriter(m_xmlFile);
}
QList< KConfigXtWriterItem > KConfigXtWriter::data()
@@ -96,14 +96,18 @@ void KConfigXtWriter::writeXML()
return;
}
- m_writer.setAutoFormatting(true);
- m_writer.writeStartDocument();
+ m_writer->setAutoFormatting(true);
+ m_writer->setAutoFormattingIndent(4);
+
+ //start the document
+ m_writer->writeStartDocument();
+
+ //start kcfg element
+ m_writer->writeStartElement("kcfg");
foreach(const KConfigXtWriterItem& writerItem, m_dataList) {
//start group
- m_writer.writeStartElement("group");
- //start kcfg element
- m_writer.writeStartElement("kcfg");
+ m_writer->writeStartElement("group");
//TODO add the above into the xml
/*every kconfigxt xml file contains the below data
@@ -117,29 +121,31 @@ void KConfigXtWriter::writeXML()
* </kcfg>
*
*/
-
- m_writer.writeAttribute("name", writerItem.group());
+ m_writer->writeAttribute("name", writerItem.group());
foreach(const KConfigXtReaderItem& readerItem, writerItem.entries()) {
//start entry
- m_writer.writeStartElement("entry");
- m_writer.writeAttribute("name", readerItem.entryName());
- m_writer.writeAttribute("type", readerItem.entryType());
+ m_writer->writeStartElement("entry");
+ m_writer->writeAttribute("name", readerItem.entryName());
+ m_writer->writeAttribute("type", readerItem.entryType());
//start default
- m_writer.writeStartElement("default");
- m_writer.writeCharacters(readerItem.entryValue());
+ m_writer->writeStartElement("default");
+ m_writer->writeCharacters(readerItem.entryValue());
//end default
- m_writer.writeEndElement();
+ m_writer->writeEndElement();
//end entry
- m_writer.writeEndElement();
+ m_writer->writeEndElement();
}
//end group
- m_writer.writeEndElement();
+ m_writer->writeEndElement();
}
//end kcfg
- m_writer.writeEndElement();
+ m_writer->writeEndElement();
//end the document
- m_writer.writeEndDocument();
+ m_writer->writeEndDocument();
+
+ //finally close the device and write our data
+ m_writer->device()->close();
}
QList<KConfigXtWriterItem> KConfigXtWriter::readerItemsToWriterIems(QStringList& groupList,
@@ -159,7 +165,9 @@ QList<KConfigXtWriterItem> KConfigXtWriter::readerItemsToWriterIems(QStringList&
tmpEntry.setEntryType(entry.entryType());
tmpEntry.setEntryValue(entry.entryValue());
- tmpEntryList.append(tmpEntry);
+ if (!tmpEntryList.contains(tmpEntry)) {
+ tmpEntryList.append(tmpEntry);
+ }
}
}
tmpItem.setEntries(tmpEntryList);
diff --git a/editors/kconfigxt/kconfigxtwriter.h b/editors/kconfigxt/kconfigxtwriter.h
index ea3607d..72590ce 100644
--- a/editors/kconfigxt/kconfigxtwriter.h
+++ b/editors/kconfigxt/kconfigxtwriter.h
@@ -80,7 +80,8 @@ public:
private:
QList<KConfigXtWriterItem> m_dataList;
- QXmlStreamWriter m_writer;
+ QFile m_xmlFile;
+ QXmlStreamWriter *m_writer;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic