コード例 #1
0
 public void BeginSearch(DirectoryListFilter filter)
 {
     if (!engine.Active)
     {
         engine.BeginSearch(filter);
     }
 }
コード例 #2
0
 public void BeginSearch(DirectoryListFilter filter)
 {
     Abort         = false;
     Active        = true;
     this.filter   = filter;
     file_size_max = (ulong)filter.SizeMaximum;
     file_size_min = (ulong)filter.SizeMinimum;
     //Thread.Sleep(100);
     work_thread.Start();
 }
コード例 #3
0
        private void find_files(mFilePanel target_panel)
        {
            if (target_panel == null)
            {
                target_panel = doublePanel1.PanelActive;
            }

            DirectoryListFilterDialog filter_dialog = null;
            var filter = new DirectoryListFilter();

            filter.Load();

            if (doublePanel1.PanelActive.Source is DirectoryList)
            {
                filter.InCurrentDirectory            = true;
                filter.InCurrentDirectoryWithSubdirs = true;
                filter.CurrentDirectory = ((DirectoryList)doublePanel1.PanelActive.Source).DirectoryPath;
                filter.CurrentDrive     = Path.GetPathRoot(filter.CurrentDirectory);
            }

            filter_dialog      = new DirectoryListFilterDialog(true, filter);
            filter_dialog.Text = Options.GetLiteral(Options.LANG_FIND);
            if (filter_dialog.ShowDialog() == DialogResult.OK)
            {
                var result_dialog = new DirectorySearchResultDialog(filter_dialog.DirectoryListFilter);
                //result_dialog.BeginSearch(filter_dialog.DirectoryListFilter);
                if (result_dialog.ShowDialog() == DialogResult.OK)
                {
                    //go to...
                    var sel_file_name = result_dialog.SelectedResult;
                    if (string.IsNullOrEmpty(sel_file_name))
                    {
                        return;
                    }
                    var sel_dir  = Path.GetDirectoryName(sel_file_name);
                    var sel_file = Path.GetFileName(sel_file_name);
                    var dl       = new DirectoryList(target_panel.Source.SortCriteria, target_panel.Source.SortReverse, sel_dir);
                    target_panel.Source = dl;
                    dl.Refill();
                    var foc_index = dl.FindIndexOfName(sel_file);
                    if (foc_index != -1)
                    {
                        doublePanel1.PanelActive.FocusedIndex = foc_index;
                    }
                }
            }
        }
コード例 #4
0
        public DirectoryListFilterDialog(bool enable_location_dialog, DirectoryListFilter filter)
        {
            InitializeComponent();



            groupBox4.Enabled = enable_location_dialog;

            if (filter != null)
            {
                DirectoryListFilter = filter;
            }
            else
            {
                fill_defaults();
            }

            set_lang();
        }
コード例 #5
0
 public DirectorySearchResultDialog(DirectoryListFilter filter)
     : this()
 {
     BeginSearch(filter);
 }
コード例 #6
0
 public void BeginSearch(DirectoryListFilter filter)
 {
     engine.BeginSearch(filter);
 }
コード例 #7
0
        public override int[] FindItems()
        {
            //show filter and find within current collection
            DirectoryListFilterDialog filter_dialog = new DirectoryListFilterDialog();

            if (filter_dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                DirectoryListFilter filter       = filter_dialog.DirectoryListFilter;
                List <int>          retList      = new List <int>();
                WIN32_FIND_DATA     current_data = new WIN32_FIND_DATA();
                bool pass = true;

                for (int i = 0; i < ItemCount; i++)
                {
                    current_data = internal_list.Keys[i];
                    pass         = true;
                    for (int j = 0; j < filter.Masks.Length; j++)
                    {
                        if (!Wildcard.Match(filter.Masks[j], current_data.cFileName, false))
                        {
                            pass = false;
                            break;
                        }
                    }

                    if (!pass)
                    {
                        continue;
                    }

                    if ((!filter.IgnoreFileAttributes) && ((current_data.dwFileAttributes & filter.FileAttributes) == 0))
                    {
                        pass = false;
                        continue;
                    }

                    if (!filter.IgnoreSize)
                    {
                        switch (filter.FilterSizeCriteria)
                        {
                        case FilterSizeCriteria.Between:
                            if ((current_data.FileSize < (ulong)filter.SizeMinimum) || (current_data.FileSize > (ulong)filter.SizeMaximum))
                            {
                                pass = false;
                                continue;
                            }
                            break;

                        case FilterSizeCriteria.Equal:
                            if (current_data.FileSize != (ulong)filter.SizeMinimum)
                            {
                                pass = false;
                                continue;
                            }
                            break;

                        case FilterSizeCriteria.Greater:
                            if (current_data.FileSize <= (ulong)filter.SizeMinimum)
                            {
                                pass = false;
                                continue;
                            }
                            break;

                        case FilterSizeCriteria.GreaterOrEqual:
                            if (current_data.FileSize < (ulong)filter.SizeMinimum)
                            {
                                pass = false;
                                continue;
                            }
                            break;

                        case FilterSizeCriteria.Less:
                            if (current_data.FileSize >= (ulong)filter.SizeMinimum)
                            {
                                pass = false;
                                continue;
                            }
                            break;

                        case FilterSizeCriteria.LessOrEqual:
                            if (current_data.FileSize > (ulong)filter.SizeMinimum)
                            {
                                pass = false;
                                continue;
                            }
                            break;
                        }
                    }

                    if (!filter.IgnoreTimeAccess)
                    {
                        if ((current_data.ftLastAccessTime < filter.AccessBegin.ToFileTime()) || (current_data.ftLastAccessTime > filter.AccessEnd.ToFileTime()))
                        {
                            pass = false;
                            continue;
                        }
                    }

                    if (!filter.IgnoreTimeCreate)
                    {
                        if ((current_data.ftCreationTime < filter.CreateBegin.ToFileTime()) || (current_data.ftCreationTime > filter.CreateEnd.ToFileTime()))
                        {
                            pass = false;
                            continue;
                        }
                    }

                    if (!filter.IgnoreTimeModification)
                    {
                        if ((current_data.ftLastWriteTime < filter.ModificationBegin.ToFileTime()) || (current_data.ftLastWriteTime > filter.ModificationEnd.ToFileTime()))
                        {
                            pass = false;
                            continue;
                        }
                    }

                    //pass=true
                    if (pass)
                    {
                        retList.Add(i);
                    }
                }
                return(retList.ToArray());
            }
            else
            {
                return(new int[] { });
            }
        }