![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: featureActionManager.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 /* This class will allow a developer to add shortcuts or icons tied to a particular 00013 ** feature type that can be looked up when creating a menu item. This class will 00014 ** also be used in determing which items can/cannot be used when creating a user 00015 ** definable toolbar 00016 */ 00017 00018 #ifndef DTFEATUREACTIONMANAGER_H_ 00019 #define DTFEATUREACTIONMANAGER_H_ 00020 00021 #include "commonWgt/commonWgtDefines.h" 00022 #include "archiver/archivableObject.h" 00023 #include <QtCore/QString> 00024 #include <QtCore/QHash> 00025 #include <QtGui/QIcon> 00026 #include <QtCore/QVector> 00027 00028 #define DtKeepIcon "DtKeepIcon" 00029 #define DtAssignIconByFeatureName "DtAssignIconByFeatureName" 00030 00031 class QAction; 00032 class DtToolbarCallbackStructure; 00033 class QToolBar; 00034 00035 typedef QWidget* (*DtToolbarWidgetCreatorFcn)(QWidget* parent, QToolBar* bar, const DtToolbarCallbackStructure&); 00036 00037 class DT_DLL_commonWgt DtToolbarCallbackStructure 00038 { 00039 public: 00040 DtToolbarCallbackStructure(); 00041 DtToolbarCallbackStructure(const DtToolbarCallbackStructure&); 00042 DtToolbarCallbackStructure& operator=(const DtToolbarCallbackStructure&); 00043 00044 DtToolbarWidgetCreatorFcn myCreator; 00045 QVector<void*> myUserParameters; 00046 }; 00047 00048 00049 class DT_DLL_commonWgt DtFeatureAction 00050 { 00051 public: 00052 DtFeatureAction(); 00053 virtual ~DtFeatureAction(); 00054 DtFeatureAction(const DtFeatureAction&); 00055 DtFeatureAction& operator=(const DtFeatureAction&); 00056 00057 void clearQAction(); 00058 00059 QString myFeatureName; 00060 QString myShortcut; 00061 QString myNormalIcon; 00062 QString myDisabledIcon; 00063 QString myNormalOnIcon; 00064 QString myToolTip; 00065 QString myDisplayName; 00066 bool myIsOverride; 00067 bool myCanBePlacedOnToolbar; 00068 QAction *myAction; 00069 int* myActionRef; 00070 DtToolbarCallbackStructure myCreator; 00071 }; 00072 00073 class DT_DLL_commonWgt DtFeatureActionManager : public DtArchivableObject 00074 { 00075 Q_OBJECT 00076 00077 public: 00078 DtFeatureActionManager(const QString& name = "featureActionManager"); 00079 DtFeatureActionManager(const DtFeatureActionManager&); 00080 virtual ~DtFeatureActionManager(); 00081 00082 virtual bool init(); 00083 virtual void addFeatureAction(const DtFeatureAction&, bool replaceShortcutInAction = true); 00084 00085 virtual DtFeatureActionManager& operator=(const DtFeatureActionManager&); 00086 00088 virtual void replaceShortcut(const QString& feature, const QString& shortcut, bool replaceInAction = true); 00089 00090 virtual void removeFeatureAction(const QString& featureName); 00091 virtual void addFeatureAction(const QString& feature, 00092 const QString& shortcut = QString::null, const QString& normalIcon = DtAssignIconByFeatureName, 00093 const QString& disabledIcon = DtKeepIcon, const QString& normalOnIcon = DtKeepIcon); 00094 00095 virtual void addFeatureAction(const QString& feature, QObject* slotObj, const char* slot, const QString& displayName, 00096 bool isToggle = false, const QString& toolTip = QString::null, const QString& normalIcon = DtAssignIconByFeatureName, 00097 const QString& disabledIcon = DtKeepIcon, const QString& normalOnIcon = DtKeepIcon); 00098 00099 virtual void addFeatureAction(const QString& feature, const QString& displayName, const DtToolbarCallbackStructure& str); 00100 00102 virtual bool shortcutInUse(const QString&) const; 00103 00105 virtual bool hasShortcutOverride(const QString&) const; 00106 00108 virtual bool hasShortcut(const QString&) const; 00109 00111 virtual QString shortcutFor(const QString&) const; 00112 00114 virtual QString iconFor(const QString& feature, QIcon::Mode mode = QIcon::Normal, QIcon::State = QIcon::Off, 00115 bool useDefault = false) const; 00116 00118 virtual void setCanBePlacedOnToolbar(const QString& feature, bool); 00119 virtual bool canBePlacedOnToolbar(const QString& feature) const; 00120 00122 virtual QString featureUsingShortcut(const QString& shortcut) const; 00123 00124 static DtFeatureActionManager* create(); 00125 00128 virtual bool shortcutIsUsed(const QString& shortcut); 00129 00131 virtual void registerAction(const QString& featureName, QAction* act); 00132 00134 virtual DtFeatureAction featureFor(const QString& feature) const; 00135 00136 const QHash<QString, DtFeatureAction>& featureActions() const; 00137 00139 virtual void removeFeatureAction(QAction*); 00140 00142 virtual void clearQActions(); 00143 00145 virtual DtFeatureActionManager* clone(); 00146 00148 virtual void merge(const DtFeatureActionManager&); 00149 00150 signals: 00152 void replacedShortcut(const QString&, const QString&, const QString&); 00153 00154 protected: 00155 00158 virtual void write(QTextStream&); 00159 virtual void read(QTextStream&); 00160 00161 virtual QString defaultIcon(const QString& featureName, const QString& iconName) const; 00162 00163 protected: 00164 QHash<QString, DtFeatureAction> myFeatureActions; 00165 QHash<QString, QString> myShortcutToFeature; 00166 }; 00167 00168 inline const QHash<QString, DtFeatureAction>& DtFeatureActionManager::featureActions() const 00169 { 00170 return myFeatureActions; 00171 } 00172 00173 #endif 00174