[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegraphics/kviewshell
From: Wilfried Huss <Wilfried.Huss () gmx ! at>
Date: 2006-06-18 13:32:22
Message-ID: 1150637542.204887.13408.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 552599 by whuss:
port of commit 552585:
Use standard MimeType field in the plugin desktop files, and allow
to specify a list of supported mimetypes. Previously we needed a
separate desktop file for each mimetype.
M +1 -1 plugins/djvu/djvumultipage.desktop
M +1 -1 plugins/dvi/kdvimultipage.desktop
M +1 -1 plugins/fax/CMakeLists.txt
M +1 -1 plugins/fax/kfaxmultipage.desktop
D plugins/fax/kfaxmultipage_tiff.desktop
M +1 -1 plugins/pdf/pdfMultipage.desktop
M +1 -1 plugins/ps/psMultipage.desktop
M +53 -17 shell/kviewpart.cpp
--- trunk/KDE/kdegraphics/kviewshell/plugins/djvu/djvumultipage.desktop \
#552598:552599 @@ -8,6 +8,6 @@
Comment[fr]=Module KViewShell pour les fichiers DjVu
Comment[x-test]=xxKViewShell plugin for DjVu filesxx
ServiceTypes=KViewShell/MultiPage
-X-KDE-MimeTypes=image/x-djvu
+MimeType=image/x-djvu
X-KDE-Library=djvuviewpart
X-KDE-MultiPageVersion=3
--- trunk/KDE/kdegraphics/kviewshell/plugins/dvi/kdvimultipage.desktop #552598:552599
@@ -6,6 +6,6 @@
Name[fr]=Multi-page KDVI
Name[x-test]=xxKDVIMultiPagexx
ServiceTypes=KViewShell/MultiPage
+MimeType=application/x-dvi
X-KDE-Library=kdvipart
-X-KDE-MimeTypes=application/x-dvi
X-KDE-MultiPageVersion=3
--- trunk/KDE/kdegraphics/kviewshell/plugins/fax/CMakeLists.txt #552598:552599
@@ -23,7 +23,7 @@
install_files( ${DATA_INSTALL_DIR} FILES )
install_files( ${DATA_INSTALL_DIR}/kviewshell/plugins/fax FILES )
-install_files( ${SERVICES_INSTALL_DIR} FILES kfaxmultipage.desktop \
kfaxmultipage_tiff.desktop ) +install_files( ${SERVICES_INSTALL_DIR} FILES \
kfaxmultipage.desktop )
--- trunk/KDE/kdegraphics/kviewshell/plugins/fax/kfaxmultipage.desktop #552598:552599
@@ -8,6 +8,6 @@
Comment[fr]=Module KViewShell pour les fichiers de fax
Comment[x-test]=xxKViewShell plugin for fax filesxx
ServiceTypes=KViewShell/MultiPage
-X-KDE-MimeTypes=image/fax-g3
+MimeType=image/fax-g3;image/tiff
X-KDE-Library=kfaxviewpart
X-KDE-MultiPageVersion=3
--- trunk/KDE/kdegraphics/kviewshell/plugins/pdf/pdfMultipage.desktop #552598:552599
@@ -5,6 +5,6 @@
Type=Service
Comment=KViewShell plugin for Acrobat (pdf) files
ServiceTypes=KViewShell/MultiPage
-X-KDE-MimeTypes=application/pdf
+MimeType=application/pdf
X-KDE-Library=pdfviewpart
X-KDE-MultiPageVersion=3
--- trunk/KDE/kdegraphics/kviewshell/plugins/ps/psMultipage.desktop #552598:552599
@@ -5,6 +5,6 @@
Type=Service
Comment=KViewShell plugin for PostScript files
ServiceTypes=KViewShell/MultiPage
-X-KDE-MimeTypes=application/postscript
+MimeType=application/postscript
X-KDE-Library=psviewpart
X-KDE-MultiPageVersion=3
--- trunk/KDE/kdegraphics/kviewshell/shell/kviewpart.cpp #552598:552599
@@ -489,12 +489,18 @@
{
KService::List::ConstIterator iterator = offers.begin();
KService::List::ConstIterator end = offers.end();
+ QStringList::Iterator mimeType;
for (; iterator != end; ++iterator)
{
KService::Ptr service = *iterator;
- QString mimeType = service->property("X-KDE-MimeTypes").toString();
- supportedMimeTypes << mimeType;
+
+ QStringList mimeTypes = service->serviceTypes();
+ for (mimeType = mimeTypes.begin(); mimeType != mimeTypes.end(); ++mimeType)
+ {
+ if (!(*mimeType).contains("KViewShell"))
+ supportedMimeTypes << *mimeType;
+ }
}
}
@@ -534,18 +540,24 @@
{
KService::List::ConstIterator iterator = offers.begin();
KService::List::ConstIterator end = offers.end();
+ QStringList::Iterator mimeType;
for (; iterator != end; ++iterator)
{
KService::Ptr service = *iterator;
- QString mimeType = service->property("X-KDE-MimeTypes").toString();
- supportedMimeTypes << mimeType;
- QStringList pattern = KMimeType::mimeType(mimeType)->patterns();
- while(!pattern.isEmpty())
+ QStringList mimeTypes = service->serviceTypes();
+ for (mimeType = mimeTypes.begin(); mimeType != mimeTypes.end(); ++mimeType)
{
- supportedPattern.append(pattern.front().trimmed());
- pattern.pop_front();
+ if (!(*mimeType).contains("KViewShell"))
+ {
+ QStringList pattern = KMimeType::mimeType(*mimeType)->patterns();
+ while(!pattern.isEmpty())
+ {
+ supportedPattern.append(pattern.front().trimmed());
+ pattern.pop_front();
+ }
+ }
}
}
}
@@ -775,15 +787,42 @@
mimetype = KMimeType::findByURL(tmpFileURL);
- // Search for service
+ // Search for a plugin that supports the needed mimetype.
KService::List offers = KServiceTypeTrader::self()->query(
- QString::fromLatin1("KViewShell/MultiPage" ),
- QString("([X-KDE-MultiPageVersion] == %1) and "
- "([X-KDE-MimeTypes] == \
'%2')").arg(MULTIPAGE_VERSION).arg(mimetype->name())); + \
QString::fromLatin1("KViewShell/MultiPage"), + QString("([X-KDE-MultiPageVersion] \
== %1)").arg(MULTIPAGE_VERSION) + );
- kDebug(kvs::shell) << "MimeType: " << mimetype->name() << endl;
+ KService::Ptr service;
+ bool matchingPluginFound = false;
- if (offers.isEmpty()) {
+ if (!offers.isEmpty())
+ {
+ KService::List::ConstIterator iterator = offers.begin();
+ KService::List::ConstIterator end = offers.end();
+ QStringList::Iterator mimeTypeIterator;
+
+ for (; iterator != end; ++iterator)
+ {
+ QStringList mimeTypes = (*iterator)->serviceTypes();
+ for (mimeTypeIterator = mimeTypes.begin(); mimeTypeIterator != \
mimeTypes.end(); ++mimeTypeIterator) + {
+ // If one of the supported mimetypes of the plugin equals the mimetype we \
need, + // we remember the service and stop the search.
+ if (mimetype->name() == *mimeTypeIterator)
+ {
+ service = *iterator;
+ matchingPluginFound = true;
+ break;
+ }
+ }
+ if (matchingPluginFound)
+ break;
+ }
+ }
+
+ if (offers.isEmpty() || !matchingPluginFound)
+ {
KMessageBox::detailedError(mainWidget, i18n("<qt>The document <b>%1</b> cannot \
be shown because "
"its file type is not \
supported.</qt>", m_file),
i18n("<qt>The file has mime type <b>%1</b> which is \
not supported by " @@ -793,9 +832,6 @@
return false;
}
- KService::Ptr service = offers.first();
- kDebug(kvs::shell) << service->library() << endl;
-
// The the new multiPage is different then the currently loaded one.
if (service->library() != multiPageLibrary)
{
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic