forked from qt-creator/qt-creator
TextEditor: Simplify HighlightDefinitionMetaData structure
It's a plain value struct. Change-Id: I8fc97ed61c47af2c3d9e5cc2bf81e97661204d40 Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
@@ -39,53 +39,5 @@ const QLatin1String HighlightDefinitionMetaData::kMimeType("mimetype");
|
|||||||
const QLatin1String HighlightDefinitionMetaData::kVersion("version");
|
const QLatin1String HighlightDefinitionMetaData::kVersion("version");
|
||||||
const QLatin1String HighlightDefinitionMetaData::kUrl("url");
|
const QLatin1String HighlightDefinitionMetaData::kUrl("url");
|
||||||
|
|
||||||
HighlightDefinitionMetaData::HighlightDefinitionMetaData() : m_priority(0)
|
HighlightDefinitionMetaData::HighlightDefinitionMetaData() : priority(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void HighlightDefinitionMetaData::setPriority(const int priority)
|
|
||||||
{ m_priority = priority; }
|
|
||||||
|
|
||||||
int HighlightDefinitionMetaData::priority() const
|
|
||||||
{ return m_priority; }
|
|
||||||
|
|
||||||
void HighlightDefinitionMetaData::setId(const QString &id)
|
|
||||||
{ m_id = id; }
|
|
||||||
|
|
||||||
const QString &HighlightDefinitionMetaData::id() const
|
|
||||||
{ return m_id; }
|
|
||||||
|
|
||||||
void HighlightDefinitionMetaData::setName(const QString &name)
|
|
||||||
{ m_name = name; }
|
|
||||||
|
|
||||||
const QString &HighlightDefinitionMetaData::name() const
|
|
||||||
{ return m_name; }
|
|
||||||
|
|
||||||
void HighlightDefinitionMetaData::setVersion(const QString &version)
|
|
||||||
{ m_version = version; }
|
|
||||||
|
|
||||||
const QString &HighlightDefinitionMetaData::version() const
|
|
||||||
{ return m_version; }
|
|
||||||
|
|
||||||
void HighlightDefinitionMetaData::setFileName(const QString &fileName)
|
|
||||||
{ m_fileName = fileName; }
|
|
||||||
|
|
||||||
const QString &HighlightDefinitionMetaData::fileName() const
|
|
||||||
{ return m_fileName; }
|
|
||||||
|
|
||||||
void HighlightDefinitionMetaData::setPatterns(const QStringList &patterns)
|
|
||||||
{ m_patterns = patterns; }
|
|
||||||
|
|
||||||
const QStringList &HighlightDefinitionMetaData::patterns() const
|
|
||||||
{ return m_patterns; }
|
|
||||||
|
|
||||||
void HighlightDefinitionMetaData::setMimeTypes(const QStringList &mimeTypes)
|
|
||||||
{ m_mimeTypes = mimeTypes; }
|
|
||||||
|
|
||||||
const QStringList &HighlightDefinitionMetaData::mimeTypes() const
|
|
||||||
{ return m_mimeTypes; }
|
|
||||||
|
|
||||||
void HighlightDefinitionMetaData::setUrl(const QUrl &url)
|
|
||||||
{ m_url = url; }
|
|
||||||
|
|
||||||
const QUrl &HighlightDefinitionMetaData::url() const
|
|
||||||
{ return m_url; }
|
|
||||||
|
|||||||
@@ -31,7 +31,6 @@
|
|||||||
#define HIGHLIGHTDEFINITIONMETADATA_H
|
#define HIGHLIGHTDEFINITIONMETADATA_H
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QLatin1String>
|
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
|
||||||
@@ -43,30 +42,6 @@ class HighlightDefinitionMetaData
|
|||||||
public:
|
public:
|
||||||
HighlightDefinitionMetaData();
|
HighlightDefinitionMetaData();
|
||||||
|
|
||||||
void setPriority(const int priority);
|
|
||||||
int priority() const;
|
|
||||||
|
|
||||||
void setId(const QString &id);
|
|
||||||
const QString &id() const;
|
|
||||||
|
|
||||||
void setName(const QString &name);
|
|
||||||
const QString &name() const;
|
|
||||||
|
|
||||||
void setVersion(const QString &version);
|
|
||||||
const QString &version() const;
|
|
||||||
|
|
||||||
void setFileName(const QString &fileName);
|
|
||||||
const QString &fileName() const;
|
|
||||||
|
|
||||||
void setPatterns(const QStringList &patterns);
|
|
||||||
const QStringList &patterns() const;
|
|
||||||
|
|
||||||
void setMimeTypes(const QStringList &mimeTypes);
|
|
||||||
const QStringList &mimeTypes() const;
|
|
||||||
|
|
||||||
void setUrl(const QUrl &url);
|
|
||||||
const QUrl &url() const;
|
|
||||||
|
|
||||||
static const QLatin1String kPriority;
|
static const QLatin1String kPriority;
|
||||||
static const QLatin1String kName;
|
static const QLatin1String kName;
|
||||||
static const QLatin1String kExtensions;
|
static const QLatin1String kExtensions;
|
||||||
@@ -74,15 +49,15 @@ public:
|
|||||||
static const QLatin1String kVersion;
|
static const QLatin1String kVersion;
|
||||||
static const QLatin1String kUrl;
|
static const QLatin1String kUrl;
|
||||||
|
|
||||||
private:
|
public:
|
||||||
int m_priority;
|
int priority;
|
||||||
QString m_id;
|
QString id;
|
||||||
QString m_name;
|
QString name;
|
||||||
QString m_version;
|
QString version;
|
||||||
QString m_fileName;
|
QString fileName;
|
||||||
QStringList m_patterns;
|
QStringList patterns;
|
||||||
QStringList m_mimeTypes;
|
QStringList mimeTypes;
|
||||||
QUrl m_url;
|
QUrl url;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -74,23 +74,23 @@ void ManageDefinitionsDialog::populateDefinitionsWidget()
|
|||||||
// Look for this definition in the current path specified by the user, not the one
|
// Look for this definition in the current path specified by the user, not the one
|
||||||
// stored in the settings. So the manager should not be queried for this information.
|
// stored in the settings. So the manager should not be queried for this information.
|
||||||
QString dirVersion;
|
QString dirVersion;
|
||||||
QFileInfo fi(m_path + downloadData.fileName());
|
QFileInfo fi(m_path + downloadData.fileName);
|
||||||
QFile definitionFile(fi.absoluteFilePath());
|
QFile definitionFile(fi.absoluteFilePath());
|
||||||
if (definitionFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
if (definitionFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
const QSharedPointer<HighlightDefinitionMetaData> &data = Manager::parseMetadata(fi);
|
const QSharedPointer<HighlightDefinitionMetaData> &data = Manager::parseMetadata(fi);
|
||||||
if (!data.isNull())
|
if (!data.isNull())
|
||||||
dirVersion = data->version();
|
dirVersion = data->version;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < 3; ++j) {
|
for (int j = 0; j < 3; ++j) {
|
||||||
QTableWidgetItem *item = new QTableWidgetItem;
|
QTableWidgetItem *item = new QTableWidgetItem;
|
||||||
if (j == 0)
|
if (j == 0)
|
||||||
item->setText(downloadData.name());
|
item->setText(downloadData.name);
|
||||||
else if (j == 1) {
|
else if (j == 1) {
|
||||||
item->setText(dirVersion);
|
item->setText(dirVersion);
|
||||||
item->setTextAlignment(Qt::AlignCenter);
|
item->setTextAlignment(Qt::AlignCenter);
|
||||||
} else if (j == 2) {
|
} else if (j == 2) {
|
||||||
item->setText(downloadData.version());
|
item->setText(downloadData.version);
|
||||||
item->setTextAlignment(Qt::AlignCenter);
|
item->setTextAlignment(Qt::AlignCenter);
|
||||||
}
|
}
|
||||||
ui.definitionsTable->setItem(i, j, item);
|
ui.definitionsTable->setItem(i, j, item);
|
||||||
@@ -110,7 +110,7 @@ void ManageDefinitionsDialog::downloadDefinitions()
|
|||||||
|
|
||||||
QList<QUrl> urls;
|
QList<QUrl> urls;
|
||||||
foreach (const QModelIndex &index, ui.definitionsTable->selectionModel()->selectedRows())
|
foreach (const QModelIndex &index, ui.definitionsTable->selectionModel()->selectedRows())
|
||||||
urls.append(m_definitionsMetaData.at(index.row()).url());
|
urls.append(m_definitionsMetaData.at(index.row()).url);
|
||||||
Manager::instance()->downloadDefinitions(urls, m_path);
|
Manager::instance()->downloadDefinitions(urls, m_path);
|
||||||
accept();
|
accept();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,16 +166,14 @@ public:
|
|||||||
QSet<QString> m_knownSuffixes;
|
QSet<QString> m_knownSuffixes;
|
||||||
QHash<QString, Core::MimeType> m_userModified;
|
QHash<QString, Core::MimeType> m_userModified;
|
||||||
static const int kMaxProgress;
|
static const int kMaxProgress;
|
||||||
|
|
||||||
struct PriorityComp
|
|
||||||
{
|
|
||||||
bool operator()(const QSharedPointer<HighlightDefinitionMetaData> &a,
|
|
||||||
const QSharedPointer<HighlightDefinitionMetaData> &b) {
|
|
||||||
return a->priority() > b->priority();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool priorityComp(const QSharedPointer<HighlightDefinitionMetaData> &a,
|
||||||
|
const QSharedPointer<HighlightDefinitionMetaData> &b)
|
||||||
|
{
|
||||||
|
return a->priority > b->priority;
|
||||||
|
}
|
||||||
|
|
||||||
const int ManagerProcessor::kMaxProgress = 200;
|
const int ManagerProcessor::kMaxProgress = 200;
|
||||||
|
|
||||||
ManagerProcessor::ManagerProcessor()
|
ManagerProcessor::ManagerProcessor()
|
||||||
@@ -228,7 +226,7 @@ void ManagerProcessor::process(QFutureInterface<QPair<Manager::RegisterData,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Consider definitions with higher priority first.
|
// Consider definitions with higher priority first.
|
||||||
qSort(allMetaData.begin(), allMetaData.end(), PriorityComp());
|
qSort(allMetaData.begin(), allMetaData.end(), &priorityComp);
|
||||||
|
|
||||||
foreach (const QSharedPointer<HighlightDefinitionMetaData> &metaData, allMetaData) {
|
foreach (const QSharedPointer<HighlightDefinitionMetaData> &metaData, allMetaData) {
|
||||||
if (future.isCanceled())
|
if (future.isCanceled())
|
||||||
@@ -236,12 +234,12 @@ void ManagerProcessor::process(QFutureInterface<QPair<Manager::RegisterData,
|
|||||||
if (future.progressValue() < kMaxProgress - 1)
|
if (future.progressValue() < kMaxProgress - 1)
|
||||||
future.setProgressValue(future.progressValue() + 1);
|
future.setProgressValue(future.progressValue() + 1);
|
||||||
|
|
||||||
if (data.m_idByName.contains(metaData->name()))
|
if (data.m_idByName.contains(metaData->name))
|
||||||
// Name already exists... This is a fallback item, do not consider it.
|
// Name already exists... This is a fallback item, do not consider it.
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const QString &id = metaData->id();
|
const QString &id = metaData->id;
|
||||||
data.m_idByName.insert(metaData->name(), id);
|
data.m_idByName.insert(metaData->name, id);
|
||||||
data.m_definitionsMetaData.insert(id, metaData);
|
data.m_definitionsMetaData.insert(id, metaData);
|
||||||
|
|
||||||
static const QStringList textPlain(QLatin1String("text/plain"));
|
static const QStringList textPlain(QLatin1String("text/plain"));
|
||||||
@@ -249,7 +247,7 @@ void ManagerProcessor::process(QFutureInterface<QPair<Manager::RegisterData,
|
|||||||
// A definition can specify multiple MIME types and file extensions/patterns,
|
// A definition can specify multiple MIME types and file extensions/patterns,
|
||||||
// but all on a single string. So associate all patterns with all MIME types.
|
// but all on a single string. So associate all patterns with all MIME types.
|
||||||
QList<Core::MimeGlobPattern> globPatterns;
|
QList<Core::MimeGlobPattern> globPatterns;
|
||||||
foreach (const QString &type, metaData->mimeTypes()) {
|
foreach (const QString &type, metaData->mimeTypes) {
|
||||||
if (data.m_idByMimeType.contains(type))
|
if (data.m_idByMimeType.contains(type))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -260,7 +258,7 @@ void ManagerProcessor::process(QFutureInterface<QPair<Manager::RegisterData,
|
|||||||
Core::MimeType mimeType;
|
Core::MimeType mimeType;
|
||||||
mimeType.setType(type);
|
mimeType.setType(type);
|
||||||
mimeType.setSubClassesOf(textPlain);
|
mimeType.setSubClassesOf(textPlain);
|
||||||
mimeType.setComment(metaData->name());
|
mimeType.setComment(metaData->name);
|
||||||
|
|
||||||
// If there's a user modification for this mime type, we want to use the
|
// If there's a user modification for this mime type, we want to use the
|
||||||
// modified patterns and rule-based matchers. If not, just consider what
|
// modified patterns and rule-based matchers. If not, just consider what
|
||||||
@@ -269,7 +267,7 @@ void ManagerProcessor::process(QFutureInterface<QPair<Manager::RegisterData,
|
|||||||
m_userModified.find(mimeType.type());
|
m_userModified.find(mimeType.type());
|
||||||
if (it == m_userModified.end()) {
|
if (it == m_userModified.end()) {
|
||||||
if (globPatterns.isEmpty()) {
|
if (globPatterns.isEmpty()) {
|
||||||
foreach (const QString &pattern, metaData->patterns()) {
|
foreach (const QString &pattern, metaData->patterns) {
|
||||||
static const QLatin1String mark("*.");
|
static const QLatin1String mark("*.");
|
||||||
if (pattern.startsWith(mark)) {
|
if (pattern.startsWith(mark)) {
|
||||||
const QString &suffix = pattern.right(pattern.length() - 2);
|
const QString &suffix = pattern.right(pattern.length() - 2);
|
||||||
@@ -360,14 +358,14 @@ QSharedPointer<HighlightDefinitionMetaData> Manager::parseMetadata(const QFileIn
|
|||||||
if (reader.readNext() == QXmlStreamReader::StartElement && reader.name() == kLanguage) {
|
if (reader.readNext() == QXmlStreamReader::StartElement && reader.name() == kLanguage) {
|
||||||
const QXmlStreamAttributes &atts = reader.attributes();
|
const QXmlStreamAttributes &atts = reader.attributes();
|
||||||
|
|
||||||
metaData->setFileName(fileInfo.fileName());
|
metaData->fileName = fileInfo.fileName();
|
||||||
metaData->setId(fileInfo.absoluteFilePath());
|
metaData->id = fileInfo.absoluteFilePath();
|
||||||
metaData->setName(atts.value(HighlightDefinitionMetaData::kName).toString());
|
metaData->name = atts.value(HighlightDefinitionMetaData::kName).toString();
|
||||||
metaData->setVersion(atts.value(HighlightDefinitionMetaData::kVersion).toString());
|
metaData->version = atts.value(HighlightDefinitionMetaData::kVersion).toString();
|
||||||
metaData->setPriority(atts.value(HighlightDefinitionMetaData::kPriority).toString()
|
metaData->priority = atts.value(HighlightDefinitionMetaData::kPriority).toString()
|
||||||
.toInt());
|
.toInt();
|
||||||
metaData->setPatterns(atts.value(HighlightDefinitionMetaData::kExtensions)
|
metaData->patterns = atts.value(HighlightDefinitionMetaData::kExtensions)
|
||||||
.toString().split(kSemiColon, QString::SkipEmptyParts));
|
.toString().split(kSemiColon, QString::SkipEmptyParts);
|
||||||
|
|
||||||
QStringList mimeTypes = atts.value(HighlightDefinitionMetaData::kMimeType).
|
QStringList mimeTypes = atts.value(HighlightDefinitionMetaData::kMimeType).
|
||||||
toString().split(kSemiColon, QString::SkipEmptyParts);
|
toString().split(kSemiColon, QString::SkipEmptyParts);
|
||||||
@@ -375,10 +373,10 @@ QSharedPointer<HighlightDefinitionMetaData> Manager::parseMetadata(const QFileIn
|
|||||||
// There are definitions which do not specify a MIME type, but specify file
|
// There are definitions which do not specify a MIME type, but specify file
|
||||||
// patterns. Creating an artificial MIME type is a workaround.
|
// patterns. Creating an artificial MIME type is a workaround.
|
||||||
QString artificialType(kArtificial);
|
QString artificialType(kArtificial);
|
||||||
artificialType.append(metaData->name().trimmed().replace(kSpace, kDash));
|
artificialType.append(metaData->name.trimmed().replace(kSpace, kDash));
|
||||||
mimeTypes.append(artificialType);
|
mimeTypes.append(artificialType);
|
||||||
}
|
}
|
||||||
metaData->setMimeTypes(mimeTypes);
|
metaData->mimeTypes = mimeTypes;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -402,13 +400,13 @@ QList<HighlightDefinitionMetaData> Manager::parseAvailableDefinitionsList(QIODev
|
|||||||
const QXmlStreamAttributes &atts = reader.attributes();
|
const QXmlStreamAttributes &atts = reader.attributes();
|
||||||
|
|
||||||
HighlightDefinitionMetaData metaData;
|
HighlightDefinitionMetaData metaData;
|
||||||
metaData.setName(atts.value(HighlightDefinitionMetaData::kName).toString());
|
metaData.name = atts.value(HighlightDefinitionMetaData::kName).toString();
|
||||||
metaData.setVersion(atts.value(HighlightDefinitionMetaData::kVersion).toString());
|
metaData.version = atts.value(HighlightDefinitionMetaData::kVersion).toString();
|
||||||
QString url(atts.value(HighlightDefinitionMetaData::kUrl).toString());
|
QString url(atts.value(HighlightDefinitionMetaData::kUrl).toString());
|
||||||
metaData.setUrl(QUrl(url));
|
metaData.url = QUrl(url);
|
||||||
const int slash = url.lastIndexOf(kSlash);
|
const int slash = url.lastIndexOf(kSlash);
|
||||||
if (slash != -1)
|
if (slash != -1)
|
||||||
metaData.setFileName(url.right(url.length() - slash - 1));
|
metaData.fileName = url.right(url.length() - slash - 1);
|
||||||
|
|
||||||
metaDataList.append(metaData);
|
metaDataList.append(metaData);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user