Added property map for loading text and changed default color and style
[platform/core/uifw/widget-viewer-dali.git] / internal / widget_view / widget_view_impl.h
1 #ifndef __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__
2 #define __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__
3
4 /*
5  * Samsung API
6  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
7  *
8  * Licensed under the Flora License, Version 1.1 (the License);
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://floralicense.org/license/
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an AS IS BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20
21 // INTERNAL INCLUDES
22 #include <public_api/widget_view/widget_view.h>
23
24 // EXTERNAL INCLUDES
25 #include <dali/public-api/adaptor-framework/native-image-source.h>
26 #include <dali-toolkit/public-api/controls/control-impl.h>
27 #include <dali-toolkit/public-api/controls/text-controls/text-label.h>
28 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
29 #include <wayland-extension/tizen-remote-surface-client-protocol.h>
30 #include <tbm_surface.h>
31 #include <screen_connector_toolkit.h>
32
33 namespace Dali
34 {
35
36 namespace WidgetView
37 {
38
39 namespace Internal
40 {
41
42 class WidgetView : public Toolkit::Internal::Control
43 {
44 public:
45
46   /**
47    * @copydoc Dali::WidgetView::WidgetView::New
48    */
49   static Dali::WidgetView::WidgetView New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod );
50
51   /**
52    * @copydoc Dali::WidgetView::WidgetView::PauseWidget
53    */
54   bool PauseWidget();
55
56   /**
57    * @copydoc Dali::WidgetView::WidgetView::ResumeWidget
58    */
59   bool ResumeWidget();
60
61   /**
62    * @copydoc Dali::WidgetView::WidgetView::CancelTouchEvent
63    */
64   bool CancelTouchEvent();
65
66   /**
67    * @copydoc Dali::WidgetView::WidgetView::ActivateFaultedWidget
68    */
69   void ActivateFaultedWidget();
70
71   void SendWidgetEvent( int event );
72
73 public: // Internal API
74
75   /**
76    * @brief Called when a property of an object of this type is set.
77    * @SINCE_1_1.38
78    * @param[in] object The object whose property is set.
79    * @param[in] index The property index.
80    * @param[in] value The new property value.
81    */
82   static void SetProperty( BaseObject* object, Property::Index index, const Property::Value& value );
83
84   /**
85    * @brief Called to retrieve a property of an object of this type.
86    * @SINCE_1_1.38
87    * @param[in] object The object whose property is to be retrieved.
88    * @param[in] index The property index.
89    * @return The current value of the property.
90    */
91   static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex );
92
93   /**
94    * @brief Performs actions as requested using the action name.
95    * @SINCE_1_1.38
96    * @param[in] object The object on which to perform the action.
97    * @param[in] actionName The action to perform.
98    * @param[in] attributes The attributes with which to perfrom this action.
99    * @return True if action has been accepted by this control
100    */
101   static bool DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes );
102
103   static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor );
104
105   const std::string& GetWidgetId() const;
106
107   const std::string& GetInstanceId() const;
108
109   const std::string& GetContentInfo();
110
111   const std::string& GetTitle();
112
113   float GetUpdatePeriod() const;
114
115   void ShowPreview( bool show );
116
117   bool IsPreviewVisible();
118
119   void ShowStateText( bool show );
120
121   bool IsStateTextVisible();
122
123   bool IsWidgetFaulted();
124
125   void SetPermanentDelete( bool permanentDelete );
126
127 // ToDo: This funstion will be used for widgetDeletedSignal
128   void RemoveObjectView();
129
130   bool IsPermanentDelete();
131
132   bool IsWidgetImageView();
133
134   void UpdateImageSource( tbm_surface_h source );
135
136   void CreateWidgetImageView();
137
138   void ConnectSignal( tizen_remote_surface* surface );
139
140   bool OnTouch( Dali::Actor actor, const Dali::TouchData& event );
141
142   bool OnWheelEvent( Dali::Actor actor, const Dali::WheelEvent& event );
143
144   void CloseRemoteSurface();
145
146   void SetLoadingTextPropertyMap( Dali::Property::Map map );
147
148 public: //Signals
149
150   /**
151    * @copydoc Dali::WidgetView::WidgetView::WidgetAddedSignal
152    */
153   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetAddedSignal();
154
155   /**
156    * @copydoc Dali::WidgetView::WidgetView::WidgetDeletedSignal
157    */
158   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetDeletedSignal();
159
160   /**
161    * @copydoc Dali::WidgetView::WidgetView::WidgetCreationAbortedSignal
162    */
163   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetCreationAbortedSignal();
164
165   /**
166    * @copydoc Dali::WidgetView::WidgetView::WidgetContentUpdatedSignal
167    */
168   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetContentUpdatedSignal();
169
170   /**
171    * @copydoc Dali::WidgetView::WidgetView::WidgetUpdatePeriodChangedSignal
172    */
173   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetUpdatePeriodChangedSignal();
174
175   /**
176    * @copydoc Dali::WidgetView::WidgetView::WidgetFaultedSignal
177    */
178   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetFaultedSignal();
179
180 protected:
181
182   /**
183    * Construct a new WidgetView.
184    */
185   WidgetView();
186
187   /**
188    * Construct a new WidgetView.
189    */
190   WidgetView( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod );
191
192   /**
193    * A reference counted object may only be deleted by calling Unreference()
194    */
195   virtual ~WidgetView();
196
197 private: // From Control
198
199   /**
200    * @copydoc Toolkit::Control::OnInitialize()
201    */
202   virtual void OnInitialize();
203
204   /**
205    * @copydoc Toolkit::Control::OnStageConnect()
206    */
207   virtual void OnStageConnection( int depth );
208
209   /**
210    * @copydoc Toolkit::Control::OnStageDisconnection()
211    */
212   virtual void OnStageDisconnection();
213
214   /**
215    * @copydoc Toolkit::Control::OnSizeSet()
216    */
217   virtual void OnSizeSet( const Vector3& targetSize );
218
219   /**
220    * @copydoc Toolkit::Control::GetNaturalSize
221    */
222   virtual Vector3 GetNaturalSize();
223
224   /**
225    * @copydoc Toolkit::Control::GetHeightForWidth()
226    */
227   virtual float GetHeightForWidth( float width );
228
229   /**
230    * @copydoc Toolkit::Control::GetWidthForHeight()
231    */
232   virtual float GetWidthForHeight( float height );
233
234 private:
235
236   // Undefined
237   WidgetView( const WidgetView& );
238
239   // Undefined
240   WidgetView& operator= ( const WidgetView& );
241
242 private:
243
244   Toolkit::ImageView mWidgetImageView;     ///< Widget content
245   Toolkit::ImageView mPreviewImage;   ///< Preview image
246   Toolkit::TextLabel mStateText;      ///< State text
247   Dali::Actor mPreviewActor;
248   Dali::Actor mStateTextActor;
249   Dali::NativeImageSourcePtr mImageSource;
250
251   std::string mWidgetId;
252   std::string mInstanceId;
253   std::string mContentInfo;
254   std::string mTitle;
255
256   int mWidth;
257   int mHeight;
258   int mPid;
259   float mUpdatePeriod;
260
261   bool mPreviewVisible;
262   bool mStateTextVisible;
263   bool mPermanentDelete;
264   screen_connector_toolkit_h mWatcherHandle;
265   tizen_remote_surface* mRemoteSurface;
266
267   // Signals
268   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetAddedSignal;
269   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetDeletedSignal;
270   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetCreationAbortedSignal;
271   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetContentUpdatedSignal;
272   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetUpdatePeriodChangedSignal;
273   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetFaultedSignal;
274 };
275
276 } // namespace Internal
277
278 // Helpers for public-api forwarding methods
279
280 inline Internal::WidgetView& GetImplementation( WidgetView& widgetView )
281 {
282   DALI_ASSERT_ALWAYS( widgetView );
283
284   Dali::RefObject& handle = widgetView.GetImplementation();
285
286   return static_cast<Internal::WidgetView&>( handle );
287 }
288
289 inline const Internal::WidgetView& GetImplementation( const WidgetView& widgetView )
290 {
291   DALI_ASSERT_ALWAYS( widgetView );
292
293   const Dali::RefObject& handle = widgetView.GetImplementation();
294
295   return static_cast<const Internal::WidgetView&>( handle );
296 }
297
298 } // namespace WidgetView
299
300 } // namespace Dali
301
302 #endif // __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__