X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=adaptors%2Ftizen%2Fframework-tizen.cpp;h=9628bddd0fab5d200b9325621a72a76e0a7c0898;hb=d0bee11f2716fecd5198b206c1a9a045f5ef5b7b;hp=addc5a71b9a010b1b600c877a8febf91b52795b1;hpb=dc7687ed7492068f18778cc318076e072c9ed985;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/adaptors/tizen/framework-tizen.cpp b/adaptors/tizen/framework-tizen.cpp index addc5a7..9628bdd 100644 --- a/adaptors/tizen/framework-tizen.cpp +++ b/adaptors/tizen/framework-tizen.cpp @@ -28,7 +28,7 @@ #include #include #include - +#include // CONDITIONAL INCLUDES #ifdef APPCORE_WATCH_AVAILABLE #include @@ -55,13 +55,36 @@ namespace Internal namespace Adaptor { -#if defined(DEBUG_ENABLED) namespace { +#if defined(DEBUG_ENABLED) Integration::Log::Filter* gDBusLogging = Integration::Log::Filter::New( Debug::NoLogging, false, "LOG_ADAPTOR_EVENTS_DBUS" ); -} // anonymous namespace #endif +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) + { + DALI_LOG_ERROR("failed to get system info"); + return false; + } + + retrieved = true; + return feature; +} + +} // anonymous namespace + namespace AppCore { @@ -196,6 +219,10 @@ struct Framework::Impl { ret = AppNormalMain(); } + else if(mApplicationType == WIDGET) + { + ret = AppWidgetMain(); + } else { ret = AppWatchMain(); @@ -209,6 +236,10 @@ struct Framework::Impl { AppNormalExit(); } + else if(mApplicationType == WIDGET) + { + AppWidgetExit(); + } else { AppWatchExit(); @@ -381,8 +412,16 @@ struct Framework::Impl { Framework* framework = static_cast(data); Observer *observer = &framework->mObserver; - framework->SetLanguage( std::string( static_cast(event->value) ) ); - observer->OnLanguageChanged(); + + if( event && event->value ) + { + framework->SetLanguage( std::string( static_cast(event->value) ) ); + observer->OnLanguageChanged(); + } + else + { + DALI_LOG_ERROR( "NULL pointer in Language changed event\n" ); + } } static void AppDeviceRotated(AppCore::AppEventInfoPtr event_info, void *data) @@ -393,8 +432,16 @@ struct Framework::Impl { Framework* framework = static_cast(data); Observer *observer = &framework->mObserver; - framework->SetRegion( std::string( static_cast(event->value) ) ); - observer->OnRegionChanged(); + + if( event && event->value ) + { + framework->SetRegion( std::string( static_cast(event->value) ) ); + observer->OnRegionChanged(); + } + else + { + DALI_LOG_ERROR( "NULL pointer in Region changed event\n" ); + } } static void AppBatteryLow(AppCore::AppEventInfoPtr event, void *data) @@ -495,6 +542,57 @@ struct Framework::Impl appcore_ui_base_exit(); } + void AppWidgetExit() + { + widget_base_exit(); + } + + static int WidgetAppCreate( void *data ) + { + widget_base_on_create(); + return static_cast( static_cast(data)->Create() ); + } + + static int WidgetAppTerminate( void *data ) + { + Observer *observer = &static_cast(data)->mObserver; + observer->OnTerminate(); + + widget_base_on_terminate(); + return 0; + } + + int AppWidgetMain() + { + if( !IsWidgetFeatureEnabled() ) + { + DALI_LOG_ERROR("widget feature is not supported"); + return 0; + } + + AppCore::AppAddEventHandler(&handlers[AppCore::LOW_BATTERY], AppCore::LOW_BATTERY, AppBatteryLow, mFramework); + AppCore::AppAddEventHandler(&handlers[AppCore::LOW_MEMORY], AppCore::LOW_MEMORY, AppMemoryLow, mFramework); + AppCore::AppAddEventHandler(&handlers[AppCore::DEVICE_ORIENTATION_CHANGED], AppCore::DEVICE_ORIENTATION_CHANGED, AppDeviceRotated, mFramework); + AppCore::AppAddEventHandler(&handlers[AppCore::LANGUAGE_CHANGED], AppCore::LANGUAGE_CHANGED, AppLanguageChanged, mFramework); + AppCore::AppAddEventHandler(&handlers[AppCore::REGION_FORMAT_CHANGED], AppCore::REGION_FORMAT_CHANGED, AppRegionChanged, mFramework); + + widget_base_ops ops = widget_base_get_default_ops(); + + /* override methods */ + ops.create = WidgetAppCreate; + ops.terminate = WidgetAppTerminate; + ops.init = AppInit; + ops.finish = AppFinish; + ops.run = AppRun; + ops.exit = AppExit; + + int result = widget_base_init(ops, *mFramework->mArgc, *mFramework->mArgv, mFramework); + + widget_base_fini(); + + return result; + } + #ifdef APPCORE_WATCH_AVAILABLE static bool WatchAppCreate(int width, int height, void *data) {