1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-20 02:36:34 +01:00

Show toolbars menu on right click in menubar and navigation toolbar.

This commit is contained in:
nowrep 2013-02-09 14:08:12 +01:00
parent 83f3c90752
commit 8a6beac501
7 changed files with 127 additions and 26 deletions

View File

@ -63,6 +63,7 @@
#include "qzsettings.h" #include "qzsettings.h"
#include "webtab.h" #include "webtab.h"
#include "speeddial.h" #include "speeddial.h"
#include "menubar.h"
#include "qtwin.h" #include "qtwin.h"
#include <QKeyEvent> #include <QKeyEvent>
@ -332,6 +333,8 @@ void QupZilla::setupMenu()
else { else {
mApp->macMenuReceiver()->setMenuBar(new QMenuBar(0)); mApp->macMenuReceiver()->setMenuBar(new QMenuBar(0));
} }
#else
setMenuBar(new MenuBar(this));
#endif #endif
// Standard actions - needed on Mac to be placed correctly in "application" menu // Standard actions - needed on Mac to be placed correctly in "application" menu
@ -449,18 +452,18 @@ void QupZilla::setupMenu()
m_actionCaretBrowsing->setVisible(true); m_actionCaretBrowsing->setVisible(true);
#endif #endif
QMenu* toolbarsMenu = new QMenu(tr("Toolbars")); m_toolbarsMenu = new QMenu(tr("Toolbars"));
#ifndef Q_OS_MAC #ifndef Q_OS_MAC
toolbarsMenu->addAction(m_actionShowMenubar); m_toolbarsMenu->addAction(m_actionShowMenubar);
#endif #endif
toolbarsMenu->addAction(m_actionShowToolbar); m_toolbarsMenu->addAction(m_actionShowToolbar);
toolbarsMenu->addAction(m_actionShowBookmarksToolbar); m_toolbarsMenu->addAction(m_actionShowBookmarksToolbar);
toolbarsMenu->addSeparator(); m_toolbarsMenu->addSeparator();
toolbarsMenu->addAction(m_actionTabsOnTop); m_toolbarsMenu->addAction(m_actionTabsOnTop);
QMenu* sidebarsMenu = new QMenu(tr("Sidebars")); QMenu* sidebarsMenu = new QMenu(tr("Sidebars"));
m_sideBarManager->setSideBarMenu(sidebarsMenu); m_sideBarManager->setSideBarMenu(sidebarsMenu);
m_menuView->addMenu(toolbarsMenu); m_menuView->addMenu(m_toolbarsMenu);
m_menuView->addMenu(sidebarsMenu); m_menuView->addMenu(sidebarsMenu);
m_menuView->addAction(m_actionShowStatusbar); m_menuView->addAction(m_actionShowStatusbar);
m_menuView->addSeparator(); m_menuView->addSeparator();
@ -565,8 +568,6 @@ void QupZilla::setupMenu()
/************ /************
* Menu Bar * * Menu Bar *
************/ ************/
menuBar()->setObjectName("mainwindow-menubar");
menuBar()->setCursor(Qt::ArrowCursor);
menuBar()->addMenu(m_menuFile); menuBar()->addMenu(m_menuFile);
menuBar()->addMenu(m_menuEdit); menuBar()->addMenu(m_menuEdit);
menuBar()->addMenu(m_menuView); menuBar()->addMenu(m_menuView);
@ -574,7 +575,6 @@ void QupZilla::setupMenu()
menuBar()->addMenu(m_menuBookmarks); menuBar()->addMenu(m_menuBookmarks);
menuBar()->addMenu(m_menuTools); menuBar()->addMenu(m_menuTools);
menuBar()->addMenu(m_menuHelp); menuBar()->addMenu(m_menuHelp);
menuBar()->setContextMenuPolicy(Qt::CustomContextMenu);
/***************** /*****************
* Other Actions * * Other Actions *
@ -804,7 +804,7 @@ LocationBar* QupZilla::locationBar() const
return qobject_cast<LocationBar*>(m_tabWidget->locationBars()->currentWidget()); return qobject_cast<LocationBar*>(m_tabWidget->locationBars()->currentWidget());
} }
QWidget* QupZilla::navigationContainer() QWidget* QupZilla::navigationContainer() const
{ {
if (!qzSettings->tabsOnTop) { if (!qzSettings->tabsOnTop) {
return 0; return 0;
@ -813,6 +813,13 @@ QWidget* QupZilla::navigationContainer()
return m_navigationContainer; return m_navigationContainer;
} }
void QupZilla::popupToolbarsMenu(const QPoint &pos)
{
aboutToShowViewMenu();
m_toolbarsMenu->exec(pos);
aboutToHideViewMenu();
}
void QupZilla::setWindowTitle(const QString &t) void QupZilla::setWindowTitle(const QString &t)
{ {
QString title = t; QString title = t;

View File

@ -95,12 +95,13 @@ public:
ProgressBar* progressBar() { return m_progressBar; } ProgressBar* progressBar() { return m_progressBar; }
QLabel* ipLabel() { return m_ipLabel; } QLabel* ipLabel() { return m_ipLabel; }
AdBlockIcon* adBlockIcon() { return m_adblockIcon; } AdBlockIcon* adBlockIcon() { return m_adblockIcon; }
QMenu* menuHelp() { return m_menuHelp; }
QAction* actionRestoreTab() { return m_actionRestoreTab; } QAction* actionRestoreTab() { return m_actionRestoreTab; }
QAction* actionReload() { return m_actionReload; } QAction* actionReload() { return m_actionReload; }
QMenu* menuHelp() { return m_menuHelp; }
QMenu* superMenu() { return m_superMenu; } QMenu* superMenu() { return m_superMenu; }
QWidget* navigationContainer(); QWidget* navigationContainer() const;
void popupToolbarsMenu(const QPoint &pos);
bool isClosing() { return m_isClosing; } bool isClosing() { return m_isClosing; }
QUrl homepageUrl() { return m_homepage; } QUrl homepageUrl() { return m_homepage; }
@ -259,6 +260,7 @@ private:
QMenu* m_menuTools; QMenu* m_menuTools;
QMenu* m_menuHelp; QMenu* m_menuHelp;
QMenu* m_menuView; QMenu* m_menuView;
QMenu* m_toolbarsMenu;
Menu* m_menuBookmarks; Menu* m_menuBookmarks;
Menu* m_menuHistory; Menu* m_menuHistory;
QMenu* m_menuClosedTabs; QMenu* m_menuClosedTabs;

View File

@ -211,7 +211,8 @@ SOURCES += \
autofill/autofill.cpp \ autofill/autofill.cpp \
network/schemehandlers/ftpschemehandler.cpp \ network/schemehandlers/ftpschemehandler.cpp \
autofill/autofillicon.cpp \ autofill/autofillicon.cpp \
autofill/autofillwidget.cpp autofill/autofillwidget.cpp \
tools/menubar.cpp
HEADERS += \ HEADERS += \
webview/tabpreview.h \ webview/tabpreview.h \
@ -377,7 +378,8 @@ HEADERS += \
autofill/autofill.h \ autofill/autofill.h \
network/schemehandlers/ftpschemehandler.h \ network/schemehandlers/ftpschemehandler.h \
autofill/autofillicon.h \ autofill/autofillicon.h \
autofill/autofillwidget.h autofill/autofillwidget.h \
tools/menubar.h
FORMS += \ FORMS += \
preferences/autofillmanager.ui \ preferences/autofillmanager.ui \

View File

@ -1,6 +1,6 @@
/* ============================================================ /* ============================================================
* QupZilla - WebKit based browser * QupZilla - WebKit based browser
* Copyright (C) 2010-2012 David Rosca <nowrep@gmail.com> * Copyright (C) 2010-2013 David Rosca <nowrep@gmail.com>
* *
* This program is free software: you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -33,6 +33,7 @@
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QStackedWidget> #include <QStackedWidget>
#include <QWebHistory> #include <QWebHistory>
#include <QMouseEvent>
QString NavigationBar::titleForUrl(QString title, const QUrl &url) QString NavigationBar::titleForUrl(QString title, const QUrl &url)
{ {
@ -146,6 +147,9 @@ NavigationBar::NavigationBar(QupZilla* mainClass)
#endif #endif
m_layout->addWidget(m_exitFullscreen); m_layout->addWidget(m_exitFullscreen);
setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenuRequested(QPoint)));
connect(m_menuBack, SIGNAL(aboutToShow()), this, SLOT(aboutToShowHistoryBackMenu())); connect(m_menuBack, SIGNAL(aboutToShow()), this, SLOT(aboutToShowHistoryBackMenu()));
connect(m_menuForward, SIGNAL(aboutToShow()), this, SLOT(aboutToShowHistoryNextMenu())); connect(m_menuForward, SIGNAL(aboutToShow()), this, SLOT(aboutToShowHistoryNextMenu()));
connect(m_buttonBack, SIGNAL(clicked()), this, SLOT(goBack())); connect(m_buttonBack, SIGNAL(clicked()), this, SLOT(goBack()));
@ -270,6 +274,11 @@ void NavigationBar::clearHistory()
refreshHistory(); refreshHistory();
} }
void NavigationBar::contextMenuRequested(const QPoint &pos)
{
p_QupZilla->popupToolbarsMenu(mapToGlobal(pos));
}
void NavigationBar::goAtHistoryIndex() void NavigationBar::goAtHistoryIndex()
{ {
QWebHistory* history = p_QupZilla->weView()->page()->history(); QWebHistory* history = p_QupZilla->weView()->page()->history();

View File

@ -1,6 +1,6 @@
/* ============================================================ /* ============================================================
* QupZilla - WebKit based browser * QupZilla - WebKit based browser
* Copyright (C) 2010-2012 David Rosca <nowrep@gmail.com> * Copyright (C) 2010-2013 David Rosca <nowrep@gmail.com>
* *
* This program is free software: you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -43,15 +43,15 @@ public:
void showReloadButton(); void showReloadButton();
void showStopButton(); void showStopButton();
inline ToolButton* buttonBack() { return m_buttonBack; } ToolButton* buttonBack() { return m_buttonBack; }
inline ToolButton* buttonNext() { return m_buttonNext; } ToolButton* buttonNext() { return m_buttonNext; }
inline ToolButton* buttonHome() { return m_buttonHome; } ToolButton* buttonHome() { return m_buttonHome; }
inline ToolButton* buttonAddTab() { return m_buttonAddTab; } ToolButton* buttonAddTab() { return m_buttonAddTab; }
inline ToolButton* buttonSuperMenu() { return m_supMenu; } ToolButton* buttonSuperMenu() { return m_supMenu; }
inline ToolButton* buttonExitFullscreen() { return m_exitFullscreen; } ToolButton* buttonExitFullscreen() { return m_exitFullscreen; }
inline ReloadStopButton* buttonReloadStop() { return m_reloadStop; } ReloadStopButton* buttonReloadStop() { return m_reloadStop; }
inline WebSearchBar* searchLine() { return m_searchLine; } WebSearchBar* searchLine() { return m_searchLine; }
inline QSplitter* splitter() { return m_navigationSplitter; } QSplitter* splitter() { return m_navigationSplitter; }
signals: signals:
@ -72,6 +72,8 @@ private slots:
void clearHistory(); void clearHistory();
void contextMenuRequested(const QPoint &pos);
private: private:
QString titleForUrl(QString title, const QUrl &url); QString titleForUrl(QString title, const QUrl &url);
QIcon iconForPage(const QUrl &url, const QIcon &sIcon); QIcon iconForPage(const QUrl &url, const QIcon &sIcon);

38
src/lib/tools/menubar.cpp Normal file
View File

@ -0,0 +1,38 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2013 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 "menubar.h"
#include "qupzilla.h"
MenuBar::MenuBar(QupZilla* parent)
: QMenuBar(parent)
, p_QupZilla(parent)
{
setObjectName("mainwindow-menubar");
setCursor(Qt::ArrowCursor);
setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, SIGNAL(customContextMenuRequested(QPoint)),
this, SLOT(contextMenuRequested(QPoint)));
}
void MenuBar::contextMenuRequested(const QPoint &pos)
{
if (!actionAt(pos)) {
p_QupZilla->popupToolbarsMenu(mapToGlobal(pos));
}
}

41
src/lib/tools/menubar.h Normal file
View File

@ -0,0 +1,41 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2013 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 MENUBAR_H
#define MENUBAR_H
#include "qz_namespace.h"
#include <QMenuBar>
class QupZilla;
class QT_QUPZILLA_EXPORT MenuBar : public QMenuBar
{
Q_OBJECT
public:
explicit MenuBar(QupZilla* parent);
private slots:
void contextMenuRequested(const QPoint &pos);
private:
QupZilla* p_QupZilla;
};
#endif // MENUBAR_H