Commit graph

29 commits

Author SHA1 Message Date
Pablo Curiel
6dfbb301df [ci skip] Remove void keyword from C++ ctors/dtors 2024-04-19 12:08:44 +02:00
Pablo Curiel
17e0edb61c [ci skip] OptionsTab: add option to unmount UMS devices
Uses a SelectListItem element with displayValue set to false to avoid displaying a value string. Furthermore, the default click event callback is replaced to check if any UMS devices are mounted before attempting to display the dropdown menu.

Other changes include:

* UmsTask: define UmsDeviceVectorEntry.
* UmsTask: redefine UmsDeviceVector as a UmsDeviceVectorEntry vector.
* UmsTask: migrate UMS device string generation logic from DumpOptionsFrame::UpdateStorages() to UmsTask::PopulateUmsDeviceVector().

* DumpOptionsFrame: simplify UpdateStorages() to reflect the changes made to UmsTask.
2024-04-18 21:58:47 +02:00
Pablo Curiel
27465434d4 [ci skip] GamecardTab: fix transition to DumpOptionsFrame view 2024-04-15 13:47:50 +02:00
Pablo Curiel
9525f37e51 [ci skip] Add DataTransfer* classes.
Adds the DataTransferTask and DataTransferProgressDisplay classes, which use repurposed logic from the DownloadTask and EtaProgressDisplay classes, respectively. The EtaProgressDisplay class and EtaProgressInfo struct have been removed.

Other changes include:

* DownloadTask: heavily simplified logic by using DataTransferTask as the base class.

* DumpOptionsFrame: implement some additional/experimental changes.

* OptionsTab: update logic to use the new DataTransferProgressDisplay class.
2024-04-15 01:53:43 +02:00
Pablo Curiel
8f8fc6af37 [ci skip] Add EtaProgressDisplay class.
Also adds a nxdt::views::EtaProgressInfo struct that's used by EtaProgressDisplay's setProgress() method. It may also be used by child classes of AsyncTask.

Other changes include:

* DownloadTask: remove DownloadTaskProgress struct, update logic to use the new nxdt::views::EtaProgressInfo struct.

* DumpOptionsFrame, GameCardTab: minor formatting fixes.

* OptionsTab: remove OptionsTabUpdateProgress class, update logic to use the new nxdt::views::EtaProgressInfo struct.
2024-04-12 23:08:54 +02:00
Pablo Curiel
789a6d6eb8 [skip ci] GameCardTab: reflect current gamecard dump options
Other changes include:

* gamecard: rename gamecardGetDecryptedCardInfoArea() -> gamecardGetPlaintextCardInfoArea().

* FocusableItem, FocusableTable: add positional arguments for the FocusableItem class constructor.
2024-04-12 13:40:50 +02:00
Pablo Curiel
fc5226bfce [skip ci] Update copyright year. 2024-04-12 11:49:03 +02:00
Pablo Curiel
9a4b8b573d Update copyright year 2023-04-08 13:42:22 +02:00
Pablo Curiel
7bb708e394 Many small changes (sorry, I need to push these).
* Use forward declarations for type definitions wherever suitable (e.g. NcaContext, BucketTreeContext).
* Replace references to "DumpDestination" with "OutputStorage".
* Replace references to "append key area" with "prepend key area".
* Update LZ4 to v1.9.4.
* Update Material Icons font to 2022-08-01.
* RootView: change USB-related icons, reflect how many UMS devices are currently connected to the console, provide a way for child views to retrieve the populated UMS devices vector.
* Tasks: implement GetUmsDevices().
* Update borealis.
* Update libusbhsfs.
* Begin implementation of a DumpOptionsFrame class to display configurable options before starting a new dump process.
* bktr: rename bktrIsValidSubstorage() to bktrIsValidSubStorage(), use bktrIsValidSubStorage() in bktrInitializeCompressedStorageContext(), fixed a bug in bktrReadCompressedStorage() where Sparse substorages wouldn't be allowed.
* GamecardTab: push a DumpOptionsFrame object onto the view stack if the XCI option is clicked.
2022-09-12 20:19:10 +02:00
Pablo Curiel
3cbdb5dc65 OptionsTab: let AppletFrame take care of registering the B button action. 2022-07-31 04:21:19 +02:00
Pablo Curiel
3b892e2179 OptionsTab: only make even lines focusable in changelog. 2022-07-31 01:47:40 +02:00
Pablo Curiel
cc13552b08 OptionsTab: let borealis take care of hint mgmt. 2022-07-30 16:25:41 +02:00
Pablo Curiel
5cc83491c1 Use verbosity-level-based log macros everywhere.
Also, Result codes are now just printed using %X.
2022-07-12 18:34:49 +02:00
Pablo Curiel
5f59d0f444 Use nxdumptool's logger in borealis code.
Also updated submodules.
2022-07-12 03:31:39 +02:00
Pablo Curiel
a9b5f7211c Some changes. Read full commit message.
* title: implemented titleGetNcmStorageIdName().

* nxdt_log: implemented log verbosity levels (debug, info, warning, error, none) and helper macros for each level. The rest of the codebase still needs to be updated to take advantange of this change.

* nxdt_log: implemented auxiliary logging via nxlink, if available.

* nxdt_utils: system CPU/MEM overclocking is now only applied through utilsSetLongRunningProcessState(), as it should have been from the beginning.

