Esempio n. 1
0
        private void HandleItem(MediaItem item)
        {
            var fileLength = item.Length;

            MediaItem prior = null;
            lock(_lengthItem)
            {
                if (_lengthItem.ContainsKey(fileLength))
                {
                    prior = _lengthItem[fileLength];
                }
                else
                {
                    _lengthItem[fileLength] = item;
                }
            }

            // If there's a possible match, calculate & compare signatures
            if (prior != null)
            {
                if (!prior.HasSignature)
                {
                    Interlocked.Increment(ref _primarySignaturesCalculated);
                    _signatures[prior.Signature] = prior;
                }

                Interlocked.Increment(ref _secondarySignaturesCalculated);
                if (_signatures.ContainsKey(item.Signature))
                {
                    Interlocked.Increment(ref _duplicatesRemoved);

                    var priorItem = _signatures[item.Signature];
                    if (!item.Identifier.Equals(prior.Identifier) || !item.CreatedDate.Equals(prior.CreatedDate))
                    {
                        Interlocked.Increment(ref _questionableDuplicates);
                    }
                    return;
                }
                else
                {
                    _signatures[item.Signature] = item;
                }
            }

            bool wasEmpty = false;
            lock (MediaList)
            {
                wasEmpty = MediaList.Count < 1;
                MediaList.Add(item);
            }

            if (wasEmpty && ItemsAvailable != null)
            {
                ItemsAvailable();
            }
        }
		private void ShowImage(MediaItem item)
		{
			Task.Factory.StartNew(() =>
				{
					try
					{
						object image = Viewer.LoadImage(item);
						PlatformService.InvokeOnUiThread(() =>
							{
								var message = Viewer.DisplayImage(image);
                                logger.Info("image {0}; {1}", item.Identifier, message);
							});
					}
					catch (Exception e)
					{
                        logger.Error("Error loading image '{0}': {1}", item.Identifier, e);
					}
				})
				.ContinueWith((a) =>
				{
					try
					{
                        var message = string.Format(" {0} ", Path.GetFileName(item.ParentDirectoryName));
						var location = item.GetLocation();
                        if (location != null)
                        {
                            var placeName = location.PlaceName(Location.PlaceNameFilter.Standard);
                            message = string.Format("{0}    {1}", message, placeName);
                        }

						PlatformService.InvokeOnUiThread(() => Viewer.DisplayInfo(message));
					}
					catch (Exception ex)
					{
                        logger.Error("Error loading info for {0}: {1}", item.Identifier, ex);
					}
				});
		}
Esempio n. 3
0
 public void AddItem(MediaItem item)
 {
     Queue.Enqueue(item);
 }
		public object LoadImage(MediaItem item)
		{
			using (var pool = new NSAutoreleasePool())
			{
                using (var stream = item.Stream())
                {
                    var data = NSData.FromStream(stream);
                    data.Retain();
                    return data;
                }
			}
		}