aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@theqtcompany.com>2015-02-04 16:27:36 +0100
committerEike Ziller <eike.ziller@theqtcompany.com>2015-02-17 15:19:10 +0000
commit337339004843bc968e90a45cf24b9272b8372ba1 (patch)
tree40a06d424b60dd5288146e9df831167de7287f50 /src
parent178b023f944b6a38c75fdced572649870d4c6258 (diff)
Mime type settings: Show magic matchers for mime types
Change-Id: I40f024b51e20717aa4bc74351bb5996b31f3a869 Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/coreplugin/mimetypemagicdialog.cpp3
-rw-r--r--src/plugins/coreplugin/mimetypemagicdialog.h19
-rw-r--r--src/plugins/coreplugin/mimetypesettings.cpp61
3 files changed, 38 insertions, 45 deletions
diff --git a/src/plugins/coreplugin/mimetypemagicdialog.cpp b/src/plugins/coreplugin/mimetypemagicdialog.cpp
index ead53b0164..ead0c77630 100644
--- a/src/plugins/coreplugin/mimetypemagicdialog.cpp
+++ b/src/plugins/coreplugin/mimetypemagicdialog.cpp
@@ -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;
diff --git a/src/plugins/coreplugin/mimetypemagicdialog.h b/src/plugins/coreplugin/mimetypemagicdialog.h
index e45db322f5..2e4779f839 100644
--- a/src/plugins/coreplugin/mimetypemagicdialog.h
+++ b/src/plugins/coreplugin/mimetypemagicdialog.h
@@ -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;
};
diff --git a/src/plugins/coreplugin/mimetypesettings.cpp b/src/plugins/coreplugin/mimetypesettings.cpp
index e49a372b52..e656b84d45 100644
--- a/src/plugins/coreplugin/mimetypesettings.cpp
+++ b/src/plugins/coreplugin/mimetypesettings.cpp
@@ -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()
//{