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 "coreconstants.h"
#include "editormanager.h" #include "editormanager.h"
#include "icore.h" #include "icore.h"
#include "ieditorfactory.h" #include "ieditorfactory.h"
#include "iexternaleditor.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 <QAbstractTableModel>
#include <QCoreApplication>
#include <QHash> #include <QHash>
#include <QTableWidgetItem>
#include <QMessageBox> #include <QMessageBox>
#include <QScopedPointer>
#include <QSet>
#include <QStringList>
#include <QTableWidgetItem>
#include <QSortFilterProxyModel>
#include <QtAlgorithms> #include <QtAlgorithms>
#include <algorithm> #include <algorithm>
@@ -232,17 +233,22 @@ public slots:
void resetMimeTypes(); void resetMimeTypes();
void updateMagicHeaderButtons(); void updateMagicHeaderButtons();
private slots:
void setFilterPattern(const QString &pattern);
public: public:
static const QChar kSemiColon; static const QChar kSemiColon;
QString m_keywords; QString m_keywords;
MimeDatabase *m_mimeDatabase; MimeDatabase *m_mimeDatabase;
QScopedPointer<MimeTypeSettingsModel> m_model; MimeTypeSettingsModel *m_model;
QSortFilterProxyModel *m_filterModel;
int m_mimeForPatternSync; int m_mimeForPatternSync;
int m_mimeForMagicSync; int m_mimeForMagicSync;
bool m_reset; bool m_reset;
bool m_persist; bool m_persist;
QList<int> m_modifiedMimeTypes; QList<int> m_modifiedMimeTypes;
QString m_filterPattern;
Ui::MimeTypeSettingsPage m_ui; Ui::MimeTypeSettingsPage m_ui;
}; };
@@ -250,12 +256,16 @@ const QChar MimeTypeSettingsPrivate::kSemiColon(QLatin1Char(';'));
MimeTypeSettingsPrivate::MimeTypeSettingsPrivate() MimeTypeSettingsPrivate::MimeTypeSettingsPrivate()
: m_mimeDatabase(ICore::mimeDatabase()) : m_mimeDatabase(ICore::mimeDatabase())
, m_model(new MimeTypeSettingsModel) , m_model(new MimeTypeSettingsModel(this))
, m_filterModel(new QSortFilterProxyModel(this))
, m_mimeForPatternSync(-1) , m_mimeForPatternSync(-1)
, m_mimeForMagicSync(-1) , m_mimeForMagicSync(-1)
, m_reset(false) , m_reset(false)
, m_persist(false) , m_persist(false)
{} {
m_filterModel->setSourceModel(m_model);
m_filterModel->setFilterKeyColumn(-1);
}
MimeTypeSettingsPrivate::~MimeTypeSettingsPrivate() MimeTypeSettingsPrivate::~MimeTypeSettingsPrivate()
{} {}
@@ -263,9 +273,12 @@ MimeTypeSettingsPrivate::~MimeTypeSettingsPrivate()
void MimeTypeSettingsPrivate::configureUi(QWidget *w) void MimeTypeSettingsPrivate::configureUi(QWidget *w)
{ {
m_ui.setupUi(w); m_ui.setupUi(w);
m_ui.filterLineEdit->setText(m_filterPattern);
m_model->load(); 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.mimeTypesTableView);
configureTable(m_ui.magicHeadersTableWidget); configureTable(m_ui.magicHeadersTableWidget);
@@ -398,7 +411,8 @@ void MimeTypeSettingsPrivate::syncData(const QModelIndex &current,
} }
if (current.isValid()) { 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; QStringList formatedPatterns;
foreach (const MimeGlobPattern &pattern, currentMimeType.globPatterns()) foreach (const MimeGlobPattern &pattern, currentMimeType.globPatterns())
@@ -551,6 +565,12 @@ void MimeTypeSettingsPrivate::updateMagicHeaderButtons()
m_ui.editMagicButton->setEnabled(enabled); m_ui.editMagicButton->setEnabled(enabled);
} }
void MimeTypeSettingsPrivate::setFilterPattern(const QString &pattern)
{
m_filterPattern = pattern;
m_filterModel->setFilterWildcard(pattern);
}
// MimeTypeSettingsPage // MimeTypeSettingsPage
MimeTypeSettings::MimeTypeSettings(QObject *parent) MimeTypeSettings::MimeTypeSettings(QObject *parent)
: IOptionsPage(parent) : IOptionsPage(parent)

View File

@@ -21,6 +21,13 @@
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2"> <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"> <widget class="QTableView" name="mimeTypesTableView">
<property name="showGrid"> <property name="showGrid">
<bool>false</bool> <bool>false</bool>
@@ -30,7 +37,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="2" column="0">
<widget class="QPushButton" name="resetButton"> <widget class="QPushButton" name="resetButton">
<property name="toolTip"> <property name="toolTip">
<string>Reset all to default.</string> <string>Reset all to default.</string>
@@ -40,7 +47,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="2" column="1">
<spacer name="horizontalSpacer"> <spacer name="horizontalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>