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