itom 2.2.1
|
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 ¤t, 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 ¶m , 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 §ionname, const QVector<ito::Param> ¶mVector, QString &content); 00100 QString parseParam(const QString &tmpl, const ito::Param ¶m); 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