コード例 #1
0
        /// <summary>
        /// Обновляет статус папки ВРаботе. Асинхронно.
        /// </summary>
        /// <param name="recursive"></param>
        public void UpdateStatusBegin(bool recursive, EventHandler LoadComlete = null)
        {
            if (TreeView == null)
            {
                return;
            }

            var updateParams = new WorkFolderUpdateParams
            {
                Recursive = recursive,
                Font      = TreeView.Font
            };

            Task.Factory.StartNew(UpdateAsync, updateParams);

            if (recursive)
            {
                for (int i = 0; i < Nodes.Count; i++)
                {
                    var newNode = Nodes[i] as WorkFolderNode;

                    if (newNode != null)
                    {
                        newNode.UpdateStatusBegin(true);
                    }
                }
            }
            if (LoadComlete != null)
            {
                LoadComlete(this, EventArgs.Empty);
            }
        }
コード例 #2
0
 /// <summary>
 /// Обновляет статус папки ВРаботе. Асинхронно.
 /// </summary>
 /// <param name="updateParams"></param>
 private void UpdateStatusEnd(WorkFolderUpdateParams updateParams)
 {
     NodeFont = updateParams.Font;
     Text     = updateParams.Text;
     OnUpdateNode();
     if (updateParams.ExpandParent)
     {
         ExpandParent(updateParams.Recursive);
     }
 }
コード例 #3
0
        /// <summary>
        /// Получить данные. Асинхронно.
        /// </summary>
        /// <param name="param"></param>
        private void UpdateAsync(object param)
        {
            var updateParams = (WorkFolderUpdateParams)param;

            try
            {
                DataRow dr = Environment.WorkFolderData(ID, Emp.ID);

                if (dr == null)
                {
                    return;
                }

                var recursive = updateParams.Recursive;
                var font      = updateParams.Font;

                int    count    = dr[Environment.FolderData.UnreadField] is int?(int)dr[Environment.FolderData.UnreadField] : 0;
                int    countAll = dr[Environment.FolderData.AllDocsCountField] is int?(int)dr[Environment.FolderData.AllDocsCountField] : 0;
                string txt      = dr[Environment.FolderData.NameField] as string ?? name;

                var result = new WorkFolderUpdateParams();

                if (count > 0)
                {
                    result.Font         = updateParams.Font;
                    result.Text         = string.Concat(txt, " (", count.ToString(), "/", countAll.ToString(), ")");
                    result.ExpandParent = true;
                    result.Recursive    = recursive;
                }
                else
                {
                    result.Font = new Font(font, FontStyle.Regular);
                    result.Text = string.Concat(txt, " (", countAll.ToString(), ")");
                }

                this.UiThreadBeginInvoke(() =>
                {
                    UpdateStatusEnd(result);
                });
            }
            catch (Exception ex)
            {
                Lib.Win.Data.Env.WriteToLog(ex);
            }
        }