Merge "[*][ctxpopup] direction_get() gives wrong direction"
authorShinwoo Kim <cinoo.kim@samsung.com>
Tue, 18 Oct 2011 05:56:09 +0000 (14:56 +0900)
committerGerrit Code Review <git@Maetan>
Tue, 18 Oct 2011 05:56:09 +0000 (14:56 +0900)
40 files changed:
TC/elm_ts/datefield/Makefile
TC/elm_ts/datefield/tslist
TC/elm_ts/datefield/utc_UIFW_elm_datefield_add_func.c
TC/elm_ts/datefield/utc_UIFW_elm_datefield_date_get_func.c [deleted file]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_date_set_func.c [deleted file]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_format_get_func.c [moved from TC/elm_ts/datefield/utc_UIFW_elm_datefield_date_format_get_func.c with 62% similarity]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_format_set_func.c [moved from TC/elm_ts/datefield/utc_UIFW_elm_datefield_layout_get_func.c with 61% similarity]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_input_panel_state_callback_add_func.c [deleted file]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_input_panel_state_callback_del_func.c [deleted file]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_enabled_get_func.c [new file with mode: 0644]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_enabled_set_func.c [moved from TC/elm_ts/datefield/utc_UIFW_elm_datefield_time_mode_set_func.c with 61% similarity]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_max_get_func.c [moved from TC/elm_ts/datefield/utc_UIFW_elm_datefield_date_format_set_func.c with 61% similarity]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_max_is_abs_func.c [new file with mode: 0644]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_max_set_func.c [moved from TC/elm_ts/datefield/utc_UIFW_elm_datefield_layout_set_func.c with 57% similarity]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_get_func.c [new file with mode: 0644]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_is_abs_func.c [new file with mode: 0644]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_set_func.c [new file with mode: 0644]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_value_get_func.c [moved from TC/elm_ts/datefield/utc_UIFW_elm_datefield_time_mode_get_func.c with 58% similarity]
TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_value_set_func.c [new file with mode: 0644]
config/default/base.src
config/illume/base.src
config/slp/base.src
config/standard/base.src
debian/changelog
src/bin/config.c
src/lib/Elementary.h.in
src/lib/elc_naviframe.c
src/lib/elm_config.c
src/lib/elm_conform.c
src/lib/elm_datefield.c
src/lib/elm_genlist.c
src/lib/elm_main.c
src/lib/elm_priv.h
src/lib/elm_scroller.c
src/lib/elm_segment_control.c
src/lib/elm_stackedicon.c
src/lib/els_pan.c
src/lib/els_pan.h
src/lib/els_scroller.c
src/lib/els_scroller.h

index 07cae8e..e134952 100755 (executable)
@@ -1,16 +1,18 @@
 CC ?= gcc
 
 TARGETS = utc_UIFW_elm_datefield_add_func \
-         utc_UIFW_elm_datefield_layout_set_func \
-         utc_UIFW_elm_datefield_layout_get_func \
-         utc_UIFW_elm_datefield_date_set_func \
-         utc_UIFW_elm_datefield_date_get_func \
-         utc_UIFW_elm_datefield_time_mode_set_func \
-         utc_UIFW_elm_datefield_time_mode_get_func \
-         utc_UIFW_elm_datefield_date_format_set_func \
-         utc_UIFW_elm_datefield_date_format_get_func \
-         utc_UIFW_elm_datefield_input_panel_state_callback_add_func \
-         utc_UIFW_elm_datefield_input_panel_state_callback_del_func
+         utc_UIFW_elm_datefield_format_set_func \
+         utc_UIFW_elm_datefield_format_get_func \
+         utc_UIFW_elm_datefield_item_enabled_set_func \
+         utc_UIFW_elm_datefield_item_enabled_get_func \
+         utc_UIFW_elm_datefield_item_max_set_func \
+         utc_UIFW_elm_datefield_item_max_get_func \
+         utc_UIFW_elm_datefield_item_max_is_abs_func \
+         utc_UIFW_elm_datefield_item_min_set_func \
+         utc_UIFW_elm_datefield_item_min_get_func \
+         utc_UIFW_elm_datefield_item_min_is_abs_func \
+         utc_UIFW_elm_datefield_item_value_set_func \
+         utc_UIFW_elm_datefield_item_value_get_func
 
 PKGS = elementary evas
 
index bd14c58..dc8dbe6 100644 (file)
@@ -1,11 +1,13 @@
 /elm_ts/datefield/utc_UIFW_elm_datefield_add_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_layout_set_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_layout_get_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_date_set_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_date_get_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_time_mode_set_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_time_mode_get_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_date_format_set_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_date_format_get_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_input_panel_state_callback_add_func
