1 #ifndef __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__
2 #define __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__
6 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
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
12 * http://floralicense.org/license/
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.
22 #include <public_api/widget_view/widget_view.h>
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>
42 class WidgetView : public Toolkit::Internal::Control
47 * @copydoc Dali::WidgetView::WidgetView::New
49 static Dali::WidgetView::WidgetView New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod );
52 * @copydoc Dali::WidgetView::WidgetView::PauseWidget
57 * @copydoc Dali::WidgetView::WidgetView::ResumeWidget
62 * @copydoc Dali::WidgetView::WidgetView::CancelTouchEvent
64 bool CancelTouchEvent();
67 * @copydoc Dali::WidgetView::WidgetView::ActivateFaultedWidget
69 void ActivateFaultedWidget();
71 void SendWidgetEvent( int event );
73 public: // Internal API
76 * @brief Called when a property of an object of this type is set.
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.
82 static void SetProperty( BaseObject* object, Property::Index index, const Property::Value& value );
85 * @brief Called to retrieve a property of an object of this type.
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.
91 static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex );
94 * @brief Performs actions as requested using the action name.
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
101 static bool DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes );
103 static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor );
105 const std::string& GetWidgetId() const;
107 const std::string& GetInstanceId() const;
109 const std::string& GetContentInfo();
111 const std::string& GetTitle();
113 float GetUpdatePeriod() const;
115 void ShowPreview( bool show );
117 bool IsPreviewVisible();
119 void ShowStateText( bool show );
121 bool IsStateTextVisible();
123 bool IsWidgetFaulted();
125 void SetPermanentDelete( bool permanentDelete );
127 // ToDo: This funstion will be used for widgetDeletedSignal
128 void RemoveObjectView();
130 bool IsPermanentDelete();
132 bool IsWidgetImageView();
134 void UpdateImageSource( tbm_surface_h source );
136 void CreateWidgetImageView();
138 void ConnectSignal( tizen_remote_surface* surface );
140 bool OnTouch( Dali::Actor actor, const Dali::TouchData& event );
142 bool OnWheelEvent( Dali::Actor actor, const Dali::WheelEvent& event );
147 * @copydoc Dali::WidgetView::WidgetView::WidgetAddedSignal
149 Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetAddedSignal();
152 * @copydoc Dali::WidgetView::WidgetView::WidgetDeletedSignal
154 Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetDeletedSignal();
157 * @copydoc Dali::WidgetView::WidgetView::WidgetCreationAbortedSignal
159 Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetCreationAbortedSignal();
162 * @copydoc Dali::WidgetView::WidgetView::WidgetContentUpdatedSignal
164 Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetContentUpdatedSignal();
167 * @copydoc Dali::WidgetView::WidgetView::WidgetUpdatePeriodChangedSignal
169 Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetUpdatePeriodChangedSignal();
172 * @copydoc Dali::WidgetView::WidgetView::WidgetFaultedSignal
174 Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetFaultedSignal();
179 * Construct a new WidgetView.
184 * Construct a new WidgetView.
186 WidgetView( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod );
189 * A reference counted object may only be deleted by calling Unreference()
191 virtual ~WidgetView();
193 private: // From Control
196 * @copydoc Toolkit::Control::OnInitialize()
198 virtual void OnInitialize();
201 * @copydoc Toolkit::Control::OnStageConnect()
203 virtual void OnStageConnection( int depth );
206 * @copydoc Toolkit::Control::OnStageDisconnection()
208 virtual void OnStageDisconnection();
211 * @copydoc Toolkit::Control::OnSizeSet()
213 virtual void OnSizeSet( const Vector3& targetSize );
216 * @copydoc Toolkit::Control::GetNaturalSize
218 virtual Vector3 GetNaturalSize();
221 * @copydoc Toolkit::Control::GetHeightForWidth()
223 virtual float GetHeightForWidth( float width );
226 * @copydoc Toolkit::Control::GetWidthForHeight()
228 virtual float GetWidthForHeight( float height );
233 WidgetView( const WidgetView& );
236 WidgetView& operator= ( const WidgetView& );
240 Toolkit::ImageView mWidgetImageView; ///< Widget content
241 Toolkit::ImageView mPreviewImage; ///< Preview image
242 Toolkit::TextLabel mStateText; ///< State text
243 Dali::NativeImageSourcePtr mImageSource;
245 std::string mWidgetId;
246 std::string mInstanceId;
247 std::string mContentInfo;
257 bool mPreviewVisible;
258 bool mStateTextVisible;
259 bool mPermanentDelete;
261 tizen_remote_surface* mRemoteSurface;
264 Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetAddedSignal;
265 Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetDeletedSignal;
266 Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetCreationAbortedSignal;
267 Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetContentUpdatedSignal;
268 Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetUpdatePeriodChangedSignal;
269 Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetFaultedSignal;
272 } // namespace Internal
274 // Helpers for public-api forwarding methods
276 inline Internal::WidgetView& GetImplementation( WidgetView& widgetView )
278 DALI_ASSERT_ALWAYS( widgetView );
280 Dali::RefObject& handle = widgetView.GetImplementation();
282 return static_cast<Internal::WidgetView&>( handle );
285 inline const Internal::WidgetView& GetImplementation( const WidgetView& widgetView )
287 DALI_ASSERT_ALWAYS( widgetView );
289 const Dali::RefObject& handle = widgetView.GetImplementation();
291 return static_cast<const Internal::WidgetView&>( handle );
294 } // namespace WidgetView
298 #endif // __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__