Surgery Log =========== # Notes - Location of `user://`: `~/.local/share/godot/app_userdata/`. # ToDo - [x] Datepicker: On click (without drag) reset velocity to 0; show and focus 'input' to allow introducing value. - [x] Selecting last (year?)/month/day and de-selecting it, moves value to next; - [x] Solve how entries are shared across db_screen and stage_screen; - [x] Remove db_entry; - [x] Rename db script/node to database; - [x] scrolling down on the database screen jumps to the end of the list immediatelly; - [x] edited entry does not show updated once saved; - [x] edited entry shows updated when selected then press back button; - [x] load/store database CSV file; - [x] export database to CSV file; - [x] allow to reset database; - [x] split touch logic from database (create TouchItemList); - [x] split touch logic from stage (create TouchVerticalContainer); - [x] load/store filters JSON file; - [x] import/export filters to CSV file; - [x] add option_sets buttons on stage screen: - should show a pop-up with multiple options filtered according to current filters; - allow options to be scrolled by dragging; - selecting option puts that text on the associated LineEdit; - [x] add pop-up asking if changes are to be discarded once the stage screen's discard button is pressed; - [x] add pop-up confirming delete-entry action; - [x] edit and delete action buttons should be faded-out when no entry is selected; - [x] Sort option sets alphabetically; - [x] Check and request file access permissions on Android: ```py if OS.get_name() == "Android": var has_permissions := false while not has_permissions: var permissions := Array(OS.get_granted_permissions()) if not permissions.has("android.permission.READ_EXTERNAL_STORAGE") \ or not permissions.has("android.permission.WRITE_EXTERNAL_STORAGE"): OS.request_permissions() # await get_tree().create_timer(1).timeout yield(get_tree().create_timer(1), "timeout") # - for Godot 3 branch else: has_permissions = true ``` - [x] Fix the show option sets buttons; they are drawn over the input fields and hide inserted text; - [x] The stage control must be set to ignore the mouse, otherwise the touch-sensor conflicts with the built-in scroll; - [x] On database, selecting an entry and removing it will leave the action buttons visible while no entry is selected; - [x] Tweak 'POINTER_VELOCITY_DECAYING_FACTOR' and 'POINTER_VELOCITY_BOOST_FACTOR' on database and stage screens; - [x] Allow to parse option sets from database file; - [x] Check if import_option_sets, store_option_sets, store_database require the parameter save_changes; this requires changes on databse, stage and menu scripts; - [ ] Fix back button: - on stage screen should show pop-up asking it changes are to be discarded; - on file-pickers screen should close them; - on about screen should close it; - on auto-fill pop-up, should close it; - on database screen, should deselect selected item, otherwise should quit the app; - [ ] Hide dialogs title bar (appear in the top with 1 or 2 pixels height); - [ ] Database menu and action buttons are not nice; Improve appearance; - [ ] Improve menu appearance; - [ ] Setup two themes: - [ ] theme_light - [ ] theme_dark - [ ] main/screen_controller is responsible for whos currently on focus, fade animations, input access (enable/disable), and back_key_notification handling. For input use: node.set_process_input(!pause) node.set_process_unhandled_input(!pause) node.set_process_unhandled_key_input(!pause) - [ ] Share DB: - share db via html email with db inserted in encoded downliadable field; - Use this to send email: https://docs.godotengine.org/en/stable/classes/class_os.html#class-os-method-shell-open - [ ] Translations: - https://docs.godotengine.org/en/stable/getting_started/workflow/assets/importing_translations.html - https://docs.godotengine.org/en/stable/tutorials/i18n/internationalizing_games.html#introduction