Fix app for build 7 update; added UI support for adjusting grid size

- Build 7 update broke the controllers because I did not include the "android.hardware.vr.headtracking" uses-feature in the manifest. Because of this, the headset was incorrectly registered as an Oculus Go. Looks like they started to enforce this setting in the latest update.
- Added support for adjusting the grid size in the settings panel.
This commit is contained in:
tverona1
2019-07-24 22:22:49 -07:00
parent 06298e39a9
commit 2b6ebb6e73
8 changed files with 1330 additions and 1287 deletions
+5 -1
View File
@@ -22,7 +22,7 @@ namespace QuestAppLauncher
public int cols = 3;
}
public GridSize gridSize;
public GridSize gridSize = new GridSize();
}
/// <summary>
@@ -54,6 +54,10 @@ namespace QuestAppLauncher
Debug.Log(string.Format("Failed to read config: {0}", e.Message));
}
}
else
{
Debug.Log("Did not find config file: " + configFilePath);
}
}
/// <summary>
+29 -25
View File
@@ -25,8 +25,8 @@ namespace QuestAppLauncher
// Extension search for icon overrides
const string IconOverrideExtSearch = "*.jpg";
// Canvas game object
public GameObject canvas;
// Grid container game object
public GameObject gridContainer;
// Scroll view game object
public GameObject scrollView;
@@ -37,9 +37,6 @@ namespace QuestAppLauncher
// App info GameObject (a cell in the grid content)
public GameObject prefab;
// Configuration
private Config config = new Config();
#region MonoBehaviour handler
void Start()
@@ -50,7 +47,7 @@ namespace QuestAppLauncher
// Initialize the core platform
Core.AsyncInitialize();
// Load configuration
// Process configuration
StartCoroutine(ProcessConfig());
// Populate the grid
@@ -135,21 +132,21 @@ namespace QuestAppLauncher
/// <returns></returns>
IEnumerator ProcessConfig()
{
// Load config
ConfigPersistence.LoadConfig(this.config);
ProcessGridSize();
// Load configuration
Config config = new Config();
ConfigPersistence.LoadConfig(config);
SetGridSize(config.gridSize.rows, config.gridSize.cols);
yield return null;
}
private void ProcessGridSize()
public void SetGridSize(int rows, int cols)
{
// Make sure grid size have sane value
this.config.gridSize.cols = Math.Min(this.config.gridSize.cols, 10);
this.config.gridSize.cols = Math.Max(this.config.gridSize.cols, 1);
this.config.gridSize.rows = Math.Min(this.config.gridSize.rows, 50);
this.config.gridSize.rows = Math.Max(this.config.gridSize.rows, 1);
cols = Math.Min(cols, 10);
cols = Math.Max(cols, 1);
rows = Math.Min(rows, 10);
rows = Math.Max(rows, 1);
// Get cell size, spacing & padding from the grid layout
var gridLayoutGroup = this.gridContent.GetComponent<GridLayoutGroup>();
@@ -161,17 +158,24 @@ namespace QuestAppLauncher
var spaceY = gridLayoutGroup.spacing.y;
// Width = horizontal padding + # cols * cell width + (# cols - 1) * horizontal spacing
var width = paddingX + this.config.gridSize.cols * cellWidth + (this.config.gridSize.cols - 1) * spaceX;
var width = paddingX + cols * cellWidth + (cols - 1) * spaceX;
// Height = vertical padding + # rows * cell height + (# rows - 1) * veritcal spacing + a bit more to show there are more elements
var height = paddingY + this.config.gridSize.rows * cellHeight + (this.config.gridSize.rows - 1) * spaceY + 120;
var height = paddingY + rows * cellHeight + (rows - 1) * spaceY + 120;
Debug.Log(string.Format("Setting grid size to {0} x {1} cells", this.config.gridSize.cols, this.config.gridSize.rows));
Debug.Log(string.Format("Setting grid size to {0} x {1} cells", cols, rows));
Debug.Log(string.Format("Grid size calculated width x height: {0} x {1}", width, height));
// Adjust canvas rect transform
var canvasRectTransform = this.canvas.GetComponent<RectTransform>();
canvasRectTransform.sizeDelta = new Vector2(width, height);
// Adjust grid container rect transform
var gridTransform = this.gridContainer.GetComponent<RectTransform>();
gridTransform.sizeDelta = new Vector2(width, height);
// Adjust grid container Y position to maintain constant height.
// TODO: Figure out a way to adjust UI to avoid this calculation in code
var gridPosition = new Vector3(gridTransform.anchoredPosition3D.x,
(float)((gridTransform.rect.height - 2000) / 2.0),
gridTransform.anchoredPosition3D.z);
gridTransform.anchoredPosition3D = gridPosition;
// Adjust scroll view rect transform
var scrollViewRectTransform = this.scrollView.GetComponent<RectTransform>();
@@ -205,7 +209,7 @@ namespace QuestAppLauncher
// Add current package name to excludedPackageNames to filter it out
excludedPackageNames.Add(currentActivity.Call<string>("getPackageName"));
//This is a file containing packageNames that will be excluded
// This is a file containing packageNames that will be excluded
var excludedPackageNamesFilePath = Path.Combine(persistentDataPath, ExcludedPackagesFile);
if (File.Exists(excludedPackageNamesFilePath))
{
@@ -233,13 +237,11 @@ namespace QuestAppLauncher
continue;
}
packageNameToAppName.Add(packageName, (i, appName));
Debug.Log("[" + i + "] package: " + packageName + ", name: " + appName);
yield return null;
}
yield return null;
// Override app names, if any
// This is just a file with comma-separated packageName,appName pairs
var appNameOverrideFilePath = Path.Combine(persistentDataPath, AppNameOverrideFile);
@@ -277,6 +279,8 @@ namespace QuestAppLauncher
Debug.Log("Found file: " + iconFileName);
iconOverrides[entry] = Path.Combine(iconOverridePath, iconFileName);
}
yield return null;
}
}
+74 -15
View File
@@ -1,38 +1,60 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
namespace QuestAppLauncher
{
public class SettingsHandler : MonoBehaviour
{
public GameObject scrollView;
public GameObject gridContainer;
public GameObject openSettingsButton;
public GameObject closeSettingsButton;
public GameObject settingsView;
public GameObject settingsContainer;
public GameObject gridCols;
public GameObject gridColsText;
public GameObject gridRows;
public GameObject gridRowsText;
public GameObject gridPopulation;
private Config config = new Config();
public void OpenSettings()
{
Debug.Log("Open Settings");
scrollView.SetActive(false);
openSettingsButton.SetActive(false);
closeSettingsButton.SetActive(true);
settingsView.SetActive(true);
this.gridContainer.SetActive(false);
this.openSettingsButton.SetActive(false);
this.closeSettingsButton.SetActive(true);
this.settingsContainer.SetActive(true);
// Load config
ConfigPersistence.LoadConfig(this.config);
// Set current cols & rows
var colsSlider = this.gridCols.GetComponent<Slider>();
colsSlider.value = this.config.gridSize.cols;
var colsText = this.gridColsText.GetComponent<TextMeshProUGUI>();
colsText.text = string.Format("{0} Cols", this.config.gridSize.cols);
var rowsSlider = this.gridRows.GetComponent<Slider>();
rowsSlider.value = this.config.gridSize.rows;
var rowsText = this.gridRowsText.GetComponent<TextMeshProUGUI>();
rowsText.text = string.Format("{0} Rows", this.config.gridSize.rows);
}
public void CloseSettings()
{
Debug.Log("Close Settings");
scrollView.SetActive(true);
openSettingsButton.SetActive(true);
closeSettingsButton.SetActive(false);
settingsView.SetActive(false);
}
// Resize grid if necessary
ResizeGrid();
public void ResizeGrid(int selection)
{
Debug.Log("Resize grid: " + selection);
Debug.Log("Close Settings");
this.gridContainer.SetActive(true);
this.openSettingsButton.SetActive(true);
this.closeSettingsButton.SetActive(false);
this.settingsContainer.SetActive(false);
}
public void DeleteExcludedApksFile()
@@ -40,5 +62,42 @@ namespace QuestAppLauncher
Debug.Log("Delete Excluded Apk List");
QuestAppLauncher.GridPopulation.DeleteExcludedApksFile();
}
public void UpdateGridColText()
{
var cols = gridCols.GetComponent<Slider>().value;
var colsText = this.gridColsText.GetComponent<TextMeshProUGUI>();
colsText.text = string.Format("{0} Cols", cols);
}
public void UpdateGridRowText()
{
var rows = gridRows.GetComponent<Slider>().value;
var rowsText = this.gridRowsText.GetComponent<TextMeshProUGUI>();
rowsText.text = string.Format("{0} Rows", rows);
}
private void ResizeGrid()
{
var cols = (int)gridCols.GetComponent<Slider>().value;
var rows = (int)gridRows.GetComponent<Slider>().value;
if (cols == this.config.gridSize.cols &&
rows == this.config.gridSize.rows)
{
// Nothing was resized, so no work to do
return;
}
Debug.Log(string.Format("Resizing grid: {0} x {1}", cols, rows));
// Update configuration
this.config.gridSize.cols = cols;
this.config.gridSize.rows = rows;
ConfigPersistence.SaveConfig(this.config);
// Update grid size
this.gridPopulation.GetComponent<GridPopulation>().SetGridSize(this.config.gridSize.rows, this.config.gridSize.cols);
}
}
}