1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-20 10:46:35 +01:00

Enhanced Plugins API - possibility to add sidebar

- example implementation is now in TestPlugin
This commit is contained in:
nowrep 2012-04-01 16:36:38 +02:00
parent 841c05f8f7
commit e608bc0e1f
17 changed files with 414 additions and 118 deletions

View File

@ -416,6 +416,21 @@ bool MainApplication::isStateChanged()
return false;
}
QList<QupZilla*> MainApplication::mainWindows()
{
QList<QupZilla*> list;
for (int i = 0; i < m_mainWindows.count(); i++) {
if (!m_mainWindows.at(i)) {
continue;
}
list.append(m_mainWindows.at(i).data());
}
return list;
}
void MainApplication::togglePrivateBrowsingMode(bool state)
{
webSettings()->setAttribute(QWebSettings::PrivateBrowsingEnabled, state);
@ -543,9 +558,9 @@ void MainApplication::translateApp()
return;
}
QTranslator* app = new QTranslator();
QTranslator* app = new QTranslator(this);
app->load(TRANSLATIONSDIR + file);
QTranslator* sys = new QTranslator();
QTranslator* sys = new QTranslator(this);
if (QFile::exists(TRANSLATIONSDIR + "qt_" + longLoc + ".qm")) {
sys->load(TRANSLATIONSDIR + "qt_" + longLoc + ".qm");

View File

@ -67,6 +67,8 @@ public:
void aboutToCloseWindow(QupZilla* window);
bool isStateChanged();
QList<QupZilla*> mainWindows();
inline static MainApplication* getInstance() { return static_cast<MainApplication*>(QCoreApplication::instance()); }
inline QString getActiveProfilPath() { return m_activeProfil; }
inline QString getActiveLanguage() { return m_activeLanguage; }

View File

@ -100,6 +100,7 @@ QupZilla::QupZilla(Qz::BrowserWindow type, QUrl startUrl)
, m_macMenuBar(new QMenuBar())
#endif
, m_actionPrivateBrowsing(0)
, m_sideBarManager(new SideBarManager(this))
, m_statusBarMessage(new StatusBarMessage(this))
, m_usingTransparentBackground(false)
{
@ -372,15 +373,6 @@ void QupZilla::setupMenu()
actionEncoding->setMenu(m_menuEncoding);
connect(m_menuEncoding, SIGNAL(aboutToShow()), this, SLOT(aboutToShowEncodingMenu()));
m_actionShowBookmarksSideBar = new QAction(tr("Bookmarks"), this);
m_actionShowBookmarksSideBar->setCheckable(true);
m_actionShowBookmarksSideBar->setShortcut(QKeySequence("Ctrl+B"));
connect(m_actionShowBookmarksSideBar, SIGNAL(triggered()), this, SLOT(showBookmarksSideBar()));
m_actionShowHistorySideBar = new QAction(tr("History"), this);
m_actionShowHistorySideBar->setCheckable(true);
m_actionShowHistorySideBar->setShortcut(QKeySequence("Ctrl+H"));
connect(m_actionShowHistorySideBar, SIGNAL(triggered()), this, SLOT(showHistorySideBar()));
QMenu* toolbarsMenu = new QMenu(tr("Toolbars"));
#ifndef Q_WS_MAC
toolbarsMenu->addAction(m_actionShowMenubar);
@ -388,8 +380,7 @@ void QupZilla::setupMenu()
toolbarsMenu->addAction(m_actionShowToolbar);
toolbarsMenu->addAction(m_actionShowBookmarksToolbar);
QMenu* sidebarsMenu = new QMenu(tr("Sidebars"));
sidebarsMenu->addAction(m_actionShowBookmarksSideBar);
sidebarsMenu->addAction(m_actionShowHistorySideBar);
m_sideBarManager->setSideBarMenu(sidebarsMenu);
m_menuView->addMenu(toolbarsMenu);
m_menuView->addMenu(sidebarsMenu);
@ -588,14 +579,7 @@ void QupZilla::loadSettings()
m_navigationBar->buttonNext()->setVisible(showBackForwardIcons);
m_navigationBar->buttonAddTab()->setVisible(showAddTab);
if (activeSideBar != "None") {
if (activeSideBar == "Bookmarks") {
m_actionShowBookmarksSideBar->trigger();
}
else if (activeSideBar == "History") {
m_actionShowHistorySideBar->trigger();
}
}
m_sideBarManager->showSideBar(activeSideBar);
//Private browsing
m_actionPrivateBrowsing->setChecked(mApp->webSettings()->testAttribute(QWebSettings::PrivateBrowsingEnabled));
@ -924,16 +908,6 @@ void QupZilla::aboutToShowViewMenu()
#endif
m_actionShowStatusbar->setChecked(statusBar()->isVisible());
m_actionShowBookmarksToolbar->setChecked(m_bookmarksToolbar->isVisible());
if (!m_sideBar) {
m_actionShowBookmarksSideBar->setChecked(false);
m_actionShowHistorySideBar->setChecked(false);
}
else {
SideBar::SideWidget actWidget = m_sideBar.data()->activeWidget();
m_actionShowBookmarksSideBar->setChecked(actWidget == SideBar::Bookmarks);
m_actionShowHistorySideBar->setChecked(actWidget == SideBar::History);
}
}
void QupZilla::aboutToShowEditMenu()
@ -1233,42 +1207,20 @@ void QupZilla::showBookmarksToolbar()
settings.setValue("Browser-View-Settings/showBookmarksToolbar", !status);
}
void QupZilla::showBookmarksSideBar()
{
addSideBar();
if (m_sideBar.data()->activeWidget() != SideBar::Bookmarks) {
m_sideBar.data()->showBookmarks();
}
else {
m_sideBar.data()->close();
}
}
void QupZilla::showHistorySideBar()
{
addSideBar();
if (m_sideBar.data()->activeWidget() != SideBar::History) {
m_sideBar.data()->showHistory();
}
else {
m_sideBar.data()->close();
}
}
void QupZilla::addSideBar()
SideBar* QupZilla::addSideBar()
{
if (m_sideBar) {
return;
return m_sideBar.data();
}
m_sideBar = new SideBar(this);
m_sideBar = new SideBar(m_sideBarManager, this);
m_mainSplitter->insertWidget(0, m_sideBar.data());
m_mainSplitter->setCollapsible(0, false);
m_mainSplitter->setSizes(QList<int>() << m_sideBarWidth << m_webViewWidth);
return m_sideBar.data();
}
void QupZilla::saveSideBarWidth()

