summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-04-14 22:04:01 +0300
committerOrgad Shaneh <orgads@gmail.com>2013-04-17 09:06:39 +0200
commite4714f80c4c6c0a44541ff3277e206a527359728 (patch)
treedcdfd7daece61d01270fb4d317f10a325425b7a9 /src/plugins
parentfcf8575163e5bf9ed2e69dbc21e9d8f0d716a969 (diff)
downloadqt-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.cpp50
-rw-r--r--src/plugins/coreplugin/mimetypesettingspage.ui11
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 &current,
- const QModelIndex &previous)
+ const QModelIndex &previous)
{
if (previous.isValid()) {
if (m_mimeForPatternSync == previous.row())
@@ -398,7 +411,8 @@ void MimeTypeSettingsPrivate::syncData(const QModelIndex &current,
}
if (current.isValid()) {
- const MimeType &currentMimeType = m_model->m_mimeTypes.at(current.row());
+ const MimeType &currentMimeType =
+ 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>