Mime type settings: Show magic matchers for mime types

Change-Id: I40f024b51e20717aa4bc74351bb5996b31f3a869
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
Eike Ziller
2015-02-04 16:27:36 +01:00
parent 178b023f94
commit 3373390048
3 changed files with 38 additions and 45 deletions

View File

@@ -81,7 +81,8 @@ void MimeTypeMagicDialog::setMagicData(const MagicData &data)
MagicData MimeTypeMagicDialog::magicData() const
{
MagicData data;
MagicData data(Utils::Internal::MimeMagicRule(Utils::Internal::MimeMagicRule::Byte,
QByteArray(), 0, 0), 0);
// data.m_value = ui.valueLineEdit->text();
// if (ui.stringRadioButton->isChecked())
// data.m_type = MagicStringRule::kMatchType;

View File

@@ -33,23 +33,20 @@
#include "ui_mimetypemagicdialog.h"
#include <utils/mimetypes/mimemagicrule_p.h>
namespace Core {
namespace Internal {
struct MagicData
{
MagicData() {}
MagicData(const QString &value, const QString &type, int start, int end, int p)
: m_value(value)
, m_type(type)
, m_start(start)
, m_end(end)
, m_priority(p) {}
MagicData(Utils::Internal::MimeMagicRule rule, int priority)
: m_rule(rule)
, m_priority(priority)
{
}
QString m_value;
QString m_type;
int m_start;
int m_end;
Utils::Internal::MimeMagicRule m_rule;
int m_priority;
};

View File

@@ -208,10 +208,11 @@ public:
void clearSyncData();
void markAsModified(int index);
void addMagicHeaderRow(const MagicData &data);
void editMagicHeaderRowData(const int row, const MagicData &data);
// TODO
// void addMagicHeaderRow(const MagicData &data);
// MagicData getMagicHeaderRowData(const int row) const;
// void editMagicHeaderRowData(const int row, const MagicData &data);
void updateMimeDatabase();
void resetState();
@@ -393,20 +394,14 @@ void MimeTypeSettingsPrivate::syncData(const QModelIndex &current,
m_ui.patternsLineEdit->setText(currentMimeType.globPatterns().join(kSemiColon));
// TODO
// // Consider only rule-based matchers.
// const QList<QSharedPointer<IMagicMatcher> > &matchers = currentMimeType.magicRuleMatchers();
// foreach (const QSharedPointer<IMagicMatcher> &matcher, matchers) {
// MagicRuleMatcher *ruleMatcher = static_cast<MagicRuleMatcher *>(matcher.data());
// const int priority = ruleMatcher->priority();
// const MagicRuleMatcher::MagicRuleList &rules = ruleMatcher->magicRules();
// foreach (const MagicRuleMatcher::MagicRuleSharedPointer &rule, rules)
// addMagicHeaderRow(MagicData(rule->matchValue(),
// rule->matchType(),
// rule->startPos(),
// rule->endPos(),
// priority));
// }
QMap<int, QList<Utils::Internal::MimeMagicRule> > rules =
Utils::MimeDatabase::magicRulesForMimeType(currentMimeType);
for (auto it = rules.constBegin(); it != rules.constEnd(); ++it) {
int priority = it.key();
foreach (const Utils::Internal::MimeMagicRule &rule, it.value()) {
addMagicHeaderRow(MagicData(rule, priority));
}
}
}
}
@@ -419,13 +414,13 @@ void MimeTypeSettingsPrivate::handlePatternEdited()
}
}
// TODO
//void MimeTypeSettingsPrivate::addMagicHeaderRow(const MagicData &data)
//{
// const int row = m_ui.magicHeadersTreeWidget->topLevelItemCount();
// editMagicHeaderRowData(row, data);
//}
void MimeTypeSettingsPrivate::addMagicHeaderRow(const MagicData &data)
{
const int row = m_ui.magicHeadersTreeWidget->topLevelItemCount();
editMagicHeaderRowData(row, data);
}
// TODO
//MagicData MimeTypeSettingsPrivate::getMagicHeaderRowData(const int row) const
//{
// MagicData data;
@@ -440,17 +435,17 @@ void MimeTypeSettingsPrivate::handlePatternEdited()
// return data;
//}
//void MimeTypeSettingsPrivate::editMagicHeaderRowData(const int row, const MagicData &data)
//{
// QTreeWidgetItem *item = new QTreeWidgetItem;
// item->setText(0, data.m_value);
// item->setText(1, data.m_type);
// item->setText(2, MagicRule::toOffset(qMakePair(data.m_start, data.m_end)));
// item->setText(3, QString::number(data.m_priority));
// m_ui.magicHeadersTreeWidget->takeTopLevelItem(row);
// m_ui.magicHeadersTreeWidget->insertTopLevelItem(row, item);
// m_ui.magicHeadersTreeWidget->setCurrentItem(item);
//}
void MimeTypeSettingsPrivate::editMagicHeaderRowData(const int row, const MagicData &data)
{
QTreeWidgetItem *item = new QTreeWidgetItem;
item->setText(0, QString::fromUtf8(data.m_rule.value()));
item->setText(1, QString::fromLatin1(Utils::Internal::MimeMagicRule::typeName(data.m_rule.type())));
item->setText(2, QString::fromLatin1("%1:%2").arg(data.m_rule.startPos()).arg(data.m_rule.endPos()));
item->setText(3, QString::number(data.m_priority));
m_ui.magicHeadersTreeWidget->takeTopLevelItem(row);
m_ui.magicHeadersTreeWidget->insertTopLevelItem(row, item);
m_ui.magicHeadersTreeWidget->setCurrentItem(item);
}
//void MimeTypeSettingsPrivate::addMagicHeader()
//{