itom 1.2.0
D:/git-itom/sources/itom/Qitom/ui/helpTreeDockWidget.h
00001 #ifndef HELPTREEDOCKWIDGET_H
00002 #define HELPTREEDOCKWIDGET_H
00003 
00004 #include <QtSql/qsql.h>
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 namespace ito
00015 {
00016 
00017 class LeafFilterProxyModel; //forward declaration
00018 
00019 class HelpTreeDockWidget : public QWidget
00020 {
00021     Q_OBJECT
00022 
00023 public:
00024     HelpTreeDockWidget(QWidget *parent, ito::AbstractDockWidget *dock = 0, Qt::WindowFlags flags = 0);
00025     ~HelpTreeDockWidget();
00026 
00027     enum itemType {typeSqlItem = 1, typeFilter = 2, typeWidget = 3, typeFPlugin = 4, typeWPlugin = 5, typeCategory = 6, typeDataIO = 7, typeActuator = 8};
00028 
00029 public slots:
00030     void navigateBackwards();
00031     void navigateForwards();
00032     void expandTree();
00033     void collapseTree();
00034     void reloadDB();
00035     void liveFilter(const QString &filterText);
00036     void showTreeview();
00037     void unshowTreeview();
00038     void propertiesChanged();
00039     void showPluginInfo(QString name, int type, const QModelIndex modelIndex, bool fromLink);
00040     ito::RetVal showFilterWidgetPluginHelp(const QString &filtername, itemType type);
00041 
00042 private slots:
00043     void on_splitter_splitterMoved ( int pos, int index );
00044     void on_textBrowser_anchorClicked(const QUrl & link);   
00045 
00046     void dbLoaderFinished(int index);
00047 
00048     void on_treeView_expanded(const QModelIndex &index);
00049     void on_treeView_collapsed(const QModelIndex &index);
00050 
00051     void selectedItemChanged(const QModelIndex &current, const QModelIndex &previous);
00052 
00053 private:
00054 
00055     struct SqlItem
00056     {
00057         int type;
00058         QString prefix;
00059         QString name;
00060         QString path;
00061     };
00062 
00063     struct DisplayBool
00064     {
00065         bool Filters;
00066         bool Widgets;
00067         bool Modules;
00068         bool DataIO;
00069     };
00070 
00071     QString minText(int minimum) const;
00072     QString minText(double minimum) const;
00073     QString minText(char minimum) const;
00074     QString maxText(int minimum) const;
00075     QString maxText(double minimum) const;
00076     QString maxText(char minimum) const;
00077     
00078     static void createFilterWidgetNode(int fOrW, QStandardItemModel* model, const QMap<int,QIcon> *iconGallery);
00079     static void createItemRek(QStandardItemModel* model, QStandardItem& parent, const QString parentPath, QList<SqlItem> &items, const QMap<int,QIcon> *iconGallery);
00080     static ito::RetVal loadDBinThread(const QString &path, const QStringList &includedDBs, QStandardItemModel *mainModel, const QMap<int,QIcon> *iconGallery, const DisplayBool &show);
00081     static ito::RetVal readSQL(const QString &filter, const QString &file, QList<SqlItem> &items);
00082 
00083     void CreateItem(QStandardItemModel& model, QStringList &items);
00084     void saveIni();
00085     void loadIni();
00086     ito::RetVal displayHelp(const QString &path);
00087     QStringList separateLink(const QUrl &link);
00088     ito::RetVal highlightContent(const QString &prefix , const QString &name , const QString &param , const QString &shortDesc, const QString &helpText, const QString &error, QTextDocument *document);
00089     QModelIndex findIndexByPath(const int type, QStringList path, QStandardItem* current);
00090 
00091     QString parseFilterWidgetContent(const QString &input);
00092     ito::RetVal parseParamVector(const QString &sectionname, const QVector<ito::Param> &paramVector, QString &content);
00093     QString parseParam(const QString &tmpl, const ito::Param &param);
00094 
00095     QFutureWatcher<ito::RetVal> dbLoaderWatcher;
00096 
00097     // Const
00098     static const int m_urPath = Qt::UserRole + 1;
00099     static const int m_urType = Qt::UserRole + 2;
00100 
00101     // Variables
00102     Ui::HelpTreeDockWidget ui;
00103 
00104     QStandardItemModel        *m_pMainModel;
00105     LeafFilterProxyModel      *m_pMainFilterModel;
00106     ito::AbstractDockWidget   *m_pParent;
00107     QList<QModelIndex>         m_history;
00108     QStringList                m_includedDBs;
00109     QString                    m_dbPath;
00110     QMovie                    *m_previewMovie;
00111     QMap<int, QIcon> m_iconGallery;
00112     DisplayBool m_showSelection;
00113     int m_historyIndex;
00114     int m_autoCollTime;
00115     double m_percWidthVi;
00116     double m_percWidthUn;
00117     bool m_treeVisible;
00118     bool m_plaintext;
00119     bool m_openLinks;
00120     bool m_autoCollTree;
00121     bool m_forced;
00122     bool m_internalCall;
00123 protected:
00124     bool eventFilter(QObject *obj, QEvent *event);
00125 };
00126 
00127 } //end namespace ito
00128 
00129 #endif // HELPTREEDOCKWIDGET_H
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends