43#include "helpWidget.hh"
49HelpWidget::HelpWidget(QWidget* parent,
const QString& _homeSite ,
const bool _loadHomeSite )
50 : QMainWindow(parent),
59 homeSite_ = _homeSite;
61 QString filename = QString( OpenFlipper::Options::configDirStr() );
62 filename += OpenFlipper::Options::dirSeparator();
63 filename +=
"Help.qhc";
65 QDir helpDir = QDir(OpenFlipper::Options::helpDirStr());
67 QString iconPath = QString(OpenFlipper::Options::iconDirStr())+QString(OpenFlipper::Options::dirSeparator());
70 backButton_->setIcon(QIcon(iconPath+
"arrow-left.png"));
71 forwardButton_->setIcon(QIcon(iconPath+
"arrow-right.png"));
72 homeButton_->setIcon(QIcon(iconPath+
"go-home.png"));
73 searchButton_->setIcon(QIcon(iconPath+
"edit-find.png"));
75 tabWidget_ =
new QTabWidget(
this);
79 helpEngine_ =
new QHelpEngine(filename,
this);
81 helpEngine_->setupData();
84 QStringList registeredNamespaces =helpEngine_->registeredDocumentations();
86 QStringList documentationFiles;
89 QStringList helpFiles = helpDir.entryList(QStringList(
"*.qch"),QDir::Files);
92 for (QStringList::iterator iter = helpFiles.begin(); iter != helpFiles.end(); ++iter)
93 *iter = helpDir.path()+ OpenFlipper::Options::dirSeparator() + *iter;
95 for (
int i = 0; i < registeredNamespaces.size() ; ++i)
97 QString registredFilename (helpEngine_->documentationFileName(registeredNamespaces[i]));
100 if (helpFiles.indexOf(registredFilename) != -1)
101 documentationFiles.push_back( registredFilename );
103 helpEngine_->unregisterDocumentation(registeredNamespaces[i]);
106 for (
int i = 0 ; i < helpFiles.size() ; ++i ) {
107 const QString currentFilename = helpFiles[i];
110 if (documentationFiles.contains(currentFilename))
114 if ( !helpEngine_->registerDocumentation( currentFilename ) ) {
115 std::cerr <<
"Error when trying to register file " << currentFilename.toStdString() << std::endl;
116 std::cerr << helpFiles[i].toStdString() <<
" :" << helpEngine_->error().toStdString() << std::endl;
121 searchEngine_ =
new QHelpSearchEngine(helpEngine_,
this);
125 homeIndex_ = tabWidget_->addTab(textWindow_, tr(
"Home"));
127 gridLayout_->addWidget(helpEngine_->contentWidget(), 1, 0);
128 gridLayout_->addWidget(tabWidget_, 1, 1);
130 gridLayout_->setColumnStretch(0, 1);
131 gridLayout_->setColumnStretch(1, 3);
134 searchWidget_ =
new QDockWidget(tr(
"Search results"),
this);
135 searchWidget_->setFeatures( QDockWidget::DockWidgetClosable );
137 searchWidget_->resize(this->size().width(), floor(
double(this->size().height() / 3)) );
139 searchWidget_->setWidget(searchEngine_->queryWidget());
142 searchWidget_->hide();
143 addDockWidget(Qt::BottomDockWidgetArea, searchWidget_);
147 connect(helpEngine_->contentWidget(), SIGNAL(linkActivated(
const QUrl&)),
148 this, SLOT(linkActivated(
const QUrl&)));
151 connect(searchButton_, SIGNAL(clicked()),
this, SLOT(showSearchWidget()));
154 connect(searchEngine_->queryWidget(), SIGNAL(search()),
this, SLOT(startSearch()));
157 connect(searchEngine_, SIGNAL(searchingFinished(
int)),
this, SLOT(showResults(
int)));
160 connect(searchEngine_->resultWidget(), SIGNAL(requestShowLink(
const QUrl&)),
161 this, SLOT(showFoundSite(
const QUrl&)));
164 connect(backButton_, SIGNAL(clicked()),
this, SLOT(goBack()));
167 connect(forwardButton_, SIGNAL(clicked()),
this, SLOT(goForward()));
170 connect(homeButton_, SIGNAL(clicked()),
this, SLOT(goHome()));
173 connect(textWindow_, SIGNAL(sourceChanged(
const QUrl&)),
this, SLOT(update(
const QUrl&)));
176 connect(textWindow_, SIGNAL(historyChanged(
const QUrl&)),
this, SLOT(updateButtons()));
182 #ifdef DEBUG_HELP_CONTENTS
184 QStringList tmp = helpEngine_->registeredDocumentations ();
186 for (
int i = 0 ; i < tmp.size(); ++i) {
187 std::cerr <<
"=========================================================================================" << std::endl;
188 std::cerr <<
"Registered namespace: " << tmp[i].toStdString() << std::endl;
189 std::cerr <<
"From file : " << helpEngine_->documentationFileName(tmp[i]).toStdString() << std::endl;
192 QList<QStringList> filterAttribs = helpEngine_->filterAttributeSets (tmp[i]);
201 if ( !filterAttribs.empty() ) {
202 QList<QUrl> list = helpEngine_->files ( tmp[i], filterAttribs[0]);
203 for (
int j = 0 ; j < list.size(); ++j) {
204 std::cerr << list[j].toString().toStdString() << std::endl;
207 std::cerr <<
"Error, empty filter! Unable to get list of included files." << std::endl;
217 textWindow_->open(QUrl(homeSite_));
221void HelpWidget::activateLink(
const QUrl& _url)
227void HelpWidget::linkActivated(
const QUrl& _url) {
229 textWindow_->open(_url);
230 tabWidget_->setCurrentIndex(homeIndex_);
233void HelpWidget::startSearch() {
235 searchEngine_->search(searchEngine_->queryWidget()->searchInput());
238void HelpWidget::setHomeSite(
const QString& _homeSite) {
240 homeSite_ = _homeSite;
243void HelpWidget::showFoundSite(
const QUrl& _url) {
245 textWindow_->open(_url);
246 tabWidget_->setCurrentIndex(homeIndex_);
249void HelpWidget::update(
const QUrl& _url ) {
257 QModelIndex modelIndex = helpEngine_->contentWidget()->indexOf(newUrl);
260 if (modelIndex.isValid())
261 helpEngine_->contentWidget()->setCurrentIndex( modelIndex );
264void HelpWidget::goForward() {
268 tabWidget_->setCurrentIndex(homeIndex_);
273void HelpWidget::goBack() {
277 tabWidget_->setCurrentIndex(homeIndex_);
282void HelpWidget::goHome() {
284 textWindow_->open(homeSite_);
286 tabWidget_->setCurrentIndex(homeIndex_);
291void HelpWidget::updateButtons() {
294 backButton_->setEnabled(
false);
296 backButton_->setEnabled(
true);
300 forwardButton_->setEnabled(
false);
302 forwardButton_->setEnabled(
true);
306void HelpWidget::showSearchWidget() {
308 searchWidget_->show();
311void HelpWidget::showResults(
int ) {
313 searchWidget_->hide();
315 int resultsTabIndex_ = tabWidget_->addTab(searchEngine_->resultWidget(), tr(
"Results") );
316 tabWidget_->setCurrentIndex(resultsTabIndex_);
319void HelpWidget::openFoundSite(QListWidgetItem* ) {
323HelpWidget::~HelpWidget() {
325 delete searchWidget_;
void forward()
Show next page stored in the history.
QUrl resolveUrl(const QUrl &_url)
resolves relative urls to absolute
void backward()
Show last page stored in the history.
bool isForwardAvailable()
Checks if the back button was pressed and we can go forward to the next page.
bool isBackwardAvailable()
Checks if we visited other pages before.