vmprotect-3.5.1/VMProtect/help_browser.h

125 lines
3.6 KiB
C++

#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