[4.0] Enhance application device signal
[platform/core/uifw/dali-adaptor.git] / adaptors / ubuntu / framework-ubuntu.cpp
index c799b39..5fce3b6 100644 (file)
@@ -21,7 +21,6 @@
 // EXTERNAL INCLUDES
 #include <Ecore.h>
 #include <Elementary.h>
-#include <boost/bind.hpp>
 #include <X11/Xlib.h>
 
 #include <dali/integration-api/debug.h>
@@ -62,22 +61,39 @@ struct Framework::Impl
   // Constructor
 
   Impl(void* data)
+  : mAbortCallBack( NULL ),
+    mCallbackManager( CallbackManager::New() ),
+    mLanguage( "NOT_SUPPORTED" ),
+    mRegion( "NOT_SUPPORTED" )
   {
-    mCallbackManager = CallbackManager::New();
   }
 
   ~Impl()
   {
+    delete mAbortCallBack;
+
     // we're quiting the main loop so
     // mCallbackManager->RemoveAllCallBacks() does not need to be called
     // to delete our abort handler
     delete mCallbackManager;
   }
 
-  // Data
+  std::string GetLanguage() const
+  {
+    return mLanguage;
+  }
 
-  boost::function<void(void)> mAbortCallBack;
+  std::string GetRegion() const
+  {
+    return mRegion;
+  }
+
+  // Data
+  CallbackBase* mAbortCallBack;
   CallbackManager *mCallbackManager;
+  std::string mLanguage;
+  std::string mRegion;
+
   // Static methods
 
   /**
@@ -85,7 +101,7 @@ struct Framework::Impl
    */
   static bool AppCreate(void *data)
   {
-    return static_cast<Framework*>(data)->SlpAppStatusHandler(APP_CREATE);
+    return static_cast<Framework*>(data)->AppStatusHandler(APP_CREATE, NULL);
   }
 
   /**
@@ -93,7 +109,7 @@ struct Framework::Impl
    */
   static void AppTerminate(void *data)
   {
-    static_cast<Framework*>(data)->SlpAppStatusHandler(APP_TERMINATE);
+    static_cast<Framework*>(data)->AppStatusHandler(APP_TERMINATE, NULL);
   }
 
   /**
@@ -101,7 +117,7 @@ struct Framework::Impl
    */
   static void AppPause(void *data)
   {
-    static_cast<Framework*>(data)->SlpAppStatusHandler(APP_PAUSE);
+    static_cast<Framework*>(data)->AppStatusHandler(APP_PAUSE, NULL);
   }
 
   /**
@@ -109,7 +125,7 @@ struct Framework::Impl
    */
   static void AppResume(void *data)
   {
-    static_cast<Framework*>(data)->SlpAppStatusHandler(APP_RESUME);
+    static_cast<Framework*>(data)->AppStatusHandler(APP_RESUME, NULL);
   }
 
   /**
@@ -117,21 +133,20 @@ struct Framework::Impl
    */
   static void AppLanguageChange(void* data)
   {
-    static_cast<Framework*>(data)->SlpAppStatusHandler(APP_LANGUAGE_CHANGE);
+    static_cast<Framework*>(data)->AppStatusHandler(APP_LANGUAGE_CHANGE, NULL);
   }
 
 };
 
-Framework::Framework(Framework::Observer& observer, int *argc, char ***argv, const std::string& name)
+Framework::Framework( Framework::Observer& observer, int *argc, char ***argv, Type type )
 : mObserver(observer),
   mInitialised(false),
   mRunning(false),
   mArgc(argc),
   mArgv(argv),
-  mName(name),
   mBundleName(""),
   mBundleId(""),
-  mAbortHandler(boost::bind(&Framework::AbortCallback, this)),
+  mAbortHandler( MakeCallback( this, &Framework::AbortCallback ) ),
   mImpl(NULL)
 {
   InitThreads();
@@ -173,9 +188,9 @@ bool Framework::IsMainLoopRunning()
   return mRunning;
 }
 
-void Framework::AddAbortCallback(boost::function<void(void)> callBack)
+void Framework::AddAbortCallback( CallbackBase* callback )
 {
-  mImpl->mAbortCallBack = callBack;
+  mImpl->mAbortCallBack = callback;
 }
 
 std::string Framework::GetBundleName() const
@@ -193,6 +208,20 @@ std::string Framework::GetBundleId() const
   return mBundleId;
 }
 
+std::string Framework::GetResourcePath()
+{
+  // "DALI_APPLICATION_PACKAGE" is used by Ubuntu specifically to get the already configured Application package path.
+  const char* ubuntuEnvironmentVariable = "DALI_APPLICATION_PACKAGE";
+  char* value = getenv( ubuntuEnvironmentVariable );
+  std::string resourcePath;
+  if ( value != NULL )
+  {
+    resourcePath = value;
+  }
+
+  return resourcePath;
+}
+
 void Framework::SetBundleId(const std::string& id)
 {
   mBundleId = id;
@@ -203,7 +232,7 @@ void Framework::AbortCallback( )
   // if an abort call back has been installed run it.
   if (mImpl->mAbortCallBack)
   {
-    mImpl->mAbortCallBack();
+    CallbackBase::Execute( *mImpl->mAbortCallBack );
   }
   else
   {
@@ -211,7 +240,7 @@ void Framework::AbortCallback( )
   }
 }
 
-bool Framework::SlpAppStatusHandler(int type)
+bool Framework::AppStatusHandler(int type, void *bundleData)
 {
   switch (type)
   {
@@ -219,11 +248,6 @@ bool Framework::SlpAppStatusHandler(int type)
     {
       mInitialised = true;
 
-      // Connect to abnormal exit signals
-      mAbortHandler.AbortOnSignal( SIGINT );
-      mAbortHandler.AbortOnSignal( SIGQUIT );
-      mAbortHandler.AbortOnSignal( SIGKILL );
-
       mObserver.OnInit();
       break;
     }
@@ -237,7 +261,7 @@ bool Framework::SlpAppStatusHandler(int type)
       break;
 
     case APP_TERMINATE:
-     mObserver.OnTerminate();
+      mObserver.OnTerminate();
       break;
 
     case APP_PAUSE:
@@ -260,6 +284,16 @@ void Framework::InitThreads()
   XInitThreads();
 }
 
+std::string Framework::GetLanguage() const
+{
+  return mImpl->GetLanguage();
+}
+
+std::string Framework::GetRegion() const
+{
+  return mImpl->GetRegion();
+}
+
 } // namespace Adaptor
 
 } // namespace Internal