[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