-/elm_ts/datefield/utc_UIFW_elm_datefield_input_panel_state_callback_del_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_format_set_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_format_get_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_enabled_set_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_enabled_get_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_max_set_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_max_get_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_max_is_abs_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_set_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_get_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_is_abs_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_value_set_func
+/elm_ts/datefield/utc_UIFW_elm_datefield_item_value_get_func
index 6549508..415f426 100644 (file)
@@ -47,7 +47,7 @@ enum {
 struct tet_testlist tet_testlist[] = {
        { utc_UIFW_elm_datefield_add_func_01, POSITIVE_TC_IDX },
        { utc_UIFW_elm_datefield_add_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
+       { NULL, 0 }
 };
 
 static void startup(void)
@@ -66,7 +66,7 @@ static void cleanup(void)
        }
        if ( NULL != main_win ) {
                evas_object_del(main_win);
-               main_win = NULL;
+               main_win = NULL;
        }
        elm_shutdown();
        tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
@@ -77,7 +77,7 @@ static void cleanup(void)
  */
 static void utc_UIFW_elm_datefield_add_func_01(void)
 {
-       datefield = elm_datefield_add(main_win);
+       datefield = elm_datefield_add(main_win);
 
        if (!datefield) {
                tet_infoline("elm_datefield_add() failed in positive test case");
@@ -85,8 +85,6 @@ static void utc_UIFW_elm_datefield_add_func_01(void)
                return;
        }
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
@@ -97,7 +95,7 @@ static void utc_UIFW_elm_datefield_add_func_01(void)
  */
 static void utc_UIFW_elm_datefield_add_func_02(void)
 {
-       datefield = elm_datefield_add(NULL);
+       datefield = elm_datefield_add(NULL);
 
        if (datefield) {
                tet_infoline("elm_datefield_add() failed in negative test case");
@@ -105,8 +103,6 @@ static void utc_UIFW_elm_datefield_add_func_02(void)
                return;
        }
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_date_get_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_date_get_func.c
deleted file mode 100644 (file)
index 4a0f3b4..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#include <tet_api.h>
-#include <Elementary.h>
-
-// Definitions
-// For checking the result of the positive test case.
-#define TET_CHECK_PASS(x1, y...) \
-{ \
-       Evas_Object *err = y; \
-       if (err == (x1)) \
-               { \
-                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
-                       tet_result(TET_FAIL); \
-                       return; \
-               } \
-}
-
-// For checking the result of the negative test case.
-#define TET_CHECK_FAIL(x1, y...) \
-{ \
-       Evas_Object *err = y; \
-       if (err != (x1)) \
-               { \
-                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
-                       tet_result(TET_FAIL); \
-                       return; \
-               } \
-}
-
-
-static Evas_Object *main_win;
-static Evas_Object *datefield;
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_UIFW_elm_datefield_date_get_func_01(void);
-static void utc_UIFW_elm_datefield_date_get_func_02(void);
-
-enum {
-       POSITIVE_TC_IDX = 0x01,
-       NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_date_get_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_date_get_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
-};
-
-static void startup(void)
-{
-       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
-       elm_init(0, NULL);
-       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
-       evas_object_show(main_win);
-}
-
-static void cleanup(void)
-{
-       if ( NULL != datefield) {
-               evas_object_del(datefield);
-               datefield = NULL;
-       }
-       if ( NULL != main_win ) {
-               evas_object_del(main_win);
-               main_win = NULL;
-       }
-       elm_shutdown();
-       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
-}
-
-/**
- * @brief Positive test case of elm_datefield_date_get()
- */
-static void utc_UIFW_elm_datefield_date_get_func_01(void)
-{
-       int year, month, day, hour, min;
-
-       datefield = elm_datefield_add(main_win);
-       elm_datefield_date_set(datefield, 2010, 10, 14, 5, 30);
-       elm_datefield_date_get(datefield, &year, &month, &day, &hour, &min);
-
-       if (!(year == 2010 && month == 10 && day == 14 && hour == 5 && min == 30)) {
-               tet_infoline("elm_datefield_date_get() failed in positive test case");
-               tet_result(TET_FAIL);
-               return;
-       }
-
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
-       evas_object_show(datefield);
-
-       tet_result(TET_PASS);
-}
-
-/**
- * @brief Negative test case of ug_init elm_datefield_date_get()
- */
-static void utc_UIFW_elm_datefield_date_get_func_02(void)
-{
-       datefield = elm_datefield_add(main_win);
-       elm_datefield_date_set(datefield, 2010, 10, 14, 5, 30);
-       elm_datefield_date_get(datefield, NULL, NULL, NULL, NULL, NULL);
-
-       /*if () {
-               tet_infoline("elm_datefield_date_get() failed in negative test case");
-               tet_result(TET_FAIL);
-               return;
-       }*/
-
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
-       evas_object_show(datefield);
-
-       tet_result(TET_PASS);
-}
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_date_set_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_date_set_func.c
deleted file mode 100644 (file)
index 33b1148..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-#include <tet_api.h>
-#include <Elementary.h>
-
-// Definitions
-// For checking the result of the positive test case.
-#define TET_CHECK_PASS(x1, y...) \
-{ \
-       Evas_Object *err = y; \
-       if (err == (x1)) \
-               { \
-                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
-                       tet_result(TET_FAIL); \
-                       return; \
-               } \
-}
-
-// For checking the result of the negative test case.
-#define TET_CHECK_FAIL(x1, y...) \
-{ \
-       Evas_Object *err = y; \
-       if (err != (x1)) \
-               { \
-                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
-                       tet_result(TET_FAIL); \
-                       return; \
-               } \
-}
-
-
-static Evas_Object *main_win;
-static Evas_Object *datefield;
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_UIFW_elm_datefield_date_set_func_01(void);
-static void utc_UIFW_elm_datefield_date_set_func_02(void);
-
-enum {
-       POSITIVE_TC_IDX = 0x01,
-       NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_date_set_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_date_set_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
-};
-
-static void startup(void)
-{
-       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
-       elm_init(0, NULL);
-       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
-       evas_object_show(main_win);
-}
-
-static void cleanup(void)
-{
-       if ( NULL != datefield) {
-               evas_object_del(datefield);
-               datefield = NULL;
-       }
-       if ( NULL != main_win ) {
-               evas_object_del(main_win);
-               main_win = NULL;
-       }
-       elm_shutdown();
-       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
-}
-
-/**
- * @brief Positive test case of elm_datefield_date_set()
- */
-static void utc_UIFW_elm_datefield_date_set_func_01(void)
-{
-       int year, month, day, hour, min;
-
-       datefield = elm_datefield_add(main_win);
-       elm_datefield_date_set(datefield, 2010, 10, 14, 1, 36);
-       elm_datefield_date_get(datefield, &year, &month, &day, &hour, &min);
-
-       if (!(year == 2010 && month == 10 && day == 14 && hour == 1 && min == 36)) {
-               tet_infoline("elm_datefield_date_set() failed in positive test case");
-               tet_result(TET_FAIL);
-               return;
-       }
-
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
-       evas_object_show(datefield);
-
-       tet_result(TET_PASS);
-}
-
-/**
- * @brief Negative test case of ug_init elm_datefield_date_set()
- */
-static void utc_UIFW_elm_datefield_date_set_func_02(void)
-{
-       int year, month, day, hour, min;
-
-       datefield = elm_datefield_add(main_win);
-       elm_datefield_date_set(NULL, 2010, 10, 14, 1, 36);
-       elm_datefield_date_get(datefield, &year, &month, &day, &hour, &min);
-
-       if ((year == 2010 && month == 10 && day == 14 && hour == 1 && min <= 36)) {
-               tet_infoline("elm_datefield_date_set() failed in negative test case");
-               tet_result(TET_FAIL);
-               return;
-       }
-
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
-       evas_object_show(datefield);
-
-       tet_result(TET_PASS);
-}
@@ -36,8 +36,8 @@ static void cleanup(void);
 void (*tet_startup)(void) = startup;
 void (*tet_cleanup)(void) = cleanup;
 
-static void utc_UIFW_elm_datefield_date_format_get_func_01(void);
-static void utc_UIFW_elm_datefield_date_format_get_func_02(void);
+static void utc_UIFW_elm_datefield_format_get_func_01(void);
+static void utc_UIFW_elm_datefield_format_get_func_02(void);
 
 enum {
        POSITIVE_TC_IDX = 0x01,
@@ -45,9 +45,9 @@ enum {
 };
 
 struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_date_format_get_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_date_format_get_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
+       { utc_UIFW_elm_datefield_format_get_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_format_get_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
 };
 
 static void startup(void)
@@ -66,52 +66,50 @@ static void cleanup(void)
        }
        if ( NULL != main_win ) {
                evas_object_del(main_win);
-               main_win = NULL;
+               main_win = NULL;
        }
        elm_shutdown();
        tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
 }
 
 /**
- * @brief Positive test case of elm_datefield_date_format_get()
+ * @brief Positive test case of elm_datefield_format_get()
  */
-static void utc_UIFW_elm_datefield_date_format_get_func_01(void)
+static void utc_UIFW_elm_datefield_format_get_func_01(void)
 {
        const char *format = NULL;
 
        datefield = elm_datefield_add(main_win);
-       format = elm_datefield_date_format_get(datefield);
+       elm_datefield_format_set(datefield, "%B %d, %Y");
+       format = elm_datefield_format_get(datefield);
 
-       if (strcmp(format, "mmddyy")) {
-               tet_infoline("elm_datefield_date_format_get() failed in positive test case");
+       if (strncmp(format, "%B %d, %Y", strlen(format))) {
+               tet_infoline("elm_datefield_format_get() failed in positive test case");
                tet_result(TET_FAIL);
                return;
        }
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
 }
 
 /**
- * @brief Negative test case of ug_init elm_datefield_date_format_get()
+ * @brief Negative test case of ug_init elm_datefield_format_get()
  */
-static void utc_UIFW_elm_datefield_date_format_get_func_02(void)
+static void utc_UIFW_elm_datefield_format_get_func_02(void)
 {
        const char *format = NULL;
 
        datefield = elm_datefield_add(main_win);
-       format = elm_datefield_date_format_get(NULL);
+       format = elm_datefield_format_get(NULL);
 
        if (format) {
-               tet_infoline("elm_datefield_date_format_get() failed in negative test case");
+               tet_infoline("elm_datefield_format_get() failed in negative test case");
                tet_result(TET_FAIL);
                return;
        }
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
+
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
@@ -36,8 +36,8 @@ static void cleanup(void);
 void (*tet_startup)(void) = startup;
 void (*tet_cleanup)(void) = cleanup;
 
-static void utc_UIFW_elm_datefield_layout_get_func_01(void);
-static void utc_UIFW_elm_datefield_layout_get_func_02(void);
+static void utc_UIFW_elm_datefield_format_set_func_01(void);
+static void utc_UIFW_elm_datefield_format_set_func_02(void);
 
 enum {
        POSITIVE_TC_IDX = 0x01,
@@ -45,9 +45,9 @@ enum {
 };
 
 struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_layout_get_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_layout_get_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
+       { utc_UIFW_elm_datefield_format_set_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_format_set_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
 };
 
 static void startup(void)
@@ -60,59 +60,57 @@ static void startup(void)
 
 static void cleanup(void)
 {
-       if ( NULL != datefield) {
+       if ( NULL != datefield ) {
                evas_object_del(datefield);
                datefield = NULL;
        }
        if ( NULL != main_win ) {
                evas_object_del(main_win);
-               main_win = NULL;
+               main_win = NULL;
        }
        elm_shutdown();
        tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
 }
 
 /**
- * @brief Positive test case of elm_datefield_layout_get()
+ * @brief Positive test case of elm_datefield_format_set()
  */
-static void utc_UIFW_elm_datefield_layout_get_func_01(void)
+static void utc_UIFW_elm_datefield_format_set_func_01(void)
 {
-       int r = 0;
+       char *fmt = "%B %d, %Y";
 
        datefield = elm_datefield_add(main_win);
-       r = elm_datefield_layout_get(datefield);
+       elm_datefield_format_set(datefield, fmt);
 
-       if (r != ELM_DATEFIELD_LAYOUT_DATEANDTIME) {
-               tet_infoline("elm_datefield_layout_get() failed in positive test case");
+       if (strncmp(elm_datefield_format_get(datefield), fmt, strlen(fmt))) {
+               tet_infoline("elm_datefield_format_set() failed in positive test case");
                tet_result(TET_FAIL);
                return;
        }
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
 }
 
 /**
- * @brief Negative test case of ug_init elm_datefield_layout_get()
+ * @brief Negative test case of ug_init elm_datefield_format_set()
  */
-static void utc_UIFW_elm_datefield_layout_get_func_02(void)
+static void utc_UIFW_elm_datefield_format_set_func_02(void)
 {
-       int r = 0;
+       char *fmt1, *fmt2;
 
        datefield = elm_datefield_add(main_win);
-       r = elm_datefield_layout_get(NULL);
+       fmt1 = elm_datefield_format_get(datefield);
+       elm_datefield_format_set(datefield, NULL);
+       fmt2 = elm_datefield_format_get(datefield);
 
-       if (r == ELM_DATEFIELD_LAYOUT_DATEANDTIME) {
-               tet_infoline("elm_datefield_layout_get() failed in negative test case");
+       if (strncmp(fmt1, fmt2, strlen(fmt1))) {
+               tet_infoline("elm_datefield_format_set() failed in negative test case");
                tet_result(TET_FAIL);
                return;
        }
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_input_panel_state_callback_add_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_input_panel_state_callback_add_func.c
deleted file mode 100644 (file)
index 93b0a77..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#include <tet_api.h>
-#include <Elementary.h>
-
-// Definitions
-// For checking the result of the positive test case.
-#define TET_CHECK_PASS(x1, y...) \
-{ \
-       Evas_Object *err = y; \
-       if (err == (x1)) \
-               { \
-                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
-                       tet_result(TET_FAIL); \
-                       return; \
-               } \
-}
-
-// For checking the result of the negative test case.
-#define TET_CHECK_FAIL(x1, y...) \
-{ \
-       Evas_Object *err = y; \
-       if (err != (x1)) \
-               { \
-                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
-                       tet_result(TET_FAIL); \
-                       return; \
-               } \
-}
-
-
-static Evas_Object *main_win;
-static Evas_Object *datefield;
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_UIFW_elm_datefield_input_panel_state_callback_add_func_01(void);
-static void utc_UIFW_elm_datefield_input_panel_state_callback_add_func_02(void);
-
-enum {
-       POSITIVE_TC_IDX = 0x01,
-       NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_input_panel_state_callback_add_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_input_panel_state_callback_add_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
-};
-
-static void startup(void)
-{
-       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
-       elm_init(0, NULL);
-       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
-       evas_object_show(main_win);
-}
-
-static void cleanup(void)
-{
-       if ( NULL != datefield) {
-               evas_object_del(datefield);
-               datefield = NULL;
-       }
-       if ( NULL != main_win ) {
-               evas_object_del(main_win);
-               main_win = NULL;
-       }
-       elm_shutdown();
-       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
-}
-
-static void _input_panel_state_cb(void *data, Evas_Object *obj, int value)
-{
-}
-
-/**
- * @brief Positive test case of elm_datefield_input_panel_state_callback_add()
- */
-static void utc_UIFW_elm_datefield_input_panel_state_callback_add_func_01(void)
-{
-       datefield = elm_datefield_add(main_win);
-       elm_datefield_input_panel_state_callback_add(datefield, _input_panel_state_cb, NULL);
-
-       /*if (!r) {
-               tet_infoline("elm_datefield_input_panel_state_callback_add() failed in positive test case");
-               tet_result(TET_FAIL);
-               return;
-       }*/
-
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
-       evas_object_show(datefield);
-
-       tet_result(TET_PASS);
-}
-
-/**
- * @brief Negative test case of ug_init elm_datefield_input_panel_state_callback_add()
- */
-static void utc_UIFW_elm_datefield_input_panel_state_callback_add_func_02(void)
-{
-       datefield = elm_datefield_add(main_win);
-       elm_datefield_input_panel_state_callback_add(NULL, _input_panel_state_cb, NULL);
-
-       /*if (r) {
-               tet_infoline("elm_datefield_input_panel_state_callback_add() failed in negative test case");
-               tet_result(TET_FAIL);
-               return;
-       }*/
-
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
-       evas_object_show(datefield);
-
-       tet_result(TET_PASS);
-}
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_input_panel_state_callback_del_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_input_panel_state_callback_del_func.c
deleted file mode 100644 (file)
index 32f29d5..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#include <tet_api.h>
-#include <Elementary.h>
-
-// Definitions
-// For checking the result of the positive test case.
-#define TET_CHECK_PASS(x1, y...) \
-{ \
-       Evas_Object *err = y; \
-       if (err == (x1)) \
-               { \
-                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
-                       tet_result(TET_FAIL); \
-                       return; \
-               } \
-}
-
-// For checking the result of the negative test case.
-#define TET_CHECK_FAIL(x1, y...) \
-{ \
-       Evas_Object *err = y; \
-       if (err != (x1)) \
-               { \
-                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
-                       tet_result(TET_FAIL); \
-                       return; \
-               } \
-}
-
-
-static Evas_Object *main_win;
-static Evas_Object *datefield;
-
-static void startup(void);
-static void cleanup(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-static void utc_UIFW_elm_datefield_input_panel_state_callback_del_func_01(void);
-static void utc_UIFW_elm_datefield_input_panel_state_callback_del_func_02(void);
-
-enum {
-       POSITIVE_TC_IDX = 0x01,
-       NEGATIVE_TC_IDX,
-};
-
-struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_input_panel_state_callback_del_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_input_panel_state_callback_del_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
-};
-
-static void startup(void)
-{
-       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
-       elm_init(0, NULL);
-       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
-       evas_object_show(main_win);
-}
-
-static void cleanup(void)
-{
-       if ( NULL != datefield) {
-               evas_object_del(datefield);
-               datefield = NULL;
-       }
-       if ( NULL != main_win ) {
-               evas_object_del(main_win);
-               main_win = NULL;
-       }
-       elm_shutdown();
-       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
-}
-
-static void _input_panel_state_cb(void *data, Evas_Object *obj, int value)
-{
-}
-
-/**
- * @brief Positive test case of elm_datefield_input_panel_state_callback_del()
- */
-static void utc_UIFW_elm_datefield_input_panel_state_callback_del_func_01(void)
-{
-       datefield = elm_datefield_add(main_win);
-       elm_datefield_input_panel_state_callback_del(datefield, _input_panel_state_cb);
-
-       /*if (!r) {
-               tet_infoline("elm_datefield_input_panel_state_callback_del() failed in positive test case");
-               tet_result(TET_FAIL);
-               return;
-       }*/
-
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
-       evas_object_show(datefield);
-
-       tet_result(TET_PASS);
-}
-
-/**
- * @brief Negative test case of ug_init elm_datefield_input_panel_state_callback_del()
- */
-static void utc_UIFW_elm_datefield_input_panel_state_callback_del_func_02(void)
-{
-       datefield = elm_datefield_add(main_win);
-       elm_datefield_input_panel_state_callback_del(NULL, _input_panel_state_cb);
-
-       /*if (r) {
-               tet_infoline("elm_datefield_input_panel_state_callback_del() failed in negative test case");
-               tet_result(TET_FAIL);
-               return;
-       }*/
-
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
-       evas_object_show(datefield);
-
-       tet_result(TET_PASS);
-}
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_enabled_get_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_enabled_get_func.c
new file mode 100644 (file)
index 0000000..dbce1e7
--- /dev/null
@@ -0,0 +1,112 @@
+#include <tet_api.h>
+#include <Elementary.h>
+
+// Definitions
+// For checking the result of the positive test case.
+#define TET_CHECK_PASS(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err == (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+// For checking the result of the negative test case.
+#define TET_CHECK_FAIL(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err != (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+
+static Evas_Object *main_win;
+static Evas_Object *datefield;
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_UIFW_elm_datefield_item_enabled_get_func_01(void);
+static void utc_UIFW_elm_datefield_item_enabled_get_func_02(void);
+
+enum {
+       POSITIVE_TC_IDX = 0x01,
+       NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+       { utc_UIFW_elm_datefield_item_enabled_get_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_enabled_get_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
+};
+
+static void startup(void)
+{
+       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
+       elm_init(0, NULL);
+       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
+       evas_object_show(main_win);
+}
+
+static void cleanup(void)
+{
+       if ( NULL != datefield) {
+               evas_object_del(datefield);
+               datefield = NULL;
+       }
+       if ( NULL != main_win ) {
+               evas_object_del(main_win);
+               main_win = NULL;
+       }
+       elm_shutdown();
+       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
+}
+
+/**
+ * @brief Positive test case of elm_datefield_item_enabled_get()
+ */
+static void utc_UIFW_elm_datefield_item_enabled_get_func_01(void)
+{
+       Eina_Bool y_enable = EINA_FALSE, h_enable = EINA_FALSE;
+
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_format_set(datefield, "%B %d, %Y");
+       elm_datefield_item_enabled_set(datefield, ELM_DATEFIELD_YEAR, EINA_FALSE);
+       y_enable = elm_datefield_item_enabled_get(datefield, ELM_DATEFIELD_YEAR);
+       h_enable = elm_datefield_item_enabled_get(datefield, ELM_DATEFIELD_HOUR);
+
+       if (!((!y_enable) && (h_enable))) {
+               tet_infoline("elm_datefield_item_enabled_get() failed in positive test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init elm_datefield_item_enabled_get()
+ */
+static void utc_UIFW_elm_datefield_item_enabled_get_func_02(void)
+{
+       Eina_Bool y_enable;
+
+       datefield = elm_datefield_add(main_win);
+       y_enable = elm_datefield_item_enabled_get(NULL, ELM_DATEFIELD_YEAR);
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
@@ -36,8 +36,8 @@ static void cleanup(void);
 void (*tet_startup)(void) = startup;
 void (*tet_cleanup)(void) = cleanup;
 
-static void utc_UIFW_elm_datefield_time_mode_set_func_01(void);
-static void utc_UIFW_elm_datefield_time_mode_set_func_02(void);
+static void utc_UIFW_elm_datefield_item_enabled_set_func_01(void);
+static void utc_UIFW_elm_datefield_item_enabled_set_func_02(void);
 
 enum {
        POSITIVE_TC_IDX = 0x01,
@@ -45,9 +45,9 @@ enum {
 };
 
 struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_time_mode_set_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_time_mode_set_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
+       { utc_UIFW_elm_datefield_item_enabled_set_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_enabled_set_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
 };
 
 static void startup(void)
@@ -60,48 +60,46 @@ static void startup(void)
 
 static void cleanup(void)
 {
-       if ( NULL != datefield ) {
+       if ( NULL != datefield) {
                evas_object_del(datefield);
                datefield = NULL;
        }
        if ( NULL != main_win ) {
                evas_object_del(main_win);
-               main_win = NULL;
+               main_win = NULL;
        }
        elm_shutdown();
        tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
 }
 
 /**
- * @brief Positive test case of elm_datefield_time_mode_set()
+ * @brief Positive test case of elm_datefield_item_enabled_set()
  */
-static void utc_UIFW_elm_datefield_time_mode_set_func_01(void)
+static void utc_UIFW_elm_datefield_item_enabled_set_func_01(void)
 {
        datefield = elm_datefield_add(main_win);
-       elm_datefield_time_mode_set(datefield, EINA_FALSE);
+       elm_datefield_format_set(datefield, "%B %d, %Y");
+       elm_datefield_item_enabled_set(datefield, ELM_DATEFIELD_YEAR, EINA_FALSE);
 
-       if (elm_datefield_time_mode_get(datefield) != EINA_FALSE) {
-               tet_infoline("elm_datefield_time_mode_set() failed in positive test case");
+       if (elm_datefield_item_enabled_get(datefield, ELM_DATEFIELD_YEAR)) {
+               tet_infoline("elm_datefield_item_enabled_set() failed in positive test case");
                tet_result(TET_FAIL);
                return;
        }
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
 }
 
 /**
- * @brief Negative test case of ug_init elm_datefield_time_mode_set()
+ * @brief Negative test case of ug_init elm_datefield_item_enabled_set()
  */
-static void utc_UIFW_elm_datefield_time_mode_set_func_02(void)
+static void utc_UIFW_elm_datefield_item_enabled_set_func_02(void)
 {
        datefield = elm_datefield_add(main_win);
-       elm_datefield_time_mode_set(NULL, EINA_TRUE);
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
+       elm_datefield_item_enabled_set(NULL, ELM_DATEFIELD_YEAR, EINA_FALSE);
+
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
@@ -36,8 +36,8 @@ static void cleanup(void);
 void (*tet_startup)(void) = startup;
 void (*tet_cleanup)(void) = cleanup;
 
-static void utc_UIFW_elm_datefield_date_format_set_func_01(void);
-static void utc_UIFW_elm_datefield_date_format_set_func_02(void);
+static void utc_UIFW_elm_datefield_item_max_get_func_01(void);
+static void utc_UIFW_elm_datefield_item_max_get_func_02(void);
 
 enum {
        POSITIVE_TC_IDX = 0x01,
@@ -45,9 +45,9 @@ enum {
 };
 
 struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_date_format_set_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_date_format_set_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
+       { utc_UIFW_elm_datefield_item_max_get_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_max_get_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
 };
 
 static void startup(void)
@@ -60,49 +60,50 @@ static void startup(void)
 
 static void cleanup(void)
 {
-       if ( NULL != datefield ) {
+       if ( NULL != datefield) {
                evas_object_del(datefield);
                datefield = NULL;
        }
        if ( NULL != main_win ) {
                evas_object_del(main_win);
-               main_win = NULL;
+               main_win = NULL;
        }
        elm_shutdown();
        tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
 }
 
 /**
- * @brief Positive test case of elm_datefield_date_format_set()
+ * @brief Positive test case of elm_datefield_item_max_get()
  */
-static void utc_UIFW_elm_datefield_date_format_set_func_01(void)
+static void utc_UIFW_elm_datefield_item_max_get_func_01(void)
 {
+       int year_max;
+
        datefield = elm_datefield_add(main_win);
-       elm_datefield_date_format_set(datefield, "ddmmyy");
+       elm_datefield_item_max_set(datefield, ELM_DATEFIELD_YEAR, 120, EINA_FALSE);
+       year_max = elm_datefield_item_max_get(datefield, ELM_DATEFIELD_YEAR);
 
-       if (strcmp(elm_datefield_date_format_get(datefield), "ddmmyy")) {
-               tet_infoline("elm_datefield_date_format_set() failed in positive test case");
+       if (!(year_max == 120)) {
+               tet_infoline("elm_datefield_item_max_get() failed in positive test case");
                tet_result(TET_FAIL);
                return;
        }
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
 }
 
 /**
- * @brief Negative test case of ug_init elm_datefield_date_format_set()
+ * @brief Negative test case of ug_init elm_datefield_item_max_get()
  */
-static void utc_UIFW_elm_datefield_date_format_set_func_02(void)
+static void utc_UIFW_elm_datefield_item_max_get_func_02(void)
 {
+       int year_max;
+
        datefield = elm_datefield_add(main_win);
-       elm_datefield_date_format_set(NULL, "ddmmyy");
+       year_max = elm_datefield_item_max_get(NULL, ELM_DATEFIELD_YEAR);
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_max_is_abs_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_max_is_abs_func.c
new file mode 100644 (file)
index 0000000..e456a88
--- /dev/null
@@ -0,0 +1,117 @@
+#include <tet_api.h>
+#include <Elementary.h>
+
+// Definitions
+// For checking the result of the positive test case.
+#define TET_CHECK_PASS(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err == (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+// For checking the result of the negative test case.
+#define TET_CHECK_FAIL(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err != (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+
+static Evas_Object *main_win;
+static Evas_Object *datefield;
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_UIFW_elm_datefield_item_max_is_absolute_func_01(void);
+static void utc_UIFW_elm_datefield_item_max_is_absolute_func_02(void);
+
+enum {
+       POSITIVE_TC_IDX = 0x01,
+       NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+       { utc_UIFW_elm_datefield_item_max_is_absolute_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_max_is_absolute_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
+};
+
+static void startup(void)
+{
+       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
+       elm_init(0, NULL);
+       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
+       evas_object_show(main_win);
+}
+
+static void cleanup(void)
+{
+       if ( NULL != datefield ) {
+               evas_object_del(datefield);
+               datefield = NULL;
+       }
+       if ( NULL != main_win ) {
+               evas_object_del(main_win);
+               main_win = NULL;
+       }
+       elm_shutdown();
+       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
+}
+
+/**
+ * @brief Positive test case of elm_datefield_item_max_is_absolute()
+ */
+static void utc_UIFW_elm_datefield_item_max_is_absolute_func_01(void)
+{
+       Eina_Bool is_abs = EINA_FALSE;
+
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_max_set(datefield, ELM_DATEFIELD_MONTH, 9, EINA_TRUE);
+       is_abs = elm_datefield_item_max_is_absolute(datefield, ELM_DATEFIELD_MONTH);
+
+       if (!is_abs) {
+               tet_infoline("elm_datefield_item_max_is_absolute() failed in positive test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init elm_datefield_item_max_is_absolute()
+ */
+static void utc_UIFW_elm_datefield_item_max_is_absolute_func_02(void)
+{
+       Eina_Bool is_abs = EINA_FALSE;
+
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_max_set(NULL, ELM_DATEFIELD_MONTH, 9, EINA_TRUE);
+       is_abs = elm_datefield_item_max_is_absolute(datefield, ELM_DATEFIELD_MONTH);
+
+       if (is_abs) {
+               tet_infoline("elm_datefield_item_max_is_absolute() failed in negative test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
@@ -36,8 +36,8 @@ static void cleanup(void);
 void (*tet_startup)(void) = startup;
 void (*tet_cleanup)(void) = cleanup;
 
-static void utc_UIFW_elm_datefield_layout_set_func_01(void);
-static void utc_UIFW_elm_datefield_layout_set_func_02(void);
+static void utc_UIFW_elm_datefield_item_max_set_func_01(void);
+static void utc_UIFW_elm_datefield_item_max_set_func_02(void);
 
 enum {
        POSITIVE_TC_IDX = 0x01,
@@ -45,9 +45,9 @@ enum {
 };
 
 struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_layout_set_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_layout_set_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
+       { utc_UIFW_elm_datefield_item_max_set_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_max_set_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
 };
 
 static void startup(void)
@@ -66,49 +66,45 @@ static void cleanup(void)
        }
        if ( NULL != main_win ) {
                evas_object_del(main_win);
-               main_win = NULL;
+               main_win = NULL;
        }
        elm_shutdown();
        tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
 }
 
 /**
- * @brief Positive test case of elm_datefield_layout_set()
+ * @brief Positive test case of elm_datefield_item_max_set()
  */
-static void utc_UIFW_elm_datefield_layout_set_func_01(void)
+static void utc_UIFW_elm_datefield_item_max_set_func_01(void)
 {
-       datefield = elm_datefield_add(main_win);
-       elm_datefield_layout_set(datefield, ELM_DATEFIELD_LAYOUT_TIME);
+       int year_max, year_curr;
 
-       if (elm_datefield_layout_get(datefield) != ELM_DATEFIELD_LAYOUT_TIME) {
-               tet_infoline("elm_datefield_layout_set() failed in positive test case");
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_max_set(datefield, ELM_DATEFIELD_YEAR, 120, EINA_FALSE);
+       year_max = elm_datefield_item_max_get(datefield, ELM_DATEFIELD_YEAR);
+       elm_datefield_item_value_set(datefield, ELM_DATEFIELD_YEAR, 135);
+       year_curr = elm_datefield_item_value_get(datefield, ELM_DATEFIELD_YEAR);
+
+       if (!((year_max == 120) && (year_curr == 120)) &&
+                !(elm_datefield_item_max_is_absolute(datefield, ELM_DATEFIELD_YEAR))) {
+               tet_infoline("elm_datefield_item_max_set() failed in positive test case");
                tet_result(TET_FAIL);
                return;
        }
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
 }
 
 /**
- * @brief Negative test case of ug_init elm_datefield_layout_set()
+ * @brief Negative test case of ug_init elm_datefield_item_max_set()
  */
-static void utc_UIFW_elm_datefield_layout_set_func_02(void)
+static void utc_UIFW_elm_datefield_item_max_set_func_02(void)
 {
        datefield = elm_datefield_add(main_win);
-       elm_datefield_layout_set(datefield, ELM_DATEFIELD_LAYOUT_DATEANDTIME+1);
-
-       if (elm_datefield_layout_get(datefield) > ELM_DATEFIELD_LAYOUT_DATEANDTIME) {
-               tet_infoline("elm_datefield_layout_set() failed in negative test case");
-               tet_result(TET_FAIL);
-               return;
-       }
+       elm_datefield_item_max_set(NULL, ELM_DATEFIELD_YEAR, 120, EINA_FALSE);
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_get_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_get_func.c
new file mode 100644 (file)
index 0000000..f09111a
--- /dev/null
@@ -0,0 +1,110 @@
+#include <tet_api.h>
+#include <Elementary.h>
+
+// Definitions
+// For checking the result of the positive test case.
+#define TET_CHECK_PASS(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err == (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+// For checking the result of the negative test case.
+#define TET_CHECK_FAIL(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err != (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+
+static Evas_Object *main_win;
+static Evas_Object *datefield;
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_UIFW_elm_datefield_item_min_get_func_01(void);
+static void utc_UIFW_elm_datefield_item_min_get_func_02(void);
+
+enum {
+       POSITIVE_TC_IDX = 0x01,
+       NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+       { utc_UIFW_elm_datefield_item_min_get_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_min_get_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
+};
+
+static void startup(void)
+{
+       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
+       elm_init(0, NULL);
+       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
+       evas_object_show(main_win);
+}
+
+static void cleanup(void)
+{
+       if ( NULL != datefield) {
+               evas_object_del(datefield);
+               datefield = NULL;
+       }
+       if ( NULL != main_win ) {
+               evas_object_del(main_win);
+               main_win = NULL;
+       }
+       elm_shutdown();
+       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
+}
+
+/**
+ * @brief Positive test case of elm_datefield_item_min_get()
+ */
+static void utc_UIFW_elm_datefield_item_min_get_func_01(void)
+{
+       int year_min;
+
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_min_set(datefield, ELM_DATEFIELD_YEAR, 100, EINA_FALSE);
+       year_min = elm_datefield_item_min_get(datefield, ELM_DATEFIELD_YEAR);
+
+       if (!(year_min == 100)) {
+               tet_infoline("elm_datefield_item_min_get() failed in positive test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init elm_datefield_item_min_get()
+ */
+static void utc_UIFW_elm_datefield_item_min_get_func_02(void)
+{
+       int year_min;
+
+       datefield = elm_datefield_add(main_win);
+       year_min = elm_datefield_item_min_get(NULL, ELM_DATEFIELD_YEAR);
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_is_abs_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_is_abs_func.c
new file mode 100644 (file)
index 0000000..0cd4e6b
--- /dev/null
@@ -0,0 +1,117 @@
+#include <tet_api.h>
+#include <Elementary.h>
+
+// Definitions
+// For checking the result of the positive test case.
+#define TET_CHECK_PASS(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err == (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+// For checking the result of the negative test case.
+#define TET_CHECK_FAIL(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err != (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+
+static Evas_Object *main_win;
+static Evas_Object *datefield;
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_UIFW_elm_datefield_item_min_is_absolute_func_01(void);
+static void utc_UIFW_elm_datefield_item_min_is_absolute_func_02(void);
+
+enum {
+       POSITIVE_TC_IDX = 0x01,
+       NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+       { utc_UIFW_elm_datefield_item_min_is_absolute_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_min_is_absolute_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
+};
+
+static void startup(void)
+{
+       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
+       elm_init(0, NULL);
+       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
+       evas_object_show(main_win);
+}
+
+static void cleanup(void)
+{
+       if ( NULL != datefield ) {
+               evas_object_del(datefield);
+               datefield = NULL;
+       }
+       if ( NULL != main_win ) {
+               evas_object_del(main_win);
+               main_win = NULL;
+       }
+       elm_shutdown();
+       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
+}
+
+/**
+ * @brief Positive test case of elm_datefield_item_min_is_absolute()
+ */
+static void utc_UIFW_elm_datefield_item_min_is_absolute_func_01(void)
+{
+       Eina_Bool is_abs = EINA_FALSE;
+
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_min_set(datefield, ELM_DATEFIELD_MONTH, 2, EINA_TRUE);
+       is_abs = elm_datefield_item_min_is_absolute(datefield, ELM_DATEFIELD_MONTH);
+
+       if (!is_abs) {
+               tet_infoline("elm_datefield_item_min_is_absolute() failed in positive test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init elm_datefield_item_min_is_absolute()
+ */
+static void utc_UIFW_elm_datefield_item_min_is_absolute_func_02(void)
+{
+       Eina_Bool is_abs = EINA_FALSE;
+
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_min_set(NULL, ELM_DATEFIELD_MONTH, 2, EINA_TRUE);
+       is_abs = elm_datefield_item_min_is_absolute(datefield, ELM_DATEFIELD_MONTH);
+
+       if (is_abs) {
+               tet_infoline("elm_datefield_item_min_is_absolute() failed in negative test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_set_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_min_set_func.c
new file mode 100644 (file)
index 0000000..7d39507
--- /dev/null
@@ -0,0 +1,111 @@
+#include <tet_api.h>
+#include <Elementary.h>
+
+// Definitions
+// For checking the result of the positive test case.
+#define TET_CHECK_PASS(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err == (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+// For checking the result of the negative test case.
+#define TET_CHECK_FAIL(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err != (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+
+static Evas_Object *main_win;
+static Evas_Object *datefield;
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_UIFW_elm_datefield_item_min_set_func_01(void);
+static void utc_UIFW_elm_datefield_item_min_set_func_02(void);
+
+enum {
+       POSITIVE_TC_IDX = 0x01,
+       NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+       { utc_UIFW_elm_datefield_item_min_set_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_min_set_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
+};
+
+static void startup(void)
+{
+       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
+       elm_init(0, NULL);
+       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
+       evas_object_show(main_win);
+}
+
+static void cleanup(void)
+{
+       if ( NULL != datefield) {
+               evas_object_del(datefield);
+               datefield = NULL;
+       }
+       if ( NULL != main_win ) {
+               evas_object_del(main_win);
+               main_win = NULL;
+       }
+       elm_shutdown();
+       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
+}
+
+/**
+ * @brief Positive test case of elm_datefield_item_min_set()
+ */
+static void utc_UIFW_elm_datefield_item_min_set_func_01(void)
+{
+       int year_min, year_curr;
+
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_min_set(datefield, ELM_DATEFIELD_YEAR, 100, EINA_FALSE);
+       year_min = elm_datefield_item_min_get(datefield, ELM_DATEFIELD_YEAR);
+       elm_datefield_item_value_set(datefield, ELM_DATEFIELD_YEAR, 90);
+       year_curr = elm_datefield_item_value_get(datefield, ELM_DATEFIELD_YEAR);
+
+       if (!((year_min == 100) && (year_curr == 100)) &&
+                !(elm_datefield_item_min_is_absolute(datefield, ELM_DATEFIELD_YEAR))) {
+               tet_infoline("elm_datefield_item_max_set() failed in positive test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init elm_datefield_item_min_set()
+ */
+static void utc_UIFW_elm_datefield_item_min_set_func_02(void)
+{
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_min_set(NULL, ELM_DATEFIELD_YEAR, 100, EINA_FALSE);
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
@@ -36,8 +36,8 @@ static void cleanup(void);
 void (*tet_startup)(void) = startup;
 void (*tet_cleanup)(void) = cleanup;
 
-static void utc_UIFW_elm_datefield_time_mode_get_func_01(void);
-static void utc_UIFW_elm_datefield_time_mode_get_func_02(void);
+static void utc_UIFW_elm_datefield_item_value_set_func_01(void);
+static void utc_UIFW_elm_datefield_item_value_set_func_02(void);
 
 enum {
        POSITIVE_TC_IDX = 0x01,
@@ -45,9 +45,9 @@ enum {
 };
 
 struct tet_testlist tet_testlist[] = {
-       { utc_UIFW_elm_datefield_time_mode_get_func_01, POSITIVE_TC_IDX },
-       { utc_UIFW_elm_datefield_time_mode_get_func_02, NEGATIVE_TC_IDX },
-    { NULL, 0 }
+       { utc_UIFW_elm_datefield_item_value_set_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_value_set_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
 };
 
 static void startup(void)
@@ -60,59 +60,48 @@ static void startup(void)
 
 static void cleanup(void)
 {
-       if ( NULL != datefield ) {
+       if ( NULL != datefield) {
                evas_object_del(datefield);
                datefield = NULL;
        }
        if ( NULL != main_win ) {
                evas_object_del(main_win);
-               main_win = NULL;
+               main_win = NULL;
        }
        elm_shutdown();
        tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
 }
 
 /**
- * @brief Positive test case of elm_datefield_time_mode_get()
+ * @brief Positive test case of elm_datefield_item_value_set()
  */
-static void utc_UIFW_elm_datefield_time_mode_get_func_01(void)
+static void utc_UIFW_elm_datefield_item_value_set_func_01(void)
 {
-       Eina_Bool mode = EINA_FALSE;
+       int year;
 
        datefield = elm_datefield_add(main_win);
-       mode = elm_datefield_time_mode_get(datefield);
+       elm_datefield_item_value_set(datefield, ELM_DATEFIELD_YEAR, 111);
+       year = elm_datefield_item_value_get(datefield, ELM_DATEFIELD_YEAR);
 
-       if (mode != EINA_TRUE) {
-               tet_infoline("elm_datefield_time_mode_get() failed in positive test case");
+       if (!(year == 111)) {
+               tet_infoline("elm_datefield_item_value_set() failed in positive test case");
                tet_result(TET_FAIL);
                return;
        }
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
 }
 
 /**
- * @brief Negative test case of ug_init elm_datefield_time_mode_get()
+ * @brief Negative test case of ug_init elm_datefield_item_value_set()
  */
-static void utc_UIFW_elm_datefield_time_mode_get_func_02(void)
+static void utc_UIFW_elm_datefield_item_value_set_func_02(void)
 {
-       Eina_Bool mode = EINA_FALSE;
-
        datefield = elm_datefield_add(main_win);
-       mode = elm_datefield_time_mode_get(NULL);
-
-       /*if () {
-               tet_infoline("elm_datefield_time_mode_get() failed in negative test case");
-               tet_result(TET_FAIL);
-               return;
-       }*/
+       elm_datefield_item_value_set(NULL, ELM_DATEFIELD_YEAR, 111);
 
-       evas_object_resize(datefield, 480, 80);
-       evas_object_move(datefield, 0, 40);
        evas_object_show(datefield);
 
        tet_result(TET_PASS);
diff --git a/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_value_set_func.c b/TC/elm_ts/datefield/utc_UIFW_elm_datefield_item_value_set_func.c
new file mode 100644 (file)
index 0000000..acfa868
--- /dev/null
@@ -0,0 +1,108 @@
+#include <tet_api.h>
+#include <Elementary.h>
+
+// Definitions
+// For checking the result of the positive test case.
+#define TET_CHECK_PASS(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err == (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_PASS]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+// For checking the result of the negative test case.
+#define TET_CHECK_FAIL(x1, y...) \
+{ \
+       Evas_Object *err = y; \
+       if (err != (x1)) \
+               { \
+                       tet_printf("[TET_CHECK_FAIL]:: %s[%d] : Test has failed..", __FILE__,__LINE__); \
+                       tet_result(TET_FAIL); \
+                       return; \
+               } \
+}
+
+
+static Evas_Object *main_win;
+static Evas_Object *datefield;
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_UIFW_elm_datefield_item_value_set_func_01(void);
+static void utc_UIFW_elm_datefield_item_value_set_func_02(void);
+
+enum {
+       POSITIVE_TC_IDX = 0x01,
+       NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+       { utc_UIFW_elm_datefield_item_value_set_func_01, POSITIVE_TC_IDX },
+       { utc_UIFW_elm_datefield_item_value_set_func_02, NEGATIVE_TC_IDX },
+       { NULL, 0 }
+};
+
+static void startup(void)
+{
+       tet_infoline("[[ TET_MSG ]]:: ============ Startup ============ ");
+       elm_init(0, NULL);
+       main_win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
+       evas_object_show(main_win);
+}
+
+static void cleanup(void)
+{
+       if ( NULL != datefield) {
+               evas_object_del(datefield);
+               datefield = NULL;
+       }
+       if ( NULL != main_win ) {
+               evas_object_del(main_win);
+               main_win = NULL;
+       }
+       elm_shutdown();
+       tet_infoline("[[ TET_MSG ]]:: ============ Cleanup ============ ");
+}
+
+/**
+ * @brief Positive test case of elm_datefield_item_value_set()
+ */
+static void utc_UIFW_elm_datefield_item_value_set_func_01(void)
+{
+       int year;
+
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_value_set(datefield, ELM_DATEFIELD_YEAR, 111);
+       year = elm_datefield_item_value_get(datefield, ELM_DATEFIELD_YEAR);
+
+       if (!(year == 111)) {
+               tet_infoline("elm_datefield_item_value_set() failed in positive test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init elm_datefield_item_value_set()
+ */
+static void utc_UIFW_elm_datefield_item_value_set_func_02(void)
+{
+       datefield = elm_datefield_add(main_win);
+       elm_datefield_item_value_set(NULL, ELM_DATEFIELD_YEAR, 111);
+
+       evas_object_show(datefield);
+
+       tet_result(TET_PASS);
+}
index eb99ae3..8aa95fa 100644 (file)
@@ -12,6 +12,7 @@ group "Elm_Config" struct {
   value "bring_in_scroll_friction" double: 0.5;
   value "zoom_friction" double: 0.5;
   value "thumbscroll_border_friction" double: 0.5;
+  value "thumbscroll_sensitivity_friction" double: 0.25;
   value "scale" double: 1.0;
   value "bgpixmap" int: 0;
   value "compositing" int: 1;
index 4c44144..767f597 100644 (file)
@@ -12,6 +12,7 @@ group "Elm_Config" struct {
   value "bring_in_scroll_friction" double: 0.5;
   value "zoom_friction" double: 0.5;
   value "thumbscroll_border_friction" double: 0.5;
+  value "thumbscroll_sensitivity_friction" double: 0.25;
   value "scroll_smooth_time_interval" double: 0.008;
   value "scroll_smooth_amount" double: 1.0;
   value "scroll_smooth_history_weight" double: 0.3;
index e500d26..a6f4d53 100644 (file)
@@ -12,6 +12,7 @@ group "Elm_Config" struct {
   value "bring_in_scroll_friction" double: 0.5;
   value "zoom_friction" double: 0.5;
   value "thumbscroll_border_friction" double: 0.5;
+  value "thumbscroll_sensitivity_friction" double: 1.0;
   value "scroll_smooth_amount" double: 0.0;
   value "scroll_smooth_history_weight" double: 0.3;
   value "scroll_smooth_future_time" double: 0.0;
index f0e8565..47f729d 100644 (file)
@@ -12,6 +12,7 @@ group "Elm_Config" struct {
   value "bring_in_scroll_friction" double: 0.5;
   value "zoom_friction" double: 0.5;
   value "thumbscroll_border_friction" double: 0.5;
+  value "thumbscroll_sensitivity_friction" double: 0.25;
   value "scroll_smooth_amount" double: 0.0;
   value "scroll_smooth_history_weight" double: 0.3;
   value "scroll_smooth_future_time" double: 0.0;
index ae66545..c07e1ec 100644 (file)
@@ -1,3 +1,15 @@
+elementary (1.0.0+svn.61256slp2+build53) unstable; urgency=low
+
+  * Package Uplaod.
+  * Important Changes
+       [Scroller] merge from upstream revision 64051, but didn't accept data/theme/widgets/ctxpopup.edc
+       [Genlist] Fixed show hook event of smart scroller position received by entry was focused and smart pan resized
+       [Genlist] Revert "[genlist] Added dragging queue for unrealize items that dragging option set by mouse move event"
+  * Git: 165.213.180.234:slp/pkgs/e/elementary
+  * Tag: elementary_1.0.0+svn.61256slp2+build53
+
+ -- Daniel Juyung Seo <juyung.seo@samsung.com>  Mon, 17 Oct 2011 19:35:43 +0900
+
 elementary (1.0.0+svn.61256slp2+build52) unstable; urgency=low
 
   * Package Upload.
index 5a500df..a88cc64 100644 (file)
@@ -362,6 +362,30 @@ tsbf_change(void *data       __UNUSED__,
 }
 
 static void
+tssf_round(void *data       __UNUSED__,
+           Evas_Object     *obj,
+           void *event_info __UNUSED__)
+{
+   double val = elm_slider_value_get(obj);
+   double v;
+
+   v = ((double)((int)(val * 20.0))) / 20.0;
+   if (v != val) elm_slider_value_set(obj, v);
+}
+
+static void
+tssf_change(void *data       __UNUSED__,
+            Evas_Object     *obj,
+            void *event_info __UNUSED__)
+{
+   double tssf = elm_scroll_thumbscroll_sensitivity_friction_get();
+   double val = elm_slider_value_get(obj);
+
+   if (tssf == val) return;
+   elm_scroll_thumbscroll_sensitivity_friction_all_set(val);
+}
+
+static void
 cf_enable(void *data,
           Evas_Object     *obj,
           void *event_info __UNUSED__)
@@ -864,7 +888,7 @@ _profile_change_do(Evas_Object *win,
 {
    int flush_interval, font_c, image_c, edje_file_c, edje_col_c, ts_threshould;
    double scale, s_bounce_friction, ts_momentum_threshold, ts_friction,
-          ts_border_friction, page_friction, bring_in_friction, zoom_friction;
+          ts_border_friction, ts_sensitivity_friction, page_friction, bring_in_friction, zoom_friction;
    const char *curr_theme, *curr_engine;
    const Eina_List *l_items, *l;
    Eina_Bool s_bounce, ts;
@@ -889,6 +913,7 @@ _profile_change_do(Evas_Object *win,
    ts_momentum_threshold = elm_scroll_thumbscroll_momentum_threshold_get();
    ts_friction = elm_scroll_thumbscroll_friction_get();
    ts_border_friction = elm_scroll_thumbscroll_border_friction_get();
+   ts_sensitivity_friction = elm_scroll_thumbscroll_sensitivity_friction_get();
    page_friction = elm_scroll_page_scroll_friction_get();
    bring_in_friction = elm_scroll_bring_in_scroll_friction_get();
    zoom_friction = elm_scroll_zoom_friction_get();
@@ -940,6 +965,9 @@ _profile_change_do(Evas_Object *win,
    elm_scroll_thumbscroll_border_friction_all_set(ts_border_friction);
    elm_slider_value_set(evas_object_data_get(win, "ts_border_friction_slider"),
                         ts_border_friction);
+   elm_scroll_thumbscroll_sensitivity_friction_all_set(ts_sensitivity_friction);
+   elm_slider_value_set(evas_object_data_get(win, "ts_sensitivity_friction_slider"),
+                        ts_sensitivity_friction);
    elm_scroll_page_scroll_friction_all_set(page_friction);
    elm_slider_value_set(evas_object_data_get(win,
                                              "page_scroll_friction_slider"),
@@ -2502,6 +2530,26 @@ _status_config_scrolling(Evas_Object *win,
    evas_object_smart_callback_add(sl, "changed", tsbf_round, NULL);
    evas_object_smart_callback_add(sl, "delay,changed", tsbf_change, NULL);
 
+   LABEL_FRAME_ADD("<hilight>Thumb scroll sensitivity friction</>");
+
+   sl = elm_slider_add(win);
+   elm_object_tooltip_text_set(sl, "This is the sensitivity amount which<br>"
+                                   "is be multiplied by the length of mouse<br>"
+                                   "dragging.");
+   evas_object_data_set(win, "ts_sensitivity_friction_slider", sl);
+   evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);
+   evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
+   elm_slider_span_size_set(sl, 120);
+   elm_slider_unit_format_set(sl, "%1.2f");
+   elm_slider_indicator_format_set(sl, "%1.2f");
+   elm_slider_min_max_set(sl, 0.1, 1.0);
+   elm_slider_value_set(sl, elm_scroll_thumbscroll_sensitivity_friction_get());
+   elm_box_pack_end(bx, sl);
+   evas_object_show(sl);
+
+   evas_object_smart_callback_add(sl, "changed", tssf_round, NULL);
+   evas_object_smart_callback_add(sl, "delay,changed", tssf_change, NULL);
+
    sp = elm_separator_add(win);
    elm_separator_horizontal_set(sp, EINA_TRUE);
    evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
index de7dc67..68b96eb 100644 (file)
@@ -1393,6 +1393,50 @@ extern "C" {
    EAPI void             elm_scroll_thumbscroll_border_friction_set(double friction);
    EAPI void             elm_scroll_thumbscroll_border_friction_all_set(double friction);
 
+   /**
+    * Get the sensitivity amount which is be multiplied by the length of
+    * mouse dragging.
+    *
+    * @return the thumb scroll sensitivity friction
+    *
+    * @ingroup Scrolling
+    */
+   EAPI double           elm_scroll_thumbscroll_sensitivity_friction_get(void);
+
+   /**
+    * Set the sensitivity amount which is be multiplied by the length of
+    * mouse dragging.
+    *
+    * @param friction the thumb scroll sensitivity friction. @c 0.1 for
+    *        minimun sensitivity, @c 1.0 for maximum sensitivity. 0.25
+    *        is proper.
+    *
+    * @see elm_thumbscroll_sensitivity_friction_get()
+    * @note parameter value will get bound to 0.1 - 1.0 interval, always
+    *
+    * @ingroup Scrolling
+    */
+   EAPI void             elm_scroll_thumbscroll_sensitivity_friction_set(double friction);
+
+   /**
+    * Set the sensitivity amount which is be multiplied by the length of
+    * mouse dragging, for all Elementary application windows.
+    *
+    * @param friction the thumb scroll sensitivity friction. @c 0.1 for
+    *        minimun sensitivity, @c 1.0 for maximum sensitivity. 0.25
+    *        is proper.
+    *
+    * @see elm_thumbscroll_sensitivity_friction_get()
+    * @note parameter value will get bound to 0.1 - 1.0 interval, always
+    *
+    * @ingroup Scrolling
+    */
+   EAPI void             elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction);
+
+   /**
+    * @}
+    */
+
    EAPI void             elm_object_scroll_hold_push(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void             elm_object_scroll_hold_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
    EAPI void             elm_object_scroll_freeze_push(Evas_Object *obj) EINA_ARG_NONNULL(1);
@@ -2932,6 +2976,8 @@ extern "C" {
    EAPI void         elm_scroller_region_bring_in(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
    EAPI void         elm_scroller_propagate_events_set(Evas_Object *obj, Eina_Bool propagation);
    EAPI Eina_Bool    elm_scroller_propagate_events_get(const Evas_Object *obj);
+   EAPI void         elm_scroller_gravity_set(Evas_Object *obj, double x, double y) EINA_ARG_NONNULL(1);
+   EAPI void         elm_scroller_gravity_get(const Evas_Object *obj, double *x, double *y) EINA_ARG_NONNULL(1);
    EINA_DEPRECATED EAPI void         elm_scroller_page_move_set(Evas_Object *obj, Eina_Bool set);
    /* smart callbacks called:
     * "edge,left" - the left edge of the content has been reached
@@ -8465,6 +8511,28 @@ extern "C" {
     * @see also elm_naviframe_item_title_visible_set()
     */
    EAPI Eina_Bool           elm_naviframe_item_title_visible_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Set creating prev button automatically or not
+    *
+    * @param obj The naviframe object
+    * @param auto_pushed If @c EINA_TRUE, the previous button(back button) will
+    *        be created internally when you pass the @c NULL to the prev_btn
+    *        parameter in elm_naviframe_item_push
+    *
+    * @see also elm_naviframe_item_push()
+    */
+   EAPI void                elm_naviframe_prev_btn_auto_pushed_set(Evas_Object *obj, Eina_Bool auto_pushed) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Get a value whether prev button(back button) will be auto pushed or
+    *        not.
+    *
+    * @param obj The naviframe object
+    * @return If @c EINA_TRUE, prev button will be auto pushed.
+    *
+    * @see also elm_naviframe_item_push()
+    *           elm_naviframe_prev_btn_auto_pushed_set()
+    */
+   EAPI Eina_Bool           elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj); EINA_ARG_NONNULL(1);
 
    /* Control Bar */
    #define CONTROLBAR_SYSTEM_ICON_ALBUMS "controlbar_albums"
index b666622..5be6505 100644 (file)
@@ -8,15 +8,17 @@ typedef struct _Elm_Naviframe_Text_Item_Pair Elm_Naviframe_Text_Item_Pair;
 
 struct _Widget_Data
 {
-   Eina_List    *stack;
+   Eina_Inlist  *stack;
    Evas_Object  *base;
    Evas_Object  *rect;
    Eina_Bool     preserve: 1;
-   Eina_Bool     pass_events: 1;
+   Eina_Bool     auto_pushed: 1;
+   Eina_Bool     freeze_events: 1;
 };
 
 struct _Elm_Naviframe_Content_Item_Pair
 {
+   EINA_INLIST;
    const char *part;
    Evas_Object *content;
    Elm_Naviframe_Item *it;
@@ -24,6 +26,7 @@ struct _Elm_Naviframe_Content_Item_Pair
 
 struct _Elm_Naviframe_Text_Item_Pair
 {
+   EINA_INLIST;
    const char *part;
    const char *text;
 };
@@ -31,8 +34,9 @@ struct _Elm_Naviframe_Text_Item_Pair
 struct _Elm_Naviframe_Item
 {
    Elm_Widget_Item    base;
-   Eina_List         *content_list;
-   Eina_List         *text_list;
+   EINA_INLIST;
+   Eina_Inlist       *content_list;
+   Eina_Inlist       *text_list;
    Evas_Object       *content;
    Evas_Object       *title_prev_btn;
    Evas_Object       *title_next_btn;
@@ -58,6 +62,7 @@ static void _emit_hook(Evas_Object *obj,
                        const char *emission,
                        const char *source);
 static void _disable_hook(Evas_Object *obj);
+static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl);
 static void _item_text_set_hook(Elm_Object_Item *it,
                                 const char *part,
                                 const char *label);
@@ -73,6 +78,7 @@ static Evas_Object *_item_content_unset_hook(Elm_Object_Item *it,
 static void _item_signal_emit_hook(Elm_Object_Item *it,
                                    const char *emission,
                                    const char *source);
+static void _item_title_visible_update(Elm_Naviframe_Item *navi_it);
 static void _sizing_eval(Evas_Object *obj);
 static void _item_sizing_eval(Elm_Naviframe_Item *it);
 static void _move(void *data, Evas *e, Evas_Object *obj, void *event_info);
@@ -132,22 +138,42 @@ static void
 _del_hook(Evas_Object *obj)
 {
    Widget_Data *wd;
-   Eina_List *list;
    Elm_Naviframe_Item *it;
 
    wd = elm_widget_data_get(obj);
    if (!wd) return;
 
-   EINA_LIST_REVERSE_FOREACH(wd->stack, list, it)
+   EINA_INLIST_REVERSE_FOREACH(wd->stack, it)
      _item_del(it);
-   eina_list_free(wd->stack);
    free(wd);
 }
 
 static void
-_theme_hook(Evas_Object *obj __UNUSED__)
+_theme_hook(Evas_Object *obj)
 {
-   //FIXME:
+   Widget_Data *wd;
+   Elm_Naviframe_Item *it;
+
+   wd  = elm_widget_data_get(obj);
+   if (!wd) return;
+
+   _elm_theme_object_set(obj,
+                         wd->base,
+                         "naviframe",
+                         "base",
+                         elm_widget_style_get(obj));
+
+   EINA_INLIST_FOREACH(wd->stack, it)
+     {
+        elm_naviframe_item_style_set(ELM_CAST(it), it->style);
+        _item_title_visible_update(it);
+     }
+
+   _elm_widget_mirrored_reload(obj);
+   _mirrored_set(obj, elm_widget_mirrored_get(obj));
+
+   evas_object_hide(wd->rect);
+
 }
 
 static void _emit_hook(Evas_Object *obj,
@@ -169,13 +195,26 @@ _disable_hook(Evas_Object *obj __UNUSED__)
 }
 
 static void
+_mirrored_set(Evas_Object *obj, Eina_Bool rtl)
+{
+   Widget_Data *wd;
+   Elm_Naviframe_Item *it;
+
+   wd  = elm_widget_data_get(obj);
+   if (!wd) return;
+
+   EINA_INLIST_FOREACH(wd->stack, it)
+     edje_object_mirrored_set(it->base.view, rtl);
+   edje_object_mirrored_set(wd->base, rtl);
+}
+
+static void
 _item_text_set_hook(Elm_Object_Item *it,
                     const char *part,
                     const char *label)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
 
-   Eina_List *l = NULL;
    Elm_Naviframe_Text_Item_Pair *pair = NULL;
    Elm_Naviframe_Item *navi_it = ELM_CAST(it);
    char buf[1024];
@@ -185,7 +224,7 @@ _item_text_set_hook(Elm_Object_Item *it,
    else
      snprintf(buf, sizeof(buf), "%s", part);
 
-   EINA_LIST_FOREACH(navi_it->text_list, l, pair)
+   EINA_INLIST_FOREACH(navi_it->text_list, pair)
      if (!strcmp(buf, pair->part)) break;
 
    if (!pair)
@@ -198,7 +237,8 @@ _item_text_set_hook(Elm_Object_Item *it,
              return;
           }
         eina_stringshare_replace(&pair->part, buf);
-        navi_it->text_list = eina_list_append(navi_it->text_list, pair);
+        navi_it->text_list = eina_inlist_append(navi_it->text_list,
+                                                EINA_INLIST_GET(pair));
      }
 
    eina_stringshare_replace(&pair->text, label);
@@ -222,7 +262,6 @@ static const char *
 _item_text_get_hook(const Elm_Object_Item *it, const char *part)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Eina_List *l = NULL;
    Elm_Naviframe_Text_Item_Pair *pair = NULL;
    Elm_Naviframe_Item *navi_it = ELM_CAST(it);
    char buf[1024];
@@ -232,7 +271,7 @@ _item_text_get_hook(const Elm_Object_Item *it, const char *part)
    else
      snprintf(buf, sizeof(buf), "%s", part);
 
-   EINA_LIST_FOREACH(navi_it->text_list, l, pair)
+   EINA_INLIST_FOREACH(navi_it->text_list, pair)
      {
         if (!strcmp(buf, pair->part))
           return pair->text;
@@ -275,7 +314,6 @@ static Evas_Object *
 _item_content_get_hook(const Elm_Object_Item *it, const char *part)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Eina_List *l = NULL;
    Elm_Naviframe_Content_Item_Pair *pair = NULL;
    Elm_Naviframe_Item *navi_it = ELM_CAST(it);
 
@@ -288,7 +326,7 @@ _item_content_get_hook(const Elm_Object_Item *it, const char *part)
      return navi_it->title_next_btn;
 
    //common parts
-   EINA_LIST_FOREACH(navi_it->content_list, l, pair)
+   EINA_INLIST_FOREACH(navi_it->content_list, pair)
      {
         if (!strcmp(part, pair->part))
           return pair->content;
@@ -300,7 +338,6 @@ static Evas_Object *
 _item_content_unset_hook(Elm_Object_Item *it, const char *part)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Eina_List *l = NULL;
    Elm_Naviframe_Content_Item_Pair *pair = NULL;
    Elm_Naviframe_Item *navi_it = ELM_CAST(it);
    Evas_Object *content = NULL;
@@ -319,14 +356,14 @@ _item_content_unset_hook(Elm_Object_Item *it, const char *part)
      }
 
    //common parts
-   EINA_LIST_FOREACH(navi_it->content_list, l, pair)
+   EINA_INLIST_FOREACH(navi_it->content_list, pair)
      {
         if (!strcmp(part, pair->part))
           {
              content = pair->content;
              eina_stringshare_del(pair->part);
-             navi_it->content_list = eina_list_remove(navi_it->content_list,
-                                                      pair);
+             navi_it->content_list = eina_inlist_remove(navi_it->content_list,
+                                                        EINA_INLIST_GET(pair));
              free(pair);
              break;
           }
@@ -357,18 +394,23 @@ _item_signal_emit_hook(Elm_Object_Item *it,
 }
 
 static void
+_item_title_visible_update(Elm_Naviframe_Item *navi_it)
+{
+   if (navi_it->title_visible)
+     edje_object_signal_emit(navi_it->base.view, "elm,state,title,show", "elm");
+   else
+     edje_object_signal_emit(navi_it->base.view, "elm,state,title,hide", "elm");
+}
+
+static void
 _sizing_eval(Evas_Object *obj)
 {
    Widget_Data *wd;
-   Eina_List *list;
    Elm_Naviframe_Item *it;
    wd  = elm_widget_data_get(obj);
    if (!wd) return;
 
-   list = eina_list_last(wd->stack);
-   if (!list) return;
-
-   EINA_LIST_FOREACH(wd->stack, list, it)
+   EINA_INLIST_FOREACH(wd->stack, it)
      _item_sizing_eval(it);
 }
 
@@ -427,7 +469,7 @@ _hide(void *data __UNUSED__,
 {
    Widget_Data *wd = elm_widget_data_get(obj);
    if (!wd) return;
-   if (wd->pass_events)
+   if (wd->freeze_events)
      evas_object_hide(wd->rect);
 }
 
@@ -473,7 +515,8 @@ _title_content_del(void *data,
    Elm_Naviframe_Item *it = pair->it;
    snprintf(buf, sizeof(buf), "elm,state,%s,hide", pair->part);
    edje_object_signal_emit(it->base.view, buf, "elm");
-   it->content_list = eina_list_remove(it->content_list, pair);
+   it->content_list = eina_inlist_remove(it->content_list,
+                                         EINA_INLIST_GET(pair));
    eina_stringshare_del(pair->part);
    free(pair);
 }
@@ -487,6 +530,7 @@ _title_prev_btn_del(void *data,
    Elm_Naviframe_Item *it = data;
    it->back_btn = EINA_FALSE;
    it->title_prev_btn = NULL;
+   edje_object_signal_emit(it->base.view, "elm,state,prev_btn,hide", "elm");
 }
 
 static void
@@ -497,6 +541,7 @@ _title_next_btn_del(void *data,
 {
    Elm_Naviframe_Item *it = data;
    it->title_next_btn = NULL;
+   edje_object_signal_emit(it->base.view, "elm,state,next_btn,hide", "elm");
 }
 
 static void
@@ -516,10 +561,9 @@ _title_content_set(Elm_Naviframe_Item *it,
                    const char *part,
                    Evas_Object *content)
 {
-   Eina_List *l = NULL;
    char buf[1024];
 
-   EINA_LIST_FOREACH(it->content_list, l, pair)
+   EINA_INLIST_FOREACH(it->content_list, pair)
      if (!strcmp(part, pair->part)) break;
 
    if (!pair)
@@ -532,7 +576,8 @@ _title_content_set(Elm_Naviframe_Item *it,
           }
         pair->it = it;
         eina_stringshare_replace(&pair->part, part);
-        it->content_list = eina_list_append(it->content_list, pair);
+        it->content_list = eina_inlist_append(it->content_list,
+                                              EINA_INLIST_GET(pair));
      }
 
    if ((pair->content) && (pair->content != content))
@@ -575,7 +620,13 @@ _title_prev_btn_set(Elm_Naviframe_Item *it,
 
    it->title_prev_btn = btn;
 
-   if (!btn) return;
+   if (!btn)
+     {
+        edje_object_signal_emit(it->base.view,
+                                "elm,state,prev_btn,hide",
+                                "elm");
+        return;
+     }
 
    elm_widget_sub_object_add(it->base.widget, btn);
    evas_object_event_callback_add(btn,
@@ -583,6 +634,7 @@ _title_prev_btn_set(Elm_Naviframe_Item *it,
                                   _title_prev_btn_del,
                                   it);
    edje_object_part_swallow(it->base.view, "elm.swallow.prev_btn", btn);
+   edje_object_signal_emit(it->base.view, "elm,state,prev_btn,show", "elm");
    it->back_btn = back_btn;
 
    _item_sizing_eval(it);
@@ -598,7 +650,13 @@ _title_next_btn_set(Elm_Naviframe_Item *it, Evas_Object *btn)
 
    it->title_next_btn = btn;
 
-   if (!btn) return;
+   if (!btn)
+     {
+        edje_object_signal_emit(it->base.view,
+                                "elm,state,next_btn,hide",
+                                "elm");
+        return;
+     }
 
    elm_widget_sub_object_add(it->base.widget, btn);
    evas_object_event_callback_add(btn,
@@ -606,6 +664,7 @@ _title_next_btn_set(Elm_Naviframe_Item *it, Evas_Object *btn)
                                   _title_next_btn_del,
                                   it);
    edje_object_part_swallow(it->base.view, "elm.swallow.next_btn", btn);
+   edje_object_signal_emit(it->base.view, "elm,state,next_btn,show", "elm");
 
    _item_sizing_eval(it);
 }
@@ -614,7 +673,6 @@ static void
 _item_del(Elm_Naviframe_Item *it)
 {
    Widget_Data *wd;
-   Eina_List *l;
    Elm_Naviframe_Content_Item_Pair *content_pair;
    Elm_Naviframe_Text_Item_Pair *text_pair;
 
@@ -630,25 +688,29 @@ _item_del(Elm_Naviframe_Item *it)
    if ((it->content) && (!wd->preserve))
      evas_object_del(it->content);
 
-   EINA_LIST_FOREACH(it->content_list, l, content_pair)
+   EINA_INLIST_REVERSE_FOREACH(it->content_list, content_pair)
      {
-        evas_object_event_callback_del(content_pair->content, EVAS_CALLBACK_DEL, _title_content_del);
+        evas_object_event_callback_del(content_pair->content,
+                                       EVAS_CALLBACK_DEL,
+                                       _title_content_del);
         evas_object_del(content_pair->content);
         eina_stringshare_del(content_pair->part);
+        it->content_list =
+           eina_inlist_remove(it->content_list,
+                              EINA_INLIST_GET(content_pair));
         free(content_pair);
      }
 
-   EINA_LIST_FOREACH(it->text_list, l, text_pair)
+   EINA_INLIST_REVERSE_FOREACH(it->text_list, text_pair)
      {
         eina_stringshare_del(text_pair->part);
         eina_stringshare_del(text_pair->text);
+        it->text_list = eina_inlist_remove(it->text_list,
+                                           EINA_INLIST_GET(text_pair));
         free(text_pair);
      }
 
-   eina_list_free(it->content_list);
-   eina_list_free(it->text_list);
-
-   wd->stack = eina_list_remove(wd->stack, it);
+   wd->stack = eina_inlist_remove(wd->stack, EINA_INLIST_GET(it));
 
    elm_widget_item_del(it);
 }
@@ -690,7 +752,7 @@ _show_finished(void *data,
    evas_object_smart_callback_call(it->base.widget,
                                    SIG_TRANSITION_FINISHED,
                                    (void *) EINA_TRUE);
-   if (wd->pass_events)
+   if (wd->freeze_events)
      {
         evas_object_hide(wd->rect);
         //FIXME:
@@ -742,10 +804,11 @@ elm_naviframe_add(Evas_Object *parent)
 
    //base
    wd->base = edje_object_add(e);
+   edje_object_mirrored_set(wd->base, elm_widget_mirrored_get(obj));
    elm_widget_resize_object_set(obj, wd->base);
    _elm_theme_object_set(obj, wd->base, "naviframe", "base", "default");
 
-   //rect:
+   //rect
    wd->rect = evas_object_rectangle_add(e);
    evas_object_color_set(wd->rect, 0, 0, 0, 0);
    elm_widget_sub_object_add(obj, wd->rect);
@@ -755,7 +818,8 @@ elm_naviframe_add(Evas_Object *parent)
    evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, obj);
    evas_object_smart_callbacks_descriptions_set(obj, _signals);
 
-   wd->pass_events = EINA_TRUE;
+   wd->auto_pushed = EINA_TRUE;
+   wd->freeze_events = EINA_TRUE;
 
    return obj;
 }
@@ -792,6 +856,7 @@ elm_naviframe_item_push(Evas_Object *obj,
 
    //item base layout
    it->base.view = edje_object_add(evas_object_evas_get(obj));
+   edje_object_mirrored_set(it->base.view, elm_widget_mirrored_get(obj));
    evas_object_smart_member_add(it->base.view, wd->base);
    elm_widget_sub_object_add(obj, it->base.view);
    edje_object_signal_callback_add(it->base.view,
@@ -816,7 +881,7 @@ elm_naviframe_item_push(Evas_Object *obj,
    _item_text_set_hook(ELM_CAST(it), "elm.text.title", title_label);
 
    //title buttons
-   if ((!prev_btn) && (eina_list_count(wd->stack)))
+   if ((!prev_btn) && wd->auto_pushed && eina_inlist_count(wd->stack))
      {
         prev_btn = _back_btn_new(obj);
         _title_prev_btn_set(it, prev_btn, EINA_TRUE);
@@ -834,7 +899,7 @@ elm_naviframe_item_push(Evas_Object *obj,
    prev_it = ELM_CAST(elm_naviframe_top_item_get(obj));
    if (prev_it)
      {
-        if (wd->pass_events)
+        if (wd->freeze_events)
           {
              evas_object_show(wd->rect);
              //FIXME:
@@ -848,7 +913,7 @@ elm_naviframe_item_push(Evas_Object *obj,
                                 "elm");
      }
    it->title_visible = EINA_TRUE;
-   wd->stack = eina_list_append(wd->stack, it);
+   wd->stack = eina_inlist_append(wd->stack, EINA_INLIST_GET(it));
    return ELM_CAST(it);
 }
 
@@ -856,7 +921,7 @@ EAPI Evas_Object *
 elm_naviframe_item_pop(Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   Elm_Naviframe_Item *it, *prev_it;
+   Elm_Naviframe_Item *it, *prev_it = NULL;
    Widget_Data *wd;
    Evas_Object *content = NULL;
 
@@ -865,15 +930,15 @@ elm_naviframe_item_pop(Evas_Object *obj)
 
    it = ELM_CAST(elm_naviframe_top_item_get(obj));
    if (!it) return NULL;
-   wd->stack = eina_list_remove(wd->stack, it);
-
    if (wd->preserve)
      content = it->content;
 
-   prev_it = ELM_CAST(elm_naviframe_top_item_get(obj));
+   if (wd->stack->last->prev)
+     prev_it = EINA_INLIST_CONTAINER_GET(wd->stack->last->prev,
+                                         Elm_Naviframe_Item);
    if (prev_it)
      {
-        if (wd->pass_events)
+        if (wd->freeze_events)
           {
              evas_object_show(wd->rect);
              //FIXME:
@@ -898,17 +963,18 @@ elm_naviframe_item_pop_to(Elm_Object_Item *it)
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
    Elm_Naviframe_Item *navi_it = ELM_CAST(it);
    Widget_Data *wd = elm_widget_data_get(navi_it->base.widget);
-   Eina_List *l, *prev_l;
+   Eina_Inlist *l, *prev_l;
 
    if (it == elm_naviframe_top_item_get(navi_it->base.widget)) return;
 
-   l = eina_list_last(wd->stack)->prev;
+   l = wd->stack->last->prev;
 
    while(l)
      {
-        if (l->data == it) break;
+        if (ELM_CAST(EINA_INLIST_CONTAINER_GET(l, Elm_Naviframe_Item)) == it)
+          break;
         prev_l = l->prev;
-        _item_del(l->data);
+        _item_del(EINA_INLIST_CONTAINER_GET(l, Elm_Naviframe_Item));
         l = prev_l;
      }
    elm_naviframe_item_pop(navi_it->base.widget);
@@ -923,7 +989,7 @@ elm_naviframe_item_del(Elm_Object_Item *it)
    if (it == elm_naviframe_top_item_get(navi_it->base.widget))
      {
         _item_del(navi_it);
-        navi_it = ELM_CAST(eina_list_last(wd->stack)->data);
+        navi_it = ELM_CAST(EINA_INLIST_CONTAINER_GET(wd->stack->last, Elm_Naviframe_Item));
         evas_object_show(navi_it->base.view);
         evas_object_raise(navi_it->base.view);
         edje_object_signal_emit(navi_it->base.view, "elm,state,visible", "elm");
@@ -956,7 +1022,8 @@ elm_naviframe_top_item_get(const Evas_Object *obj)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
    if ((!wd) || (!wd->stack)) return NULL;
-   return eina_list_last(wd->stack)->data;
+   return ELM_CAST(EINA_INLIST_CONTAINER_GET(wd->stack->last,
+                                             Elm_Naviframe_Item));
 }
 
 EAPI Elm_Object_Item*
@@ -965,7 +1032,8 @@ elm_naviframe_bottom_item_get(const Evas_Object *obj)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
    if ((!wd) || (!wd->stack)) return NULL;
-   return wd->stack->data;
+   return ELM_CAST(EINA_INLIST_CONTAINER_GET(wd->stack,
+                                             Elm_Naviframe_Item));
 }
 
 EAPI void
@@ -973,9 +1041,9 @@ elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
    Elm_Naviframe_Item *navi_it = ELM_CAST(it);
-   Eina_List *l;
    Elm_Naviframe_Content_Item_Pair *content_pair;
    Elm_Naviframe_Text_Item_Pair *text_pair;
+   Widget_Data *wd;
 
    char buf[256];
 
@@ -992,10 +1060,10 @@ elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style)
                          buf,
                          elm_widget_style_get(navi_it->base.widget));
    //recover item
-   EINA_LIST_FOREACH(navi_it->text_list, l, text_pair)
+   EINA_INLIST_FOREACH(navi_it->text_list, text_pair)
      _item_text_set_hook(it, text_pair->part, text_pair->text);
 
-   EINA_LIST_FOREACH(navi_it->content_list, l, content_pair)
+   EINA_INLIST_FOREACH(navi_it->content_list, content_pair)
      _item_content_set_hook(it, content_pair->part, content_pair->content);
 
    //content
@@ -1023,6 +1091,14 @@ elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style)
 
    navi_it->title_visible = EINA_TRUE;
    _item_sizing_eval(navi_it);
+
+   wd = elm_widget_data_get(navi_it->base.widget);
+   if (wd && wd->freeze_events)
+     {
+        evas_object_hide(wd->rect);
+        //FIXME:
+        evas_object_pass_events_set(wd->base, EINA_FALSE);
+     }
 }
 
 EAPI const char *
@@ -1042,12 +1118,8 @@ elm_naviframe_item_title_visible_set(Elm_Object_Item *it, Eina_Bool visible)
    visible = !!visible;
    if (navi_it->title_visible == visible) return;
 
-   if (visible)
-     edje_object_signal_emit(navi_it->base.view, "elm,state,title,show", "elm");
-   else
-     edje_object_signal_emit(navi_it->base.view, "elm,state,title,hide", "elm");
-
    navi_it->title_visible = visible;
+   _item_title_visible_update(navi_it);
 }
 
 EAPI Eina_Bool
@@ -1058,3 +1130,21 @@ elm_naviframe_item_title_visible_get(const Elm_Object_Item *it)
    return navi_it->title_visible;
 }
 
+EAPI void
+elm_naviframe_prev_btn_auto_pushed_set(Evas_Object *obj, Eina_Bool auto_pushed)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   wd->auto_pushed = !!auto_pushed;
+}
+
+EAPI Eina_Bool
+elm_naviframe_prev_btn_auto_pushed_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return EINA_FALSE;
+   return wd->auto_pushed;
+}
+
index a9fb6a1..033c30e 100644 (file)
@@ -74,7 +74,7 @@ static size_t _elm_user_dir_snprintf(char       *dst,
 #ifdef HAVE_ELEMENTARY_X
 static Ecore_Event_Handler *_prop_change_handler = NULL;
 static Ecore_X_Window _root_1st = 0;
-#define ATOM_COUNT 22
+#define ATOM_COUNT 23
 static Ecore_X_Atom _atom[ATOM_COUNT];
 static Ecore_X_Atom _atom_config = 0;
 static const char *_atom_names[ATOM_COUNT] =
@@ -97,6 +97,7 @@ static const char *_atom_names[ATOM_COUNT] =
    "ENLIGHTENMENT_THUMBSCROLL_MOMENTUM_THRESHOLD",
    "ENLIGHTENMENT_THUMBSCROLL_FRICTION",
    "ENLIGHTENMENT_THUMBSCROLL_BORDER_FRICTION",
+   "ENLIGHTENMENT_THUMBSCROLL_SENSITIVITY_FRICTION",
    "ENLIGHTENMENT_THUMBSCROLL_PAGE_SCROLL_FRICTION",
    "ENLIGHTENMENT_THUMBSCROLL_BRING_IN_SCROLL_FRICTION",
    "ENLIGHTENMENT_THUMBSCROLL_ZOOM_FRICTION",
@@ -120,10 +121,11 @@ static const char *_atom_names[ATOM_COUNT] =
 #define ATOM_E_THUMBSCROLL_MOMENTUM_THRESHOLD       15
 #define ATOM_E_THUMBSCROLL_FRICTION                 16
 #define ATOM_E_THUMBSCROLL_BORDER_FRICTION          17
-#define ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION     18
-#define ATOM_E_THUMBSCROLL_BRING_IN_SCROLL_FRICTION 19
-#define ATOM_E_THUMBSCROLL_ZOOM_FRICTION            20
-#define ATOM_E_CONFIG                               21
+#define ATOM_E_THUMBSCROLL_SENSITIVITY_FRICTION     18
+#define ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION     19
+#define ATOM_E_THUMBSCROLL_BRING_IN_SCROLL_FRICTION 20
+#define ATOM_E_THUMBSCROLL_ZOOM_FRICTION            21
+#define ATOM_E_CONFIG                               22
 
 static Eina_Bool _prop_config_get(void);
 static Eina_Bool _prop_change(void *data  __UNUSED__,
@@ -464,6 +466,18 @@ _prop_change(void *data  __UNUSED__,
                      (double)val / 1000.0;
                }
           }
+        else if (event->atom == _atom[ATOM_E_THUMBSCROLL_SENSITIVITY_FRICTION])
+          {
+             unsigned int val = 1000;
+
+             if (ecore_x_window_prop_card32_get(event->win,
+                                                event->atom,
+                                                &val, 1) > 0)
+               {
+                  _elm_config->thumbscroll_sensitivity_friction =
+                     (double)val / 1000.0;
+               }
+          }
         else if (event->atom == _atom[ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION])
           {
              unsigned int val = 1000;
@@ -564,6 +578,7 @@ _desc_init(void)
    ELM_CONFIG_VAL(D, T, thumbscroll_friction, T_DOUBLE);
    ELM_CONFIG_VAL(D, T, thumbscroll_bounce_friction, T_DOUBLE);
    ELM_CONFIG_VAL(D, T, thumbscroll_border_friction, T_DOUBLE);
+   ELM_CONFIG_VAL(D, T, thumbscroll_sensitivity_friction, T_DOUBLE);
    ELM_CONFIG_VAL(D, T, page_scroll_friction, T_DOUBLE);
    ELM_CONFIG_VAL(D, T, bring_in_scroll_friction, T_DOUBLE);
    ELM_CONFIG_VAL(D, T, zoom_friction, T_DOUBLE);
@@ -1126,6 +1141,7 @@ _config_load(void)
    _elm_config->bring_in_scroll_friction = 0.5;
    _elm_config->zoom_friction = 0.5;
    _elm_config->thumbscroll_border_friction = 0.5;
+   _elm_config->thumbscroll_sensitivity_friction = 0.25; // magic number! just trial and error shows this makes it behave "nicer" and not run off at high speed all the time
    _elm_config->scroll_smooth_time_interval = 0.008;
    _elm_config->scroll_smooth_amount = 1.0;
    _elm_config->scroll_smooth_history_weight = 0.3;
@@ -1483,6 +1499,18 @@ _env_get(void)
 
         _elm_config->thumbscroll_border_friction = friction;
      }
+   s = getenv("ELM_THUMBSCROLL_SENSITIVITY_FRICTION");
+   if (s)
+     {
+        friction = atof(s);
+        if (friction < 0.1)
+          friction = 0.1;
+
+        if (friction > 1.0)
+          friction = 1.0;
+
+        _elm_config->thumbscroll_sensitivity_friction = friction;
+     }
    s = getenv("ELM_SCROLL_SMOOTH_TIME_INTERVAL");
    if (s) _elm_config->scroll_smooth_time_interval = atof(s);
    s = getenv("ELM_SCROLL_SMOOTH_AMOUNT");
index 9b926ea..1beeb1e 100644 (file)
@@ -200,6 +200,10 @@ _conformant_part_sizing_eval(Evas_Object *obj, Conformant_Part_Type part_type)
      }
    if (part_type & ELM_CONFORM_SLIDING_WIN_PART)
      {
+        //If the virtual keypad uses the swallow area
+        ret = ecore_x_e_illume_keyboard_geometry_get(zone, &sx, &sy, &sw, &sh);
+        if (ret && sh > 0) return;
+
         edje_object_part_swallow(wd->base, "elm.swallow.virtualkeypad",
                                wd->sliding_win);
         ret = ecore_x_e_illume_sliding_win_geometry_get(zone, &sx, &sy, &sw, &sh);
index 4fb364f..e6ded5d 100644 (file)
@@ -669,7 +669,7 @@ _parse_format( Evas_Object *obj )
 {
    Widget_Data *wd;
    Datefield_Item *it = NULL;
-   unsigned int len, idx, location = 0;
+   unsigned int len = 0, idx, location = 0;
    char separator[MAX_SEPARATOR_LEN];
    char *fmt_ptr;
    char cur;
index a8a0ee9..886548c 100644 (file)
@@ -59,7 +59,6 @@ struct _Widget_Data
    Eina_Bool         swipe : 1;
    Eina_Bool         reorder_mode : 1;
    Eina_Bool         reorder_pan_move : 1;
-   Eina_List        *dragging_queue;
    struct
    {
       Evas_Coord x, y;
@@ -81,6 +80,7 @@ struct _Widget_Data
    Eina_Bool         effect_mode : 1;
    Eina_Bool         auto_scrolled : 1;
    Eina_Bool         pan_changed : 1;
+   Eina_Bool         drag_started : 1;
    int               edit_mode;
    Ecore_Animator   *item_moving_effect_timer;
    Evas_Object      *alpha_bg;
@@ -88,7 +88,9 @@ struct _Widget_Data
    Evas_Coord        expand_item_gap;
    int               move_effect_mode;
    Ecore_Job        *changed_job;
-   Elm_Genlist_Item *rename_it;
+   Elm_Genlist_Item *focused_rename_it;
+   Evas_Coord        current_scrl_x;
+   Evas_Coord        current_scrl_y;
 };
 
 struct _Item_Block
@@ -654,13 +656,20 @@ _show_region_hook(void        *data,
 {
    Widget_Data *wd = elm_widget_data_get(data);
    Evas_Coord x, y, w, h;
+   Evas_Coord px, py, pw, ph;
+   Evas_Coord new_x, new_y;
    if (!wd) return;
    elm_widget_show_region_get(obj, &x, &y, &w, &h);
+   evas_object_geometry_get(wd->pan_smart, &px, &py, &pw, &ph);
+
    //x & y are screen coordinates, Add with pan coordinates
-   x += wd->pan_x;
-   y += wd->pan_y;
-   if(wd->rename_it) elm_genlist_item_bring_in(wd->rename_it);
-   else elm_smart_scroller_child_region_show(wd->scr, x, y, w, h);
+   new_x = wd->current_scrl_x + x - pw + w;
+   new_y = wd->current_scrl_y + y - ph + h;
+
+   if (((new_y > 0) && wd->pan_changed && (y > ph)) || ((new_x > 0) && wd->pan_changed && (x > pw)))
+     elm_smart_scroller_child_pos_set(wd->scr, new_x, new_y);
+   else
+     elm_smart_scroller_child_pos_set(wd->scr, wd->current_scrl_x, wd->current_scrl_y);
 }
 
 static void
@@ -1037,7 +1046,6 @@ _mouse_move(void        *data,
    if ((adx > minw) || (ady > minh))
      {
         it->dragging = EINA_TRUE;
-        it->wd->dragging_queue = eina_list_append(it->wd->dragging_queue, it);
         if (it->long_timer)
           {
              ecore_timer_del(it->long_timer);
@@ -1047,7 +1055,7 @@ _mouse_move(void        *data,
           _item_unselect(it);
         if (dy < 0)
           {
-             if (ady > adx)
+             if ((ady > adx) && (!it->wd->drag_started))
                evas_object_smart_callback_call(it->base.widget,
                                                SIG_DRAG_START_UP, it);
              else
@@ -1062,7 +1070,7 @@ _mouse_move(void        *data,
           }
         else
           {
-             if (ady > adx)
+             if ((ady > adx) && (!it->wd->drag_started))
                evas_object_smart_callback_call(it->base.widget,
                                                SIG_DRAG_START_DOWN, it);
              else
@@ -1085,7 +1093,7 @@ _long_press(void *data)
    Eina_List *list, *l;
 
    it->long_timer = NULL;
-   if ((it->disabled) || (it->dragging) || (it->display_only) || (it->wd->rename_it))
+   if ((it->disabled) || (it->dragging) || (it->display_only) || (it->wd->focused_rename_it))
      return ECORE_CALLBACK_CANCEL;
    it->wd->longpressed = EINA_TRUE;
    evas_object_smart_callback_call(it->base.widget, SIG_LONGPRESSED, it);
@@ -1384,19 +1392,10 @@ _mouse_up(void        *data,
         ecore_timer_del(it->long_timer);
         it->long_timer = NULL;
      }
-   while (it->wd->dragging_queue)
+   if (it->dragging)
      {
-        Elm_Genlist_Item *dragging_it = NULL;
-        dragging_it = eina_list_data_get(it->wd->dragging_queue);
-        dragging_it->dragging = EINA_FALSE;
-        evas_object_smart_callback_call(dragging_it->base.widget, SIG_DRAG_STOP, dragging_it);
-        if (dragging_it->want_unrealize)
-          {
-             _item_unrealize(dragging_it, EINA_FALSE);
-             if (dragging_it->block->want_unrealize)
-               _item_block_unrealize(it->block);
-          }
-        it->wd->dragging_queue = eina_list_remove_list(it->wd->dragging_queue,it->wd->dragging_queue);
+        it->dragging = EINA_FALSE;
+        evas_object_smart_callback_call(it->base.widget, SIG_DRAG_STOP, it);
         dragged = 1;
      }
    if (it->swipe_timer)
@@ -1448,6 +1447,15 @@ _mouse_up(void        *data,
         it->wd->wasselected = EINA_FALSE;
         return;
      }
+   if (dragged)
+     {
+        if (it->want_unrealize)
+          {
+             _item_unrealize(it, EINA_FALSE);
+             if (it->block->want_unrealize)
+               _item_block_unrealize(it->block);
+          }
+     }
    if ((it->disabled) || (dragged) || (it->display_only)) return;
    if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
    if (it->wd->multi)
@@ -1485,6 +1493,65 @@ _mouse_up(void        *data,
 }
 
 static void
+_mouse_down_scroller(void        *data,
+                     Evas        *evas __UNUSED__,
+                     Evas_Object *obj __UNUSED__,
+                     void        *event_info __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(data);
+
+   if (!wd) return;
+   wd->drag_started = EINA_FALSE;
+}
+
+static void
+_mouse_up_scroller(void        *data,
+                   Evas        *evas __UNUSED__,
+                   Evas_Object *obj __UNUSED__,
+                   void        *event_info __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(data);
+
+   if (!wd) return;
+   wd->drag_started = EINA_FALSE;
+}
+
+static void
+_mouse_move_scroller(void        *data,
+                     Evas        *evas __UNUSED__,
+                     Evas_Object *obj __UNUSED__,
+                     void        *event_info)
+{
+   Widget_Data *wd = elm_widget_data_get(data);
+   Evas_Event_Mouse_Move *ev = event_info;
+   Evas_Coord minw = 0, minh = 0, dx, dy, adx, ady;
+
+   if (!wd) return;
+   if (wd->drag_started) return;
+
+   elm_coords_finger_size_adjust(1, &minw, 1, &minh);
+   dx = ev->cur.canvas.x - ev->prev.canvas.x;
+   dy = ev->cur.canvas.y - ev->prev.canvas.y;
+   adx = dx;
+   ady = dy;
+   if (adx < 0) adx = -dx;
+   if (ady < 0) ady = -dy;
+   if (((ady < minh) && (ady > minh / 2)) && (ady > adx))
+     {
+        if (dy < 0)
+          {
+             evas_object_smart_callback_call(data, SIG_DRAG_START_UP, NULL);
+             wd->drag_started = EINA_TRUE;
+          }
+        else
+          {
+             evas_object_smart_callback_call(data, SIG_DRAG_START_DOWN, NULL);
+             wd->drag_started = EINA_TRUE;
+          }
+     }
+}
+
+static void
 _signal_expand_toggle(void        *data,
                       Evas_Object *obj __UNUSED__,
                       const char  *emission __UNUSED__,
@@ -1709,6 +1776,7 @@ _icon_focused(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED
 {
    Elm_Genlist_Item *it = data;
    if (it) it->defer_unrealize = EINA_TRUE;
+   if (it->renamed && (it->wd->focused_rename_it != it)) it->wd->focused_rename_it = it;
 }
 
 static void
@@ -1716,8 +1784,10 @@ _icon_unfocused(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUS
 {
    Elm_Genlist_Item *it = data;
    if (it) it->defer_unrealize = EINA_FALSE;
+   if (it->renamed && (it->wd->focused_rename_it == it)) it->wd->focused_rename_it = NULL;
 }
 
+static void
 _item_del_hook(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
 {
    Elm_Genlist_Item *it = event_info;
@@ -2949,13 +3019,16 @@ _pan_calculate(Evas_Object *obj)
    Pan *sd = evas_object_smart_data_get(obj);
    Item_Block *itb;
    Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh;
+   Evas_Coord scr_x, scr_y;
    int in = 0;
    Elm_Genlist_Item *git;
    Eina_List *l;
 
    if (!sd) return;
    evas_event_freeze(evas_object_evas_get(obj));
-
+   elm_smart_scroller_child_pos_get(sd->wd->scr, &scr_x, &scr_y);
+   sd->wd->current_scrl_x = scr_x;
+   sd->wd->current_scrl_y = scr_y;
    if (sd->wd->pan_changed)
      {
         _calc_job(sd->wd);
@@ -3330,6 +3403,12 @@ elm_genlist_add(Evas_Object *parent)
    elm_widget_on_show_region_hook_set(obj, _show_region_hook, obj);
 
    wd->scr = elm_smart_scroller_add(e);
+   evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_MOUSE_DOWN,
+                                  _mouse_down_scroller, obj);
+   evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_MOUSE_UP,
+                                  _mouse_up_scroller, obj);
+   evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_MOUSE_MOVE,
+                                  _mouse_move_scroller, obj);
    elm_smart_scroller_widget_set(wd->scr, obj);
    elm_smart_scroller_object_theme_set(obj, wd->scr, "genlist", "base",
                                        elm_widget_style_get(obj));
@@ -4584,11 +4663,10 @@ elm_genlist_item_item_class_get(const Elm_Genlist_Item *it)
 }
 static Evas_Object *
 _elm_genlist_item_label_create(void        *data,
-                               Evas_Object *obj __UNUSED__,
-                               Evas_Object *tooltip,
+                               Evas_Object *obj,
                                void        *item __UNUSED__)
 {
-   Evas_Object *label = elm_label_add(tooltip);
+   Evas_Object *label = elm_label_add(obj);
    if (!label)
      return NULL;
    elm_object_style_set(label, "tooltip");
@@ -5594,7 +5672,6 @@ elm_genlist_item_rename_mode_set(Elm_Genlist_Item *it, Eina_Bool renamed)
      {
         _item_unrealize(it, EINA_FALSE);
         it->renamed = EINA_TRUE;
-        it->wd->rename_it = it;
         it->nocache = EINA_TRUE;
         if (it->selected)  _item_unselect(it);
 
@@ -5607,7 +5684,6 @@ elm_genlist_item_rename_mode_set(Elm_Genlist_Item *it, Eina_Bool renamed)
           {
              it->renamed = EINA_FALSE;
              it->nocache = EINA_TRUE;
-             it->wd->rename_it = NULL;
              _item_cache_zero(it->wd);
              elm_genlist_item_update(it);
           }
index e309668..f973501 100644 (file)
@@ -3127,6 +3127,44 @@ elm_scroll_thumbscroll_border_friction_all_set(double friction)
 #endif
 }
 
+EAPI double
+elm_scroll_thumbscroll_sensitivity_friction_get(void)
+{
+   return _elm_config->thumbscroll_sensitivity_friction;
+}
+
+EAPI void
+elm_scroll_thumbscroll_sensitivity_friction_set(double friction)
+{
+   if (friction < 0.1)
+     friction = 0.1;
+
+   if (friction > 1.0)
+     friction = 1.0;
+
+   _elm_config->thumbscroll_friction = friction;
+}
+
+EAPI void
+elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction)
+{
+   if (friction < 0.1)
+     friction = 0.1;
+
+   if (friction > 1.0)
+     friction = 1.0;
+
+#ifdef HAVE_ELEMENTARY_X
+   static Ecore_X_Atom atom = 0;
+   unsigned int sensitivity_friction_i = (unsigned int)(friction * 1000.0);
+
+   if (!atom)
+     atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_SENSITIVITY_FRICTION");
+   ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
+                                  atom, &sensitivity_friction_i, 1);
+#endif
+}
+
 /**
  * @defgroup Scrollhints Scrollhints
  * @ingroup Main
@@ -3556,4 +3594,4 @@ EAPI void
 elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source)
 {
    elm_widget_item_signal_emit(it, emission, source);
-}
\ No newline at end of file
+}
index 7ff273f..43656af 100644 (file)
@@ -37,6 +37,8 @@ void         _elm_smart_pan_get            (Evas_Object *obj, Evas_Coord *x, Eva
 void         _elm_smart_pan_max_get        (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
 void         _elm_smart_pan_min_get        (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
 void         _elm_smart_pan_child_size_get (Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+void         _elm_smart_pan_gravity_set    (Evas_Object *obj, double x, double y);
+void         _elm_smart_pan_gravity_get    (Evas_Object *obj, double *x, double *y);
 
 // els_scroller.h
 typedef enum _Elm_Smart_Scroller_Policy
@@ -182,6 +184,7 @@ struct _Elm_Config
    double         zoom_friction;
    unsigned char  thumbscroll_bounce_enable;
    double         thumbscroll_border_friction;
+   double         thumbscroll_sensitivity_friction;
    double         scroll_smooth_time_interval;
    double         scroll_smooth_amount;
    double         scroll_smooth_history_weight;
index 1cad5ce..98277ab 100644 (file)
@@ -922,6 +922,54 @@ elm_scroller_propagate_events_get(const Evas_Object *obj)
    return elm_smart_scroller_propagate_events_get(wd->scr);
 }
 
+/**
+ * Set scrolling gravity on a scroller
+ *
+ * It set scrolling gravity. It adds scrolling weight values
+ * to the scroller. Usually it uses for stopping the scroller.
+ * To set y as 0.0 for lower growing child objects,
+ * even though child objects are added to bottom, the scroller doesn't move.
+ * To set y as 1.0 for upper growing child objects. And x is horizontal gravity.
+ * By default 0.0
+ *
+ * @param obj The scroller object
+ * @param x The scrolling horizontal gravity
+ * @param y The scrolling vertical gravity
+ *
+ * @ingroup Scroller
+ */
+EAPI void
+elm_scroller_gravity_set(Evas_Object *obj, double x, double y)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return EINA_FALSE;
+
+   elm_smart_scroller_gravity_set(wd->scr, x, y);
+}
+
+/**
+ * Get scrolling gravity values for a scroller
+ *
+ * This gets gravity values for a scroller. See
+ * elm_scroller_gravity_set() for more information
+ *
+ * @param obj The scroller object
+ * @param x The scrolling horizontal gravity
+ * @param y The scrolling vertical gravity
+ *
+ * @ingroup Scroller
+ */
+EAPI void
+elm_scroller_gravity_get(const Evas_Object *obj, double *x, double *y)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return EINA_FALSE;
+
+   elm_smart_scroller_gravity_get(wd->scr, x, y);
+}
+
 EAPI void
 elm_scroller_page_move_set(Evas_Object *obj, Eina_Bool set)
 {
index ba21fc4..378750a 100644 (file)
@@ -243,7 +243,7 @@ _segment_on(Elm_Segment_Item *it)
 static void
 _position_items(Widget_Data *wd)
 {
-   Eina_List *l;
+   Eina_List *l, *ll;
    Elm_Segment_Item *it;
    Eina_Bool rtl;
    int bx, by, bw, bh, pos;
@@ -253,6 +253,7 @@ _position_items(Widget_Data *wd)
 
    evas_object_geometry_get(wd->base, &bx, &by, &bw, &bh);
    wd->item_width = bw / wd->item_count;
+
    rtl = elm_widget_mirrored_get(wd->obj);
 
    if (rtl)
@@ -269,6 +270,11 @@ _position_items(Widget_Data *wd)
         else
           pos += wd->item_width;
      }
+   ll = eina_list_last(wd->seg_items);
+   it = ll->data;
+   evas_object_resize(it->base.view,
+                        (bw - ((wd->item_count - 1) * wd->item_width)),
+                        bh);
    _sizing_eval(wd->obj);
 }
 
index f0a5316..d709bcd 100644 (file)
@@ -336,10 +336,11 @@ _icon_move_map(void *data, int interval_x, int interval_y)
 {\r
    Widget_Data *wd = (Widget_Data *)data;\r
    int i = 0;\r
-   int num = eina_list_count(wd->list);\r
+   int num;\r
    int x = 0, y = 0;\r
    if (!wd) return;\r
-   \r
+   num = eina_list_count(wd->list);\r
+\r
    for (i =0; i  < num; i++)\r
      {\r
         Elm_Stackedicon_Item *it = NULL;\r
@@ -526,8 +527,11 @@ _create_fake_image(Evas_Object *obj)
    // add shown icons\r
    EINA_LIST_REVERSE_FOREACH(wd->list, l, it) \r
      {\r
-        if (it->index >= MAX_SHOWN_ITEM) continue;\r
-        if (it) _add_image_to_buffer(obj, e, it);\r
+        if (it)\r
+          {\r
+             if (it->index >= MAX_SHOWN_ITEM) continue;\r
+             _add_image_to_buffer(obj, e, it);\r
+          }\r
      }\r
    ecore_evas_show( ee );\r
 \r
index 3f614c3..ff3cc5c 100644 (file)
@@ -12,6 +12,8 @@ struct _Smart_Data
    Evas_Object *child_obj;
    Evas_Coord   x, y, w, h;
    Evas_Coord   child_w, child_h, px, py;
+   double       gravity_x, gravity_y;
+   Evas_Coord   prev_cw, prev_ch, delta_posx, delta_posy;
 };
 
 /* local subsystem functions */
@@ -140,6 +142,26 @@ _elm_smart_pan_child_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
    if (h) *h = sd->child_h;
 }
 
+void
+_elm_smart_pan_gravity_set(Evas_Object *obj, double x, double y)
+{
+   API_ENTRY return;
+   sd->gravity_x = x;
+   sd->gravity_y = y;
+   sd->prev_cw = sd->child_w;
+   sd->prev_ch = sd->child_h;
+   sd->delta_posx = 0;
+   sd->delta_posy = 0;
+}
+
+void
+_elm_smart_pan_gravity_get(Evas_Object *obj, double *x, double *y)
+{
+   API_ENTRY return;
+   if (x) *x = sd->gravity_x;
+   if (y) *y = sd->gravity_y;
+}
+
 /* local subsystem functions */
 static void
 _smart_child_del_hook(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
@@ -171,7 +193,22 @@ _smart_child_resize_hook(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUS
 static void
 _smart_reconfigure(Smart_Data *sd)
 {
-   evas_object_move(sd->child_obj, sd->x - sd->px, sd->y - sd->py);
+   if (sd->gravity_x || sd->gravity_y)
+     {
+        sd->delta_posx += sd->child_w - sd->prev_cw;
+        sd->prev_cw = sd->child_w;
+        sd->delta_posy += sd->child_h - sd->prev_ch;
+        sd->prev_ch = sd->child_h;
+
+        evas_object_move(sd->child_obj,
+                         sd->x - sd->px - (sd->delta_posx*sd->gravity_x),
+                         sd->y - sd->py - (sd->delta_posy*sd->gravity_y));
+        sd->px += sd->delta_posx*sd->gravity_x;
+        sd->py += sd->delta_posy*sd->gravity_y;
+
+     }
+   else
+     evas_object_move(sd->child_obj, sd->x - sd->px, sd->y - sd->py);
 }
 
 static void
@@ -186,6 +223,8 @@ _smart_add(Evas_Object *obj)
    sd->y = 0;
    sd->w = 0;
    sd->h = 0;
+   sd->gravity_x = 0.0;
+   sd->gravity_y = 0.0;
    evas_object_smart_data_set(obj, sd);
 }
 
index cb64fa1..a00ef2b 100644 (file)
@@ -6,3 +6,6 @@ void         _elm_smart_pan_get            (Evas_Object *obj, Evas_Coord *x, Eva
 void         _elm_smart_pan_max_get        (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
 void         _elm_smart_pan_min_get        (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
 void         _elm_smart_pan_child_size_get (Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+void         _elm_smart_pan_gravity_set    (Evas_Object *obj, double x, double y);
+void         _elm_smart_pan_gravity_get    (Evas_Object *obj, double *x, double *y);
+
index 58f9185..3a7d966 100644 (file)
@@ -84,6 +84,8 @@ struct _Smart_Data
       void (*max_get) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
       void (*min_get) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
       void (*child_size_get) (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
+      void (*gravity_set) (Evas_Object *obj, double x, double y);
+      void (*gravity_get) (Evas_Object *obj, double *x, double *y);
    } pan_func;
 
    struct {
@@ -224,6 +226,8 @@ elm_smart_scroller_child_set(Evas_Object *obj, Evas_Object *child)
    sd->pan_func.max_get = _elm_smart_pan_max_get;
    sd->pan_func.min_get = _elm_smart_pan_min_get;
    sd->pan_func.child_size_get = _elm_smart_pan_child_size_get;
+   sd->pan_func.gravity_set = _elm_smart_pan_gravity_set;
+   sd->pan_func.gravity_get = _elm_smart_pan_gravity_get;
 
    evas_object_event_callback_add(child, EVAS_CALLBACK_DEL, _smart_child_del_hook, sd);
    _elm_smart_pan_child_set(sd->pan_obj, child);
@@ -280,6 +284,8 @@ elm_smart_scroller_extern_pan_set(Evas_Object *obj, Evas_Object *pan,
    sd->pan_func.max_get = pan_max_get;
    sd->pan_func.min_get = pan_min_get;
    sd->pan_func.child_size_get = pan_child_size_get;
+   sd->pan_func.gravity_set = _elm_smart_pan_gravity_set;
+   sd->pan_func.gravity_get = _elm_smart_pan_gravity_get;
    sd->extern_pan = 1;
    evas_object_smart_callback_add(sd->pan_obj, "changed", _smart_pan_changed_hook, sd);
    evas_object_smart_callback_add(sd->pan_obj, "pan_changed", _smart_pan_pan_changed_hook, sd);
@@ -1533,6 +1539,22 @@ _smart_pan_pan_changed_hook(void *data, Evas_Object *obj __UNUSED__, void *event
    _elm_smart_scroller_wanted_region_set(sd->smart_obj);
 }
 
+void
+elm_smart_scroller_gravity_set(Evas_Object *obj, double x, double y)
+{
+   API_ENTRY return;
+
+   sd->pan_func.gravity_set(sd->pan_obj, x, y);
+}
+
+void
+elm_smart_scroller_gravity_get(Evas_Object *obj, double *x, double *y)
+{
+   API_ENTRY return;
+
+   sd->pan_func.gravity_get(sd->pan_obj, x, y);
+}
+
 static void
 _smart_event_wheel(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
 {
@@ -1900,7 +1922,7 @@ _smart_event_mouse_up(void *data, Evas *e, Evas_Object *obj __UNUSED__, void *ev
                        ax /= (i + 1);
                        ay /= (i + 1);
                        at /= (i + 1);
-                       at *= 4.0; // magic number! just trial and error shows this makes it behave "nicer" and not run off at high speed all the time
+                       at /= _elm_config->thumbscroll_sensitivity_friction;
                        dx = ev->canvas.x - ax;
                        dy = ev->canvas.y - ay;
                        if (at > 0)
index eefe421..b73b4ee 100644 (file)
@@ -28,6 +28,8 @@ void elm_smart_scroller_object_theme_set        (Evas_Object *parent, Evas_Objec
 void elm_smart_scroller_mirrored_set            (Evas_Object *obj, Eina_Bool mirrored);
 void elm_smart_scroller_hold_set                (Evas_Object *obj, Eina_Bool hold);
 void elm_smart_scroller_freeze_set              (Evas_Object *obj, Eina_Bool freeze);
+void elm_smart_scroller_gravity_set             (Evas_Object *obj, double x, double y);
+void elm_smart_scroller_gravity_get             (Evas_Object *obj, double *x, double *y);
 void elm_smart_scroller_bounce_allow_set        (Evas_Object *obj, Eina_Bool horiz, Eina_Bool vert);
 void elm_smart_scroller_bounce_allow_get        (const Evas_Object *obj, Eina_Bool *horiz, Eina_Bool *vert);
 void elm_smart_scroller_paging_set              (Evas_Object *obj, double pagerel_h, double pagerel_v, Evas_Coord pagesize_h, Evas_Coord pagesize_v);