diff options
Diffstat (limited to 'tools/assistant/compat/helpdialog.h')
-rw-r--r-- | tools/assistant/compat/helpdialog.h | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/tools/assistant/compat/helpdialog.h b/tools/assistant/compat/helpdialog.h new file mode 100644 index 0000000..29d77d9 --- /dev/null +++ b/tools/assistant/compat/helpdialog.h @@ -0,0 +1,184 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the Qt Assistant of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef HELPDIALOG_H +#define HELPDIALOG_H + +#include "ui_helpdialog.h" +#include "index.h" +#include "helpwindow.h" +#include "docuparser.h" + +#include <QList> +#include <QPair> +#include <QListWidget> +#include <QTreeWidget> +#include <QMap> +#include <QStringList> +#include <QValidator> +#include <qmenu.h> +#include <QHash> + +QT_BEGIN_NAMESPACE + +class QProgressBar; +class MainWindow; +class QTextBrowser; +class IndexListModel; + +class HelpNavigationListItem : public QListWidgetItem +{ +public: + HelpNavigationListItem(QListWidget *ls, const QString &txt); + + void addLink(const QString &link); + QStringList links() const { return linkList; } +private: + QStringList linkList; + +}; + +class SearchValidator : public QValidator +{ + Q_OBJECT +public: + SearchValidator(QObject *parent) + : QValidator(parent) {} + ~SearchValidator() {} + QValidator::State validate(QString &str, int &) const; +}; + +class HelpDialog : public QWidget +{ + Q_OBJECT +public: + HelpDialog(QWidget *parent, MainWindow *h); + + inline QTabWidget *tabWidget() const + { return ui.tabWidget; } + + QString titleOfLink(const QString &link); + bool eventFilter(QObject *, QEvent *); + bool lastWindowClosed() { return lwClosed; } + + void timerEvent(QTimerEvent *e); + static QString removeAnchorFromLink(const QString &link); + +signals: + void showLink(const QString &s); + void showSearchLink(const QString &s, const QStringList &terms); + +public slots: + void initialize(); + void startSearch(); + void addBookmark(); + void currentTabChanged(int index); + void locateContents(const QString &link); + +private slots: + void on_buttonAdd_clicked(); + void on_buttonRemove_clicked(); + void on_termsEdit_returnPressed(); + void on_helpButton_clicked(); + void on_searchButton_clicked(); + void on_resultBox_itemActivated(QListWidgetItem*); + void updateSearchButton(const QString &txt); + + void showResultPage(QListWidgetItem *); + + void showTopic(QTreeWidgetItem *); + void loadIndexFile(); + void insertContents(); + void setupFullTextIndex(); + void showTopic(); + void searchInIndex(const QString &s); + void toggleContents(); + void toggleIndex(); + void toggleBookmarks(); + void toggleSearch(); + void lastWinClosed(); + void setIndexingProgress(int prog); + void showListItemMenu(const QPoint &pos); + void showIndexItemMenu(const QPoint &pos); + void showTreeItemMenu(const QPoint &pos); + void insertBookmarks(); + void processEvents(); + +private: + typedef QList<ContentItem> ContentList; + void removeOldCacheFiles(bool onlyFulltextSearchIndex = false); + void buildKeywordDB(); + quint32 getFileAges(); + void showIndexTopic(); + void showBookmarkTopic(); + void setupTitleMap(); + void saveBookmarks(); + void showContentsTopic(); + void showInitDoneMessage(); + void buildContentDict(); + QTreeWidgetItem * locateLink(QTreeWidgetItem *item, const QString &link); + +private: + Ui::HelpDialog ui; + + IndexListModel *indexModel; + QMap<QString, QString> titleMap; + bool indexDone, bookmarksInserted, titleMapDone, contentsInserted; + bool lwClosed; + MainWindow *help; + QString documentationPath; + Index *fullTextIndex; + QStringList terms, foundDocs; + bool initDoneMsgShown; + void getAllContents(); + QList<QPair<QString, ContentList> > contentList; + QMenu *itemPopup; + QString cacheFilesPath; + QStringList keywordDocuments; + + QAction *actionOpenCurrentTab; + QAction *actionOpenLinkInNewWindow; + QAction *actionOpenLinkInNewTab; +}; + +QT_END_NAMESPACE + +#endif // HELPDIALOG_H |