/// <summary> /// Searches in _SourceFolderPath directory /// </summary> /// <param name="_SourceFolderPath"></param> /// <param name="query"></param> private void SearchInFolder(object odesc) { Descriptor desc = (Descriptor)odesc; var query = GetQuery(_QueryBitmap, desc); if (!String.IsNullOrEmpty(_SourceFolderPath) && query != null) { try { foreach (var file in (new DirectoryInfo(_SourceFolderPath)).GetFiles()) { bool comply = false; Gallery.ImageListViewItem ilvi = new Gallery.ImageListViewItem(file.FullName); //we need to clear the filename form the text property, and set it to picture title ilvi.Text = "Photo title: " + file.Name + Environment.NewLine; ilvi.Tag = new ImageInfo { PhotoID = file.FullName }; if (file.IsImage()) { foreach (Descriptor descriptor in Enum.GetValues(typeof(Descriptor))) { if (descriptor != Descriptor.NONE && (desc & descriptor) == descriptor) { double distance = DescriptorTools.CalculateDescriptorDistance(query[descriptor], DescriptorTools.CalculateDescriptor(file, descriptor), descriptor); //TODO: distance needs to be set per descriptor if (distance >= 0) { comply = true; //string tmpFileName = TempManager.GetTempFileName(); string tmpFileName = file.FullName; ((ImageInfo)ilvi.Tag).SetDescriptorDistance(descriptor, distance); GalleryEntryBuilder(new FileInfo(tmpFileName), ref ilvi, descriptor.ToString() + ": " + distance.ToString("F")); } } } // after all descriptors touched the file it goes to the gallery if it complies with the query parameters if (comply) { if (ilvGallery.InvokeRequired) { PopulateGalleryCallback d = new PopulateGalleryCallback(PopulateGallery); this.Invoke(d, new object[] { ilvi }); } else { ilvGallery.Items.Add(ilvi); } } } } } catch (UnauthorizedAccessException) { // again.. so what.. go go go! } } }
private void PopulateGallery(string path, FlickrNet.Photo photo) { try { FileInfo file = new FileInfo(path); if (file.IsImage()) { Gallery.ImageListViewItem ilvi = new Gallery.ImageListViewItem(); ilvi.FileName = file.FullName; ilvi.Tag = new ImageInfo { PhotoID = photo.PhotoId }; if (ilvGallery.InvokeRequired) { PopulateGalleryCallback d = new PopulateGalleryCallback(PopulateGallery); this.Invoke(d, new object[] { ilvi }); } else { ilvGallery.Items.Add(ilvi); } } } catch (UnauthorizedAccessException) { // so what ... go go go!!! :P } }