[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/graphics/digikam/libs/database
From:       Marcel Wiesweg <marcel.wiesweg () gmx ! de>
Date:       2008-04-27 13:23:16
Message-ID: 1209302596.872097.17476.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 801688 by mwiesweg:

- add methods providing default values, to have them in one place

- return SearchXml::Search on XML root element. This allows to read/write
  an attribute into the root element
- do not explicitly write operators if they are default values


 M  +14 -8     searchxml.cpp  
 M  +5 -0      searchxml.h  


--- trunk/extragear/graphics/digikam/libs/database/searchxml.cpp #801687:801688
@@ -32,6 +32,9 @@
     : QXmlStreamReader(xml)
 {
     m_defaultFieldOperator = SearchXml::And;
+
+    // read in root element "search"
+    readNext();
 }
 
 SearchXml::Element SearchXmlReader::readNext()
@@ -57,7 +60,7 @@
             if (isGroupElement())
             {
                 // get possible default operator
-                m_defaultFieldOperator = readOperator("fieldoperator", \
SearchXml::And); +                m_defaultFieldOperator = \
readOperator("fieldoperator", SearchXml::standardFieldOperator());  return \
SearchXml::Group;  }
             else if (isFieldElement())
@@ -66,8 +69,8 @@
             }
             else if (name() == "search")
             {
-                // root element, skip
-                continue;
+                // root element
+                return SearchXml::Search;
             }
         }
     }
@@ -87,7 +90,7 @@
 
 SearchXml::Operator SearchXmlReader::groupOperator() const
 {
-    return readOperator("operator", SearchXml::Or);
+    return readOperator("operator", SearchXml::standardGroupOperator());
 }
 
 QString SearchXmlReader::groupCaption() const
@@ -112,7 +115,7 @@
 
 SearchXml::Relation SearchXmlReader::fieldRelation() const
 {
-    return readRelation("relation", SearchXml::Equal);
+    return readRelation("relation", SearchXml::standardFieldRelation());
 }
 
 QString SearchXmlReader::value()
@@ -258,17 +261,20 @@
 
 void SearchXmlWriter::setGroupOperator(SearchXml::Operator op)
 {
-    writeOperator("operator", op);
+    if (op != SearchXml::Or)
+        writeOperator("operator", op);
 }
 
 void SearchXmlWriter::setGroupCaption(const QString &caption)
 {
-    writeAttribute("caption", caption);
+    if (!caption.isNull())
+        writeAttribute("caption", caption);
 }
 
 void SearchXmlWriter::setDefaultFieldOperator(SearchXml::Operator op)
 {
-    writeOperator("fieldoperator", op);
+    if (op != SearchXml::And)
+        writeOperator("fieldoperator", op);
 }
 
 void SearchXmlWriter::writeField(const QString &name, SearchXml::Relation relation)
--- trunk/extragear/graphics/digikam/libs/database/searchxml.h #801687:801688
@@ -52,6 +52,7 @@
 
     enum Element
     {
+        Search,
         Group,
         GroupEnd,
         Field,
@@ -92,6 +93,10 @@
         return false;
     }
 
+    /** General default values for groupOperator() and defaultFieldOperator() */
+    inline SearchXml::Operator standardGroupOperator() { return SearchXml::Or; }
+    inline SearchXml::Operator standardFieldOperator() { return SearchXml::And; }
+    inline SearchXml::Relation standardFieldRelation() { return SearchXml::Equal; }
 }
 
 class DIGIKAM_EXPORT SearchXmlReader : public QXmlStreamReader


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic