AlarmView: show "No alarms" text on empty list
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Wed, 14 Sep 2016 11:34:52 +0000 (13:34 +0200)
committerŁukasz Stanisławski <l.stanislaws@samsung.com>
Thu, 15 Sep 2016 08:23:13 +0000 (10:23 +0200)
Show "No alarms" text when there is no alarms defined
by the user.

Change-Id: I2782c81e50bf109bf554ad633a4f0591e808a864

clock/inc/Presenter/AlarmPresenter.h
clock/inc/View/AlarmView.h
clock/res/edje/alarm.edc
clock/src/Presenter/AlarmPresenter.cpp
clock/src/View/AlarmView.cpp

index 5df16f0..8cf2319 100644 (file)
@@ -39,6 +39,7 @@ namespace presenter {
                        void OnAlarmRemovedEvent(utils::Event *e);
                        void OnAlarmEditedEvent(utils::Event *e);
                        void OnDeleteItemClicked();
+                       void UpdateBackgroundLabel();
                        std::map<int, std::reference_wrapper<model::Alarm>> alarms_;
        };
 } /* presenters */
index 117aa3c..f39f08c 100644 (file)
@@ -45,6 +45,9 @@ namespace view {
                        void SetButtonClickedCallback(ButtonClickedCallback func);
                        void SetDeleteItemClickedCallback(ButtonClickedCallback func) { onDeleteClicked_ = func;}
                        Evas_Object *GetEvasObject();
+
+                       void ShowNoAlarmsBackgroundLabel();
+                       void HideNoAlarmsBackgroundLabel();
                private:
                        static Elm_Genlist_Item_Class alarm_itc;
                        static Evas_Object *ContentGet(void *data, Evas_Object *obj, const char *part);
@@ -61,6 +64,7 @@ namespace view {
                        Evas_Object *genlist_;
                        Evas_Object *content_;
                        Evas_Object *popup_;
+                       Evas_Object *label_;
                        SelectCallback onSelected_;
                        ToggleCallback onToggled_;
                        ButtonClickedCallback onClicked_;
index 3b82577..fce7adb 100644 (file)
@@ -221,4 +221,28 @@ collections {
                        }
                }
        }
+       group { name: "alarm.label";
+               styles {
+                       style {
+                               name: "label_style";
+                               base: "font=Tizen:style=Regular color=#808080aa font_size=40 align=center";
+                       }
+               }
+               parts {
+                       rect { "bg";
+                               desc { "default";
+                                       color: 255 255 255 255;
+                               }
+                       }
+                       textblock{ "text"; scale;
+                               desc { "default";
+                                       text {
+                                               style: "label_style";
+                                               min: 1.0 1.0;
+                                               ellipsis: -1;
+                                       }
+                               }
+                       }
+               }
+       }
 }
index a4d122a..47a6fe7 100644 (file)
@@ -51,6 +51,8 @@ void AlarmPresenter::ShowAll()
                                a.get().IsActivated());
                alarms_.insert(std::map<int, std::reference_wrapper<Alarm>>::value_type (id, std::reference_wrapper<Alarm>(a)));
        }
+
+       UpdateBackgroundLabel();
 }
 
 void AlarmPresenter::OnItemSelected(int idx)
@@ -85,6 +87,8 @@ void AlarmPresenter::OnItemActiveStatusChanged(int idx)
                alarm.Activate();
        }
 
+       view->ItemUpdate(idx, alarm.GetTime(), alarm.GetName().c_str(),
+                       alarm.GetWeekFlags(), alarm.IsActivated());
        AlarmProvider::Sync();
 }
 
@@ -101,6 +105,8 @@ void AlarmPresenter::OnAlarmAddedEvent(Event *e)
                        ev->GetAlarm().GetWeekFlags(),
                        ev->GetAlarm().IsActivated());
        alarms_.insert(std::map<int, std::reference_wrapper<Alarm>>::value_type (id, std::reference_wrapper<Alarm>(ev->GetAlarm())));
+
+       UpdateBackgroundLabel();
 }
 
 void AlarmPresenter::OnDeleteItemClicked()
@@ -121,6 +127,15 @@ void AlarmPresenter::OnAlarmRemovedEvent(Event *e)
                        break;
                }
        }
+       UpdateBackgroundLabel();
+}
+
+void AlarmPresenter::UpdateBackgroundLabel()
+{
+       if (alarms_.size() == 0)
+               view->ShowNoAlarmsBackgroundLabel();
+       else
+               view->HideNoAlarmsBackgroundLabel();
 }
 
 void AlarmPresenter::OnAlarmEditedEvent(utils::Event *e)
index 1b8bcd6..45f11dc 100644 (file)
@@ -286,3 +286,35 @@ void AlarmView::ShowDeletePopup()
        elm_object_content_set(popup_, list);
        evas_object_show(popup_);
 }
+
+void AlarmView::ShowNoAlarmsBackgroundLabel()
+{
+       if (!label_) {
+               label_ = elm_layout_add(content_);
+               if (!elm_layout_file_set(label_, utils::Utils::GetAppResourcePath(Utils::APP_DIR_RESOURCE, "edje/alarm.edj"), "alarm.label"))
+                       abort();
+               elm_object_part_text_set(label_, "text",
+                               "No alarms<br><br>After you create alarms, they will<br>be shown here.");
+               evas_object_size_hint_expand_set(label_, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(label_, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_show(label_);
+
+               // unload genlist
+               elm_object_content_unset(content_);
+               evas_object_hide(genlist_);
+
+               // load label into layout content
+               elm_object_content_set(content_, label_);
+       }
+}
+
+void AlarmView::HideNoAlarmsBackgroundLabel()
+{
+       if (label_) {
+               evas_object_del(label_);
+               // load genlist into layout content
+               elm_object_content_set(content_, genlist_);
+               evas_object_show(genlist_);
+               label_ = nullptr;
+       }
+}