Esempio n. 1
0
        private void SetDisplayPackage(PackageInfo packageInfo, Error packageError = null)
        {
            DisplayPackage = packageInfo;

            Error error = null;

            var detailVisible = package != null && DisplayPackage != null;

            if (!detailVisible)
            {
                foreach (var extension in PackageManagerExtensions.Extensions)
                {
                    extension.OnPackageSelectionChange(null);
                }
            }
            else
            {
                SetUpdateVisibility(true);
                var isBuiltIn = DisplayPackage.IsBuiltIn;
                UIUtils.SetElementDisplay(ViewDocButton, true);
                UIUtils.SetElementDisplay(ViewLicensesContainer, !isBuiltIn);
                RemoveButton.visible = true;

                if (string.IsNullOrEmpty(DisplayPackage.Description))
                {
                    DetailDesc.text = "There is no description for this package.";
                    DetailDesc.AddToClassList(emptyDescriptionClass);
                }
                else
                {
                    DetailDesc.text = DisplayPackage.Description;
                    DetailDesc.RemoveFromClassList(emptyDescriptionClass);
                }

                root.Q <Label>("detailTitle").text = DisplayPackage.DisplayName;
                DetailVersion.text = "Version " + DisplayPackage.VersionWithoutTag;

                if (DisplayPackage.IsInDevelopment || DisplayPackage.HasVersionTag(PackageTag.preview))
                {
                    UIUtils.SetElementDisplay(GetTag(PackageTag.verified), false);
                }
                else
                {
                    var unityVersionParts = Application.unityVersion.Split('.');
                    var unityVersion      = string.Format("{0}.{1}", unityVersionParts[0], unityVersionParts[1]);
                    VerifyLabel.text = unityVersion + " verified";
                    UIUtils.SetElementDisplay(GetTag(PackageTag.verified), DisplayPackage.IsVerified);
                }

                UIUtils.SetElementDisplay(GetTag(PackageTag.inDevelopment), DisplayPackage.IsInDevelopment);
                UIUtils.SetElementDisplay(GetTag(PackageTag.local), DisplayPackage.IsLocal);
                UIUtils.SetElementDisplay(GetTag(PackageTag.git), DisplayPackage.IsGit);
                UIUtils.SetElementDisplay(GetTag(PackageTag.preview), DisplayPackage.IsPreview);

                UIUtils.SetElementDisplay(DocumentationContainer, true);
                UIUtils.SetElementDisplay(ChangelogContainer, DisplayPackage.HasChangelog);

                SampleList.SetPackage(DisplayPackage);

                root.Q <Label>("detailName").text = DisplayPackage.Name;
                DetailScrollView.scrollOffset     = new Vector2(0, 0);

                DetailModuleReference.text = "";
                if (isBuiltIn)
                {
                    DetailModuleReference.text = DisplayPackage.BuiltInDescription;
                }

                DetailAuthor.text = "";
                if (!string.IsNullOrEmpty(DisplayPackage.Author))
                {
                    DetailAuthor.text = string.Format("Author: {0}", DisplayPackage.Author);
                }

                UIUtils.SetElementDisplay(DetailDesc, !isBuiltIn);
                UIUtils.SetElementDisplay(DetailVersion, !isBuiltIn);
                UIUtils.SetElementDisplayNonEmpty(DetailModuleReference);
                UIUtils.SetElementDisplayNonEmpty(DetailAuthor);

                if (DisplayPackage.Errors.Count > 0)
                {
                    error = DisplayPackage.Errors.First();
                }

                RefreshAddButton();
                RefreshRemoveButton();
                UIUtils.SetElementDisplay(CustomContainer, true);

                package.AddSignal.OnOperation    += OnAddOperation;
                package.RemoveSignal.OnOperation += OnRemoveOperation;
                foreach (var extension in PackageManagerExtensions.Extensions)
                {
                    extension.OnPackageSelectionChange(DisplayPackage.Info);
                }

                ShowDependencies();
            }

            // Set visibility
            SetContentVisibility(detailVisible);

            if (packageError == null && package != null && package.Error != null)
            {
                packageError = package.Error;
            }
            if (null == error)
            {
                error = packageError;
            }

            if (error != null)
            {
                SetError(error);
            }
            else
            {
                DetailError.ClearError();
            }
        }
        private void SetDisplayPackage(PackageInfo packageInfo, Error packageError = null)
        {
            DisplayPackage = packageInfo;

            Error error = null;

            var detailVisible = package != null && DisplayPackage != null;

            if (!detailVisible)
            {
                RefreshExtensions(null);
            }
            else
            {
                SetUpdateVisibility(true);
                var isBuiltIn = DisplayPackage.IsBuiltIn;
                UIUtils.SetElementDisplay(ViewDocButton, true);
                UIUtils.SetElementDisplay(ViewLicensesContainer, !isBuiltIn);
                RemoveButton.visible = true;

                if (string.IsNullOrEmpty(DisplayPackage.Description))
                {
                    DetailDesc.text = "There is no description for this package.";
                    DetailDesc.AddToClassList(emptyDescriptionClass);
                }
                else
                {
                    DetailDesc.text = DisplayPackage.Description;
                    DetailDesc.RemoveFromClassList(emptyDescriptionClass);
                }

                root.Q <Label>("detailTitle").text = DisplayPackage.DisplayName;
                DetailVersion.text = "Version " + DisplayPackage.VersionWithoutTag;

                if (DisplayPackage.IsInDevelopment || DisplayPackage.HasVersionTag(PackageTag.preview))
                {
                    UIUtils.SetElementDisplay(GetTag(PackageTag.verified), false);
                }
                else
                {
                    var unityVersionParts = Application.unityVersion.Split('.');
                    var unityVersion      = string.Format("{0}.{1}", unityVersionParts[0], unityVersionParts[1]);
                    VerifyLabel.text = unityVersion + " verified";
                    UIUtils.SetElementDisplay(GetTag(PackageTag.verified), DisplayPackage.IsVerified);
                }

                UIUtils.SetElementDisplay(GetTag(PackageTag.inDevelopment), DisplayPackage.IsInDevelopment);
                UIUtils.SetElementDisplay(GetTag(PackageTag.local), DisplayPackage.IsLocal);
                UIUtils.SetElementDisplay(GetTag(PackageTag.git), DisplayPackage.IsGit);
                UIUtils.SetElementDisplay(GetTag(PackageTag.preview), DisplayPackage.IsPreview);
                UIUtils.SetElementDisplay(EditPackageManifestButton, DisplayPackage.IsInstalled && !package.IsBuiltIn);

                UIUtils.SetElementDisplay(DocumentationContainer, true);
                UIUtils.SetElementDisplay(ChangelogContainer, DisplayPackage.HasChangelog);

                SampleList.SetPackage(DisplayPackage);

                root.Q <Label>("detailName").text = DisplayPackage.Name;
                DetailScrollView.scrollOffset     = new Vector2(0, 0);

                DetailModuleReference.text = "";
                if (isBuiltIn)
                {
                    DetailModuleReference.text = DisplayPackage.BuiltInDescription;
                }

                DetailAuthor.text = "";
                if (!string.IsNullOrEmpty(DisplayPackage.Author))
                {
                    DetailAuthor.text = string.Format("Author: {0}", DisplayPackage.Author);
                }

                // If the package details is not enabled, don't update the date yet as we are fetching new information
                if (enabledSelf)
                {
                    DetailDate.text = "";

                    // In Development packages are not published, so we do not show any published date
                    if (DisplayPackage.Info != null && !DisplayPackage.IsInDevelopment)
                    {
                        if (DisplayPackage.Info.datePublished != null)
                        {
                            DetailDate.text = $"Published Date: {DisplayPackage.Info.datePublished.Value:MMMM dd,  yyyy}";
                        }
                        else if (DisplayPackage.IsCore || DisplayPackage.IsInstalled)
                        {
                            // For core packages, or installed packages that are bundled with Unity without being published, use Unity's build date
                            var unityBuildDate = new DateTime(1970, 1, 1, 0, 0, 0, 0);
                            unityBuildDate  = unityBuildDate.AddSeconds(InternalEditorUtility.GetUnityVersionDate());
                            DetailDate.text = $"Published Date: {unityBuildDate:MMMM dd, yyyy}";
                        }
                    }
                }

                UIUtils.SetElementDisplay(DetailDesc, !isBuiltIn);
                UIUtils.SetElementDisplay(DetailVersion, !isBuiltIn);
                UIUtils.SetElementDisplayNonEmpty(DetailModuleReference);
                UIUtils.SetElementDisplayNonEmpty(DetailAuthor);
                UIUtils.SetElementDisplayNonEmpty(DetailDate);

                if (DisplayPackage.Errors.Count > 0)
                {
                    error = DisplayPackage.Errors.First();
                }

                RefreshAddButton();
                RefreshRemoveButton();
                RefreshDevelopButton();

                UIUtils.SetElementDisplay(CustomContainer, true);

                package.AddSignal.OnOperation    += OnAddOperation;
                package.RemoveSignal.OnOperation += OnRemoveOperation;
                package.EmbedSignal.OnOperation  += OnDevelopOperation;
                RefreshExtensions(DisplayPackage);

                ShowDependencies();
            }
            OnEditorSelectionChanged();

            // Set visibility
            SetContentVisibility(detailVisible);

            if (packageError == null && package != null && package.Error != null)
            {
                packageError = package.Error;
            }
            if (null == error)
            {
                error = packageError;
            }

            if (error != null)
            {
                SetError(error);
            }
            else
            {
                DetailError.ClearError();
            }
        }