Show 'repeat' icon in alarm 86/123886/2
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Thu, 6 Apr 2017 13:57:20 +0000 (15:57 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Fri, 7 Apr 2017 10:02:08 +0000 (12:02 +0200)
Now the repeat icon appears if any of week flags are set.

Change-Id: I2cbe1097433501ec5aa02336839d3a8186d2dda6

clock/inc/Model/WeekFlags.h
clock/res/edje/alarm.edc
clock/res/edje/images/clock_ic_repeat.png [new file with mode: 0644]
clock/src/Model/WeekFlags.cpp
clock/src/View/AlarmView.cpp

index 7c8ff5fcbf67add580371e52dce093bb34955576..522606832585745a6abd8bbf3a483a14299013fb 100644 (file)
@@ -83,6 +83,15 @@ namespace model {
                         */
                        bool IsOn(WeekDay day);
 
+
+                       /**
+                        * @brief Check if flag is set for any of given day flag.
+                        * @param[in] day to check.
+                        * @return true, if week flag is set for particular day, false
+                        * otherwise.
+                        */
+                       bool OnAny(WeekDay day);
+
                        /** 
                         * @brief Check if week flags is empty 
                         * @return true if week flags empty.
@@ -103,7 +112,7 @@ namespace model {
                         */
                        inline bool operator==(const WeekFlags &a) const { return a.raw_flags == raw_flags; }
                private:
-                       int raw_flags;
+                       unsigned int raw_flags;
        };
 } /* model */
 
index af8c845ae8832bfe123a44780a3367ea585f0bc0..78b63636a475a76e014656554da7ff5b44fb65e1 100644 (file)
@@ -142,13 +142,31 @@ collections {
                                        text.style: "font4_dim";
                                }
                        }
