static Ret message_box_on_button_clicked(void* ctx, void* obj) { *(int*)ctx = ftk_widget_id((FtkWidget*)obj); ftk_logd("%s: the %dth button is clicked.\n", __func__, ftk_widget_id((FtkWidget*)obj)); return RET_QUIT; }
static Ret ftk_music_on_button_clicked(void* ctx, void* obj) { FtkWidget* button = (FtkWidget *)obj; FtkWidget* win = (FtkWidget *)ctx; FtkWidget* label = (FtkWidget *)ctx; return_val_if_fail(obj != NULL && win != NULL, RET_FAIL); system("killall mplayer"); switch (ftk_widget_id(button)) { case IDC_PLAY: _app_music_browser(win); break; case IDC_STOP: label = ftk_widget_lookup(win, IDC_TITLE); if (label) ftk_widget_set_text(label, ""); break; default: break; } return RET_OK; }
FtkWidget* ftk_widget_lookup(FtkWidget* thiz, int id) { FtkWidget* iter = thiz; FtkWidget* widget = NULL; return_val_if_fail(thiz != NULL, NULL); if(ftk_widget_id(thiz) == id) return iter; iter = ftk_widget_child(thiz); for(; iter != NULL; iter = ftk_widget_next(iter)) { if(ftk_widget_id(iter) == id) return iter; if((widget = ftk_widget_lookup(iter, id)) != NULL) return widget; } return NULL; }
static Ret button_quit_clicked(void* ctx, void* obj) { if(ctx != NULL) { /*modal*/ *(int*)ctx = ftk_widget_id(obj); } else { /*modal-less*/ ftk_widget_unref(ftk_widget_toplevel(obj)); } return RET_QUIT; }