#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
+#include <time.h>
#include <sys/types.h>
#include <libxml/tree.h>
#include "complication_parser_plugin_internal.h"
-#define DEFAULT_SHORT_TEXT "default-shorttext"
-#define DEFAULT_LONG_TEXT "default-longtext"
+#define DEFAULT_SHORT_TEXT "default-short-text"
+#define DEFAULT_LONG_TEXT "default-long-text"
#define DEFAULT_ICON "default-icon"
#define DEFAULT_TITLE "default-title"
#define DEFAULT_HOUR "default-hour"
#define DEFAULT_MINUTE "default-minute"
#define DEFAULT_SECOND "default-second"
-#define DEFAULT_CURRENT "default-current"
+#define DEFAULT_CURRENT "default-value"
#define DEFAULT_MAX "default-max"
#define DEFAULT_MIN "default-min"
#define DEFAULT_IMAGE "default-image"
return is_valid;
}
+static int _get_time_value(const char* time_type, const char* time_val,
+ char* prev_value, char** default_value) {
+ time_t rawtime;
+ struct tm * timeinfo;
+
+ if (time_type == NULL || time_val == NULL || default_value == NULL) {
+ LOGE("Invalid param");
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
+
+ if (prev_value == NULL)
+ time(&rawtime);
+ else
+ rawtime = strtol(prev_value, NULL, 10);
+
+ timeinfo = localtime(&rawtime);
+ if (strcmp(DEFAULT_HOUR, time_type) == 0) {
+ int hour = atoi(time_val);
+ if (hour < 0 || hour >= 24) {
+ LOGE("Invalid param %s (%d)", time_type, hour);
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
+ timeinfo->tm_hour = hour;
+ } else if (strcmp(DEFAULT_MINUTE, time_type) == 0) {
+ int minute = atoi(time_val);
+ if (minute < 0 || minute >= 60) {
+ LOGE("Invalid param %s (%d)", time_type, minute);
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
+ timeinfo->tm_min = minute;
+ } else if (strcmp(DEFAULT_SECOND, time_type) == 0) {
+ int second = atoi(time_val);
+ if (second < 0 || second >= 60) {
+ LOGE("Invalid param %s (%d)", time_type, second);
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
+ timeinfo->tm_sec = second;
+ }
+
+ time_t default_time = mktime(timeinfo);
+ char num_str[32] = {0,};
+ snprintf(num_str, sizeof(num_str), "%ld", default_time);
+ *default_value = num_str;
+ LOGD("%d/%d/%d %d:%d:%d (%s)",
+ timeinfo->tm_year, timeinfo->tm_mon, timeinfo->tm_mday, timeinfo->tm_hour,
+ timeinfo->tm_min, timeinfo->tm_sec, *default_value);
+
+ return WATCHFACE_COMPLICATION_ERROR_NONE;
+}
+
static int _parse_support_type(xmlNode* node, sqlite3* db, const char* pkgid,
const char* appid, const char* providerid, int period) {
int ret;
bundle_raw* raw = NULL;
int len = 0;
const char* bundle_key;
+ char* default_value = NULL;
+ char* prev_value;
static const char query[] =
"INSERT INTO complication_provider ( "
goto out;
}
- ret = bundle_add_str(default_data, bundle_key,
- (char *)tmpdata->children->content);
+ if (strcmp(bundle_key, TIME_KEY) == 0) {
+ prev_value = NULL;
+ bundle_get_str(default_data, TIME_KEY, &prev_value);
+ ret = _get_time_value(
+ (const char*)tmpdata->name,
+ (const char*)tmpdata->children->content,
+ prev_value, &default_value);
+ if (ret != WATCHFACE_COMPLICATION_ERROR_NONE)
+ goto out;
+
+ if (prev_value)
+ bundle_del(default_data, TIME_KEY);
+ } else {
+ default_value = (char*)tmpdata->children->content;
+ }
+
+ ret = bundle_add_str(default_data, bundle_key, default_value);
if (ret != BUNDLE_ERROR_NONE) {
- LOGE("bundle add error");
+ LOGE("bundle add error : %d", ret);
goto out;
}
}