コード例 #1
0
        public void AddFile(IEnumerable <string> data)
        {
            try
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new Action <IEnumerable <string> >(this.AddFile), data);
                }
                else
                {
                    this.ctlList.BeginUpdate();

                    lock (this.m_lock)
                    {
                        Debug.WriteLine("AddFile Lock");

                        var lst = new List <string>();

                        foreach (var path in data)
                        {
                            if (KisboMain.Check(path) && !this.m_list.Exists(e => e.OriginalFilePath.Equals(path, StringComparison.OrdinalIgnoreCase)))
                            {
                                lst.Add(path);
                            }
                        }

                        for (int i = 0; i < lst.Count; ++i)
                        {
                            KisboFile.Create(this, lst[i]);
                        }

                        if (lst.Count > 0)
                        {
                            this.m_newItemHandler.Set();
                        }

                        Interlocked.Add(ref this.m_taskbarMax, lst.Count);

                        Debug.WriteLine("AddFile Unlock");
                    }

                    this.ctlList.EndUpdate();

                    this.SetProgress();
                }
            }
            catch
            {
            }
        }
コード例 #2
0
        private bool GetFiles(IList <string> lst, string path, bool?containsSubdir = null)
        {
            int i = 0;

            string[] paths;

            paths = Directory.GetFiles(path);
            for (i = 0; i < paths.Length; ++i)
            {
                if (KisboMain.Check(paths[i]))
                {
                    lst.Add(paths[i]);
                    if (lst.Count > 100)
                    {
                        return(false);
                    }
                }
            }

            if (!containsSubdir.HasValue || !containsSubdir.Value)
            {
                paths = Directory.GetDirectories(path);

                // contains subitem
                if (!containsSubdir.HasValue && Directory.GetDirectories(this.ctlOpenDir.SelectedPath).Length > 0)
                {
                    containsSubdir = ShowMessageBox("하위 폴더들도 추가할까요?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes;
                }

                if (!containsSubdir.Value)
                {
                    return(true);
                }

                for (i = 0; i < path.Length; ++i)
                {
                    if (!GetFiles(lst, paths[i], containsSubdir))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
コード例 #3
0
 private void ctlList_DragEnter(object sender, DragEventArgs e)
 {
     if (e.Data.GetDataPresent(DataFormats.FileDrop))
     {
         var files = e.Data.GetData(DataFormats.FileDrop) as string[];
         if (files != null)
         {
             for (int i = 0; i < files.Length; ++i)
             {
                 if (KisboMain.Check(files[i]))
                 {
                     e.Effect = DragDropEffects.All;
                     return;
                 }
             }
         }
     }
 }
コード例 #4
0
        private void ctlAddFile_Click(object sender, EventArgs e)
        {
            if (this.ctlOpenFile.ShowDialog() == DialogResult.OK)
            {
                var lst = new List <string>();
                for (int i = 0; i < this.ctlOpenFile.FileNames.Length; ++i)
                {
                    if (KisboMain.Check(this.ctlOpenFile.FileNames[i]))
                    {
                        lst.Add(this.ctlOpenFile.FileNames[i]);
                    }
                }

                if (lst.Count > 100)
                {
                    ShowMessageBox("파일 수가 너무 많습니다!\n한번에 100개 이하씩 추가해주세요", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else if (lst.Count > 0)
                {
                    this.AddFile(lst.ToArray());
                }
            }
        }