View File

@ -41,6 +41,7 @@ class MainApplication;
class WebTab;
class AdBlockIcon;
class SideBar;
class SideBarManager;
class ProgressBar;
class StatusBarMessage;
class NavigationBar;
@ -75,6 +76,7 @@ public:
void restoreWindowState(const QByteArray &window, const QByteArray &tabs);
SideBar* addSideBar();
virtual QMenuBar* menuBar() const;
TabbedWebView* weView() const;
@ -84,10 +86,8 @@ public:
inline BookmarksToolbar* bookmarksToolbar() { return m_bookmarksToolbar; }
inline StatusBarMessage* statusBarMessage() { return m_statusBarMessage; }
inline NavigationBar* navigationBar() { return m_navigationBar; }
inline SideBarManager* sideBarManager() { return m_sideBarManager; }
inline ProgressBar* progressBar() { return m_progressBar; }
inline QString activeProfil() { return m_activeProfil; }
inline QString activeLanguage() { return m_activeLanguage; }
inline QLabel* ipLabel() { return m_ipLabel; }
inline AdBlockIcon* adBlockIcon() { return m_adblockIcon; }
inline QMenu* menuHelp() { return m_menuHelp; }
@ -95,6 +95,9 @@ public:
inline QAction* actionReload() { return m_actionReload; }
inline QMenu* superMenu() { return m_superMenu; }
inline QString activeProfil() { return m_activeProfil; }
inline QString activeLanguage() { return m_activeLanguage; }
inline bool isClosing() { return m_isClosing; }
inline QUrl homepageUrl() { return m_homepage; }
@ -147,9 +150,7 @@ private slots:
void searchOnPage();
void showCookieManager();
void showHistoryManager();
void showHistorySideBar();
void showBookmarksManager();
void showBookmarksSideBar();
void showRSSManager();
void showDownloadManager();
void showMenubar();
@ -197,7 +198,6 @@ private:
void setupUi();
void setupMenu();
void addSideBar();
void disconnectObjects();
@ -255,6 +255,7 @@ private:
BookmarksToolbar* m_bookmarksToolbar;
TabWidget* m_tabWidget;
QWeakPointer<SideBar> m_sideBar;
SideBarManager* m_sideBarManager;
StatusBarMessage* m_statusBarMessage;
NavigationBar* m_navigationBar;

