1 #ifndef __DALI_INTERNAL_WIDGET_H__
2 #define __DALI_INTERNAL_WIDGET_H__
5 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/public-api/object/base-object.h>
23 #include <appcore_multiwindow_base.h>
25 #include <dali/public-api/common/vector-wrapper.h>
29 #include <widget-data.h>
41 typedef IntrusivePtr<Widget> WidgetPtr;
44 * Implementation of the Application class.
46 class Widget : public BaseObject
49 typedef Dali::Widget::WidgetInstanceCreateSignalType WidgetInstanceCreateSignalType;
50 typedef Dali::Widget::WidgetInstanceTerminateSignalType WidgetInstanceTerminateSignalType;
51 typedef Dali::Widget::WidgetInstancePauseSignalType WidgetInstancePauseSignalType;
52 typedef Dali::Widget::WidgetInstanceResumeSignalType WidgetInstanceResumeSignalType;
53 typedef Dali::Widget::WidgetInstanceResizeSignalType WidgetInstanceResizeSignalType;
54 typedef Dali::Widget::WidgetInstanceUpdateSignalType WidgetInstanceUpdateSignalType;
57 typedef std::pair< const char*, Dali::WidgetData > IdWidgetDataPair;
58 typedef std::vector< IdWidgetDataPair > IdWidgetDataContainer;
62 * @param[in] id Id of widget instance
64 static Dali::Widget New( const std::string& id );
69 * @copydoc Dali::Widget::InitSignal()
71 WidgetInstanceCreateSignalType& CreateSignal(){ return mCreateSignal; }
74 * @copydoc Dali::Widget::TerminateSignal()
76 WidgetInstanceTerminateSignalType& TerminateSignal(){ return mTerminateSignal; }
79 * @copydoc Dali::Widget::PauseSignal()
81 WidgetInstancePauseSignalType& PauseSignal(){ return mPauseSignal; }
84 * @copydoc Dali::Widget::ResumeSignal()
86 WidgetInstanceResumeSignalType& ResumeSignal(){ return mResumeSignal; }
89 * @copydoc Dali::Widget::ResizeSignal()
91 WidgetInstanceResizeSignalType& ResizeSignal(){ return mResizeSignal; }
94 * @copydoc Dali::Widget::UpdateSignal()
96 WidgetInstanceUpdateSignalType& UpdateSignal(){ return mUpdateSignal; }
101 * Called when the widget is resized.
103 void OnResize(appcore_multiwindow_base_instance_h, Dali::Widget::WindowSize windowSize);
106 * Called when the widget is updated.
108 void OnUpdate(appcore_multiwindow_base_instance_h, bundle* content, int force);
111 * Called when Create Widget Instance.
113 void InsertWidgetData( const char* id, Dali::WidgetData widgetData );
116 * Called when finding widget data by instance id.
118 Dali::WidgetData* FindWidgetData( const char* instanceId );
121 * Called when deleting widget data by instance id.
123 void DeleteWidgetData( const char* instanceId );
128 * Private Constructor
129 * @param[in] id Id for widget instance
131 Widget( const std::string& id );
139 Widget(const Widget&);
140 Widget& operator=(Widget&);
144 WidgetInstanceCreateSignalType mCreateSignal;
145 WidgetInstanceTerminateSignalType mTerminateSignal;
146 WidgetInstancePauseSignalType mPauseSignal;
147 WidgetInstanceResumeSignalType mResumeSignal;
148 WidgetInstanceResizeSignalType mResizeSignal;
149 WidgetInstanceUpdateSignalType mUpdateSignal;
150 const std::string mClassId;
153 SlotDelegate< Widget > mSlotDelegate;
154 IdWidgetDataContainer mIdWidgetContainer;
157 inline Widget& GetImplementation(Dali::Widget& widget)
159 DALI_ASSERT_ALWAYS(widget && "widget handle is empty");
161 BaseObject& handle = widget.GetBaseObject();
163 return static_cast<Internal::Adaptor::Widget&>(handle);
166 inline const Widget& GetImplementation(const Dali::Widget& widget)
168 DALI_ASSERT_ALWAYS(widget && "widget handle is empty");
170 const BaseObject& handle = widget.GetBaseObject();
172 return static_cast<const Internal::Adaptor::Widget&>(handle);
175 } // namespace Adaptor
177 } // namespace Internal
180 #endif // __DALI_INTERNAL_WIDGET_H__