Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C][Tizen] Potrzebuje wyjaśnienie funkcji

Ostatnio zmodyfikowano 2017-01-21 22:51
Autor Wiadomość
alien1983
Temat założony przez niniejszego użytkownika
[C][Tizen] Potrzebuje wyjaśnienie funkcji
» 2017-01-21 11:28:18
Tu mam coś takiego:

C/C++
id->item = elm_genlist_item_append( genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, bg_cb, ad );

Powyżej jest element listy jak na nie go kliknę to uruchamia się ta funkcja poniżej (bg_cb)

C/C++
void
bg_cb( void * data, Evas_Object * obj, void * event_info )
{
    dlog_print( DLOG_INFO, LOG_TAG, "info!!" );
}
Pytania..

1.co jest w tym konkretnym przypadku przekazywane do funkcji bg_cb, w "void *data, Evas_Object *obj, void *event_info"

2.dlaczego ona działa jeśli nie ma w nich wpisanych parametrów bg_cb(?)

3.czy mogę odczytać "*data" i wyswietlic w dlog_print(DLOG_INFO, LOG_TAG, "info!!");" ?

4. znacie jakiś Tutoriale w tym temacie ?
P-156733
DejaVu
» 2017-01-21 11:33:40
P-156734
alien1983
Temat założony przez niniejszego użytkownika
» 2017-01-21 12:18:10
Trochę inaczej sformułuje pytanie..

Mamy sobie taki przykładzik:
C/C++
id = calloc( sizeof( item_data ), 1 );
id->index = index++;
id->item = elm_genlist_item_append( genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, bg_cb, ad );

bg_cb to funkcja która jest wywoływana po naciśnięciu na element listy.
Musi wyglądać tak:
C/C++
void
bg_cb( void * data, Evas_Object * obj, void * event_info )
{
}

i teraz chcę pobrać z  tej u góry ten id aby wiedzieć który element listy się wywołał, nie chcę  do każdego elementu listy przypisywać nowej funkcji.

Kolejne pytanie to co to jest  te "ad" (struktura obiektów),jakieś dane zwrotne do tego ad ? jak tak to z czego do czego.(z funkcji bg_cb czy ?) z NULL w tym miejscu też działa!


C/C++
static void
create_list_view( appdata_s * ad ) <<<<<<<<<<<<<<<<<<<<<<<
{
    Evas_Object * genlist;
    Evas_Object * circle_genlist;
    Evas_Object * btn;
    Evas_Object * nf = ad->nf;
    Elm_Object_Item * nf_it;
    Elm_Genlist_Item_Class * itc = elm_genlist_item_class_new();
    Elm_Genlist_Item_Class * ttc = elm_genlist_item_class_new();
    Elm_Genlist_Item_Class * ptc = elm_genlist_item_class_new();
    item_data * id;
    int index = 0;
    .....

Jak sprawdzić który element listy wywołał mi tą funkcję ?
To poniżej niestety nie wyświetla mi nic sensownego:/
C/C++
typedef struct _item_data /**/
{
    int index;
    Elm_Object_Item * item;
} item_data;

void
bg_cb( void * data, Evas_Object * obj, void * event_info )
{
    item_data * itd =( item_data * ) data;
    char text[] = "00000000";
    sprintf( text, "%d", itd->index );
    dlog_print( DLOG_VERBOSE, LOG_TAG, "!!!---!!!!" );
    dlog_print( DLOG_VERBOSE, LOG_TAG, text );
}
P-156736
pekfos
» 2017-01-21 14:37:14
void* to adres na cokolwiek.
P-156741
alien1983
Temat założony przez niniejszego użytkownika
» 2017-01-21 14:47:38
Dlaczego tego w c++ nie zrobili tylko w c, było by prostsze nie mówiąc już o tym,  aby zrobić to w stylu bibliotek qt to by była bajka.
P-156742
pekfos
» 2017-01-21 18:40:32
W callbacku dostajesz to, co sam przekażesz do elm_genlist_item_append() jako ostatni argument. Masz to opisane pod linkami, które dostałeś.

Dlaczego tego w c++ nie zrobili tylko w c, było by prostsze nie mówiąc już o tym,  aby zrobić to w stylu bibliotek qt to by była bajka.
O nie, ktoś nie zrobił biblioteki jak Qt! I na dodatek w C, zamiast C++, ugh.. Jak ci się nie podoba, to nie używaj i zostaw dla siebie takie idiotyczne uwagi.
P-156746
DejaVu
» 2017-01-21 21:11:30
Zrób wrapper jak Ci źle z API C.
P-156752
mokrowski
» 2017-01-21 21:16:55
No :-)
C/C++
class MegaWrapper {
public:
    // Tizen API
};
Plusy będą.. jak zaimplementuje to się nauczy API :-)
P-156755
« 1 » 2
  Strona 1 z 2 Następna strona