This commit is contained in:
Tomas Dirvanauskas 2023-10-27 15:47:38 +03:00
Родитель f35a1ec4f9
Коммит 3040801d5f
4 изменённых файлов: 54 добавлений и 17 удалений

Просмотреть файл

@ -53,7 +53,7 @@ namespace Unity.Android.Logcat
{
// Get existing open window or if none, make a new one:
AndroidLogcatPackagesWindow window = (AndroidLogcatPackagesWindow)EditorWindow.GetWindow(typeof(AndroidLogcatPackagesWindow));
window.titleContent = new UnityEngine.GUIContent("Pacakge Information");
window.titleContent = new UnityEngine.GUIContent("Package Information");
window.Show();
}
@ -82,8 +82,8 @@ namespace Unity.Android.Logcat
m_VerticalSplit.RegisterCallback<GeometryChangedEvent>(InitializeVerticalLayout);
m_Packages = new AndroidLogcatPackagesView(m_Runtime, rootVisualElement, GetPackageEntries(m_DeviceSelection.SelectedDevice).ToList());
m_Packages.PackageSelected = PackageSelected;
m_Packages.PackageUninstalled = PackageUninstalled;
m_Packages.OnPackageSelected = PackageSelected;
m_Packages.OnPackageUninstalled = PackageUninstalled;
m_PackageProperties = new AndroidLogcatPackagePropertiesView(rootVisualElement);
m_PackageUtilities = new AndroidLogcatPackageUtilities(rootVisualElement);
@ -110,6 +110,8 @@ namespace Unity.Android.Logcat
if (m_Packages == null)
throw new Exception("Package view was not created ?");
m_Packages.RefreshEntries(selectedDevice, GetPackageEntries(selectedDevice).ToList());
PackageSelected(m_Packages.SelectedPackage);
}
private void RefreshPackages()
@ -141,16 +143,13 @@ namespace Unity.Android.Logcat
void PackageSelected(PackageEntry entry)
{
// TODO: device selection
var parser = new AndroidLogcatPackageInfoParser(AndroidLogcatUtilities.RetrievePackageProperties(
m_Runtime.Tools.ADB, m_Runtime.DeviceQuery.FirstConnectedDevice, entry));
m_Runtime.Tools.ADB, m_DeviceSelection.SelectedDevice, entry));
var entries = parser.ParsePackageInformationAsSingleEntries(entry.Name);
m_PackageProperties.RefreshProperties(entries);
var activities = parser.ParseLaunchableActivities(entry.Name);
m_PackageUtilities.RefreshActivities(activities);
m_PackageUtilities.RefreshActivities(m_DeviceSelection.SelectedDevice, entry, activities);
}
void PackageUninstalled(PackageEntry entry)

Просмотреть файл

@ -35,8 +35,8 @@
<ui:VisualElement name="package-tab-launch-options" style="flex-grow: 1; background-color: rgba(0, 0, 0, 0); height: 100px;">
<ui:Label text="Launchable Activities:" />
<ui:ListView fixed-item-height="20" name="launchable-activities" style="border-left-width: 1px; border-right-width: 1px; border-top-width: 1px; border-bottom-width: 1px; border-top-left-radius: 0; border-bottom-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; border-left-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-top-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0);" />
<ui:Button text="Launch" display-tooltip-when-elided="true" name="launch" />
<ui:Button text="Stop" display-tooltip-when-elided="true" name="stop" />
<ui:Button text="Launch" display-tooltip-when-elided="true" name="launch-android-application" />
<ui:Button text="Stop" display-tooltip-when-elided="true" name="stop-android-application" />
</ui:VisualElement>
<ui:VisualElement name="package-tab-others" style="flex-grow: 1; background-color: rgba(0, 0, 0, 0); flex-direction: row; transform-origin: center; height: 100px;">
<ui:Label tabindex="-1" text="Simulate Buttons:" display-tooltip-when-elided="true" />

Просмотреть файл

