This repository was archived by the owner on Mar 12, 2026. It is now read-only.
[UPDATE][QTA][3.23.0]
✨ General
- Traditional updating of project dependencies;
- Added an alternative method for getting DocumentFile by relative path;
- Added new method for delete file;
- Created new menu item audio;
- Added a check for isFinishing() in methods for displaying dialogs;
- Now there is no transition to a new tab if it is active;
- Added controller for mute/unmute video in the game;
- Improved setDecorFitsSystemWindows().
🐞 Other
The following fixes were made:
- Fixed IllegalStateException in GameActivity showSimpleDialog();
- Fixed StackOverflowError in LibQpProxyImpl start();
- Fixed RuntimeException in LibQpProxyImpl;
- Fixed Invalid HTML;
- Fixed ClassNotFoundException;
- Fixed incorrect fit when exiting "fullscreen" mode.
The following classes/methods/module have been renamed:
- navigationView -> bottomNavigationView;
- SettingsPluginFragment -> SettingPluginFragment;
- SettingsPluginRecycler -> SettingPluginRecycler;
- SettingsFragment -> SettingsMainFragment;
- convertRGBAToBGRA -> convertRGBAtoBGRA;
- "libQP" -> "lib";
- "dto.libQP" ->"dto.lib";
- Renamed & moved QpMenuItem aka LibMenuItem into "dto" package;
- Renamed & moved QpListItem aka LibListItem into "dto" package;
- Renamed RefreshInterfaceRequest into LibRefIRequest;
- Renamed GetVarValuesResponse into LibVarValResp;
- Renamed actions, objects, menuItems and moved interfaceConfig in GameState aka LibGameState;
- fromRelPath() -> findFileFromRelPath();
- Renamed method start() into startLibThread();
- Renamed method stop() into stopLibThread();
- Rename qpListItem -> libListItem;
- Renamed gameData -> sortedGameData;
- refreshGameData() -> restoreListDirsFromFile();
- Renamed rootProject.name.
Code improvements:
== Refactored LibQpProxyImpl ==
- Renamed handler -> mLibHandler;
- The "if" operator was inverted, which checks the nullability of the mLibHandler variable.
- Updated workflow files and added sign release.
== Refactored Base64Util ==
- Inlined pattern.matcher(input) in method isBase64.
== Refactored GameViewModel ==
- Renamed getImageUri() into getImageUriFromPath();
- Added method getCurGameDir();
- Added a nullability check for uri.getScheme() in shouldOverrideUrlLoading();
- Refactored shouldInterceptRequest: fromRelPath() -> findFileFromRelPath();
- Added a nullability check for uri.getScheme(), getCurGameDir().isEmpty();
- Extracted check scheme.
== Refactored GameMainFragment ==
- Added a nullability check for src in onClickImage;
- Added a empty check for imageUri in onClickImage.
== Refactored HtmlProcessor ==
- Moved method hasHTMLTags and getSrcDir up;
- Added annotation Nullable for getSrcDir method;
- Disabled prettyPrint;
- Moved methods getCleanHtmlPageAndImage() and getCleanHtmlPageNotImage() to upwards;
- Removed method convertQspHtmlToWebViewHtml();
- Added context to the parameters of the shouldChangeWidth(), shouldChangeHeight(), processHTMLImages(), getCleanHtmlPageAndImage() methods;
- Extracted getDisplayMetrics() into field;
- The return type has been changed if imageElement is null.
== Refactored FileUtil ==
- Removed fromRelPath();
- Changed order parameters into method findFileFromRelPath().
== Refactored ImageProvider ==
- Moved target scope into method getDrawableFromPath();
- Added context to the parameters of the getDrawableFromPath() method.
==Refactored AutoScrollRunnable ==
== Refactored StockActivity and StockViewModel ==
- Removed string
closeToApply; - Removed the branching for the key == "lang" in the
onSharedPreferenceChangedmethod; - Added
OnSharedPreferenceChangeListenerinstead of thesettingsControllervariable; - Removed methods getSettingsController() and setController()
Assignment at runtime is now used instead; - The if statement has been replaced with a switch in method
sendIntent; - Instead of the for operator, the built-in forEach operator is used;
- The branching in the
refreshIntGamesDirectoryandrefreshGameData()methods is reversed.
== Cleanup code ==
- Optional.ofNullable has been deleted. Instead, an if check is used;
- Removed deleteDirectory();
- Used getExtension() instead documentWrap();
- Removed variable controller.
== Cleanup GameActivity ==
Moved htmlProcessor, libProxy, audioPlayer into GameViewModel;
Added GameLibRequest;
- Moved setters for htmlProcessor and audioPlayer into getHtmlProcessor() QuestPlayerApplication;
- Added return this into setCurGameDir();
- Moved setOnApplyWindowInsetsListener;
- Changed match_parent -> 0dp;
- Moved audio setting into method soundSettings;
- DocumentFile.findFile -> findFileFromRelPath();
- A small formatting of the code was carried out;
- Removed block of synchronization;
- new Handler() -> new Handler(Looper.myLooper());
📝 History of changes
Full Changelog: 3.22.5...3.23.0