Help: Get rid of special CentralWidget class for help mode viewer

Change-Id: Id733eb0449cdaed5901e4144089c8adaaf07d7a9
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Eike Ziller
2019-09-23 16:42:57 +02:00
parent 4f19046d75
commit 3b2209b870
18 changed files with 74 additions and 158 deletions

View File

@@ -332,6 +332,10 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
: Utils::Icons::CLOSE_SPLIT_RIGHT;
m_closeAction = new QAction(icon.icon(), QString(), toolBar);
connect(m_closeAction, &QAction::triggered, this, &HelpWidget::closeButtonClicked);
connect(m_closeAction, &QAction::triggered, this, [this] {
if (viewerCount() > 1)
closeCurrentPage();
});
button = new QToolButton;
button->setDefaultAction(m_closeAction);
layout->addWidget(button);
@@ -354,6 +358,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
HelpWidget::~HelpWidget()
{
saveState();
if (m_sideBar) {
m_sideBar->saveSettings(Core::ICore::settings(), sideBarSettingsKey());
Core::ActionManager::unregisterAction(m_contentsAction, Constants::HELP_CONTENTS);
@@ -388,6 +393,11 @@ QAbstractItemModel *HelpWidget::model()
return &m_model;
}
HelpWidget::WidgetStyle HelpWidget::widgetStyle() const
{
return m_style;
}
void HelpWidget::addSideBar()
{
QMap<QString, Core::Command *> shortcutMap;
@@ -705,6 +715,32 @@ void HelpWidget::helpModeButtonClicked()
close();
}
void HelpWidget::closeCurrentPage()
{
removeViewerAt(currentIndex());
}
void HelpWidget::saveState() const
{
// TODO generalize
if (m_style == ModeWidget) {
QList<qreal> zoomFactors;
QStringList currentPages;
for (int i = 0; i < viewerCount(); ++i) {
const HelpViewer *const viewer = viewerAt(i);
const QUrl &source = viewer->source();
if (source.isValid()) {
currentPages.append(source.toString());
zoomFactors.append(viewer->scale());
}
}
LocalHelpManager::setLastShownPages(currentPages);
LocalHelpManager::setLastShownPagesZoom(zoomFactors);
LocalHelpManager::setLastSelectedTab(currentIndex());
}
}
void HelpWidget::updateCloseButton()
{
if (m_style == ModeWidget) {