* nxdt_utils: nxlink initialization is now carried out without redirecting stdout and/or stderr, entirely removing the need for utilsRestoreConsoleOutput(). utilsGetNxLinkFileDescriptor() is used to send data to the nxlink host via dprintf() in log functions.
2022-07-12 02:27:03 +02:00
Pablo Curiel
942a407247 Codebase cleanup.
Remove legacy code and trailing whitespace from all files.
2022-07-05 03:04:28 +02:00
Pablo Curiel
2fa61dc228 Update copyright year. 2022-03-17 13:58:40 +01:00
Pablo Curiel
5a0543ef68 RootView: implement wrappers for public task functions.
Other changes include:

* GameCardTab: moved const strings to gamecard.c for easier maintenance.
* Codebase: reworked tab classes to make them use the wrappers provided by RootView instead of passing task object pointers.
2021-08-11 03:17:57 -04:00
Pablo Curiel
3dffce2995 Set common footer. 2021-08-08 11:50:20 -04:00
Pablo Curiel
405df0c81a FocusableItem: reestructure class.
Other changes include:

* Codebase: update all references to FocusableLabel and FocusableTable constructors to match the changes in FocusableItem.
* FocusableTable: objects can now be highlighted, but the highlight background won't be drawn.
* http: set low speed limit and time values.
2021-08-08 03:39:21 -04:00
Pablo Curiel
ba0c5d9e35 utils: implement utilsIsApplicationUpdatable().
Also removed legacy code that has already been reimplemented.
2021-08-07 05:44:36 -04:00
Pablo Curiel
28cd0ce10f OptionsTab: fully implement application update feature.
Other changes include:

* Codebase: move JSON parsing logic from config.c/h to nxdt_json.c/h.
* Codebase: replace all calls to localtime() with localtime_r() to guarantee thread-safety.
* Codebase: updated todo.txt.
* utils: implement utilsParseGitHubReleaseJsonData(), utilsFreeGitHubReleaseJsonData(), utilsGetApplicationUpdatedState() and utilsGetApplicationUpdatedState().
* utils: add extra logic to move the application's NRO to its proper path if the launch path isn't the right one (commented out at this moment).
* utils: add extra logic to replace the application's NRO at exit (commented out at this moment).
* defines: add DEVOPTAB_SDMC_DEVICE and tweak GitHub URL macros.
* DownloadTask: set percentage to 0 if the download size is unknown.
* DownloadTask: fix ETA string formatting.
* OptionsTab: repurpose OptionsTabUpdateFileDialogContent into OptionsTabUpdateProgress.
* OptionsTab: implement OptionsTabUpdateApplicationFrame.
* RootView: move date formatting into the static GetFormattedDateString() method.
* Makefile: use _GNU_SOURCE as part of CFLAGS to use strptime().
2021-08-07 04:42:03 -04:00
Pablo Curiel
962cf00ba9 Display a CrashFrame warning at startup if the application is running under applet mode.
Other changes include:

* defines: added NON_MOVEABLE macro.
* AsyncTask: set class as non-moveable, too.
* RootView: provide an override for getDefaultFocus().
* StatusInfoTask: replace GetStatusInfoData with IsInternetConnectionAvailable().
2021-07-30 17:07:26 -04:00
Pablo Curiel
bc842d8905 OptionsTab: check if an Internet connection is available before starting an update. 2021-07-29 15:55:31 -04:00
Pablo Curiel
dbbc5c7ebd Implemented OptionsTabUpdateFileDialog and OptionsTabUpdateFileDialogContent classes.
Other changes include:

* utils: utilsGenerateFormattedSizeString() now takes an input double instead of size_t.
* DownloadTask: calculated speed is now expressed in bytes per second, so now it's up to the caller to convert it to other units.
* DownloadTask: set download size and percentage if the download size isn't known and we're dealing with the final chunk.
* http: slightly improved CURL error info formatting.
* OptionsTab: fully implemented NSWDB XML update option.
2021-07-29 03:50:17 -04:00
Pablo Curiel
eb97ae3de5 Implement DownloadTask, DownloadFileTask and DownloadDataTask classes.
Other changes include:

* AsyncTask: use a recursive mutex instead of atomics. Fixes build issues related to non-trivially-copyable elements.
* http: remove CURLOPT_ACCEPT_ENCODING option in httpPerformGetRequest().
2021-07-27 11:00:09 -04:00
Pablo Curiel
63d9be7db1 Implemented CURL-based HTTP client.
Only supports GET requests, but that's more than enough for the time being.

Other changes include:

* OptionsTab: added an option to update the NSWDB XML (not implemented yet).
* config: add missing flag check in getters and setters.
* Move default socket initialization from utils.c to services.c.
2021-07-25 18:23:44 -04:00
Pablo Curiel
05dec93795 Implemented AsyncTask class.
Other changes include:

* Updated borealis.
* Updated Makefile.
* Began implementation of a (very) simple, CURL-based HTTP handler.
* OptionsTab: added a small disclaimer about dump options.
* OptionsTab:  added notifications for the update application item (running as NSO, app already updated).
* config: improved boundary handling while validating integer entries.
* utils: (de)initialize CURL (this will be moved to http.c eventually).
2021-07-25 01:37:13 -04:00
Pablo Curiel
3afe5caa7a Implement OptionsTab class.
Other changes:

* title: rename TitleFileNameConvention -> TitleNamingConvention.
* utils: display Lockpick_RCM's GitHub repository URL if keysLoadKeyset() fails.
2021-07-23 03:24:00 -04:00