static FtkWidget* ftk_bluetooth_create_window(void) { FtkWidget *widget; FtkListRender* render = NULL; FtkWidget* win = ftk_app_window_create(); ftk_window_set_animation_hint(win, "app_main_window"); ftk_widget_set_text(win, "블루투스"); widget = ftk_label_create(win, 10, 10, 220, 30); ftk_widget_set_id(widget, IDC_INFO); ftk_widget_set_text(widget, "검색 중"); widget = ftk_list_view_create(win, 10, 40, 220, 200); ftk_list_view_set_clicked_listener(widget, _bt_on_item_clicked, win); ftk_widget_set_id(widget, IDC_LIST); _model = ftk_list_model_default_create(10); render = ftk_list_render_default_create(); ftk_list_render_default_set_marquee_attr(render, FTK_MARQUEE_AUTO | FTK_MARQUEE_RIGHT2LEFT | FTK_MARQUEE_FOREVER); ftk_list_view_init(widget, _model, render, 40); ftk_list_model_unref(_model); _timer = ftk_source_timer_create(300, _bt_scan_start, win); ftk_main_loop_add_source(ftk_default_main_loop(), _timer); return win; }
static FtkWidget* ftk_file_browser_input_dialog(FtkWidget* thiz, const char* text) { int dialog_width = 0; FtkWidget* win = thiz; FtkWidget* entry = NULL; FtkWidget* button = NULL; FtkWidget* dialog = NULL; dialog = ftk_dialog_create(0, 0, ftk_widget_width(win) - 20, 150); dialog_width = ftk_widget_width(dialog); entry = ftk_entry_create(dialog, 10, 20, dialog_width - 20, 20); ftk_widget_set_id(entry, ID_ENTRY); button = ftk_button_create(dialog, dialog_width/2-70, 60, 80, 50); ftk_widget_set_text(button, _("OK")); ftk_widget_set_id(button, ID_OK); ftk_button_set_clicked_listener(button, ftk_file_browser_input_dialog_button_clicked, NULL); button = ftk_button_create(dialog, dialog_width/2+10, 60, 80, 50); ftk_widget_set_text(button, _("Cancel")); ftk_widget_set_id(button, ID_CANCEL); ftk_button_set_clicked_listener(button, ftk_file_browser_input_dialog_button_clicked, NULL); ftk_window_set_focus(dialog, entry); ftk_widget_set_text(dialog, text); ftk_widget_show_all(dialog, 1); return dialog; }
static void ftk_init_panel(void) { FtkGc gc; FtkWidget* item = NULL; FtkWidget* panel = ftk_status_panel_create(FTK_STATUS_PANEL_HEIGHT); size_t width = ftk_widget_width(panel); ftk_set_status_panel(panel); quit_if_fail(ftk_default_status_panel(), "Init status panel failed.\n"); memset(&gc, 0x00, sizeof(gc)); gc.mask = FTK_GC_BITMAP; gc.bitmap = ftk_theme_load_image(ftk_default_theme(), "status-bg"FTK_STOCK_IMG_SUFFIX); ftk_widget_set_gc(panel, FTK_WIDGET_NORMAL, &gc); ftk_widget_set_gc(panel, FTK_WIDGET_ACTIVE, &gc); ftk_widget_set_gc(panel, FTK_WIDGET_FOCUSED, &gc); ftk_gc_reset(&gc); item = ftk_status_item_create(panel, -100, 32); ftk_widget_set_id(item, IDC_CLOSE_ITEM); gc.bitmap = ftk_theme_load_image(ftk_default_theme(), "close-32"FTK_STOCK_IMG_SUFFIX); if(gc.bitmap != NULL) { gc.mask = FTK_GC_BITMAP; ftk_widget_set_gc(item, FTK_WIDGET_NORMAL, &gc); ftk_widget_set_gc(item, FTK_WIDGET_FOCUSED, &gc); ftk_gc_reset(&gc); gc.mask = FTK_GC_BITMAP; gc.bitmap = ftk_theme_load_image(ftk_default_theme(), "close-pressed-32"FTK_STOCK_IMG_SUFFIX); ftk_widget_set_gc(item, FTK_WIDGET_ACTIVE, &gc); ftk_gc_reset(&gc); } ftk_status_item_set_clicked_listener(item, button_close_top_clicked, NULL); gc.bitmap = ftk_theme_load_image(ftk_default_theme(), "flag-32"FTK_STOCK_IMG_SUFFIX); item = ftk_status_item_create(panel, 1, gc.bitmap ? min(ftk_bitmap_width(gc.bitmap), 100) : 32); ftk_widget_set_id(item, IDC_ICON_ITEM); if(gc.bitmap != NULL) { gc.mask = FTK_GC_BITMAP; ftk_widget_set_gc(item, FTK_WIDGET_NORMAL, &gc); ftk_widget_set_gc(item, FTK_WIDGET_ACTIVE, &gc); ftk_widget_set_gc(item, FTK_WIDGET_FOCUSED, &gc); ftk_gc_reset(&gc); } ftk_widget_show(item, 1); item = ftk_status_item_create(panel, 2, width/2); ftk_widget_set_id(item, IDC_TITLE_ITEM); ftk_widget_show(item, 1); ftk_wnd_manager_add_global_listener(ftk_default_wnd_manager(), on_wnd_manager_global_event, NULL); ftk_widget_show(panel, 1); return; }
static Ret ftk_app_movie_run(FtkApp* thiz, int argc, char* argv[]) { FtkWidget *label; FtkWidget *win = ftk_app_window_create(); ftk_window_set_animation_hint(win, "app_main_window"); ftk_widget_set_text(win, "영화"); ftk_app_window_set_user_on_event(win, _movie_user_on_event); label = ftk_label_create(win, 10, 50, 220, 100); ftk_widget_set_id(label, IDC_TITLE); _app_movie_create_button(win, 35, IDC_PLAY, "play"); _app_movie_create_button(win, 137, IDC_STOP, "stop"); ftk_app_window_set_on_prepare_options_menu(win, ftk_clock_on_prepare_options_menu, win); ftk_widget_show_all(win, 1); #ifdef HAS_MAIN FTK_QUIT_WHEN_WIDGET_CLOSE(win); #endif return RET_OK; }
static Ret desktop_add_time_item_on_statusbar(void) { FtkWidget* item = NULL; FtkWidget* panel = NULL; panel = ftk_default_status_panel(); if(panel != NULL) { item = ftk_status_item_create(panel, -2, 60); ftk_widget_set_id(item, IDC_TIME_ITEM); ftk_widget_show(item, 1); } ftk_logd("%s\n", __func__); return RET_OK; }
FTK_HIDE int FTK_MAIN(int argc, char* argv[]) { int width = 0; int height = 0; FtkWidget* win = NULL; FtkWidget* button = NULL; FtkWidget* icon_view = NULL; FtkIconViewItem item; FTK_INIT(argc, argv); win = ftk_app_window_create(); ftk_window_set_animation_hint(win, "app_main_window"); width = ftk_widget_width(win); height = ftk_widget_height(win); button = ftk_button_create(win, 10, 0, width/3-10, 60); ftk_widget_set_text(button, "more"); ftk_button_set_clicked_listener(button, button_more_clicked, win); ftk_window_set_focus(win, button); button = ftk_button_create(win, 2*width/3, 0, width/3-10, 60); ftk_widget_set_text(button, "quit"); ftk_button_set_clicked_listener(button, button_quit_clicked, win); ftk_window_set_focus(win, button); item.icon = ftk_theme_load_image(ftk_default_theme(), "flag-32.png"); icon_view = ftk_icon_view_create(win, 5, 70, width-10, height-80); ftk_widget_set_id(icon_view, 100); ftk_icon_view_set_clicked_listener(icon_view, item_clicked, win); for(; i < 4; i++) { char text[100] = {0}; ftk_snprintf(text, sizeof(text), "%d", i); item.text = text; item.user_data = (void*)i; ftk_icon_view_add(icon_view, &item); } ftk_bitmap_unref(item.icon); ftk_widget_set_text(win, "icon view demo"); ftk_widget_show_all(win, 1); FTK_QUIT_WHEN_WIDGET_CLOSE(win); FTK_RUN(); return 0; }
static void _app_music_create_button(FtkWidget *win, int x, int id, const char *icons) { FtkGc gc = {0}; char temp[100]; char path[FTK_MAX_PATH+1] = {0}; FtkWidget* button = NULL; FtkBitmap* bitmap_normal = NULL; FtkBitmap* bitmap_active = NULL; FtkBitmap* bitmap_focus = NULL; gc.mask = FTK_GC_BITMAP; sprintf(temp, "icons/%s_normal.png", icons); bitmap_normal = ftk_bitmap_factory_load(ftk_default_bitmap_factory(), ftk_translate_path(temp, path)); sprintf(temp, "icons/%s_pressed.png", icons); bitmap_active = ftk_bitmap_factory_load(ftk_default_bitmap_factory(), ftk_translate_path(temp, path)); sprintf(temp, "icons/%s_selected.png", icons); bitmap_focus = ftk_bitmap_factory_load(ftk_default_bitmap_factory(), ftk_translate_path(temp, path)); button = ftk_button_create(win, x, 170, 68, 68); ftk_widget_set_id(button, id); ftk_button_set_clicked_listener(button, ftk_music_on_button_clicked, win); gc.bitmap = bitmap_normal; ftk_widget_set_gc(button, FTK_WIDGET_NORMAL, &gc); gc.bitmap = bitmap_focus; ftk_widget_set_gc(button, FTK_WIDGET_FOCUSED, &gc); gc.bitmap = bitmap_active; ftk_widget_set_gc(button, FTK_WIDGET_ACTIVE, &gc); ftk_bitmap_unref(bitmap_normal); ftk_bitmap_unref(bitmap_active); ftk_bitmap_unref(bitmap_focus); }
int ftk_message_box(FtkBitmap* icon, const char* title, const char* text, const char* buttons[FTK_MSGBOX_MAX_BUTTONS]) { int i = 0; int w = 0; int h = 0; int id = 0; int ret = 0; int width = 0; int height = 0; int xoffset = 0; int yoffset = 0; int h_margin = 0; int has_title = icon != NULL || title != NULL; int buttons_nr = ftk_count_strings(buttons); FtkWidget* label = NULL; FtkWidget* button = NULL; FtkWidget* dialog = NULL; return_val_if_fail(text != NULL, -1); ftk_message_box_size(has_title, buttons_nr, text, &width, &height); dialog = ftk_dialog_create(0, 0, width, height); ftk_window_set_animation_hint(dialog, "msgbox"); if(has_title) { ftk_dialog_set_icon(dialog, icon); ftk_widget_set_text(dialog, title); } else { ftk_dialog_hide_title(dialog); ftk_widget_set_attr(dialog, FTK_ATTR_POPUP); } width = ftk_widget_width(dialog); height = ftk_widget_height(dialog); /*create label.*/ xoffset = FTK_H_MARGIN; yoffset = FTK_V_MARGIN; w = width - 2 * (FTK_DIALOG_BORDER + FTK_H_MARGIN); h = height - FTK_DIALOG_BORDER - 4 * FTK_V_MARGIN; h -= has_title ? ftk_dialog_get_title_height() : 0; h -= buttons_nr > 0 ? FTK_BUTTON_DEFAULT_HEIGHT : 0; label = ftk_label_create(dialog, xoffset, yoffset, w, h); ftk_widget_set_text(label, text); /*create buttons*/ if(buttons_nr > 0) { xoffset = 0; w = FTK_BUTTON_DEFAULT_WIDTH; h = FTK_BUTTON_DEFAULT_HEIGHT; w = ((buttons_nr + 1) * w) < width ? w : (width / (buttons_nr + 1)); yoffset = height - h - FTK_V_MARGIN - (has_title ? ftk_dialog_get_title_height() : 0); h_margin = (width - buttons_nr * w) / (buttons_nr + 1); for(i = 0; i < buttons_nr; i++) { xoffset += h_margin; button = ftk_button_create(dialog, xoffset, yoffset, w, h); ftk_widget_set_id(button, i + 1); ftk_widget_set_text(button, buttons[i]); ftk_button_set_clicked_listener(button, message_box_on_button_clicked, &id); xoffset += w; } } else { /*if no buttons, quit when timeout.*/ ftk_dialog_quit_after(dialog, 3000); } ftk_widget_show_all(dialog, 1); ret = ftk_dialog_run(dialog); ftk_widget_unref(dialog); if(icon != NULL) { ftk_bitmap_unref(icon); } return ret; }