Remove a dead virtual method from proxy object
[platform/core/uifw/dali-core.git] / dali / internal / event / object / custom-object-internal.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include <dali/internal/event/object/custom-object-internal.h>
20
21 // INTERNAL INCLUDES
22 #include <dali/internal/event/common/stage-impl.h>
23 #include <dali/internal/update/common/animatable-property.h>
24 #include <dali/internal/update/common/property-owner.h>
25 #include <dali/internal/update/common/property-owner-messages.h>
26 #include <dali/internal/update/manager/update-manager.h>
27 #include <dali/internal/update/animation/scene-graph-constraint-base.h>
28
29 using Dali::Internal::SceneGraph::PropertyOwner;
30 using Dali::Internal::SceneGraph::PropertyBase;
31 using Dali::Internal::SceneGraph::UpdateManager;
32 using Dali::Internal::SceneGraph::AnimatableProperty;
33
34 namespace Dali
35 {
36
37 namespace Internal
38 {
39
40 CustomObject* CustomObject::New()
41 {
42   return new CustomObject();
43 }
44
45 const SceneGraph::PropertyOwner* CustomObject::GetSceneObject() const
46 {
47   return mUpdateObject;
48 }
49
50 const PropertyBase* CustomObject::GetSceneObjectAnimatableProperty( Property::Index index ) const
51 {
52   CustomProperty* custom = FindCustomProperty( index );
53   DALI_ASSERT_ALWAYS( custom && "Property index is invalid" );
54   return custom->GetSceneGraphProperty();
55 }
56
57 const PropertyInputImpl* CustomObject::GetSceneObjectInputProperty( Property::Index index ) const
58 {
59   return GetSceneObjectAnimatableProperty( index );
60 }
61
62 unsigned int CustomObject::GetDefaultPropertyCount() const
63 {
64   return 0u;
65 }
66
67 void CustomObject::GetDefaultPropertyIndices( Property::IndexContainer& indices ) const
68 {
69 }
70
71 const char* CustomObject::GetDefaultPropertyName( Property::Index index ) const
72 {
73   return NULL;
74 }
75
76 Property::Index CustomObject::GetDefaultPropertyIndex(const std::string& name) const
77 {
78   return Property::INVALID_INDEX;
79 }
80
81 bool CustomObject::IsDefaultPropertyWritable(Property::Index index) const
82 {
83   return false;
84 }
85
86 bool CustomObject::IsDefaultPropertyAnimatable(Property::Index index) const
87 {
88   return false;
89 }
90
91 bool CustomObject::IsDefaultPropertyAConstraintInput( Property::Index index ) const
92 {
93   return false;
94 }
95
96 Property::Type CustomObject::GetDefaultPropertyType(Property::Index index) const
97 {
98   return Property::NONE;
99 }
100
101 void CustomObject::SetDefaultProperty( Property::Index index, const Property::Value& property )
102 {
103   // do nothing
104 }
105
106 Property::Value CustomObject::GetDefaultProperty(Property::Index index) const
107 {
108   return Property::Value();
109 }
110
111 void CustomObject::InstallSceneObjectProperty( PropertyBase& newProperty, const std::string& name, unsigned int index )
112 {
113   if( NULL != mUpdateObject )
114   {
115     // mUpdateObject is being used in a separate thread; queue a message to add the property
116     InstallCustomPropertyMessage( Stage::GetCurrent()->GetUpdateInterface(), *mUpdateObject, newProperty ); // Message takes ownership
117   }
118 }
119
120 CustomObject::~CustomObject()
121 {
122   // Guard to allow handle destruction after Core has been destroyed
123   if( Stage::IsInstalled() )
124   {
125     if( NULL != mUpdateObject )
126     {
127       RemoveObjectMessage( Stage::GetCurrent()->GetUpdateManager(), mUpdateObject );
128       mUpdateObject = NULL; // object is about to be destroyed
129     }
130   }
131 }
132
133 CustomObject::CustomObject()
134 {
135   PropertyOwner* updateObject = PropertyOwner::New();
136
137   // Pass ownership to the update-thread
138   AddObjectMessage( Stage::GetCurrent()->GetUpdateManager(), updateObject );
139
140   // Keep as const since this should only be modified from update-thread
141   mUpdateObject = updateObject;
142 }
143
144 } // namespace Internal
145
146 } // namespace Dali