View File

@ -308,7 +308,8 @@ HEADERS += \
bookmarksimport/bookmarksimporticonfetcher.h \
other/checkboxdialog.h \
network/schemehandler.h \
tools/plaineditwithlines.h
tools/plaineditwithlines.h \
sidebar/sidebarinterface.h
FORMS += \
preferences/autofillmanager.ui \

View File

@ -51,7 +51,7 @@ QString titleForUrl(QString title, const QUrl &url)
QIcon iconForPage(const QUrl &url, const QIcon &sIcon)
{
QIcon icon;
icon.addPixmap(url.scheme() == "qupzilla" ? QIcon(":icons/qupzilla.png").pixmap(16, 16) :_iconForUrl(url).pixmap(16, 16));
icon.addPixmap(url.scheme() == "qupzilla" ? QIcon(":icons/qupzilla.png").pixmap(16, 16) : _iconForUrl(url).pixmap(16, 16));
icon.addPixmap(sIcon.pixmap(16, 16), QIcon::Active);
return icon;
}
@ -204,7 +204,7 @@ void NavigationBar::aboutToShowHistoryBackMenu()
if (item.isValid() && lastUrl != item.url()) {
QString title = titleForUrl(item.title(), item.url());
const QIcon &icon = iconForPage(item.url(), IconProvider::fromTheme("go-previous"));
const QIcon &icon = iconForPage(item.url(), IconProvider::standardIcon(QStyle::SP_ArrowBack));
Action* act = new Action(icon, title);
act->setData(i);
connect(act, SIGNAL(triggered()), this, SLOT(goAtHistoryIndex()));
@ -241,7 +241,7 @@ void NavigationBar::aboutToShowHistoryNextMenu()
if (item.isValid() && lastUrl != item.url()) {
QString title = titleForUrl(item.title(), item.url());
const QIcon &icon = iconForPage(item.url(), IconProvider::fromTheme("go-next"));
const QIcon &icon = iconForPage(item.url(), IconProvider::standardIcon(QStyle::SP_ArrowForward));
Action* act = new Action(icon, title);
act->setData(i);
connect(act, SIGNAL(triggered()), this, SLOT(goAtHistoryIndex()));

View File

@ -20,7 +20,6 @@
#include <QPixmap>
#include <QtPlugin>
#include <QWebHitTestResult>
#include "qz_namespace.h"
@ -47,6 +46,7 @@ class QMenu;
class QWebHitTestResult;
class QMouseEvent;
class QKeyEvent;
class QWheelEvent;
class WebView;

View File

@ -16,16 +16,22 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "sidebar.h"
#include "sidebarinterface.h"
#include "docktitlebarwidget.h"
#include "bookmarkssidebar.h"
#include "historysidebar.h"
#include "mainapplication.h"
#include "qupzilla.h"
#include "settings.h"
SideBar::SideBar(QupZilla* mainClass, QWidget* parent)
: QWidget(parent)
#include <QMenu>
QHash<QString, QWeakPointer<SideBarInterface> > SideBarManager::m_sidebars;
SideBar::SideBar(SideBarManager* manager, QupZilla* mainClass)
: QWidget(mainClass)
, p_QupZilla(mainClass)
, m_activeWidget(None)
, m_manager(manager)
{
setObjectName("sidebar");
setAttribute(Qt::WA_DeleteOnClose);
@ -39,31 +45,9 @@ SideBar::SideBar(QupZilla* mainClass, QWidget* parent)
m_layout->addWidget(m_titleBar);
}
void SideBar::showBookmarks()
void SideBar::setTitle(const QString &title)
{
m_titleBar->setTitle(tr("Bookmarks"));
BookmarksSideBar* bar = new BookmarksSideBar(p_QupZilla);
setWidget(bar);
m_activeWidget = Bookmarks;
Settings settings;
settings.setValue("Browser-View-Settings/SideBar", "Bookmarks");
}
void SideBar::showHistory()
{
m_titleBar->setTitle(tr("History"));
HistorySideBar* bar = new HistorySideBar(p_QupZilla);
setWidget(bar);
m_activeWidget = History;
Settings settings;
settings.setValue("Browser-View-Settings/SideBar", "History");
}
void SideBar::showRSS()
{
m_titleBar->setTitle(title);
}
void SideBar::setWidget(QWidget* widget)
@ -75,16 +59,168 @@ void SideBar::setWidget(QWidget* widget)
m_layout->addWidget(widget);
}
void SideBar::showBookmarks()
{
m_titleBar->setTitle(tr("Bookmarks"));
BookmarksSideBar* bar = new BookmarksSideBar(p_QupZilla);
setWidget(bar);
}
void SideBar::showHistory()
{
m_titleBar->setTitle(tr("History"));
HistorySideBar* bar = new HistorySideBar(p_QupZilla);
setWidget(bar);
}
void SideBar::close()
{
Settings settings;
settings.setValue("Browser-View-Settings/SideBar", "None");
p_QupZilla->saveSideBarWidth();
m_manager->closeSideBar();
QWidget::close();
}
SideBar::~SideBar()
SideBarManager::SideBarManager(QupZilla* parent)
: QObject(parent)
, p_QupZilla(parent)
, m_menu(0)
{
}
void SideBarManager::setSideBarMenu(QMenu* menu)
{
m_menu = menu;
refreshMenu();
}
void SideBarManager::addSidebar(const QString &id, SideBarInterface* interface)
{
m_sidebars[id] = interface;
foreach(QupZilla * window, mApp->mainWindows()) {
window->sideBarManager()->refreshMenu();
}
}
void SideBarManager::removeSidebar(const QString &id)
{
m_sidebars.remove(id);
foreach(QupZilla * window, mApp->mainWindows()) {
window->sideBarManager()->sideBarRemoved(id);
}
}
void SideBarManager::refreshMenu()
{
if (!m_menu) {
return;
}
m_menu->clear();
QAction* act = m_menu->addAction(SideBar::tr("Bookmarks"), this, SLOT(slotShowSideBar()));
act->setCheckable(true);
act->setShortcut(QKeySequence("Ctrl+B"));
act->setData("Bookmarks");
act = m_menu->addAction(SideBar::tr("History"), this, SLOT(slotShowSideBar()));
act->setCheckable(true);
act->setShortcut(QKeySequence("Ctrl+H"));
act->setData("History");
foreach(const QWeakPointer<SideBarInterface> &sidebar, m_sidebars) {
if (!sidebar) {
continue;
}
QAction* act = sidebar.data()->menuAction();
act->setData(m_sidebars.key(sidebar));
connect(act, SIGNAL(triggered()), this, SLOT(slotShowSideBar()));
m_menu->addAction(act);
}
updateActions();
}
void SideBarManager::slotShowSideBar()
{
if (QAction* act = qobject_cast<QAction*>(sender())) {
showSideBar(act->data().toString());
}
}
void SideBarManager::updateActions()
{
if (!m_menu) {
return;
}
foreach(QAction * act, m_menu->actions()) {
act->setChecked(act->data().toString() == m_activeBar);
}
}
void SideBarManager::showSideBar(const QString &id)
{
if (id == "None") {
return;
}
if (!m_sideBar) {
m_sideBar = p_QupZilla->addSideBar();
}
if (id == m_activeBar) {
m_sideBar.data()->close();
m_activeBar = "None";
return;
}
if (id == "Bookmarks") {
m_sideBar.data()->showBookmarks();
}
else if (id == "History") {
m_sideBar.data()->showHistory();
}
else {
SideBarInterface* sidebar = m_sidebars[id].data();
if (!sidebar) {
m_sideBar.data()->close();
return;
}
m_sideBar.data()->setTitle(sidebar->title());
m_sideBar.data()->setWidget(sidebar->createSideBarWidget(p_QupZilla));
}
m_activeBar = id;
Settings settings;
settings.setValue("Browser-View-Settings/SideBar", id);
updateActions();
}
void SideBarManager::sideBarRemoved(const QString &id)
{
if (m_activeBar == id && m_sideBar) {
m_sideBar.data()->close();
}
refreshMenu();
}
void SideBarManager::closeSideBar()
{
m_activeBar = "None";
Settings settings;
settings.setValue("Browser-View-Settings/SideBar", m_activeBar);
p_QupZilla->saveSideBarWidth();
updateActions();
}

View File

@ -19,40 +19,69 @@
#define SIDEBAR_H
#include <QWidget>
#include <QHash>
#include <QWeakPointer>
#include "qz_namespace.h"
class QVBoxLayout;
class QMenu;
class DockTitleBarWidget;
class SideBarInterface;
class SideBarManager;
class QupZilla;
class QT_QUPZILLA_EXPORT SideBar : public QWidget
{
Q_OBJECT
public:
enum SideWidget { None = 0, Bookmarks, History, RSS };
explicit SideBar(QupZilla* mainClass, QWidget* parent = 0);
~SideBar();
explicit SideBar(SideBarManager* manager, QupZilla* mainClass);
void showBookmarks();
void showHistory();
void showRSS();
SideWidget activeWidget() { return m_activeWidget; }
signals:
void setTitle(const QString &title);
void setWidget(QWidget* widget);
public slots:
void close();
private:
void setWidget(QWidget* widget);
QupZilla* p_QupZilla;
QVBoxLayout* m_layout;
DockTitleBarWidget* m_titleBar;
SideWidget m_activeWidget;
SideBarManager* m_manager;
};
class QT_QUPZILLA_EXPORT SideBarManager : public QObject
{
Q_OBJECT
public:
explicit SideBarManager(QupZilla* parent);
void setSideBarMenu(QMenu* menu);
void refreshMenu();
void showSideBar(const QString &id);
void sideBarRemoved(const QString &id);
void closeSideBar();
static QHash<QString, QWeakPointer<SideBarInterface> > m_sidebars;
static void addSidebar(const QString &id, SideBarInterface* interface);
static void removeSidebar(const QString &id);
private slots:
void slotShowSideBar();
private:
void updateActions();
QupZilla* p_QupZilla;
QWeakPointer<SideBar> m_sideBar;
QMenu* m_menu;
QString m_activeBar;
};
#endif // SIDEBAR_H

View File

@ -0,0 +1,40 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2012 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#ifndef SIDEBARINTERFACE_H
#define SIDEBARINTERFACE_H
#include <QObject>
#include "qz_namespace.h"
class QAction;
class QupZilla;
class QT_QUPZILLA_EXPORT SideBarInterface : public QObject
{
public:
explicit SideBarInterface(QObject* parent = 0) : QObject(parent) { }
virtual QString title() const = 0;
virtual QAction* menuAction() = 0;
virtual QWidget* createSideBarWidget(QupZilla* mainWindow) = 0;
};
#endif // SIDEBARINTERFACE_H

View File

@ -25,6 +25,8 @@ DockTitleBarWidget::DockTitleBarWidget(const QString &title, QWidget* parent)
closeButton->setIcon(QIcon(IconProvider::standardIcon(QStyle::SP_DialogCloseButton).pixmap(16, 16)));
label->setText(title);
connect(closeButton, SIGNAL(clicked()), parent, SLOT(close()));
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
}
void DockTitleBarWidget::setTitle(const QString &title)

