aboutsummaryrefslogtreecommitdiff
path: root/VMProtect/help_browser.h
diff options
context:
space:
mode:
Diffstat (limited to 'VMProtect/help_browser.h')
-rw-r--r--VMProtect/help_browser.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/VMProtect/help_browser.h b/VMProtect/help_browser.h
new file mode 100644
index 0000000..1c9cf39
--- /dev/null
+++ b/VMProtect/help_browser.h
@@ -0,0 +1,125 @@
+#ifndef HELP_BROWSER_H
+#define HELP_BROWSER_H
+
+class TextBrowser;
+class QHelpEngine;
+class QHelpSearchEngine;
+class QPushButton;
+class SearchLineEdit;
+class QHelpContentItem;
+class FindWidget;
+
+class HelpContentModel : public QIdentityProxyModel
+{
+public:
+ HelpContentModel(QHelpEngine *engine, QObject *parent = 0);
+ virtual QVariant data(const QModelIndex &index, int role) const;
+ virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+ QHelpContentItem *contentItemAt(const QModelIndex &index) const;
+ QModelIndex indexOf(const QUrl &link);
+private:
+ QModelIndex searchContentItem(const QModelIndex &parent, const QString &path);
+};
+
+class HelpResultItem
+{
+public:
+ HelpResultItem(const QString &title, const QString &url, const QString &toolTip);
+ ~HelpResultItem();
+ QString title() const { return title_; }
+ QString url() const { return url_; }
+ QString toolTip() const { return toolTip_; }
+ HelpResultItem *child(int index) const { return children_.value(index); };
+ int childCount() const { return children_.size(); }
+ QList<HelpResultItem *> children() const { return children_; };
+ HelpResultItem *parent() const { return parent_; };
+ void clear();
+ void addChild(HelpResultItem *child);
+ void insertChild(int index, HelpResultItem *child);
+ void removeChild(HelpResultItem *child);
+private:
+ HelpResultItem *parent_;
+ QString title_;
+ QString url_;
+ QString toolTip_;
+ QList<HelpResultItem *> children_;
+};
+
+class HelpResultModel : public QAbstractItemModel
+{
+ Q_OBJECT
+public:
+ HelpResultModel(QHelpEngine *engine, QObject *parent = 0);
+ ~HelpResultModel();
+ void search(const QString &text);
+ virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
+ virtual QModelIndex parent(const QModelIndex &index) const;
+ virtual int rowCount(const QModelIndex &parent) const;
+ virtual int columnCount(const QModelIndex &parent) const;
+ virtual QVariant data(const QModelIndex &index, int role) const;
+ virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+ HelpResultItem *itemAt(const QModelIndex &index) const;
+signals:
+ void finished(int hits);
+protected slots:
+ void searchingFinished();
+private:
+ QHelpEngine *engine_;
+ HelpResultItem *root_;
+};
+
+class QHelpBrowserProcess : public QProcess
+{
+public:
+ QHelpBrowserProcess(QObject *parent, const QString &fileName);
+ const QString fileName_;
+ ~QHelpBrowserProcess();
+};
+
+class RemoteControl;
+class HelpBrowser : public QMainWindow
+{
+ Q_OBJECT
+public:
+ HelpBrowser(const QString &fileName);
+ static void showTopic(const QString &keywordId);
+
+private:
+ void navigateToKeyword(const QString &keywordId);
+ void keyPressEvent(QKeyEvent *e);
+ void updatePath();
+
+ static QHelpBrowserProcess *help_browser_process_;
+
+ QString fileName_;
+ QHelpEngine *helpEngine_;
+ TextBrowser *helpBrowser_;
+ QAction *backButton_;
+ QAction *fwdButton_;
+ SearchLineEdit *searchBox_;
+ QStackedWidget *tabWidget_;
+ FindWidget *findWidget_;
+ QTreeView *contentWidget_;
+ QTreeView *resultWidget_;
+ HelpContentModel *contentModel_;
+ HelpResultModel *resultModel_;
+ RemoteControl *rc_;
+ bool contentsCreated_;
+
+protected Q_SLOTS:
+ void syncTree(const QUrl &);
+ void searchBoxChanged();
+ void searchingFinished();
+ void highlightSearchTerms();
+ void findNext();
+ void findPrevious();
+ void find(const QString &ttf, bool forward, bool incremental);
+ void contentWidgetClicked(const QModelIndex &index);
+ void resultWidgetClicked(const QModelIndex &index);
+ void pathClicked(const QString &link);
+ void resultCloseClicked();
+ void contentsCreated();
+ void handleNavigateToKeywordCommand(const QString &arg);
+};
+
+#endif \ No newline at end of file