28#include <QActionGroup>
37 setObjectName(
"sidebar");
38 setAttribute(Qt::WA_DeleteOnClose);
40 m_layout =
new QVBoxLayout(
this);
41 m_layout->setContentsMargins(0, 0, 0, 0);
42 m_layout->setSpacing(0);
46 m_layout->addWidget(m_titleBar);
56 if (m_layout->count() == 2) {
57 delete m_layout->itemAt(1)->widget();
61 m_layout->addWidget(widget);
66 m_titleBar->
setTitle(tr(
"Bookmarks"));
82 QWidget* p = parentWidget();
106 auto *group =
new QActionGroup(menu);
108 QAction* act = menu->addAction(SideBar::tr(
"Bookmarks"),
this, &SideBarManager::slotShowSideBar);
109 act->setCheckable(
true);
110 act->setShortcut(QKeySequence(
QSL(
"Ctrl+Shift+B")));
111 act->setData(
QSL(
"Bookmarks"));
112 act->setChecked(m_activeBar ==
QL1S(
"Bookmarks"));
113 group->addAction(act);
115 act = menu->addAction(SideBar::tr(
"History"),
this, &SideBarManager::slotShowSideBar);
116 act->setCheckable(
true);
117 act->setShortcut(QKeySequence(
QSL(
"Ctrl+H")));
118 act->setData(
QSL(
"History"));
119 act->setChecked(m_activeBar ==
QL1S(
"History"));
120 group->addAction(act);
122 for (
const QPointer<SideBarInterface> &sidebar : std::as_const(
s_sidebars)) {
124 QAction* act = sidebar.data()->createMenuAction();
126 act->setChecked(m_activeBar ==
s_sidebars.key(sidebar));
127 connect(act, &QAction::triggered,
this, &SideBarManager::slotShowSideBar);
128 menu->addAction(act);
129 group->addAction(act);
133 m_window->addActions(menu->actions());
150 const auto windows =
mApp->windows();
152 window->sideBarManager()->sideBarRemoved(
id);
156void SideBarManager::slotShowSideBar()
158 if (
auto* act = qobject_cast<QAction*>(sender())) {
165 if (
id.isEmpty() ||
id ==
QL1S(
"None")) {
171 connect(m_sideBar, &QObject::destroyed,
this, [
this]() {
177 if (
id == m_activeBar) {
181 m_sideBar.data()->close();
187 if (
id == QLatin1String(
"Bookmarks")) {
188 m_sideBar.data()->showBookmarks();
190 else if (
id == QLatin1String(
"History")) {
191 m_sideBar.data()->showHistory();
196 m_sideBar.data()->close();
200 m_sideBar.data()->setTitle(sidebar->
title());
210 if (m_activeBar ==
id && m_sideBar) {
211 m_sideBar.data()->setWidget(
nullptr);
212 m_sideBar.data()->close();
218 if (
mApp->isClosing()) {
void removeActions(const QList< QAction * > &actions)
void saveSideBarSettings()
void setTitle(const QString &title)
SideBar(SideBarManager *manager, BrowserWindow *window)
void setWidget(QWidget *widget)
virtual QString title() const =0
virtual QWidget * createSideBarWidget(BrowserWindow *mainWindow)=0
QString activeSideBar() const
static void removeSidebar(SideBarInterface *interface)
void createMenu(QMenu *menu)
SideBarManager(BrowserWindow *parent)
static void addSidebar(const QString &id, SideBarInterface *interface)
void sideBarRemoved(const QString &id)
void showSideBar(const QString &id, bool toggle=true)