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

List:       kde-commits
Subject:    kdelibs/kio/kio
From:       David Faure <faure () kde ! org>
Date:       2004-01-08 13:54:28
Message-ID: 20040108135428.2DD3C2BF9 () office ! kde ! org
[Download RAW message or body]

CVS commit by faure: 

Fix for trader queries like "exist Library". This would always be true since property()
returned a QVariant(QString::null) instead of an invalid QVariant.
QVariant("") != QVariant(QString::null) != QVariant()...
Approved by Waldo.


  M +21 -11    kservice.cpp   1.153


--- kdelibs/kio/kio/kservice.cpp  #1.152:1.153
@@ -460,24 +460,34 @@ QVariant KService::property( const QStri
 }
 
+// Return a string QVariant if string isn't null, and invalid variant otherwise
+// (the variant must be invalid if the field isn't in the .desktop file)
+// This allows trader queries like "exist Library" to work.
+static QVariant makeStringVariant( const QString& string )
+{
+    // Using isEmpty here would be wrong.
+    // Empty is "specified but empty", null is "not specified" (in the .desktop file)
+    return string.isNull() ? QVariant() : QVariant( string );
+}
+
 QVariant KService::property( const QString& _name, QVariant::Type t ) const
 {
   if ( _name == "Type" )
-    return QVariant( m_strType );
+    return QVariant( m_strType ); // can't be null
   else if ( _name == "Name" )
-    return QVariant( m_strName );
+    return QVariant( m_strName ); // can't be null
   else if ( _name == "Exec" )
-    return QVariant( m_strExec );
+    return makeStringVariant( m_strExec );
   else if ( _name == "Icon" )
-    return QVariant( m_strIcon );
+    return makeStringVariant( m_strIcon );
   else if ( _name == "Terminal" )
     return QVariant( static_cast<int>(m_bTerminal) );
   else if ( _name == "TerminalOptions" )
-    return QVariant( m_strTerminalOptions );
+    return makeStringVariant( m_strTerminalOptions );
   else if ( _name == "Path" )
-    return QVariant( m_strPath );
+    return makeStringVariant( m_strPath );
   else if ( _name == "Comment" )
-    return QVariant( m_strComment );
+    return makeStringVariant( m_strComment );
   else if ( _name == "GenericName" )
-    return QVariant( m_strGenName );
+    return makeStringVariant( m_strGenName );
   else if ( _name == "ServiceTypes" )
     return QVariant( m_lstServiceTypes );
@@ -487,9 +497,9 @@ QVariant KService::property( const QStri
     return QVariant( m_initialPreference );
   else if ( _name == "Library" )
-    return QVariant( m_strLibrary );
-  else if ( _name == "DesktopEntryPath" )
+    return makeStringVariant( m_strLibrary );
+  else if ( _name == "DesktopEntryPath" ) // can't be null
     return QVariant( entryPath() );
   else if ( _name == "DesktopEntryName")
-    return QVariant( m_strDesktopEntryName );
+    return QVariant( m_strDesktopEntryName ); // can't be null
   else if ( _name == "Categories")
     return QVariant( d->categories );


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

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