VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtSettingsChangeManager.h
Go to the documentation of this file.
00001 /****************************************************************************** 
00002 ** Copyright (c) 2009 MAK Technologies, Inc. 
00003 ** All rights reserved. 
00004 ******************************************************************************/ 
00005 /****************************************************************************** 
00006 ** $RCSfile: DtSettingsChangeManager.h,v $ $Revision: 1.16 $ $State: Exp $ 
00007 ******************************************************************************/ 
00008  
00011 
00012 #pragma once
00013 
00014 #include <vrvCore/vrvCore.h> 
00015 #include <vrvCore/DtSettings.h> 
00016 #include <vrvUtil/DtVirtualBaseClass.h> 
00017 #include <vrvUtil/event_signal.h>
00018 #include <vrvUtil/DtLockedBufferedQueue.h>
00019 
00020 #include <boost/thread/mutex.hpp>
00021 #include <boost/signals.hpp>
00022 
00023 #include <boost/signal.hpp>
00024 #include <boost/function.hpp>
00025 
00026 namespace makVrv 
00027 { 
00028    class DtDe;
00029    class DtSharedSettingsManager;
00030 
00034    class DT_DLL_VRVCORE DtSettingsChangeObject
00035    {
00036    public:
00037       enum SettingsChangeType
00038       {
00039          SchemaRenamed = 1,
00040          SchemaParameterRenamed,
00041          ModelDefinitionRenamed,
00042          ElementDefinitionRenamed,
00043          SettingsChangedUserDefinedStart = 100000
00044       };
00045 
00046       enum UseType
00047       {
00048          ElementDefinition = 0,
00049          ModelDefinition,
00050          SchemaDefinition,
00051          UserDefined = 100000
00052       };
00053 
00054    public:
00055       DtSettingsChangeObject(SettingsChangeType type);
00056 
00057       virtual ~DtSettingsChangeObject();
00058 
00059       SettingsChangeType type() const
00060       {
00061          return myType;
00062       }
00063 
00066       boost::signal<void (DtSettingsChangeObject*)> signal_changeInvoked;
00067 
00068    protected:
00069       SettingsChangeType   myType;
00070    };
00071 
00083    class DT_DLL_VRVCORE DtSettingsChangeManager : public DtVirtualBaseClass
00084    { 
00085    public:
00086       typedef boost::function<bool (const std::string&, DtSettingsChangeObject::UseType)> DtSettingInUseFunction;
00087       typedef std::vector<DtSettingInUseFunction> DtSettingsInUse;
00088       typedef std::vector<DtSettingsChangeObject*> DtSettingsChangedList;
00089 
00090    public:
00092       static DtSettingsChangeManager& instance(DtDe& de);
00093 
00094       virtual ~DtSettingsChangeManager();
00095 
00098       virtual void addSettingsChangeObject(DtSettingsChangeObject*);
00099 
00101       virtual void removeSettingsChangeObject(DtSettingsChangeObject*);
00102 
00104       virtual DtSettingsChangedList changeObjectsFor(DtSettingsChangeObject::SettingsChangeType) const;
00105 
00106       static std::string className();
00107 
00108    public:
00110       virtual void addSettingInUseCheck(const DtSettingInUseFunction& f);
00111 
00113       virtual bool settingInUse(const std::string& setting, DtSettingsChangeObject::UseType) const;
00114 
00115    protected:
00117       virtual void settingsObjectInvoked(DtSettingsChangeObject*);
00118 
00120       DtSettingsChangeManager(DtDe&);
00121 
00122    protected:
00123       typedef std::map<DtSettingsChangeObject::SettingsChangeType, DtSettingsChangedList>   DtSettingsChangedMap;
00124 
00125       DtSettingsChangedMap    mySettings;
00126       DtSettingsInUse         mySettingsInUseChecks;
00127       DtDe&                   myDe;
00128       mutable boost::mutex    myMonitor;
00129    };
00130 
00134    class DT_DLL_VRVCORE DtSharedSettingsChangeManagerSignaler : 
00135       public DtVirtualBaseClass
00136    {
00137    public:
00138 
00142       static DtSharedSettingsChangeManagerSignaler& instance(const DtSharedSettingsManager&);
00143 
00146       static DtSharedSettingsChangeManagerSignaler& instance(DtEventQueueInterface&);
00147 
00151       static DtSharedSettingsChangeManagerSignaler* findInstance(
00152          DtEventQueueInterface*);
00153 
00155       virtual ~DtSharedSettingsChangeManagerSignaler();
00156 
00157       event_signal< void (DtSettingsChangeObject*)  > signal_changeInvoked;
00158 
00159    protected:
00160       DtSharedSettingsChangeManagerSignaler(DtEventQueueInterface& eqi);
00161 
00162    private:
00163       DtSharedSettingsChangeManagerSignaler(const DtSharedSettingsChangeManagerSignaler&);
00164       DtSharedSettingsChangeManagerSignaler& operator=(const DtSharedSettingsChangeManagerSignaler&);
00165    };
00166 } 

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)