Added internal property for retry text and text input
[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 SetPreviewVisible( bool visible );
116
117   bool IsPreviewVisible();
118
119   void SetLoadingTextVisible( bool visible );
120
121   void SetRetryTextVisible( bool visible );
122
123   bool IsLoadingTextVisible();
124
125   bool IsRetryTextVisible();
126
127   bool IsWidgetFaulted();
128
129   void SetPermanentDelete( bool permanentDelete );
130
131   void RemoveWidgetImage();
132
133   bool IsPermanentDelete();
134
135   bool IsWidgetImageView();
136
137   void UpdateImageSource( tbm_surface_h source );
138
139   void CreateWidgetImageView();
140
141   void ConnectSignal( tizen_remote_surface* surface );
142
143   bool OnTouch( Dali::Actor actor, const Dali::TouchData& event );
144
145   bool OnWheelEvent( Dali::Actor actor, const Dali::WheelEvent& event );
146
147   void CloseRemoteSurface();
148
149   void SetLoadingTextPropertyMap( Dali::Property::Map map );
150
151   void SetRetryTextPropertyMap( Dali::Property::Map map );
152
153   void ShowLoadingState( bool show );
154
155   void ShowRetryState( bool show );
156
157   void TerminateWidget();
158
159 public: //Signals
160
161   /**
162    * @copydoc Dali::WidgetView::WidgetView::WidgetAddedSignal
163    */
164   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetAddedSignal();
165
166   /**
167    * @copydoc Dali::WidgetView::WidgetView::WidgetDeletedSignal
168    */
169   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetDeletedSignal();
170
171   /**
172    * @copydoc Dali::WidgetView::WidgetView::WidgetCreationAbortedSignal
173    */
174   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetCreationAbortedSignal();
175
176   /**
177    * @copydoc Dali::WidgetView::WidgetView::WidgetContentUpdatedSignal
178    */
179   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetContentUpdatedSignal();
180
181   /**
182    * @copydoc Dali::WidgetView::WidgetView::WidgetUpdatePeriodChangedSignal
183    */
184   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetUpdatePeriodChangedSignal();
185
186   /**
187    * @copydoc Dali::WidgetView::WidgetView::WidgetFaultedSignal
188    */
189   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetFaultedSignal();
190
191   Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetTerminatedSignal();
192
193 protected:
194
195   /**
196    * Construct a new WidgetView.
197    */
198   WidgetView();
199
200   /**
201    * Construct a new WidgetView.
202    */
203   WidgetView( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod );
204
205   /**
206    * A reference counted object may only be deleted by calling Unreference()
207    */
208   virtual ~WidgetView();
209
210   float TextPixelToPointSize( int pixelSize );
211
212 private: // From Control
213
214   /**
215    * @copydoc Toolkit::Control::OnInitialize()
216    */
217   virtual void OnInitialize();
218
219   /**
220    * @copydoc Toolkit::Control::OnStageConnect()
221    */
222   virtual void OnStageConnection( int depth );
223
224   /**
225    * @copydoc Toolkit::Control::OnStageDisconnection()
226    */
227   virtual void OnStageDisconnection();
228
229   /**
230    * @copydoc Toolkit::Control::OnSizeSet()
231    */
232   virtual void OnSizeSet( const Vector3& targetSize );
233
234   /**
235    * @copydoc Toolkit::Control::GetNaturalSize
236    */
237   virtual Vector3 GetNaturalSize();
238
239   /**
240    * @copydoc Toolkit::Control::GetHeightForWidth()
241    */
242   virtual float GetHeightForWidth( float width );
243
244   /**
245    * @copydoc Toolkit::Control::GetWidthForHeight()
246    */
247   virtual float GetWidthForHeight( float height );
248
249 private:
250
251   // Undefined
252   WidgetView( const WidgetView& );
253
254   // Undefined
255   WidgetView& operator= ( const WidgetView& );
256
257 private:
258
259   Toolkit::ImageView mWidgetImageView;     ///< Widget content
260   Toolkit::ImageView mPreviewImage;   ///< Preview image
261   Toolkit::TextLabel mLoadingText;      ///< Loading text
262   Toolkit::TextLabel mRetryText;      ///< Retry text
263   Dali::Actor mPreviewActor;
264   Dali::Actor mStateTextActor;
265   Dali::NativeImageSourcePtr mImageSource;
266
267   std::string mWidgetId;
268   std::string mInstanceId;
269   std::string mContentInfo;
270   std::string mTitle;
271
272   int mWidth;
273   int mHeight;
274   int mPid;
275   float mUpdatePeriod;
276
277   bool mPreviewVisible;
278
279   bool mLoadingTextVisible;
280   std::string mLoadingTextString;
281
282   bool mRetryTextVisible;
283   std::string mRetryTextString;
284   bool mRetryState;
285
286   bool mPermanentDelete;
287   screen_connector_toolkit_h mWatcherHandle;
288   tizen_remote_surface* mRemoteSurface;
289
290   // Signals
291   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetAddedSignal;
292   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetDeletedSignal;
293   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetCreationAbortedSignal;
294   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetContentUpdatedSignal;
295   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetUpdatePeriodChangedSignal;
296   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetFaultedSignal;
297
298   // Internal signal
299   Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetTerminatedSignal;
300 };
301
302 } // namespace Internal
303
304 // Helpers for public-api forwarding methods
305
306 inline Internal::WidgetView& GetImplementation( WidgetView& widgetView )
307 {
308   DALI_ASSERT_ALWAYS( widgetView );
309
310   Dali::RefObject& handle = widgetView.GetImplementation();
311
312   return static_cast<Internal::WidgetView&>( handle );
313 }
314
315 inline const Internal::WidgetView& GetImplementation( const WidgetView& widgetView )
316 {
317   DALI_ASSERT_ALWAYS( widgetView );
318
319   const Dali::RefObject& handle = widgetView.GetImplementation();
320
321   return static_cast<const Internal::WidgetView&>( handle );
322 }
323
324 } // namespace WidgetView
325
326 } // namespace Dali
327
328 #endif // __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__