Settings: Add a filter for mime types

Change-Id: I05213ca74cf3838c923ce6117ffdde28546d465f
Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
Orgad Shaneh
2013-04-14 22:04:01 +03:00
committed by Orgad Shaneh
parent fcf8575163
commit e4714f80c4
2 changed files with 44 additions and 17 deletions

View File

@@ -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);
@@ -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)

View File

@@ -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>