From 5c0263445f4fac557d28f9305bf8f9d43ab8032b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Tue, 29 Jun 2021 14:19:17 +0200 Subject: [PATCH] feat: add controls text file open --- file-browser/include/file_open.h | 3 +++ file-browser/src/file_open.c | 37 +++++++++++++++++------------- file-browser/src/window_initial.c | 38 ++++++++++++++++++++----------- 3 files changed, 49 insertions(+), 29 deletions(-) diff --git a/file-browser/include/file_open.h b/file-browser/include/file_open.h index 35741f89275f86e952006d8698303b9d9c14a16b..fe6141bd80a05454edd95ceee0bb7d9a1f5f4e1d 100644 --- a/file-browser/include/file_open.h +++ b/file-browser/include/file_open.h @@ -26,4 +26,7 @@ typedef struct { opened_file_state_t file_open(file_t *file, exec_options_t *options, fileaccess_state_t state); +opened_file_state_t file_open_mime_raw(char *file, exec_options_t *options, + char *mime); + #endif // __FILE_OPEN_H__ diff --git a/file-browser/src/file_open.c b/file-browser/src/file_open.c index f3c58065c7c5825ab99d9be9860bd875c17b23ad..09c47a1392a88271be947eac742f3a40a765ba3b 100644 --- a/file-browser/src/file_open.c +++ b/file-browser/src/file_open.c @@ -62,12 +62,6 @@ static opened_file_state_t file_open_mime(file_t *file, exec_options_t *options, return opened; } } - - char *program = exec_options_get_program(options, mime); - if (program == NULL) { - return opened; - } - char local_path[PATH_MAX]; opened.error = fileaccess_file_get_local_path(state, file, local_path); @@ -76,16 +70,7 @@ static opened_file_state_t file_open_mime(file_t *file, exec_options_t *options, return opened; } - file_prepare_before_open(); - executing_file_error_t executing_or_error = - executing_file_execute(program, local_path); - - if (executing_or_error.error != FILOPER_SUCCESS) { - opened.error = executing_or_error.error; - return opened; - } - - return file_execute(&executing_or_error.file, base_mime != NULL ? OPENED_TEXT : OPENED_MIME); + return file_open_mime_raw(local_path, options, mime); } static opened_file_state_t file_open_text(file_t *file, exec_options_t *options, @@ -131,3 +116,23 @@ opened_file_state_t file_open(file_t *file, exec_options_t *options, fileaccess_ // 3. text mime return file_open_text(file, options, state); } + +opened_file_state_t file_open_mime_raw(char *file, exec_options_t *options, + char *mime) { + opened_file_state_t opened = opened_file_create(); + char *program = exec_options_get_program(options, mime); + if (program == NULL) { + return opened; + } + + file_prepare_before_open(); + executing_file_error_t executing_or_error = + executing_file_execute(program, file); + + if (executing_or_error.error != FILOPER_SUCCESS) { + opened.error = executing_or_error.error; + return opened; + } + + return file_execute(&executing_or_error.file, OPENED_MIME); +} diff --git a/file-browser/src/window_initial.c b/file-browser/src/window_initial.c index 79e3e75164de20bf83ade48463fb5398b8638ff1..f1d1f775da9c39fe00b41b9cf581330402cd4f8d 100644 --- a/file-browser/src/window_initial.c +++ b/file-browser/src/window_initial.c @@ -1,8 +1,11 @@ #include "window_initial.h" +#include "SDL_video.h" #include "display_utils.h" +#include "file_open.h" #include "font.h" #include "gui.h" +#include "file_browser_utils.h" #include "gui_window_info.h" #include "gui_container_info.h" #include "gui_list_commands.h" @@ -14,10 +17,15 @@ #include #define INITIAL_WINDOW_LOCAL_INDEX 0 -#define INITIAL_WINDOW_MOUNT_INDEX 1 -#define INITIAL_WINDOW_OPTIONS_INDEX 2 +#define INITIAL_WINDOW_CONTROLS_ENG_INDEX 1 +#define INITIAL_WINDOW_CONTROLS_CZE_INDEX 2 #define INITIAL_WINDOW_EXIT_INDEX 3 +#define INITIAL_WINDOW_ENTRIES 4 + +#define CONTROLS_PATH "./controls.txt" +#define CONTROLS_CZ_PATH "./controls_cz.txt" + typedef struct { bool running; gui_t *gui; @@ -79,13 +87,13 @@ static bool initial_window_list_render_item(void *state, uint32_t index, char *data; switch (index) { case INITIAL_WINDOW_LOCAL_INDEX: - data = "ROOT FILESYSTEM"; + data = "SHOW ROOT FILESYSTEM"; break; - case INITIAL_WINDOW_MOUNT_INDEX: - data = "MOUNTABLE DEVICES"; + case INITIAL_WINDOW_CONTROLS_ENG_INDEX: + data = "SHOW CONTROLS (ENG) - J down, V confirm"; break; - case INITIAL_WINDOW_OPTIONS_INDEX: - data = "OPTIONS"; + case INITIAL_WINDOW_CONTROLS_CZE_INDEX: + data = "SHOW CONTROLS (CZE) - J dolů, V potvrzení"; break; case INITIAL_WINDOW_EXIT_INDEX: data = "EXIT"; @@ -122,7 +130,7 @@ static void *initial_window_construct(window_t *window, void *state) { istate->click_state.window = window; // containers init - gui_container_info_init(istate->list_container, istate, 4, 5, 5); + gui_container_info_init(istate->list_container, istate, INITIAL_WINDOW_ENTRIES, 5, 5); istate->list_container->width = istate->gui->size.x - 20; istate->list_container->height = istate->gui->size.y - 20; @@ -163,13 +171,17 @@ static void initial_window_item_clicked(container_t *container, void *state, "Clicked local root filesystem"); window_browser_open_local(istate->gui, &istate->font); break; - case INITIAL_WINDOW_MOUNT_INDEX: - logger_info(logger, __FILE__, __FUNCTION__, __LINE__, - "Clicked mount"); - break; - case INITIAL_WINDOW_OPTIONS_INDEX: + case INITIAL_WINDOW_CONTROLS_ENG_INDEX: logger_info(logger, __FILE__, __FUNCTION__, __LINE__, "Clicked options"); + opened_file_state_t opened_eng = file_open_mime_raw(CONTROLS_PATH, browser_exec_options, "text"); + file_browser_handle_opened_file(opened_eng, istate->gui, &istate->font); + break; + case INITIAL_WINDOW_CONTROLS_CZE_INDEX: + logger_info(logger, __FILE__, __FUNCTION__, __LINE__, "Clicked options"); + opened_file_state_t opened_cze = + file_open_mime_raw(CONTROLS_CZ_PATH, browser_exec_options, "text"); + file_browser_handle_opened_file(opened_cze, istate->gui, &istate->font); break; case INITIAL_WINDOW_EXIT_INDEX: logger_info(logger, __FILE__, __FUNCTION__, __LINE__,