diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2013-04-14 22:04:01 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2013-04-17 09:06:39 +0200 |
commit | e4714f80c4c6c0a44541ff3277e206a527359728 (patch) | |
tree | dcdfd7daece61d01270fb4d317f10a325425b7a9 /src/plugins | |
parent | fcf8575163e5bf9ed2e69dbc21e9d8f0d716a969 (diff) | |
download | qt-creator-e4714f80c4c6c0a44541ff3277e206a527359728.tar.gz |
Settings: Add a filter for mime types
Change-Id: I05213ca74cf3838c923ce6117ffdde28546d465f
Reviewed-by: David Schulz <david.schulz@digia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/coreplugin/mimetypesettings.cpp | 50 | ||||
-rw-r--r-- | src/plugins/coreplugin/mimetypesettingspage.ui | 11 |
2 files changed, 44 insertions, 17 deletions
diff --git a/src/plugins/coreplugin/mimetypesettings.cpp b/src/plugins/coreplugin/mimetypesettings.cpp index 8b1bf2f35e..3067d243a3 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 <QCoreApplication> -#include <QStringList> -#include <QSet> -#include <QScopedPointer> #include <QAbstractTableModel> +#include <QCoreApplication> #include <QHash> -#include <QTableWidgetItem> #include <QMessageBox> +#include <QScopedPointer> +#include <QSet> +#include <QStringList> +#include <QTableWidgetItem> +#include <QSortFilterProxyModel> #include <QtAlgorithms> #include <algorithm> @@ -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<MimeTypeSettingsModel> m_model; + MimeTypeSettingsModel *m_model; + QSortFilterProxyModel *m_filterModel; int m_mimeForPatternSync; int m_mimeForMagicSync; bool m_reset; bool m_persist; QList<int> 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 5fe2e67e10..095494b528 100644 --- a/src/plugins/coreplugin/mimetypesettingspage.ui +++ b/src/plugins/coreplugin/mimetypesettingspage.ui @@ -21,6 +21,13 @@ </property> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0" colspan="2"> + <widget class="QLineEdit" name="filterLineEdit"> + <property name="placeholderText"> + <string>Filter</string> + </property> + </widget> + </item> + <item row="1" column="0" colspan="2"> <widget class="QTableView" name="mimeTypesTableView"> <property name="showGrid"> <bool>false</bool> @@ -30,7 +37,7 @@ </property> </widget> </item> - <item row="1" column="0"> + <item row="2" column="0"> <widget class="QPushButton" name="resetButton"> <property name="toolTip"> <string>Reset all to default.</string> @@ -40,7 +47,7 @@ </property> </widget> </item> - <item row="1" column="1"> + <item row="2" column="1"> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> |