void ActivityScenariosView::loadScenarioList()
{
    elm_genlist_clear(scenario_list);
    GenlistItemScenarioHeader *headerLight = NULL, *headerShutter = NULL, *headerOther = NULL;

    if (view_mode == VIEW_MODE_ALL ||
        view_mode == VIEW_MODE_SCHEDULE)
    {
        headerLight = new GenlistItemScenarioHeader(evas, parent, _("Lights scenarios"));
        headerLight->Append(scenario_list);
        headerShutter = new GenlistItemScenarioHeader(evas, parent, _("Shutters scenarios"));
        headerShutter->Append(scenario_list);
        headerOther = new GenlistItemScenarioHeader(evas, parent, _("Other Scenarios"));
        headerOther->Append(scenario_list);
    }
    else if (view_mode == VIEW_MODE_LIGHT)
    {
        headerLight = new GenlistItemScenarioHeader(evas, parent, _("Lights scenarios"));
        headerLight->Append(scenario_list);
    }
    else if (view_mode == VIEW_MODE_SHUTTER)
    {
        headerShutter = new GenlistItemScenarioHeader(evas, parent, _("Shutters scenarios"));
        headerShutter->Append(scenario_list);
    }

    //populate the scenario list
    list<Scenario *>::iterator it = CalaosModel::Instance().getScenario()->scenarios.begin();
    for (;it != CalaosModel::Instance().getScenario()->scenarios.end();it++)
    {
        Scenario *sc = *it;
        bool cont = true;

        if (sc->getFirstCategory() == "light" &&
            (view_mode == VIEW_MODE_ALL || view_mode == VIEW_MODE_LIGHT || view_mode == VIEW_MODE_SCHEDULE))
        {
            if (view_mode == VIEW_MODE_SCHEDULE)
            {
                if (sc->isScheduled())
                    cont = false;
            }
            else
                cont = false;
        }

        if (sc->getFirstCategory() == "shutter" &&
            (view_mode == VIEW_MODE_ALL || view_mode == VIEW_MODE_SHUTTER || view_mode == VIEW_MODE_SCHEDULE))
        {
            if (view_mode == VIEW_MODE_SCHEDULE)
            {
                if (sc->isScheduled())
                    cont = false;
            }
            else
                cont = false;
        }

        if (sc->getFirstCategory() == "other" &&
            (view_mode == VIEW_MODE_ALL || view_mode == VIEW_MODE_SCHEDULE))
        {
            if (view_mode == VIEW_MODE_SCHEDULE)
            {
                if (sc->isScheduled())
                    cont = false;
            }
            else
                cont = false;
        }

        if (cont)
            continue;

        GenlistItemScenarioSchedule *item = new GenlistItemScenarioSchedule(evas, parent, false, sc);
        item->schedule_add_click.connect(sigc::mem_fun(schedule_add_click, &sigc::signal<void, Scenario *>::emit));
        item->schedule_modify_click.connect(sigc::mem_fun(schedule_modify_click, &sigc::signal<void, Scenario *>::emit));
        item->schedule_del_click.connect(sigc::mem_fun(schedule_del_click, &sigc::signal<void, Scenario *>::emit));
        if (sc->getFirstCategory() == "light")
            item->InsertAfter(scenario_list, headerLight);
        else if (sc->getFirstCategory() == "shutter")
            item->InsertAfter(scenario_list, headerShutter);
        else
            item->InsertAfter(scenario_list, headerOther);
    }
}
ActivityScheduleScenarioView::ActivityScheduleScenarioView(Evas *_e, Evas_Object *_parent):
    ActivityView(_e, _parent, "calaos/page/schedule_scenario"),
    schedule_list(NULL),
    month_list(NULL)
{
    setPartText("header.label", _("Scheduling"));

    addCallback("button.*", "pressed", sigc::mem_fun(*this, &ActivityScheduleScenarioView::buttonPressed));

    schedule_list = elm_genlist_add(parent);
    Swallow(schedule_list, "schedule.list");
    elm_object_style_set(schedule_list, "calaos");
    elm_genlist_homogeneous_set(schedule_list, true);
    evas_object_show(schedule_list);

    month_list = elm_genlist_add(parent);
    Swallow(month_list, "month.list");
    elm_object_style_set(month_list, "calaos");
    elm_genlist_homogeneous_set(month_list, true);
    evas_object_show(month_list);
    elm_genlist_multi_select_set(month_list, true);

    GenlistItemScenarioHeader *header;
    GenlistItemSimple *item;
    header = new GenlistItemScenarioHeader(evas, parent, _("Month of year"));
    header->Append(month_list);

    item = new GenlistItemSimple(evas, parent, _("All year"), true, false, NULL, "check");
    item->Append(month_list);
    item_all = item;
    item_all->setSelected(true);

    item = new GenlistItemSimple(evas, parent, _("January"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("February"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("March"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("April"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("May"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("June"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("July"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("August"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("September"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("October"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("November"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    item = new GenlistItemSimple(evas, parent, _("December"), true, false, NULL, "check");
    item->Append(month_list);
    items_months.push_back(item);

    /*
         * Can't use that for now. Seasons are not the same all over the world at the same monthes
         * (northern hemisphere/southern hemisphere have the opposite) We need to handle that
         * maybe from longitude/latitude in local_config.xml
         *
        header = new GenlistItemScenarioHeader(evas, parent, "Périodes prédéfinies");
        header->Append(month_list);

        item = new GenlistItemSimple(evas, parent, _("Spring"), true, false, NULL, "check");
        item->Append(month_list);
        items_periods.push_back(item);

        item = new GenlistItemSimple(evas, parent, _("Summer"), true, false, NULL, "check");
        item->Append(month_list);
        items_periods.push_back(item);

        item = new GenlistItemSimple(evas, parent, _("Fall"), true, false, NULL, "check");
        item->Append(month_list);
        items_periods.push_back(item);

        item = new GenlistItemSimple(evas, parent, _("Winter"), true, false, NULL, "check");
        item->Append(month_list);
        items_periods.push_back(item);
    */

    //Set up selection callback
    item_all->item_selected.connect([=](void *data)
    {
        if (item_all->isSelected())
        {
            for (uint i = 0;i < items_months.size();i++)
                items_months[i]->setSelected(false);
        }
    });
    for (uint i = 0;i < items_months.size();i++)
    {
        GenlistItemSimple *it = items_months[i];
        it->item_selected.connect([=](void *data)
        {
            if (item_all->isSelected())
                item_all->setSelected(false);
        });
    }
//    for (uint i = 0;i < items_periods.size();i++)
//        items_periods[i]->item_selected.connect(sigc::bind(sigc::mem_fun(*this, &ActivityScheduleScenarioView::itemPeriodSelected), items_periods[i]));

    Evas_Object *btn = edje_object_part_external_object_get(edje, "button.valid");
    elm_object_text_set(btn, _("Apply"));

    btn = edje_object_part_external_object_get(edje, "button.add");
    elm_object_text_set(btn, _("Add"));

    setPartText("hours_text", _("<big><disabled>Hours of execution</disabled></big>"));
    setPartText("month_text", _("<big><disabled>Specific schedule</disabled></big>"));
}