1 /*
2     SPDX-FileCopyrightText: 2006 Adam Treat <treat@kde.org>
3     SPDX-FileCopyrightText: 2007 Alexander Dymo <adymo@kdevelop.org>
4 
5     SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #ifndef KDEVPLATFORM_LANGUAGECONTROLLER_H
9 #define KDEVPLATFORM_LANGUAGECONTROLLER_H
10 
11 #include <interfaces/ilanguagecontroller.h>
12 
13 #include "shellexport.h"
14 
15 namespace KDevelop {
16 
17 class ILanguageSupport;
18 class LanguageControllerPrivate;
19 
20 class KDEVPLATFORMSHELL_EXPORT LanguageController : public ILanguageController {
21     Q_OBJECT
22 public:
23     explicit LanguageController(QObject *parent);
24     ~LanguageController() override;
25 
26     void initialize();
27 
28     //After this was called, no more languages will be returned
29     void cleanup();
30 
31     /** @copydoc ILanguageController::activeLanguages() */
32     QList<ILanguageSupport*> activeLanguages() override;
33     /** @copydoc ILanguageController::language() */
34     ILanguageSupport* language(const QString &name) const override;
35     /** @copydoc ILanguageController::languageForUrl() */
36     QList<ILanguageSupport*> languagesForUrl(const QUrl &url) override;
37     /** @copydoc ILanguageController::backgroundParser() */
38     BackgroundParser *backgroundParser() const override;
39 
40     StaticAssistantsManager *staticAssistantsManager() const override;
41 
42     QList<ILanguageSupport*> loadedLanguages() const override;
43 
44     ICompletionSettings *completionSettings() const override;
45 
46     ProblemModelSet* problemModelSet() const override;
47 
48     QList<ILanguageSupport*> languagesForMimetype(const QString& mime);
49     QList<QString> mimetypesForLanguageName(const QString& languageName);
50 
51 protected:
52     /**
53      * functions for unit tests
54      * @see TestLanguageController
55      */
56     void addLanguageSupport(KDevelop::ILanguageSupport* languageSupport, const QStringList& mimetypes);
57 
58 private:
59     const QScopedPointer<class LanguageControllerPrivate> d_ptr;
60     Q_DECLARE_PRIVATE(LanguageController)
61 };
62 
63 }
64 
65 #endif
66 
67