View File

@ -65,7 +65,7 @@ bool AKN_Plugin::testPlugin()
QTranslator* AKN_Plugin::getTranslator(const QString &locale)
{
QTranslator* translator = new QTranslator();
QTranslator* translator = new QTranslator(this);
translator->load(":/accesskeysnavigation/locale/" + locale);
return translator;
}

View File

@ -68,7 +68,7 @@ bool MouseGesturesPlugin::testPlugin()
QTranslator* MouseGesturesPlugin::getTranslator(const QString &locale)
{
QTranslator* translator = new QTranslator();
QTranslator* translator = new QTranslator(this);
translator->load(":/mousegestures/locale/" + locale);
return translator;
}

View File

@ -8,8 +8,10 @@ TARGET = TestPlugin
# OS/2 allows only 8 chars in TARGET
os2: TARGET = TestPlug
SOURCES += testplugin.cpp
HEADERS += testplugin.h
SOURCES += testplugin.cpp \
testplugin_sidebar.cpp
HEADERS += testplugin.h \
testplugin_sidebar.h
RESOURCES += testplugin.qrc
TRANSLATIONS += translations/cs_CZ.ts\

View File

@ -16,10 +16,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "testplugin.h"
#include "testplugin_sidebar.h"
#include "qupzilla.h"
#include "webview.h"
#include "pluginproxy.h"
#include "mainapplication.h"
#include "sidebar.h"
#include <QTranslator>
#include <QPushButton>
@ -41,7 +43,7 @@ PluginSpec TestPlugin::pluginSpec()
spec.name = "Example Plugin";
spec.info = "Example minimal plugin";
spec.description = "Very simple minimal plugin example";
spec.version = "0.0.1";
spec.version = "0.1.5";
spec.author = "David Rosca <nowrep@gmail.com>";
spec.icon = QPixmap(":qupzilla.png");
spec.hasSettings = true;
@ -59,7 +61,12 @@ void TestPlugin::init(const QString &sPath)
m_settingsPath = sPath;
// Registering this plugin as a MousePressHandler.
// Otherwise mousePress() function will never be called
QZ_REGISTER_EVENT_HANDLER(PluginProxy::MousePressHandler);
// Adding new sidebar into application
SideBarManager::addSidebar("testplugin-sidebar", new TestPlugin_Sidebar(this));
}
void TestPlugin::unload()
@ -68,6 +75,9 @@ void TestPlugin::unload()
// This function will be called when unloading plugin
// it will be also called if we return false from testPlugin()
// Removing sidebar from application
SideBarManager::removeSidebar("testplugin-sidebar");
}
bool TestPlugin::testPlugin()
@ -81,13 +91,19 @@ bool TestPlugin::testPlugin()
QTranslator* TestPlugin::getTranslator(const QString &locale)
{
QTranslator* translator = new QTranslator();
// Loads translation according to locale file
// QString locale will contains "fr_FR.qm" for French locale
QTranslator* translator = new QTranslator(this);
translator->load(":/testplugin/locale/" + locale);
return translator;
}
void TestPlugin::showSettings(QWidget* parent)
{
// This function will be called from Preferences after clicking on Settings button.
// Settings button will be enabled if PluginSpec.hasSettings == true
QDialog* dialog = new QDialog(parent);
QPushButton* b = new QPushButton("Example Plugin v0.0.1");
QPushButton* closeButton = new QPushButton(tr("Close"));
@ -110,6 +126,8 @@ void TestPlugin::showSettings(QWidget* parent)
void TestPlugin::populateWebViewMenu(QMenu* menu, WebView* view, const QWebHitTestResult &r)
{
// Called from WebView when creating context menu
m_view = view;
QString title;
@ -132,6 +150,9 @@ bool TestPlugin::mousePress(const Qz::ObjectName &type, QObject* obj, QMouseEven
{
qDebug() << "mousePress" << type << obj << event;
// Returning false means, that we don't want to block propagating this event
// Returning true may affect behaviour of QupZilla, so make sure you know what
// you are doing!
return false;
}
@ -140,5 +161,7 @@ void TestPlugin::actionSlot()
QMessageBox::information(m_view, tr("Hello"), tr("First plugin action works :-)"));
}
//Export plugin macro
// Export plugin macro
// This macro has to be only in class derived from PluginInterface
// Don't call it in other files!
Q_EXPORT_PLUGIN2(ExamplePlugin, TestPlugin)

View File

@ -0,0 +1,58 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2012 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "testplugin_sidebar.h"
#include <QAction>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
TestPlugin_Sidebar::TestPlugin_Sidebar(QObject* parent)
: SideBarInterface(parent)
{
}
QString TestPlugin_Sidebar::title() const
{
return tr("Testing Sidebar");
}
QAction* TestPlugin_Sidebar::menuAction()
{
QAction* act = new QAction(tr("Testing Sidebar"), 0);
act->setCheckable(true);
return act;
}
QWidget* TestPlugin_Sidebar::createSideBarWidget(QupZilla* mainWindow)
{
Q_UNUSED(mainWindow)
QWidget* w = new QWidget;
QPushButton* b = new QPushButton("Example Plugin v0.0.1");
QLabel* label = new QLabel();
label->setPixmap(QPixmap(":icons/other/about.png"));
QVBoxLayout* l = new QVBoxLayout(w);
l->addWidget(label);
l->addWidget(b);
w->setLayout(l);
return w;
}

View File

@ -0,0 +1,35 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2012 David Rosca <nowrep@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#ifndef TESTPLUGIN_SIDEBAR_H
#define TESTPLUGIN_SIDEBAR_H
#include "sidebarinterface.h"
class TestPlugin_Sidebar : public SideBarInterface
{
Q_OBJECT
public:
explicit TestPlugin_Sidebar(QObject* parent = 0);
QString title() const;
QAction* menuAction();
QWidget* createSideBarWidget(QupZilla* mainWindow);
};
#endif // TESTPLUGIN_SIDEBAR_H