elementary: elm_calendar deprecate elm_calendar_day_selection_disabled_set/get, inste...
authoryoz <yoz@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 19 Apr 2012 08:46:22 +0000 (08:46 +0000)
committeryoz <yoz@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 19 Apr 2012 08:46:22 +0000 (08:46 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@70319 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/test_calendar.c
src/lib/elm_calendar.c
src/lib/elm_calendar.h
src/lib/elm_deprecated.h

index 71107fd..d7995f4 100644 (file)
@@ -70,7 +70,7 @@ set_api_state(api_data *api)
               time_t sec_per_day = (60*60*24);
               time_t sec_per_year = sec_per_day * 365;
               time_t the_time = (sec_per_year * 41) + (sec_per_day * 10); /* Set date to JAN 01, 2011 */
-              elm_calendar_day_selection_disabled_set(cal, EINA_TRUE);
+              elm_calendar_select_mode_set(cal, ELM_CALENDAR_SELECT_NONE);
               elm_calendar_selected_time_set(cal, gmtime(&the_time));
            }
          break;
@@ -81,7 +81,7 @@ set_api_state(api_data *api)
               time_t sec_per_year = sec_per_day * 365;
               time_t the_time = (sec_per_year * 41) + (sec_per_day * 40); /* Set date to FEB 01, 2011 */
               elm_calendar_marks_clear(cal);
-              elm_calendar_day_selection_disabled_set(cal, EINA_TRUE);
+              elm_calendar_select_mode_set(cal, ELM_CALENDAR_SELECT_NONE);
               elm_calendar_selected_time_set(cal, gmtime(&the_time));
            }
          break;
@@ -174,7 +174,7 @@ _print_cal_info(Evas_Object *cal, Evas_Object *en)
 
    interval = elm_calendar_interval_get(cal);
    elm_calendar_min_max_year_get(cal, &year_min, &year_max);
-   sel_enabled = !elm_calendar_day_selection_disabled_get(cal);
+   sel_enabled = !!(elm_calendar_select_mode_get(cal) != ELM_CALENDAR_SELECT_NONE);
    wds = elm_calendar_weekdays_names_get(cal);
 
    snprintf(info, sizeof(info),
@@ -241,7 +241,7 @@ test_calendar2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
    cal2 = elm_calendar_add(win);
    evas_object_size_hint_weight_set(cal2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(cal2, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_calendar_day_selection_disabled_set(cal2, EINA_TRUE);
+   elm_calendar_select_mode_set(cal2, ELM_CALENDAR_SELECT_NONE);
    evas_object_show(cal2);
    elm_box_pack_end(bxh, cal2);
 
@@ -307,4 +307,53 @@ test_calendar2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
    evas_object_smart_callback_add(cal, "changed", _print_cal_info_cb, en);
 }
 
+
+void
+test_calendar3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Evas_Object *win, *cal, *bxx;
+   api_data *api = calloc(1, sizeof(api_data));
+
+   win = elm_win_util_standard_add("calendar", "Calendar");
+   elm_win_autodel_set(win, EINA_TRUE);
+   evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
+
+   bxx = elm_box_add(win);
+   elm_win_resize_object_add(win, bxx);
+   evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_show(bxx);
+   /*
+
+   bx = elm_box_add(win);
+   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   api->box = bx;
+   evas_object_show(bx);
+
+   bt = elm_button_add(win);
+   elm_object_text_set(bt, "Next API function");
+   evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+   elm_box_pack_end(bxx, bt);
+   elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+   evas_object_show(bt);
+
+   elm_box_pack_end(bxx, bx);
+   */
+
+   cal = elm_calendar_add(win);
+   elm_calendar_first_day_of_week_set(cal, ELM_DAY_THURSDAY);
+   elm_calendar_select_mode_set(cal, ELM_CALENDAR_SELECT_ONDEMAND);
+   evas_object_size_hint_weight_set(cal, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_box_pack_end(bxx, cal);
+//
+//   time_t sec_per_day = (60*60*24);
+//   time_t sec_per_year = sec_per_day * 365;
+//   time_t the_time = (sec_per_year * 41) + (sec_per_day * 9); /* Set date to DEC 31, 2010 */
+//   elm_calendar_selected_time_set(cal, gmtime(&the_time));
+//   elm_calendar_min_max_year_set(cal, 2010, 2012);
+//
+   evas_object_show(cal);
+
+   evas_object_show(win);
+}
+
 #endif
index 21c6a63..3b65ce0 100644 (file)
@@ -31,7 +31,7 @@ struct _Widget_Data
    const char *weekdays[ELM_DAY_LAST];
    struct tm current_time, selected_time;
    Day_Color day_color[42]; // EINA_DEPRECATED
-   Eina_Bool selection_enabled : 1;
+   Elm_Calendar_Select_Mode select_mode;
 };
 
 struct _Elm_Calendar_Mark
@@ -302,7 +302,7 @@ _populate(Evas_Object *obj)
              if ((wd->selected_it > -1) && (wd->selected_it != i))
                _unselect(wd, wd->selected_it);
 
-             if (wd->selection_enabled) _select(wd, i);
+             if (wd->select_mode != ELM_CALENDAR_SELECT_NONE) _select(wd, i);
 
              wd->selected_it = i;
           }
