[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.6/kdelibs/kfile
From: Luboš Luňák <l.lunak () kde ! org>
Date: 2011-01-26 16:20:53
Message-ID: 20110126162053.6C203AC8BA () svn ! kde ! org
[Download RAW message or body]
SVN commit 1217310 by lunakl:
Backport r1216758.
Make KFileDialog automatically choose file type from typed extension
also when file types are specified manually and not as mimetypes.
(http://svn.reviewboard.kde.org/r/6325)
M +5 -0 kfilefiltercombo.cpp
M +6 -0 kfilefiltercombo.h
M +13 -1 kfilewidget.cpp
--- branches/KDE/4.6/kdelibs/kfile/kfilefiltercombo.cpp #1217309:1217310
@@ -214,4 +214,9 @@
return d->defaultFilter;
}
+bool KFileFilterCombo::isMimeFilter() const
+{
+ return d->isMimeFilter;
+}
+
#include "kfilefiltercombo.moc"
--- branches/KDE/4.6/kdelibs/kfile/kfilefiltercombo.h #1217309:1217310
@@ -94,6 +94,12 @@
*/
QStringList filters() const;
+ /**
+ * Returns true if the filter has been set using setMimeFilter().
+ * @since 4.6.1
+ */
+ bool isMimeFilter() const;
+
protected:
virtual bool eventFilter( QObject*, QEvent* );
--- branches/KDE/4.6/kdelibs/kfile/kfilewidget.cpp #1217309:1217310
@@ -54,6 +54,7 @@
#include <krecentdirs.h>
#include <kdebug.h>
#include <kio/kfileitemdelegate.h>
+#include <kde_file.h>
#include <QtGui/QCheckBox>
#include <QtGui/QDockWidget>
@@ -2294,18 +2295,29 @@
// kDebug(kfile_area);
if ((operationMode == KFileWidget::Saving) && (ops->mode() & KFile::File) ) {
- const QString urlStr = locationEditCurrentText();
+ QString urlStr = locationEditCurrentText();
if (urlStr.isEmpty())
return;
+ if( filterWidget->isMimeFilter()) {
KMimeType::Ptr mime = KMimeType::findByPath(urlStr, 0, true);
if (mime && mime->name() != KMimeType::defaultMimeType()) {
if (filterWidget->currentFilter() != mime->name() &&
filterWidget->filters().indexOf(mime->name()) != -1)
filterWidget->setCurrentFilter(mime->name());
}
+ } else {
+ QString filename = urlStr.mid( urlStr.lastIndexOf( KDIR_SEPARATOR ) + 1 ); // only filename
+ foreach( const QString& filter, filterWidget->filters()) {
+ QString f = filter.left( filter.indexOf( '|' )); // '*.foo|Foo type' -> '*.foo'
+ if( KMimeType::matchFileName( filename, f )) {
+ filterWidget->setCurrentFilter( filter );
+ break;
}
}
+ }
+ }
+}
// applies only to a file that doesn't already exist
void KFileWidgetPrivate::appendExtension (KUrl &url)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic