diff options
author | Eike Ziller <eike.ziller@theqtcompany.com> | 2015-02-04 16:27:36 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@theqtcompany.com> | 2015-02-17 15:19:10 +0000 |
commit | 337339004843bc968e90a45cf24b9272b8372ba1 (patch) | |
tree | 40a06d424b60dd5288146e9df831167de7287f50 /src | |
parent | 178b023f944b6a38c75fdced572649870d4c6258 (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.cpp | 3 | ||||
-rw-r--r-- | src/plugins/coreplugin/mimetypemagicdialog.h | 19 | ||||
-rw-r--r-- | src/plugins/coreplugin/mimetypesettings.cpp | 61 |
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 ¤t, 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() //{ |