@@ -600,7 +600,7 @@ _update_sel_it(Evas_Object *obj, int sel_it)
 {
    int day;
    Widget_Data *wd = elm_widget_data_get(obj);
-   if ((!wd) || (!wd->selection_enabled))
+   if ((!wd) || (wd->select_mode == ELM_CALENDAR_SELECT_NONE))
      return;
 
    day = _get_item_day(obj, sel_it);
@@ -621,7 +621,7 @@ _day_selected(void *data, Evas_Object *obj __UNUSED__, const char *emission __UN
 {
    int sel_it;
    Widget_Data *wd = elm_widget_data_get(data);
-   if ((!wd) || (!wd->selection_enabled))
+   if ((!wd) || (wd->select_mode == ELM_CALENDAR_SELECT_NONE))
      return;
    sel_it = atoi(source);
 
@@ -668,7 +668,7 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
 
    if (!wd) return EINA_FALSE;
    if (elm_widget_disabled_get(obj)) return EINA_FALSE;
-   if (!wd->selection_enabled) return EINA_FALSE;
+   if (wd->select_mode ==  ELM_CALENDAR_SELECT_NONE) return EINA_FALSE;
 
    if ((!strcmp(ev->keyname, "Left")) ||
        ((!strcmp(ev->keyname, "KP_Left")) && (!ev->string)))
@@ -736,7 +736,6 @@ elm_calendar_add(Evas_Object *parent)
    wd->today_it = -1;
    wd->selected_it = -1;
    wd->first_day_it = -1;
-   wd->selection_enabled = EINA_TRUE;
    wd->format_func = _format_month_year;
    wd->marks = NULL;
 
@@ -864,26 +863,22 @@ elm_calendar_min_max_year_get(const Evas_Object *obj, int *min, int *max)
    if (max) *max = wd->year_max + 1900;
 }
 
-EAPI void
+EINA_DEPRECATED EAPI void
 elm_calendar_day_selection_disabled_set(Evas_Object *obj, Eina_Bool disabled)
 {
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-   wd->selection_enabled = (!disabled);
-   if (!disabled)
-     _select(wd, wd->selected_it);
+   if (disabled)
+     elm_calendar_select_mode_set(obj, ELM_CALENDAR_SELECT_NONE);
    else
-     _unselect(wd, wd->selected_it);
+     elm_calendar_select_mode_set(obj, ELM_CALENDAR_SELECT_DEFAULT);
 }
 
-EAPI Eina_Bool
+EINA_DEPRECATED EAPI Eina_Bool
 elm_calendar_day_selection_disabled_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->selection_enabled);
+   return !!(wd->select_mode == ELM_CALENDAR_SELECT_NONE);
 }
 
 EAPI void
@@ -1003,3 +998,32 @@ elm_calendar_first_day_of_week_get(const Evas_Object *obj)
    if (!wd) return -1;
    return wd->first_week_day;
 }
