KIO
kimageio.cpp
Go to the documentation of this file.00001 00008 #include "kimageio.h" 00009 00010 #include "kmimetype.h" 00011 #include <kservicetypetrader.h> 00012 #include <klocale.h> 00013 #include <kdebug.h> 00014 00015 QString 00016 KImageIO::pattern(Mode mode) 00017 { 00018 QStringList patterns; 00019 QString allPatterns; 00020 QString separator("|"); 00021 00022 const KService::List services = KServiceTypeTrader::self()->query("QImageIOPlugins"); 00023 KService::Ptr service; 00024 foreach(service, services) 00025 { 00026 if ( (service->property("X-KDE-Read").toBool() && mode == Reading) || 00027 (service->property("X-KDE-Write").toBool() && mode == Writing ) ) { 00028 00029 QString mimeType = service->property("X-KDE-MimeType").toString(); 00030 if ( mimeType.isEmpty() ) continue; 00031 KMimeType::Ptr mime = KMimeType::mimeType( mimeType ); 00032 if (!mime) { 00033 kWarning() << service->entryPath() << " specifies unknown mimetype " << mimeType; 00034 } else { 00035 QString pattern = mime->patterns().join(" "); 00036 patterns.append( pattern + separator + mime->comment() ); 00037 if (!allPatterns.isEmpty() ) 00038 allPatterns += ' '; 00039 allPatterns += pattern; 00040 } 00041 } 00042 } 00043 00044 allPatterns = allPatterns + separator + i18n("All Pictures"); 00045 patterns.sort(); 00046 patterns.prepend(allPatterns); 00047 00048 QString pattern = patterns.join(QLatin1String("\n")); 00049 return pattern; 00050 } 00051 00052 QStringList KImageIO::typeForMime(const QString& mimeType) 00053 { 00054 if ( mimeType.isEmpty() ) 00055 return QStringList(); 00056 00057 KService::List services = KServiceTypeTrader::self()->query("QImageIOPlugins"); 00058 KService::Ptr service; 00059 foreach(service, services) { 00060 if ( mimeType == service->property("X-KDE-MimeType").toString() ) 00061 return ( service->property("X-KDE-ImageFormat").toStringList() ); 00062 } 00063 return QStringList(); 00064 } 00065 00066 QStringList KImageIO::mimeTypes( Mode mode ) 00067 { 00068 QStringList mimeList, allFormats; 00069 00070 KService::List services = KServiceTypeTrader::self()->query("QImageIOPlugins"); 00071 KService::Ptr service; 00072 foreach(service, services) { 00073 if ( (service->property("X-KDE-Read").toBool() && mode == Reading) || 00074 (service->property("X-KDE-Write").toBool() && mode == Writing ) ) { 00075 00076 const QString mime = service->property("X-KDE-MimeType").toString(); 00077 if ( !mime.isEmpty() ) 00078 mimeList.append( mime ); 00079 } 00080 } 00081 00082 return mimeList; 00083 } 00084 00085 QStringList KImageIO::types( Mode mode ) 00086 { 00087 QStringList imagetypes; 00088 KService::List services = KServiceTypeTrader::self()->query("QImageIOPlugins"); 00089 KService::Ptr service; 00090 foreach(service, services) { 00091 if ( (service->property("X-KDE-Read").toBool() && mode == Reading) || 00092 (service->property("X-KDE-Write").toBool() && mode == Writing ) ) { 00093 00094 imagetypes += service->property("X-KDE-ImageFormat").toStringList(); 00095 } 00096 } 00097 return imagetypes; 00098 } 00099 00100 bool KImageIO::isSupported( const QString& mimeType, Mode mode ) 00101 { 00102 if (mimeType.isEmpty() ) 00103 return false; 00104 00105 KService::List services = KServiceTypeTrader::self()->query("QImageIOPlugins"); 00106 KService::Ptr service; 00107 foreach(service, services) { 00108 if ( mimeType == service->property("X-KDE-MimeType").toString() ) { 00109 00110 if ( (service->property("X-KDE-Read").toBool() && mode == Reading) || 00111 (service->property("X-KDE-Write").toBool() && mode == Writing ) ) { 00112 00113 return true; 00114 } else { 00115 return false; 00116 } 00117 } 00118 } 00119 return false; 00120 }