![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: toolbarFactoryManager.h,v $ $Revision: 1.6 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 /* This class will allow a developer to add toolbars that can be created 00013 * based on features found in the supplied DtFeatureActionManager 00014 */ 00015 00016 #ifndef DTTOOLBARFACTOYMANAGER_H_ 00017 #define DTTOOLBARFACTOYMANAGER_H_ 00018 00019 #include "commonWgt/commonWgtDefines.h" 00020 #include "archiver/archivableObject.h" 00021 #include <QtCore/QString> 00022 #include <QtCore/QHash> 00023 #include <QtGui/QIcon> 00024 #include <QtCore/QVector> 00025 00026 class QAction; 00027 class QToolBar; 00028 class QWidget; 00029 class DtFeatureActionManager; 00030 class QTextStream; 00031 class QContextMenuEvent; 00032 00033 static const char* DtKeepTooltip = "___DtKeepTooltip___"; 00034 static const char* DtToolbarSeparator = "ToolbarSeparator"; 00035 00036 class DT_DLL_commonWgt DtToolbarItem : public DtArchivableObject 00037 { 00038 public: 00039 DtToolbarItem(); 00040 DtToolbarItem(const DtToolbarItem&); 00041 00042 DtToolbarItem& operator=(const DtToolbarItem&); 00043 bool operator==(const DtToolbarItem&) const; 00044 bool operator!=(const DtToolbarItem& rhs) const { return !(*this == rhs); }; 00045 00046 QString myFeatureName; 00047 QString myToolTip; 00048 QVector<QString> myChildren; 00049 }; 00050 00051 class DT_DLL_commonWgt DtFeatureToolbar : public DtArchivableObject 00052 { 00053 Q_OBJECT 00054 00055 public: 00056 DtFeatureToolbar(); 00057 DtFeatureToolbar(const DtFeatureToolbar&); 00058 00059 DtFeatureToolbar& operator=(const DtFeatureToolbar&); 00060 00061 bool operator==(const DtFeatureToolbar&) const; 00062 bool operator!=(const DtFeatureToolbar& rhs) const { return !(*this == rhs); }; 00063 00064 static DtArchivableObject* create(); 00065 00066 DECLARE_ARCHIVABLE_CREATOR() 00067 00068 protected slots: 00069 virtual void toolbarDestroyed(); 00070 00071 public: 00072 QString myToolbarName; 00073 QString myToolbarTitle; 00074 QString myToolTip; 00075 QVector<DtToolbarItem> myToolbarItems; 00076 bool myIsEditable; 00077 QToolBar* myCreatedToolbar; 00078 }; 00079 00081 00082 class DT_DLL_commonWgt DtToolbarFactoryManager : public DtArchivableObject 00083 { 00084 Q_OBJECT 00085 00086 public: 00087 DtToolbarFactoryManager(const QString& name = "toolbarFactoryManager"); 00088 DtToolbarFactoryManager(const DtToolbarFactoryManager&); 00089 00090 virtual ~DtToolbarFactoryManager(); 00091 00092 virtual bool init(DtFeatureActionManager*); 00093 00094 static DtToolbarFactoryManager* create(); 00095 00097 void setUserToolbarSystemEnabled(bool); 00098 bool userToolbarSystemEnabled() const; 00099 00100 DtToolbarFactoryManager& operator=(const DtToolbarFactoryManager&); 00101 00104 virtual void write(QTextStream&); 00105 virtual void read(QTextStream&); 00106 00107 virtual void clear(); 00108 00109 public: 00111 00113 virtual void addToolbar(const QString& toolbar, const QString& windowTitle, const QString& toolTip = DtKeepTooltip, 00114 bool editable = false); 00115 virtual void addToolbar(const DtFeatureToolbar&); 00116 00119 virtual void addToolbarButton(const QString& toolbar, const QString& feature); 00120 00122 virtual void addToolbarButtons(const QString& toolbar, const QVector<QString>& features); 00123 00125 virtual void addToolbarMenu(const QString& toolbar, const QString& feature, const QVector<QString>& features, 00126 const QString& toolTip = DtKeepTooltip); 00127 virtual void addToolbarMenuItem(const QString& toolbar, const QString& feature, const QString& itemToAdd, 00128 const QString& before = QString::null); 00129 virtual void removeToolbarMenuItem(const QString& toolbar, const QString& feature, const QString& item); 00130 00132 virtual void setToolbarIsEditable(const QString& toolbar, bool); 00133 00135 virtual void removeToolbar(const QString& toolbar); 00136 00139 virtual void removeToolbarButton(const QString& toolbar, const QString& feature); 00140 virtual void removeToolbarButton(const QString& toolbar, int iIndex); 00141 virtual void removeToolbarButtons(const QString& toolbar, const QVector<QString>& features); 00142 00144 virtual void removeAllToolbarButtons(const QString& toolbar); 00145 00147 virtual void addFeatureToToolbar(const DtToolbarItem& feature, QToolBar* tool, QWidget* parent); 00148 00150 virtual DtFeatureToolbar toolbarFor(const QString& toolbar) const; 00151 00155 virtual QToolBar* createToolBar(const QString& toolbar, QWidget* parent = NULL); 00156 00158 virtual QVector<QToolBar*> createUserCreatedToolbars(QWidget* parent); 00159 00161 virtual QString keyForToolBar(QToolBar*) const; 00162 00164 virtual void setChecked(const QString& feature, bool checked); 00165 00167 virtual bool toolbarExists(const QString& toolbar) const; 00168 00170 virtual bool hasToolbarNamed(const QString& name) const; 00171 00173 virtual QString keyForToolBar(const QString& name) const; 00174 00176 virtual QString uniqueToolbarId() const; 00177 00181 virtual void merge(const DtToolbarFactoryManager&, bool removeMissingToolbars = true); 00182 00183 const QHash<QString, DtFeatureToolbar>& featureToolbars() const; 00184 00186 virtual void merge(const QString& toolbar, const DtFeatureToolbar&); 00187 00189 virtual DtToolbarFactoryManager* clone(); 00190 00191 signals: 00192 void contextMenuEvent(QWidget*, QContextMenuEvent*); 00193 00194 protected: 00196 virtual int indexOfFeature(const QString& toolbar, const QString& feature) const; 00197 00199 virtual bool eventFilter(QObject*, QEvent*); 00200 00201 protected: 00202 QHash<QString, DtFeatureToolbar> myFeatureToolbars; 00203 DtFeatureActionManager* myFeatureActionManager; 00204 bool myUserToolbarSystemEnabled; 00205 QVector<QString> myToolbarsRemoved; 00206 }; 00207 00208 inline const QHash<QString, DtFeatureToolbar>& DtToolbarFactoryManager::featureToolbars() const 00209 { 00210 return myFeatureToolbars; 00211 } 00212 00213 inline void DtToolbarFactoryManager::setUserToolbarSystemEnabled(bool b) 00214 { 00215 myUserToolbarSystemEnabled = b; 00216 } 00217 00218 inline bool DtToolbarFactoryManager::userToolbarSystemEnabled() const 00219 { 00220 return myUserToolbarSystemEnabled; 00221 } 00222 00223 #endif 00224