GenericHighlighter: Use pointers for available definitions list

Change-Id: I82e428019589674d1af234d1e47bebda3602e8f2
Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
Orgad Shaneh
2014-07-01 11:54:49 +03:00
committed by Orgad Shaneh
parent d90eccd945
commit d3c6e59ae9
6 changed files with 21 additions and 22 deletions

View File

@@ -187,9 +187,9 @@ void HighlighterSettingsPage::requestAvailableDefinitionsMetaData()
setDownloadDefinitionsState(false); setDownloadDefinitionsState(false);
connect(Manager::instance(), connect(Manager::instance(),
SIGNAL(definitionsMetaDataReady(QList<Internal::HighlightDefinitionMetaData>)), SIGNAL(definitionsMetaDataReady(QList<Internal::DefinitionMetaDataPtr>)),
this, this,
SLOT(manageDefinitions(QList<Internal::HighlightDefinitionMetaData>)), SLOT(manageDefinitions(QList<Internal::DefinitionMetaDataPtr>)),
Qt::UniqueConnection); Qt::UniqueConnection);
connect(Manager::instance(), SIGNAL(errorDownloadingDefinitionsMetaData()), connect(Manager::instance(), SIGNAL(errorDownloadingDefinitionsMetaData()),
this, SLOT(showError()), Qt::UniqueConnection); this, SLOT(showError()), Qt::UniqueConnection);
@@ -199,14 +199,14 @@ void HighlighterSettingsPage::requestAvailableDefinitionsMetaData()
void HighlighterSettingsPage::ignoreDownloadReply() void HighlighterSettingsPage::ignoreDownloadReply()
{ {
disconnect(Manager::instance(), disconnect(Manager::instance(),
SIGNAL(definitionsMetaDataReady(QList<Internal::HighlightDefinitionMetaData>)), SIGNAL(definitionsMetaDataReady(QList<Internal::DefinitionMetaDataPtr>)),
this, this,
SLOT(manageDefinitions(QList<Internal::HighlightDefinitionMetaData>))); SLOT(manageDefinitions(QList<Internal::DefinitionMetaDataPtr>)));
disconnect(Manager::instance(), SIGNAL(errorDownloadingDefinitionsMetaData()), disconnect(Manager::instance(), SIGNAL(errorDownloadingDefinitionsMetaData()),
this, SLOT(showError())); this, SLOT(showError()));
} }
void HighlighterSettingsPage::manageDefinitions(const QList<HighlightDefinitionMetaData> &metaData) void HighlighterSettingsPage::manageDefinitions(const QList<DefinitionMetaDataPtr> &metaData)
{ {
ManageDefinitionsDialog dialog(metaData, ManageDefinitionsDialog dialog(metaData,
m_d->m_page->definitionFilesPath->path() + QLatin1Char('/'), m_d->m_page->definitionFilesPath->path() + QLatin1Char('/'),

View File

@@ -30,6 +30,7 @@
#ifndef HIGHLIGHTERSETTINGSPAGE_H #ifndef HIGHLIGHTERSETTINGSPAGE_H
#define HIGHLIGHTERSETTINGSPAGE_H #define HIGHLIGHTERSETTINGSPAGE_H
#include "highlightdefinitionmetadata.h"
#include "../texteditoroptionspage.h" #include "../texteditoroptionspage.h"
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -38,8 +39,6 @@ QT_END_NAMESPACE
namespace TextEditor { namespace TextEditor {
namespace Internal { class HighlightDefinitionMetaData; }
class HighlighterSettings; class HighlighterSettings;
class HighlighterSettingsPage : public TextEditorOptionsPage class HighlighterSettingsPage : public TextEditorOptionsPage
@@ -59,7 +58,7 @@ public:
private slots: private slots:
void resetDefinitionsLocation(); void resetDefinitionsLocation();
void requestAvailableDefinitionsMetaData(); void requestAvailableDefinitionsMetaData();
void manageDefinitions(const QList<Internal::HighlightDefinitionMetaData> &metaData); void manageDefinitions(const QList<Internal::DefinitionMetaDataPtr> &metaData);
void showError(); void showError();
void ignoreDownloadReply(); void ignoreDownloadReply();
void setFallbackLocationState(bool checked); void setFallbackLocationState(bool checked);

View File

@@ -42,7 +42,7 @@ using namespace TextEditor;
using namespace Internal; using namespace Internal;
ManageDefinitionsDialog::ManageDefinitionsDialog( ManageDefinitionsDialog::ManageDefinitionsDialog(
const QList<HighlightDefinitionMetaData> &metaDataList, const QList<DefinitionMetaDataPtr> &metaDataList,
const QString &path, const QString &path,
QWidget *parent) : QWidget *parent) :
QDialog(parent), QDialog(parent),
@@ -69,7 +69,7 @@ void ManageDefinitionsDialog::populateDefinitionsWidget()
const int size = m_definitionsMetaData.size(); const int size = m_definitionsMetaData.size();
ui.definitionsTable->setRowCount(size); ui.definitionsTable->setRowCount(size);
for (int i = 0; i < size; ++i) { for (int i = 0; i < size; ++i) {
const HighlightDefinitionMetaData &downloadData = m_definitionsMetaData.at(i); const HighlightDefinitionMetaData &downloadData = *m_definitionsMetaData.at(i);
// 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.
@@ -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

@@ -43,7 +43,7 @@ class ManageDefinitionsDialog : public QDialog
Q_OBJECT Q_OBJECT
public: public:
explicit ManageDefinitionsDialog(const QList<HighlightDefinitionMetaData> &metaDataList, explicit ManageDefinitionsDialog(const QList<DefinitionMetaDataPtr> &metaDataList,
const QString &path, const QString &path,
QWidget *parent = 0); QWidget *parent = 0);
@@ -56,7 +56,7 @@ private slots:
private: private:
void populateDefinitionsWidget(); void populateDefinitionsWidget();
QList<HighlightDefinitionMetaData> m_definitionsMetaData; QList<DefinitionMetaDataPtr> m_definitionsMetaData;
QString m_path; QString m_path;
Ui::ManageDefinitionsDialog ui; Ui::ManageDefinitionsDialog ui;
}; };

View File

@@ -380,26 +380,26 @@ DefinitionMetaDataPtr Manager::parseMetadata(const QFileInfo &fileInfo)
return metaData; return metaData;
} }
QList<HighlightDefinitionMetaData> Manager::parseAvailableDefinitionsList(QIODevice *device) const QList<DefinitionMetaDataPtr> Manager::parseAvailableDefinitionsList(QIODevice *device) const
{ {
static const QLatin1Char kSlash('/'); static const QLatin1Char kSlash('/');
static const QLatin1String kDefinition("Definition"); static const QLatin1String kDefinition("Definition");
QList<HighlightDefinitionMetaData> metaDataList; QList<DefinitionMetaDataPtr> metaDataList;
QXmlStreamReader reader(device); QXmlStreamReader reader(device);
while (!reader.atEnd() && !reader.hasError()) { while (!reader.atEnd() && !reader.hasError()) {
if (reader.readNext() == QXmlStreamReader::StartElement && if (reader.readNext() == QXmlStreamReader::StartElement &&
reader.name() == kDefinition) { reader.name() == kDefinition) {
const QXmlStreamAttributes &atts = reader.attributes(); const QXmlStreamAttributes &atts = reader.attributes();
HighlightDefinitionMetaData metaData; DefinitionMetaDataPtr metaData(new HighlightDefinitionMetaData);
metaData.name = atts.value(QLatin1String(kName)).toString(); metaData->name = atts.value(QLatin1String(kName)).toString();
metaData.version = atts.value(QLatin1String(kVersion)).toString(); metaData->version = atts.value(QLatin1String(kVersion)).toString();
QString url = atts.value(QLatin1String(kUrl)).toString(); QString url = atts.value(QLatin1String(kUrl)).toString();
metaData.url = 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.fileName = url.right(url.length() - slash - 1); metaData->fileName = url.right(url.length() - slash - 1);
metaDataList.append(metaData); metaDataList.append(metaData);
} }

View File

@@ -99,7 +99,7 @@ private:
bool m_isDownloadingDefinitionsSpec; bool m_isDownloadingDefinitionsSpec;
QList<DefinitionDownloader *> m_downloaders; QList<DefinitionDownloader *> m_downloaders;
QFutureWatcher<void> m_downloadWatcher; QFutureWatcher<void> m_downloadWatcher;
QList<HighlightDefinitionMetaData> parseAvailableDefinitionsList(QIODevice *device) const; QList<DefinitionMetaDataPtr> parseAvailableDefinitionsList(QIODevice *device) const;
QSet<QString> m_isBuildingDefinition; QSet<QString> m_isBuildingDefinition;
QHash<QString, QSharedPointer<HighlightDefinition> > m_definitions; QHash<QString, QSharedPointer<HighlightDefinition> > m_definitions;
@@ -116,7 +116,7 @@ private:
friend class ManagerProcessor; friend class ManagerProcessor;
signals: signals:
void definitionsMetaDataReady(const QList<Internal::HighlightDefinitionMetaData>&); void definitionsMetaDataReady(const QList<Internal::DefinitionMetaDataPtr>&);
void errorDownloadingDefinitionsMetaData(); void errorDownloadingDefinitionsMetaData();
}; };