itom 1.3.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     static void createFilterWidgetNode(int fOrW, QStandardItemModel* model, const QMap<int,QIcon> *iconGallery);
00072     static void createItemRek(QStandardItemModel* model, QStandardItem& parent, const QString parentPath, QList<SqlItem> &items, const QMap<int,QIcon> *iconGallery);
00073     static ito::RetVal loadDBinThread(const QString &path, const QStringList &includedDBs, QStandardItemModel *mainModel, const QMap<int,QIcon> *iconGallery, const DisplayBool &show);
00074     static ito::RetVal readSQL(const QString &filter, const QString &file, QList<SqlItem> &items);
00075 
00076     void CreateItem(QStandardItemModel& model, QStringList &items);
00077     void saveIni();
00078     void loadIni();
00079     ito::RetVal displayHelp(const QString &path);
00080     QStringList separateLink(const QUrl &link);
00081     ito::RetVal highlightContent(const QString &prefix , const QString &name , const QString &param , const QString &shortDesc, const QString &helpText, const QString &error, QTextDocument *document);
00082     QModelIndex findIndexByPath(const int type, QStringList path, QStandardItem* current);
00083 
00084     QString parseFilterWidgetContent(const QString &input);
00085     ito::RetVal parseParamVector(const QString &sectionname, const QVector<ito::Param> &paramVector, QString &content);
00086     QString parseParam(const QString &tmpl, const ito::Param &param);
00087 
00088     QFutureWatcher<ito::RetVal> dbLoaderWatcher;
00089 
00090     // Const
00091     static const int m_urPath = Qt::UserRole + 1;
00092     static const int m_urType = Qt::UserRole + 2;
00093 
00094     QString minText(int minimum) const;
00095     QString minText(double minimum) const;
00096     QString minText(char minimum) const;
00097     QString maxText(int minimum) const;
00098     QString maxText(double minimum) const;
00099     QString maxText(char minimum) const;
00100     
00101     // Variables
00102     Ui::HelpTreeDockWidget   ui;                
00103     QStandardItemModel      *m_pMainModel;          
00104     LeafFilterProxyModel    *m_pMainFilterModel;    
00105     ito::AbstractDockWidget *m_pParent;             
00106     QList<QModelIndex>       m_history;             
00107     QStringList              m_includedDBs; 
00108     QString                  m_dbPath;              
00109     QMovie                  *m_previewMovie;        
00110     QMap<int, QIcon>         m_iconGallery;
00111     DisplayBool              m_showSelection;
00112     int                      m_historyIndex;        
00113     int                      m_autoCollTime;        
00114     double                   m_percWidthVi;         
00115     double                   m_percWidthUn;         
00116     bool                     m_treeVisible;
00117     bool                     m_plaintext;           
00118     bool                     m_openLinks;           
00119     bool                     m_autoCollTree;
00120     bool                     m_forced;
00121     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