VR-Forces 4.0.4 Class Documentation
include/commonWgt/featureActionManager.h
Go to the documentation of this file.
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 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)