From 037b039bfbfeda2e9b7ebef7e38616575411c876 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 14 Jan 2018 20:34:50 +0100 Subject: Initial plugins testing --- plugins/ProfileEditor/CMakeLists.txt | 18 +++++++++++++ plugins/ProfileEditor/ProfileEditor.json | 5 ++++ plugins/ProfileEditor/profileeditorplugin.cpp | 27 +++++++++++++++++++ plugins/ProfileEditor/profileeditorplugin.h | 29 ++++++++++++++++++++ plugins/interfaces.h | 39 +++++++++++++++++++++++++++ 5 files changed, 118 insertions(+) create mode 100644 plugins/ProfileEditor/CMakeLists.txt create mode 100644 plugins/ProfileEditor/ProfileEditor.json create mode 100644 plugins/ProfileEditor/profileeditorplugin.cpp create mode 100644 plugins/ProfileEditor/profileeditorplugin.h create mode 100644 plugins/interfaces.h (limited to 'plugins') diff --git a/plugins/ProfileEditor/CMakeLists.txt b/plugins/ProfileEditor/CMakeLists.txt new file mode 100644 index 0000000..3eaa0f5 --- /dev/null +++ b/plugins/ProfileEditor/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.1.0) + +find_package(Qt5Core REQUIRED) +find_package(Qt5Widgets REQUIRED) +find_package(Qt5WebEngineWidgets REQUIRED) + +set(CMAKE_AUTOMOC ON) + +add_library(ProfileEditorPlugin SHARED + profileeditorplugin.cpp + profileeditorplugin.h) + +target_include_directories(ProfileEditorPlugin + PUBLIC ..) + +target_link_libraries(ProfileEditorPlugin + PRIVATE Qt5::Widgets + PRIVATE Qt5::WebEngineWidgets) diff --git a/plugins/ProfileEditor/ProfileEditor.json b/plugins/ProfileEditor/ProfileEditor.json new file mode 100644 index 0000000..e371eee --- /dev/null +++ b/plugins/ProfileEditor/ProfileEditor.json @@ -0,0 +1,5 @@ +{ + "name": "Profile Editor", + "shortcut": "Ctrl+F2", + "author": "Aqua-sama +#include + +QWidget *ProfileEditorPlugin::createWidget(QWebEngineProfile *profile, QWidget *parent) +{ + QWidget *widget = new QWidget(parent); + widget->setWindowFlags(Qt::ToolTip); + widget->setVisible(false); + auto *layout = new QVBoxLayout(widget); + widget->setLayout(layout); + + QLabel *storageName_label = new QLabel(profile->storageName(), widget); + if(storageName_label->text().isEmpty()) + storageName_label->setText(tr("Off-the-record")); + layout->addWidget(storageName_label); + + return widget; +} diff --git a/plugins/ProfileEditor/profileeditorplugin.h b/plugins/ProfileEditor/profileeditorplugin.h new file mode 100644 index 0000000..3115ab2 --- /dev/null +++ b/plugins/ProfileEditor/profileeditorplugin.h @@ -0,0 +1,29 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: git://neueland.iserlohn-fortress.net/smolbote.git + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#ifndef PROFILEEDITORPLUGIN_H +#define PROFILEEDITORPLUGIN_H + +#include +#include +#include + +class ProfileEditorPlugin : public QObject, public PluginInterface, public ProfileInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID ProfileInterfaceIid FILE "ProfileEditor.json") + Q_INTERFACES(PluginInterface ProfileInterface) + +public: + // PluginInterface + + // ProfileInterface + QWidget *createWidget(QWebEngineProfile *profile, QWidget *parent) override; +}; + +#endif //PROFILEEDITORPLUGIN_H diff --git a/plugins/interfaces.h b/plugins/interfaces.h new file mode 100644 index 0000000..a43964a --- /dev/null +++ b/plugins/interfaces.h @@ -0,0 +1,39 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: git://neueland.iserlohn-fortress.net/smolbote.git + * + * SPDX-License-Identifier: MIT + */ + +#ifndef INTERFACES_H +#define INTERFACES_H + +#include + +class QString; +class QAction; +class QWidget; +class QWebEngineProfile; + +class PluginInterface +{ +public: + virtual ~PluginInterface() = default; +}; + +class ProfileInterface +{ +public: + virtual ~ProfileInterface() = default; + + virtual QWidget *createWidget(QWebEngineProfile *profile, QWidget *parent) = 0; +}; + +#define PluginInterfaceIid "net.iserlohn-fortress.smolbote.PluginInterface" +Q_DECLARE_INTERFACE(PluginInterface, PluginInterfaceIid) + +#define ProfileInterfaceIid "net.iserlohn-fortress.smolbote.ProfileInterface" +Q_DECLARE_INTERFACE(ProfileInterface, ProfileInterfaceIid) + +#endif //INTERFACES_H -- cgit v1.2.1