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:
hjk
2013-05-25 01:10:07 +02:00
committed by David Schulz
parent 92a15600a4
commit 79438adfcd
4 changed files with 42 additions and 117 deletions

View File

@@ -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; }

View File

@@ -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

View File

@@ -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();
} }

View File

@@ -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);
} }