aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/generichighlighter/manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/texteditor/generichighlighter/manager.h')
-rw-r--r--src/plugins/texteditor/generichighlighter/manager.h54
1 files changed, 33 insertions, 21 deletions
diff --git a/src/plugins/texteditor/generichighlighter/manager.h b/src/plugins/texteditor/generichighlighter/manager.h
index 4963c33c5a..6c31a4451c 100644
--- a/src/plugins/texteditor/generichighlighter/manager.h
+++ b/src/plugins/texteditor/generichighlighter/manager.h
@@ -30,19 +30,23 @@
#ifndef MANAGER_H
#define MANAGER_H
+#include "highlightdefinitionmetadata.h"
+
#include <coreplugin/mimedatabase.h>
#include <QtCore/QString>
#include <QtCore/QHash>
-#include <QtCore/QMultiHash>
#include <QtCore/QSet>
+#include <QtCore/QUrl>
+#include <QtCore/QList>
#include <QtCore/QSharedPointer>
#include <QtCore/QFutureWatcher>
+#include <QtNetwork/QNetworkAccessManager>
QT_BEGIN_NAMESPACE
class QFileInfo;
class QStringList;
-class QDir;
+class QIODevice;
template <class> class QFutureInterface;
QT_END_NAMESPACE
@@ -50,6 +54,7 @@ namespace TextEditor {
namespace Internal {
class HighlightDefinition;
+class DefinitionDownloader;
class Manager : public QObject
{
@@ -61,43 +66,50 @@ public:
QString definitionIdByName(const QString &name) const;
QString definitionIdByMimeType(const QString &mimeType) const;
QString definitionIdByAnyMimeType(const QStringList &mimeTypes) const;
+
bool isBuildingDefinition(const QString &id) const;
- const QSharedPointer<HighlightDefinition> &definition(const QString &id);
+
+ QSharedPointer<HighlightDefinition> definition(const QString &id);
+ QSharedPointer<HighlightDefinitionMetaData> definitionMetaData(const QString &id) const;
+
+ void downloadAvailableDefinitionsMetaData();
+ void downloadDefinitions(const QList<QUrl> &urls);
+ bool isDownloadingDefinitions() const;
public slots:
void registerMimeTypes();
void showGenericHighlighterOptions() const;
- void openDefinitionsUrl(const QString &location) const;
private slots:
void registerMimeType(int index) const;
+ void downloadAvailableDefinitionsListFinished();
+ void downloadDefinitionsFinished();
private:
Manager();
Q_DISABLE_COPY(Manager)
- void clear();
void gatherDefinitionsMimeTypes(QFutureInterface<Core::MimeType> &future);
- void parseDefinitionMetadata(const QFileInfo &fileInfo,
- QString *comment,
- QStringList *mimeTypes,
- QStringList *patterns);
-
- struct PriorityCompare
- {
- bool operator()(const QString &a, const QString &b) const
- { return m_priorityById.value(a) < m_priorityById.value(b); }
-
- QHash<QString, int> m_priorityById;
- };
- PriorityCompare m_priorityComp;
-
- QFutureWatcher<Core::MimeType> m_watcher;
+ QSharedPointer<HighlightDefinitionMetaData> parseMetadata(const QFileInfo &fileInfo);
+ QList<HighlightDefinitionMetaData> parseAvailableDefinitionsList(QIODevice *device) const;
+ void clear();
QHash<QString, QString> m_idByName;
- QMultiHash<QString, QString> m_idByMimeType;
+ QHash<QString, QString> m_idByMimeType;
QHash<QString, QSharedPointer<HighlightDefinition> > m_definitions;
+ QHash<QString, QSharedPointer<HighlightDefinitionMetaData> > m_definitionsMetaData;
QSet<QString> m_isBuilding;
+
+ QList<DefinitionDownloader *> m_downloaders;
+ bool m_downloadingDefinitions;
+ QNetworkAccessManager m_networkManager;
+
+ QFutureWatcher<void> m_downloadWatcher;
+ QFutureWatcher<Core::MimeType> m_mimeTypeWatcher;
+
+signals:
+ void definitionsMetaDataReady(const QList<Internal::HighlightDefinitionMetaData>&);
+ void errorDownloadingDefinitionsMetaData();
};
} // namespace Internal