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:
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user