+
+EAPI void
+elm_calendar_select_mode_set(Evas_Object *obj, Elm_Calendar_Select_Mode mode)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if ((mode >= ELM_CALENDAR_SELECT_DEFAULT)
+       && (mode <= ELM_CALENDAR_SELECT_ONDEMAND)
+       && (wd->select_mode != mode))
+     {
+        wd->select_mode = mode;
+        if (wd->select_mode == ELM_CALENDAR_SELECT_ALWAYS)
+          _select(wd, wd->selected_it);
+        else
+          _unselect(wd, wd->selected_it);
+     }
+}
+
+EAPI Elm_Calendar_Select_Mode
+elm_calendar_select_mode_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) -1;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return -1;
+   return wd->select_mode;
+}
+
+
index 9f71b9b..c33d050 100644 (file)
@@ -86,6 +86,27 @@ typedef enum
  */
 typedef _Elm_Calendar_Weekday Elm_Calendar_Weekday;
 
+
+typedef enum
+{
+   ELM_CALENDAR_SELECT_DEFAULT = 0, /**< Default value. a day is always selected. */
+   ELM_CALENDAR_SELECT_ALWAYS, /**< a day is always selected. */
+   ELM_CALENDAR_SELECT_NONE, /**< None of the days can be selected. */
+   ELM_CALENDAR_SELECT_ONDEMAND /**< User may have selected a day or not. (not supported yet)*/
+} _Elm_Calendar_Select_Mode;
+
+/**
+ * @enum _Elm_Calendar_Select_Mode
+ * @typedef Elm_Calendar_Select_Mode
+ *
+ * the mode, who determine how user could select a day
+ *
+ * @see elm_calendar_select_mode_set()
+ *
+ * @ingroup Calendar
+ */
+typedef _Elm_Calendar_Select_Mode Elm_Calendar_Select_Mode;
+
 typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark;    /**< Item handle for a calendar mark. Created with elm_calendar_mark_add() and deleted with elm_calendar_mark_del(). */
 
 /**
@@ -207,41 +228,31 @@ EAPI void                 elm_calendar_min_max_year_set(Evas_Object *obj, int mi
 EAPI void                 elm_calendar_min_max_year_get(const Evas_Object *obj, int *min, int *max);
 
 /**
- * Enable or disable day selection
+ * Set select day mode to use.
  *
  * @param obj The calendar object.
- * @param disabled @c EINA_TRUE to disable selection or @c EINA_FALSE to
- * enable it.
- *
- * Enabled by default. If disabled, the user still can select months,
- * but not days. Selected days are highlighted on calendar.
- * It should be used if you won't need such selection for the widget usage.
- *
- * When a day is selected, or month is changed, smart callbacks for
- * signal "changed" will be called.
+ * @param select_mdoe The select mode to use.
  *
- * @see elm_calendar_day_selection_disabled_get()
- *
- * @ref calendar_example_04
+ * Set the day selection mode used.
  *
  * @ingroup Calendar
  */
-EAPI void                 elm_calendar_day_selection_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+EAPI void                 elm_calendar_select_mode_set(Evas_Object *obj, Elm_Calendar_Select_Mode mode);
 
 /**
- * Get a value whether day selection is disabled or not.
+ * Get the select day mode used.
  *
  * @param obj The calendar object.
- * @return EINA_TRUE means day selection is disabled. EINA_FALSE indicates
- * it's enabled. If @p obj is NULL, EINA_FALSE is returned.
  *
- * @see elm_calendar_day_selection_disabled_set() for details.
+ * @return the selected mode
  *
- * @ref calendar_example_05
+ * Get the day selection mode used.
+ *
+ * @see elm_calendar_select_mode_set() for more details
  *
  * @ingroup Calendar
  */
-EAPI Eina_Bool            elm_calendar_day_selection_disabled_get(const Evas_Object *obj);
+EAPI Elm_Calendar_Select_Mode elm_calendar_select_mode_get(const Evas_Object *obj);
 
 /**
  * Set selected date to be highlighted on calendar.
index ba5206b..49f88c2 100644 (file)
@@ -410,3 +410,14 @@ EINA_DEPRECATED EAPI void * elm_multibuttonentry_item_data_get(const Elm_Object_
  * @deprecated Use elm_object_item_data_set instead.
  */
 EINA_DEPRECATED EAPI void elm_multibuttonentry_item_data_set(Elm_Object_Item *it, void *data);
+
+/**
+ * @deprecated Use elm_calendar_select_mode_set instead.
+ */
+EINA_DEPRECATED EAPI void                 elm_calendar_day_selection_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * @deprecated Use elm_calendar_select_mode_get instead.
+ */
+EINA_DEPRECATED EAPI Eina_Bool            elm_calendar_day_selection_disabled_get(const Evas_Object *obj);
+