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