@ -21,6 +21,21 @@ namespace Unity.Android.Logcat
VisualElement m_TabOthers;
ListView m_LaunchableActivities;
Button m_LaunchApplication;
Button m_StopApplication;
IAndroidLogcatDevice m_Device;
PackageEntry m_PackageEntry;
internal string SelectedActivity
{
get
{
var item = m_LaunchableActivities.selectedItem;
return item?.ToString();
}
}
internal AndroidLogcatPackageUtilities(VisualElement root)
{
m_TabContents = root.Q("package-tabs-contents");
@ -34,6 +49,17 @@ namespace Unity.Android.Logcat
m_TabOthers = root.Q("package-tab-others");
m_LaunchableActivities = root.Q<ListView>("launchable-activities");
m_LaunchApplication = root.Q<Button>("launch-android-application");
m_LaunchApplication.clicked += () =>
{
if (m_Device == null ||
m_PackageEntry == null)
return;
m_Device.StartOrResumePackage(m_PackageEntry.Name, SelectedActivity);
};
m_StopApplication = root.Q<Button>("stop-android-application");
var dispatcher = AndroidLogcatManager.instance.Runtime.Dispatcher;
root.Q<Button>("android-back-button").clicked += () =>
{
@ -70,8 +96,10 @@ namespace Unity.Android.Logcat
m_TabContents.Add(m_TabOthers);
}
internal void RefreshActivities(List<string> activities)
internal void RefreshActivities(IAndroidLogcatDevice device, PackageEntry packageEntry, List<string> activities)
{
m_PackageEntry = packageEntry;
m_Device = device;
m_LaunchableActivities.itemsSource = activities;
if (activities.Count > 0)
m_LaunchableActivities.selectedIndex = 0;

Просмотреть файл

@ -24,8 +24,18 @@ namespace Unity.Android.Logcat
List<PackageEntry> m_UnfilteredEntries;
List<PackageEntry> m_FilteredEntries;
internal Action<PackageEntry> PackageSelected { set; get; }
internal Action<PackageEntry> PackageUninstalled { set; get; }
internal Action<PackageEntry> OnPackageSelected { set; get; }
internal Action<PackageEntry> OnPackageUninstalled { set; get; }
internal PackageEntry SelectedPackage
{
get
{
if (m_ListView.selectedIndex < 0)
return null;
return (PackageEntry)m_ListView.itemsSource[m_ListView.selectedIndex];
}
}
internal AndroidLogcatPackagesView(AndroidLogcatRuntimeBase runtime, VisualElement root, List<PackageEntry> packageEntries)
{
@ -41,7 +51,7 @@ namespace Unity.Android.Logcat
FilterBy(s.newValue);
});
m_ListView.sortingEnabled = true;
m_ListView.sortingMode = ColumnSortingMode.Default;
m_ListView.columnSortingChanged += ColumnSortingChanged;
CreateLabel(nameof(PackageEntry.Name), (e) => e.Name);
CreateLabel(nameof(PackageEntry.Installer), (e) => e.Installer);
@ -62,7 +72,7 @@ namespace Unity.Android.Logcat
uninstall.RegisterCallback<ClickEvent>((e) =>
{
if (AndroidLogcatUtilities.UninstallPackageWithConfirmation(m_Device, uninstall.Entry))
PackageUninstalled?.Invoke(uninstall.Entry);
OnPackageUninstalled?.Invoke(uninstall.Entry);
});
operations.Add(uninstall);
return operations;
@ -157,7 +167,7 @@ namespace Unity.Android.Logcat
if (e.button == 1)
m_ListView.SetSelectionWithoutNotify(new[] { l.Index });
PackageSelected?.Invoke(l.Entry);
OnPackageSelected?.Invoke(l.Entry);
}, label);
label.RegisterCallback<MouseUpEvent, PackageEntryLabel>((e, l) =>
@ -171,7 +181,7 @@ namespace Unity.Android.Logcat
contextMenu.Add(PackagesContextMenu.CopyPackageInfo, "Copy Package Information");
contextMenu.Add(PackagesContextMenu.CopyPacakgeInfoOfAllPackages, "Copy Package Information of all packages");
contextMenu.Add(PackagesContextMenu.CopyPackageName, "Copy Package Name");
contextMenu.Show(e.mousePosition, (userData, options, selected) =>
{
var sender = (AndroidContextMenu<PackagesContextMenu>)userData;