VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
objectSettingsManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 201 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 #include <vrvUtil/signalslib.h>
15 
16 #include <vrfGuiCore/vrfGuiCore.h>
19 #include <vrvCore/DtElementEntry.h>
20 #include <vrvCore/DtEntityState.h>
22 #include <vrvUtil/event_signal.h>
23 #include <vrvUtil/DtUnicode.h>
25 
26 #include <vrvCore/DtDe.h>
27 #include <vrfutil/rwUUID.h>
28 
29 #include <boost/function.hpp>
30 
31 namespace makVrv
32 {
33  class DtEventQueueInterface;
34  class DtSharedSettingsManager;
35 }
36 
37 namespace makVrf
38 {
40  {
46 
47  UserStart = 0x01000000
48  };
49 
53  {
54  public:
55  typedef std::map<DtUUID, ObjectSetting> ObjectSettingsMap;
56 
62 
66  static std::string className();
67 
69  virtual ~DtSharedObjectSettings();
70 
72  virtual void removeSettings(const DtUUID&);
73 
74  void setSettings(const DtUUID&, ObjectSetting);
75  ObjectSetting settingsFor(const DtUUID&) const;
76 
78  virtual bool hasSetting(const DtUUID&) const;
79 
80  void setFlagState(const DtUUID&, ObjectSetting, bool onOff);
81 
83  bool flagState(const DtUUID&, ObjectSetting) const;
84 
85  virtual void write(boost::archive::xml_oarchive& ar, int version) const;
86  virtual void read(boost::archive::xml_iarchive& ar, int version);
87 
88  const ObjectSettingsMap& settingsMap() const;
89 
90  virtual void settingsLoaded();
91 
92  protected:
93 
96 
97  protected:
99  };
100 
103  {
104  public:
105  typedef boost::function<bool (const makVrv::DtSelectionManager::IdSet&)> SettingsValidationFunction;
106 
108  {
109  ObjectSettingStruct(ObjectSetting s, makVrv::DtUnicode n, std::set<makVrv::DtElementEntry::ElementType> e)
110  : setting(s)
111  , name(s)
112  , validFor(e)
113  {
114  }
115 
117  : setting((ObjectSetting)0)
118  , validFor()
119  {
120  validFor.insert( makVrv::DtElementEntry::Unknown );
121  }
122 
124  : setting(s.setting)
125  , name(s.name)
126  , validFor(s.validFor)
127  , validation(s.validation)
128  {
129  }
130 
132  {
133  setting = s.setting;
134  name = s.name;
135  validFor = s.validFor;
136  validation = s.validation;
137 
138  return *this;
139  }
140 
144  std::set<makVrv::DtElementEntry::ElementType> validFor;
145  };
146 
147  typedef std::vector<ObjectSettingStruct> ObjectSettings;
148 
149  public:
151  virtual ~DtObjectSettingsManager();
152 
154  static DtObjectSettingsManager& instance(makVrv::DtDe& de);
155  static void registerInstance(makVrv::DtDe&, DtObjectSettingsManager*);
156 
158  virtual void removeSettings(const DtUUID&);
159 
161  virtual void removeAll();
162 
163  virtual void setSettings(const DtUUID&, ObjectSetting);
164  ObjectSetting settingsFor(const DtUUID&) const;
165 
167  ObjectSetting, std::set<makVrv::DtElementEntry::ElementType> validFor, SettingsValidationFunction = boost::bind(&DtObjectSettingsManager::alwaysValid));
168  virtual void removeSetting(ObjectSetting);
169  ObjectSetting settingFor(const makVrv::DtUnicode&);
170  makVrv::DtUnicode settingNameFor(ObjectSetting);
171 
173  bool flagState(const DtUUID&, ObjectSetting) const;
174  virtual void setFlagState(const DtUUID&, ObjectSetting, bool onOff);
175  const ObjectSettings& objectSettings() const;
176 
177  virtual bool hasSetting(const DtUUID&) const;
178  virtual bool hasRadarCoverage(const makVrv::DtSelectionManager::IdSet&);
179 
181  virtual void protect();
182 
184  virtual bool validFor(ObjectSetting, const makVrv::DtSelectionManager::IdSet&) const;
185 
186  protected:
187  static bool alwaysValid();
188 
189  virtual void init();
190 
191  virtual void write(boost::archive::xml_oarchive& ar, int version) const;
192  virtual void read(boost::archive::xml_iarchive& ar, int version);
193 
195  virtual void slot_onObjectAboutToBeRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
196 
198  virtual void slot_onObjectAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* p);
199 
201  virtual void slot_uuidChanged(makVrv::DtUniqueID, const DtUUID& oldUUID, const DtUUID& newUUID);
202 
203  protected:
207 
208  typedef std::map<DtUUID, bool> ProtectedFromRemoval;
210  };
211 
215  {
216  public:
217 
222 
226 
230  static DtSharedObjectSettingsSignaler* findInstance(
232 
235 
240 
241  protected:
243 
244  private:
247  };
248 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)