[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/3.5/kdelibs/kio
From: Kevin Krammer <kevin.krammer () gmx ! at>
Date: 2005-11-11 15:43:28
Message-ID: 1131723808.630185.14629.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 479737 by krake:
Fixes the second issue of Bug 115825:
PHP files, which have the MIME type application/x-php, could be previewed
in KFileDialog's preview widget because there is not preview registered
with that MIME type.
However, being text files, the x-php.desktop file contains the KDE-text property.
The patch adds checks for the MIME type inheritance chain and the KDE-text property
for files that have no direct preview handler registered.
M +34 -0 kfile/kfilemetapreview.cpp
M +36 -0 kio/previewjob.cpp
--- branches/KDE/3.5/kdelibs/kio/kfile/kfilemetapreview.cpp #479736:479737
@@ -100,6 +100,40 @@
return provider;
}
+ KMimeType::Ptr mimeInfo = KMimeType::mimeType( mimeType );
+ if ( mimeInfo )
+ {
+ // check mime type inheritance
+ QString parentMimeType = mimeInfo->parentMimeType();
+ while ( !parentMimeType.isEmpty() )
+ {
+ provider = m_previewProviders.find( parentMimeType );
+ if ( provider )
+ return provider;
+
+ KMimeType::Ptr parentMimeInfo = KMimeType::mimeType( parentMimeType );
+ if ( !parentMimeInfo ) break;
+
+ parentMimeType = parentMimeInfo->parentMimeType();
+ }
+
+ // check X-KDE-Text property
+ QVariant textProperty = mimeInfo->property( "X-KDE-text" );
+ if ( textProperty.isValid() && textProperty.type() == QVariant::Bool )
+ {
+ if ( textProperty.toBool() )
+ {
+ provider = m_previewProviders.find( "text/plain" );
+ if ( provider )
+ return provider;
+
+ provider = m_previewProviders.find( "text/*" );
+ if ( provider )
+ return provider;
+ }
+ }
+ }
+
return 0L;
}
--- branches/KDE/3.5/kdelibs/kio/kio/previewjob.cpp #479736:479737
@@ -179,7 +179,43 @@
{
QString mimeType = it.current()->mimetype();
plugin = mimeMap.find(mimeType.replace(QRegExp("/.*"), "/*"));
+
+ if (plugin == mimeMap.end())
+ {
+ // check mime type inheritance
+ KMimeType::Ptr mimeInfo = KMimeType::mimeType(it.current()->mimetype());
+ QString parentMimeType = mimeInfo->parentMimeType();
+ while (!parentMimeType.isEmpty())
+ {
+ plugin = mimeMap.find(parentMimeType);
+ if (plugin != mimeMap.end()) break;
+
+ KMimeType::Ptr parentMimeInfo = KMimeType::mimeType(parentMimeType);
+ if (!parentMimeInfo) break;
+
+ parentMimeType = parentMimeInfo->parentMimeType();
+ }
+ }
+
+ if (plugin == mimeMap.end())
+ {
+ // check X-KDE-Text property
+ KMimeType::Ptr mimeInfo = KMimeType::mimeType(it.current()->mimetype());
+ QVariant textProperty = mimeInfo->property("X-KDE-text");
+ if (textProperty.isValid() && textProperty.type() == QVariant::Bool)
+ {
+ if (textProperty.toBool())
+ {
+ plugin = mimeMap.find("text/plain");
+ if (plugin == mimeMap.end())
+ {
+ plugin = mimeMap.find( "text/*" );
+ }
+ }
+ }
+ }
}
+
if (plugin != mimeMap.end())
{
item.plugin = *plugin;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic