int qemulator_init( QEmulator* emulator, AConfig* aconfig, const char* basepath, int x, int y, AndroidOptions* opts ) { emulator->aconfig = aconfig; emulator->layout_file = skin_file_create_from_aconfig(aconfig, basepath); emulator->layout = emulator->layout_file->layouts; emulator->keyboard = skin_keyboard_create(opts->charmap, opts->raw_keys); emulator->window = NULL; emulator->win_x = x; emulator->win_y = y; emulator->opts[0] = opts[0]; SKIN_FILE_LOOP_PARTS( emulator->layout_file, part ) SkinDisplay* disp = part->display; if (disp->valid) { qframebuffer_add_client( disp->qfbuff, emulator, qemulator_fb_update, qemulator_fb_rotate, qemulator_fb_poll, NULL ); } SKIN_FILE_LOOP_END_PARTS skin_keyboard_enable( emulator->keyboard, 1 ); skin_keyboard_on_command( emulator->keyboard, handle_key_command, emulator ); return 0; }
SkinUI* skin_ui_create(SkinFile* layout_file, const char* initial_orientation, const SkinUIFuncs* ui_funcs, const SkinUIParams* ui_params) { SkinUI* ui; ANEW0(ui); ui->layout_file = layout_file; ui->layout = skin_file_select_layout(layout_file->layouts, initial_orientation); ui->ui_funcs = ui_funcs; ui->ui_params = ui_params[0]; ui->keyboard = skin_keyboard_create(ui->ui_params.keyboard_charmap, ui->ui_params.keyboard_raw_keys, ui_funcs->keyboard_flush); ui->window = NULL; skin_keyboard_enable(ui->keyboard, 1); skin_keyboard_on_command(ui->keyboard, _skin_ui_handle_key_command, ui); ui->window = skin_window_create(ui->layout, ui->ui_params.window_x, ui->ui_params.window_y, ui->ui_params.window_scale, 0, ui->ui_funcs->window_funcs); if (!ui->window) { skin_ui_free(ui); return NULL; } if (ui->ui_params.enable_trackball) { ui->trackball = skin_trackball_create(ui->ui_funcs->trackball_params); skin_window_set_trackball(ui->window, ui->trackball); } ui->lcd_brightness = 128; /* 50% */ skin_window_set_lcd_brightness(ui->window, ui->lcd_brightness ); if (ui->onion) { skin_window_set_onion(ui->window, ui->onion, ui->onion_rotation, ui->onion_alpha); } skin_ui_reset_title(ui); skin_window_enable_touch(ui->window, ui->ui_params.enable_touch); skin_window_enable_dpad(ui->window, ui->ui_params.enable_dpad); skin_window_enable_qwerty(ui->window, ui->ui_params.enable_keyboard); skin_window_enable_trackball(ui->window, ui->ui_params.enable_trackball); return ui; }
int qemulator_init( QEmulator* emulator, AConfig* aconfig, const char* basepath, int x, int y, AndroidOptions* opts ) { emulator->aconfig = aconfig; emulator->layout_file = skin_file_create_from_aconfig(aconfig, basepath); emulator->layout = emulator->layout_file->layouts; // If we have a custom charmap use it to initialize keyboard. // Otherwise initialize keyboard from configuration settings. // Another way to configure keyboard to use a custom charmap would // be saving a custom charmap name into AConfig's keyboard->charmap // property, and calling single skin_keyboard_create_from_aconfig // routine to initialize keyboard. if (NULL != opts->charmap) { emulator->keyboard = skin_keyboard_create_from_kcm(opts->charmap, opts->raw_keys); } else { emulator->keyboard = skin_keyboard_create_from_aconfig(aconfig, opts->raw_keys); } emulator->window = NULL; emulator->win_x = x; emulator->win_y = y; emulator->opts[0] = opts[0]; /* register as a framebuffer clients for all displays defined in the skin file */ SKIN_FILE_LOOP_PARTS( emulator->layout_file, part ) SkinDisplay* disp = part->display; if (disp->valid) { qframebuffer_add_client( disp->qfbuff, emulator, qemulator_fb_update, qemulator_fb_rotate, qemulator_fb_poll, NULL ); } SKIN_FILE_LOOP_END_PARTS skin_keyboard_enable( emulator->keyboard, 1 ); skin_keyboard_on_command( emulator->keyboard, handle_key_command, emulator ); return 0; }