Example #1
0
static Evas_Object *_create_genlist(Evas_Object* parent)
{
	__COMMON_FUNC_ENTER__;
	assertm_if(NULL == parent, "parent is NULL!!");

	list = elm_genlist_add(parent);
	assertm_if(NULL == list, "list allocation fail!!");
	elm_genlist_fx_mode_set(list, EINA_FALSE);
	elm_genlist_mode_set(list, ELM_LIST_COMPRESS);
	elm_genlist_homogeneous_set(list, EINA_TRUE);

	evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
	evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);

	evas_object_smart_callback_add(list, "highlighted", _gl_highlighted, NULL);
	evas_object_smart_callback_add(list, "unhighlighted", _gl_unhighlighted, NULL);

	itc.item_style = "2line.top";
	itc.func.text_get = _gl_text_get;
	itc.func.content_get = _gl_content_get;
	itc.func.state_get = NULL;
	itc.func.del = _gl_list_del;

	__COMMON_FUNC_EXIT__;

	return list;
}
ActivityScenariosView::ActivityScenariosView(Evas *_e, Evas_Object *_parent):
    ActivityView(_e, _parent, "calaos/page/scenarios"),
    view_mode(VIEW_MODE_ALL)
{
    setPartText("header.label", _("Scenario management"));

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

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

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

    Evas_Object *btn = edje_object_part_external_object_get(edje, "button.calendar.today");
    elm_object_text_set(btn, _("Today"));

    btn = edje_object_part_external_object_get(edje, "button.create");
    elm_object_text_set(btn, _("Create a new scenario"));

    btn = edje_object_part_external_object_get(edje, "button.list.all");
    elm_object_text_set(btn, _("All"));

    btn = edje_object_part_external_object_get(edje, "button.list.light");
    elm_object_text_set(btn, _("Lights"));

    btn = edje_object_part_external_object_get(edje, "button.list.shutters");
    elm_object_text_set(btn, _("Shutters"));

    btn = edje_object_part_external_object_get(edje, "button.list.schedule");
    elm_object_text_set(btn, _("Scheduled"));

    //default to today
    time_t t = time(0);
    currDate = *localtime(&t);

    if (CalaosModel::Instance().getScenario())
        scenarioChangeCon = CalaosModel::Instance().getScenario()->scenario_change.connect([=](Scenario *) { reloadCalendar(); });
}
ActivityAudioListView::ActivityAudioListView(Evas *_e, Evas_Object *_parent):
    ActivityView(_e, _parent, "calaos/page/media/audio_list"),
    player_current(NULL),
    in_edit_mode(false)
{
    players.reserve(3);
    for (int i = 0;i < 3;i++)
    {
        ActivityPlayerObject ac(evas, parent);
        players.push_back(ac);
        players[players.size() - 1].createEdjeObject(theme, evas);
        Swallow(players[players.size() - 1].object, "player.swallow." + Utils::to_string(i + 1));
        players[players.size() - 1].player_selected.connect(sigc::mem_fun(*this, &ActivityAudioListView::playerSelected));
    }

    Evas_Object *btn = edje_object_part_external_object_get(edje, "button.browser.back");
    elm_object_text_set(btn, _("My Music"));

    btn = edje_object_part_external_object_get(edje, "button.browser.root");
    elm_object_text_set(btn, _("Back"));

    addCallback("button.browser.back", "pressed", sigc::mem_fun(*this, &ActivityAudioListView::browserButtonBack));
    addCallback("button.browser.root", "pressed", sigc::mem_fun(*this, &ActivityAudioListView::browserButtonRoot));

    gplaylist = elm_genlist_add(parent);
    Swallow(gplaylist, "playlist.swallow");
    elm_object_style_set(gplaylist, "calaos");
    elm_genlist_homogeneous_set(gplaylist, true);
    evas_object_show(gplaylist);

    pager_browser = elm_naviframe_add(parent);
    evas_object_show(pager_browser);
    Swallow(pager_browser, "browser.swallow");

    addCallback("audio", "*", sigc::mem_fun(*this, &ActivityAudioListView::EdjeCallback));
}
EAPI_MAIN int
elm_main(int argc, char **argv)
{
    Evas_Object *win, *box, *hbox;
    Evas_Object *list, *btn;
    int i;

    win = elm_win_util_standard_add("genlist", "Genlist - simple");
    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
    elm_win_autodel_set(win, EINA_TRUE);

    box = elm_box_add(win);
    evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    elm_win_resize_object_add(win, box);
    evas_object_show(box);

    list = elm_genlist_add(win);

    if (!_itc)
    {
        _itc = elm_genlist_item_class_new();
        _itc->item_style = "default";
        _itc->func.text_get = _item_label_get;
        _itc->func.content_get = _item_content_get;
        _itc->func.state_get = NULL;
        _itc->func.del = NULL;
    }

    Eina_Bool hbounce, vbounce, always, no_sel;
    Elm_Scroller_Policy hp, vp;
    Elm_Object_Select_Mode sel_mode;

    always = no_sel = EINA_FALSE;
    sel_mode = elm_genlist_select_mode_get(list);
    if (sel_mode == ELM_OBJECT_SELECT_MODE_ALWAYS)
        always = EINA_TRUE;
    else if (sel_mode == ELM_OBJECT_SELECT_MODE_NONE)
        no_sel = EINA_TRUE;

    printf("default values:\n");
    printf("always select: %d\n", always);
    elm_scroller_bounce_get(list, &hbounce, &vbounce);
    printf("bounce - horizontal: %d, vertical: %d\n", hbounce, vbounce);
    printf("homogeneous: %d\n", elm_genlist_homogeneous_get(list));
    printf("horizontal mode: %d\n", elm_genlist_mode_get(list));
    printf("longpress timeout: %0.3f\n",
           elm_genlist_longpress_timeout_get(list));
    printf("multi selection: %d\n", elm_genlist_multi_select_get(list));
    printf("no selection mode: %d\n", no_sel);
    elm_scroller_policy_get(list, &hp, &vp);
    printf("scroller policy - horizontal: %d, vertical: %d\n", hp, vp);
    printf("block count: %d\n", elm_genlist_block_count_get(list));
    printf("\n");

    elm_scroller_bounce_set(list, EINA_FALSE, EINA_FALSE);
    elm_genlist_homogeneous_set(list, EINA_FALSE);
    elm_genlist_mode_set(list, ELM_LIST_LIMIT);
    elm_genlist_multi_select_set(list, EINA_TRUE);
    elm_genlist_select_mode_set(list, ELM_OBJECT_SELECT_MODE_DEFAULT);
    elm_scroller_policy_set(list, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
    elm_genlist_longpress_timeout_set(list, 0.5);
    elm_genlist_block_count_set(list, 16);

    for (i = 0; i < N_ITEMS; i++)
    {
        elm_genlist_item_append(list, _itc,
                                (void *)(long)i, NULL,
                                ELM_GENLIST_ITEM_NONE,
                                _item_sel_cb, NULL);
    }

    evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_box_pack_end(box, list);
    evas_object_show(list);

    hbox = elm_box_add(win);
    elm_box_horizontal_set(hbox, EINA_TRUE);
    evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0);
    evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_box_pack_end(box, hbox);
    evas_object_show(hbox);

    btn = elm_button_add(win);
    elm_object_text_set(btn, "Show status");
    evas_object_size_hint_weight_set(btn, 0, 0);
    evas_object_size_hint_align_set(btn, 0.5, 0.5);
    evas_object_smart_callback_add(btn, "clicked", _show_status_cb, list);
    elm_box_pack_end(hbox, btn);
    evas_object_show(btn);

    btn = elm_button_add(win);
    elm_object_text_set(btn, "Realize");
    evas_object_size_hint_weight_set(btn, 0, 0);
    evas_object_size_hint_align_set(btn, 0.5, 0.5);
    evas_object_smart_callback_add(btn, "clicked", _realize_cb, list);
    elm_box_pack_end(hbox, btn);
    evas_object_show(btn);

    evas_object_resize(win, 200, 320);
    evas_object_show(win);

    elm_run();
    elm_shutdown();

    return 0;
}
void ActivityAudioListView::itemRadioLoaded(list<Params> &infos)
{
    list<Params>::iterator it = infos.begin();

    CREATE_GENLIST_HELPER(glist);
    elm_genlist_homogeneous_set(glist, false);
    elm_genlist_mode_set(glist, ELM_LIST_COMPRESS);

    for (;it != infos.end();it++)
    {
        Params &pitem = *it;

        cDebug() << "item type: " << pitem.toString();

        if (pitem["type"] == "xmlbrowser")
        {
            GenlistItemSimple *item = new GenlistItemSimple(evas, parent, pitem["name"], true);
            item->setIcon("calaos/icons/genlist/radio");
            item->Append(glist);
            item->setUserData(item);
            item->item_selected.connect(sigc::bind(
                                            sigc::mem_fun(*this, &ActivityAudioListView::radioSelected),
                                            pitem["id"], ""));
        }
        else
        {
            if (pitem["isaudio"] == "1")
            {
                pitem.Add("radio_id", radio_id);
                GenlistItemRadio *item = new GenlistItemRadio(evas, parent, player_current->getPlayer(), pitem);
                item->Append(glist);

                if (pitem["hasitems"] == "1")
                {
                    item->setUserData(item);
                    item->item_selected.connect(sigc::bind(
                                                    sigc::mem_fun(*this, &ActivityAudioListView::radioSelected),
                                                    radio_id ,pitem["id"]));
                }
            }
            else
            {
                if (pitem["hasitems"] == "1" && pitem["type"] != "search" && pitem["type"] != "xmlbrowser_search")
                {
                    GenlistItemSimple *item;
                    if (pitem["type"] == "text" || pitem["type"] == "textarea")
                        item = new GenlistItemSimple(evas, parent, pitem["name"], true, true);
                    else
                        item = new GenlistItemSimple(evas, parent, pitem["name"], true);
                    item->setIcon("calaos/icons/genlist/folder");
                    item->Append(glist);
                    item->setUserData(item);
                    item->item_selected.connect(sigc::bind(
                                                    sigc::mem_fun(*this, &ActivityAudioListView::radioSelected),
                                                    radio_id ,pitem["id"]));
                }
                else
                {
                    GenlistItemSimple *item = new GenlistItemSimple(evas, parent, pitem["name"], false, true);
                    item->Append(glist);

                    if (pitem["type"] == "search" || pitem["type"] == "xmlbrowser_search")
                    {
                        item->setIcon("calaos/icons/genlist/search");
                        item->item_selected.connect(sigc::bind(
                                                        sigc::mem_fun(*this, &ActivityAudioListView::searchRadioSelected),
                                                        radio_id ,pitem["id"]));
                    }
                }
            }
        }
    }

    elm_naviframe_item_push(pager_browser, NULL, NULL, NULL, glist, "calaos");

    EmitSignal("browser,loading,stop", "calaos");
}
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>"));
}