Then run the following commands:
$ autoreconf --install
- $ /configure --prefix=$DESKTOP_PREFIX
+ $ ./configure --prefix=$DESKTOP_PREFIX
$ make install -j8
### Build target options
Any mNativeWindow; ///< window identifier
RenderSurface* mSurface; ///< Current surface
- TizenPlatform::TizenPlatformAbstraction* mPlatformAbstraction; ///< Platform abstraction
+ TizenPlatform::TizenPlatformAbstraction* mPlatformAbstraction; ///< Platform abstraction
EventHandler* mEventHandler; ///< event handler
CallbackManager* mCallbackManager; ///< Used to install callbacks
// INTERNAL INCLUDES
#include "image-loaders/image-loader.h"
+#include <resource-loader/network/file-download.h>
+#include <platform-abstractions/portable/file-closer.h>
+#include <platform-abstractions/tizen/resource-loader/resource-loading-client.h>
namespace Dali
{
+namespace
+{
+// limit maximum image down load size to 50 MB
+const size_t MAXIMUM_DOWNLOAD_IMAGE_SIZE = 50 * 1024 * 1024 ;
+}
+
PixelData LoadImageFromFile( const std::string& url, ImageDimensions size, FittingMode::Type fittingMode, SamplingMode::Type samplingMode, bool orientationCorrection )
{
Integration::BitmapResourceType resourceType( size, fittingMode, samplingMode, orientationCorrection );
return Dali::PixelData();
}
+ImageDimensions GetClosestImageSize( const std::string& filename,
+ ImageDimensions size,
+ FittingMode::Type fittingMode,
+ SamplingMode::Type samplingMode,
+ bool orientationCorrection )
+{
+ return TizenPlatform::ImageLoader::GetClosestImageSize( filename, size, fittingMode, samplingMode, orientationCorrection );
+}
+
+
+PixelData DownloadImageSynchronously( const std::string& url, ImageDimensions size, FittingMode::Type fittingMode, SamplingMode::Type samplingMode, bool orientationCorrection )
+{
+ Integration::BitmapResourceType resourceType( size, fittingMode, samplingMode, orientationCorrection );
+
+ bool succeeded;
+ Dali::Vector<uint8_t> dataBuffer;
+ size_t dataSize;
+
+ succeeded = TizenPlatform::Network::DownloadRemoteFileIntoMemory( url, dataBuffer, dataSize,
+ MAXIMUM_DOWNLOAD_IMAGE_SIZE );
+ if( succeeded )
+ {
+ void *blobBytes = static_cast<void*>(&dataBuffer[0]);
+ size_t blobSize = dataBuffer.Size();
+
+ DALI_ASSERT_DEBUG( blobSize > 0U );
+ DALI_ASSERT_DEBUG( blobBytes != 0U );
+
+ if( blobBytes != 0 && blobSize > 0U )
+ {
+ // Open a file handle on the memory buffer:
+ Dali::Internal::Platform::FileCloser fileCloser( blobBytes, blobSize, "rb" );
+ FILE * const fp = fileCloser.GetFile();
+ if ( NULL != fp )
+ {
+ Integration::BitmapPtr bitmap;
+ bool result = TizenPlatform::ImageLoader::ConvertStreamToBitmap(
+ resourceType,
+ url,
+ fp,
+ TizenPlatform::StubbedResourceLoadingClient(),
+ bitmap );
+
+ if ( result && bitmap )
+ {
+ return Dali::PixelData::New( bitmap->GetBufferOwnership(),
+ bitmap->GetBufferSize(),
+ bitmap->GetImageWidth(),
+ bitmap->GetImageHeight(),
+ bitmap->GetPixelFormat(),
+ Dali::PixelData::FREE );
+ }
+ else
+ {
+ DALI_LOG_WARNING( "Unable to decode bitmap supplied as in-memory blob.\n" );
+ }
+ }
+ }
+
+ }
+ return Dali::PixelData();
+}
+
+
} // namespace Dali
#define DALI_IMAGE_LOADING_H
/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* @param [in] orientationCorrection Reorient the image to respect any orientation metadata in its header.
* @return handle to the loaded PixelData object or an empty handle in case loading failed.
*/
-DALI_IMPORT_API PixelData LoadImageFromFile( const std::string& url,
- ImageDimensions size = ImageDimensions( 0, 0 ),
- FittingMode::Type fittingMode = FittingMode::DEFAULT,
- SamplingMode::Type samplingMode = SamplingMode::BOX_THEN_LINEAR,
- bool orientationCorrection = true );
+DALI_IMPORT_API PixelData LoadImageFromFile(
+ const std::string& url,
+ ImageDimensions size = ImageDimensions( 0, 0 ),
+ FittingMode::Type fittingMode = FittingMode::DEFAULT,
+ SamplingMode::Type samplingMode = SamplingMode::BOX_THEN_LINEAR,
+ bool orientationCorrection = true );
+
+/**
+ * @brief Determine the size of an image that LoadImageFromFile will provide when
+ * given the same image loading parameters.
+ *
+ * This is a synchronous request.
+ * This function is used to determine the size of an image before it has loaded.
+ * @param[in] filename name of the image.
+ * @param[in] size The requested size for the image.
+ * @param[in] fittingMode The method to use to map the source image to the desired
+ * dimensions.
+ * @param[in] samplingMode The image filter to use if the image needs to be
+ * downsampled to the requested size.
+ * @param[in] orientationCorrection Whether to use image metadata to rotate or
+ * flip the image, e.g., from portrait to landscape.
+ * @return dimensions that image will have if it is loaded with given parameters.
+ */
+DALI_IMPORT_API ImageDimensions GetClosestImageSize(
+ const std::string& filename,
+ ImageDimensions size = ImageDimensions(0, 0),
+ FittingMode::Type fittingMode = FittingMode::DEFAULT,
+ SamplingMode::Type samplingMode = SamplingMode::BOX_THEN_LINEAR ,
+ bool orientationCorrection = true );
+
+/**
+ * @brief Load an image synchronously from a remote resource.
+ *
+ * @param [in] url The URL of the image file to load.
+ * @param [in] size The width and height to fit the loaded image to, 0.0 means whole image
+ * @param [in] fittingMode The method used to fit the shape of the image before loading to the shape defined by the size parameter.
+ * @param [in] samplingMode The filtering method used when sampling pixels from the input image while fitting it to desired size.
+ * @param [in] orientationCorrection Reorient the image to respect any orientation metadata in its header.
+ *
+ * @return handle to the loaded PixelData object or an empty handle in case downloading or decoding failed.
+ */
+DALI_IMPORT_API PixelData DownloadImageSynchronously(
+ const std::string& url,
+ ImageDimensions size = ImageDimensions( 0, 0 ),
+ FittingMode::Type fittingMode = FittingMode::DEFAULT,
+ SamplingMode::Type samplingMode = SamplingMode::BOX_THEN_LINEAR,
+ bool orientationCorrection = true );
+
} // Dali
// EXTERNAL INCLUDES
#ifdef APPCORE_WATCH_AVAILABLE
#include <appcore-watch/watch_app.h>
+#include <appcore-watch/watch_app_extension.h>
#endif
namespace Dali
return second;
}
-#else
+int WatchTime::GetMillisecond() const
+{
+ int millisecond;
+
+ watch_time_get_millisecond(reinterpret_cast<watch_time_h>(mImpl->mTimeHandle), &millisecond);
+ return millisecond;
+}
+
+int WatchTime::GetYear() const
+{
+ int year;
+
+ watch_time_get_year(reinterpret_cast<watch_time_h>(mImpl->mTimeHandle), &year);
+ return year;
+}
+
+int WatchTime::GetMonth() const
+{
+ int month;
+ watch_time_get_month(reinterpret_cast<watch_time_h>(mImpl->mTimeHandle), &month);
+ return month;
+}
+
+int WatchTime::GetDay() const
+{
+ int day;
+
+ watch_time_get_day(reinterpret_cast<watch_time_h>(mImpl->mTimeHandle), &day);
+ return day;
+}
+
+int WatchTime::GetDayOfWeek() const
+{
+ int dayOfWeek;
+
+ watch_time_get_day_of_week(reinterpret_cast<watch_time_h>(mImpl->mTimeHandle), &dayOfWeek);
+ return dayOfWeek;
+}
+
+struct tm WatchTime::GetUtcTime() const
+{
+ struct tm UtcTime;
+
+ watch_time_get_utc_time(reinterpret_cast<watch_time_h>(mImpl->mTimeHandle), &UtcTime);
+ return UtcTime;
+}
+
+time_t WatchTime::GetUtcTimeStamp() const
+{
+ time_t UtcTimeStamp;
+
+ watch_time_get_utc_timestamp(reinterpret_cast<watch_time_h>(mImpl->mTimeHandle), &UtcTimeStamp);
+ return UtcTimeStamp;
+}
+
+const char* WatchTime::GetTimeZone() const
+{
+ char* timeZone;
+
+ watch_time_get_time_zone(reinterpret_cast<watch_time_h>(mImpl->mTimeHandle), &timeZone);
+ return timeZone;
+}
+
+bool WatchTime::GetDaylightSavingTimeStatus() const
+{
+ bool daylight;
+
+ watch_time_get_daylight_time_status(reinterpret_cast<watch_time_h>(mImpl->mTimeHandle), &daylight);
+ return daylight;
+}
+
+#else
WatchTime::WatchTime()
:mImpl(NULL)
{
return 0;
}
-#endif // APPCORE_WATCH_AVAILABLE
+int WatchTime::GetMillisecond() const
+{
+ return 0;
+}
+
+int WatchTime::GetYear() const
+{
+ return 0;
+}
+
+int WatchTime::GetMonth() const
+{
+ return 0;
+}
+
+int WatchTime::GetDay() const
+{
+ return 0;
+}
+
+int WatchTime::GetDayOfWeek() const
+{
+ return 0;
+}
+
+struct tm WatchTime::GetUtcTime() const
+{
+ time_t zero = time(0);
+ return *localtime(&zero);
+}
+
+time_t WatchTime::GetUtcTimeStamp() const
+{
+ return 0;
+}
+
+const char* WatchTime::GetTimeZone() const
+{
+ return 0;
+}
+
+bool WatchTime::GetDaylightSavingTimeStatus() const
+{
+ return 0;
+}
+
+#endif
} // namespace Dali
*/
// EXTERNAL INCLUDES
+#include <time.h>
// INTERNAL INCLUDES
#include <dali/public-api/dali-core.h>
* @brief The WatchTime class is used to get time for the WatchApplication.
*
* A WatchTime has a time handle from watch application framework.
- * You can get time(hour, minute, second) on receiving timeTick signal
+ * You can get time(hour, minute, second, millisecond) and date(year, month, day)
+ * on receiving timeTick signal.
* @SINCE_1_1.37
*/
class DALI_IMPORT_API WatchTime
public:
/**
- * @brief Constructor
+ * @brief Constructor.
* @SINCE_1_1.37
*/
WatchTime();
/**
- * @brief Destructor
+ * @brief Destructor.
* @SINCE_1_1.37
*/
~WatchTime();
/**
- * @brief return current hour
+ * @brief Returns the current hour.
*
* @SINCE_1_1.37
- * @return the current hour
+ * @return The current hour
+ * @note The return value is always positive.
* @pre The WatchTime needs to be initialized.
*/
int GetHour() const;
/**
- * @brief return current hour24
+ * @brief Returns the current hour24.
*
* @SINCE_1_1.37
- * @return the current hour(the 24-hour clock)
+ * @return The current hour(the 24-hour clock)
+ * @note The return value is always positive.
* @pre The WatchTime needs to be initialized.
*/
int GetHour24() const;
/**
- * @brief return current minute
+ * @brief Returns the current minute.
*
* @SINCE_1_1.37
- * @return the current minute
+ * @return The current minute
+ * @note The return value is always positive.
* @pre The WatchTime needs to be initialized.
*/
int GetMinute() const;
/**
- * @brief return current second
+ * @brief Returns the current second.
*
* @SINCE_1_1.37
- * @return the current second
+ * @return The current second
+ * @note The return value is always positive.
* @pre The WatchTime needs to be initialized.
*/
int GetSecond() const;
+ /**
+ * @brief Returns the current millisecond.
+ *
+ * @SINCE_1_2_32
+ * @return The current millisecond
+ * @note The return value is always positive.
+ * @pre The WatchTime needs to be initialized.
+ */
+ int GetMillisecond() const;
+
+ /**
+ * @brief Returns the current year.
+ *
+ * @SINCE_1_2_32
+ * @return The current year
+ * @note The return value is always positive.
+ * @pre The WatchTime needs to be initialized.
+ */
+ int GetYear() const;
+
+ /**
+ * @brief Returns the current month.
+ *
+ * @SINCE_1_2_32
+ * @return The current month
+ * @note The return value is always positive.
+ * @pre The WatchTime needs to be initialized.
+ */
+ int GetMonth() const;
+
+ /**
+ * @brief Returns the current day.
+ *
+ * @SINCE_1_2_32
+ * @return The current day
+ * @note The return value is always positive.
+ * @pre The WatchTime needs to be initialized.
+ */
+ int GetDay() const;
+
+ /**
+ * @brief Returns the current day of week.
+ *
+ * @details The value returns from 1 (Sunday) to 7 (Saturday).
+ *
+ * @SINCE_1_2_32
+ * @return The current day of week
+ * @note The return value is always positive.
+ * @pre The WatchTime needs to be initialized.
+ */
+ int GetDayOfWeek() const;
+
+ /**
+ * @brief Returns the UTC time. (Coordinated Universal Time)
+ *
+ * @details Regarding struct tm (the return value), please refer to the site :
+ * http://www.cplusplus.com/reference/ctime/tm/
+ *
+ * @SINCE_1_2_32
+ * @return The UTC time
+ * @pre The WatchTime needs to be initialized.
+ */
+ struct tm GetUtcTime() const;
+
+ /**
+ * @brief Returns the UTC timestamp.
+ *
+ * @SINCE_1_2_32
+ * @return The UTC timestamp
+ * @pre The WatchTime needs to be initialized.
+ */
+ time_t GetUtcTimeStamp() const;
+
+ /**
+ * @brief Returns the ID of timezone.
+ *
+ * @details The timezone ID, according to the IANA(Internet Assigned Numbers Authority)
+ * If you want to see more information, please refer to the site :
+ * https://en.wikipedia.org/wiki/List_of_tz_database_time_zones/
+ *
+ * @SINCE_1_2_32
+ * @return The ID of timezone
+ * @pre The WatchTime needs to be initialized.
+ */
+ const char* GetTimeZone() const;
+
+ /**
+ * @brief Returns the daylight saving time status.
+ *
+ * @SINCE_1_2_32
+ * @return The Daylight Saving Time status
+ * @pre The WatchTime needs to be initialized.
+ */
+ bool GetDaylightSavingTimeStatus() const;
+
public: // Not intended for application developers
DALI_INTERNAL WatchTime(void *time_handle);
utc-Dali-TtsPlayer.cpp
utc-Dali-Window.cpp
#utc-Dali-Watch.cpp
+ #utc-Dali-Watch-Time.cpp
#utc-Dali-KeyGrab.cpp
)
/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
END_TEST;
}
+
+
+int UtcDaliDownloadImageP(void)
+{
+ std::string url("file://");
+ url.append( gImage_34_RGBA );
+
+ std::string url2("file://");
+ url2.append( gImage_128_RGB );
+
+ PixelData pixelData = Dali::DownloadImageSynchronously( url );
+ DALI_TEST_CHECK( pixelData );
+ DALI_TEST_EQUALS( pixelData.GetWidth(), 34u, TEST_LOCATION );
+ DALI_TEST_EQUALS( pixelData.GetHeight(), 34u, TEST_LOCATION );
+ DALI_TEST_EQUALS( pixelData.GetPixelFormat(), Pixel::RGBA8888, TEST_LOCATION );
+
+ PixelData pixelData2 = Dali::DownloadImageSynchronously( url2 );
+ DALI_TEST_CHECK( pixelData2 );
+ DALI_TEST_EQUALS( pixelData2.GetWidth(), 128u, TEST_LOCATION );
+ DALI_TEST_EQUALS( pixelData2.GetHeight(), 128u, TEST_LOCATION );
+ DALI_TEST_EQUALS( pixelData2.GetPixelFormat(), Pixel::RGB888, TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliDownloadImageN(void)
+{
+ PixelData pixelData = Dali::DownloadImageSynchronously( gImageNonExist );
+ DALI_TEST_CHECK( !pixelData );
+
+ END_TEST;
+}
--- /dev/null
+/*
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 <dali/dali.h>
+#include <dali-test-suite-utils.h>
+#include "public-api/dali-wearable.h"
+#include <appcore-watch/watch_app.h>
+#include <appcore-watch/watch_app_extension.h>
+#include <stdlib.h>
+#define TIMEZONE_BUFFER_MAX 102
+
+using namespace Dali;
+
+void utc_dali_watchtime_startup(void)
+{
+ test_return_value = TET_UNDEF;
+}
+
+void utc_dali_watchtime_cleanup(void)
+{
+ test_return_value = TET_PASS;
+}
+
+namespace
+{
+
+struct MyTestApp : public ConnectionTracker
+{
+ MyTestApp( WatchApplication& app)
+ : initCalled( false ),
+ mApplication( app )
+ {
+ mApplication.InitSignal().Connect( this, &MyTestApp::Create );
+ }
+
+ void Create(Application& app)
+ {
+ initCalled = true;
+ }
+
+ void Quit()
+ {
+ mApplication.Quit();
+ }
+
+ // Data
+ bool initCalled;
+ WatchApplication& mApplication;
+};
+
+} // unnamed namespace
+
+int UtcDaliWatchTimeNew(void)
+{
+ WatchTime watchTime;
+ WatchTime *watchTimeRef = &watchTime;
+
+ DALI_TEST_CHECK( watchTimeRef );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetHour(void)
+{
+ int ret, hour;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_hour(watch_time, &hour);
+
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetHour() == hour );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetHour24(void)
+{
+ int ret, hour24;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_hour24(watch_time, &hour24);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetHour24() == hour24 );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetMinute(void)
+{
+ int ret, minute;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_minute(watch_time, &minute);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetMinute() == minute );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetSecond(void)
+{
+ int ret, second;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_second(watch_time, &second);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetSecond() == second );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetMillisecond(void)
+{
+ int ret, millisecond;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_millisecond(watch_time, &millisecond);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetMillisecond() == millisecond );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetYear(void)
+{
+ int ret, year;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_year(watch_time, &year);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetYear() == year );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetMonth(void)
+{
+ int ret, month;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_month(watch_time, &month);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetMonth() == month );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetDay(void)
+{
+ int ret, day;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_day(watch_time, &day);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetDay() == day );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetDayOfWeek(void)
+{
+ int ret, dayOfWeek;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_day_of_week(watch_time, &dayOfWeek);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetDayOfWeek() == dayOfWeek );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetUtcTime(void)
+{
+ int ret;
+ struct tm *utcTime = (struct tm *)calloc( 1, sizeof( struct tm ) );
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_day(watch_time, utcTime);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetUtcTime().tm_sec == (*utcTime).tm_sec );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetUtcTimeStamp(void)
+{
+ int ret;
+ time_t *timeStamp = (time_t *)calloc( 1, sizeof( time_t ) );
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_day(watch_time, timeStamp);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetUtcTimeStamp() == *timeStamp );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetTimeZone(void)
+{
+ int ret;
+ char *timeZone[TIMEZONE_BUFFER_MAX] = {0,};
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_day(watch_time, timeZone);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetTimeZone() == timeZone );
+
+ END_TEST;
+}
+
+int UtcDaliWatchTimeGetDaylightSavingTimeStatus(void)
+{
+ int ret;
+ bool daylight;
+ WatchTime watchTime;
+ watch_time_h watch_time = {0,};
+
+ ret = watch_time_get_current_time(&watch_time);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ ret = watch_time_get_day(watch_time, &daylight);
+ DALI_TEST_CHECK( ret == APP_ERROR_NONE );
+
+ DALI_TEST_CHECK( watchTime.GetDaylightSavingTimeStatus() == daylight );
+
+ END_TEST;
+}
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
const long INCLUDE_BODY = 0L;
const long EXCLUDE_BODY = 1L;
+/**
+ * Curl library environment. Direct initialize ensures it's constructed before adaptor
+ * or application creates any threads.
+ */
+static Dali::TizenPlatform::Network::CurlEnvironment gCurlEnvironment;
+
+
void ConfigureCurlOptions( CURL* curl_handle, const std::string& url )
{
curl_easy_setopt( curl_handle, CURLOPT_URL, url.c_str() );
}
return true;
}
+
+
} // unnamed namespace
+namespace Network
+{
+
+CurlEnvironment::CurlEnvironment()
+{
+ // Must be called before we attempt any loads. e.g. by using curl_easy_init()
+ // and before we start any threads.
+ curl_global_init(CURL_GLOBAL_ALL);
+}
+
+CurlEnvironment::~CurlEnvironment()
+{
+ curl_global_cleanup();
+}
+
-bool Network::DownloadRemoteFileIntoMemory( const std::string& url,
- Dali::Vector<uint8_t>& dataBuffer,
- size_t& dataSize,
- size_t maximumAllowedSizeBytes )
+bool DownloadRemoteFileIntoMemory( const std::string& url,
+ Dali::Vector<uint8_t>& dataBuffer,
+ size_t& dataSize,
+ size_t maximumAllowedSizeBytes )
{
if( url.empty() )
{
return result;
}
+} // namespace Network
} // namespace TizenPlatform
#define __DALI_TIZEN_PLATFORM_NETWORK_FILE_DOWNLOAD_H__
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
{
/**
+ * Set up the cURL environment - this will ensure curl_global_init is called on startup
+ * and curl_global_cleanup is called on shutdown.
+ * Having this environment enables curl to be used in a single or multi-threaded
+ * program safely.
+ */
+class CurlEnvironment
+{
+public:
+ /**
+ * Constructor calls curl_global_init()
+ */
+ CurlEnvironment();
+
+ /**
+ * Destructor calls curl_global_cleanup()
+ */
+ ~CurlEnvironment();
+};
+
+
+/**
* Download a requested file into a memory buffer.
- * Threading notes: This function can be called from multiple threads, however l
+ *
+ * @note Threading notes: This function can be called from multiple threads, however
* we must explicitly call curl_global_init() from a single thread before using curl
* as the global function calls are not thread safe.
*
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#define __DALI_TIZEN_PLATFORM_NETWORK_UTILS_H__
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <dlog.h>
-#define DEBUG_PRINTF(fmt, arg...) LOGD(" "fmt, ##arg)
+#define DEBUG_PRINTF(fmt, arg...) LOGD(" " fmt, ##arg)
using std::string;
using namespace Dali;