diff --git a/src/plugins/coreplugin/mimetypesettings.cpp b/src/plugins/coreplugin/mimetypesettings.cpp index 8b1bf2f35e0..3067d243a3f 100644 --- a/src/plugins/coreplugin/mimetypesettings.cpp +++ b/src/plugins/coreplugin/mimetypesettings.cpp @@ -27,24 +27,25 @@ ** ****************************************************************************/ -#include "mimetypesettings.h" -#include "ui_mimetypesettingspage.h" -#include "mimetypemagicdialog.h" -#include "mimedatabase.h" #include "coreconstants.h" #include "editormanager.h" #include "icore.h" #include "ieditorfactory.h" #include "iexternaleditor.h" +#include "mimedatabase.h" +#include "mimetypemagicdialog.h" +#include "mimetypesettings.h" +#include "ui_mimetypesettingspage.h" -#include -#include -#include -#include #include +#include #include -#include #include +#include +#include +#include +#include +#include #include #include @@ -232,17 +233,22 @@ public slots: void resetMimeTypes(); void updateMagicHeaderButtons(); +private slots: + void setFilterPattern(const QString &pattern); + public: static const QChar kSemiColon; QString m_keywords; MimeDatabase *m_mimeDatabase; - QScopedPointer m_model; + MimeTypeSettingsModel *m_model; + QSortFilterProxyModel *m_filterModel; int m_mimeForPatternSync; int m_mimeForMagicSync; bool m_reset; bool m_persist; QList m_modifiedMimeTypes; + QString m_filterPattern; Ui::MimeTypeSettingsPage m_ui; }; @@ -250,12 +256,16 @@ const QChar MimeTypeSettingsPrivate::kSemiColon(QLatin1Char(';')); MimeTypeSettingsPrivate::MimeTypeSettingsPrivate() : m_mimeDatabase(ICore::mimeDatabase()) - , m_model(new MimeTypeSettingsModel) + , m_model(new MimeTypeSettingsModel(this)) + , m_filterModel(new QSortFilterProxyModel(this)) , m_mimeForPatternSync(-1) , m_mimeForMagicSync(-1) , m_reset(false) , m_persist(false) -{} +{ + m_filterModel->setSourceModel(m_model); + m_filterModel->setFilterKeyColumn(-1); +} MimeTypeSettingsPrivate::~MimeTypeSettingsPrivate() {} @@ -263,9 +273,12 @@ MimeTypeSettingsPrivate::~MimeTypeSettingsPrivate() void MimeTypeSettingsPrivate::configureUi(QWidget *w) { m_ui.setupUi(w); + m_ui.filterLineEdit->setText(m_filterPattern); m_model->load(); - m_ui.mimeTypesTableView->setModel(m_model.data()); + connect(m_ui.filterLineEdit, SIGNAL(textChanged(QString)), + this, SLOT(setFilterPattern(QString))); + m_ui.mimeTypesTableView->setModel(m_filterModel); configureTable(m_ui.mimeTypesTableView); configureTable(m_ui.magicHeadersTableWidget); @@ -383,7 +396,7 @@ void MimeTypeSettingsPrivate::clearSyncData() } void MimeTypeSettingsPrivate::syncData(const QModelIndex ¤t, - const QModelIndex &previous) + const QModelIndex &previous) { if (previous.isValid()) { if (m_mimeForPatternSync == previous.row()) @@ -398,7 +411,8 @@ void MimeTypeSettingsPrivate::syncData(const QModelIndex ¤t, } if (current.isValid()) { - const MimeType ¤tMimeType = m_model->m_mimeTypes.at(current.row()); + const MimeType ¤tMimeType = + m_model->m_mimeTypes.at(m_filterModel->mapToSource(current).row()); QStringList formatedPatterns; foreach (const MimeGlobPattern &pattern, currentMimeType.globPatterns()) @@ -551,6 +565,12 @@ void MimeTypeSettingsPrivate::updateMagicHeaderButtons() m_ui.editMagicButton->setEnabled(enabled); } +void MimeTypeSettingsPrivate::setFilterPattern(const QString &pattern) +{ + m_filterPattern = pattern; + m_filterModel->setFilterWildcard(pattern); +} + // MimeTypeSettingsPage MimeTypeSettings::MimeTypeSettings(QObject *parent) : IOptionsPage(parent) diff --git a/src/plugins/coreplugin/mimetypesettingspage.ui b/src/plugins/coreplugin/mimetypesettingspage.ui index 5fe2e67e105..095494b528c 100644 --- a/src/plugins/coreplugin/mimetypesettingspage.ui +++ b/src/plugins/coreplugin/mimetypesettingspage.ui @@ -21,6 +21,13 @@ + + + Filter + + + + false @@ -30,7 +37,7 @@ - + Reset all to default. @@ -40,7 +47,7 @@ - + Qt::Horizontal