[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