diff --git a/src/plugins/coreplugin/CMakeLists.txt b/src/plugins/coreplugin/CMakeLists.txt
index 276e15a02b0..5a3cf329348 100644
--- a/src/plugins/coreplugin/CMakeLists.txt
+++ b/src/plugins/coreplugin/CMakeLists.txt
@@ -127,7 +127,7 @@ add_qtc_plugin(Core
messagebox.cpp messagebox.h
messagemanager.cpp messagemanager.h
messageoutputwindow.cpp messageoutputwindow.h
- mimetypemagicdialog.cpp mimetypemagicdialog.h mimetypemagicdialog.ui
+ mimetypemagicdialog.cpp mimetypemagicdialog.h
mimetypesettings.cpp mimetypesettings.h
minisplitter.cpp minisplitter.h
modemanager.cpp modemanager.h
diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs
index ddde5efa0eb..aaf4b289cb1 100644
--- a/src/plugins/coreplugin/coreplugin.qbs
+++ b/src/plugins/coreplugin/coreplugin.qbs
@@ -123,7 +123,6 @@ Project {
"messageoutputwindow.h",
"mimetypemagicdialog.cpp",
"mimetypemagicdialog.h",
- "mimetypemagicdialog.ui",
"mimetypesettings.cpp",
"mimetypesettings.h",
"minisplitter.cpp",
diff --git a/src/plugins/coreplugin/mimetypemagicdialog.cpp b/src/plugins/coreplugin/mimetypemagicdialog.cpp
index 8ebd8b32f2d..a3f432e74d0 100644
--- a/src/plugins/coreplugin/mimetypemagicdialog.cpp
+++ b/src/plugins/coreplugin/mimetypemagicdialog.cpp
@@ -6,74 +6,152 @@
#include "icore.h"
#include MIME magic data is interpreted as defined "
+ "by the Shared MIME-info Database specification from "
+ ""
+ "freedesktop.org.
" + "Note: Wide range values might impact performance when opening " + "files.
")); + m_noteLabel->setTextFormat(Qt::RichText); + + m_startRangeLabel = new QLabel(tr("Range start:")); + + m_endRangeLabel = new QLabel(tr("Range end:")); + + m_priorityLabel = new QLabel(tr("Priority:")); + + m_prioritySpinBox = new QSpinBox(m_useRecommendedGroupBox); + m_prioritySpinBox->setMinimum(1); + m_prioritySpinBox->setValue(50); + + m_startRangeSpinBox = new QSpinBox(m_useRecommendedGroupBox); + m_startRangeSpinBox->setMaximum(9999); + + m_endRangeSpinBox = new QSpinBox(m_useRecommendedGroupBox); + m_endRangeSpinBox->setMaximum(9999); + + auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); + + using namespace Utils::Layouting; + + Column { + Form { + m_startRangeLabel, m_startRangeSpinBox, br, + m_endRangeLabel, m_endRangeSpinBox, br, + m_priorityLabel, m_prioritySpinBox, br, + }, + m_noteLabel + }.attachTo(m_useRecommendedGroupBox); + + Column { + informationLabel, + Form { + tr("Value:"), m_valueLineEdit, br, + tr("Type:"), m_typeSelector, st, br, + tr("Mask:"), m_maskLineEdit, br + }, + m_useRecommendedGroupBox, + st, + buttonBox + }.attachTo(this); + + connect(m_useRecommendedGroupBox, &QGroupBox::toggled, this, &MimeTypeMagicDialog::applyRecommended); - connect(ui.buttonBox, &QDialogButtonBox::accepted, this, &MimeTypeMagicDialog::validateAccept); - connect(ui.informationLabel, &QLabel::linkActivated, this, [](const QString &link) { + connect(buttonBox, &QDialogButtonBox::accepted, + this, &MimeTypeMagicDialog::validateAccept); + connect(buttonBox, &QDialogButtonBox::rejected, + this, &QDialog::reject); + + connect(informationLabel, &QLabel::linkActivated, this, [](const QString &link) { QDesktopServices::openUrl(QUrl(link)); }); - connect(ui.typeSelector, &QComboBox::activated, this, [this] { - if (ui.useRecommendedGroupBox->isChecked()) + connect(m_typeSelector, &QComboBox::activated, this, [this] { + if (m_useRecommendedGroupBox->isChecked()) setToRecommendedValues(); }); - ui.valueLineEdit->setFocus(); + applyRecommended(m_useRecommendedGroupBox->isChecked()); + m_valueLineEdit->setFocus(); } void MimeTypeMagicDialog::setToRecommendedValues() { - ui.startRangeSpinBox->setValue(0); - ui.endRangeSpinBox->setValue(ui.typeSelector->currentIndex() == 1/*regexp*/ ? 200 : 0); - ui.prioritySpinBox->setValue(50); + m_startRangeSpinBox->setValue(0); + m_endRangeSpinBox->setValue(m_typeSelector->currentIndex() == 1/*regexp*/ ? 200 : 0); + m_prioritySpinBox->setValue(50); } void MimeTypeMagicDialog::applyRecommended(bool checked) { if (checked) { // save previous custom values - m_customRangeStart = ui.startRangeSpinBox->value(); - m_customRangeEnd = ui.endRangeSpinBox->value(); - m_customPriority = ui.prioritySpinBox->value(); + m_customRangeStart = m_startRangeSpinBox->value(); + m_customRangeEnd = m_endRangeSpinBox->value(); + m_customPriority = m_prioritySpinBox->value(); setToRecommendedValues(); } else { // restore previous custom values - ui.startRangeSpinBox->setValue(m_customRangeStart); - ui.endRangeSpinBox->setValue(m_customRangeEnd); - ui.prioritySpinBox->setValue(m_customPriority); + m_startRangeSpinBox->setValue(m_customRangeStart); + m_endRangeSpinBox->setValue(m_customRangeEnd); + m_prioritySpinBox->setValue(m_customPriority); } - ui.startRangeLabel->setEnabled(!checked); - ui.startRangeSpinBox->setEnabled(!checked); - ui.endRangeLabel->setEnabled(!checked); - ui.endRangeSpinBox->setEnabled(!checked); - ui.priorityLabel->setEnabled(!checked); - ui.prioritySpinBox->setEnabled(!checked); - ui.noteLabel->setEnabled(!checked); + m_startRangeLabel->setEnabled(!checked); + m_startRangeSpinBox->setEnabled(!checked); + m_endRangeLabel->setEnabled(!checked); + m_endRangeSpinBox->setEnabled(!checked); + m_priorityLabel->setEnabled(!checked); + m_prioritySpinBox->setEnabled(!checked); + m_noteLabel->setEnabled(!checked); } void MimeTypeMagicDialog::validateAccept() { QString errorMessage; - Utils::MimeMagicRule rule = createRule(&errorMessage); + MimeMagicRule rule = createRule(&errorMessage); if (rule.isValid()) accept(); else @@ -82,22 +160,21 @@ void MimeTypeMagicDialog::validateAccept() void MimeTypeMagicDialog::setMagicData(const MagicData &data) { - ui.valueLineEdit->setText(QString::fromUtf8(data.m_rule.value())); - ui.typeSelector->setCurrentIndex(data.m_rule.type() - 1/*0 == invalid*/); - ui.maskLineEdit->setText(QString::fromLatin1(MagicData::normalizedMask(data.m_rule))); - ui.useRecommendedGroupBox->setChecked(false); // resets values - ui.startRangeSpinBox->setValue(data.m_rule.startPos()); - ui.endRangeSpinBox->setValue(data.m_rule.endPos()); - ui.prioritySpinBox->setValue(data.m_priority); + m_valueLineEdit->setText(QString::fromUtf8(data.m_rule.value())); + m_typeSelector->setCurrentIndex(data.m_rule.type() - 1/*0 == invalid*/); + m_maskLineEdit->setText(QString::fromLatin1(MagicData::normalizedMask(data.m_rule))); + m_useRecommendedGroupBox->setChecked(false); // resets values + m_startRangeSpinBox->setValue(data.m_rule.startPos()); + m_endRangeSpinBox->setValue(data.m_rule.endPos()); + m_prioritySpinBox->setValue(data.m_priority); } MagicData MimeTypeMagicDialog::magicData() const { - MagicData data(createRule(), ui.prioritySpinBox->value()); + MagicData data(createRule(), m_prioritySpinBox->value()); return data; } - bool MagicData::operator==(const MagicData &other) const { return m_priority == other.m_priority && m_rule == other.m_rule; @@ -107,12 +184,12 @@ bool MagicData::operator==(const MagicData &other) const Returns the mask, or an empty string if the mask is the default mask which is set by MimeMagicRule when setting an empty mask for string patterns. */ -QByteArray MagicData::normalizedMask(const Utils::MimeMagicRule &rule) +QByteArray MagicData::normalizedMask(const MimeMagicRule &rule) { // convert mask and see if it is the "default" one (which corresponds to "empty" mask) // see MimeMagicRule constructor QByteArray mask = rule.mask(); - if (rule.type() == Utils::MimeMagicRule::String) { + if (rule.type() == MimeMagicRule::String) { QByteArray actualMask = QByteArray::fromHex(QByteArray::fromRawData(mask.constData() + 2, mask.size() - 2)); if (actualMask.count(char(-1)) == actualMask.size()) { @@ -123,18 +200,20 @@ QByteArray MagicData::normalizedMask(const Utils::MimeMagicRule &rule) return mask; } -Utils::MimeMagicRule MimeTypeMagicDialog::createRule(QString *errorMessage) const +MimeMagicRule MimeTypeMagicDialog::createRule(QString *errorMessage) const { - Utils::MimeMagicRule::Type type = typeValue(ui.typeSelector->currentIndex()); - Utils::MimeMagicRule rule(type, - ui.valueLineEdit->text().toUtf8(), - ui.startRangeSpinBox->value(), - ui.endRangeSpinBox->value(), - ui.maskLineEdit->text().toLatin1(), - errorMessage); - if (type == Utils::MimeMagicRule::Invalid) { + MimeMagicRule::Type type = typeValue(m_typeSelector->currentIndex()); + MimeMagicRule rule(type, + m_valueLineEdit->text().toUtf8(), + m_startRangeSpinBox->value(), + m_endRangeSpinBox->value(), + m_maskLineEdit->text().toLatin1(), + errorMessage); + if (type == MimeMagicRule::Invalid) { if (errorMessage) *errorMessage = tr("Internal error: Type is invalid"); } return rule; } + +} // Core::Internal diff --git a/src/plugins/coreplugin/mimetypemagicdialog.h b/src/plugins/coreplugin/mimetypemagicdialog.h index b47b32b9513..023f878a53e 100644 --- a/src/plugins/coreplugin/mimetypemagicdialog.h +++ b/src/plugins/coreplugin/mimetypemagicdialog.h @@ -3,12 +3,24 @@ #pragma once -#include "ui_mimetypemagicdialog.h" - #include