From: taeyoon0.lee Date: Thu, 31 Aug 2017 09:39:18 +0000 (+0900) Subject: Modified folder structure of widget viewer dali and fixed build issue X-Git-Tag: submit/tizen/20170915.115150^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;p=platform%2Fcore%2Fuifw%2Fwidget-viewer-dali.git Modified folder structure of widget viewer dali and fixed build issue Change-Id: Ia6257f12c0a508059569822bc894b61d95067bb1 --- diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index dcaa1d4..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,82 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(widget_viewer_dali CXX) - -SET(PREFIX "${CMAKE_INSTALL_PREFIX}") -SET(EXEC_PREFIX "\${prefix}") -SET(PROJECT_NAME "${PROJECT_NAME}") -SET(LIBDIR ${LIB_INSTALL_DIR}) -SET(INCLUDEDIR "\${prefix}/include/${PROJECT_NAME}") -SET(VERSION_MAJOR "${MAJORVER}") -SET(VERSION "${FULLVER}") - -SET(IMAGE_DIR "${TZ_SYS_SHARE}/${PROJECT_NAME}/images") -SET(LOCALE_DIR "${TZ_SYS_SHARE}/${PROJECT_NAME}/locale") - -INCLUDE(FindPkgConfig) -pkg_check_modules(viewer_dali REQUIRED - dlog - widget_service - pkgmgr-info - capi-system-info - dali-core - dali-adaptor - dali-toolkit - cynara-client - ecore-wayland - ecore-input - tizen-remote-surface-client - screen_connector_watcher -) - -SET(BUILD_SOURCE - public_api/widget_view/widget_view.cpp - public_api/widget_view_manager/widget_view_manager.cpp - internal/widget_view/widget_view_impl.cpp - internal/widget_view_manager/widget_view_manager_impl.cpp -) - -FOREACH(flag ${viewer_dali_CFLAGS}) - SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") -ENDFOREACH(flag) -SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -DHIDE_DALI_INTERNALS -Wall -Werror -Winline -g") - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") -SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") -SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_C_FLAGS_RELEASE "-O2") - -SET(LOCAL_PUBLIC_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/public_api) -SET(IMAGE_DIR "${TZ_SYS_SHARE}/${PROJECT_NAME}/images") -ADD_DEFINITIONS("-DWIDGET_VIEW_RESOURCE_DEFAULT_IMG=\"${IMAGE_DIR}/unknown.png\"") - -ADD_DEFINITIONS("-DWIDGET_VIEWER_DALI_LOCALE=\"${LOCALE_DIR}\"") -ADD_DEFINITIONS("-DPKGNAME=\"${PROJECT_NAME}\"") - -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) - -ADD_LIBRARY(${PROJECT_NAME} SHARED ${BUILD_SOURCE}) -SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION_MAJOR}) -SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION}) - -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${viewer_dali_LDFLAGS} "-lpthread") - -CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY) -SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${PROJECT_NAME}.pc") - -INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR}) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/public_api/${PROJECT_NAME}.h DESTINATION include/${PROJECT_NAME}) - -FILE(GLOB LOCAL_WIDGE_VIEW_HEADER_LIST RELATIVE "${LOCAL_PUBLIC_HEADER_DIR}" "${LOCAL_PUBLIC_HEADER_DIR}/widget_view/*.h") -FOREACH(flag ${LOCAL_WIDGE_VIEW_HEADER_LIST}) - INSTALL(FILES ${LOCAL_PUBLIC_HEADER_DIR}/${flag} DESTINATION include/${PROJECT_NAME}/public_api/widget_view) -ENDFOREACH(flag) - -FILE(GLOB LOCAL_WIDGE_VIEW_MANAGER_HEADER_LIST RELATIVE "${LOCAL_PUBLIC_HEADER_DIR}" "${LOCAL_PUBLIC_HEADER_DIR}/widget_view_manager/*.h") -FOREACH(flag ${LOCAL_WIDGE_VIEW_MANAGER_HEADER_LIST}) - INSTALL(FILES ${LOCAL_PUBLIC_HEADER_DIR}/${flag} DESTINATION include/${PROJECT_NAME}/public_api/widget_view_manager) -ENDFOREACH(flag) - -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/images/unknown.png DESTINATION ${IMAGE_DIR}) - -ADD_SUBDIRECTORY(po) diff --git a/build/tizen/CMakeLists.txt b/build/tizen/CMakeLists.txt new file mode 100644 index 0000000..a27a930 --- /dev/null +++ b/build/tizen/CMakeLists.txt @@ -0,0 +1,82 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(widget_viewer_dali CXX) + +SET(PREFIX "${CMAKE_INSTALL_PREFIX}") +SET(EXEC_PREFIX "\${prefix}") +SET(PROJECT_NAME "${PROJECT_NAME}") +SET(LIBDIR ${LIB_INSTALL_DIR}) +SET(INCLUDEDIR "\${prefix}/include/${PROJECT_NAME}") +SET(VERSION_MAJOR "${MAJORVER}") +SET(VERSION "${FULLVER}") + +SET(IMAGE_DIR "${TZ_SYS_SHARE}/${PROJECT_NAME}/images") +SET(LOCALE_DIR "${TZ_SYS_SHARE}/${PROJECT_NAME}/locale") +SET(ROOT_SRC_DIR ${CMAKE_SOURCE_DIR}/../..) + +INCLUDE(FindPkgConfig) +pkg_check_modules(viewer_dali REQUIRED + dlog + widget_service + capi-system-info + dali-core + dali-adaptor + dali-toolkit + cynara-client + ecore-wayland + ecore-input + tizen-remote-surface-client + screen_connector_watcher +) + +SET(BUILD_SOURCE + ${ROOT_SRC_DIR}/widget_viewer_dali/public_api/widget_view/widget_view.cpp + ${ROOT_SRC_DIR}/widget_viewer_dali/public_api/widget_view_manager/widget_view_manager.cpp + ${ROOT_SRC_DIR}/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp + ${ROOT_SRC_DIR}/widget_viewer_dali/internal/widget_view_manager/widget_view_manager_impl.cpp +) + +FOREACH(flag ${viewer_dali_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) +SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -DHIDE_DALI_INTERNALS -Wall -Werror -Winline -g") + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_C_FLAGS_RELEASE "-O2") + +SET(LOCAL_PUBLIC_HEADER_DIR ${ROOT_SRC_DIR}/widget_viewer_dali/public_api) +SET(IMAGE_DIR "${TZ_SYS_SHARE}/${PROJECT_NAME}/images") +ADD_DEFINITIONS("-DWIDGET_VIEW_RESOURCE_DEFAULT_IMG=\"${IMAGE_DIR}/unknown.png\"") + +ADD_DEFINITIONS("-DWIDGET_VIEWER_DALI_LOCALE=\"${LOCALE_DIR}\"") +ADD_DEFINITIONS("-DPKGNAME=\"${PROJECT_NAME}\"") + +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${ROOT_SRC_DIR}) + +ADD_LIBRARY(${PROJECT_NAME} SHARED ${BUILD_SOURCE}) +SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION_MAJOR}) +SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION}) + +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${viewer_dali_LDFLAGS} "-lpthread") + +CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY) +SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${PROJECT_NAME}.pc") + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR}) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) +INSTALL(FILES ${ROOT_SRC_DIR}/widget_viewer_dali/public_api/${PROJECT_NAME}.h DESTINATION include/${PROJECT_NAME}) + +FILE(GLOB LOCAL_WIDGE_VIEW_HEADER_LIST RELATIVE "${LOCAL_PUBLIC_HEADER_DIR}" "${LOCAL_PUBLIC_HEADER_DIR}/widget_view/*.h") +FOREACH(flag ${LOCAL_WIDGE_VIEW_HEADER_LIST}) + INSTALL(FILES ${LOCAL_PUBLIC_HEADER_DIR}/${flag} DESTINATION include/${PROJECT_NAME}/public_api/widget_view) +ENDFOREACH(flag) + +FILE(GLOB LOCAL_WIDGE_VIEW_MANAGER_HEADER_LIST RELATIVE "${LOCAL_PUBLIC_HEADER_DIR}" "${LOCAL_PUBLIC_HEADER_DIR}/widget_view_manager/*.h") +FOREACH(flag ${LOCAL_WIDGE_VIEW_MANAGER_HEADER_LIST}) + INSTALL(FILES ${LOCAL_PUBLIC_HEADER_DIR}/${flag} DESTINATION include/${PROJECT_NAME}/public_api/widget_view_manager) +ENDFOREACH(flag) + +INSTALL(FILES ${ROOT_SRC_DIR}/widget_viewer_dali/images/unknown.png DESTINATION ${IMAGE_DIR}) + +ADD_SUBDIRECTORY(po) diff --git a/build/tizen/po/CMakeLists.txt b/build/tizen/po/CMakeLists.txt new file mode 100644 index 0000000..53bdc1b --- /dev/null +++ b/build/tizen/po/CMakeLists.txt @@ -0,0 +1,77 @@ +# for i18n + +SET(POFILES + ar.po + as.po + az.po + be_BY.po + bn_BD.po + bn.po + de.po + en_PH.po + en_US.po + es_ES.po + es_US.po + en.po + fa.po + fr.po + gu.po + hi.po + hy.po + id.po + it_IT.po + jv.po + ka.po + kk.po + km.po + kn.po + ko_KR.po + ky_KG.po + lo.po + ml.po + mn_MN.po + mr.po + ms.po + my_ZG.po + ne.po + or.po + pa.po + pt_BR.po + pt_PT.po + ru_RU.po + si.po + su_ID.po + ta.po + te.po + tg_TJ.po + th.po + tk_TM.po + tl.po + tr_TR.po + uk.po + ur.po + uz.po + vi.po + xh.po + zh_CN.po + zu.po +) + +SET(MSGFMT "/usr/bin/msgfmt") +FOREACH(pofile ${POFILES}) + SET(pofile ${ROOT_SRC_DIR}/widget_viewer_dali/po/${pofile}) + MESSAGE(STATUS " ${pofile}") + GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE) + GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE) + SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo) + ADD_CUSTOM_COMMAND( + OUTPUT ${moFile} + COMMAND ${MSGFMT} -o ${moFile} ${absPofile} + DEPENDS ${absPofile} + ) + INSTALL(FILES ${moFile} + DESTINATION ${LOCALE_DIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo) + SET(moFiles ${moFiles} ${moFile}) +ENDFOREACH(pofile) + +ADD_CUSTOM_TARGET(locale ALL DEPENDS ${moFiles}) diff --git a/build/tizen/widget_viewer_dali.pc.in b/build/tizen/widget_viewer_dali.pc.in new file mode 100644 index 0000000..64db29a --- /dev/null +++ b/build/tizen/widget_viewer_dali.pc.in @@ -0,0 +1,12 @@ +prefix=@PREFIX@ +exec_prefix=@EXEC_PREFIX@ +libdir=@LIBDIR@ +includedir=@INCLUDEDIR@ + +Name: widget_viewer_dali +Description: Support development of the widget Viewer DALi Frontend library +Version: @VERSION@ +Requires: widget_service +Libs: -L${libdir} -lwidget_viewer_dali +Cflags: -I${includedir} +cppflags: -I${includedir} diff --git a/images/unknown.png b/images/unknown.png deleted file mode 100644 index 535db60..0000000 Binary files a/images/unknown.png and /dev/null differ diff --git a/internal/widget_view/widget_view_impl.cpp b/internal/widget_view/widget_view_impl.cpp deleted file mode 100644 index f1bfea4..0000000 --- a/internal/widget_view/widget_view_impl.cpp +++ /dev/null @@ -1,1466 +0,0 @@ -/* - * Samsung API - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// CLASS HEADER -#include - -// INTERNAL INCLUDES - -// EXTERNAL INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace Dali -{ - -namespace WidgetView -{ - -namespace Internal -{ - -namespace -{ - -const int DEFAULT_FONT_PIXEL_SIZE = 30; // Referred platform widget viewer evas - -#define GET_LOCALE_TEXT(string) dgettext(PKGNAME, string) - -#if defined(DEBUG_ENABLED) -Integration::Log::Filter* gWidgetViewLogging = Integration::Log::Filter::New( Debug::Verbose, false, "LOG_WIDGET_VIEW" ); -#endif - -BaseHandle Create() -{ - return Dali::BaseHandle(); -} - -// Setup properties, signals and actions using the type-registry. -DALI_TYPE_REGISTRATION_BEGIN( Dali::WidgetView::WidgetView, Toolkit::Control, Create ); -DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "widgetId", BOOLEAN, WIDGET_ID ) -DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "instanceId", BOOLEAN, INSTANCE_ID ) -DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "contentInfo", BOOLEAN, CONTENT_INFO ) -DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "title", BOOLEAN, TITLE ) -DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "updatePeriod", BOOLEAN, UPDATE_PERIOD ) -DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "preview", MAP, PREVIEW ) -DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "loadingText", MAP, LOADING_TEXT ) -DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "widgetStateFaulted", BOOLEAN, WIDGET_STATE_FAULTED ) -DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "permanentDelete", BOOLEAN, PERMANENT_DELETE ) - -// Internal property -// ToDo it should be changed public property. -const int TERMINATE_WIDGET = Dali::WidgetView::WidgetView::Property::PERMANENT_DELETE+1; -const int RETRY_TEXT = TERMINATE_WIDGET+1; -const int WIDGET_IMAGE = RETRY_TEXT+1; - -Dali::PropertyRegistration internalProperty1( typeRegistration, "terminateWidget", TERMINATE_WIDGET, Property::BOOLEAN, Dali::WidgetView::Internal::WidgetView::SetProperty, Dali::WidgetView::Internal::WidgetView::GetProperty ); -Dali::PropertyRegistration internalProperty2( typeRegistration, "retryText", RETRY_TEXT, Property::MAP, Dali::WidgetView::Internal::WidgetView::SetProperty, Dali::WidgetView::Internal::WidgetView::GetProperty ); -Dali::PropertyRegistration internalProperty3( typeRegistration, "widgetImage", WIDGET_IMAGE, Property::MAP, Dali::WidgetView::Internal::WidgetView::SetProperty, Dali::WidgetView::Internal::WidgetView::GetProperty ); - -// Signals -DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetAdded", SIGNAL_WIDGET_ADDED ) -DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetDeleted", SIGNAL_WIDGET_DELETED ) -DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetCreationAborted", SIGNAL_WIDGET_CREATION_ABORTED ) -DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetContentUpdated", SIGNAL_WIDGET_CONTENT_UPDATED ) -DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetUpdatePeriodChanged", SIGNAL_WIDGET_UPDATE_PERIOD_CHANGED ) -DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetFaulted", SIGNAL_WIDGET_FAULTED ) -DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetTerminated", SIGNAL_WIDGET_TERMINATED ) - -// Actions -DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "pauseWidget", ACTION_WIDGETVIEW_PAUSE_WIDGET ); -DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "resumeWidget", ACTION_WIDGETVIEW_RESUME_WIDGET ); -DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "cancelTouchEvent", ACTION_WIDGETVIEW_CANCEL_TOUCH_EVENT ); -DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "activateFaultedWidget", ACTION_WIDGETVIEW_ACTIVATE_FAULTED_WIDGET ); - -DALI_TYPE_REGISTRATION_END() - -struct wl_buffer* preBuffer; -struct tizen_remote_surface* remoteSurface; - -const char* const STATE_TEXT( "stateText" ); -const char* const FONT_STYLE( "fontStyle" ); -const char* const TEXT_POINT_SIZE( "textPointSize" ); -const char* const TEXT_COLOR( "textColor" ); -const char* const TEXT_VISIBLE( "textVisible" ); //ToDo: it should be removed after retry text property is public one - -// ToDo: Now dali provides only dali key codes. -// This funtion will be used to get platform specific key codes from key name -struct KeyCodeMap -{ - xkb_keysym_t keySym; - xkb_keycode_t keyCode; - bool isKeyCode; -}; - -static void FindKeyCode( struct xkb_keymap* keyMap, xkb_keycode_t key, void* data ) -{ - KeyCodeMap* foundKeyCode = static_cast< KeyCodeMap* >( data ); - if( foundKeyCode->isKeyCode ) - { - return; - } - - xkb_keysym_t keySym = foundKeyCode->keySym; - int nsyms = 0; - const xkb_keysym_t* symsOut = NULL; - - nsyms = xkb_keymap_key_get_syms_by_level( keyMap, key, 0, 0, &symsOut ); - - if( nsyms && symsOut ) - { - if( *symsOut == keySym ) - { - foundKeyCode->keyCode = key; - foundKeyCode->isKeyCode = true; - } - } -} - -static bool GetKeyCode( std::string keyName, int32_t& keyCode ) -{ - xkb_keymap* keyMap = NULL; - Ecore_Wl_Input* ecoreWlInput = NULL; - xkb_keysym_t sym = XKB_KEY_NoSymbol; - KeyCodeMap foundKeyCode; - - ecoreWlInput = ecore_wl_input_get(); - if( !ecoreWlInput ) - { - DALI_LOG_ERROR( "Failed to get Ecore_Wl_Input in WidgetView\n" ); - return false; - } - - keyMap = ecore_wl_input_keymap_get( ecoreWlInput ); - if( !keyMap ) - { - DALI_LOG_ERROR( "Failed to get keymap in WidgetView\n" ); - return false; - } - - sym = xkb_keysym_from_name( keyName.c_str(), XKB_KEYSYM_NO_FLAGS ); - if( sym == XKB_KEY_NoSymbol ) - { - DALI_LOG_ERROR( "Failed to get keysym in WidgetView\n" ); - return false; - } - - foundKeyCode.keySym = sym; - foundKeyCode.isKeyCode = false; - xkb_keymap_key_for_each( keyMap, FindKeyCode, &foundKeyCode ); - keyCode = static_cast< int32_t >( foundKeyCode.keyCode ); - return true; -} - -static void OnBufferUpdated( struct tizen_remote_surface *surface, uint32_t type, struct wl_buffer *buffer, - int32_t img_file_fd, uint32_t img_file_size, uint32_t time, struct wl_array *keys, - const char *appid, const char *instance_id, const int pid, void *data) -{ - Dali::WidgetView::Internal::WidgetView* widgetView = static_cast< Dali::WidgetView::Internal::WidgetView* >( data ); - - if( widgetView ) - { - if( !widgetView->IsWidgetImageView() ) - { - tizen_remote_surface_transfer_visibility( surface, TIZEN_REMOTE_SURFACE_VISIBILITY_TYPE_VISIBLE); - - widgetView->CreateWidgetImageView(); - widgetView->ConnectSignal( surface ); - } - - //get tbm surface from buffer - tbm_surface_h tbmSurface = static_cast< tbm_surface_h >( wl_buffer_get_user_data( buffer ) ); - widgetView->UpdateImageSource( tbmSurface ); - } - - if( preBuffer != NULL && tizen_remote_surface_get_version( surface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION ) - { - tizen_remote_surface_release( surface, preBuffer ); - tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer ); - tbm_surface_internal_unref( preTbmSurface ); - wl_buffer_destroy( preBuffer ); - } - - remoteSurface = surface; - preBuffer = buffer; - - close( img_file_fd ); -} - -static void OnBufferAdded( const char *appid, const char *instance_id, const int pid, void *data ) -{ -} - -static void OnSurfaceRemoved( const char *appid, const char *instance_id, const int pid, void *data ) -{ - Dali::WidgetView::Internal::WidgetView* widgetView = static_cast< Dali::WidgetView::Internal::WidgetView* >( data ); - - if( widgetView && !widgetView->IsWidgetFaulted() ) - { - widgetView->CloseRemoteSurface(); - widgetView->RemoveWidgetImage(); - } -} - -} // unnamed namespace - -Dali::WidgetView::WidgetView WidgetView::New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) -{ - // Create the implementation, temporarily owned on stack - IntrusivePtr< WidgetView > internalWidgetView = new WidgetView( widgetId, contentInfo, width, height, updatePeriod ); - - // Pass ownership to CustomActor - Dali::WidgetView::WidgetView widgetView( *internalWidgetView ); - - // Second-phase init of the implementation - // This can only be done after the CustomActor connection has been made... - internalWidgetView->Initialize(); - - return widgetView; -} - -WidgetView::WidgetView() -: Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS ) ), - mWidgetId(), - mInstanceId(), - mContentInfo(), - mTitle(), - mWidth( 0 ), - mHeight( 0 ), - mPid( 0 ), - mUpdatePeriod( 0.0 ), - mPreviewVisible( true ), - mLoadingTextVisible( true ), - mLoadingTextString(), - mRetryTextVisible( true ), - mRetryTextString(), - mRetryState( false ), - mPermanentDelete( false ), - mWatcherHandle( NULL ), - mRemoteSurface( NULL ) -{ -} - -WidgetView::WidgetView( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) -: Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS ) ), - mWidgetId( widgetId ), - mInstanceId(), - mContentInfo( contentInfo ), - mTitle(), - mWidth( width ), - mHeight( height ), - mPid( 0 ), - mUpdatePeriod( updatePeriod ), - mPreviewVisible( true ), - mLoadingTextVisible( true ), - mLoadingTextString(), - mRetryTextVisible( true ), - mRetryTextString(), - mRetryState( false ), - mPermanentDelete( false ), - mWatcherHandle( NULL ), - mRemoteSurface( NULL ) -{ -} - -WidgetView::~WidgetView() -{ -} - -bool WidgetView::PauseWidget() -{ - int ret = widget_instance_pause( mInstanceId.c_str() ); - if( ret < 0 ) - { - DALI_LOG_ERROR( "WidgetView::PauseWidget: Fail to pause widget(%s, %s) [%d]\n", mWidgetId.c_str(), mInstanceId.c_str(), ret ); - return false; - } - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::PauseWidget: Widget is paused (%s, %s)\n", mWidgetId.c_str(), mInstanceId.c_str() ); - - return true; -} - -bool WidgetView::ResumeWidget() -{ - int ret = widget_instance_resume( mInstanceId.c_str() ); - if( ret < 0 ) - { - DALI_LOG_ERROR( "WidgetView::ResumeWidget: Fail to resume widget(%s, %s) [%d]\n", mWidgetId.c_str(), mInstanceId.c_str(), ret ); - return false; - } - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ResumeWidget: Widget is resumed (%s, %s)\n", mWidgetId.c_str(), mInstanceId.c_str() ); - - return true; -} - -const std::string& WidgetView::GetWidgetId() const -{ - return mWidgetId; -} - -const std::string& WidgetView::GetInstanceId() const -{ - return mInstanceId; -} - -const std::string& WidgetView::GetContentInfo() -{ - widget_instance_h instance; - char* contentInfo = NULL; - - mContentInfo.clear(); - - if( mWidgetId.empty() || mInstanceId.empty() ) - { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetContentInfo: Widget id (%s) or instance id (%s) is invalid.\n", mWidgetId.c_str(), mInstanceId.c_str() ); - return mContentInfo; - } - - instance = widget_instance_get_instance( mWidgetId.c_str(), mInstanceId.c_str() ); - if( !instance ) - { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetContentInfo: widget_instance_get_instance is failed. [%s]\n", mInstanceId.c_str() ); - return mContentInfo; - } - - if( widget_instance_get_content( instance, &contentInfo ) < 0 ) - { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetContentInfo: Failed to get content of widget. [%s]\n", mInstanceId.c_str() ); - return mContentInfo; - } - - mContentInfo = reinterpret_cast< char* >( contentInfo ); - - return mContentInfo; -} - -const std::string& WidgetView::GetTitle() -{ - //ToDo: We should add some codes by considering widget_viewer_evas - if( mTitle.empty() ) - { - mTitle = widget_service_get_name( mWidgetId.c_str(), NULL ); - } - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetTitle: title = %s\n", mTitle.c_str() ); - - return mTitle; -} - -float WidgetView::GetUpdatePeriod() const -{ - return mUpdatePeriod; -} - -bool WidgetView::CancelTouchEvent() -{ - if( mRemoteSurface ) - { - tizen_remote_surface_transfer_touch_cancel( mRemoteSurface ); - return true; - } - - return false; -} - -void WidgetView::SetPreviewVisible( bool visible ) -{ - if( mPreviewImage && mPreviewVisible != visible ) - { - mPreviewVisible = visible; - mPreviewImage.SetVisible( visible ); - } -} - -bool WidgetView::IsPreviewVisible() -{ - return mPreviewVisible; -} - -void WidgetView::SetLoadingTextVisible( bool visible ) -{ - if( mLoadingText && mLoadingTextVisible != visible ) - { - mLoadingTextVisible = visible; - - if( visible ) - { - mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT, - ( mLoadingTextString.empty() )? GET_LOCALE_TEXT( "IDS_ST_POP_LOADING_ING" ) : mLoadingTextString ); - } - mLoadingText.SetVisible( visible ); - } -} - -void WidgetView::SetRetryTextVisible( bool visible ) -{ - if( mRetryText && mRetryTextVisible != visible ) - { - mRetryTextVisible = visible; - - if( visible ) - { - mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT, - ( mRetryTextString.empty() )? GET_LOCALE_TEXT( "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" ) : mRetryTextString ); - } - mRetryText.SetVisible( visible ); - } -} - -bool WidgetView::IsLoadingTextVisible() -{ - return mLoadingTextVisible; -} - -bool WidgetView::IsRetryTextVisible() -{ - return mRetryTextVisible; -} - -void WidgetView::ActivateFaultedWidget() -{ - if( mPid < 0 ) - { - // Enable preview and loading text - ShowRetryState( false ); - ShowLoadingState( true ); - - // launch widget again - mPid = widget_instance_launch( mInstanceId.c_str(), (char *)mContentInfo.c_str(), mWidth, mHeight ); - if( mPid < 0) - { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ActivateFaultedWidget: widget_instance_launch is failed. [%s]\n", mWidgetId.c_str() ); - - ShowLoadingState( false ); - ShowRetryState( true ); - - // Emit signal - Dali::WidgetView::WidgetView handle( GetOwner() ); - mWidgetCreationAbortedSignal.Emit( handle ); - - return; - } - - screen_connector_toolkit_ops ops; - ops.updated_cb = OnBufferUpdated; - ops.removed_cb = OnSurfaceRemoved; - ops.added_cb = OnBufferAdded; - mWatcherHandle = screen_connector_toolkit_add(&ops, (char *)mInstanceId.c_str(), SCREEN_CONNECTOR_SCREEN_TYPE_WIDGET, this); - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ActivateFaultedWidget: widget_instance_launch is called. [%s, mPid = %d]\n", mWidgetId.c_str(), mPid ); - } -} - -bool WidgetView::IsWidgetFaulted() -{ - return mPid < 0 ? true : false; -} - -void WidgetView::SetPermanentDelete( bool permanentDelete ) -{ - mPermanentDelete = permanentDelete; -} - -bool WidgetView::IsPermanentDelete() -{ - return mPermanentDelete; -} - -void WidgetView::CreateWidgetImageView() -{ - Any source; - mImageSource = Dali::NativeImageSource::New( source ); - Dali::NativeImage image = Dali::NativeImage::New( *mImageSource ); - - mWidgetImageView = Dali::Toolkit::ImageView::New( image ); - - mWidgetImageView.SetParentOrigin( ParentOrigin::CENTER ); - mWidgetImageView.SetAnchorPoint( AnchorPoint::CENTER ); - mWidgetImageView.SetSize( mWidth, mHeight ); - - if( !mWidgetImagePropertyMap.Empty() ) - { - mWidgetImageView.SetProperty( Toolkit::ImageView::Property::IMAGE, mWidgetImagePropertyMap ); - } - - Self().Add( mWidgetImageView ); - - //EFL app should be pre multiplied image. - mWidgetImageView.SetProperty( Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true ); - - // Disable preview and text - ShowLoadingState( false ); - - // Emit signal - Dali::WidgetView::WidgetView handle( GetOwner() ); - mWidgetAddedSignal.Emit( handle ); - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::CreateWidgetImageView: Widget image is added.\n" ); -} - -void WidgetView::RemoveWidgetImage() -{ - if( mWidgetImageView ) - { - mWidgetImageView.SetVisible( false ); - mWidgetImageView.Reset(); - - ShowRetryState( true ); - - Dali::WidgetView::WidgetView handle( GetOwner() ); - mWidgetDeletedSignal.Emit( handle ); - } - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::RemoveWidgetImage: Widget image is removed.\n" ); -} - -void WidgetView::TerminateWidget() -{ - if( !mWidgetId.empty() && !mInstanceId.empty() ) - { - widget_instance_terminate( mInstanceId.c_str() ); - - if( mPermanentDelete ) - { - widget_instance_destroy( mInstanceId.c_str() ); - } - - Dali::WidgetView::WidgetView handle( GetOwner() ); - mWidgetTerminatedSignal.Emit( handle ); - mWidgetDeletedSignal.Emit( handle ); - - mWidgetId.clear(); - mInstanceId.clear(); - - CloseRemoteSurface(); - } - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::TerminateWidget: Widget is terminated/destroyed and deleted signal is emitted.\n" ); - -} - -void WidgetView::SendWidgetEvent( int event ) -{ - Dali::WidgetView::WidgetView handle( GetOwner() ); - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::SendWidgetEvent: event = %d widget = %s\n", event, mWidgetId.c_str() ); - - // Emit signal - switch( event ) - { - case WIDGET_INSTANCE_EVENT_UPDATE: - case WIDGET_INSTANCE_EVENT_EXTRA_UPDATED: - { - mWidgetContentUpdatedSignal.Emit( handle ); - break; - } - case WIDGET_INSTANCE_EVENT_PERIOD_CHANGED: - { - mWidgetUpdatePeriodChangedSignal.Emit( handle ); - break; - } - case WIDGET_INSTANCE_EVENT_FAULT: - { - mWidgetFaultedSignal.Emit( handle ); - CloseRemoteSurface(); - RemoveWidgetImage(); - break; - } - default: - { - break; - } - } -} - -bool WidgetView::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ) -{ - Dali::BaseHandle handle( object ); - - bool connected( true ); - Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::DownCast( handle ); - - if( strcmp( signalName.c_str(), SIGNAL_WIDGET_ADDED ) == 0 ) - { - widgetView.WidgetAddedSignal().Connect( tracker, functor ); - } - else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_DELETED ) == 0 ) - { - widgetView.WidgetDeletedSignal().Connect( tracker, functor ); - } - else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_CREATION_ABORTED ) == 0 ) - { - widgetView.WidgetCreationAbortedSignal().Connect( tracker, functor ); - } - else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_CONTENT_UPDATED ) == 0 ) - { - widgetView.WidgetContentUpdatedSignal().Connect( tracker, functor ); - } - else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_UPDATE_PERIOD_CHANGED ) == 0 ) - { - widgetView.WidgetUpdatePeriodChangedSignal().Connect( tracker, functor ); - } - else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_FAULTED ) == 0 ) - { - widgetView.WidgetFaultedSignal().Connect( tracker, functor ); - } - else - { - // signalName does not match any signal - connected = false; - } - - return connected; -} - -bool WidgetView::DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes ) -{ - bool ret = true; - - Dali::BaseHandle handle( object ); - Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::DownCast( handle ); - - if( !widgetView ) - { - return false; - } - - WidgetView& impl = GetImplementation( widgetView ); - - if( strcmp( actionName.c_str(), ACTION_WIDGETVIEW_PAUSE_WIDGET ) == 0 ) - { - impl.PauseWidget(); - } - else if( strcmp( actionName.c_str(), ACTION_WIDGETVIEW_RESUME_WIDGET ) == 0 ) - { - impl.ResumeWidget(); - } - else if( strcmp( actionName.c_str(), ACTION_WIDGETVIEW_CANCEL_TOUCH_EVENT ) == 0 ) - { - impl.CancelTouchEvent(); - } - else if( strcmp( actionName.c_str(), ACTION_WIDGETVIEW_ACTIVATE_FAULTED_WIDGET ) == 0 ) - { - impl.ActivateFaultedWidget(); - } - else - { - ret = false; - } - - return ret; -} - -void WidgetView::SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ) -{ - Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::DownCast( Dali::BaseHandle( object ) ); - - if( widgetView ) - { - WidgetView& impl = GetImplementation( widgetView ); - - switch( index ) - { - case Dali::WidgetView::WidgetView::Property::PREVIEW: - { - bool previewEnabled; - - if( value.Get( previewEnabled ) ) - { - impl.SetPreviewVisible( previewEnabled ); - } - break; - } - case Dali::WidgetView::WidgetView::Property::LOADING_TEXT: - { - bool textEnabled; - Property::Map map; - - if( value.Get( textEnabled ) ) - { - impl.SetLoadingTextVisible( textEnabled ); - } - else if( value.Get( map ) ) - { - impl.SetLoadingTextPropertyMap( map ); - } - break; - } - case Dali::WidgetView::WidgetView::Property::PERMANENT_DELETE: - { - bool permanent; - if( value.Get( permanent ) ) - { - impl.SetPermanentDelete( permanent ); - } - break; - } - case TERMINATE_WIDGET: - { - bool del = false; - if( value.Get( del ) && del ) - { - impl.TerminateWidget(); - } - break; - } - case RETRY_TEXT: - { - Property::Map map; - - if( value.Get( map ) ) - { - impl.SetRetryTextPropertyMap( map ); - } - break; - } - case WIDGET_IMAGE: - { - Property::Map map; - if( value.Get( map ) ) - { - impl.SetWidgetImagePropertyMap( map ); - } - break; - } - } - } -} - -Property::Value WidgetView::GetProperty( BaseObject* object, Property::Index index ) -{ - Property::Value value; - Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::DownCast( Dali::BaseHandle( object ) ); - - if( widgetView ) - { - WidgetView& impl = GetImplementation( widgetView ); - - switch( index ) - { - case Dali::WidgetView::WidgetView::Property::WIDGET_ID: - { - value = impl.GetWidgetId(); - break; - } - case Dali::WidgetView::WidgetView::Property::INSTANCE_ID: - { - value = impl.GetInstanceId(); - break; - } - case Dali::WidgetView::WidgetView::Property::CONTENT_INFO: - { - value = impl.GetContentInfo(); - break; - } - case Dali::WidgetView::WidgetView::Property::TITLE: - { - value = impl.GetTitle(); - break; - } - case Dali::WidgetView::WidgetView::Property::UPDATE_PERIOD: - { - value = impl.GetUpdatePeriod(); - break; - } - case Dali::WidgetView::WidgetView::Property::PREVIEW: - { - value = impl.IsPreviewVisible(); - break; - } - case Dali::WidgetView::WidgetView::Property::LOADING_TEXT: - { - value = impl.IsLoadingTextVisible(); - break; - } - case Dali::WidgetView::WidgetView::Property::WIDGET_STATE_FAULTED: - { - value = impl.IsWidgetFaulted(); - break; - } - case Dali::WidgetView::WidgetView::Property::PERMANENT_DELETE: - { - value = impl.IsPermanentDelete(); - break; - } - } - } - - return value; -} - -Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetAddedSignal() -{ - return mWidgetAddedSignal; -} - -Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetDeletedSignal() -{ - return mWidgetDeletedSignal; -} - -Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetCreationAbortedSignal() -{ - return mWidgetCreationAbortedSignal; -} - -Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetContentUpdatedSignal() -{ - return mWidgetContentUpdatedSignal; -} - -Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetUpdatePeriodChangedSignal() -{ - return mWidgetUpdatePeriodChangedSignal; -} - -Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetFaultedSignal() -{ - return mWidgetFaultedSignal; -} - -Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetTerminatedSignal() -{ - return mWidgetTerminatedSignal; -} - -void WidgetView::OnInitialize() -{ - char* instanceId = NULL; - char* previewPath = NULL; - std::string previewImage; - widget_size_type_e sizeType; - screen_connector_toolkit_ops ops; - - int ret = widget_instance_create( mWidgetId.c_str(), &instanceId ); - if( ret < 0 || !instanceId ) - { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_create is failed [%s].\n", mWidgetId.c_str() ); - return; - } - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_create is called. [widget id = %s, instance id = %s]\n", - mWidgetId.c_str(), instanceId ); - - mInstanceId = instanceId; - - // Preview image - widget_service_get_size_type( mWidth, mHeight, &sizeType ); - - previewPath = widget_service_get_preview_image_path( mWidgetId.c_str(), sizeType ); - if( previewPath ) - { - previewImage = previewPath; - free( previewPath ); - } - else - { - previewImage = WIDGET_VIEW_RESOURCE_DEFAULT_IMG; - } - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: preview image path = %s\n", previewImage.c_str() ); - - - mPreviewActor = Dali::Actor::New(); - mPreviewActor.SetParentOrigin( ParentOrigin::CENTER ); - mPreviewActor.SetAnchorPoint( AnchorPoint::CENTER ); - mPreviewActor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - - mPreviewImage = Toolkit::ImageView::New( previewImage ); - mPreviewImage.SetParentOrigin( ParentOrigin::CENTER ); - mPreviewImage.SetAnchorPoint( AnchorPoint::CENTER ); - mPreviewImage.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - - Self().SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); - Self().SetSize( mWidth, mHeight ); - - Self().Add( mPreviewActor ); - mPreviewActor.Add( mPreviewImage ); - - mStateTextActor = Dali::Actor::New(); - mStateTextActor.SetParentOrigin( ParentOrigin::CENTER ); - mStateTextActor.SetAnchorPoint( AnchorPoint::CENTER ); - mStateTextActor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - - // Loading text - mLoadingText = Toolkit::TextLabel::New( ( mLoadingTextString.empty() )? GET_LOCALE_TEXT( "IDS_ST_POP_LOADING_ING" ) : mLoadingTextString ); - mLoadingText.SetParentOrigin( ParentOrigin::CENTER ); - mLoadingText.SetAnchorPoint( AnchorPoint::CENTER ); - mLoadingText.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); - mLoadingText.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); - mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Dali::Color::WHITE ); - mLoadingText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, "Bold" ); - mLoadingText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, TextPixelToPointSize( DEFAULT_FONT_PIXEL_SIZE ) ); - - mPreviewActor.Add( mStateTextActor ); - mStateTextActor.Add( mLoadingText ); - - // Retry text - mRetryText = Toolkit::TextLabel::New( ( mRetryTextString.empty() )? GET_LOCALE_TEXT( "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" ) : mRetryTextString ); - mRetryText.SetParentOrigin( ParentOrigin::CENTER ); - mRetryText.SetAnchorPoint( AnchorPoint::CENTER ); - mRetryText.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); - mRetryText.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); - mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Dali::Color::WHITE ); - mRetryText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, "Bold" ); - mRetryText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, TextPixelToPointSize( DEFAULT_FONT_PIXEL_SIZE ) ); - - mStateTextActor.Add( mRetryText ); - mRetryText.SetVisible( false ); - - // launch widget - mPid = widget_instance_launch( instanceId, (char *)mContentInfo.c_str(), mWidth, mHeight ); - if( mPid < 0) - { - - ShowLoadingState( false ); - ShowRetryState( true ); - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_launch is failed. [%s]\n", mWidgetId.c_str() ); - - // Emit signal - Dali::WidgetView::WidgetView handle( GetOwner() ); - mWidgetCreationAbortedSignal.Emit( handle ); - - return; - } - - ops.updated_cb = OnBufferUpdated; - ops.removed_cb = OnSurfaceRemoved; - ops.added_cb = OnBufferAdded; - mWatcherHandle = screen_connector_toolkit_add(&ops, (char *)instanceId, SCREEN_CONNECTOR_SCREEN_TYPE_WIDGET, this); - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_launch is called. [%s, mPid = %d]\n", mWidgetId.c_str(), mPid ); - -} - -void WidgetView::OnStageConnection( int depth ) -{ - Control::OnStageConnection( depth ); -} - -void WidgetView::OnStageDisconnection() -{ - Control::OnStageDisconnection(); -} - -void WidgetView::OnSizeSet( const Vector3& targetSize ) -{ - if( mWidgetImageView ) - { - mWidgetImageView.SetSize( targetSize ); - } -} - -bool WidgetView::IsWidgetImageView() -{ - return ( mWidgetImageView )? true: false; -} - -void WidgetView::UpdateImageSource( tbm_surface_h source ) -{ - mImageSource = Dali::NativeImageSource::New( source ); - Dali::NativeImage image = Dali::NativeImage::New( *mImageSource ); - - if( mWidgetImageView ) - { - mWidgetImageView.SetImage( image ); - mWidgetImageView.SetProperty( Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true ); - } -} - -void WidgetView::ConnectSignal( tizen_remote_surface* surface ) -{ - if( mWidgetImageView && surface ) - { - mRemoteSurface = surface; - - Self().TouchSignal().Connect( this, &WidgetView::OnTouch ); - Self().WheelEventSignal().Connect( this, &WidgetView::OnWheelEvent ); - } -} - -bool WidgetView::OnTouch( Dali::Actor actor, const Dali::TouchData& event ) -{ - if( event.GetPointCount() == 0 ) - { - return false; - } - - if( mRemoteSurface == NULL ) - { - return false; - } - - DevelDevice::Class::Type deviceType = DevelTouchData::GetDeviceClass( event, 0 ); - if( deviceType == DevelDevice::Class::MOUSE ) - { - return MouseEvent( event ); - } - else if( deviceType == DevelDevice::Class::TOUCH ) - { - return TouchEvent( event ); - } - - return false; -} - -bool WidgetView::OnWheelEvent( Dali::Actor actor, const Dali::WheelEvent& event ) -{ - if( mRemoteSurface == NULL ) - { - return false; - } - //ToDo: We should check TIZEN_INPUT_DEVICE_CLAS_MOUSE - tizen_remote_surface_transfer_mouse_wheel( mRemoteSurface, - event.direction, - event.z, - TIZEN_INPUT_DEVICE_CLAS_MOUSE, - TIZEN_INPUT_DEVICE_SUBCLAS_NONE, - "", - event.timeStamp - ); - return false; -} - -bool WidgetView::OnKeyEvent( const Dali::KeyEvent& event ) -{ - if( mRemoteSurface == NULL ) - { - return false; - } - - tizen_remote_surface_event_type type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_NONE; - - switch( event.state ) - { - case Dali::KeyEvent::Down: - { - type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_KEY_DOWN; - break; - } - case Dali::KeyEvent::Up: - { - type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_KEY_UP; - break; - } - case Dali::KeyEvent::Last: - { - break; - } - default: - { - return false; - } - } - - int32_t keyCode; - if( GetKeyCode( event.keyPressedName, keyCode ) == false ) - { - return false; - } - - tizen_remote_surface_transfer_key_event( mRemoteSurface, - type, - keyCode, - Dali::DevelKeyEvent::GetDeviceClass( event ), - Dali::DevelKeyEvent::GetDeviceSubclass( event ), - "", - static_cast< uint32_t >( event.time ) - ); - - return false; -} - -Vector3 WidgetView::GetNaturalSize() -{ - Vector3 size; - size.x = mWidth; - size.y = mHeight; - - if( size.x > 0 && size.y > 0 ) - { - size.z = std::min( size.x, size.y ); - return size; - } - else - { - return Control::GetNaturalSize(); - } -} - -float WidgetView::GetHeightForWidth( float width ) -{ - if( mWidth > 0 && mHeight > 0 ) - { - return GetHeightForWidthBase( width ); - } - else - { - return Control::GetHeightForWidthBase( width ); - } -} - -float WidgetView::GetWidthForHeight( float height ) -{ - if( mWidth > 0 && mHeight > 0 ) - { - return GetWidthForHeightBase( height ); - } - else - { - return Control::GetWidthForHeightBase( height ); - } -} - -void WidgetView::CloseRemoteSurface() -{ - if( mWatcherHandle != NULL ) - { - if( remoteSurface != NULL && preBuffer != NULL && tizen_remote_surface_get_version( remoteSurface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION ) - { - tizen_remote_surface_release( remoteSurface, preBuffer ); - tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer ); - tbm_surface_internal_unref( preTbmSurface ); - wl_buffer_destroy( preBuffer ); - preBuffer = NULL; - } - - screen_connector_toolkit_remove( mWatcherHandle ); - mWatcherHandle = NULL; - mRemoteSurface = NULL; - mPid = -1; - } -} - -void WidgetView::ShowLoadingState( bool show ) -{ - if( mPreviewImage && mPreviewVisible ) - { - mPreviewImage.SetVisible( show ); - } - - if( mLoadingText && mLoadingTextVisible ) - { - mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT, - ( mLoadingTextString.empty() )? GET_LOCALE_TEXT( "IDS_ST_POP_LOADING_ING" ) : mLoadingTextString ); - mLoadingText.SetVisible( show ); - } -} - -void WidgetView::ShowRetryState( bool show ) -{ - if( mPreviewImage && mPreviewVisible ) - { - mPreviewImage.SetVisible( false ); - } - - if( mRetryText && mRetryTextVisible ) - { - mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT, - ( mRetryTextString.empty() )? GET_LOCALE_TEXT( "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" ) : mRetryTextString ); - mRetryText.SetVisible( show ); - mRetryState = show; - } -} - -void WidgetView::SetLoadingTextPropertyMap( Property::Map map ) -{ - if( mLoadingText ) - { - Property::Value* loadingText = map.Find( STATE_TEXT ); - std::string text; - if( loadingText && loadingText->Get( text ) ) - { - mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT, text ); - mLoadingTextString = text; - } - - Property::Value* fontStyle = map.Find( FONT_STYLE ); - std::string style; - - if( fontStyle && fontStyle->Get( style ) ) - { - mLoadingText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, style ); - } - - Property::Value* textPointSize = map.Find( TEXT_POINT_SIZE ); - float size = 0.f; - - if( textPointSize && textPointSize->Get( size ) ) - { - mLoadingText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, size ); - } - - Property::Value* textColor = map.Find( TEXT_COLOR ); - Vector4 color; - - if( textColor && textColor->Get( color ) ) - { - mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, color ); - } - } -} - -void WidgetView::SetRetryTextPropertyMap( Property::Map map ) -{ - if( mRetryText ) - { - Property::Value* retryText = map.Find( STATE_TEXT ); - std::string text; - if( retryText && retryText->Get( text ) ) - { - mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT, text ); - mRetryTextString = text; - } - - Property::Value* fontStyle = map.Find( FONT_STYLE ); - std::string style; - - if( fontStyle && fontStyle->Get( style ) ) - { - mRetryText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, style ); - } - - Property::Value* textPointSize = map.Find( TEXT_POINT_SIZE ); - float size = 0.f; - - if( textPointSize && textPointSize->Get( size ) ) - { - mRetryText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, size ); - } - - Property::Value* textColor = map.Find( TEXT_COLOR ); - Vector4 color; - if( textColor && textColor->Get( color ) ) - { - mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, color ); - } - - Property::Value* textVisible = map.Find( TEXT_VISIBLE ); - bool visible = true; - if( textVisible && textVisible->Get( visible ) ) - { - SetRetryTextVisible( visible ); - } - } -} - -void WidgetView::SetWidgetImagePropertyMap( Property::Map map ) -{ - mWidgetImagePropertyMap = map; - if( mWidgetImageView ) - { - mWidgetImageView.SetProperty( Toolkit::ImageView::Property::IMAGE, map ); - } -} - -float WidgetView::TextPixelToPointSize( int pixelSize ) -{ - Dali::Vector2 dpi = Dali::Stage::GetCurrent().GetDpi(); - float meanDpi = (dpi.height + dpi.width) / 2.0f; - - return (pixelSize * 72.0f) / meanDpi; -} - -void WidgetView::MouseIn( const Dali::TouchData& event ) -{ - Vector2 localPos = event.GetLocalPosition( 0 ); - - tizen_remote_surface_transfer_mouse_event( mRemoteSurface, - TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_IN, - 0, - 0, - (int)localPos.x, - (int)localPos.y, - 0, - 0, - 0, - 0, - TIZEN_INPUT_DEVICE_CLAS_MOUSE, - DevelTouchData::GetDeviceSubclass( event, 0 ), - "", - event.GetTime() - ); -} - -void WidgetView::MouseOut( const Dali::TouchData& event ) -{ - tizen_remote_surface_transfer_mouse_event( mRemoteSurface, - TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_OUT, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - TIZEN_INPUT_DEVICE_CLAS_MOUSE, - DevelTouchData::GetDeviceSubclass( event, 0 ), - "", - event.GetTime() - ); -} - -bool WidgetView::MouseEvent( const Dali::TouchData& event ) -{ - tizen_remote_surface_event_type type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_NONE; - int button = 1; - - switch( event.GetState( 0 ) ) - { - case Dali::PointState::UP: - { - type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_UP; - - if( mRetryState ) - { - ActivateFaultedWidget(); - return false; - } - - break; - } - case Dali::PointState::DOWN: - { - type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_DOWN; - MouseIn( event ); - - break; - } - case Dali::PointState::MOTION: - { - type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_MOVE; - button = 0 ; - break; - } - default: - { - return false; - } - } - - Vector2 localPos = event.GetLocalPosition( 0 ); - - tizen_remote_surface_transfer_mouse_event( mRemoteSurface, - type, - 0, - button, - (int)localPos.x, - (int)localPos.y, - wl_fixed_from_double( event.GetEllipseRadius( 0 ).x ), - wl_fixed_from_double( event.GetEllipseRadius( 0 ).y ), - wl_fixed_from_double( event.GetPressure( 0 ) ), - wl_fixed_from_double( event.GetAngle( 0 ).degree ), - TIZEN_INPUT_DEVICE_CLAS_MOUSE, - DevelTouchData::GetDeviceSubclass( event, 0 ), - "", - event.GetTime() - ); - - if( event.GetState( 0 ) == Dali::PointState::UP) - { - MouseOut( event ); - } - - return true; -} - -bool WidgetView::TouchEvent( const Dali::TouchData& event ) -{ - tizen_remote_surface_event_type type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_NONE; - int button = 1; - - switch( event.GetState( 0 ) ) - { - case Dali::PointState::UP: - { - type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_TOUCH_UP; - - if( mRetryState ) - { - ActivateFaultedWidget(); - return false; - } - - break; - } - case Dali::PointState::DOWN: - { - type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_TOUCH_DOWN; - - break; - } - case Dali::PointState::MOTION: - { - type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_TOUCH_MOVE; - button = 0; - break; - } - default: - { - return false; - } - } - - Vector2 localPos = event.GetLocalPosition( 0 ); - - tizen_remote_surface_transfer_touch_event( mRemoteSurface, - type, - 0, - button, - (int)localPos.x, - (int)localPos.y, - wl_fixed_from_double( event.GetEllipseRadius( 0 ).x ), - wl_fixed_from_double( event.GetEllipseRadius( 0 ).y ), - wl_fixed_from_double( event.GetPressure( 0 ) ), - wl_fixed_from_double( event.GetAngle( 0 ).degree ), - TIZEN_INPUT_DEVICE_CLAS_TOUCHSCREEN, - DevelTouchData::GetDeviceSubclass( event, 0 ), - "", - event.GetTime() - ); - return true; -} - -} // namespace Internal - -} // namespace WidgetView - -} // namespace Dali diff --git a/internal/widget_view/widget_view_impl.h b/internal/widget_view/widget_view_impl.h deleted file mode 100644 index 8d66248..0000000 --- a/internal/widget_view/widget_view_impl.h +++ /dev/null @@ -1,346 +0,0 @@ -#ifndef __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__ -#define __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__ - -/* - * Samsung API - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// INTERNAL INCLUDES -#include - -// EXTERNAL INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include - -namespace Dali -{ - -namespace WidgetView -{ - -namespace Internal -{ - -class WidgetView : public Toolkit::Internal::Control -{ -public: - - /** - * @copydoc Dali::WidgetView::WidgetView::New - */ - static Dali::WidgetView::WidgetView New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); - - /** - * @copydoc Dali::WidgetView::WidgetView::PauseWidget - */ - bool PauseWidget(); - - /** - * @copydoc Dali::WidgetView::WidgetView::ResumeWidget - */ - bool ResumeWidget(); - - /** - * @copydoc Dali::WidgetView::WidgetView::CancelTouchEvent - */ - bool CancelTouchEvent(); - - /** - * @copydoc Dali::WidgetView::WidgetView::ActivateFaultedWidget - */ - void ActivateFaultedWidget(); - - void SendWidgetEvent( int event ); - -public: // Internal API - - /** - * @brief Called when a property of an object of this type is set. - * @SINCE_1_1.38 - * @param[in] object The object whose property is set. - * @param[in] index The property index. - * @param[in] value The new property value. - */ - static void SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ); - - /** - * @brief Called to retrieve a property of an object of this type. - * @SINCE_1_1.38 - * @param[in] object The object whose property is to be retrieved. - * @param[in] index The property index. - * @return The current value of the property. - */ - static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex ); - - /** - * @brief Performs actions as requested using the action name. - * @SINCE_1_1.38 - * @param[in] object The object on which to perform the action. - * @param[in] actionName The action to perform. - * @param[in] attributes The attributes with which to perfrom this action. - * @return True if action has been accepted by this control - */ - static bool DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes ); - - static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ); - - const std::string& GetWidgetId() const; - - const std::string& GetInstanceId() const; - - const std::string& GetContentInfo(); - - const std::string& GetTitle(); - - float GetUpdatePeriod() const; - - void SetPreviewVisible( bool visible ); - - bool IsPreviewVisible(); - - void SetLoadingTextVisible( bool visible ); - - void SetRetryTextVisible( bool visible ); - - bool IsLoadingTextVisible(); - - bool IsRetryTextVisible(); - - bool IsWidgetFaulted(); - - void SetPermanentDelete( bool permanentDelete ); - - void RemoveWidgetImage(); - - bool IsPermanentDelete(); - - bool IsWidgetImageView(); - - void UpdateImageSource( tbm_surface_h source ); - - void CreateWidgetImageView(); - - void ConnectSignal( tizen_remote_surface* surface ); - - bool OnTouch( Dali::Actor actor, const Dali::TouchData& event ); - - bool OnWheelEvent( Dali::Actor actor, const Dali::WheelEvent& event ); - - void CloseRemoteSurface(); - - void SetLoadingTextPropertyMap( Dali::Property::Map map ); - - void SetRetryTextPropertyMap( Dali::Property::Map map ); - - void SetWidgetImagePropertyMap( Dali::Property::Map map ); - - void ShowLoadingState( bool show ); - - void ShowRetryState( bool show ); - - void TerminateWidget(); - - void MouseIn( const Dali::TouchData& event ); - - void MouseOut( const Dali::TouchData& event ); - - bool MouseEvent( const Dali::TouchData& event ); - - bool TouchEvent( const Dali::TouchData& event ); - -public: //Signals - - /** - * @copydoc Dali::WidgetView::WidgetView::WidgetAddedSignal - */ - Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetAddedSignal(); - - /** - * @copydoc Dali::WidgetView::WidgetView::WidgetDeletedSignal - */ - Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetDeletedSignal(); - - /** - * @copydoc Dali::WidgetView::WidgetView::WidgetCreationAbortedSignal - */ - Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetCreationAbortedSignal(); - - /** - * @copydoc Dali::WidgetView::WidgetView::WidgetContentUpdatedSignal - */ - Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetContentUpdatedSignal(); - - /** - * @copydoc Dali::WidgetView::WidgetView::WidgetUpdatePeriodChangedSignal - */ - Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetUpdatePeriodChangedSignal(); - - /** - * @copydoc Dali::WidgetView::WidgetView::WidgetFaultedSignal - */ - Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetFaultedSignal(); - - Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetTerminatedSignal(); - -protected: - - /** - * Construct a new WidgetView. - */ - WidgetView(); - - /** - * Construct a new WidgetView. - */ - WidgetView( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); - - /** - * A reference counted object may only be deleted by calling Unreference() - */ - virtual ~WidgetView(); - - float TextPixelToPointSize( int pixelSize ); - -private: // From Control - - /** - * @copydoc Toolkit::Control::OnInitialize() - */ - virtual void OnInitialize(); - - /** - * @copydoc Toolkit::Control::OnStageConnect() - */ - virtual void OnStageConnection( int depth ); - - /** - * @copydoc Toolkit::Control::OnStageDisconnection() - */ - virtual void OnStageDisconnection(); - - /** - * @copydoc Toolkit::Control::OnSizeSet() - */ - virtual void OnSizeSet( const Vector3& targetSize ); - - /** - * @copydoc Toolkit::Control::OnKeyEvent() - */ - virtual bool OnKeyEvent( const KeyEvent& event ); - - /** - * @copydoc Toolkit::Control::GetNaturalSize - */ - virtual Vector3 GetNaturalSize(); - - /** - * @copydoc Toolkit::Control::GetHeightForWidth() - */ - virtual float GetHeightForWidth( float width ); - - /** - * @copydoc Toolkit::Control::GetWidthForHeight() - */ - virtual float GetWidthForHeight( float height ); - -private: - - // Undefined - WidgetView( const WidgetView& ); - - // Undefined - WidgetView& operator= ( const WidgetView& ); - -private: - - Toolkit::ImageView mWidgetImageView; ///< Widget content - Toolkit::ImageView mPreviewImage; ///< Preview image - Toolkit::TextLabel mLoadingText; ///< Loading text - Toolkit::TextLabel mRetryText; ///< Retry text - Dali::Actor mPreviewActor; - Dali::Actor mStateTextActor; - Dali::NativeImageSourcePtr mImageSource; - - std::string mWidgetId; - std::string mInstanceId; - std::string mContentInfo; - std::string mTitle; - - int mWidth; - int mHeight; - int mPid; - float mUpdatePeriod; - - bool mPreviewVisible; - - bool mLoadingTextVisible; - std::string mLoadingTextString; - - bool mRetryTextVisible; - std::string mRetryTextString; - bool mRetryState; - - bool mPermanentDelete; - screen_connector_toolkit_h mWatcherHandle; - tizen_remote_surface* mRemoteSurface; - - Dali::Property::Map mWidgetImagePropertyMap; - - // Signals - Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetAddedSignal; - Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetDeletedSignal; - Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetCreationAbortedSignal; - Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetContentUpdatedSignal; - Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetUpdatePeriodChangedSignal; - Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetFaultedSignal; - - // Internal signal - Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetTerminatedSignal; -}; - -} // namespace Internal - -// Helpers for public-api forwarding methods - -inline Internal::WidgetView& GetImplementation( WidgetView& widgetView ) -{ - DALI_ASSERT_ALWAYS( widgetView ); - - Dali::RefObject& handle = widgetView.GetImplementation(); - - return static_cast( handle ); -} - -inline const Internal::WidgetView& GetImplementation( const WidgetView& widgetView ) -{ - DALI_ASSERT_ALWAYS( widgetView ); - - const Dali::RefObject& handle = widgetView.GetImplementation(); - - return static_cast( handle ); -} - -} // namespace WidgetView - -} // namespace Dali - -#endif // __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__ diff --git a/internal/widget_view_manager/widget_view_manager_impl.cpp b/internal/widget_view_manager/widget_view_manager_impl.cpp deleted file mode 100644 index d03a6e1..0000000 --- a/internal/widget_view_manager/widget_view_manager_impl.cpp +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Samsung API - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// CLASS HEADER -#include - -// INTERNAL INCLUDES -#include - -// EXTERNAL INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace Dali -{ - -namespace WidgetView -{ - -namespace Internal -{ - -namespace -{ - -#define SMACK_LABEL_LENGTH 255 - -#if defined(DEBUG_ENABLED) -Integration::Log::Filter* gWidgetViewManagerLogging = Integration::Log::Filter::New( Debug::Verbose, false, "LOG_WIDGET_VIEW_MANAGER" ); -#endif - -BaseHandle Create() -{ - return Dali::BaseHandle(); -} - -DALI_TYPE_REGISTRATION_BEGIN( Dali::WidgetView::WidgetViewManager, Dali::BaseHandle, Create ); - -static bool IsWidgetFeatureEnabled() -{ - static bool feature = false; - static bool retrieved = false; - int ret; - - if( retrieved == true ) - return feature; - - ret = system_info_get_platform_bool( "http://tizen.org/feature/shell.appwidget", &feature ); - if( ret != SYSTEM_INFO_ERROR_NONE ) - { - return false; - } - - retrieved = true; - - return feature; -} - -static bool CheckPrivilege( const char* privilege ) -{ - cynara* cynara; - int fd = 0; - int ret = 0; - char subjectLabel[SMACK_LABEL_LENGTH + 1] = ""; - char uid[10] = { 0, }; - const char* clientSession = ""; - - ret = cynara_initialize( &cynara, NULL ); - if( ret != CYNARA_API_SUCCESS ) - { - return false; - } - - fd = open( "/proc/self/attr/current", O_RDONLY ); - if( fd < 0 ) - { - cynara_finish( cynara ); - return false; - } - - ret = read( fd, subjectLabel, SMACK_LABEL_LENGTH ); - if( ret < 0 ) - { - close( fd ); - cynara_finish( cynara ); - return false; - } - - close( fd ); - - snprintf( uid, 10, "%d", getuid() ); - - ret = cynara_check( cynara, subjectLabel, clientSession, uid, privilege ); - if( ret != CYNARA_API_ACCESS_ALLOWED ) - { - cynara_finish( cynara ); - return false; - } - - cynara_finish( cynara ); - - return true; -} - -} // unnamed namespace - -WidgetViewManagerPtr WidgetViewManager::New( Application application, const std::string& name ) -{ - WidgetViewManagerPtr impl = new WidgetViewManager(); - - // Second-phase init of the implementation - if( impl->Initialize( application, name ) != WIDGET_ERROR_NONE ) - { - DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::New: Fail to create WidgetViewManager.\n" ); - return NULL; - } - - return impl; -} - -WidgetViewManager::WidgetViewManager() -{ -} - -WidgetViewManager::~WidgetViewManager() -{ - screen_connector_toolkit_fini(SCREEN_CONNECTOR_SCREEN_TYPE_WIDGET); - widget_instance_unlisten_event( WidgetViewManager::WidgetEventCallback ); - widget_instance_fini(); -} - -int WidgetViewManager::Initialize( Application application, const std::string& name ) -{ - if( !IsWidgetFeatureEnabled() ) - { - DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::Initialize: Widget feature is not enabled.\n" ); - return WIDGET_ERROR_NOT_SUPPORTED; - } - - if( !CheckPrivilege( "http://tizen.org/privilege/widget.viewer" ) ) - { - DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::Initialize: Privilege error.\n" ); - return WIDGET_ERROR_PERMISSION_DENIED; - } - - if( !bindtextdomain( PKGNAME, WIDGET_VIEWER_DALI_LOCALE ) ) - { - DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::Initialize: bindtextdomain error.\n" ); - } - - // Binds tizen remote surface manager & connects callback - if( screen_connector_toolkit_init(SCREEN_CONNECTOR_SCREEN_TYPE_WIDGET) < 0 ) - { - return WIDGET_ERROR_FAULT; - } - - // init widget service - widget_instance_init( name.c_str() ); - widget_instance_listen_event( WidgetViewManager::WidgetEventCallback, this ); - - DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::Initialize: success.\n" ); - - return WIDGET_ERROR_NONE; -} - -Dali::WidgetView::WidgetView WidgetViewManager::AddWidget( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) -{ - // Add a new widget view - Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::New( widgetId, contentInfo, width, height, updatePeriod ); - - std::string instanceId; - Property::Value value = widgetView.GetProperty( Dali::WidgetView::WidgetView::Property::INSTANCE_ID ); - value.Get( instanceId ); - - if( !instanceId.empty() ) - { - Dali::WidgetView::GetImplementation( widgetView ).WidgetTerminatedSignal().Connect( this, &WidgetViewManager::OnTerminatedWidget ); - - // Add to map - mWidgetViewContainer.insert( std::pair( instanceId, widgetView ) ); - } - - DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::AddWidget: success [%s]\n", widgetId.c_str() ); - - return widgetView; -} - -void WidgetViewManager::OnTerminatedWidget( Dali::WidgetView::WidgetView widgetView ) -{ - std::string instanceId; - Dali::Property::Value value = widgetView.GetProperty( Dali::WidgetView::WidgetView::Property::INSTANCE_ID ); - - if( value.Get( instanceId ) && !instanceId.empty() && mWidgetViewContainer.size() > 0 ) - { - WidgetViewIter iter = mWidgetViewContainer.find( instanceId ); - if( iter != mWidgetViewContainer.end() ) - { - mWidgetViewContainer.erase( iter ); - } - } - - DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::OnTerminatedWidget: Widget is deleted!\n" ); -} - -int WidgetViewManager::WidgetEventCallback( const char* widgetId, const char* instanceId, int event, void* data ) -{ - WidgetViewManager* widgetViewManager = static_cast< WidgetViewManager* >( data ); - - if( widgetViewManager->mWidgetViewContainer.size() > 0) - { - WidgetViewIter iter = widgetViewManager->mWidgetViewContainer.find( std::string( instanceId ) ); - if( iter != widgetViewManager->mWidgetViewContainer.end() ) - { - Dali::WidgetView::WidgetView widgetView = iter->second; - - Dali::WidgetView::GetImplementation( widgetView ).SendWidgetEvent( event ); - - return 0; - } - } - - DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::WidgetEventCallback: WidgetView is not found! [%s, %s]\n", widgetId, instanceId ); - - return 0; -} - -} // namespace Internal - -} // namespace WidgetView - -} // namespace Dali diff --git a/internal/widget_view_manager/widget_view_manager_impl.h b/internal/widget_view_manager/widget_view_manager_impl.h deleted file mode 100644 index 24f79df..0000000 --- a/internal/widget_view_manager/widget_view_manager_impl.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_MANAGER_H__ -#define __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_MANAGER_H__ - -/* - * Samsung API - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// INTERNAL INCLUDES -#include -#include - -// EXTERNAL INCLUDES -#include -#include - -namespace Dali -{ - -namespace WidgetView -{ - -namespace Internal -{ - -class WidgetViewManager; -typedef IntrusivePtr WidgetViewManagerPtr; - -class WidgetViewManager : public BaseObject, public ConnectionTracker -{ -public: - - /** - * @copydoc Dali::WidgetView::WidgetViewManager::New() - */ - static WidgetViewManagerPtr New( Application application, const std::string& name ); - - /** - * @copydoc Dali::WidgetView::WidgetViewManager::AddWidget() - */ - Dali::WidgetView::WidgetView AddWidget( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); - -private: - - /** - * Construct a new WidgetViewManager. - */ - WidgetViewManager(); - - /** - * A reference counted object may only be deleted by calling Unreference() - */ - virtual ~WidgetViewManager(); - - /** - * Initialize the WidgetViewManager - */ - int Initialize( Application application, const std::string& name ); - - static int WidgetEventCallback( const char* widgetId, const char* instanceId, int event, void* data ); - - /** - * The widgetView is removed from WidgetViewContainer - */ - void OnTerminatedWidget( Dali::WidgetView::WidgetView widgetView ); - -private: - - // Undefined - WidgetViewManager( const WidgetViewManager& ); - - // Undefined - WidgetViewManager& operator= ( const WidgetViewManager& ); - -private: - - typedef std::map WidgetViewContainer; - typedef WidgetViewContainer::iterator WidgetViewIter; - - WidgetViewContainer mWidgetViewContainer; -}; - -} // namespace Internal - -// Helpers for public-api forwarding methods - -inline Internal::WidgetViewManager& GetImplementation( WidgetViewManager& obj ) -{ - DALI_ASSERT_ALWAYS( obj ); - - Dali::BaseObject& handle = obj.GetBaseObject(); - - return static_cast( handle ); -} - -inline const Internal::WidgetViewManager& GetImplementation( const WidgetViewManager& obj ) -{ - DALI_ASSERT_ALWAYS( obj ); - - const Dali::BaseObject& handle = obj.GetBaseObject(); - - return static_cast( handle ); -} - -} // namespace WidgetView - -} // namespace Dali - -#endif // __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_MANAGER_H__ diff --git a/libwidget_viewer_dali.manifest b/libwidget_viewer_dali.manifest new file mode 100644 index 0000000..a76fdba --- /dev/null +++ b/libwidget_viewer_dali.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/packaging/widget-viewer-dali.spec b/packaging/widget-viewer-dali.spec new file mode 100644 index 0000000..ebfc6f5 --- /dev/null +++ b/packaging/widget-viewer-dali.spec @@ -0,0 +1,111 @@ +%bcond_with wayland + +Name: libwidget_viewer_dali +Summary: Library for developing the application +Version: 1.4.11 +Release: 1 +Group: System/Libraries +License: Flora-1.1 +Source0: %{name}-%{version}.tar.gz +BuildRequires: cmake +BuildRequires: gettext-tools +BuildRequires: pkgconfig +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(widget_service) +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-system-info) +BuildRequires: pkgconfig(libtbm) +BuildRequires: pkgconfig(dali-core) +BuildRequires: pkgconfig(dali-adaptor) +BuildRequires: pkgconfig(dali-toolkit) +BuildRequires: pkgconfig(cynara-client) +BuildRequires: pkgconfig(ecore-wayland) +BuildRequires: pkgconfig(wayland-tbm-client) +BuildRequires: pkgconfig(screen_connector_watcher) + +%description +API for creating a new instance of the widget and managing its life-cycle. + +############################## +# devel +############################## +%package devel +Summary: Development Library for widget Viewer Dali Application +Group: Development/Building +Requires: %{name} = %{version}-%{release} + +%description devel +Header and package configuration files for the widget viewer development + +############################## +# Preparation +############################## +%prep +%setup -q + +############################## +# Build +############################## +%build +PREFIX="/usr" +CXXFLAGS+=" -Wall -g -O2" +LDFLAGS+=" -Wl,--rpath=$PREFIX/lib -Wl,--as-needed" + +%ifarch %{arm} +CXXFLAGS+=" -D_ARCH_ARM_" +%endif + +cd %{_builddir}/%{name}-%{version}/build/tizen + +MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` +%cmake -DWIDGET_ENABLED=On \ + -DTZ_SYS_SHARE=/usr/share \ + -DFULLVER=%{version} \ + -DMAJORVER=${MAJORVER} \ + . + +make %{?jobs:-j%jobs} + +############################## +# Installation +############################## + +%install +rm -rf %{buildroot} +pushd build/tizen +%make_install + +############################## +# Post Install +############################## + +%post +/sbin/ldconfig +exit 0 + +############################## +# Post Uninstall +############################## + +%postun +/sbin/ldconfig +exit 0 + +############################## +# Files in Binary Packages +############################## + +%files +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{_libdir}/%{name}.so* +%license LICENSE +/usr/share/widget_viewer_dali/images/*.png +/usr/share/widget_viewer_dali/locale/*/LC_MESSAGES/* + +%files devel +%defattr(-,root,root,-) +%{_includedir}/widget_viewer_dali/* +%{_libdir}/pkgconfig/widget_viewer_dali.pc + +# End of a file diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt deleted file mode 100644 index 3e1f684..0000000 --- a/po/CMakeLists.txt +++ /dev/null @@ -1,77 +0,0 @@ -# for i18n - -SET(POFILES - ar.po - as.po - az.po - be_BY.po - bn_BD.po - bn.po - de.po - en_PH.po - en_US.po - es_ES.po - es_US.po - en.po - fa.po - fr.po - gu.po - hi.po - hy.po - id.po - it_IT.po - jv.po - ka.po - kk.po - km.po - kn.po - ko_KR.po - ky_KG.po - lo.po - ml.po - mn_MN.po - mr.po - ms.po - my_ZG.po - ne.po - or.po - pa.po - pt_BR.po - pt_PT.po - ru_RU.po - si.po - su_ID.po - ta.po - te.po - tg_TJ.po - th.po - tk_TM.po - tl.po - tr_TR.po - uk.po - ur.po - uz.po - vi.po - xh.po - zh_CN.po - zu.po -) - -SET(MSGFMT "/usr/bin/msgfmt") -FOREACH(pofile ${POFILES}) - SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile}) - MESSAGE(STATUS " ${pofile}") - GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE) - GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE) - SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo) - ADD_CUSTOM_COMMAND( - OUTPUT ${moFile} - COMMAND ${MSGFMT} -o ${moFile} ${absPofile} - DEPENDS ${absPofile} - ) - INSTALL(FILES ${moFile} - DESTINATION ${LOCALE_DIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo) - SET(moFiles ${moFiles} ${moFile}) -ENDFOREACH(pofile) - -ADD_CUSTOM_TARGET(locale ALL DEPENDS ${moFiles}) diff --git a/po/ar.po b/po/ar.po deleted file mode 100755 index 62bcd4c..0000000 --- a/po/ar.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "جارٍ التحميل..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "يتعذر تحميل البيانات. انقر لإعادة المحاولة." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "انقر هنا لتحميل بيانات التطبيق المصغر" - diff --git a/po/as.po b/po/as.po deleted file mode 100755 index 4f14965..0000000 --- a/po/as.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "লোড হৈ আছে..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ডাটা লোড কৰিবলৈ অক্ষম৷ পুনঃচেষ্টা কৰিবৰ বাবে টিপক।" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "ৱিজেট ডাটা লোড কৰিবলৈ ইয়াত টিপক" - diff --git a/po/az.po b/po/az.po deleted file mode 100755 index ae47346..0000000 --- a/po/az.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Yüklənir..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Məlumatları yükləmək mümkün deyil. Yenidən cəhd etmək üçün vurun" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Piktoq məl yükl üçün vur" - diff --git a/po/be_BY.po b/po/be_BY.po deleted file mode 100755 index dc565b9..0000000 --- a/po/be_BY.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Загрузка..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Unable to load data. Tap to retry." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Націс.тут для загр.дан.відж." - diff --git a/po/bn.po b/po/bn.po deleted file mode 100755 index 09d105d..0000000 --- a/po/bn.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "লোড হচ্ছে..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "তথ্য লোড করতে অক্ষম৷ পুনরায় চেষ্টা করতে ট্যাপ করুন৷" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "উইজেট তথ্য লোড করতে এখানে ট্যাপ করুন" - diff --git a/po/bn_BD.po b/po/bn_BD.po deleted file mode 100755 index cdea8b3..0000000 --- a/po/bn_BD.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "লোড হচ্ছে..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "তথ্য লোড করতে অক্ষম। পুনরায় চেষ্টা করতে ট্যাপ করুন।" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "উইজেটের তথ্য লোড করতে এখানে ট্যাপ করুন" - diff --git a/po/de.po b/po/de.po deleted file mode 100755 index 882b394..0000000 --- a/po/de.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Lädt..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Daten konnten nicht geladen werden. Für erneuten Versuch tippen" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Tippen und Widget-Daten laden." - diff --git a/po/en.po b/po/en.po deleted file mode 100755 index 3030f61..0000000 --- a/po/en.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Loading..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Unable to load data. Tap to retry." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Tap here to load widget data" - diff --git a/po/en_PH.po b/po/en_PH.po deleted file mode 100755 index 3030f61..0000000 --- a/po/en_PH.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Loading..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Unable to load data. Tap to retry." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Tap here to load widget data" - diff --git a/po/en_US.po b/po/en_US.po deleted file mode 100755 index 3030f61..0000000 --- a/po/en_US.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Loading..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Unable to load data. Tap to retry." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Tap here to load widget data" - diff --git a/po/es_ES.po b/po/es_ES.po deleted file mode 100755 index 9a1f90f..0000000 --- a/po/es_ES.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Cargando..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "No se pueden cargar datos. Pulse para volver a intentarlo." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Cargue aquí datos de widgets" - diff --git a/po/es_US.po b/po/es_US.po deleted file mode 100755 index 4877ea8..0000000 --- a/po/es_US.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Cargando..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "No es posible cargar los datos. Pulse para intentarlo de nuevo." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Pulse para cargar datos widget" - diff --git a/po/fa.po b/po/fa.po deleted file mode 100755 index 23d685e..0000000 --- a/po/fa.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "در حال دانلود..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "بارگیری داده ممکن نیست. برای امتحان مجدد ضربه بزنید." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "برای بارگیری داده ویجت ضربه بزنید" - diff --git a/po/fr.po b/po/fr.po deleted file mode 100755 index 5a2b7e2..0000000 --- a/po/fr.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Chargement en cours." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Impossible de charger les données. Appuyez pour réessayer." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "App. pr charger donn. widget" - diff --git a/po/gu.po b/po/gu.po deleted file mode 100755 index 6aca674..0000000 --- a/po/gu.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "લોડિંગ..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ડેટા લોડ કરવામાં અસમર્થ. ફરીથી પ્રયાસ કરવા માટે ટેપ કરો." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "વિજેટ ડેટા લોડ કરવા માટે અહીં ટેપ કરો" - diff --git a/po/hi.po b/po/hi.po deleted file mode 100755 index 3dc0197..0000000 --- a/po/hi.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "लोड हो रहा है..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "डाटा लोड करने में अक्षम। फिर से प्रयास करने हेतु टैप करें।" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "विजेट डाटा लोड करने हेतु यहां टैप करें" - diff --git a/po/hy.po b/po/hy.po deleted file mode 100755 index fe15a4b..0000000 --- a/po/hy.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Բեռնում է..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Անհնար է տվյալներ բեռնել: Թակեք՝ նորից փորձելու համար" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Թակ այստեղ՝ պտկրգրի տվ. բեռ." - diff --git a/po/id.po b/po/id.po deleted file mode 100755 index 62f3708..0000000 --- a/po/id.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Meloading…" - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Tidak dapat memuat data. Ketuk untuk mencoba lagi." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Ktuk sini utk muat dta wdgt" - diff --git a/po/it_IT.po b/po/it_IT.po deleted file mode 100755 index 910a09f..0000000 --- a/po/it_IT.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Caricamento..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Impossibile caricare i dati. Toccate per riprovare." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Toc. qui per caric. dati widget" - diff --git a/po/jv.po b/po/jv.po deleted file mode 100755 index 03d9b69..0000000 --- a/po/jv.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Lagi muat..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Ora bisa ngamot data. Tutul kanggo nyoba maneh." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Ttl iki nggo amot dt widget" - diff --git a/po/ka.po b/po/ka.po deleted file mode 100755 index c69f879..0000000 --- a/po/ka.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "იტვირთება..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "მონაცემთა ჩატვირთვა შეუძლებელია. შეეხეთ და გაიმეორეთ მცდელობა" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "შეეხეთ აქ, ვიჯეტის მონაცემ." - diff --git a/po/kk.po b/po/kk.po deleted file mode 100755 index 08c0a8f..0000000 --- a/po/kk.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Жазылуда..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Деректерді жүктеу мүмкін емес. Қайталау үшін түртіңіз" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Виджет дер. жүк-у үшін түрту" - diff --git a/po/km.po b/po/km.po deleted file mode 100755 index 2050a75..0000000 --- a/po/km.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "កំពុង​ផ្ទុក..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "មិន​អាច​ផ្ទុក​ទិន្នន័យ។ ប៉ះ​ដើម្បី​សាកល្បង​ម្ដងទៀត។" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "ប៉ះ​ទីនេះ ដើម្បី​ផ្ទុក​ទិន្នន័យ​វីដជីត" - diff --git a/po/kn.po b/po/kn.po deleted file mode 100755 index 5a8a768..0000000 --- a/po/kn.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "ಲೋಡಿಂಗ್..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ಡೇಟಾ ಲೋಡ್ ಮಾಡಲು ಅಸಮರ್ಥ. ಮರುಪ್ರಯತ್ನಿಸಲು ಒತ್ತಿ." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "ವಿಜೆಟ್ ಡೇಟಾ ಲೋಡ್‌ಗೆ ಇಲ್ಲಿ ತಟ್ಟಿ" - diff --git a/po/ko_KR.po b/po/ko_KR.po deleted file mode 100755 index ea79661..0000000 --- a/po/ko_KR.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "불러오는 중..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "데이터를 불러올 수 없습니다. 다시 시도하려면 누르세요." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "위젯 데이터를 불러오려면 여기를 누르세요" - diff --git a/po/ky_KG.po b/po/ky_KG.po deleted file mode 100755 index 21a7b60..0000000 --- a/po/ky_KG.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Жүктөлүүдө..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Unable to load data. Tap to retry." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Видж. маал. жүкт. муну бас" - diff --git a/po/lo.po b/po/lo.po deleted file mode 100755 index 05943b1..0000000 --- a/po/lo.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "ກຳລັງໂຫຼດ..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ບໍ່ສາມາດໂຫຼດຂໍ້ມູນໄດ້. ເຄາະເພື່ອລອງໃໝ່." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "ແຕະທີ່ນີ້ເພື່ອໂຫຼດຂໍ້ມູນວິດເຈັດ" - diff --git a/po/ml.po b/po/ml.po deleted file mode 100755 index e65be75..0000000 --- a/po/ml.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "ലോഡ്‌ ചെയ്യുന്നു..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ഡാറ്റ ലോഡുചെയ്യാന്‍ കഴിയുന്നില്ല. വീണ്ടും ശ്രമിക്കുന്നതിന് ടാപ്പുചെയ്യുക" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "വിജറ്റ് ഡാറ്റ ലോഡ് ചെയ്യാൻ ഇവിടെ സ്പർശിക്കുക" - diff --git a/po/mn_MN.po b/po/mn_MN.po deleted file mode 100755 index 0d515f7..0000000 --- a/po/mn_MN.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Ачаалж байна..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Өгөгдөл ачаалах боломжгүй. Товшиж дахин оролд" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Тоног. өгөг. ачаал. энд товш" - diff --git a/po/mr.po b/po/mr.po deleted file mode 100755 index 3bcf03b..0000000 --- a/po/mr.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "लोड होत आहे..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "डेटा लोड करण्यामध्‍ये अक्षम. पुनर्प्रयत्न करण्‍यासाठी टॅप करा." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "विजेट डेटा लोड करण्‍यास येथे टॅप करा" - diff --git a/po/ms.po b/po/ms.po deleted file mode 100755 index 413d227..0000000 --- a/po/ms.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Memuat…" - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Tidak dapat memuatkan data. Ketik untuk mencuba semula." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Ketik utk muat data widget" - diff --git a/po/my_ZG.po b/po/my_ZG.po deleted file mode 100755 index c2f558d..0000000 --- a/po/my_ZG.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "အခ်က္အလက္ျဖည့္သြင္းေနပါသည္…" - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ေဒတာ တင္ရန္ မရႏိုင္ပါ။ ျပန္ၾကိဳးစားရန္ ႏွိပ္ပါ။" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "ဝဒ္ဂ်က္ေဒတာကုိ ရယူရန္ ဤေနရာကုိ ႏွိပ္ပါ" - diff --git a/po/ne.po b/po/ne.po deleted file mode 100755 index dd751d8..0000000 --- a/po/ne.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "लोड हुँदै छ..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "डाटा लोड गर्न सकेन। पुन: प्रयास गर्नुहोस् मा ट्याप गर्नुहोस्।" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "विजेट डाटा लोड गर्न यहाँ ट्याप गर्नु" - diff --git a/po/or.po b/po/or.po deleted file mode 100755 index 95e255a..0000000 --- a/po/or.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "ଲୋଡ୍ ହେଉଛି..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ଡାଟା ଲୋଡ୍ କରିବାକୁ ଅସମର୍ଥ। ପୁନଃଚେଷ୍ଟା କରିବାକୁ ଟ୍ୟାପ୍ କରନ୍ତୁ।" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "ୱିଜେ. ଡାଟା ଲୋଡ୍‍ କରି. ଏଠା. ଟ୍ୟାପ୍" - diff --git a/po/pa.po b/po/pa.po deleted file mode 100755 index dde5618..0000000 --- a/po/pa.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ਡੈਟਾ ਨੂੰ ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "ਵਿੱਜੇਟ ਡੈਟਾ ਲੋਡ ਕਰਨ ਲਈ ਇੱਥੇ ਟੈਪ ਕਰੋ" - diff --git a/po/pt_BR.po b/po/pt_BR.po deleted file mode 100755 index f2fb3b5..0000000 --- a/po/pt_BR.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Carregando..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Não é possível carregar os dados. Toque para tentar novamente." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Tocar carreg. dados widget" - diff --git a/po/pt_PT.po b/po/pt_PT.po deleted file mode 100755 index b953672..0000000 --- a/po/pt_PT.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "A carregar..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Impossível carregar dados. Toque para tentar novamente." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Toque p/ carregar dados widget" - diff --git a/po/ru_RU.po b/po/ru_RU.po deleted file mode 100755 index e69de9b..0000000 --- a/po/ru_RU.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Загрузка..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Не удалось загрузить данные. Коснитесь для повтора" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Нажм. для загрузки данных" - diff --git a/po/si.po b/po/si.po deleted file mode 100755 index 8a85b10..0000000 --- a/po/si.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "ප්‍රෙව්ශනය කරමින්..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "දත්ත ප්‍රවේශනය කිරීමට නොහැකිය. යළි උත්සාහ කිරීමට තට්ටු කරන්න" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "විජෙ. දත්ත පූරණයට මෙතැන ත. ක." - diff --git a/po/su_ID.po b/po/su_ID.po deleted file mode 100755 index 623411e..0000000 --- a/po/su_ID.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Ngamuat..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Teu tiasa ngamuat data. Ketok pikeun nyobi deui." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Ketok di dieu pikeun muka data widget" - diff --git a/po/ta.po b/po/ta.po deleted file mode 100755 index 2770de9..0000000 --- a/po/ta.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "லோடிங்..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "தரவை ஏற்ற இயலவில்லை. மீண்டும் முயலவென டேப் செய்க." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "விட்ஜெட் தரவை ஏற்ற, டேப் செய்." - diff --git a/po/te.po b/po/te.po deleted file mode 100755 index 0998bb6..0000000 --- a/po/te.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "లోడ్ అవుతోంది..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "డేటాను లోడ్ చేయడం సాధ్యం కాదు. మళ్లీ ప్రయత్నించడానికి ట్యాప్ చేయండి." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "విడ్జెట్ డేటాను లోడ్ చేయడానికి ఇక్కడ ట్యాప్ చేయండి" - diff --git a/po/tg_TJ.po b/po/tg_TJ.po deleted file mode 100755 index ff4285d..0000000 --- a/po/tg_TJ.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Боркунӣ..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Unable to load data. Tap to retry." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Инҷо зарб з., итт.виҷ.бор к." - diff --git a/po/th.po b/po/th.po deleted file mode 100755 index dc80e32..0000000 --- a/po/th.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "กำลังประมวลผล..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ไม่สามารถโหลดข้อมูลได้ แตะเพื่อลองอีกครั้ง" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "แตะที่นี่เพื่อโหลดข้อมูล Widget" - diff --git a/po/tk_TM.po b/po/tk_TM.po deleted file mode 100755 index e9946e6..0000000 --- a/po/tk_TM.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Ýükleýär..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Unable to load data. Tap to retry." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Wijet magl ýükl üçn şuňa bas" - diff --git a/po/tl.po b/po/tl.po deleted file mode 100755 index 846ba71..0000000 --- a/po/tl.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Naglo-load..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Hindi ma-load ang data. I-tap upang subukang muli." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "I-tap dito para i-load ang data ng widget" - diff --git a/po/tr_TR.po b/po/tr_TR.po deleted file mode 100755 index eac167c..0000000 --- a/po/tr_TR.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Yükleniyor..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Veri yüklenemiyor. Tekrar denemek için dokunun." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Widget vrlrni yklmk içn dknn" - diff --git a/po/uk.po b/po/uk.po deleted file mode 100755 index b4f1910..0000000 --- a/po/uk.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Завантаження..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Неможливо завантажити дані. Натисніть, щоб спробувати ще раз" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Торкн. для зав. дан. відж." - diff --git a/po/ur.po b/po/ur.po deleted file mode 100755 index 9b90a3c..0000000 --- a/po/ur.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "لوڈنگ..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "ڈیٹا لوڈ کرنے سے قاصر۔ پھرکوشش کرنے کے لئے تھپتھپائیں۔" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "ویجیٹ کا ڈیٹا لوڈ کرنے کے لیے یہاں تھپکی دیں" - diff --git a/po/uz.po b/po/uz.po deleted file mode 100755 index 4413533..0000000 --- a/po/uz.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Yuklanmoqda..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Ma’lumotni yuklab bo‘lmaydi. Qayta urinib ko‘rish uchun cherting" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Vidjet ma’l. yuklash u-n teg" - diff --git a/po/vi.po b/po/vi.po deleted file mode 100755 index 080962c..0000000 --- a/po/vi.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Đang tải…" - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Không thể tải dữ liệu. Hãy chạm để thử lại." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Chạm để tải dữ liệu widget" - diff --git a/po/xh.po b/po/xh.po deleted file mode 100755 index 73194f4..0000000 --- a/po/xh.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Kufakwa iinkcukacha..." - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Ayikwazi kulayisha ingcombolo. Thepa ukuze uzame kwakhona." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Betha apha ukongeza idatha ye-widget" - diff --git a/po/zh_CN.po b/po/zh_CN.po deleted file mode 100755 index fe8d886..0000000 --- a/po/zh_CN.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "载入中…" - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "无法载入数据。轻敲以重试。" - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "点击此处以载入小组件数据" - diff --git a/po/zu.po b/po/zu.po deleted file mode 100755 index 9cbbc5c..0000000 --- a/po/zu.po +++ /dev/null @@ -1,9 +0,0 @@ -msgid "IDS_ST_POP_LOADING_ING" -msgstr "Iyalayisha…" - -msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" -msgstr "Ayikwazi ukulayisha idatha. Thepha ukuze uzame futhi." - -msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" -msgstr "Thepha lapha ukuze ulayishe ulwazi lwewijethi" - diff --git a/public_api/widget_view/widget_view.cpp b/public_api/widget_view/widget_view.cpp deleted file mode 100644 index ed91fe2..0000000 --- a/public_api/widget_view/widget_view.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Samsung API - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// CLASS HEADER -#include - -// INTERNAL INCLUDES -#include - -namespace Dali -{ - -namespace WidgetView -{ - -WidgetView WidgetView::New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) -{ - return Internal::WidgetView::New( widgetId, contentInfo, width, height, updatePeriod ); -} - -WidgetView WidgetView::DownCast( BaseHandle handle ) -{ - return Toolkit::Control::DownCast( handle ); -} - -WidgetView::WidgetView() -{ -} - -WidgetView::WidgetView( const WidgetView& handle ) -: Toolkit::Control( handle ) -{ -} - -WidgetView& WidgetView::operator=( const WidgetView& handle ) -{ - if( &handle != this ) - { - Control::operator=( handle ); - } - return *this; -} - -WidgetView::~WidgetView() -{ -} - -bool WidgetView::PauseWidget() -{ - return Dali::WidgetView::GetImplementation( *this ).PauseWidget(); -} - -bool WidgetView::ResumeWidget() -{ - return Dali::WidgetView::GetImplementation( *this ).ResumeWidget(); -} - -bool WidgetView::CancelTouchEvent() -{ - return Dali::WidgetView::GetImplementation( *this ).CancelTouchEvent(); -} - -void WidgetView::ActivateFaultedWidget() -{ - return Dali::WidgetView::GetImplementation( *this ).ActivateFaultedWidget(); -} - -WidgetView::WidgetViewSignalType& WidgetView::WidgetAddedSignal() -{ - return Dali::WidgetView::GetImplementation(*this).WidgetAddedSignal(); -} - -WidgetView::WidgetViewSignalType& WidgetView::WidgetDeletedSignal() -{ - return Dali::WidgetView::GetImplementation(*this).WidgetDeletedSignal(); -} - -WidgetView::WidgetViewSignalType& WidgetView::WidgetCreationAbortedSignal() -{ - return Dali::WidgetView::GetImplementation(*this).WidgetCreationAbortedSignal(); -} - -WidgetView::WidgetViewSignalType& WidgetView::WidgetContentUpdatedSignal() -{ - return Dali::WidgetView::GetImplementation(*this).WidgetContentUpdatedSignal(); -} - -WidgetView::WidgetViewSignalType& WidgetView::WidgetUpdatePeriodChangedSignal() -{ - return Dali::WidgetView::GetImplementation(*this).WidgetUpdatePeriodChangedSignal(); -} - -WidgetView::WidgetViewSignalType& WidgetView::WidgetFaultedSignal() -{ - return Dali::WidgetView::GetImplementation(*this).WidgetFaultedSignal(); -} - -WidgetView::WidgetView( Internal::WidgetView& implementation ) -: Control( implementation ) -{ -} - -WidgetView::WidgetView( Dali::Internal::CustomActor* internal ) -: Control( internal ) -{ - VerifyCustomActorPointer( internal ); -} - -} // namespace WidgetView - -} // namespace Dali diff --git a/public_api/widget_view/widget_view.h b/public_api/widget_view/widget_view.h deleted file mode 100644 index 2ac21f3..0000000 --- a/public_api/widget_view/widget_view.h +++ /dev/null @@ -1,338 +0,0 @@ -#ifndef __DALI_WIDGET_VIEW_WIDGET_VIEW_H__ -#define __DALI_WIDGET_VIEW_WIDGET_VIEW_H__ - -/* - * Samsung API - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// EXTERNAL INCLUDES -#include - -namespace Dali -{ - -namespace WidgetView -{ - -namespace Internal DALI_INTERNAL -{ -class WidgetView; -} - -/** - * @addtogroup dali_widget_view - * @{ - */ - -/** - * @brief WidgetView is a class for displaying the widget image and controlling the widget. - * Input events that WidgetView gets are delivered to the widget. - * - * Signals - * | %Signal Name | Method | - * |-----------------------------|----------------------------------------| - * | widgetAdded | @ref WidgetAddedSignal() | - * | widgetDeleted | @ref WidgetDeletedSignal() | - * | widgetCreationAborted | @ref WidgetCreationAbortedSignal() | - * | widgetContentUpdated | @ref WidgetContentUpdatedSignal() | - * | widgetUpdatePeriodChanged | @ref WidgetUpdatePeriodChangedSignal() | - * | widgetFaulted | @ref WidgetFaultedSignal() | - * - * @since_tizen 3.0 - */ -class DALI_IMPORT_API WidgetView : public Toolkit::Control -{ -public: - - /** - * @brief The start and end property ranges for this control. - * @SINCE_1_0.0 - */ - enum PropertyRange - { - PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1, ///< @SINCE_1_0.0 - PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000, ///< Reserve property indices @SINCE_1_0.0 - }; - - /** - * @brief An enumeration of properties belonging to the WidgetView class. - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @SINCE_1_0.0 - */ - struct Property - { - /** - * @brief An enumeration of properties belonging to the WidgetView class. - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @SINCE_1_0.0 - */ - enum - { - // Event side properties - - /** - * @brief name "widgetId", Get the id of the widget, type string, read-only - * @SINCE_1_0.0 - */ - WIDGET_ID = PROPERTY_START_INDEX, - - /** - * @brief name "instanceId", type string, read-only - * @SINCE_1_0.0 - */ - INSTANCE_ID, - - /** - * @brief name "contentInfo", type string, read-only - * @SINCE_1_0.0 - */ - CONTENT_INFO, - - /** - * @brief name "title", type string, read-only - * @SINCE_1_0.0 - */ - TITLE, - - /** - * @brief name "updatePeriod", type float, read-only - * @SINCE_1_0.0 - */ - UPDATE_PERIOD, - - /** - * @brief name "preview", type boolean if it is a show/hide flag, map otherwise - * @SINCE_1_0.0 - */ - PREVIEW, - - /** - * @brief name "loadingText", type boolean if it is a show/hide flag, map otherwise - * @SINCE_1_0.0 - */ - LOADING_TEXT, - - /** - * @brief name "widgetStateFaulted", type boolean - * @SINCE_1_0.0 - */ - WIDGET_STATE_FAULTED, - - /** - * @brief name "permanentDelete", type boolean - * @SINCE_1_0.0 - */ - PERMANENT_DELETE, - - }; - }; - - - /** - * @brief Create widget view. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @param[in] widgetId The widget id. - * @param[in] contentInfo Contents that will be given to the widget instance. - * @param[in] width The widget width. - * @param[in] height The widget height. - * @param[in] updatePeriod The period of updating contents of the widget. - * @return A handle to WidgetView. - */ - static WidgetView New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); - - /** - * @brief Downcast a handle to WidgetView handle. - * - * If the BaseHandle points is a WidgetView the downcast returns a valid handle. - * If not the returned handle is left empty. - * - * @since_tizen 3.0 - * @param[in] handle Handle to an object - * @return handle to a WidgetView or an empty handle - */ - static WidgetView DownCast( BaseHandle handle ); - - /** - * @brief Creates an empty handle. - * @since_tizen 3.0 - */ - WidgetView(); - - /** - * @brief Copy constructor. - * - * @since_tizen 3.0 - * @param[in] handle The handle to copy from. - */ - WidgetView( const WidgetView& handle ); - - /** - * @brief Assignment operator. - * - * @since_tizen 3.0 - * @param[in] handle The handle to copy from. - * @return A reference to this. - */ - WidgetView& operator=( const WidgetView& handle ); - - /** - * @brief Destructor - * - * This is non-virtual since derived Handle types must not contain data or virtual methods. - * @since_tizen 3.0 - */ - ~WidgetView(); - - /** - * @brief Pauses a given widget. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @return true on success, false otherwise. - */ - bool PauseWidget(); - - /** - * @brief Resume a given widget. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @return true on success, false otherwise. - */ - bool ResumeWidget(); - - /** - * @brief Cancels touch event procedure. - * If you call this function after feed the touch down event, the widget will get ON_HOLD events. - * If a widget gets ON_HOLD event, it will not do anything even if you feed touch up event. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @return true on success, false otherwise. - */ - bool CancelTouchEvent(); - - /** - * @brief Activate a widget in faulted state. - * A widget in faulted state MUST be activated before adding the widget. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - */ - void ActivateFaultedWidget(); - -public: //Signals - - typedef Signal< void ( WidgetView ) > WidgetViewSignalType; ///< WidgetView signal type @since_tizen 3.0 - - /** - * @brief This signal is emitted when the widget is added. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @return The signal to connect to. - */ - WidgetViewSignalType& WidgetAddedSignal(); - - /** - * @brief This signal is emitted when the widget is deleted. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @return The signal to connect to. - */ - WidgetViewSignalType& WidgetDeletedSignal(); - - /** - * @brief This signal is emitted when the widget creation is aborted. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @return The signal to connect to. - */ - WidgetViewSignalType& WidgetCreationAbortedSignal(); - - /** - * @brief This signal is emitted when the widget content is updated. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @return The signal to connect to. - */ - WidgetViewSignalType& WidgetContentUpdatedSignal(); - - /** - * @brief This signal is emitted when the widget update period is changed. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @return The signal to connect to. - */ - WidgetViewSignalType& WidgetUpdatePeriodChangedSignal(); - - /** - * @brief This signal is emitted when the widget process is not running. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @return The signal to connect to. - */ - WidgetViewSignalType& WidgetFaultedSignal(); - -public: // Not intended for application developers - - /** - * @internal - * @brief Creates a handle using the WidgetView::Internal implementation. - * - * @since_tizen 3.0 - * @param[in] implementation The WidgetView implementation. - */ - DALI_INTERNAL WidgetView( Internal::WidgetView& implementation ); - - /** - * @internal - * @brief Allows the creation of this control from an Internal::CustomActor pointer. - * - * @since_tizen 3.0 - * @param[in] internal A pointer to the internal CustomActor. - */ - DALI_INTERNAL WidgetView( Dali::Internal::CustomActor* internal ); -}; - -/** - * @} - */ -} // namespace WidgetView - -} // namespace Dali - -#endif // __DALI_WIDGET_VIEW_WIDGET_VIEW_H__ diff --git a/public_api/widget_view_manager/widget_view_manager.cpp b/public_api/widget_view_manager/widget_view_manager.cpp deleted file mode 100644 index a3aaa57..0000000 --- a/public_api/widget_view_manager/widget_view_manager.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Samsung API - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// CLASS HEADER -#include - -// EXTERNAL INCLUDES - -// INTERNAL INCLUDES -#include - -namespace Dali -{ - -namespace WidgetView -{ - -WidgetViewManager WidgetViewManager::New( Application application, const std::string& appId ) -{ - Internal::WidgetViewManagerPtr internal = Internal::WidgetViewManager::New( application, appId ); - - return WidgetViewManager( internal.Get() ); -} - -WidgetViewManager WidgetViewManager::DownCast( BaseHandle handle ) -{ - return WidgetViewManager( dynamic_cast< Internal::WidgetViewManager* >( handle.GetObjectPtr() ) ); -} - -WidgetViewManager::WidgetViewManager() -{ -} - -WidgetViewManager::WidgetViewManager( const WidgetViewManager& handle ) -: BaseHandle(handle) -{ -} - -WidgetViewManager& WidgetViewManager::operator=( const WidgetViewManager& handle ) -{ - BaseHandle::operator=(handle); - return *this; -} - -WidgetViewManager::~WidgetViewManager() -{ -} - -WidgetViewManager::WidgetViewManager( Internal::WidgetViewManager* implementation ) -: BaseHandle( implementation ) -{ -} - -WidgetView WidgetViewManager::AddWidget( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) -{ - return GetImplementation(*this).AddWidget( widgetId, contentInfo, width, height, updatePeriod ); -} - -} // namespace WidgetView - -} // namespace Dali diff --git a/public_api/widget_view_manager/widget_view_manager.h b/public_api/widget_view_manager/widget_view_manager.h deleted file mode 100644 index c00ac94..0000000 --- a/public_api/widget_view_manager/widget_view_manager.h +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef __DALI_WIDGET_VIEW_WIDGET_VIEW_MANAGER_H__ -#define __DALI_WIDGET_VIEW_WIDGET_VIEW_MANAGER_H__ - -/* - * Samsung API - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// EXTERNAL INCLUDES -#include -#include - -namespace Dali -{ - -namespace WidgetView -{ - -class WidgetView; - -namespace Internal DALI_INTERNAL -{ -class WidgetViewManager; -} - -/** - * @addtogroup dali_widget_view - * @{ - */ - -/** - * @brief WidgetViewManager manages addition of WidgetView controls. - * - * This class provides the functionality of adding the widget views and controlling the widgets. - * - * @since_tizen 3.0 - */ -class DALI_IMPORT_API WidgetViewManager : public BaseHandle -{ -public: - - /** - * @brief Create widget view manager. - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @param[in] application Application class for the widget view manager. - * @param[in] appId App ID of app with widget viewer dali. - * @return A handle to WidgetViewManager. - */ - static WidgetViewManager New( Application application, const std::string& appId ); - - /** - * @brief Downcast a handle to WidgetViewManager handle. - * - * If the BaseHandle points is a WidgetViewManager the downcast returns a valid handle. - * If not the returned handle is left empty. - * - * @since_tizen 3.0 - * @param[in] handle Handle to an object - * @return handle to a WidgetViewManager or an empty handle - */ - static WidgetViewManager DownCast( BaseHandle handle ); - - /** - * @brief Creates an WidgetViewManager handle. - * - * Calling member functions with an uninitialised handle is not allowed. - * @since_tizen 3.0 - */ - WidgetViewManager(); - - /** - * @brief Copy constructor. - * - * @since_tizen 3.0 - * @param[in] handle The handle to copy from. - */ - WidgetViewManager( const WidgetViewManager& handle ); - - /** - * @brief Assignment operator. - * - * @since_tizen 3.0 - * @param[in] handle The handle to copy from. - * @return A reference to this. - */ - WidgetViewManager& operator=( const WidgetViewManager& handle ); - - /** - * @brief Destructor - * - * This is non-virtual since derived Handle types must not contain data or virtual methods. - * @since_tizen 3.0 - */ - ~WidgetViewManager(); - - /** - * @brief Creates a new widget view object - * - * @since_tizen 3.0 - * @privlevel public - * @privilege %http://tizen.org/privilege/widget.viewer - * @param[in] widgetId The widget id. - * @param[in] contentInfo Contents that will be given to the widget instance. - * @param[in] width The widget width. - * @param[in] height The widget height. - * @param[in] updatePeriod The period of updating contents of the widget. - * @return A handle to WidgetView. - */ - WidgetView AddWidget( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); - -public: // Not intended for application developers - - /** - * @internal - * @brief Creates a handle using the WidgetView::Internal implementation. - * - * @since_tizen 3.0 - * @param[in] implementation The WidgetViewManager implementation. - */ - explicit DALI_INTERNAL WidgetViewManager( Internal::WidgetViewManager* implementation ); -}; - -/** - * @} - */ - -} // namespace WidgetView - -} // namespace Dali - -#endif // __DALI_WIDGET_VIEW_WIDGET_VIEW_MANAGER_H__ diff --git a/public_api/widget_viewer_dali.h b/public_api/widget_viewer_dali.h deleted file mode 100644 index 858784b..0000000 --- a/public_api/widget_viewer_dali.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef __WIDGET_VIEWER_DALI_H__ -#define __WIDGET_VIEWER_DALI_H__ - -/* - * Samsung API - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Flora License, Version 1.1 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://floralicense.org/license/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include - -#endif // __WIDGET_VIEWER_DALI_H__ diff --git a/widget_viewer_dali.pc.in b/widget_viewer_dali.pc.in deleted file mode 100644 index 64db29a..0000000 --- a/widget_viewer_dali.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@PREFIX@ -exec_prefix=@EXEC_PREFIX@ -libdir=@LIBDIR@ -includedir=@INCLUDEDIR@ - -Name: widget_viewer_dali -Description: Support development of the widget Viewer DALi Frontend library -Version: @VERSION@ -Requires: widget_service -Libs: -L${libdir} -lwidget_viewer_dali -Cflags: -I${includedir} -cppflags: -I${includedir} diff --git a/widget_viewer_dali/images/unknown.png b/widget_viewer_dali/images/unknown.png new file mode 100644 index 0000000..535db60 Binary files /dev/null and b/widget_viewer_dali/images/unknown.png differ diff --git a/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp b/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp new file mode 100644 index 0000000..422fb16 --- /dev/null +++ b/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp @@ -0,0 +1,1466 @@ +/* + * Samsung API + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// CLASS HEADER +#include + +// INTERNAL INCLUDES + +// EXTERNAL INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Dali +{ + +namespace WidgetView +{ + +namespace Internal +{ + +namespace +{ + +const int DEFAULT_FONT_PIXEL_SIZE = 30; // Referred platform widget viewer evas + +#define GET_LOCALE_TEXT(string) dgettext(PKGNAME, string) + +#if defined(DEBUG_ENABLED) +Integration::Log::Filter* gWidgetViewLogging = Integration::Log::Filter::New( Debug::Verbose, false, "LOG_WIDGET_VIEW" ); +#endif + +BaseHandle Create() +{ + return Dali::BaseHandle(); +} + +// Setup properties, signals and actions using the type-registry. +DALI_TYPE_REGISTRATION_BEGIN( Dali::WidgetView::WidgetView, Toolkit::Control, Create ); +DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "widgetId", BOOLEAN, WIDGET_ID ) +DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "instanceId", BOOLEAN, INSTANCE_ID ) +DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "contentInfo", BOOLEAN, CONTENT_INFO ) +DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "title", BOOLEAN, TITLE ) +DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "updatePeriod", BOOLEAN, UPDATE_PERIOD ) +DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "preview", MAP, PREVIEW ) +DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "loadingText", MAP, LOADING_TEXT ) +DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "widgetStateFaulted", BOOLEAN, WIDGET_STATE_FAULTED ) +DALI_PROPERTY_REGISTRATION( Dali::WidgetView, WidgetView, "permanentDelete", BOOLEAN, PERMANENT_DELETE ) + +// Internal property +// ToDo it should be changed public property. +const int TERMINATE_WIDGET = Dali::WidgetView::WidgetView::Property::PERMANENT_DELETE+1; +const int RETRY_TEXT = TERMINATE_WIDGET+1; +const int WIDGET_IMAGE = RETRY_TEXT+1; + +Dali::PropertyRegistration internalProperty1( typeRegistration, "terminateWidget", TERMINATE_WIDGET, Property::BOOLEAN, Dali::WidgetView::Internal::WidgetView::SetProperty, Dali::WidgetView::Internal::WidgetView::GetProperty ); +Dali::PropertyRegistration internalProperty2( typeRegistration, "retryText", RETRY_TEXT, Property::MAP, Dali::WidgetView::Internal::WidgetView::SetProperty, Dali::WidgetView::Internal::WidgetView::GetProperty ); +Dali::PropertyRegistration internalProperty3( typeRegistration, "widgetImage", WIDGET_IMAGE, Property::MAP, Dali::WidgetView::Internal::WidgetView::SetProperty, Dali::WidgetView::Internal::WidgetView::GetProperty ); + +// Signals +DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetAdded", SIGNAL_WIDGET_ADDED ) +DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetDeleted", SIGNAL_WIDGET_DELETED ) +DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetCreationAborted", SIGNAL_WIDGET_CREATION_ABORTED ) +DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetContentUpdated", SIGNAL_WIDGET_CONTENT_UPDATED ) +DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetUpdatePeriodChanged", SIGNAL_WIDGET_UPDATE_PERIOD_CHANGED ) +DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetFaulted", SIGNAL_WIDGET_FAULTED ) +DALI_SIGNAL_REGISTRATION( Dali::WidgetView, WidgetView, "widgetTerminated", SIGNAL_WIDGET_TERMINATED ) + +// Actions +DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "pauseWidget", ACTION_WIDGETVIEW_PAUSE_WIDGET ); +DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "resumeWidget", ACTION_WIDGETVIEW_RESUME_WIDGET ); +DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "cancelTouchEvent", ACTION_WIDGETVIEW_CANCEL_TOUCH_EVENT ); +DALI_ACTION_REGISTRATION( Dali::WidgetView, WidgetView, "activateFaultedWidget", ACTION_WIDGETVIEW_ACTIVATE_FAULTED_WIDGET ); + +DALI_TYPE_REGISTRATION_END() + +struct wl_buffer* preBuffer; +struct tizen_remote_surface* remoteSurface; + +const char* const STATE_TEXT( "stateText" ); +const char* const FONT_STYLE( "fontStyle" ); +const char* const TEXT_POINT_SIZE( "textPointSize" ); +const char* const TEXT_COLOR( "textColor" ); +const char* const TEXT_VISIBLE( "textVisible" ); //ToDo: it should be removed after retry text property is public one + +// ToDo: Now dali provides only dali key codes. +// This funtion will be used to get platform specific key codes from key name +struct KeyCodeMap +{ + xkb_keysym_t keySym; + xkb_keycode_t keyCode; + bool isKeyCode; +}; + +static void FindKeyCode( struct xkb_keymap* keyMap, xkb_keycode_t key, void* data ) +{ + KeyCodeMap* foundKeyCode = static_cast< KeyCodeMap* >( data ); + if( foundKeyCode->isKeyCode ) + { + return; + } + + xkb_keysym_t keySym = foundKeyCode->keySym; + int nsyms = 0; + const xkb_keysym_t* symsOut = NULL; + + nsyms = xkb_keymap_key_get_syms_by_level( keyMap, key, 0, 0, &symsOut ); + + if( nsyms && symsOut ) + { + if( *symsOut == keySym ) + { + foundKeyCode->keyCode = key; + foundKeyCode->isKeyCode = true; + } + } +} + +static bool GetKeyCode( std::string keyName, int32_t& keyCode ) +{ + xkb_keymap* keyMap = NULL; + Ecore_Wl_Input* ecoreWlInput = NULL; + xkb_keysym_t sym = XKB_KEY_NoSymbol; + KeyCodeMap foundKeyCode; + + ecoreWlInput = ecore_wl_input_get(); + if( !ecoreWlInput ) + { + DALI_LOG_ERROR( "Failed to get Ecore_Wl_Input in WidgetView\n" ); + return false; + } + + keyMap = ecore_wl_input_keymap_get( ecoreWlInput ); + if( !keyMap ) + { + DALI_LOG_ERROR( "Failed to get keymap in WidgetView\n" ); + return false; + } + + sym = xkb_keysym_from_name( keyName.c_str(), XKB_KEYSYM_NO_FLAGS ); + if( sym == XKB_KEY_NoSymbol ) + { + DALI_LOG_ERROR( "Failed to get keysym in WidgetView\n" ); + return false; + } + + foundKeyCode.keySym = sym; + foundKeyCode.isKeyCode = false; + xkb_keymap_key_for_each( keyMap, FindKeyCode, &foundKeyCode ); + keyCode = static_cast< int32_t >( foundKeyCode.keyCode ); + return true; +} + +static void OnBufferUpdated( struct tizen_remote_surface *surface, uint32_t type, struct wl_buffer *buffer, + int32_t img_file_fd, uint32_t img_file_size, uint32_t time, struct wl_array *keys, + const char *appid, const char *instance_id, const int pid, void *data) +{ + Dali::WidgetView::Internal::WidgetView* widgetView = static_cast< Dali::WidgetView::Internal::WidgetView* >( data ); + + if( widgetView ) + { + if( !widgetView->IsWidgetImageView() ) + { + tizen_remote_surface_transfer_visibility( surface, TIZEN_REMOTE_SURFACE_VISIBILITY_TYPE_VISIBLE); + + widgetView->CreateWidgetImageView(); + widgetView->ConnectSignal( surface ); + } + + //get tbm surface from buffer + tbm_surface_h tbmSurface = static_cast< tbm_surface_h >( wl_buffer_get_user_data( buffer ) ); + widgetView->UpdateImageSource( tbmSurface ); + } + + if( preBuffer != NULL && tizen_remote_surface_get_version( surface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION ) + { + tizen_remote_surface_release( surface, preBuffer ); + tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer ); + tbm_surface_internal_unref( preTbmSurface ); + wl_buffer_destroy( preBuffer ); + } + + remoteSurface = surface; + preBuffer = buffer; + + close( img_file_fd ); +} + +static void OnBufferAdded( const char *appid, const char *instance_id, const int pid, void *data ) +{ +} + +static void OnSurfaceRemoved( const char *appid, const char *instance_id, const int pid, void *data ) +{ + Dali::WidgetView::Internal::WidgetView* widgetView = static_cast< Dali::WidgetView::Internal::WidgetView* >( data ); + + if( widgetView && !widgetView->IsWidgetFaulted() ) + { + widgetView->CloseRemoteSurface(); + widgetView->RemoveWidgetImage(); + } +} + +} // unnamed namespace + +Dali::WidgetView::WidgetView WidgetView::New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) +{ + // Create the implementation, temporarily owned on stack + IntrusivePtr< WidgetView > internalWidgetView = new WidgetView( widgetId, contentInfo, width, height, updatePeriod ); + + // Pass ownership to CustomActor + Dali::WidgetView::WidgetView widgetView( *internalWidgetView ); + + // Second-phase init of the implementation + // This can only be done after the CustomActor connection has been made... + internalWidgetView->Initialize(); + + return widgetView; +} + +WidgetView::WidgetView() +: Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS ) ), + mWidgetId(), + mInstanceId(), + mContentInfo(), + mTitle(), + mWidth( 0 ), + mHeight( 0 ), + mPid( 0 ), + mUpdatePeriod( 0.0 ), + mPreviewVisible( true ), + mLoadingTextVisible( true ), + mLoadingTextString(), + mRetryTextVisible( true ), + mRetryTextString(), + mRetryState( false ), + mPermanentDelete( false ), + mWatcherHandle( NULL ), + mRemoteSurface( NULL ) +{ +} + +WidgetView::WidgetView( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) +: Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS ) ), + mWidgetId( widgetId ), + mInstanceId(), + mContentInfo( contentInfo ), + mTitle(), + mWidth( width ), + mHeight( height ), + mPid( 0 ), + mUpdatePeriod( updatePeriod ), + mPreviewVisible( true ), + mLoadingTextVisible( true ), + mLoadingTextString(), + mRetryTextVisible( true ), + mRetryTextString(), + mRetryState( false ), + mPermanentDelete( false ), + mWatcherHandle( NULL ), + mRemoteSurface( NULL ) +{ +} + +WidgetView::~WidgetView() +{ +} + +bool WidgetView::PauseWidget() +{ + int ret = widget_instance_pause( mInstanceId.c_str() ); + if( ret < 0 ) + { + DALI_LOG_ERROR( "WidgetView::PauseWidget: Fail to pause widget(%s, %s) [%d]\n", mWidgetId.c_str(), mInstanceId.c_str(), ret ); + return false; + } + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::PauseWidget: Widget is paused (%s, %s)\n", mWidgetId.c_str(), mInstanceId.c_str() ); + + return true; +} + +bool WidgetView::ResumeWidget() +{ + int ret = widget_instance_resume( mInstanceId.c_str() ); + if( ret < 0 ) + { + DALI_LOG_ERROR( "WidgetView::ResumeWidget: Fail to resume widget(%s, %s) [%d]\n", mWidgetId.c_str(), mInstanceId.c_str(), ret ); + return false; + } + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ResumeWidget: Widget is resumed (%s, %s)\n", mWidgetId.c_str(), mInstanceId.c_str() ); + + return true; +} + +const std::string& WidgetView::GetWidgetId() const +{ + return mWidgetId; +} + +const std::string& WidgetView::GetInstanceId() const +{ + return mInstanceId; +} + +const std::string& WidgetView::GetContentInfo() +{ + widget_instance_h instance; + char* contentInfo = NULL; + + mContentInfo.clear(); + + if( mWidgetId.empty() || mInstanceId.empty() ) + { + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetContentInfo: Widget id (%s) or instance id (%s) is invalid.\n", mWidgetId.c_str(), mInstanceId.c_str() ); + return mContentInfo; + } + + instance = widget_instance_get_instance( mWidgetId.c_str(), mInstanceId.c_str() ); + if( !instance ) + { + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetContentInfo: widget_instance_get_instance is failed. [%s]\n", mInstanceId.c_str() ); + return mContentInfo; + } + + if( widget_instance_get_content( instance, &contentInfo ) < 0 ) + { + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetContentInfo: Failed to get content of widget. [%s]\n", mInstanceId.c_str() ); + return mContentInfo; + } + + mContentInfo = reinterpret_cast< char* >( contentInfo ); + + return mContentInfo; +} + +const std::string& WidgetView::GetTitle() +{ + //ToDo: We should add some codes by considering widget_viewer_evas + if( mTitle.empty() ) + { + mTitle = widget_service_get_name( mWidgetId.c_str(), NULL ); + } + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetTitle: title = %s\n", mTitle.c_str() ); + + return mTitle; +} + +float WidgetView::GetUpdatePeriod() const +{ + return mUpdatePeriod; +} + +bool WidgetView::CancelTouchEvent() +{ + if( mRemoteSurface ) + { + tizen_remote_surface_transfer_touch_cancel( mRemoteSurface ); + return true; + } + + return false; +} + +void WidgetView::SetPreviewVisible( bool visible ) +{ + if( mPreviewImage && mPreviewVisible != visible ) + { + mPreviewVisible = visible; + mPreviewImage.SetVisible( visible ); + } +} + +bool WidgetView::IsPreviewVisible() +{ + return mPreviewVisible; +} + +void WidgetView::SetLoadingTextVisible( bool visible ) +{ + if( mLoadingText && mLoadingTextVisible != visible ) + { + mLoadingTextVisible = visible; + + if( visible ) + { + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT, + ( mLoadingTextString.empty() )? GET_LOCALE_TEXT( "IDS_ST_POP_LOADING_ING" ) : mLoadingTextString ); + } + mLoadingText.SetVisible( visible ); + } +} + +void WidgetView::SetRetryTextVisible( bool visible ) +{ + if( mRetryText && mRetryTextVisible != visible ) + { + mRetryTextVisible = visible; + + if( visible ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT, + ( mRetryTextString.empty() )? GET_LOCALE_TEXT( "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" ) : mRetryTextString ); + } + mRetryText.SetVisible( visible ); + } +} + +bool WidgetView::IsLoadingTextVisible() +{ + return mLoadingTextVisible; +} + +bool WidgetView::IsRetryTextVisible() +{ + return mRetryTextVisible; +} + +void WidgetView::ActivateFaultedWidget() +{ + if( mPid < 0 ) + { + // Enable preview and loading text + ShowRetryState( false ); + ShowLoadingState( true ); + + // launch widget again + mPid = widget_instance_launch( mInstanceId.c_str(), (char *)mContentInfo.c_str(), mWidth, mHeight ); + if( mPid < 0) + { + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ActivateFaultedWidget: widget_instance_launch is failed. [%s]\n", mWidgetId.c_str() ); + + ShowLoadingState( false ); + ShowRetryState( true ); + + // Emit signal + Dali::WidgetView::WidgetView handle( GetOwner() ); + mWidgetCreationAbortedSignal.Emit( handle ); + + return; + } + + screen_connector_toolkit_ops ops; + ops.updated_cb = OnBufferUpdated; + ops.removed_cb = OnSurfaceRemoved; + ops.added_cb = OnBufferAdded; + mWatcherHandle = screen_connector_toolkit_add(&ops, (char *)mInstanceId.c_str(), SCREEN_CONNECTOR_SCREEN_TYPE_WIDGET, this); + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ActivateFaultedWidget: widget_instance_launch is called. [%s, mPid = %d]\n", mWidgetId.c_str(), mPid ); + } +} + +bool WidgetView::IsWidgetFaulted() +{ + return mPid < 0 ? true : false; +} + +void WidgetView::SetPermanentDelete( bool permanentDelete ) +{ + mPermanentDelete = permanentDelete; +} + +bool WidgetView::IsPermanentDelete() +{ + return mPermanentDelete; +} + +void WidgetView::CreateWidgetImageView() +{ + Any source; + mImageSource = Dali::NativeImageSource::New( source ); + Dali::NativeImage image = Dali::NativeImage::New( *mImageSource ); + + mWidgetImageView = Dali::Toolkit::ImageView::New( image ); + + mWidgetImageView.SetParentOrigin( ParentOrigin::CENTER ); + mWidgetImageView.SetAnchorPoint( AnchorPoint::CENTER ); + mWidgetImageView.SetSize( mWidth, mHeight ); + + if( !mWidgetImagePropertyMap.Empty() ) + { + mWidgetImageView.SetProperty( Toolkit::ImageView::Property::IMAGE, mWidgetImagePropertyMap ); + } + + Self().Add( mWidgetImageView ); + + //EFL app should be pre multiplied image. + mWidgetImageView.SetProperty( Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true ); + + // Disable preview and text + ShowLoadingState( false ); + + // Emit signal + Dali::WidgetView::WidgetView handle( GetOwner() ); + mWidgetAddedSignal.Emit( handle ); + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::CreateWidgetImageView: Widget image is added.\n" ); +} + +void WidgetView::RemoveWidgetImage() +{ + if( mWidgetImageView ) + { + mWidgetImageView.SetVisible( false ); + mWidgetImageView.Reset(); + + ShowRetryState( true ); + + Dali::WidgetView::WidgetView handle( GetOwner() ); + mWidgetDeletedSignal.Emit( handle ); + } + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::RemoveWidgetImage: Widget image is removed.\n" ); +} + +void WidgetView::TerminateWidget() +{ + if( !mWidgetId.empty() && !mInstanceId.empty() ) + { + widget_instance_terminate( mInstanceId.c_str() ); + + if( mPermanentDelete ) + { + widget_instance_destroy( mInstanceId.c_str() ); + } + + Dali::WidgetView::WidgetView handle( GetOwner() ); + mWidgetTerminatedSignal.Emit( handle ); + mWidgetDeletedSignal.Emit( handle ); + + mWidgetId.clear(); + mInstanceId.clear(); + + CloseRemoteSurface(); + } + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::TerminateWidget: Widget is terminated/destroyed and deleted signal is emitted.\n" ); + +} + +void WidgetView::SendWidgetEvent( int event ) +{ + Dali::WidgetView::WidgetView handle( GetOwner() ); + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::SendWidgetEvent: event = %d widget = %s\n", event, mWidgetId.c_str() ); + + // Emit signal + switch( event ) + { + case WIDGET_INSTANCE_EVENT_UPDATE: + case WIDGET_INSTANCE_EVENT_EXTRA_UPDATED: + { + mWidgetContentUpdatedSignal.Emit( handle ); + break; + } + case WIDGET_INSTANCE_EVENT_PERIOD_CHANGED: + { + mWidgetUpdatePeriodChangedSignal.Emit( handle ); + break; + } + case WIDGET_INSTANCE_EVENT_FAULT: + { + mWidgetFaultedSignal.Emit( handle ); + CloseRemoteSurface(); + RemoveWidgetImage(); + break; + } + default: + { + break; + } + } +} + +bool WidgetView::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ) +{ + Dali::BaseHandle handle( object ); + + bool connected( true ); + Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::DownCast( handle ); + + if( strcmp( signalName.c_str(), SIGNAL_WIDGET_ADDED ) == 0 ) + { + widgetView.WidgetAddedSignal().Connect( tracker, functor ); + } + else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_DELETED ) == 0 ) + { + widgetView.WidgetDeletedSignal().Connect( tracker, functor ); + } + else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_CREATION_ABORTED ) == 0 ) + { + widgetView.WidgetCreationAbortedSignal().Connect( tracker, functor ); + } + else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_CONTENT_UPDATED ) == 0 ) + { + widgetView.WidgetContentUpdatedSignal().Connect( tracker, functor ); + } + else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_UPDATE_PERIOD_CHANGED ) == 0 ) + { + widgetView.WidgetUpdatePeriodChangedSignal().Connect( tracker, functor ); + } + else if( strcmp( signalName.c_str(), SIGNAL_WIDGET_FAULTED ) == 0 ) + { + widgetView.WidgetFaultedSignal().Connect( tracker, functor ); + } + else + { + // signalName does not match any signal + connected = false; + } + + return connected; +} + +bool WidgetView::DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes ) +{ + bool ret = true; + + Dali::BaseHandle handle( object ); + Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::DownCast( handle ); + + if( !widgetView ) + { + return false; + } + + WidgetView& impl = GetImplementation( widgetView ); + + if( strcmp( actionName.c_str(), ACTION_WIDGETVIEW_PAUSE_WIDGET ) == 0 ) + { + impl.PauseWidget(); + } + else if( strcmp( actionName.c_str(), ACTION_WIDGETVIEW_RESUME_WIDGET ) == 0 ) + { + impl.ResumeWidget(); + } + else if( strcmp( actionName.c_str(), ACTION_WIDGETVIEW_CANCEL_TOUCH_EVENT ) == 0 ) + { + impl.CancelTouchEvent(); + } + else if( strcmp( actionName.c_str(), ACTION_WIDGETVIEW_ACTIVATE_FAULTED_WIDGET ) == 0 ) + { + impl.ActivateFaultedWidget(); + } + else + { + ret = false; + } + + return ret; +} + +void WidgetView::SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ) +{ + Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::DownCast( Dali::BaseHandle( object ) ); + + if( widgetView ) + { + WidgetView& impl = GetImplementation( widgetView ); + + switch( index ) + { + case Dali::WidgetView::WidgetView::Property::PREVIEW: + { + bool previewEnabled; + + if( value.Get( previewEnabled ) ) + { + impl.SetPreviewVisible( previewEnabled ); + } + break; + } + case Dali::WidgetView::WidgetView::Property::LOADING_TEXT: + { + bool textEnabled; + Property::Map map; + + if( value.Get( textEnabled ) ) + { + impl.SetLoadingTextVisible( textEnabled ); + } + else if( value.Get( map ) ) + { + impl.SetLoadingTextPropertyMap( map ); + } + break; + } + case Dali::WidgetView::WidgetView::Property::PERMANENT_DELETE: + { + bool permanent; + if( value.Get( permanent ) ) + { + impl.SetPermanentDelete( permanent ); + } + break; + } + case TERMINATE_WIDGET: + { + bool del = false; + if( value.Get( del ) && del ) + { + impl.TerminateWidget(); + } + break; + } + case RETRY_TEXT: + { + Property::Map map; + + if( value.Get( map ) ) + { + impl.SetRetryTextPropertyMap( map ); + } + break; + } + case WIDGET_IMAGE: + { + Property::Map map; + if( value.Get( map ) ) + { + impl.SetWidgetImagePropertyMap( map ); + } + break; + } + } + } +} + +Property::Value WidgetView::GetProperty( BaseObject* object, Property::Index index ) +{ + Property::Value value; + Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::DownCast( Dali::BaseHandle( object ) ); + + if( widgetView ) + { + WidgetView& impl = GetImplementation( widgetView ); + + switch( index ) + { + case Dali::WidgetView::WidgetView::Property::WIDGET_ID: + { + value = impl.GetWidgetId(); + break; + } + case Dali::WidgetView::WidgetView::Property::INSTANCE_ID: + { + value = impl.GetInstanceId(); + break; + } + case Dali::WidgetView::WidgetView::Property::CONTENT_INFO: + { + value = impl.GetContentInfo(); + break; + } + case Dali::WidgetView::WidgetView::Property::TITLE: + { + value = impl.GetTitle(); + break; + } + case Dali::WidgetView::WidgetView::Property::UPDATE_PERIOD: + { + value = impl.GetUpdatePeriod(); + break; + } + case Dali::WidgetView::WidgetView::Property::PREVIEW: + { + value = impl.IsPreviewVisible(); + break; + } + case Dali::WidgetView::WidgetView::Property::LOADING_TEXT: + { + value = impl.IsLoadingTextVisible(); + break; + } + case Dali::WidgetView::WidgetView::Property::WIDGET_STATE_FAULTED: + { + value = impl.IsWidgetFaulted(); + break; + } + case Dali::WidgetView::WidgetView::Property::PERMANENT_DELETE: + { + value = impl.IsPermanentDelete(); + break; + } + } + } + + return value; +} + +Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetAddedSignal() +{ + return mWidgetAddedSignal; +} + +Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetDeletedSignal() +{ + return mWidgetDeletedSignal; +} + +Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetCreationAbortedSignal() +{ + return mWidgetCreationAbortedSignal; +} + +Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetContentUpdatedSignal() +{ + return mWidgetContentUpdatedSignal; +} + +Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetUpdatePeriodChangedSignal() +{ + return mWidgetUpdatePeriodChangedSignal; +} + +Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetFaultedSignal() +{ + return mWidgetFaultedSignal; +} + +Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetView::WidgetTerminatedSignal() +{ + return mWidgetTerminatedSignal; +} + +void WidgetView::OnInitialize() +{ + char* instanceId = NULL; + char* previewPath = NULL; + std::string previewImage; + widget_size_type_e sizeType; + screen_connector_toolkit_ops ops; + + int ret = widget_instance_create( mWidgetId.c_str(), &instanceId ); + if( ret < 0 || !instanceId ) + { + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_create is failed [%s].\n", mWidgetId.c_str() ); + return; + } + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_create is called. [widget id = %s, instance id = %s]\n", + mWidgetId.c_str(), instanceId ); + + mInstanceId = instanceId; + + // Preview image + widget_service_get_size_type( mWidth, mHeight, &sizeType ); + + previewPath = widget_service_get_preview_image_path( mWidgetId.c_str(), sizeType ); + if( previewPath ) + { + previewImage = previewPath; + free( previewPath ); + } + else + { + previewImage = WIDGET_VIEW_RESOURCE_DEFAULT_IMG; + } + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: preview image path = %s\n", previewImage.c_str() ); + + + mPreviewActor = Dali::Actor::New(); + mPreviewActor.SetParentOrigin( ParentOrigin::CENTER ); + mPreviewActor.SetAnchorPoint( AnchorPoint::CENTER ); + mPreviewActor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + + mPreviewImage = Toolkit::ImageView::New( previewImage ); + mPreviewImage.SetParentOrigin( ParentOrigin::CENTER ); + mPreviewImage.SetAnchorPoint( AnchorPoint::CENTER ); + mPreviewImage.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + + Self().SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); + Self().SetSize( mWidth, mHeight ); + + Self().Add( mPreviewActor ); + mPreviewActor.Add( mPreviewImage ); + + mStateTextActor = Dali::Actor::New(); + mStateTextActor.SetParentOrigin( ParentOrigin::CENTER ); + mStateTextActor.SetAnchorPoint( AnchorPoint::CENTER ); + mStateTextActor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + + // Loading text + mLoadingText = Toolkit::TextLabel::New( ( mLoadingTextString.empty() )? GET_LOCALE_TEXT( "IDS_ST_POP_LOADING_ING" ) : mLoadingTextString ); + mLoadingText.SetParentOrigin( ParentOrigin::CENTER ); + mLoadingText.SetAnchorPoint( AnchorPoint::CENTER ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Dali::Color::WHITE ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, "Bold" ); + mLoadingText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, TextPixelToPointSize( DEFAULT_FONT_PIXEL_SIZE ) ); + + mPreviewActor.Add( mStateTextActor ); + mStateTextActor.Add( mLoadingText ); + + // Retry text + mRetryText = Toolkit::TextLabel::New( ( mRetryTextString.empty() )? GET_LOCALE_TEXT( "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" ) : mRetryTextString ); + mRetryText.SetParentOrigin( ParentOrigin::CENTER ); + mRetryText.SetAnchorPoint( AnchorPoint::CENTER ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Dali::Color::WHITE ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, "Bold" ); + mRetryText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, TextPixelToPointSize( DEFAULT_FONT_PIXEL_SIZE ) ); + + mStateTextActor.Add( mRetryText ); + mRetryText.SetVisible( false ); + + // launch widget + mPid = widget_instance_launch( instanceId, (char *)mContentInfo.c_str(), mWidth, mHeight ); + if( mPid < 0) + { + + ShowLoadingState( false ); + ShowRetryState( true ); + + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_launch is failed. [%s]\n", mWidgetId.c_str() ); + + // Emit signal + Dali::WidgetView::WidgetView handle( GetOwner() ); + mWidgetCreationAbortedSignal.Emit( handle ); + + return; + } + + ops.updated_cb = OnBufferUpdated; + ops.removed_cb = OnSurfaceRemoved; + ops.added_cb = OnBufferAdded; + mWatcherHandle = screen_connector_toolkit_add(&ops, (char *)instanceId, SCREEN_CONNECTOR_SCREEN_TYPE_WIDGET, this); + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_launch is called. [%s, mPid = %d]\n", mWidgetId.c_str(), mPid ); + +} + +void WidgetView::OnStageConnection( int depth ) +{ + Control::OnStageConnection( depth ); +} + +void WidgetView::OnStageDisconnection() +{ + Control::OnStageDisconnection(); +} + +void WidgetView::OnSizeSet( const Vector3& targetSize ) +{ + if( mWidgetImageView ) + { + mWidgetImageView.SetSize( targetSize ); + } +} + +bool WidgetView::IsWidgetImageView() +{ + return ( mWidgetImageView )? true: false; +} + +void WidgetView::UpdateImageSource( tbm_surface_h source ) +{ + mImageSource = Dali::NativeImageSource::New( source ); + Dali::NativeImage image = Dali::NativeImage::New( *mImageSource ); + + if( mWidgetImageView ) + { + mWidgetImageView.SetImage( image ); + mWidgetImageView.SetProperty( Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true ); + } +} + +void WidgetView::ConnectSignal( tizen_remote_surface* surface ) +{ + if( mWidgetImageView && surface ) + { + mRemoteSurface = surface; + + Self().TouchSignal().Connect( this, &WidgetView::OnTouch ); + Self().WheelEventSignal().Connect( this, &WidgetView::OnWheelEvent ); + } +} + +bool WidgetView::OnTouch( Dali::Actor actor, const Dali::TouchData& event ) +{ + if( event.GetPointCount() == 0 ) + { + return false; + } + + if( mRemoteSurface == NULL ) + { + return false; + } + + DevelDevice::Class::Type deviceType = DevelTouchData::GetDeviceClass( event, 0 ); + if( deviceType == DevelDevice::Class::MOUSE ) + { + return MouseEvent( event ); + } + else if( deviceType == DevelDevice::Class::TOUCH ) + { + return TouchEvent( event ); + } + + return false; +} + +bool WidgetView::OnWheelEvent( Dali::Actor actor, const Dali::WheelEvent& event ) +{ + if( mRemoteSurface == NULL ) + { + return false; + } + //ToDo: We should check TIZEN_INPUT_DEVICE_CLAS_MOUSE + tizen_remote_surface_transfer_mouse_wheel( mRemoteSurface, + event.direction, + event.z, + TIZEN_INPUT_DEVICE_CLAS_MOUSE, + TIZEN_INPUT_DEVICE_SUBCLAS_NONE, + "", + event.timeStamp + ); + return false; +} + +bool WidgetView::OnKeyEvent( const Dali::KeyEvent& event ) +{ + if( mRemoteSurface == NULL ) + { + return false; + } + + tizen_remote_surface_event_type type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_NONE; + + switch( event.state ) + { + case Dali::KeyEvent::Down: + { + type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_KEY_DOWN; + break; + } + case Dali::KeyEvent::Up: + { + type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_KEY_UP; + break; + } + case Dali::KeyEvent::Last: + { + break; + } + default: + { + return false; + } + } + + int32_t keyCode; + if( GetKeyCode( event.keyPressedName, keyCode ) == false ) + { + return false; + } + + tizen_remote_surface_transfer_key_event( mRemoteSurface, + type, + keyCode, + Dali::DevelKeyEvent::GetDeviceClass( event ), + Dali::DevelKeyEvent::GetDeviceSubclass( event ), + "", + static_cast< uint32_t >( event.time ) + ); + + return false; +} + +Vector3 WidgetView::GetNaturalSize() +{ + Vector3 size; + size.x = mWidth; + size.y = mHeight; + + if( size.x > 0 && size.y > 0 ) + { + size.z = std::min( size.x, size.y ); + return size; + } + else + { + return Control::GetNaturalSize(); + } +} + +float WidgetView::GetHeightForWidth( float width ) +{ + if( mWidth > 0 && mHeight > 0 ) + { + return GetHeightForWidthBase( width ); + } + else + { + return Control::GetHeightForWidthBase( width ); + } +} + +float WidgetView::GetWidthForHeight( float height ) +{ + if( mWidth > 0 && mHeight > 0 ) + { + return GetWidthForHeightBase( height ); + } + else + { + return Control::GetWidthForHeightBase( height ); + } +} + +void WidgetView::CloseRemoteSurface() +{ + if( mWatcherHandle != NULL ) + { + if( remoteSurface != NULL && preBuffer != NULL && tizen_remote_surface_get_version( remoteSurface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION ) + { + tizen_remote_surface_release( remoteSurface, preBuffer ); + tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer ); + tbm_surface_internal_unref( preTbmSurface ); + wl_buffer_destroy( preBuffer ); + preBuffer = NULL; + } + + screen_connector_toolkit_remove( mWatcherHandle ); + mWatcherHandle = NULL; + mRemoteSurface = NULL; + mPid = -1; + } +} + +void WidgetView::ShowLoadingState( bool show ) +{ + if( mPreviewImage && mPreviewVisible ) + { + mPreviewImage.SetVisible( show ); + } + + if( mLoadingText && mLoadingTextVisible ) + { + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT, + ( mLoadingTextString.empty() )? GET_LOCALE_TEXT( "IDS_ST_POP_LOADING_ING" ) : mLoadingTextString ); + mLoadingText.SetVisible( show ); + } +} + +void WidgetView::ShowRetryState( bool show ) +{ + if( mPreviewImage && mPreviewVisible ) + { + mPreviewImage.SetVisible( false ); + } + + if( mRetryText && mRetryTextVisible ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT, + ( mRetryTextString.empty() )? GET_LOCALE_TEXT( "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" ) : mRetryTextString ); + mRetryText.SetVisible( show ); + mRetryState = show; + } +} + +void WidgetView::SetLoadingTextPropertyMap( Property::Map map ) +{ + if( mLoadingText ) + { + Property::Value* loadingText = map.Find( STATE_TEXT ); + std::string text; + if( loadingText && loadingText->Get( text ) ) + { + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT, text ); + mLoadingTextString = text; + } + + Property::Value* fontStyle = map.Find( FONT_STYLE ); + std::string style; + + if( fontStyle && fontStyle->Get( style ) ) + { + mLoadingText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, style ); + } + + Property::Value* textPointSize = map.Find( TEXT_POINT_SIZE ); + float size = 0.f; + + if( textPointSize && textPointSize->Get( size ) ) + { + mLoadingText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, size ); + } + + Property::Value* textColor = map.Find( TEXT_COLOR ); + Vector4 color; + + if( textColor && textColor->Get( color ) ) + { + mLoadingText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, color ); + } + } +} + +void WidgetView::SetRetryTextPropertyMap( Property::Map map ) +{ + if( mRetryText ) + { + Property::Value* retryText = map.Find( STATE_TEXT ); + std::string text; + if( retryText && retryText->Get( text ) ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT, text ); + mRetryTextString = text; + } + + Property::Value* fontStyle = map.Find( FONT_STYLE ); + std::string style; + + if( fontStyle && fontStyle->Get( style ) ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::FONT_STYLE, style ); + } + + Property::Value* textPointSize = map.Find( TEXT_POINT_SIZE ); + float size = 0.f; + + if( textPointSize && textPointSize->Get( size ) ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, size ); + } + + Property::Value* textColor = map.Find( TEXT_COLOR ); + Vector4 color; + if( textColor && textColor->Get( color ) ) + { + mRetryText.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, color ); + } + + Property::Value* textVisible = map.Find( TEXT_VISIBLE ); + bool visible = true; + if( textVisible && textVisible->Get( visible ) ) + { + SetRetryTextVisible( visible ); + } + } +} + +void WidgetView::SetWidgetImagePropertyMap( Property::Map map ) +{ + mWidgetImagePropertyMap = map; + if( mWidgetImageView ) + { + mWidgetImageView.SetProperty( Toolkit::ImageView::Property::IMAGE, map ); + } +} + +float WidgetView::TextPixelToPointSize( int pixelSize ) +{ + Dali::Vector2 dpi = Dali::Stage::GetCurrent().GetDpi(); + float meanDpi = (dpi.height + dpi.width) / 2.0f; + + return (pixelSize * 72.0f) / meanDpi; +} + +void WidgetView::MouseIn( const Dali::TouchData& event ) +{ + Vector2 localPos = event.GetLocalPosition( 0 ); + + tizen_remote_surface_transfer_mouse_event( mRemoteSurface, + TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_IN, + 0, + 0, + (int)localPos.x, + (int)localPos.y, + 0, + 0, + 0, + 0, + TIZEN_INPUT_DEVICE_CLAS_MOUSE, + DevelTouchData::GetDeviceSubclass( event, 0 ), + "", + event.GetTime() + ); +} + +void WidgetView::MouseOut( const Dali::TouchData& event ) +{ + tizen_remote_surface_transfer_mouse_event( mRemoteSurface, + TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_OUT, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + TIZEN_INPUT_DEVICE_CLAS_MOUSE, + DevelTouchData::GetDeviceSubclass( event, 0 ), + "", + event.GetTime() + ); +} + +bool WidgetView::MouseEvent( const Dali::TouchData& event ) +{ + tizen_remote_surface_event_type type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_NONE; + int button = 1; + + switch( event.GetState( 0 ) ) + { + case Dali::PointState::UP: + { + type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_UP; + + if( mRetryState ) + { + ActivateFaultedWidget(); + return false; + } + + break; + } + case Dali::PointState::DOWN: + { + type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_DOWN; + MouseIn( event ); + + break; + } + case Dali::PointState::MOTION: + { + type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_MOVE; + button = 0 ; + break; + } + default: + { + return false; + } + } + + Vector2 localPos = event.GetLocalPosition( 0 ); + + tizen_remote_surface_transfer_mouse_event( mRemoteSurface, + type, + 0, + button, + (int)localPos.x, + (int)localPos.y, + wl_fixed_from_double( event.GetEllipseRadius( 0 ).x ), + wl_fixed_from_double( event.GetEllipseRadius( 0 ).y ), + wl_fixed_from_double( event.GetPressure( 0 ) ), + wl_fixed_from_double( event.GetAngle( 0 ).degree ), + TIZEN_INPUT_DEVICE_CLAS_MOUSE, + DevelTouchData::GetDeviceSubclass( event, 0 ), + "", + event.GetTime() + ); + + if( event.GetState( 0 ) == Dali::PointState::UP) + { + MouseOut( event ); + } + + return true; +} + +bool WidgetView::TouchEvent( const Dali::TouchData& event ) +{ + tizen_remote_surface_event_type type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_NONE; + int button = 1; + + switch( event.GetState( 0 ) ) + { + case Dali::PointState::UP: + { + type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_TOUCH_UP; + + if( mRetryState ) + { + ActivateFaultedWidget(); + return false; + } + + break; + } + case Dali::PointState::DOWN: + { + type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_TOUCH_DOWN; + + break; + } + case Dali::PointState::MOTION: + { + type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_TOUCH_MOVE; + button = 0; + break; + } + default: + { + return false; + } + } + + Vector2 localPos = event.GetLocalPosition( 0 ); + + tizen_remote_surface_transfer_touch_event( mRemoteSurface, + type, + 0, + button, + (int)localPos.x, + (int)localPos.y, + wl_fixed_from_double( event.GetEllipseRadius( 0 ).x ), + wl_fixed_from_double( event.GetEllipseRadius( 0 ).y ), + wl_fixed_from_double( event.GetPressure( 0 ) ), + wl_fixed_from_double( event.GetAngle( 0 ).degree ), + TIZEN_INPUT_DEVICE_CLAS_TOUCHSCREEN, + DevelTouchData::GetDeviceSubclass( event, 0 ), + "", + event.GetTime() + ); + return true; +} + +} // namespace Internal + +} // namespace WidgetView + +} // namespace Dali diff --git a/widget_viewer_dali/internal/widget_view/widget_view_impl.h b/widget_viewer_dali/internal/widget_view/widget_view_impl.h new file mode 100644 index 0000000..8aedda1 --- /dev/null +++ b/widget_viewer_dali/internal/widget_view/widget_view_impl.h @@ -0,0 +1,346 @@ +#ifndef __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__ +#define __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__ + +/* + * Samsung API + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// INTERNAL INCLUDES +#include + +// EXTERNAL INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Dali +{ + +namespace WidgetView +{ + +namespace Internal +{ + +class WidgetView : public Toolkit::Internal::Control +{ +public: + + /** + * @copydoc Dali::WidgetView::WidgetView::New + */ + static Dali::WidgetView::WidgetView New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); + + /** + * @copydoc Dali::WidgetView::WidgetView::PauseWidget + */ + bool PauseWidget(); + + /** + * @copydoc Dali::WidgetView::WidgetView::ResumeWidget + */ + bool ResumeWidget(); + + /** + * @copydoc Dali::WidgetView::WidgetView::CancelTouchEvent + */ + bool CancelTouchEvent(); + + /** + * @copydoc Dali::WidgetView::WidgetView::ActivateFaultedWidget + */ + void ActivateFaultedWidget(); + + void SendWidgetEvent( int event ); + +public: // Internal API + + /** + * @brief Called when a property of an object of this type is set. + * @SINCE_1_1.38 + * @param[in] object The object whose property is set. + * @param[in] index The property index. + * @param[in] value The new property value. + */ + static void SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ); + + /** + * @brief Called to retrieve a property of an object of this type. + * @SINCE_1_1.38 + * @param[in] object The object whose property is to be retrieved. + * @param[in] index The property index. + * @return The current value of the property. + */ + static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex ); + + /** + * @brief Performs actions as requested using the action name. + * @SINCE_1_1.38 + * @param[in] object The object on which to perform the action. + * @param[in] actionName The action to perform. + * @param[in] attributes The attributes with which to perfrom this action. + * @return True if action has been accepted by this control + */ + static bool DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes ); + + static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ); + + const std::string& GetWidgetId() const; + + const std::string& GetInstanceId() const; + + const std::string& GetContentInfo(); + + const std::string& GetTitle(); + + float GetUpdatePeriod() const; + + void SetPreviewVisible( bool visible ); + + bool IsPreviewVisible(); + + void SetLoadingTextVisible( bool visible ); + + void SetRetryTextVisible( bool visible ); + + bool IsLoadingTextVisible(); + + bool IsRetryTextVisible(); + + bool IsWidgetFaulted(); + + void SetPermanentDelete( bool permanentDelete ); + + void RemoveWidgetImage(); + + bool IsPermanentDelete(); + + bool IsWidgetImageView(); + + void UpdateImageSource( tbm_surface_h source ); + + void CreateWidgetImageView(); + + void ConnectSignal( tizen_remote_surface* surface ); + + bool OnTouch( Dali::Actor actor, const Dali::TouchData& event ); + + bool OnWheelEvent( Dali::Actor actor, const Dali::WheelEvent& event ); + + void CloseRemoteSurface(); + + void SetLoadingTextPropertyMap( Dali::Property::Map map ); + + void SetRetryTextPropertyMap( Dali::Property::Map map ); + + void SetWidgetImagePropertyMap( Dali::Property::Map map ); + + void ShowLoadingState( bool show ); + + void ShowRetryState( bool show ); + + void TerminateWidget(); + + void MouseIn( const Dali::TouchData& event ); + + void MouseOut( const Dali::TouchData& event ); + + bool MouseEvent( const Dali::TouchData& event ); + + bool TouchEvent( const Dali::TouchData& event ); + +public: //Signals + + /** + * @copydoc Dali::WidgetView::WidgetView::WidgetAddedSignal + */ + Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetAddedSignal(); + + /** + * @copydoc Dali::WidgetView::WidgetView::WidgetDeletedSignal + */ + Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetDeletedSignal(); + + /** + * @copydoc Dali::WidgetView::WidgetView::WidgetCreationAbortedSignal + */ + Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetCreationAbortedSignal(); + + /** + * @copydoc Dali::WidgetView::WidgetView::WidgetContentUpdatedSignal + */ + Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetContentUpdatedSignal(); + + /** + * @copydoc Dali::WidgetView::WidgetView::WidgetUpdatePeriodChangedSignal + */ + Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetUpdatePeriodChangedSignal(); + + /** + * @copydoc Dali::WidgetView::WidgetView::WidgetFaultedSignal + */ + Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetFaultedSignal(); + + Dali::WidgetView::WidgetView::WidgetViewSignalType& WidgetTerminatedSignal(); + +protected: + + /** + * Construct a new WidgetView. + */ + WidgetView(); + + /** + * Construct a new WidgetView. + */ + WidgetView( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); + + /** + * A reference counted object may only be deleted by calling Unreference() + */ + virtual ~WidgetView(); + + float TextPixelToPointSize( int pixelSize ); + +private: // From Control + + /** + * @copydoc Toolkit::Control::OnInitialize() + */ + virtual void OnInitialize(); + + /** + * @copydoc Toolkit::Control::OnStageConnect() + */ + virtual void OnStageConnection( int depth ); + + /** + * @copydoc Toolkit::Control::OnStageDisconnection() + */ + virtual void OnStageDisconnection(); + + /** + * @copydoc Toolkit::Control::OnSizeSet() + */ + virtual void OnSizeSet( const Vector3& targetSize ); + + /** + * @copydoc Toolkit::Control::OnKeyEvent() + */ + virtual bool OnKeyEvent( const KeyEvent& event ); + + /** + * @copydoc Toolkit::Control::GetNaturalSize + */ + virtual Vector3 GetNaturalSize(); + + /** + * @copydoc Toolkit::Control::GetHeightForWidth() + */ + virtual float GetHeightForWidth( float width ); + + /** + * @copydoc Toolkit::Control::GetWidthForHeight() + */ + virtual float GetWidthForHeight( float height ); + +private: + + // Undefined + WidgetView( const WidgetView& ); + + // Undefined + WidgetView& operator= ( const WidgetView& ); + +private: + + Toolkit::ImageView mWidgetImageView; ///< Widget content + Toolkit::ImageView mPreviewImage; ///< Preview image + Toolkit::TextLabel mLoadingText; ///< Loading text + Toolkit::TextLabel mRetryText; ///< Retry text + Dali::Actor mPreviewActor; + Dali::Actor mStateTextActor; + Dali::NativeImageSourcePtr mImageSource; + + std::string mWidgetId; + std::string mInstanceId; + std::string mContentInfo; + std::string mTitle; + + int mWidth; + int mHeight; + int mPid; + float mUpdatePeriod; + + bool mPreviewVisible; + + bool mLoadingTextVisible; + std::string mLoadingTextString; + + bool mRetryTextVisible; + std::string mRetryTextString; + bool mRetryState; + + bool mPermanentDelete; + screen_connector_toolkit_h mWatcherHandle; + tizen_remote_surface* mRemoteSurface; + + Dali::Property::Map mWidgetImagePropertyMap; + + // Signals + Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetAddedSignal; + Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetDeletedSignal; + Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetCreationAbortedSignal; + Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetContentUpdatedSignal; + Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetUpdatePeriodChangedSignal; + Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetFaultedSignal; + + // Internal signal + Dali::WidgetView::WidgetView::WidgetViewSignalType mWidgetTerminatedSignal; +}; + +} // namespace Internal + +// Helpers for public-api forwarding methods + +inline Internal::WidgetView& GetImplementation( WidgetView& widgetView ) +{ + DALI_ASSERT_ALWAYS( widgetView ); + + Dali::RefObject& handle = widgetView.GetImplementation(); + + return static_cast( handle ); +} + +inline const Internal::WidgetView& GetImplementation( const WidgetView& widgetView ) +{ + DALI_ASSERT_ALWAYS( widgetView ); + + const Dali::RefObject& handle = widgetView.GetImplementation(); + + return static_cast( handle ); +} + +} // namespace WidgetView + +} // namespace Dali + +#endif // __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_H__ diff --git a/widget_viewer_dali/internal/widget_view_manager/widget_view_manager_impl.cpp b/widget_viewer_dali/internal/widget_view_manager/widget_view_manager_impl.cpp new file mode 100644 index 0000000..930fd9e --- /dev/null +++ b/widget_viewer_dali/internal/widget_view_manager/widget_view_manager_impl.cpp @@ -0,0 +1,255 @@ +/* + * Samsung API + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// CLASS HEADER +#include + +// INTERNAL INCLUDES +#include + +// EXTERNAL INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Dali +{ + +namespace WidgetView +{ + +namespace Internal +{ + +namespace +{ + +#define SMACK_LABEL_LENGTH 255 + +#if defined(DEBUG_ENABLED) +Integration::Log::Filter* gWidgetViewManagerLogging = Integration::Log::Filter::New( Debug::Verbose, false, "LOG_WIDGET_VIEW_MANAGER" ); +#endif + +BaseHandle Create() +{ + return Dali::BaseHandle(); +} + +DALI_TYPE_REGISTRATION_BEGIN( Dali::WidgetView::WidgetViewManager, Dali::BaseHandle, Create ); + +static bool IsWidgetFeatureEnabled() +{ + static bool feature = false; + static bool retrieved = false; + int ret; + + if( retrieved == true ) + return feature; + + ret = system_info_get_platform_bool( "http://tizen.org/feature/shell.appwidget", &feature ); + if( ret != SYSTEM_INFO_ERROR_NONE ) + { + return false; + } + + retrieved = true; + + return feature; +} + +static bool CheckPrivilege( const char* privilege ) +{ + cynara* cynara; + int fd = 0; + int ret = 0; + char subjectLabel[SMACK_LABEL_LENGTH + 1] = ""; + char uid[10] = { 0, }; + const char* clientSession = ""; + + ret = cynara_initialize( &cynara, NULL ); + if( ret != CYNARA_API_SUCCESS ) + { + return false; + } + + fd = open( "/proc/self/attr/current", O_RDONLY ); + if( fd < 0 ) + { + cynara_finish( cynara ); + return false; + } + + ret = read( fd, subjectLabel, SMACK_LABEL_LENGTH ); + if( ret < 0 ) + { + close( fd ); + cynara_finish( cynara ); + return false; + } + + close( fd ); + + snprintf( uid, 10, "%d", getuid() ); + + ret = cynara_check( cynara, subjectLabel, clientSession, uid, privilege ); + if( ret != CYNARA_API_ACCESS_ALLOWED ) + { + cynara_finish( cynara ); + return false; + } + + cynara_finish( cynara ); + + return true; +} + +} // unnamed namespace + +WidgetViewManagerPtr WidgetViewManager::New( Application application, const std::string& name ) +{ + WidgetViewManagerPtr impl = new WidgetViewManager(); + + // Second-phase init of the implementation + if( impl->Initialize( application, name ) != WIDGET_ERROR_NONE ) + { + DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::New: Fail to create WidgetViewManager.\n" ); + return NULL; + } + + return impl; +} + +WidgetViewManager::WidgetViewManager() +{ +} + +WidgetViewManager::~WidgetViewManager() +{ + screen_connector_toolkit_fini(SCREEN_CONNECTOR_SCREEN_TYPE_WIDGET); + widget_instance_unlisten_event( WidgetViewManager::WidgetEventCallback ); + widget_instance_fini(); +} + +int WidgetViewManager::Initialize( Application application, const std::string& name ) +{ + if( !IsWidgetFeatureEnabled() ) + { + DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::Initialize: Widget feature is not enabled.\n" ); + return WIDGET_ERROR_NOT_SUPPORTED; + } + + if( !CheckPrivilege( "http://tizen.org/privilege/widget.viewer" ) ) + { + DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::Initialize: Privilege error.\n" ); + return WIDGET_ERROR_PERMISSION_DENIED; + } + + if( !bindtextdomain( PKGNAME, WIDGET_VIEWER_DALI_LOCALE ) ) + { + DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::Initialize: bindtextdomain error.\n" ); + } + + // Binds tizen remote surface manager & connects callback + if( screen_connector_toolkit_init(SCREEN_CONNECTOR_SCREEN_TYPE_WIDGET) < 0 ) + { + return WIDGET_ERROR_FAULT; + } + + // init widget service + widget_instance_init( name.c_str() ); + widget_instance_listen_event( WidgetViewManager::WidgetEventCallback, this ); + + DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::Initialize: success.\n" ); + + return WIDGET_ERROR_NONE; +} + +Dali::WidgetView::WidgetView WidgetViewManager::AddWidget( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) +{ + // Add a new widget view + Dali::WidgetView::WidgetView widgetView = Dali::WidgetView::WidgetView::New( widgetId, contentInfo, width, height, updatePeriod ); + + std::string instanceId; + Property::Value value = widgetView.GetProperty( Dali::WidgetView::WidgetView::Property::INSTANCE_ID ); + value.Get( instanceId ); + + if( !instanceId.empty() ) + { + Dali::WidgetView::GetImplementation( widgetView ).WidgetTerminatedSignal().Connect( this, &WidgetViewManager::OnTerminatedWidget ); + + // Add to map + mWidgetViewContainer.insert( std::pair( instanceId, widgetView ) ); + } + + DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::AddWidget: success [%s]\n", widgetId.c_str() ); + + return widgetView; +} + +void WidgetViewManager::OnTerminatedWidget( Dali::WidgetView::WidgetView widgetView ) +{ + std::string instanceId; + Dali::Property::Value value = widgetView.GetProperty( Dali::WidgetView::WidgetView::Property::INSTANCE_ID ); + + if( value.Get( instanceId ) && !instanceId.empty() && mWidgetViewContainer.size() > 0 ) + { + WidgetViewIter iter = mWidgetViewContainer.find( instanceId ); + if( iter != mWidgetViewContainer.end() ) + { + mWidgetViewContainer.erase( iter ); + } + } + + DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::OnTerminatedWidget: Widget is deleted!\n" ); +} + +int WidgetViewManager::WidgetEventCallback( const char* widgetId, const char* instanceId, int event, void* data ) +{ + WidgetViewManager* widgetViewManager = static_cast< WidgetViewManager* >( data ); + + if( widgetViewManager->mWidgetViewContainer.size() > 0) + { + WidgetViewIter iter = widgetViewManager->mWidgetViewContainer.find( std::string( instanceId ) ); + if( iter != widgetViewManager->mWidgetViewContainer.end() ) + { + Dali::WidgetView::WidgetView widgetView = iter->second; + + Dali::WidgetView::GetImplementation( widgetView ).SendWidgetEvent( event ); + + return 0; + } + } + + DALI_LOG_INFO( gWidgetViewManagerLogging, Debug::Verbose, "WidgetViewManager::WidgetEventCallback: WidgetView is not found! [%s, %s]\n", widgetId, instanceId ); + + return 0; +} + +} // namespace Internal + +} // namespace WidgetView + +} // namespace Dali diff --git a/widget_viewer_dali/internal/widget_view_manager/widget_view_manager_impl.h b/widget_viewer_dali/internal/widget_view_manager/widget_view_manager_impl.h new file mode 100644 index 0000000..94a3211 --- /dev/null +++ b/widget_viewer_dali/internal/widget_view_manager/widget_view_manager_impl.h @@ -0,0 +1,121 @@ +#ifndef __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_MANAGER_H__ +#define __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_MANAGER_H__ + +/* + * Samsung API + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// INTERNAL INCLUDES +#include +#include + +// EXTERNAL INCLUDES +#include +#include + +namespace Dali +{ + +namespace WidgetView +{ + +namespace Internal +{ + +class WidgetViewManager; +typedef IntrusivePtr WidgetViewManagerPtr; + +class WidgetViewManager : public BaseObject, public ConnectionTracker +{ +public: + + /** + * @copydoc Dali::WidgetView::WidgetViewManager::New() + */ + static WidgetViewManagerPtr New( Application application, const std::string& name ); + + /** + * @copydoc Dali::WidgetView::WidgetViewManager::AddWidget() + */ + Dali::WidgetView::WidgetView AddWidget( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); + +private: + + /** + * Construct a new WidgetViewManager. + */ + WidgetViewManager(); + + /** + * A reference counted object may only be deleted by calling Unreference() + */ + virtual ~WidgetViewManager(); + + /** + * Initialize the WidgetViewManager + */ + int Initialize( Application application, const std::string& name ); + + static int WidgetEventCallback( const char* widgetId, const char* instanceId, int event, void* data ); + + /** + * The widgetView is removed from WidgetViewContainer + */ + void OnTerminatedWidget( Dali::WidgetView::WidgetView widgetView ); + +private: + + // Undefined + WidgetViewManager( const WidgetViewManager& ); + + // Undefined + WidgetViewManager& operator= ( const WidgetViewManager& ); + +private: + + typedef std::map WidgetViewContainer; + typedef WidgetViewContainer::iterator WidgetViewIter; + + WidgetViewContainer mWidgetViewContainer; +}; + +} // namespace Internal + +// Helpers for public-api forwarding methods + +inline Internal::WidgetViewManager& GetImplementation( WidgetViewManager& obj ) +{ + DALI_ASSERT_ALWAYS( obj ); + + Dali::BaseObject& handle = obj.GetBaseObject(); + + return static_cast( handle ); +} + +inline const Internal::WidgetViewManager& GetImplementation( const WidgetViewManager& obj ) +{ + DALI_ASSERT_ALWAYS( obj ); + + const Dali::BaseObject& handle = obj.GetBaseObject(); + + return static_cast( handle ); +} + +} // namespace WidgetView + +} // namespace Dali + +#endif // __DALI_WIDGET_VIEW_INTERNAL_WIDGET_VIEW_MANAGER_H__ diff --git a/widget_viewer_dali/po/ar.po b/widget_viewer_dali/po/ar.po new file mode 100755 index 0000000..62bcd4c --- /dev/null +++ b/widget_viewer_dali/po/ar.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "جارٍ التحميل..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "يتعذر تحميل البيانات. انقر لإعادة المحاولة." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "انقر هنا لتحميل بيانات التطبيق المصغر" + diff --git a/widget_viewer_dali/po/as.po b/widget_viewer_dali/po/as.po new file mode 100755 index 0000000..4f14965 --- /dev/null +++ b/widget_viewer_dali/po/as.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "লোড হৈ আছে..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ডাটা লোড কৰিবলৈ অক্ষম৷ পুনঃচেষ্টা কৰিবৰ বাবে টিপক।" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "ৱিজেট ডাটা লোড কৰিবলৈ ইয়াত টিপক" + diff --git a/widget_viewer_dali/po/az.po b/widget_viewer_dali/po/az.po new file mode 100755 index 0000000..ae47346 --- /dev/null +++ b/widget_viewer_dali/po/az.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Yüklənir..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Məlumatları yükləmək mümkün deyil. Yenidən cəhd etmək üçün vurun" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Piktoq məl yükl üçün vur" + diff --git a/widget_viewer_dali/po/be_BY.po b/widget_viewer_dali/po/be_BY.po new file mode 100755 index 0000000..dc565b9 --- /dev/null +++ b/widget_viewer_dali/po/be_BY.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Загрузка..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Unable to load data. Tap to retry." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Націс.тут для загр.дан.відж." + diff --git a/widget_viewer_dali/po/bn.po b/widget_viewer_dali/po/bn.po new file mode 100755 index 0000000..09d105d --- /dev/null +++ b/widget_viewer_dali/po/bn.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "লোড হচ্ছে..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "তথ্য লোড করতে অক্ষম৷ পুনরায় চেষ্টা করতে ট্যাপ করুন৷" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "উইজেট তথ্য লোড করতে এখানে ট্যাপ করুন" + diff --git a/widget_viewer_dali/po/bn_BD.po b/widget_viewer_dali/po/bn_BD.po new file mode 100755 index 0000000..cdea8b3 --- /dev/null +++ b/widget_viewer_dali/po/bn_BD.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "লোড হচ্ছে..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "তথ্য লোড করতে অক্ষম। পুনরায় চেষ্টা করতে ট্যাপ করুন।" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "উইজেটের তথ্য লোড করতে এখানে ট্যাপ করুন" + diff --git a/widget_viewer_dali/po/de.po b/widget_viewer_dali/po/de.po new file mode 100755 index 0000000..882b394 --- /dev/null +++ b/widget_viewer_dali/po/de.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Lädt..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Daten konnten nicht geladen werden. Für erneuten Versuch tippen" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Tippen und Widget-Daten laden." + diff --git a/widget_viewer_dali/po/en.po b/widget_viewer_dali/po/en.po new file mode 100755 index 0000000..3030f61 --- /dev/null +++ b/widget_viewer_dali/po/en.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Loading..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Unable to load data. Tap to retry." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Tap here to load widget data" + diff --git a/widget_viewer_dali/po/en_PH.po b/widget_viewer_dali/po/en_PH.po new file mode 100755 index 0000000..3030f61 --- /dev/null +++ b/widget_viewer_dali/po/en_PH.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Loading..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Unable to load data. Tap to retry." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Tap here to load widget data" + diff --git a/widget_viewer_dali/po/en_US.po b/widget_viewer_dali/po/en_US.po new file mode 100755 index 0000000..3030f61 --- /dev/null +++ b/widget_viewer_dali/po/en_US.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Loading..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Unable to load data. Tap to retry." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Tap here to load widget data" + diff --git a/widget_viewer_dali/po/es_ES.po b/widget_viewer_dali/po/es_ES.po new file mode 100755 index 0000000..9a1f90f --- /dev/null +++ b/widget_viewer_dali/po/es_ES.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Cargando..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "No se pueden cargar datos. Pulse para volver a intentarlo." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Cargue aquí datos de widgets" + diff --git a/widget_viewer_dali/po/es_US.po b/widget_viewer_dali/po/es_US.po new file mode 100755 index 0000000..4877ea8 --- /dev/null +++ b/widget_viewer_dali/po/es_US.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Cargando..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "No es posible cargar los datos. Pulse para intentarlo de nuevo." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Pulse para cargar datos widget" + diff --git a/widget_viewer_dali/po/fa.po b/widget_viewer_dali/po/fa.po new file mode 100755 index 0000000..23d685e --- /dev/null +++ b/widget_viewer_dali/po/fa.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "در حال دانلود..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "بارگیری داده ممکن نیست. برای امتحان مجدد ضربه بزنید." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "برای بارگیری داده ویجت ضربه بزنید" + diff --git a/widget_viewer_dali/po/fr.po b/widget_viewer_dali/po/fr.po new file mode 100755 index 0000000..5a2b7e2 --- /dev/null +++ b/widget_viewer_dali/po/fr.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Chargement en cours." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Impossible de charger les données. Appuyez pour réessayer." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "App. pr charger donn. widget" + diff --git a/widget_viewer_dali/po/gu.po b/widget_viewer_dali/po/gu.po new file mode 100755 index 0000000..6aca674 --- /dev/null +++ b/widget_viewer_dali/po/gu.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "લોડિંગ..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ડેટા લોડ કરવામાં અસમર્થ. ફરીથી પ્રયાસ કરવા માટે ટેપ કરો." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "વિજેટ ડેટા લોડ કરવા માટે અહીં ટેપ કરો" + diff --git a/widget_viewer_dali/po/hi.po b/widget_viewer_dali/po/hi.po new file mode 100755 index 0000000..3dc0197 --- /dev/null +++ b/widget_viewer_dali/po/hi.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "लोड हो रहा है..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "डाटा लोड करने में अक्षम। फिर से प्रयास करने हेतु टैप करें।" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "विजेट डाटा लोड करने हेतु यहां टैप करें" + diff --git a/widget_viewer_dali/po/hy.po b/widget_viewer_dali/po/hy.po new file mode 100755 index 0000000..fe15a4b --- /dev/null +++ b/widget_viewer_dali/po/hy.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Բեռնում է..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Անհնար է տվյալներ բեռնել: Թակեք՝ նորից փորձելու համար" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Թակ այստեղ՝ պտկրգրի տվ. բեռ." + diff --git a/widget_viewer_dali/po/id.po b/widget_viewer_dali/po/id.po new file mode 100755 index 0000000..62f3708 --- /dev/null +++ b/widget_viewer_dali/po/id.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Meloading…" + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Tidak dapat memuat data. Ketuk untuk mencoba lagi." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Ktuk sini utk muat dta wdgt" + diff --git a/widget_viewer_dali/po/it_IT.po b/widget_viewer_dali/po/it_IT.po new file mode 100755 index 0000000..910a09f --- /dev/null +++ b/widget_viewer_dali/po/it_IT.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Caricamento..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Impossibile caricare i dati. Toccate per riprovare." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Toc. qui per caric. dati widget" + diff --git a/widget_viewer_dali/po/jv.po b/widget_viewer_dali/po/jv.po new file mode 100755 index 0000000..03d9b69 --- /dev/null +++ b/widget_viewer_dali/po/jv.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Lagi muat..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Ora bisa ngamot data. Tutul kanggo nyoba maneh." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Ttl iki nggo amot dt widget" + diff --git a/widget_viewer_dali/po/ka.po b/widget_viewer_dali/po/ka.po new file mode 100755 index 0000000..c69f879 --- /dev/null +++ b/widget_viewer_dali/po/ka.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "იტვირთება..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "მონაცემთა ჩატვირთვა შეუძლებელია. შეეხეთ და გაიმეორეთ მცდელობა" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "შეეხეთ აქ, ვიჯეტის მონაცემ." + diff --git a/widget_viewer_dali/po/kk.po b/widget_viewer_dali/po/kk.po new file mode 100755 index 0000000..08c0a8f --- /dev/null +++ b/widget_viewer_dali/po/kk.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Жазылуда..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Деректерді жүктеу мүмкін емес. Қайталау үшін түртіңіз" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Виджет дер. жүк-у үшін түрту" + diff --git a/widget_viewer_dali/po/km.po b/widget_viewer_dali/po/km.po new file mode 100755 index 0000000..2050a75 --- /dev/null +++ b/widget_viewer_dali/po/km.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "កំពុង​ផ្ទុក..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "មិន​អាច​ផ្ទុក​ទិន្នន័យ។ ប៉ះ​ដើម្បី​សាកល្បង​ម្ដងទៀត។" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "ប៉ះ​ទីនេះ ដើម្បី​ផ្ទុក​ទិន្នន័យ​វីដជីត" + diff --git a/widget_viewer_dali/po/kn.po b/widget_viewer_dali/po/kn.po new file mode 100755 index 0000000..5a8a768 --- /dev/null +++ b/widget_viewer_dali/po/kn.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "ಲೋಡಿಂಗ್..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ಡೇಟಾ ಲೋಡ್ ಮಾಡಲು ಅಸಮರ್ಥ. ಮರುಪ್ರಯತ್ನಿಸಲು ಒತ್ತಿ." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "ವಿಜೆಟ್ ಡೇಟಾ ಲೋಡ್‌ಗೆ ಇಲ್ಲಿ ತಟ್ಟಿ" + diff --git a/widget_viewer_dali/po/ko_KR.po b/widget_viewer_dali/po/ko_KR.po new file mode 100755 index 0000000..ea79661 --- /dev/null +++ b/widget_viewer_dali/po/ko_KR.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "불러오는 중..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "데이터를 불러올 수 없습니다. 다시 시도하려면 누르세요." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "위젯 데이터를 불러오려면 여기를 누르세요" + diff --git a/widget_viewer_dali/po/ky_KG.po b/widget_viewer_dali/po/ky_KG.po new file mode 100755 index 0000000..21a7b60 --- /dev/null +++ b/widget_viewer_dali/po/ky_KG.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Жүктөлүүдө..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Unable to load data. Tap to retry." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Видж. маал. жүкт. муну бас" + diff --git a/widget_viewer_dali/po/lo.po b/widget_viewer_dali/po/lo.po new file mode 100755 index 0000000..05943b1 --- /dev/null +++ b/widget_viewer_dali/po/lo.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "ກຳລັງໂຫຼດ..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ບໍ່ສາມາດໂຫຼດຂໍ້ມູນໄດ້. ເຄາະເພື່ອລອງໃໝ່." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "ແຕະທີ່ນີ້ເພື່ອໂຫຼດຂໍ້ມູນວິດເຈັດ" + diff --git a/widget_viewer_dali/po/ml.po b/widget_viewer_dali/po/ml.po new file mode 100755 index 0000000..e65be75 --- /dev/null +++ b/widget_viewer_dali/po/ml.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "ലോഡ്‌ ചെയ്യുന്നു..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ഡാറ്റ ലോഡുചെയ്യാന്‍ കഴിയുന്നില്ല. വീണ്ടും ശ്രമിക്കുന്നതിന് ടാപ്പുചെയ്യുക" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "വിജറ്റ് ഡാറ്റ ലോഡ് ചെയ്യാൻ ഇവിടെ സ്പർശിക്കുക" + diff --git a/widget_viewer_dali/po/mn_MN.po b/widget_viewer_dali/po/mn_MN.po new file mode 100755 index 0000000..0d515f7 --- /dev/null +++ b/widget_viewer_dali/po/mn_MN.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Ачаалж байна..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Өгөгдөл ачаалах боломжгүй. Товшиж дахин оролд" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Тоног. өгөг. ачаал. энд товш" + diff --git a/widget_viewer_dali/po/mr.po b/widget_viewer_dali/po/mr.po new file mode 100755 index 0000000..3bcf03b --- /dev/null +++ b/widget_viewer_dali/po/mr.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "लोड होत आहे..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "डेटा लोड करण्यामध्‍ये अक्षम. पुनर्प्रयत्न करण्‍यासाठी टॅप करा." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "विजेट डेटा लोड करण्‍यास येथे टॅप करा" + diff --git a/widget_viewer_dali/po/ms.po b/widget_viewer_dali/po/ms.po new file mode 100755 index 0000000..413d227 --- /dev/null +++ b/widget_viewer_dali/po/ms.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Memuat…" + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Tidak dapat memuatkan data. Ketik untuk mencuba semula." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Ketik utk muat data widget" + diff --git a/widget_viewer_dali/po/my_ZG.po b/widget_viewer_dali/po/my_ZG.po new file mode 100755 index 0000000..c2f558d --- /dev/null +++ b/widget_viewer_dali/po/my_ZG.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "အခ်က္အလက္ျဖည့္သြင္းေနပါသည္…" + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ေဒတာ တင္ရန္ မရႏိုင္ပါ။ ျပန္ၾကိဳးစားရန္ ႏွိပ္ပါ။" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "ဝဒ္ဂ်က္ေဒတာကုိ ရယူရန္ ဤေနရာကုိ ႏွိပ္ပါ" + diff --git a/widget_viewer_dali/po/ne.po b/widget_viewer_dali/po/ne.po new file mode 100755 index 0000000..dd751d8 --- /dev/null +++ b/widget_viewer_dali/po/ne.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "लोड हुँदै छ..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "डाटा लोड गर्न सकेन। पुन: प्रयास गर्नुहोस् मा ट्याप गर्नुहोस्।" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "विजेट डाटा लोड गर्न यहाँ ट्याप गर्नु" + diff --git a/widget_viewer_dali/po/or.po b/widget_viewer_dali/po/or.po new file mode 100755 index 0000000..95e255a --- /dev/null +++ b/widget_viewer_dali/po/or.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "ଲୋଡ୍ ହେଉଛି..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ଡାଟା ଲୋଡ୍ କରିବାକୁ ଅସମର୍ଥ। ପୁନଃଚେଷ୍ଟା କରିବାକୁ ଟ୍ୟାପ୍ କରନ୍ତୁ।" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "ୱିଜେ. ଡାଟା ଲୋଡ୍‍ କରି. ଏଠା. ଟ୍ୟାପ୍" + diff --git a/widget_viewer_dali/po/pa.po b/widget_viewer_dali/po/pa.po new file mode 100755 index 0000000..dde5618 --- /dev/null +++ b/widget_viewer_dali/po/pa.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ਡੈਟਾ ਨੂੰ ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "ਵਿੱਜੇਟ ਡੈਟਾ ਲੋਡ ਕਰਨ ਲਈ ਇੱਥੇ ਟੈਪ ਕਰੋ" + diff --git a/widget_viewer_dali/po/pt_BR.po b/widget_viewer_dali/po/pt_BR.po new file mode 100755 index 0000000..f2fb3b5 --- /dev/null +++ b/widget_viewer_dali/po/pt_BR.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Carregando..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Não é possível carregar os dados. Toque para tentar novamente." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Tocar carreg. dados widget" + diff --git a/widget_viewer_dali/po/pt_PT.po b/widget_viewer_dali/po/pt_PT.po new file mode 100755 index 0000000..b953672 --- /dev/null +++ b/widget_viewer_dali/po/pt_PT.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "A carregar..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Impossível carregar dados. Toque para tentar novamente." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Toque p/ carregar dados widget" + diff --git a/widget_viewer_dali/po/ru_RU.po b/widget_viewer_dali/po/ru_RU.po new file mode 100755 index 0000000..e69de9b --- /dev/null +++ b/widget_viewer_dali/po/ru_RU.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Загрузка..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Не удалось загрузить данные. Коснитесь для повтора" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Нажм. для загрузки данных" + diff --git a/widget_viewer_dali/po/si.po b/widget_viewer_dali/po/si.po new file mode 100755 index 0000000..8a85b10 --- /dev/null +++ b/widget_viewer_dali/po/si.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "ප්‍රෙව්ශනය කරමින්..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "දත්ත ප්‍රවේශනය කිරීමට නොහැකිය. යළි උත්සාහ කිරීමට තට්ටු කරන්න" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "විජෙ. දත්ත පූරණයට මෙතැන ත. ක." + diff --git a/widget_viewer_dali/po/su_ID.po b/widget_viewer_dali/po/su_ID.po new file mode 100755 index 0000000..623411e --- /dev/null +++ b/widget_viewer_dali/po/su_ID.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Ngamuat..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Teu tiasa ngamuat data. Ketok pikeun nyobi deui." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Ketok di dieu pikeun muka data widget" + diff --git a/widget_viewer_dali/po/ta.po b/widget_viewer_dali/po/ta.po new file mode 100755 index 0000000..2770de9 --- /dev/null +++ b/widget_viewer_dali/po/ta.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "லோடிங்..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "தரவை ஏற்ற இயலவில்லை. மீண்டும் முயலவென டேப் செய்க." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "விட்ஜெட் தரவை ஏற்ற, டேப் செய்." + diff --git a/widget_viewer_dali/po/te.po b/widget_viewer_dali/po/te.po new file mode 100755 index 0000000..0998bb6 --- /dev/null +++ b/widget_viewer_dali/po/te.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "లోడ్ అవుతోంది..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "డేటాను లోడ్ చేయడం సాధ్యం కాదు. మళ్లీ ప్రయత్నించడానికి ట్యాప్ చేయండి." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "విడ్జెట్ డేటాను లోడ్ చేయడానికి ఇక్కడ ట్యాప్ చేయండి" + diff --git a/widget_viewer_dali/po/tg_TJ.po b/widget_viewer_dali/po/tg_TJ.po new file mode 100755 index 0000000..ff4285d --- /dev/null +++ b/widget_viewer_dali/po/tg_TJ.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Боркунӣ..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Unable to load data. Tap to retry." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Инҷо зарб з., итт.виҷ.бор к." + diff --git a/widget_viewer_dali/po/th.po b/widget_viewer_dali/po/th.po new file mode 100755 index 0000000..dc80e32 --- /dev/null +++ b/widget_viewer_dali/po/th.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "กำลังประมวลผล..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ไม่สามารถโหลดข้อมูลได้ แตะเพื่อลองอีกครั้ง" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "แตะที่นี่เพื่อโหลดข้อมูล Widget" + diff --git a/widget_viewer_dali/po/tk_TM.po b/widget_viewer_dali/po/tk_TM.po new file mode 100755 index 0000000..e9946e6 --- /dev/null +++ b/widget_viewer_dali/po/tk_TM.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Ýükleýär..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Unable to load data. Tap to retry." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Wijet magl ýükl üçn şuňa bas" + diff --git a/widget_viewer_dali/po/tl.po b/widget_viewer_dali/po/tl.po new file mode 100755 index 0000000..846ba71 --- /dev/null +++ b/widget_viewer_dali/po/tl.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Naglo-load..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Hindi ma-load ang data. I-tap upang subukang muli." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "I-tap dito para i-load ang data ng widget" + diff --git a/widget_viewer_dali/po/tr_TR.po b/widget_viewer_dali/po/tr_TR.po new file mode 100755 index 0000000..eac167c --- /dev/null +++ b/widget_viewer_dali/po/tr_TR.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Yükleniyor..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Veri yüklenemiyor. Tekrar denemek için dokunun." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Widget vrlrni yklmk içn dknn" + diff --git a/widget_viewer_dali/po/uk.po b/widget_viewer_dali/po/uk.po new file mode 100755 index 0000000..b4f1910 --- /dev/null +++ b/widget_viewer_dali/po/uk.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Завантаження..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Неможливо завантажити дані. Натисніть, щоб спробувати ще раз" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Торкн. для зав. дан. відж." + diff --git a/widget_viewer_dali/po/ur.po b/widget_viewer_dali/po/ur.po new file mode 100755 index 0000000..9b90a3c --- /dev/null +++ b/widget_viewer_dali/po/ur.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "لوڈنگ..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "ڈیٹا لوڈ کرنے سے قاصر۔ پھرکوشش کرنے کے لئے تھپتھپائیں۔" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "ویجیٹ کا ڈیٹا لوڈ کرنے کے لیے یہاں تھپکی دیں" + diff --git a/widget_viewer_dali/po/uz.po b/widget_viewer_dali/po/uz.po new file mode 100755 index 0000000..4413533 --- /dev/null +++ b/widget_viewer_dali/po/uz.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Yuklanmoqda..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Ma’lumotni yuklab bo‘lmaydi. Qayta urinib ko‘rish uchun cherting" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Vidjet ma’l. yuklash u-n teg" + diff --git a/widget_viewer_dali/po/vi.po b/widget_viewer_dali/po/vi.po new file mode 100755 index 0000000..080962c --- /dev/null +++ b/widget_viewer_dali/po/vi.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Đang tải…" + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Không thể tải dữ liệu. Hãy chạm để thử lại." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Chạm để tải dữ liệu widget" + diff --git a/widget_viewer_dali/po/xh.po b/widget_viewer_dali/po/xh.po new file mode 100755 index 0000000..73194f4 --- /dev/null +++ b/widget_viewer_dali/po/xh.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Kufakwa iinkcukacha..." + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Ayikwazi kulayisha ingcombolo. Thepa ukuze uzame kwakhona." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Betha apha ukongeza idatha ye-widget" + diff --git a/widget_viewer_dali/po/zh_CN.po b/widget_viewer_dali/po/zh_CN.po new file mode 100755 index 0000000..fe8d886 --- /dev/null +++ b/widget_viewer_dali/po/zh_CN.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "载入中…" + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "无法载入数据。轻敲以重试。" + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "点击此处以载入小组件数据" + diff --git a/widget_viewer_dali/po/zu.po b/widget_viewer_dali/po/zu.po new file mode 100755 index 0000000..9cbbc5c --- /dev/null +++ b/widget_viewer_dali/po/zu.po @@ -0,0 +1,9 @@ +msgid "IDS_ST_POP_LOADING_ING" +msgstr "Iyalayisha…" + +msgid "IDS_HS_BODY_UNABLE_TO_LOAD_DATA_TAP_TO_RETRY" +msgstr "Ayikwazi ukulayisha idatha. Thepha ukuze uzame futhi." + +msgid "IDS_HS_NPBODY_TAP_HERE_TO_LOAD_WIDGET_DATA_ABB" +msgstr "Thepha lapha ukuze ulayishe ulwazi lwewijethi" + diff --git a/widget_viewer_dali/public_api/widget_view/widget_view.cpp b/widget_viewer_dali/public_api/widget_view/widget_view.cpp new file mode 100644 index 0000000..064b7cd --- /dev/null +++ b/widget_viewer_dali/public_api/widget_view/widget_view.cpp @@ -0,0 +1,125 @@ +/* + * Samsung API + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// CLASS HEADER +#include + +// INTERNAL INCLUDES +#include + +namespace Dali +{ + +namespace WidgetView +{ + +WidgetView WidgetView::New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) +{ + return Internal::WidgetView::New( widgetId, contentInfo, width, height, updatePeriod ); +} + +WidgetView WidgetView::DownCast( BaseHandle handle ) +{ + return Toolkit::Control::DownCast( handle ); +} + +WidgetView::WidgetView() +{ +} + +WidgetView::WidgetView( const WidgetView& handle ) +: Toolkit::Control( handle ) +{ +} + +WidgetView& WidgetView::operator=( const WidgetView& handle ) +{ + if( &handle != this ) + { + Control::operator=( handle ); + } + return *this; +} + +WidgetView::~WidgetView() +{ +} + +bool WidgetView::PauseWidget() +{ + return Dali::WidgetView::GetImplementation( *this ).PauseWidget(); +} + +bool WidgetView::ResumeWidget() +{ + return Dali::WidgetView::GetImplementation( *this ).ResumeWidget(); +} + +bool WidgetView::CancelTouchEvent() +{ + return Dali::WidgetView::GetImplementation( *this ).CancelTouchEvent(); +} + +void WidgetView::ActivateFaultedWidget() +{ + return Dali::WidgetView::GetImplementation( *this ).ActivateFaultedWidget(); +} + +WidgetView::WidgetViewSignalType& WidgetView::WidgetAddedSignal() +{ + return Dali::WidgetView::GetImplementation(*this).WidgetAddedSignal(); +} + +WidgetView::WidgetViewSignalType& WidgetView::WidgetDeletedSignal() +{ + return Dali::WidgetView::GetImplementation(*this).WidgetDeletedSignal(); +} + +WidgetView::WidgetViewSignalType& WidgetView::WidgetCreationAbortedSignal() +{ + return Dali::WidgetView::GetImplementation(*this).WidgetCreationAbortedSignal(); +} + +WidgetView::WidgetViewSignalType& WidgetView::WidgetContentUpdatedSignal() +{ + return Dali::WidgetView::GetImplementation(*this).WidgetContentUpdatedSignal(); +} + +WidgetView::WidgetViewSignalType& WidgetView::WidgetUpdatePeriodChangedSignal() +{ + return Dali::WidgetView::GetImplementation(*this).WidgetUpdatePeriodChangedSignal(); +} + +WidgetView::WidgetViewSignalType& WidgetView::WidgetFaultedSignal() +{ + return Dali::WidgetView::GetImplementation(*this).WidgetFaultedSignal(); +} + +WidgetView::WidgetView( Internal::WidgetView& implementation ) +: Control( implementation ) +{ +} + +WidgetView::WidgetView( Dali::Internal::CustomActor* internal ) +: Control( internal ) +{ + VerifyCustomActorPointer( internal ); +} + +} // namespace WidgetView + +} // namespace Dali diff --git a/widget_viewer_dali/public_api/widget_view/widget_view.h b/widget_viewer_dali/public_api/widget_view/widget_view.h new file mode 100644 index 0000000..2ac21f3 --- /dev/null +++ b/widget_viewer_dali/public_api/widget_view/widget_view.h @@ -0,0 +1,338 @@ +#ifndef __DALI_WIDGET_VIEW_WIDGET_VIEW_H__ +#define __DALI_WIDGET_VIEW_WIDGET_VIEW_H__ + +/* + * Samsung API + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// EXTERNAL INCLUDES +#include + +namespace Dali +{ + +namespace WidgetView +{ + +namespace Internal DALI_INTERNAL +{ +class WidgetView; +} + +/** + * @addtogroup dali_widget_view + * @{ + */ + +/** + * @brief WidgetView is a class for displaying the widget image and controlling the widget. + * Input events that WidgetView gets are delivered to the widget. + * + * Signals + * | %Signal Name | Method | + * |-----------------------------|----------------------------------------| + * | widgetAdded | @ref WidgetAddedSignal() | + * | widgetDeleted | @ref WidgetDeletedSignal() | + * | widgetCreationAborted | @ref WidgetCreationAbortedSignal() | + * | widgetContentUpdated | @ref WidgetContentUpdatedSignal() | + * | widgetUpdatePeriodChanged | @ref WidgetUpdatePeriodChangedSignal() | + * | widgetFaulted | @ref WidgetFaultedSignal() | + * + * @since_tizen 3.0 + */ +class DALI_IMPORT_API WidgetView : public Toolkit::Control +{ +public: + + /** + * @brief The start and end property ranges for this control. + * @SINCE_1_0.0 + */ + enum PropertyRange + { + PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1, ///< @SINCE_1_0.0 + PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000, ///< Reserve property indices @SINCE_1_0.0 + }; + + /** + * @brief An enumeration of properties belonging to the WidgetView class. + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @SINCE_1_0.0 + */ + struct Property + { + /** + * @brief An enumeration of properties belonging to the WidgetView class. + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @SINCE_1_0.0 + */ + enum + { + // Event side properties + + /** + * @brief name "widgetId", Get the id of the widget, type string, read-only + * @SINCE_1_0.0 + */ + WIDGET_ID = PROPERTY_START_INDEX, + + /** + * @brief name "instanceId", type string, read-only + * @SINCE_1_0.0 + */ + INSTANCE_ID, + + /** + * @brief name "contentInfo", type string, read-only + * @SINCE_1_0.0 + */ + CONTENT_INFO, + + /** + * @brief name "title", type string, read-only + * @SINCE_1_0.0 + */ + TITLE, + + /** + * @brief name "updatePeriod", type float, read-only + * @SINCE_1_0.0 + */ + UPDATE_PERIOD, + + /** + * @brief name "preview", type boolean if it is a show/hide flag, map otherwise + * @SINCE_1_0.0 + */ + PREVIEW, + + /** + * @brief name "loadingText", type boolean if it is a show/hide flag, map otherwise + * @SINCE_1_0.0 + */ + LOADING_TEXT, + + /** + * @brief name "widgetStateFaulted", type boolean + * @SINCE_1_0.0 + */ + WIDGET_STATE_FAULTED, + + /** + * @brief name "permanentDelete", type boolean + * @SINCE_1_0.0 + */ + PERMANENT_DELETE, + + }; + }; + + + /** + * @brief Create widget view. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @param[in] widgetId The widget id. + * @param[in] contentInfo Contents that will be given to the widget instance. + * @param[in] width The widget width. + * @param[in] height The widget height. + * @param[in] updatePeriod The period of updating contents of the widget. + * @return A handle to WidgetView. + */ + static WidgetView New( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); + + /** + * @brief Downcast a handle to WidgetView handle. + * + * If the BaseHandle points is a WidgetView the downcast returns a valid handle. + * If not the returned handle is left empty. + * + * @since_tizen 3.0 + * @param[in] handle Handle to an object + * @return handle to a WidgetView or an empty handle + */ + static WidgetView DownCast( BaseHandle handle ); + + /** + * @brief Creates an empty handle. + * @since_tizen 3.0 + */ + WidgetView(); + + /** + * @brief Copy constructor. + * + * @since_tizen 3.0 + * @param[in] handle The handle to copy from. + */ + WidgetView( const WidgetView& handle ); + + /** + * @brief Assignment operator. + * + * @since_tizen 3.0 + * @param[in] handle The handle to copy from. + * @return A reference to this. + */ + WidgetView& operator=( const WidgetView& handle ); + + /** + * @brief Destructor + * + * This is non-virtual since derived Handle types must not contain data or virtual methods. + * @since_tizen 3.0 + */ + ~WidgetView(); + + /** + * @brief Pauses a given widget. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @return true on success, false otherwise. + */ + bool PauseWidget(); + + /** + * @brief Resume a given widget. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @return true on success, false otherwise. + */ + bool ResumeWidget(); + + /** + * @brief Cancels touch event procedure. + * If you call this function after feed the touch down event, the widget will get ON_HOLD events. + * If a widget gets ON_HOLD event, it will not do anything even if you feed touch up event. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @return true on success, false otherwise. + */ + bool CancelTouchEvent(); + + /** + * @brief Activate a widget in faulted state. + * A widget in faulted state MUST be activated before adding the widget. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + */ + void ActivateFaultedWidget(); + +public: //Signals + + typedef Signal< void ( WidgetView ) > WidgetViewSignalType; ///< WidgetView signal type @since_tizen 3.0 + + /** + * @brief This signal is emitted when the widget is added. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @return The signal to connect to. + */ + WidgetViewSignalType& WidgetAddedSignal(); + + /** + * @brief This signal is emitted when the widget is deleted. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @return The signal to connect to. + */ + WidgetViewSignalType& WidgetDeletedSignal(); + + /** + * @brief This signal is emitted when the widget creation is aborted. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @return The signal to connect to. + */ + WidgetViewSignalType& WidgetCreationAbortedSignal(); + + /** + * @brief This signal is emitted when the widget content is updated. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @return The signal to connect to. + */ + WidgetViewSignalType& WidgetContentUpdatedSignal(); + + /** + * @brief This signal is emitted when the widget update period is changed. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @return The signal to connect to. + */ + WidgetViewSignalType& WidgetUpdatePeriodChangedSignal(); + + /** + * @brief This signal is emitted when the widget process is not running. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @return The signal to connect to. + */ + WidgetViewSignalType& WidgetFaultedSignal(); + +public: // Not intended for application developers + + /** + * @internal + * @brief Creates a handle using the WidgetView::Internal implementation. + * + * @since_tizen 3.0 + * @param[in] implementation The WidgetView implementation. + */ + DALI_INTERNAL WidgetView( Internal::WidgetView& implementation ); + + /** + * @internal + * @brief Allows the creation of this control from an Internal::CustomActor pointer. + * + * @since_tizen 3.0 + * @param[in] internal A pointer to the internal CustomActor. + */ + DALI_INTERNAL WidgetView( Dali::Internal::CustomActor* internal ); +}; + +/** + * @} + */ +} // namespace WidgetView + +} // namespace Dali + +#endif // __DALI_WIDGET_VIEW_WIDGET_VIEW_H__ diff --git a/widget_viewer_dali/public_api/widget_view_manager/widget_view_manager.cpp b/widget_viewer_dali/public_api/widget_view_manager/widget_view_manager.cpp new file mode 100644 index 0000000..26ed61e --- /dev/null +++ b/widget_viewer_dali/public_api/widget_view_manager/widget_view_manager.cpp @@ -0,0 +1,75 @@ +/* + * Samsung API + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// CLASS HEADER +#include + +// EXTERNAL INCLUDES + +// INTERNAL INCLUDES +#include + +namespace Dali +{ + +namespace WidgetView +{ + +WidgetViewManager WidgetViewManager::New( Application application, const std::string& appId ) +{ + Internal::WidgetViewManagerPtr internal = Internal::WidgetViewManager::New( application, appId ); + + return WidgetViewManager( internal.Get() ); +} + +WidgetViewManager WidgetViewManager::DownCast( BaseHandle handle ) +{ + return WidgetViewManager( dynamic_cast< Internal::WidgetViewManager* >( handle.GetObjectPtr() ) ); +} + +WidgetViewManager::WidgetViewManager() +{ +} + +WidgetViewManager::WidgetViewManager( const WidgetViewManager& handle ) +: BaseHandle(handle) +{ +} + +WidgetViewManager& WidgetViewManager::operator=( const WidgetViewManager& handle ) +{ + BaseHandle::operator=(handle); + return *this; +} + +WidgetViewManager::~WidgetViewManager() +{ +} + +WidgetViewManager::WidgetViewManager( Internal::WidgetViewManager* implementation ) +: BaseHandle( implementation ) +{ +} + +WidgetView WidgetViewManager::AddWidget( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ) +{ + return GetImplementation(*this).AddWidget( widgetId, contentInfo, width, height, updatePeriod ); +} + +} // namespace WidgetView + +} // namespace Dali diff --git a/widget_viewer_dali/public_api/widget_view_manager/widget_view_manager.h b/widget_viewer_dali/public_api/widget_view_manager/widget_view_manager.h new file mode 100644 index 0000000..c00ac94 --- /dev/null +++ b/widget_viewer_dali/public_api/widget_view_manager/widget_view_manager.h @@ -0,0 +1,146 @@ +#ifndef __DALI_WIDGET_VIEW_WIDGET_VIEW_MANAGER_H__ +#define __DALI_WIDGET_VIEW_WIDGET_VIEW_MANAGER_H__ + +/* + * Samsung API + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// EXTERNAL INCLUDES +#include +#include + +namespace Dali +{ + +namespace WidgetView +{ + +class WidgetView; + +namespace Internal DALI_INTERNAL +{ +class WidgetViewManager; +} + +/** + * @addtogroup dali_widget_view + * @{ + */ + +/** + * @brief WidgetViewManager manages addition of WidgetView controls. + * + * This class provides the functionality of adding the widget views and controlling the widgets. + * + * @since_tizen 3.0 + */ +class DALI_IMPORT_API WidgetViewManager : public BaseHandle +{ +public: + + /** + * @brief Create widget view manager. + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @param[in] application Application class for the widget view manager. + * @param[in] appId App ID of app with widget viewer dali. + * @return A handle to WidgetViewManager. + */ + static WidgetViewManager New( Application application, const std::string& appId ); + + /** + * @brief Downcast a handle to WidgetViewManager handle. + * + * If the BaseHandle points is a WidgetViewManager the downcast returns a valid handle. + * If not the returned handle is left empty. + * + * @since_tizen 3.0 + * @param[in] handle Handle to an object + * @return handle to a WidgetViewManager or an empty handle + */ + static WidgetViewManager DownCast( BaseHandle handle ); + + /** + * @brief Creates an WidgetViewManager handle. + * + * Calling member functions with an uninitialised handle is not allowed. + * @since_tizen 3.0 + */ + WidgetViewManager(); + + /** + * @brief Copy constructor. + * + * @since_tizen 3.0 + * @param[in] handle The handle to copy from. + */ + WidgetViewManager( const WidgetViewManager& handle ); + + /** + * @brief Assignment operator. + * + * @since_tizen 3.0 + * @param[in] handle The handle to copy from. + * @return A reference to this. + */ + WidgetViewManager& operator=( const WidgetViewManager& handle ); + + /** + * @brief Destructor + * + * This is non-virtual since derived Handle types must not contain data or virtual methods. + * @since_tizen 3.0 + */ + ~WidgetViewManager(); + + /** + * @brief Creates a new widget view object + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/widget.viewer + * @param[in] widgetId The widget id. + * @param[in] contentInfo Contents that will be given to the widget instance. + * @param[in] width The widget width. + * @param[in] height The widget height. + * @param[in] updatePeriod The period of updating contents of the widget. + * @return A handle to WidgetView. + */ + WidgetView AddWidget( const std::string& widgetId, const std::string& contentInfo, int width, int height, float updatePeriod ); + +public: // Not intended for application developers + + /** + * @internal + * @brief Creates a handle using the WidgetView::Internal implementation. + * + * @since_tizen 3.0 + * @param[in] implementation The WidgetViewManager implementation. + */ + explicit DALI_INTERNAL WidgetViewManager( Internal::WidgetViewManager* implementation ); +}; + +/** + * @} + */ + +} // namespace WidgetView + +} // namespace Dali + +#endif // __DALI_WIDGET_VIEW_WIDGET_VIEW_MANAGER_H__ diff --git a/widget_viewer_dali/public_api/widget_viewer_dali.h b/widget_viewer_dali/public_api/widget_viewer_dali.h new file mode 100644 index 0000000..858784b --- /dev/null +++ b/widget_viewer_dali/public_api/widget_viewer_dali.h @@ -0,0 +1,24 @@ +#ifndef __WIDGET_VIEWER_DALI_H__ +#define __WIDGET_VIEWER_DALI_H__ + +/* + * Samsung API + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +#endif // __WIDGET_VIEWER_DALI_H__