Added support for "showOnlyCustom"
Added support for "showOnlyCustom": Only shows apps specified in appnames.txt.
This commit is contained in:
@@ -400,9 +400,9 @@ RectTransform:
|
||||
m_Father: {fileID: 103848540}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 450, y: -75}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &84052785
|
||||
@@ -559,9 +559,9 @@ RectTransform:
|
||||
m_Father: {fileID: 302656573}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 500, y: -75}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &87081340
|
||||
@@ -719,9 +719,9 @@ RectTransform:
|
||||
m_Father: {fileID: 1133097218}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 1300, y: -75}
|
||||
m_SizeDelta: {x: 600, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &103848541
|
||||
@@ -1086,9 +1086,9 @@ RectTransform:
|
||||
m_Father: {fileID: 883330324}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 600, y: -525}
|
||||
m_SizeDelta: {x: 800, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &302656574
|
||||
@@ -1491,9 +1491,9 @@ RectTransform:
|
||||
m_Father: {fileID: 1133097218}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 700, y: -75}
|
||||
m_SizeDelta: {x: 600, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &455930356
|
||||
@@ -1616,9 +1616,9 @@ RectTransform:
|
||||
m_Father: {fileID: 455930355}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 100, y: -75}
|
||||
m_SizeDelta: {x: 200, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &470013057
|
||||
@@ -1727,9 +1727,9 @@ RectTransform:
|
||||
m_Father: {fileID: 949458750}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 1625, y: -75}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &604462433
|
||||
@@ -2167,9 +2167,9 @@ RectTransform:
|
||||
m_Father: {fileID: 949458750}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 200, y: -75}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!65 &715250741
|
||||
@@ -2287,7 +2287,7 @@ RectTransform:
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 10, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
@@ -2362,7 +2362,7 @@ RectTransform:
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 20, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
@@ -2540,6 +2540,7 @@ MonoBehaviour:
|
||||
gridRowsText: {fileID: 604462431}
|
||||
gridPopulation: {fileID: 1860838374}
|
||||
show2DToggle: {fileID: 302656572}
|
||||
showOnlyCustomToggle: {fileID: 1228372840}
|
||||
tabsNone: {fileID: 455930358}
|
||||
tabsAuto: {fileID: 103848543}
|
||||
tabsCustom: {fileID: 1349177903}
|
||||
@@ -2588,9 +2589,9 @@ RectTransform:
|
||||
m_Father: {fileID: 1133097218}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 200, y: -75}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &907338449
|
||||
@@ -2823,9 +2824,9 @@ RectTransform:
|
||||
m_Father: {fileID: 883330324}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 600, y: -1025}
|
||||
m_SizeDelta: {x: 800, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &949458751
|
||||
@@ -2962,9 +2963,9 @@ RectTransform:
|
||||
m_Father: {fileID: 302656573}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 100, y: -75}
|
||||
m_SizeDelta: {x: 200, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &987583756
|
||||
@@ -3191,9 +3192,9 @@ RectTransform:
|
||||
m_Father: {fileID: 883330324}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 600, y: -1275}
|
||||
m_SizeDelta: {x: 800, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1106898772
|
||||
@@ -3360,9 +3361,9 @@ RectTransform:
|
||||
m_Father: {fileID: 455930355}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 450, y: -75}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1107460993
|
||||
@@ -3785,9 +3786,9 @@ RectTransform:
|
||||
m_Father: {fileID: 883330324}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 400, y: -275}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1133097219
|
||||
@@ -3860,9 +3861,9 @@ RectTransform:
|
||||
m_Father: {fileID: 949458750}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 675, y: -75}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1170891612
|
||||
@@ -4081,7 +4082,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &1213035640
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4116,12 +4117,12 @@ GameObject:
|
||||
- component: {fileID: 1228372843}
|
||||
- component: {fileID: 1228372842}
|
||||
m_Layer: 5
|
||||
m_Name: AppNames_Only
|
||||
m_Name: Show_Only_Custom
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1228372841
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4507,9 +4508,9 @@ RectTransform:
|
||||
m_Father: {fileID: 1133097218}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 1900, y: -75}
|
||||
m_SizeDelta: {x: 600, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1349177901
|
||||
@@ -4634,9 +4635,9 @@ RectTransform:
|
||||
m_Father: {fileID: 949458750}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 1150, y: -75}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!65 &1398590895
|
||||
@@ -4829,9 +4830,9 @@ RectTransform:
|
||||
m_Father: {fileID: 103848540}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 100, y: -75}
|
||||
m_SizeDelta: {x: 200, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1802350636
|
||||
@@ -5300,7 +5301,7 @@ RectTransform:
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 20, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
@@ -5522,9 +5523,9 @@ RectTransform:
|
||||
m_Father: {fileID: 1106898771}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 400, y: -75}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2009369173
|
||||
@@ -5915,7 +5916,7 @@ RectTransform:
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 10, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
@@ -5990,9 +5991,9 @@ RectTransform:
|
||||
m_Father: {fileID: 1349177900}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 100, y: -75}
|
||||
m_SizeDelta: {x: 200, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2079963552
|
||||
@@ -6065,9 +6066,9 @@ RectTransform:
|
||||
m_Father: {fileID: 1349177900}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 450, y: -75}
|
||||
m_SizeDelta: {x: 400, y: 150}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2096913252
|
||||
|
||||
@@ -27,10 +27,21 @@ namespace QuestAppLauncher
|
||||
public int cols = 3;
|
||||
}
|
||||
|
||||
// Grid size, specified as cols x rows
|
||||
public GridSize gridSize = new GridSize();
|
||||
|
||||
// Whether to show 2D apps
|
||||
public bool show2D = false;
|
||||
|
||||
// Category types: "none", "automatic", "custom"
|
||||
// Whether to only show apps that are explicitly specified in appnames.txt file.
|
||||
// If true, this will not show installed apps that are not in appnames.txt. This
|
||||
// is useful for organizing the launcher with a highly curated list of apps.
|
||||
public bool showOnlyCustom = false;
|
||||
|
||||
// Category types: "none", "auto", "custom":
|
||||
// - none: No categories - all apps are listed in a single pane
|
||||
// - auto: Apps are automatically categorized into 3 tabs - Quest, Go/GearVr, 2D
|
||||
// - custom: Apps are categorized according to appnames.txt file
|
||||
public string categoryType = Category_Auto;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,8 +21,10 @@ namespace QuestAppLauncher
|
||||
public int Index;
|
||||
public string PackageName;
|
||||
public string AppName;
|
||||
public string AutoTabName;
|
||||
public string Tab1Name;
|
||||
public string Tab2Name;
|
||||
public bool IsOverride;
|
||||
}
|
||||
|
||||
// File name of app name overrides
|
||||
@@ -138,16 +140,19 @@ namespace QuestAppLauncher
|
||||
/// <summary>
|
||||
/// Static method to delete the excludedFile
|
||||
/// </summary>
|
||||
/// <param name="packageName"></param>
|
||||
static public void DeleteExcludedApksFile()
|
||||
/// <returns>true if file exists</returns>
|
||||
static public bool DeleteExcludedAppsFile()
|
||||
{
|
||||
var persistentDataPath = UnityEngine.Application.persistentDataPath;
|
||||
var excludedPackageNamesFilePath = Path.Combine(persistentDataPath, ExcludedPackagesFile);
|
||||
|
||||
if (File.Exists(excludedPackageNamesFilePath))
|
||||
{
|
||||
File.Delete(excludedPackageNamesFilePath);
|
||||
return true;
|
||||
}
|
||||
|
||||
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
|
||||
return false;
|
||||
}
|
||||
|
||||
public void SetGridSize(GameObject gridContent, int rows, int cols)
|
||||
@@ -276,7 +281,7 @@ namespace QuestAppLauncher
|
||||
tabName = Tab_Go;
|
||||
}
|
||||
|
||||
apps.Add(packageName, new ProcessedApp { PackageName = packageName, Index = i, Tab1Name = tabName, AppName = appName });
|
||||
apps.Add(packageName, new ProcessedApp { PackageName = packageName, Index = i, AutoTabName = tabName, Tab1Name = tabName, AppName = appName });
|
||||
Debug.LogFormat("[{0}] package: {1}, name: {2}, tab: {3}", i, packageName, appName, tabName);
|
||||
yield return null;
|
||||
}
|
||||
@@ -334,8 +339,10 @@ namespace QuestAppLauncher
|
||||
PackageName = apps[entry[0]].PackageName,
|
||||
Index = apps[entry[0]].Index,
|
||||
AppName = appName,
|
||||
AutoTabName = apps[entry[0]].AutoTabName,
|
||||
Tab1Name = tab1 ?? apps[entry[0]].Tab1Name,
|
||||
Tab2Name = tab2
|
||||
Tab2Name = tab2,
|
||||
IsOverride = true
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -387,6 +394,7 @@ namespace QuestAppLauncher
|
||||
|
||||
List<string> tabs;
|
||||
bool isNoneTab = false;
|
||||
bool isAutoTab = false;
|
||||
|
||||
if (config.categoryType.Equals(Config.Category_None, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -402,6 +410,7 @@ namespace QuestAppLauncher
|
||||
tabs.Add(Tab_Quest);
|
||||
tabs.Add(Tab_Go);
|
||||
tabs.Add(Tab_2D);
|
||||
isAutoTab = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -468,11 +477,24 @@ namespace QuestAppLauncher
|
||||
// Sort by app name
|
||||
foreach (var app in apps.OrderBy(key => key.Value.AppName))
|
||||
{
|
||||
if (config.showOnlyCustom && !app.Value.IsOverride)
|
||||
{
|
||||
// Since showOnlyCustom is set, skip apps that are not in the appnames.txt file
|
||||
Debug.LogFormat("Skipping non-Show Only Custom [{0}] Package: {1}, name: {2}",
|
||||
app.Value.Index, app.Value.PackageName, app.Value.AppName);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isNoneTab)
|
||||
{
|
||||
// No tabs, so use the special "None" tab
|
||||
yield return AddCellToGrid(app.Value, gridContents[Tab_None].transform, iconOverrides, currentActivity);
|
||||
}
|
||||
else if (isAutoTab)
|
||||
{
|
||||
// Add to auto (built-in) tabs
|
||||
yield return AddCellToGrid(app.Value, gridContents[app.Value.AutoTabName].transform, iconOverrides, currentActivity);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Add to tab1
|
||||
|
||||
@@ -64,7 +64,6 @@ namespace QuestAppLauncher
|
||||
else if (isInBounds)
|
||||
{
|
||||
// We are outside the scroll view and were previously inside, so disable box colliders on children.
|
||||
Debug.Log("ScrollRectOverride: Disabling box colliders on children");
|
||||
foreach (var boxCollider in this.content.gameObject.GetComponentsInChildren<BoxCollider>())
|
||||
{
|
||||
boxCollider.enabled = false;
|
||||
|
||||
@@ -20,11 +20,14 @@ namespace QuestAppLauncher
|
||||
public GameObject gridRowsText;
|
||||
public GameObject gridPopulation;
|
||||
public GameObject show2DToggle;
|
||||
public GameObject showOnlyCustomToggle;
|
||||
|
||||
public Toggle tabsNone;
|
||||
public Toggle tabsAuto;
|
||||
public Toggle tabsCustom;
|
||||
|
||||
private bool deletedHiddenAppsFile = false;
|
||||
|
||||
private Config config = new Config();
|
||||
|
||||
public void OpenSettings()
|
||||
@@ -53,6 +56,9 @@ namespace QuestAppLauncher
|
||||
// Set 2D toggle
|
||||
this.show2DToggle.GetComponent<Toggle>().SetIsOnWithoutNotify(this.config.show2D);
|
||||
|
||||
// Set ShowOnlyCustom toggle
|
||||
this.showOnlyCustomToggle.GetComponent<Toggle>().SetIsOnWithoutNotify(this.config.showOnlyCustom);
|
||||
|
||||
// Set tab mode
|
||||
if (this.config.categoryType.Equals(Config.Category_None, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -82,8 +88,12 @@ namespace QuestAppLauncher
|
||||
|
||||
public void DeleteExcludedApksFile()
|
||||
{
|
||||
Debug.Log("Delete Excluded Apk List");
|
||||
QuestAppLauncher.GridPopulation.DeleteExcludedApksFile();
|
||||
Debug.Log("Delete Excluded App List");
|
||||
|
||||
if (!this.deletedHiddenAppsFile)
|
||||
{
|
||||
this.deletedHiddenAppsFile = QuestAppLauncher.GridPopulation.DeleteExcludedAppsFile();
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateGridColText()
|
||||
@@ -124,6 +134,14 @@ namespace QuestAppLauncher
|
||||
saveConfig = true;
|
||||
}
|
||||
|
||||
// Update ShowOnlyCustom toggle
|
||||
var showOnlyCustom = this.showOnlyCustomToggle.GetComponent<Toggle>().isOn;
|
||||
if (showOnlyCustom != this.config.showOnlyCustom)
|
||||
{
|
||||
this.config.showOnlyCustom = showOnlyCustom;
|
||||
saveConfig = true;
|
||||
}
|
||||
|
||||
// Update tabbing
|
||||
string tabMode;
|
||||
if (this.tabsNone.isOn)
|
||||
@@ -150,8 +168,11 @@ namespace QuestAppLauncher
|
||||
if (saveConfig)
|
||||
{
|
||||
ConfigPersistence.SaveConfig(this.config);
|
||||
}
|
||||
|
||||
// Re-populate grid
|
||||
// If we touched the config file or we deleted the hidden apps file, re-populate the grid
|
||||
if (saveConfig || deletedHiddenAppsFile)
|
||||
{
|
||||
Debug.Log("Re-populating panel");
|
||||
this.gridPopulation.GetComponent<GridPopulation>().StartPopulate();
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
An app launcher for Quest implemented in Unity.
|
||||
|
||||
## Overriding app icons and names
|
||||
For each installed app, we extract the default app name (PackageManager.getApplicationLabel()) and default app icon (PackageManager.getApplicationIcon()). Sometimes, however, these do not map to the actual app name and icon in the Oculus Store. In order to override this, do the following:
|
||||
By default, the launcher uses the default app name and icon (from the apk). Sometimes, however, it is desirable to override these - for example, the icon may be the default Oculus icon instead of the actual game icon; or the app name may these do not map to the actual app name and icon in the Oculus Store.
|
||||
|
||||
### Override app names
|
||||
Create a file called **appnames.txt**. Add a line per app with comma-separated package-id and desired name. Example:
|
||||
@@ -24,6 +24,13 @@ Copy these files to the following location on your Quest: Android/data/aaa.Quest
|
||||
The app can be customized by creating a **config.json** file and copying it to the following location on your Quest: Android/data/aaa.QuestAppLauncher.App/files.
|
||||
|
||||
The following options are supported:
|
||||
### Categories (tabs)
|
||||
By default, the launcher will display 3 tabs - Quest, Go/GrearVr and 2D. This can be overridden by specifying the field "categoryType" with one of the following values:
|
||||
|
||||
"none": No categories - all apps are listed in a single pane
|
||||
"auto": Apps are automatically categorized into 3 tabs - Quest, Go/GearVr, 2D
|
||||
"custom": Apps are categorized according to appnames.txt file - see below
|
||||
|
||||
### Setting Grid Size
|
||||
The default grid size is 3x3 cells. The grid size can be customized by specifying grid rows and columns as in the following example:
|
||||
|
||||
@@ -36,6 +43,42 @@ The default grid size is 3x3 cells. The grid size can be customized by specifyin
|
||||
}
|
||||
```
|
||||
|
||||
### Showing / Hiding 2D apps
|
||||
To show or hide 2D apps, set the "show2D" field to true or false
|
||||
|
||||
### Only showing apps specified in appnames.txt
|
||||
By default, the launcher will show all installed apps. Use this "showOnlyCustom" option to exclude any apps that are not specified appnames.txt. This is useful for organizing the launcher with a highly curated list of apps.
|
||||
|
||||
### Example config.json
|
||||
Here's an example config.json:
|
||||
|
||||
```
|
||||
{
|
||||
"gridSize": {
|
||||
"rows": 3,
|
||||
"cols": 4
|
||||
},
|
||||
"show2D": true,
|
||||
"showOnlyCustom": false,
|
||||
"categoryType": "custom"
|
||||
}
|
||||
```
|
||||
|
||||
## Appnames.txt syntax
|
||||
This section describes the syntax for appnames.txt entries
|
||||
|
||||
### Custom Categories (Tabs)
|
||||
As described above, the launcher supports custom categories (tabs). This can be specified in the **appnames.txt** file by adding up to two custom categories per entry. The syntax is:
|
||||
packageName,appName[,category1[, category2]]
|
||||
|
||||
For example, this will categorize the two entries below in Action and Puzzle tabs:
|
||||
|
||||
com.mycompany.myapp,My Application,Action
|
||||
com.othercompany.otherapp,Other application,Puzzle
|
||||
|
||||
### Comments
|
||||
Comments can be added to appnames.txt by prepending "#".
|
||||
|
||||
## Source structure:
|
||||
- Assets/Scenes/QuestAppLauncher.unity: The main scene
|
||||
- Assets/Plugins/Android: Android-specific implementation to retrieve installed apps etc, written in Java
|
||||
|
||||
Reference in New Issue
Block a user