The drawer is already closed by the selectBottomItem method, so there
is no reason to close it and then attempt to close it again.
The view type, whether GridView or TableLayout will not dynamically
alter the flow of focus from top to bottom. Starting at the top menu,
the next item down would be the main view according the internal
navigation. Instead, we want the next item to be the lower menu.
https://developer.android.com/training/keyboard-input/navigation.html
Remove the newly unnecessary column counter
Pass scrolling back to GridView to avoid custom
Add back the top margin to GridView
Fix padding adjustments to point to current views
DB upgrade can now be performed through the standard upgrade method
automatically.
An image table has been added to support future customization of covers
through a cross-matched table by serial, or filename. Game ID was not
used, as this is a matched value not obtained from the physical image.
Serial numbers are now matched by the literal value, then by the
possible regional versions.
It is possible that the database value will return an empty string
rather than a null value. This is simply precaution.
Conflicts:
build_android/AndroidManifest.xml
Conflicts:
Source/ui_android/java/com/virtualapplications/play/MainActivity.java
Source/ui_android/java/com/virtualapplications/play/SetupDB.java
Source/ui_android/java/com/virtualapplications/play/TheGameDB.java
Source/ui_android/java/com/virtualapplications/play/getGameDetails.java
Load internal database, Fill from internet APIs
If a cover image and description are not in the database, attempt to
retrieve them from the API by ID. If an ID is not present, generate
temporary values based on search. These values are saved according to
the API ID, but not associated with the file name in storage. This
allows these entries to be applied to a game retrieved by ID at a later
time.
Combine long click calls into generic function
Fix long click function to return a value
Now that this is only the listener, it is no longer self-contained
Add a settings option to clear the cover cache
Log serial in relation to filename for reference
This may prove useful to obtain missing serial numbers.
Verify the existence of an image before loading
An image entry has been added to avoid the StackOverflow generated by
simply looping through the possible suffix values. The database has
been configured to pick up these image entries during the course of
regular checks.
Most images are -1, but a few have been found with alternate endings,
depending on revisions.
External database versioning for assets file
Using database version would cause the database to be rebuilt
internally, which would not copy the assets file.
The last modified time only applies to the written file and could not
be compared to the assets file, which would result in unnecessary
writes for every app update.
This method allow the value to be hard-coded in the app to reflect only
when the assets database is updated and avoid the restrictions of
runtime options.
Conflicts:
Source/ui_android/java/com/virtualapplications/play/getGameDetails.java
Conflicts:
Source/ui_android/java/com/virtualapplications/play/TheGamesDB.java
build_android/assets/games.db
Conflicts:
Source/ui_android/java/com/virtualapplications/play/TheGamesDB.java
build_android/assets/games.db
Reconnect getSerial call after rebase
This will shorten the list of available games to just those that both
fit the extension requirements and have a serial number. While it may
not cover every game, there is an extremely high probability at least
one game in a folder has a serial. This assumes all games are obtained
legally.
Conflicts:
Source/ui_android/java/com/virtualapplications/play/GameInfo.java
Due to the limitation of grid dimensions being defined before the grid
is populated, the grid is designed for maximum visibility using
landscape. Adjusting the grid would reload the data, which would result
in unnecessary GamesDB API calls.
Refresh views appropriately, Improve grid layout
Support displaying a file name if no details exist
Requires a stable internet connection and may not display full-size
images. This is only meant to demonstrate the concept.
Conflicts:
build_android/AndroidManifest.xml
Automatically lists all files that fit the extension and sets the root
game folder when one of the items is selected.
Clicking the Reset Folder preference will remove the stored base folder
and return to the complete list.
TODO: Add a method to refresh the list when clearing the preference or
returning from the emulator.
Conflicts:
Source/ui_android/java/com/virtualapplications/play/MainActivity.java
This can be configured using 1 of 2 methods:
Add the value to the local.properties file
ndk.debug=0 or ndk.debug=1
Exporting the environment variable from commandline or by adding it to
the global environment variables
export NDK_DEBUG=0 or export NDK_DEBUG=0