|
|
@@ -223,56 +223,58 @@ int32_t text_viewer_app(void* p) {
|
|
|
text_viewer_read_file(text_viewer);
|
|
|
|
|
|
InputEvent input;
|
|
|
- while(furi_message_queue_get(text_viewer->input_queue, &input, FuriWaitForever) ==
|
|
|
- FuriStatusOk) {
|
|
|
- if(input.key == InputKeyBack) {
|
|
|
- break;
|
|
|
- } else if(input.key == InputKeyUp) {
|
|
|
- furi_check(
|
|
|
- furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
|
- if(text_viewer->model->file_offset > 0) {
|
|
|
- text_viewer->model->file_offset -= TEXT_VIEWER_BYTES_PER_LINE;
|
|
|
- if(!text_viewer_read_file(text_viewer)) break;
|
|
|
- }
|
|
|
- furi_mutex_release(text_viewer->mutex);
|
|
|
- } else if(input.key == InputKeyDown) {
|
|
|
- furi_check(
|
|
|
- furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
|
- uint32_t last_byte_on_screen =
|
|
|
- text_viewer->model->file_offset + text_viewer->model->file_read_bytes;
|
|
|
-
|
|
|
- if(text_viewer->model->file_size > last_byte_on_screen) {
|
|
|
- text_viewer->model->file_offset += TEXT_VIEWER_BYTES_PER_LINE;
|
|
|
- if(!text_viewer_read_file(text_viewer)) break;
|
|
|
+ while(1) {
|
|
|
+ if(furi_message_queue_get(text_viewer->input_queue, &input, 100) == FuriStatusOk) {
|
|
|
+ if(input.key == InputKeyBack) {
|
|
|
+ break;
|
|
|
+ } else if(input.key == InputKeyUp) {
|
|
|
+ furi_check(
|
|
|
+ furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
|
+ if(text_viewer->model->file_offset > 0) {
|
|
|
+ text_viewer->model->file_offset -= TEXT_VIEWER_BYTES_PER_LINE;
|
|
|
+ if(!text_viewer_read_file(text_viewer)) break;
|
|
|
+ }
|
|
|
+ furi_mutex_release(text_viewer->mutex);
|
|
|
+ } else if(input.key == InputKeyDown) {
|
|
|
+ furi_check(
|
|
|
+ furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
|
+ uint32_t last_byte_on_screen =
|
|
|
+ text_viewer->model->file_offset + text_viewer->model->file_read_bytes;
|
|
|
+
|
|
|
+ if(text_viewer->model->file_size > last_byte_on_screen) {
|
|
|
+ text_viewer->model->file_offset += TEXT_VIEWER_BYTES_PER_LINE;
|
|
|
+ if(!text_viewer_read_file(text_viewer)) break;
|
|
|
+ }
|
|
|
+ furi_mutex_release(text_viewer->mutex);
|
|
|
+ } else if(input.key == InputKeyLeft) {
|
|
|
+ furi_check(
|
|
|
+ furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
|
+ text_viewer->model->mode = !text_viewer->model->mode;
|
|
|
+ furi_mutex_release(text_viewer->mutex);
|
|
|
+ } else if(input.key == InputKeyRight) {
|
|
|
+ FuriString* buffer;
|
|
|
+ buffer = furi_string_alloc();
|
|
|
+ furi_string_printf(
|
|
|
+ buffer,
|
|
|
+ "File path: %s\nFile size: %lu (0x%lX)",
|
|
|
+ furi_string_get_cstr(file_path),
|
|
|
+ text_viewer->model->file_size,
|
|
|
+ text_viewer->model->file_size);
|
|
|
+
|
|
|
+ DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
|
|
|
+ DialogMessage* message = dialog_message_alloc();
|
|
|
+ dialog_message_set_header(
|
|
|
+ message, "Text Viewer v1.1", 16, 2, AlignLeft, AlignTop);
|
|
|
+ dialog_message_set_icon(message, &I_text_10px, 3, 2);
|
|
|
+ dialog_message_set_text(
|
|
|
+ message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
|
|
|
+ dialog_message_set_buttons(message, NULL, NULL, "Back");
|
|
|
+ dialog_message_show(dialogs, message);
|
|
|
+
|
|
|
+ furi_string_free(buffer);
|
|
|
+ dialog_message_free(message);
|
|
|
+ furi_record_close(RECORD_DIALOGS);
|
|
|
}
|
|
|
- furi_mutex_release(text_viewer->mutex);
|
|
|
- } else if(input.key == InputKeyLeft) {
|
|
|
- furi_check(
|
|
|
- furi_mutex_acquire(text_viewer->mutex, FuriWaitForever) == FuriStatusOk);
|
|
|
- text_viewer->model->mode = !text_viewer->model->mode;
|
|
|
- furi_mutex_release(text_viewer->mutex);
|
|
|
- } else if(input.key == InputKeyRight) {
|
|
|
- FuriString* buffer;
|
|
|
- buffer = furi_string_alloc();
|
|
|
- furi_string_printf(
|
|
|
- buffer,
|
|
|
- "File path: %s\nFile size: %lu (0x%lX)",
|
|
|
- furi_string_get_cstr(file_path),
|
|
|
- text_viewer->model->file_size,
|
|
|
- text_viewer->model->file_size);
|
|
|
-
|
|
|
- DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
|
|
|
- DialogMessage* message = dialog_message_alloc();
|
|
|
- dialog_message_set_header(message, "Text Viewer v1.1", 16, 2, AlignLeft, AlignTop);
|
|
|
- dialog_message_set_icon(message, &I_text_10px, 3, 2);
|
|
|
- dialog_message_set_text(
|
|
|
- message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop);
|
|
|
- dialog_message_set_buttons(message, NULL, NULL, "Back");
|
|
|
- dialog_message_show(dialogs, message);
|
|
|
-
|
|
|
- furi_string_free(buffer);
|
|
|
- dialog_message_free(message);
|
|
|
- furi_record_close(RECORD_DIALOGS);
|
|
|
}
|
|
|
view_port_update(text_viewer->view_port);
|
|
|
}
|