public int Add(CFolder cf)
 {
     return(List.Add(cf));
 }
        public int Add(string name)
        {
            CFolder cf = new CFolder(name);

            return(List.Add(cf));
        }
 public long Add2(CFolder cf)
 {
     List.Add(cf);
     return(cf.Size);
 }
        private void Search()
        {
            try
            {
                string[] kws = GetKeywords(Keyword);

                switch (SP.ST)
                {
                case SearchType.Root:
                {
                    for (int i = 0; i < Root.Collection.Count; i++)
                    {
                        ArrayList temp1 = new ArrayList();
                        temp1.Add(i);
                        for (int j = 0; j < Root.Collection[i].Count; j++)
                        {
                            ArrayList temp2 = (ArrayList)temp1.Clone();
                            temp2.Add(j);
                            OnSearchResultItemAdd(null, new SearchResultItemEventArgs(new SearchResultItem(MatchKeyword(kws, Root.Collection[i][j].Name.ToLower()), temp2, true)));
                            SearchFolder(temp2, Root.Collection[i][j].Folders, Root.Collection[i][j].Files, kws);
                        }
                    }
                }
                break;

                case SearchType.Collection:
                {
                    int index = int.Parse(SP.Position[1].ToString());
                    for (int j = 0; j < Root.Collection[index].Count; j++)
                    {
                        ArrayList temp = (ArrayList)SP.Position.Clone();
                        temp.Add(j);
                        OnSearchResultItemAdd(null, new SearchResultItemEventArgs(new SearchResultItem(MatchKeyword(kws, Root.Collection[index][j].Name.ToLower()), temp, true)));
                        SearchFolder(temp, Root.Collection[index][j].Folders, Root.Collection[index][j].Files, kws);
                    }
                }
                break;

                default:
                {
                    int       index1 = int.Parse(SP.Position[1].ToString());
                    int       index2 = int.Parse(SP.Position[2].ToString());
                    ArrayList temp   = new ArrayList();

                    for (int k = 0; k < SP.Position.Count; k++)
                    {
                        temp.Add(SP.Position[k]);
                    }

                    temp.RemoveAt(0);
                    temp.RemoveAt(0);
                    temp.RemoveAt(0);
                    CFolder folder = Root.Collection[index1][index2];
                    for (int i = 0; i < temp.Count; i++)
                    {
                        folder = folder.Folders[(int)temp[i]];
                    }

                    SearchFolder(SP.Position, folder.Folders, folder.Files, kws);
                }
                break;
                }

                OnSearchFinished(this, new EventArgs());
            }
            catch { }
        }