void (*selected)(void *data, int id);
void (*focused)(void *data, int id);
void (*selected_menu)(void *data, int id);
+
+ /* Function to register callback that update what needed and calls menumgr_update when value changes
+ * in system (changed by any app/service etc.). When data == NULL callbacks are unregistered. */
+ void (*update_cb)(void *data);
};
struct menumgr *menumgr_create(Evas_Object *table, Evas_Object *tab_menu_btn,
int settings_picture_get_screen_adjust(void);
const char *settings_picture_get_screen_adjust_str(void);
+/* Sets callbacks for menumgr_update when proper setting changes in system. */
+void settings_picture_set_picture_mode_update_callbacks(void *data);
+void settings_picture_set_contrast_update_callbacks(void *data);
+void settings_picture_set_brightness_update_callbacks(void *data);
+void settings_picture_set_sharpness_update_callbacks(void *data);
+void settings_picture_set_color_update_callbacks(void *data);
+void settings_picture_set_tint_update_callbacks(void *data);
+void settings_picture_set_screen_adj_update_callbacks(void *data);
+
#endif /* __AIR_SETTINGS_PICTURE_H__ */
bool settings_clock_set_current_time(struct tm *current_time);
char *settings_clock_get_clock_status_str();
+/* Set callbacks to call menumgr_update() when status changed
+ * (system settings changes and minute update) */
+void settings_clock_set_state_update_callbacks(void *data);
+
#endif /* SETTINGS_CLOCK_H_ */
/* Sets current language */
void settings_language_set_language(settings_language_type lang_type);
+
/* Gets current language ID */
settings_language_type settings_language_get_language_id(void);
+
/* Gets current locale language string.
* Note that the returned string needs to be freed after use. */
char *settings_language_get_language_locale_str(void);
+
/* Gets current display language string. */
char *settings_language_get_language_display_str(void);
/* Sets current subtitle language */
void settings_language_set_subtitle_language(settings_language_type lang_type);
+
/* Gets current subtitle language ID */
settings_language_type settings_language_get_subtitle_language_id(void);
+
/* Gets current display subtitlelanguage string. */
char *settings_language_get_subtitle_language_display_str(void);
+/* Sets callback for menumgr_update when language system setting changes. */
+void settings_language_set_state_update_callbacks(void *data);
+
+/* Sets callback for menumgr_update when subtitle system setting changes. */
+void settings_language_set_subtitle_state_update_callbacks(void *data);
+
#endif /* __AIR_SETTINGS_LANGUAGE_H__ */
int settings_wakeup_timer_get_channel(void);
//@TODO settings_wakeup_timer_set_timer()
+/* Sets callback for menumgr_update when setting changes in system. */
+void settings_wakeup_timer_set_state_update_callbacks(void *data);
#endif /* __AIR_SETTINGS_WAKEUP_TIMER_H__ */
</ui-application>
<privileges>
<privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ <privilege>http://tizen.org/privilege/alarm.get</privilege>
<privilege>http://tizen.org/privilege/alarm.set</privilege>
<privilege>http://tizen.org/privilege/internet</privilege>
<privilege>http://tizen.org/privilege/network.get</privilege>
m->btn[i] = btn;
m->info[i] = &info[i];
+
+ if (m->info[i]->update_cb)
+ m->info[i]->update_cb(m);
}
return m;
return;
}
- for (i = 0; i < m->len; i++)
+ for (i = 0; i < m->len; i++) {
inputmgr_remove_callback(m->btn[i], &_handler);
+ if (m->info[i]->update_cb)
+ m->info[i]->update_cb(NULL);
+ }
free(m);
}
{
return screen_adj_names[screen_adj];
}
+
+void settings_picture_set_picture_mode_update_callbacks(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
+
+void settings_picture_set_contrast_update_callbacks(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
+
+void settings_picture_set_brightness_update_callbacks(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
+
+void settings_picture_set_sharpness_update_callbacks(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
+
+void settings_picture_set_color_update_callbacks(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
+
+void settings_picture_set_tint_update_callbacks(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
+
+void settings_picture_set_screen_adj_update_callbacks(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
-#include <vconf.h>
#include <alarm.h>
+#include <Ecore.h>
#include <string.h>
-#include "define.h"
+#include <system_settings.h>
+#include <vconf.h>
#include "app_debug.h"
+#include "define.h"
+#include "common/menumgr.h"
#include "data/system/settings_clock.h"
#define MAX_DATETIME_LENGTH 35
+Ecore_Timer *priv_timer = NULL;
+
+static void add_next_minute_cb(void *data);
+
bool settings_clock_is_24h_set(bool *h24)
{
int res = 0;
return strdup(str_buffer);
}
}
+
+static void _system_time_setting_changed_cb(system_settings_key_e key, void *user_data)
+{
+ _DBG("System setting %d changed", key);
+ menumgr_update(user_data);
+}
+
+/* TODO: Change when alarm will work to:
+ * int _minute_update_cb(alarm_id_t alarm_id,void *user_data)
+ */
+static Eina_Bool _minute_update_cb(void *data)
+{
+ menumgr_update(data);
+ add_next_minute_cb(data);
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void add_next_minute_cb(void *data)
+{
+ priv_timer = ecore_timer_add((double)(60 - (time(NULL) % 60)), _minute_update_cb, data);
+/*
+ * Currently gives ERR_ALARM_NO_PERMISSION result despite alarm.set permission set
+ int result = ALARMMGR_RESULT_SUCCESS;
+ alarm_id_t _minute_alarm_id = 0;
+ time_t trigger_at_time = time(NULL);
+ trigger_at_time += 60 - (trigger_at_time % 60);
+ result = alarmmgr_add_alarm_withcb(ALARM_TYPE_VOLATILE, trigger_at_time,
+ (time_t)60, _minute_update_cb, data, &_minute_alarm_id);
+ if (result != ALARMMGR_RESULT_SUCCESS)
+ _ERR("Cannot add alarm. Error value %d", result);
+ else
+ _DBG("Time cb set");
+*/
+/*
+ * This method also gives ERR_ALARM_NO_PERMISSION result as above
+ int ret = ALARMMGR_RESULT_SUCCESS;
+ time_t current_time = 0;
+ struct tm current_tm;
+ alarm_entry_t* alarm = NULL;
+ alarm_id_t alarm_id;
+ alarm_date_t alarm_time;
+
+ time(¤t_time);
+ _DBG("Current time: %s", ctime(¤t_time));
+ localtime_r(¤t_time, ¤t_tm);
+
+ alarm = alarmmgr_create_alarm();
+ if (!alarm) {
+ _ERR("Cannot create alarm");
+ return;
+ }
+ alarm_time.year = current_tm.tm_year + 1900;
+ alarm_time.month = current_tm.tm_mon + 1;
+ alarm_time.day = current_tm.tm_mday;
+ alarm_time.hour = current_tm.tm_hour;
+ alarm_time.min = current_tm.tm_min + 1;
+ alarm_time.sec = 0;
+ _DBG("Alarm time: %d/%d/%d %d:%d:%d\n",
+ alarm_time.year, alarm_time.month, alarm_time.day, alarm_time.hour, alarm_time.min, alarm_time.sec);
+ if(
+ (ret = alarmmgr_set_time(alarm, alarm_time)) != ALARMMGR_RESULT_SUCCESS
+ || (ret = alarmmgr_set_repeat_mode(alarm, ALARM_REPEAT_MODE_REPEAT, 60)) != ALARMMGR_RESULT_SUCCESS
+ || (ret = alarmmgr_set_time(alarm, alarm_time)) != ALARMMGR_RESULT_SUCCESS
+ || (ret = alarmmgr_set_type(alarm, ALARM_TYPE_VOLATILE)) != ALARMMGR_RESULT_SUCCESS
+ || (ret = alarmmgr_add_alarm_with_localtime(alarm, NULL, &alarm_id)) != ALARMMGR_RESULT_SUCCESS
+ ) {
+ _ERR("Failed to create alarm. Error: %d", ret);
+ SYSTEM_SETTINGS_KEY_TIME_CHANGED
+ }
+*/
+}
+
+void settings_clock_set_state_update_callbacks(void *data)
+{
+ int ret = 0;
+ if (data) {
+ if ((ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR,
+ _system_time_setting_changed_cb, data)) != SYSTEM_SETTINGS_ERROR_NONE
+ || (ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED,
+ _system_time_setting_changed_cb, data)) != SYSTEM_SETTINGS_ERROR_NONE
+ || (ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE,
+ _system_time_setting_changed_cb, data)) != SYSTEM_SETTINGS_ERROR_NONE)
+ _ERR("Cannot set callbacks for system settings change. Code = %d", ret);
+
+ /* TODO: look at add_next_minute_cb() comments
+ if (alarmmgr_init("org.tizen.settings") == ALARMMGR_RESULT_SUCCESS
+ && alarmmgr_set_cb(_minute_update_cb, data) == ALARMMGR_RESULT_SUCCESS) {
+ }
+ */
+ add_next_minute_cb(data);
+ /* TODO: ditto
+ } else {
+ _ERR("Failed to initialize alarmmgr");
+ }
+ */
+ } else {
+ if (system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR)
+ != SYSTEM_SETTINGS_ERROR_NONE
+ || system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED)
+ != SYSTEM_SETTINGS_ERROR_NONE
+ || system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE)
+ != SYSTEM_SETTINGS_ERROR_NONE)
+ _ERR("Cannot unset callbacks for system settings change");
+
+ if (!ecore_timer_del(priv_timer))
+ _ERR("Cannot delete ecore timer");
+ }
+}
#include <utils_i18n.h>
#include "app_debug.h"
#include "define.h"
+#include "common/menumgr.h"
#include "data/system/settings_language.h"
#define LANG_LOCALE_STR_L 6
//@TODO: get subtitle language and corresponding display string
return strdup("English");
}
+
+static void _language_update_cb(system_settings_key_e key, void *user_data)
+{
+ _DBG("Language system setting changed");
+ menumgr_update(user_data);
+}
+
+void settings_language_set_state_update_callbacks(void *data)
+{
+ if (data) {
+ if (system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, _language_update_cb, data)
+ != SYSTEM_SETTINGS_ERROR_NONE)
+ _ERR("Cannot set callback for language system setting change");
+ } else {
+ if (system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE)
+ != SYSTEM_SETTINGS_ERROR_NONE)
+ _ERR("Cannot remove callback for language system setting change");
+ }
+}
+
+void settings_language_set_subtitle_state_update_callbacks(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
return TMP_CHANNEL1;
}
+
+void settings_wakeup_timer_set_state_update_callbacks(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
.progress_evas = NULL,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .update_cb = settings_picture_set_picture_mode_update_callbacks
},
{
.id = MENU_CONTRAST,
.progress_evas = NULL,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .update_cb = settings_picture_set_contrast_update_callbacks
},
{
.id = MENU_BRIGHTNESS,
.progress_evas = NULL,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .update_cb = settings_picture_set_brightness_update_callbacks
},
{
.id = MENU_SHARPNESS,
.progress_evas = NULL,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .update_cb = settings_picture_set_sharpness_update_callbacks
},
{
.id = MENU_COLOR,
.progress_evas = NULL,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .update_cb = settings_picture_set_color_update_callbacks
},
{
.id = MENU_TINT,
.progress_evas = NULL,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .update_cb = settings_picture_set_tint_update_callbacks
},
{
.id = MENU_SCREEN_ADJ,
.progress_evas = NULL,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .update_cb = settings_picture_set_screen_adj_update_callbacks
},
};
.disabled = EINA_TRUE,
.status = _get_sw_version,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
{
.id = MENU_MOTION_CONTROL,
.disabled = EINA_TRUE,
.status = NULL,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
{
.id = MENU_USER_MODE,
.disabled = EINA_TRUE,
.status = NULL,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
{
.id = MENU_VOICE_RECOGNITION,
.style = STYLE_NORMAL_BTN,
.disabled = EINA_TRUE,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
{
.id = MENU_SMART_CONTROL,
.disabled = EINA_TRUE,
.status = NULL,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
{
.id = MENU_CONTACT,
.disabled = EINA_TRUE,
.status = NULL,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
};
static void _selected_menu(void *data, int id);
static void _location_selected(void *data, int id);
+/* TODO: Move it to proper file when exist */
+void set_callback_for_sleep_timer_change(void *data);
+
+/* TODO: Move it to proper file when exist */
+void set_callback_for_system_location_change(void *data);
+
static struct menumgr_info menu_info[] = {
{
.id = MENU_CLOCK,
.status = _get_clock_mode,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = settings_clock_set_state_update_callbacks
},
{
.id = MENU_SLEEP_TIMER,
.status = _get_sleep_timer,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = set_callback_for_sleep_timer_change
},
{
.id = MENU_WAKEUP_TIMER,
.status = _get_wakeup_timer,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = settings_wakeup_timer_set_state_update_callbacks
},
{
.id = MENU_CHANGE_PINCODE,
.disabled = EINA_FALSE,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL
},
{
.id = MENU_LANGUAGE,
.status = _get_language,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = settings_language_set_state_update_callbacks
},
{
.id = MENU_SUBTITLE,
.status = _get_subtitle,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = settings_language_set_subtitle_state_update_callbacks
},
{
.id = MENU_LOCATION,
.status = _get_location,
.selected = _location_selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = set_callback_for_system_location_change
},
{
.id = MENU_RESET,
.disabled = EINA_FALSE,
.selected = _selected,
.focused = _focused,
- .selected_menu = _selected_menu
+ .selected_menu = _selected_menu,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL
},
};
return strdup(STR_OFF);
}
+void set_callback_for_sleep_timer_change(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
+
static char *_get_wakeup_timer(void *data, int id)
{
return settings_wakeup_timer_display_str();
return strdup(name);
}
+void set_callback_for_system_location_change(void *data)
+{
+ if (data) {
+ //@TODO: set needed callbacks
+ } else {
+ //@TODO: unset previously set callbacks
+ }
+}
+
static void _selected(void *data, int id)
{
switch (id) {
.disabled = EINA_TRUE,
.status = _get_status,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
{
.id = MENU_VOICE_LANGUAGE,
.disabled = EINA_TRUE,
.status = _get_status,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
{
.id = MENU_TTS_SPEED,
.disabled = EINA_TRUE,
.status = _get_status,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
{
.id = MENU_TTS_LANGUAGE,
.disabled = EINA_TRUE,
.status = _get_status,
.selected = _selected,
+ .progress_value = NULL,
+ .progress_evas = NULL,
+ .update_cb = NULL,
},
};