File indexing completed on 2024-05-05 04:39:48

0001 #ifndef KDEVPLATFORM_PLUGIN_FILETEMPLATESPLUGIN_H
0002 #define KDEVPLATFORM_PLUGIN_FILETEMPLATESPLUGIN_H
0003 
0004 #include <interfaces/iplugin.h>
0005 #include <interfaces/itemplateprovider.h>
0006 #include <QVariantList>
0007 
0008 class QUrl;
0009 namespace KDevelop
0010 {
0011 class TemplatesModel;
0012 class IToolViewFactory;
0013 }
0014 
0015 
0016 class FileTemplatesPlugin : public KDevelop::IPlugin, public KDevelop::ITemplateProvider
0017 {
0018     Q_OBJECT
0019     Q_INTERFACES(KDevelop::ITemplateProvider)
0020 
0021 public:
0022     enum TemplateType
0023     {
0024         NoTemplate,
0025         FileTemplate,
0026         ProjectTemplate
0027     };
0028 
0029     FileTemplatesPlugin(QObject* parent, const QVariantList& args);
0030     ~FileTemplatesPlugin() override;
0031     void unload() override;
0032 
0033     KDevelop::ContextMenuExtension contextMenuExtension (KDevelop::Context* context, QWidget* parent) override;
0034 
0035     QString name() const override;
0036     QIcon icon() const override;
0037     QAbstractItemModel* templatesModel() const override;
0038     QString knsConfigurationFile() const override;
0039     QStringList supportedMimeTypes() const override;
0040 
0041     void reload() override;
0042     void loadTemplate(const QString& fileName) override;
0043 
0044     TemplateType determineTemplateType(const QUrl& url);
0045 
0046 private:
0047     // created lazily
0048     mutable KDevelop::TemplatesModel* m_model = nullptr;
0049     KDevelop::IToolViewFactory* m_toolView;
0050 
0051 public Q_SLOTS:
0052     void createFromTemplate();
0053     void previewTemplate();
0054 };
0055 
0056 #endif // KDEVPLATFORM_PLUGIN_FILETEMPLATESPLUGIN_H