Exemplo n.º 1
0
static void meh_screen_mapping_next_screen(App* app, Screen* screen) {
	g_assert(app != NULL);
	g_assert(screen != NULL);


	MappingData* data = meh_screen_mapping_get_data(screen);
	g_assert(data != NULL);

	/* build the mapping object */
	Mapping* mapping = meh_model_mapping_new(data->device_configuring->text, data->up, data->down, data->left, data->right,
												data->start, data->select, data->a, data->b, data->l, data->r);

	/* delete an eventual mapping with the same id */
	meh_db_delete_mapping(app->db, data->device_configuring->text);

	/* save the created mapping */
	meh_db_save_mapping(app->db, mapping);

	/* re-assign the mapping */
	meh_input_manager_assign_mapping(app->db, app->input_manager);

	/* create the child screen */
	Screen* platform_screen = meh_screen_platform_list_new(app);
	Screen* fade_screen = meh_screen_fade_new(app, screen, platform_screen);
	meh_app_set_current_screen(app, fade_screen, TRUE);
	/* NOTE we don't free the memory of the starting screen, the fade screen
	 * will do it. */
}
Exemplo n.º 2
0
void meh_exec_popup_start_random_executable(App* app, Screen* screen) {
	g_assert(app != NULL);
	g_assert(screen != NULL);

	SimplePopupData* data = meh_simple_popup_get_data(screen);
	ExecutableListData* exec_list_data = meh_exec_list_get_data(data->src_screen);

	/* get a random executable */
	int platform_id = exec_list_data->platform->id;
	Executable* executable = meh_db_get_platform_random_executable(app->db, platform_id);

	if (executable) {
		Platform* platform = meh_db_get_platform(app->db, platform_id);
		if (platform) {
			/* keep some infos */
			PlatformListData* platform_list_data = meh_screen_platform_list_get_data(data->src_screen->parent_screen);

			int cursor_platform = platform_list_data->selected_platform;
			int cursor_exec = exec_list_data->selected_executable;

			meh_app_start_executable(app, platform, executable);

			/* destroy screens view */
			meh_screen_destroy(data->src_screen->parent_screen);
			data->src_screen->parent_screen = NULL;
			platform_list_data = NULL;
			meh_screen_destroy(data->src_screen);
			app->current_screen = NULL;
			exec_list_data = NULL;

			/* recreate the executable list view */
			data->src_screen = meh_exec_list_new(app, platform->id);
			exec_list_data = meh_exec_list_get_data(data->src_screen);

			/* restore the cursor position */
			exec_list_data->selected_executable = cursor_exec;
			meh_exec_list_after_cursor_move(app, data->src_screen, 0);

			/* recreate the parent screen which is the platform list */
			Screen* platform_screen = meh_screen_platform_list_new(app);
			data->src_screen->parent_screen = platform_screen;

			/* restore the cursor position */
			platform_list_data = meh_screen_platform_list_get_data(platform_screen);
			platform_list_data->selected_platform = cursor_platform;
			meh_screen_platform_change_platform(app, platform_screen);

			meh_model_platform_destroy(platform);
		}
		meh_model_executable_destroy(executable);
	}
}
Exemplo n.º 3
0
static void meh_screen_starting_go_to_next_screen(App* app, Screen* screen) {
	g_assert(app != NULL);
	g_assert(screen != NULL);

	/* create and switch to the platform list screen
	 * if we don't need to configure a mapping */
	if (meh_input_manager_has_something_plugged(app->input_manager) && !app->flags.configure_mapping) {
		Screen* platform_list_screen = meh_screen_platform_list_new(app);
		Screen* fade_screen = meh_screen_fade_new(app, screen, platform_list_screen);
		meh_app_set_current_screen(app, fade_screen, TRUE);
	} else {
		Screen* mapping_screen = meh_screen_mapping_new(app);
		Screen* fade_screen = meh_screen_fade_new(app, screen, mapping_screen);
		meh_app_set_current_screen(app, fade_screen, TRUE);
	}
	/* NOTE we don't free the memory of the starting screen, the fade screen
	 * will do it. */
}