[EditAlarmView] Disable items if needed on view creation 76/143576/1 submit/tizen/20170811.114751
authorKamil Lipiszko <k.lipiszko@samsung.com>
Thu, 10 Aug 2017 11:12:05 +0000 (13:12 +0200)
committerKamil Lipiszko <k.lipiszko@samsung.com>
Thu, 10 Aug 2017 11:12:05 +0000 (13:12 +0200)
Currently if alarm's type is set to vibrate only and it is clicked
for editing, genlist items that should be disabled aren't. This
patch fixes this issue.

Change-Id: Ibf1f0d9b40863279c728fdfc80f6dbb25ae5ed85

clock/inc/View/EditAlarmView.h
clock/src/View/EditAlarmView.cpp

index 1f72d9a0495aa462225ae48b09f61b36c5ac17fb..fec448678b7a7649e3ee42986b347985fd5b77dd 100644 (file)
@@ -242,6 +242,8 @@ namespace view {
                        void RingtonePathUpdateCallback();
                        const char *GetTitle();
                        std::string GetDate();
+                       void SetType(model::Alarm::Type type);
+                       void UpdateType();
 
                        utils::Connection time_format_change_listener_;
                        void TimeFormatChanged();
index 7e0be7d6cd9ba2799207ebdd973eb59897b1fa43..6527a8dc196baa1fed43ccd2c06f2a1e5ac10352 100644 (file)
@@ -719,6 +719,8 @@ void EditAlarmView::CreateGenlistItems()
        it = elm_genlist_item_append(content_, itc, this, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
        elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
        elm_genlist_item_class_unref(itc);
+
+       UpdateType();
 }
 
 void EditAlarmView::DestroyContent()
@@ -735,28 +737,41 @@ void EditAlarmView::PopupListItemSelectedCallback(void *data, Evas_Object *obj,
        elm_radio_value_set(radio, elm_radio_state_value_get(radio));
 }
 
-void EditAlarmView::PopupHide(void *data, Evas_Object *obj, void *event)
+void EditAlarmView::UpdateType()
 {
-       EditAlarmView *view = static_cast<EditAlarmView*>(data);
-       view->data_.type = static_cast<Alarm::Type>(elm_radio_value_get(view->main_radio_));
-       // refresh type item
-       elm_genlist_item_update(view->type_it_);
-       elm_popup_dismiss(view->type_popup_);
+       elm_genlist_item_update(type_it_);
 
-       switch (view->data_.type)
+       switch (data_.type)
        {
                case Alarm::Type::VIBRATION:
-                       elm_object_item_disabled_set(view->volume_it_, EINA_TRUE);
-                       elm_object_item_disabled_set(view->tone_it_, EINA_TRUE);
+                       elm_object_item_disabled_set(volume_it_, EINA_TRUE);
+                       elm_object_item_disabled_set(tone_it_, EINA_TRUE);
                        break;
                case Alarm::Type::SOUND_ONLY:
                case Alarm::Type::VIBRATION_AND_SOUND:
-                       elm_object_item_disabled_set(view->volume_it_, EINA_FALSE);
-                       elm_object_item_disabled_set(view->tone_it_, EINA_FALSE);
+                       elm_object_item_disabled_set(volume_it_, EINA_FALSE);
+                       elm_object_item_disabled_set(tone_it_, EINA_FALSE);
                        break;
        }
 }
 
+void EditAlarmView::SetType(model::Alarm::Type type)
+{
+       data_.type = type;
+
+       UpdateType();
+}
+
+void EditAlarmView::PopupHide(void *data, Evas_Object *obj, void *event)
+{
+       EditAlarmView *view = static_cast<EditAlarmView*>(data);
+       model::Alarm::Type type = static_cast<Alarm::Type>(elm_radio_value_get(view->main_radio_));
+
+       view->SetType(type);
+
+       elm_popup_dismiss(view->type_popup_);
+}
+
 void EditAlarmView::Del(void *data, Evas_Object *obj, void *event)
 {
        evas_object_del(obj);