35 #include "boost/bind.hpp"
36 #include "boost/function.hpp"
37 #include <QHelpEngine>
39 #include <QHelpContentWidget>
40 #include <QHelpIndexWidget>
51 #include <QDesktopServices>
58 mVerticalLayout(NULL),
64 void HelpWidget::setup()
70 mVerticalLayout =
new QVBoxLayout(
this);
71 mVerticalLayout->setMargin(0);
72 mVerticalLayout->setSpacing(0);
73 this->setLayout(mVerticalLayout);
74 mTabWidget =
new QTabWidget(
this);
75 mTabWidget->setElideMode(Qt::ElideRight);
77 QSplitter *splitter =
new QSplitter(Qt::Horizontal);
86 QHBoxLayout* buttonLayout =
new QHBoxLayout;
88 mVerticalLayout->addLayout(buttonLayout);
90 splitter->insertWidget(0, mTabWidget);
91 splitter->insertWidget(1, browser);
92 splitter->setStretchFactor(1, 1);
93 mVerticalLayout->addWidget(splitter);
95 this->addContentWidget(mTabWidget, buttonLayout);
96 this->addSearchWidget(mTabWidget, buttonLayout);
97 this->addIndexWidget(mTabWidget, buttonLayout);
99 this->addToggleTabWidgetButton(buttonLayout);
100 this->addWebNavigationButtons(buttonLayout);
101 this->addWebButton(buttonLayout);
102 buttonLayout->addStretch();
106 bool navVis =
settings()->
value(
"org.custusx.help/navigationVisible").toBool();
107 mTabWidget->setVisible(navVis);
116 return QSize(250,30);
120 void HelpWidget::addContentWidget(QTabWidget* tabWidget, QBoxLayout* buttonLayout)
122 QHelpContentWidget* contentWidget = mEngine->engine()->contentWidget();
123 tabWidget->addTab(contentWidget,
"contents");
125 boost::function<void()> f = boost::bind(&QHelpContentWidget::expandToDepth, contentWidget, 2);
126 connect(mEngine->engine()->contentModel(), &QHelpContentModel::contentsCreated, f);
127 contentWidget->expandToDepth(2);
129 connect(mEngine->engine()->contentWidget(), &QHelpContentWidget::linkActivated,
133 void HelpWidget::addWebNavigationButtons(QBoxLayout* buttonLayout)
136 QIcon(
":/icons/open_icon_library/arrow-left-3.png"),
137 "Back",
"Back to previous page",
142 QIcon(
":/icons/open_icon_library/arrow-right-3.png"),
143 "Forward",
"Forward to next page",
147 connect(mBrowser, SIGNAL(backwardAvailable(
bool)), back, SLOT(setEnabled(
bool)));
148 connect(mBrowser, SIGNAL(forwardAvailable(
bool)), forward, SLOT(setEnabled(
bool)));
151 void HelpWidget::addWebButton(QBoxLayout* buttonLayout)
153 this->createAction2(
this,
154 QIcon(
":/icons/open_icon_library/applications-internet.png"),
155 "Web",
"Open Web Documentation",
156 &HelpWidget::onGotoDocumentation,
160 void HelpWidget::onGotoDocumentation()
163 QDesktopServices::openUrl(QUrl(url, QUrl::TolerantMode));
166 void HelpWidget::backSlot()
168 mBrowser->backward();
171 void HelpWidget::forwardSlot()
176 void HelpWidget::addToggleTabWidgetButton(QBoxLayout* buttonLayout)
179 QIcon(
":/icons/open_icon_library/view-list-tree.png"),
180 "Toggle show navigation controls",
"",
181 SLOT(toggleShowNavigationControls()),
183 action->setCheckable(
true);
185 button->setDefaultAction(action);
186 buttonLayout->addWidget(button);
187 mShowNavigationControlsAction = action;
190 void HelpWidget::addIndexWidget(QTabWidget* tabWidget, QBoxLayout* buttonLayout)
192 mIndexWidget =
new HelpIndexWidget(mEngine,
this);
193 tabWidget->addTab(mIndexWidget,
"index");
199 void HelpWidget::addSearchWidget(QTabWidget* tabWidget, QBoxLayout* buttonLayout)
201 mSearchWidget =
new HelpSearchWidget(mEngine,
this);
202 tabWidget->addTab(mSearchWidget,
"search");
207 void HelpWidget::showEvent(QShowEvent* event)
209 QWidget::showEvent(event);
213 void HelpWidget::hideEvent(QHideEvent* event)
215 QWidget::hideEvent(event);
218 void HelpWidget::prePaintEvent()
223 void HelpWidget::toggleShowNavigationControls()
225 if (mTabWidget->isVisible())
231 QList<int> sizes = mSplitter->sizes();
234 sizes[0] = sizes[1]*1/3;
235 sizes[1] = sizes[1]*2/3;
236 mSplitter->setSizes(sizes);
240 settings()->
setValue(
"org.custusx.help/navigationVisible", mTabWidget->isVisible());
void listenToEngineKeywordActivated()
static QString getWebsiteUserDocumentationURL()
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