KSycocaEntry* KBuildServiceTypeFactory::createEntry(const QString &file, const char *resource) const { QString name = file; int pos = name.lastIndexOf('/'); if (pos != -1) { name = name.mid(pos+1); } if (name.isEmpty()) return 0; KDesktopFile desktopFile(resource, file); const KConfigGroup desktopGroup = desktopFile.desktopGroup(); if ( desktopGroup.readEntry( "Hidden", false ) == true ) return 0; const QString type = desktopGroup.readEntry( "Type" ); if ( type != QLatin1String( "ServiceType" ) ) { kWarning(7012) << "The service type config file " << desktopFile.fileName() << " has Type=" << type << " instead of Type=ServiceType"; return 0; } const QString serviceType = desktopGroup.readEntry( "X-KDE-ServiceType" ); if ( serviceType.isEmpty() ) { kWarning(7012) << "The service type config file " << desktopFile.fileName() << " does not contain a ServiceType=... entry"; return 0; } KServiceType* e = new KServiceType( &desktopFile ); if (e->isDeleted()) { delete e; return 0; } if ( !(e->isValid()) ) { kWarning(7012) << "Invalid ServiceType : " << file; delete e; return 0; } return e; }
KSycocaEntry * KBuildServiceTypeFactory::createEntry(const TQString &file, const char *resource) { TQString name = file; int pos = name.findRev('/'); if (pos != -1) { name = name.mid(pos+1); } if (name.isEmpty()) return 0; KDesktopFile desktopFile(file, true, resource); if ( desktopFile.readBoolEntry( "Hidden", false ) == true ) return 0; // TODO check Type field first TQString mime = desktopFile.readEntry( "MimeType" ); TQString service = desktopFile.readEntry( "X-TDE-ServiceType" ); if ( mime.isEmpty() && service.isEmpty() ) { TQString tmp = TQString("The service/mime type config file\n%1\n" "does not contain a ServiceType=...\nor MimeType=... entry").arg( file ); kdWarning(7012) << tmp << endl; return 0; } KServiceType* e; if ( mime == "inode/directory" ) e = new KFolderType( &desktopFile ); else if ( (mime == "application/x-desktop") || (mime == "media/builtin-mydocuments") || (mime == "media/builtin-mycomputer") || (mime == "media/builtin-mynetworkplaces") || (mime == "media/builtin-printers") || (mime == "media/builtin-trash") || (mime == "media/builtin-webbrowser") ) e = new KDEDesktopMimeType( &desktopFile ); else if ( mime == "application/x-executable" || mime == "application/x-shellscript" ) e = new KExecMimeType( &desktopFile ); else if ( !mime.isEmpty() ) e = new KMimeType( &desktopFile ); else e = new KServiceType( &desktopFile ); if (e->isDeleted()) { delete e; return 0; } if ( !(e->isValid()) ) { kdWarning(7012) << "Invalid ServiceType : " << file << endl; delete e; return 0; } return e; }