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 }