2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.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
8 // http://floralicense.org/license/
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.
19 #include <dali-toolkit/public-api/focus-manager/focus-manager.h>
25 #include <dali-toolkit/internal/focus-manager/focus-manager-impl.h>
33 const char* const FocusManager::SIGNAL_FOCUS_CHANGED = "focus-changed";
34 const char* const FocusManager::SIGNAL_FOCUS_OVERSHOT = "focus-overshot";
35 const char* const FocusManager::SIGNAL_FOCUSED_ACTOR_ACTIVATED = "focused-actor-activated";
36 const std::string FocusManager::ACTOR_FOCUSABLE("focusable");
37 const std::string FocusManager::IS_FOCUS_GROUP("is-focus-group");
39 FocusManager::FocusManager()
43 FocusManager::~FocusManager()
47 FocusManager FocusManager::Get()
51 // Check whether the focus manager is already created
52 Dali::Adaptor& adaptor = Dali::Adaptor::Get();
53 Dali::BaseHandle handle = adaptor.GetSingleton(typeid(FocusManager));
56 // If so, downcast the handle of singleton to focus manager
57 manager = FocusManager(dynamic_cast<Internal::FocusManager*>(handle.GetObjectPtr()));
62 // If not, create the focus manager and register it as a singleton
63 manager = FocusManager(new Internal::FocusManager());
64 adaptor.RegisterSingleton(typeid(manager), manager);
70 FocusManager::FocusManager(Internal::FocusManager *impl)
75 void FocusManager::SetAccessibilityAttribute(Actor actor, AccessibilityAttribute type, const std::string& text)
77 GetImpl(*this).SetAccessibilityAttribute(actor, type, text);
80 std::string FocusManager::GetAccessibilityAttribute(Actor actor, AccessibilityAttribute type) const
82 return GetImpl(*this).GetAccessibilityAttribute(actor, type);
85 void FocusManager::SetFocusOrder(Actor actor, const unsigned int order)
87 GetImpl(*this).SetFocusOrder(actor, order);
90 unsigned int FocusManager::GetFocusOrder(Actor actor) const
92 return GetImpl(*this).GetFocusOrder(actor);
95 unsigned int FocusManager::GenerateNewFocusOrder() const
97 return GetImpl(*this).GenerateNewFocusOrder();
100 Actor FocusManager::GetActorByFocusOrder(const unsigned int order)
102 return GetImpl(*this).GetActorByFocusOrder(order);
105 bool FocusManager::SetCurrentFocusActor(Actor actor)
107 return GetImpl(*this).SetCurrentFocusActor(actor);
110 Actor FocusManager::GetCurrentFocusActor()
112 return GetImpl(*this).GetCurrentFocusActor();
115 Actor FocusManager::GetCurrentFocusGroup()
117 return GetImpl(*this).GetCurrentFocusGroup();
120 unsigned int FocusManager::GetCurrentFocusOrder()
122 return GetImpl(*this).GetCurrentFocusOrder();
125 bool FocusManager::MoveFocusForward()
127 return GetImpl(*this).MoveFocusForward();
130 bool FocusManager::MoveFocusBackward()
132 return GetImpl(*this).MoveFocusBackward();
135 void FocusManager::ClearFocus()
137 GetImpl(*this).ClearFocus();
140 void FocusManager::Reset()
142 GetImpl(*this).Reset();
145 void FocusManager::SetFocusGroup(Actor actor, bool isFocusGroup)
147 GetImpl(*this).SetFocusGroup(actor, isFocusGroup);
150 bool FocusManager::IsFocusGroup(Actor actor) const
152 return GetImpl(*this).IsFocusGroup(actor);
155 void FocusManager::SetGroupMode(bool enabled)
157 GetImpl(*this).SetGroupMode(enabled);
160 bool FocusManager::GetGroupMode() const
162 return GetImpl(*this).GetGroupMode();
165 void FocusManager::SetWrapMode(bool wrapped)
167 GetImpl(*this).SetWrapMode(wrapped);
170 bool FocusManager::GetWrapMode() const
172 return GetImpl(*this).GetWrapMode();
175 void FocusManager::SetFocusIndicatorActor(Actor indicator)
177 GetImpl(*this).SetFocusIndicatorActor(indicator);
180 Actor FocusManager::GetFocusIndicatorActor()
182 return GetImpl(*this).GetFocusIndicatorActor();
185 Actor FocusManager::GetFocusGroup(Actor actor)
187 return GetImpl(*this).GetFocusGroup(actor);
190 FocusManager::FocusChangedSignalV2& FocusManager::FocusChangedSignal()
192 return GetImpl(*this).FocusChangedSignal();
195 FocusManager::FocusOvershotSignalV2& FocusManager::FocusOvershotSignal()
197 return GetImpl(*this).FocusOvershotSignal();
200 FocusManager::FocusedActorActivatedSignalV2& FocusManager::FocusedActorActivatedSignal()
202 return GetImpl(*this).FocusedActorActivatedSignal();
205 } // namespace Toolkit