35 #include "boost/bind.hpp"
36 #include "boost/function.hpp"
37 #include <QHelpEngine>
39 #include <QHelpContentWidget>
40 #include <QHelpIndexWidget>
55 mVerticalLayout(NULL),
61 void HelpWidget::setup()
66 mVerticalLayout =
new QVBoxLayout(
this);
67 mVerticalLayout->setMargin(0);
68 mVerticalLayout->setSpacing(0);
69 this->setLayout(mVerticalLayout);
70 mTabWidget =
new QTabWidget(
this);
71 mTabWidget->setElideMode(Qt::ElideRight);
73 QSplitter *splitter =
new QSplitter(Qt::Horizontal);
81 QHBoxLayout* buttonLayout =
new QHBoxLayout;
83 mVerticalLayout->addLayout(buttonLayout);
85 splitter->insertWidget(0, mTabWidget);
86 splitter->insertWidget(1, browser);
87 splitter->setStretchFactor(1, 1);
88 mVerticalLayout->addWidget(splitter);
90 this->addContentWidget(mTabWidget, buttonLayout);
91 this->addSearchWidget(mTabWidget, buttonLayout);
92 this->addIndexWidget(mTabWidget, buttonLayout);
94 this->addToggleTabWidgetButton(buttonLayout);
95 this->addWebNavigationButtons(buttonLayout);
96 buttonLayout->addStretch();
100 bool navVis =
settings()->
value(
"org.custusx.help/navigationVisible").toBool();
102 mTabWidget->setVisible(navVis);
111 "<h3>Experimental help</h3>"
117 void HelpWidget::addContentWidget(QTabWidget* tabWidget, QBoxLayout* buttonLayout)
119 QHelpContentWidget* contentWidget = mEngine->engine()->contentWidget();
120 tabWidget->addTab(contentWidget,
"contents");
122 boost::function<void()> f = boost::bind(&QHelpContentWidget::expandToDepth, contentWidget, 2);
123 connect(mEngine->engine()->contentModel(), &QHelpContentModel::contentsCreated, f);
124 contentWidget->expandToDepth(2);
126 connect(mEngine->engine()->contentWidget(), &QHelpContentWidget::linkActivated,
130 void HelpWidget::addWebNavigationButtons(QBoxLayout* buttonLayout)
133 QIcon(
":/icons/open_icon_library/arrow-left-3.png"),
134 "Back",
"Back to previous page",
139 QIcon(
":/icons/open_icon_library/arrow-right-3.png"),
140 "Forward",
"Forward to next page",
144 connect(mBrowser, SIGNAL(backwardAvailable(
bool)), back, SLOT(setEnabled(
bool)));
145 connect(mBrowser, SIGNAL(forwardAvailable(
bool)), forward, SLOT(setEnabled(
bool)));
148 void HelpWidget::backSlot()
150 mBrowser->backward();
153 void HelpWidget::forwardSlot()
158 void HelpWidget::addToggleTabWidgetButton(QBoxLayout* buttonLayout)
161 QIcon(
":/icons/open_icon_library/view-list-tree.png"),
162 "Toggle show navigation controls",
"",
163 SLOT(toggleShowNavigationControls()),
165 action->setCheckable(
true);
167 button->setDefaultAction(action);
168 buttonLayout->addWidget(button);
169 mShowNavigationControlsAction = action;
172 void HelpWidget::addIndexWidget(QTabWidget* tabWidget, QBoxLayout* buttonLayout)
174 mIndexWidget =
new HelpIndexWidget(mEngine,
this);
175 tabWidget->addTab(mIndexWidget,
"index");
181 void HelpWidget::addSearchWidget(QTabWidget* tabWidget, QBoxLayout* buttonLayout)
183 mSearchWidget =
new HelpSearchWidget(mEngine,
this);
184 tabWidget->addTab(mSearchWidget,
"search");
189 void HelpWidget::showEvent(QShowEvent* event)
191 QWidget::showEvent(event);
195 void HelpWidget::hideEvent(QHideEvent* event)
197 QWidget::hideEvent(event);
200 void HelpWidget::prePaintEvent()
205 void HelpWidget::toggleShowNavigationControls()
207 if (mTabWidget->isVisible())
213 QList<int> sizes = mSplitter->sizes();
216 sizes[0] = sizes[1]*1/3;
217 sizes[1] = sizes[1]*2/3;
218 mSplitter->setSizes(sizes);
222 settings()->
setValue(
"org.custusx.help/navigationVisible", mTabWidget->isVisible());
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
void setValue(const QString &key, const QVariant &value)
void showHelpForKeyword(const QString &id)
Settings * settings()
Shortcut for accessing the settings instance.
virtual void setSource(const QUrl &name)
boost::shared_ptr< HelpEngine > HelpEnginePtr