~ubuntu-branches/ubuntu/vivid/mygui/vivid

« back to all changes in this revision

Viewing changes to Tools/EditorFramework/DataSelectorManager.cpp

  • Committer: Package Import Robot
  • Author(s): Scott Howard, Bret Curtis, Scott Howard
  • Date: 2014-09-18 17:57:48 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20140918175748-dd8va78mvpw1jbes
Tags: 3.2.1-1
[ Bret Curtis ]
* Updated license for majority of files from LGPL to Expat (MIT)

[ Scott Howard ]
* New upstream release
* Updated patch to add build option for system GLEW libraries
* All patches accepted upstream except shared_libraries.patch
* Bumped SONAME due to dropped symbols, updated *.symbols and package
  names
* Updated license of debian/* to Expat with permission of all authors
* Don't install Doxygen autogenerated md5 and map files (thanks
  lintian)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*!
 
2
        @file
 
3
        @author         Albert Semenov
 
4
        @date           07/2012
 
5
*/
 
6
 
 
7
#include "Precompiled.h"
 
8
#include "DataSelectorManager.h"
 
9
#include "DataTypeManager.h"
 
10
 
 
11
namespace tools
 
12
{
 
13
 
 
14
        DataSelectorManager* DataSelectorManager::mInstance = nullptr;
 
15
 
 
16
        DataSelectorManager::DataSelectorManager()
 
17
        {
 
18
                mInstance = this;
 
19
        }
 
20
 
 
21
        DataSelectorManager::~DataSelectorManager()
 
22
        {
 
23
                mInstance = nullptr;
 
24
        }
 
25
 
 
26
        DataSelectorManager& DataSelectorManager::getInstance()
 
27
        {
 
28
                return *mInstance;
 
29
        }
 
30
 
 
31
        DataSelectorManager* DataSelectorManager::getInstancePtr()
 
32
        {
 
33
                return mInstance;
 
34
        }
 
35
 
 
36
        void DataSelectorManager::initialise()
 
37
        {
 
38
        }
 
39
 
 
40
        void DataSelectorManager::shutdown()
 
41
        {
 
42
                clear();
 
43
        }
 
44
 
 
45
        void DataSelectorManager::clear()
 
46
        {
 
47
                for (MapEvent::iterator event = mEvents.begin(); event != mEvents.end(); event ++)
 
48
                        delete (*event).second;
 
49
                mEvents.clear();
 
50
        }
 
51
 
 
52
        DataSelectorManager::EventType* DataSelectorManager::getEvent(const std::string& _dataType)
 
53
        {
 
54
                MapEvent::iterator event = mEvents.find(_dataType);
 
55
                if (event != mEvents.end())
 
56
                        return (*event).second;
 
57
 
 
58
                EventType* type = new EventType();
 
59
                mEvents[_dataType] = type;
 
60
                return type;
 
61
        }
 
62
 
 
63
        void DataSelectorManager::changeParent(DataPtr _parent)
 
64
        {
 
65
                onChangeData(_parent, _parent->getType(), false);
 
66
        }
 
67
 
 
68
        void DataSelectorManager::changeParentSelection(DataPtr _parent, DataPtr _selectedChild)
 
69
        {
 
70
                _parent->setChildSelected(_selectedChild);
 
71
 
 
72
                onChangeData(_parent, _parent->getType(), true);
 
73
        }
 
74
 
 
75
        void DataSelectorManager::onChangeData(DataPtr _parent, DataTypePtr _type, bool _changeOnlySelection)
 
76
        {
 
77
                EventType* event = getEvent(_type->getName());
 
78
                if (event != nullptr)
 
79
                {
 
80
                        event->operator()(_parent, _changeOnlySelection);
 
81
                }
 
82
 
 
83
                DataPtr childSelected = nullptr;
 
84
                if (_parent != nullptr)
 
85
                        childSelected = _parent->getChildSelected();
 
86
 
 
87
                const DataType::VectorString& childs = _type->getChilds();
 
88
                for (DataType::VectorString::const_iterator childName = childs.begin(); childName != childs.end(); childName ++)
 
89
                {
 
90
                        DataTypePtr childType = DataTypeManager::getInstance().getType(*childName);
 
91
                        if (childType != nullptr)
 
92
                        {
 
93
                                DataPtr child = childSelected;
 
94
                                if (child != nullptr && child->getType() != childType)
 
95
                                        child = nullptr;
 
96
 
 
97
                                if (child != nullptr)
 
98
                                {
 
99
                                        DataPtr subChildSelected = child->getChildSelected();
 
100
                                        if (subChildSelected == nullptr)
 
101
                                        {
 
102
                                                if (child->getChilds().size() != 0)
 
103
                                                {
 
104
                                                        DataPtr childData = child->getChildByIndex(0);
 
105
                                                        child->setChildSelected(childData);
 
106
                                                }
 
107
                                        }
 
108
                                }
 
109
 
 
110
                                onChangeData(child, childType, false);
 
111
                        }
 
112
                }
 
113
        }
 
114
 
 
115
}