Ejemplo n.º 1
0
        /*
         * internal void PopulateUsers(bool refresh, bool resort)
         * {
         *  this.lvUsers.BeginUpdate();
         *
         *  try
         *  {
         *      BackupSelectedItems();
         *
         *      if (refresh)
         *      {
         *          this.cachedUsers = null;
         *      }
         *
         *      if (this.cachedUsers == null)
         *      {
         *          UpdateControls(false, true);
         *          workerReadIdentities.RunWorkerAsync();
         *
         *          Identity everyOneGroup = Context.SecurityService.ReadIdentity(SearchFactor.EveryoneApplicationGroup,
         *              null, QueryMembership.Direct);
         *          int usersCount = everyOneGroup.Members.Length;
         *          UIContext.Instance.ProgressBegin(usersCount, 1);
         *
         *          try
         *          {
         *              this.cachedUsers = new List<Identity>();
         *              this.lvUsers.Groups.Clear();
         *
         *              List<string> domains = new List<string>();
         *
         *              Identity[] allIdentities = Context.SecurityService.ReadIdentities(SearchFactor.Sid,
         *                  everyOneGroup.Members,
         *                  QueryMembership.None);
         *
         *              string selectedDomain = cmbDomains.SelectedItem as string;
         *
         *              foreach (Identity identity in allIdentities)
         *              {
         *                  if (identity != null && identity.Type == IdentityType.WindowsUser)
         *                  {
         *                      if (!domains.Contains(identity.Domain))
         *                      {
         *                          domains.Add(identity.Domain);
         *                      }
         *
         *                      if (selectedDomainIndex == 0 || Util.StrEqual(identity.Domain, selectedDomain, true))
         *                      {
         *                          this.cachedUsers.Add(identity);
         *                          this.lvUsers.Groups.Add(identity.Domain, identity.Domain);
         *                      }
         *                  }
         *
         *                  UIContext.Instance.ProgressDoStep();
         *              }
         *
         *              blockSelectedChange = true;
         *              try
         *              {
         *                  cmbDomains.Items.Clear();
         *                  cmbDomains.Items.Add(string.Empty);
         *                  domains.ForEach(domain => cmbDomains.Items.Add(domain));
         *
         *                  cmbDomains.SelectedIndex = selectedDomainIndex;
         *              }
         *              finally
         *              {
         *                  blockSelectedChange = false;
         *              }
         *          }
         *          finally
         *          {
         *              UIContext.Instance.ProgressEnd();
         *          }
         *      }
         *
         *      if (resort)
         *      {
         *          SortListData();
         *      }
         *
         *      this.lvUsers.Visible = true;
         *      this.lvUsers.Items.Clear();
         *      UIContext.Instance.ProgressBegin(this.cachedUsers.Count, 1);
         *      this.cachedUsers.ForEach(user =>
         *      {
         *          ListViewItem viewItem = this.lvUsers.Items.Add(user.AccountName);
         *          viewItem.ImageIndex = 0;
         *          viewItem.Tag = user;
         *          viewItem.SubItems.Add(user.DisplayName);
         *          viewItem.SubItems.Add(user.Sid);
         *          viewItem.SubItems.Add(user.MailAddress);
         *          viewItem.SubItems.Add(user.Description);
         *          viewItem.Group = this.lvUsers.Groups[user.Domain];
         *
         *          UIContext.Instance.ProgressDoStep();
         *      });
         *  }
         *  finally
         *  {
         *      this.lvUsers.EndUpdate();
         *      UIContext.Instance.ProgressEnd();
         *      RestoreSelectedItems();
         *
         *      if (!firstTimeLoaded)
         *      {
         *          firstTimeLoaded = true;
         *      }
         *  }
         * }
         */

        #endregion old PopulateUsers

        internal void PopulateUsers(bool refresh, bool resort)
        {
            this.lvUsers.BeginUpdate();

            try
            {
                BackupSelectedItems();

                if (refresh)
                {
                    this.cachedUsers = null;
                }

                this.lvUsers.Visible = true;
                this.lvUsers.Items.Clear();

                if (this.cachedUsers == null)
                {
                    if (!workerReadIdentities.IsBusy && !workerReadIdentities.CancellationPending)
                    {
                        UpdateControls(false);

                        if (loadingPanel == null)
                        {
                            loadingPanel = LoadingPanel.Create(new LoadingPanelSettings
                            {
                                Message         = "Loading users...",
                                OwnerControl    = this.panelWorkingArea,
                                OnCancelAction  = CancelLoadingUsers,
                                ProgressEnabled = true
                            });
                        }
                        else
                        {
                            loadingPanel.NotifyStart("Loading users...");
                        }
                        workerReadIdentities.RunWorkerAsync();
                        return;
                    }

                    #region old

                    //                    Identity everyOneGroup = Context.SecurityService.ReadIdentity(SearchFactor.EveryoneApplicationGroup,
                    //                        null, QueryMembership.Direct);
                    //                    int usersCount = everyOneGroup.Members.Length;
                    //                    UIContext.Instance.ProgressBegin(usersCount, 1);
                    //
                    //                    try
                    //                    {
                    //                        this.cachedUsers = new List<Identity>();
                    //                        this.lvUsers.Groups.Clear();
                    //
                    //                        List<string> domains = new List<string>();
                    //
                    //                        Identity[] allIdentities = Context.SecurityService.ReadIdentities(SearchFactor.Sid,
                    //                            everyOneGroup.Members,
                    //                            QueryMembership.None);
                    //
                    //                        string selectedDomain = cmbDomains.SelectedItem as string;
                    //
                    //                        foreach (Identity identity in allIdentities)
                    //                        {
                    //                            if (identity != null && identity.Type == IdentityType.WindowsUser)
                    //                            {
                    //                                if (!domains.Contains(identity.Domain))
                    //                                {
                    //                                    domains.Add(identity.Domain);
                    //                                }
                    //
                    //                                if (selectedDomainIndex == 0 || Util.StrEqual(identity.Domain, selectedDomain, true))
                    //                                {
                    //                                    this.cachedUsers.Add(identity);
                    //                                    this.lvUsers.Groups.Add(identity.Domain, identity.Domain);
                    //                                }
                    //                            }
                    //
                    //                            UIContext.Instance.ProgressDoStep();
                    //                        }
                    //
                    //                        blockSelectedChange = true;
                    //                        try
                    //                        {
                    //                            cmbDomains.Items.Clear();
                    //                            cmbDomains.Items.Add(string.Empty);
                    //                            domains.ForEach(domain => cmbDomains.Items.Add(domain));
                    //
                    //                            cmbDomains.SelectedIndex = selectedDomainIndex;
                    //                        }
                    //                        finally
                    //                        {
                    //                            blockSelectedChange = false;
                    //                        }
                    //                    }
                    //                    finally
                    //                    {
                    //                        UIContext.Instance.ProgressEnd();
                    //                    }

                    #endregion old
                }

                if (resort)
                {
                    SortListData();
                }

                UIContext.Instance.ProgressBegin(this.cachedUsers.Count, 1);
                this.cachedUsers.ForEach(user =>
                {
                    ListViewItem viewItem = this.lvUsers.Items.Add(user.AccountName);
                    viewItem.ImageIndex   = 0;
                    viewItem.Tag          = user;
                    viewItem.SubItems.Add(user.DisplayName);
                    viewItem.SubItems.Add(user.Sid);
                    viewItem.SubItems.Add(user.MailAddress);
                    viewItem.SubItems.Add(user.Description);
                    viewItem.Group = this.lvUsers.Groups[user.Domain];

                    UIContext.Instance.ProgressDoStep();
                });
            }
            finally
            {
                this.lvUsers.EndUpdate();
                UIContext.Instance.ProgressEnd();
                RestoreSelectedItems();

                if (!firstTimeLoaded)
                {
                    firstTimeLoaded = true;
                }
            }
        }