+                       group { "repeat"; scale;
+                               source: "repeat-icon";
+                               desc { "default";
+                                       fixed: 1 1;
+                                       min: 38 38;
+                                       max: 38 38;
+                                       align: 0.0 0.0;
+                                       rel1.to: "spacer.name.week";
+                                       rel2.to: "spacer.name.week";
+                               }
+                               desc { "hidden";
+                                       inherit: "default";
+                                       fixed: 1 1;
+                                       min: 0 0;
+                                       max: 0 0;
+                                       visible: 0;
+                               }
+                       }
                        textblock { "name"; scale;
                                desc { "default";
                                        fixed: 1 1;
                                        min: 268 43;
                                        max: 268 43;
                                        align: 0.0 0.0;
-                                       rel1.to: "spacer.name.week";
+                                       rel1 { relative: 1.0 0.0; to: "repeat"; }
                                        rel2.to: "spacer.name.week";
                                        text.style: "font3_normal";
                                }
@@ -165,6 +183,7 @@ collections {
                        target: "name";
                        target: "weekflags";
                        target: "time";
+                       after: "enable,repeat";
                }
                program { "disabled";
                        signal: "alarm,state,disabled";
@@ -173,6 +192,58 @@ collections {
                        target: "name";
                        target: "weekflags";
                        target: "time";
+                       after: "disable,repeat";
+               }
+               program { "show,repeat,icon";
+                       signal: "show,repeat,icon";
+                       source: "clock";
+                       action: STATE_SET "default" 0.0;
+                       target: "repeat";
+               }
+               program { "hide,repeat,icon";
+                       signal: "hide,repeat,icon";
+                       source: "clock";
+                       action: STATE_SET "hidden" 0.0;
+                       target: "repeat";
+               }
+               program { "disable,repeat";
+                       action: SIGNAL_EMIT "state,disabled" "";
+                       target: "repeat";
+               }
+               program { "enable,repeat";
+                       action: SIGNAL_EMIT "state,enabled" "";
+                       target: "repeat";
+               }
+       }
+       group { name: "repeat-icon";
+               images {
+                       image : "clock_ic_repeat.png" COMP;
+               }
+               parts {
+                       image { "repeat"; scale;
+                               desc { "default";
+                                       min: 38 38;
+                                       max: 38 38;
+                                       color: 0 0 0 179;
+                                       image.normal: "clock_ic_repeat.png";
+                               }
+                               desc { "disabled";
+                                       inherit: "default";
+                                       color: 0 0 0 40;
+                               }
+                       }
+               }
+               program { "enable";
+                       signal: "state,enabled";
+                       source: "*";
+                       action: STATE_SET "default" 0.0;
+                       target: "repeat";
+               }
+               program { "disable";
+                       signal: "state,disabled";
+                       source: "*";
+                       action: STATE_SET "disabled" 0.0;
+                       target: "repeat";
                }
        }
        group { name: "elm/genlist/item/select_all/default";
diff --git a/clock/res/edje/images/clock_ic_repeat.png b/clock/res/edje/images/clock_ic_repeat.png
new file mode 100644 (file)
index 0000000..e902a9a
Binary files /dev/null and b/clock/res/edje/images/clock_ic_repeat.png differ
index 4c7d08873b7874274fc4314260b9bed82cb4f74f..0fdec6a4bc06183b571de733d003bd847e24391f 100644 (file)
@@ -23,20 +23,24 @@ WeekFlags::WeekFlags() {
 };
 
 void WeekFlags::AddDay(WeekDay day) {
-       raw_flags |= static_cast<int>(day);
+       raw_flags |= static_cast<unsigned int>(day);
 };
 
 void WeekFlags::RemoveDay(WeekDay day) {
-       raw_flags &= ~static_cast<int>(day);
+       raw_flags &= ~static_cast<unsigned int>(day);
 };
 
 bool WeekFlags::IsOn(WeekDay day) {
-       return (raw_flags & static_cast<int>(day)) == static_cast<int>(day);
+       return (raw_flags & static_cast<unsigned int>(day)) == static_cast<unsigned int>(day);
+};
+
+bool WeekFlags::OnAny(WeekDay day) {
+       return (raw_flags & static_cast<unsigned int>(day)) > 0;
 };
 
 WeekFlags::WeekFlags(WeekDay mask)
 {
-       raw_flags = static_cast<int>(mask);
+       raw_flags = static_cast<unsigned int>(mask);
 }
 
 void WeekFlags::Serialize(utils::IWriter &w) const
index 9b485eafbf103052d863bcaa3599424c5e2e78a1..b21be85836ed0fd0143eaceb9e209ec39472e660 100644 (file)
@@ -74,6 +74,15 @@ void AlarmView::ItemClicked(void *data, Evas_Object *obj, void *info)
        id->instance->OnItemToggled((uintptr_t)id->it);
 }
 
+void SetItemRepeatIconVisibility(Elm_Object_Item *it, bool visible)
+{
+       if (visible) {
+               elm_object_item_signal_emit(it, "show,repeat,icon", "clock");
+       } else {
+               elm_object_item_signal_emit(it, "hide,repeat,icon", "clock");
+       }
+}
+
 void AlarmView::ItemRealized(void *data, Evas_Object *obj, void *info)
 {
        Elm_Object_Item *it = static_cast<Elm_Object_Item*>(info);
@@ -84,6 +93,8 @@ void AlarmView::ItemRealized(void *data, Evas_Object *obj, void *info)
                elm_object_item_signal_emit(id->it, "alarm,state,enabled", "clock");
        else
                elm_object_item_signal_emit(id->it, "alarm,state,disabled", "clock");
+
+       SetItemRepeatIconVisibility(it, (id->flags.OnAny(WeekDay::ALL_WEEK)));
 }
 
 void AlarmView::ItemSelected(void *data, Evas_Object *obj, void *info)
@@ -290,6 +301,7 @@ void AlarmView::ItemUpdate(int idx, Time time, const char *name,
        data->active = active;
        data->time = time;
 
+       SetItemRepeatIconVisibility(it, (data->flags.OnAny(WeekDay::ALL_WEEK)));
        elm_genlist_item_update(it);
 }