itom 1.1.0
D:/git-itom/sources/itom/Qitom/ui/helpTreeDockWidget.h
00001 #ifndef HELPTREEDOCKWIDGET_H
00002 #define HELPTREEDOCKWIDGET_H
00003 
00004 #include <QtSql>
00005 #include <qwidget.h>
00006 #include <qstandarditemmodel.h>
00007 #include "../../common/sharedStructures.h"
00008 #include "ui_helpTreeDockWidget.h"
00009 #include <qtimer.h>
00010 #include <qfuturewatcher.h>
00011 #include <qmovie.h>
00012 #include "../widgets/abstractDockWidget.h"
00013 
00014 class LeafFilterProxyModel; //forward declaration
00015 
00016 class HelpTreeDockWidget : public QWidget
00017 {
00018     Q_OBJECT
00019 
00020 public:
00021     HelpTreeDockWidget(QWidget *parent, ito::AbstractDockWidget *dock = 0, Qt::WFlags flags = 0);
00022     ~HelpTreeDockWidget();
00023 
00024     enum itemType {typeSqlItem = 1, typeFilter = 2, typeWidget = 3, typeFPlugin = 4, typeWPlugin = 5};
00025 
00026 public slots:
00027     void navigateBackwards();
00028     void navigateForwards();
00029     void expandTree();
00030     void collapseTree();
00031     void reloadDB();
00032     void liveFilter(const QString &filterText);
00033     void showTreeview();
00034     void unshowTreeview();
00035     void propertiesChanged();
00036     ito::RetVal showFilterWidgetPluginHelp(const QString &filtername, itemType type);
00037 
00038 private slots:
00039     void on_splitter_splitterMoved ( int pos, int index );
00040     void on_textBrowser_anchorClicked(const QUrl & link);   
00041 
00042     void dbLoaderFinished(int index);
00043 
00044     void on_treeView_expanded(const QModelIndex &index);
00045     void on_treeView_collapsed(const QModelIndex &index);
00046 
00047     void selectedItemChanged(const QModelIndex &current, const QModelIndex &previous);
00048 
00049 private:
00050 
00051     struct SqlItem
00052     {
00053         int type;
00054         QString prefix;
00055         QString name;
00056         QString path;
00057     };
00058 
00059     struct DisplayBool
00060     {
00061         bool Filters;
00062         bool Modules;
00063     };
00064 
00065     
00066     static void createFilterNode(QStandardItemModel* model, const QMap<int,QIcon> *iconGallery);
00067     static void createItemRek(QStandardItemModel* model, QStandardItem& parent, const QString parentPath, QList<SqlItem> &items, const QMap<int,QIcon> *iconGallery);
00068     static ito::RetVal loadDBinThread(const QString &path, const QStringList &includedDBs, QStandardItemModel *mainModel, const QMap<int,QIcon> *iconGallery, const DisplayBool &show);
00069     static ito::RetVal readSQL(const QString &filter, const QString &file, QList<SqlItem> &items);
00070 
00071     void CreateItem(QStandardItemModel& model, QStringList &items);
00072     void saveIni();
00073     void loadIni();
00074     ito::RetVal displayHelp(const QString &path, const int newpage);
00075     QStringList separateLink(const QUrl &link);
00076     ito::RetVal highlightContent(const QString &prefix , const QString &name , const QString &param , const QString &shortDesc, const QString &helpText, const QString &error, QTextDocument *document, bool htmlNotPlainText = true);
00077     QModelIndex findIndexByName(const QString &modelName);
00078 
00079     QString parseFilterContent(const QString &input);
00080     ito::RetVal parseParamVector(const QString &sectionname, const QVector<ito::Param> &paramVector, QString &content);
00081     QString parseParam(const QString &tmpl, const ito::Param &param);
00082 
00083     QFutureWatcher<ito::RetVal> dbLoaderWatcher;
00084 
00085     // Variables
00086     Ui::HelpTreeDockWidget ui;
00087 
00088     QStandardItemModel        *m_pMainModel;
00089     LeafFilterProxyModel      *m_pMainFilterModel;
00090     ito::AbstractDockWidget   *m_pParent;
00091     QStringList                m_history;
00092     QStringList                m_includedDBs;
00093     QString                    m_dbPath;
00094 
00095     QMovie                    *m_previewMovie;
00096 
00097     QMap<int, QIcon> m_iconGallery;
00098     DisplayBool m_showSelection;
00099     int m_historyIndex;
00100     int m_autoCollTime;
00101     double m_percWidthVi;
00102     double m_percWidthUn;
00103     bool m_treeVisible;
00104     bool m_plaintext;
00105     bool m_openLinks;
00106     bool m_autoCollTree;
00107     bool m_forced;
00108 protected:
00109     bool eventFilter(QObject *obj, QEvent *event);
00110 };
00111 
00112 #endif // HELPTREEDOCKWIDGET_H
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends