[f-spot/taglib-metadata: 7/9] Pull date handling out of Imaging.



commit 2f46730d7292ca0cf4fd4b9610a6f180c296de00
Author: Ruben Vermeersch <ruben savanne be>
Date:   Sat Jun 12 13:52:49 2010 +0200

    Pull date handling out of Imaging.
    
    Also move PhotoStore creating to a model that uses IBrowsableItem.

 src/FileBrowsableItem.cs |   17 +++++++++++++----
 src/Imaging/Ciff.cs      |   14 --------------
 src/Imaging/ImageFile.cs |    9 ---------
 src/Imaging/JpegFile.cs  |    7 -------
 src/Imaging/MrwFile.cs   |   12 ------------
 src/Imaging/PngFile.cs   |   15 ---------------
 src/Imaging/Tiff.cs      |   21 ---------------------
 7 files changed, 13 insertions(+), 82 deletions(-)
---
diff --git a/src/FileBrowsableItem.cs b/src/FileBrowsableItem.cs
index f4aa3dc..be92366 100644
--- a/src/FileBrowsableItem.cs
+++ b/src/FileBrowsableItem.cs
@@ -16,6 +16,7 @@ using System.Xml;
 
 using Hyena;
 using FSpot.Utils;
+using Mono.Unix.Native;
 
 namespace FSpot {
 	public class FileBrowsableItem : IBrowsableItem
@@ -34,10 +35,11 @@ namespace FSpot {
 			if (metadata_parsed)
 				return;
 
-			using (var img = ImageFile.Create (DefaultVersion.Uri)) {
-				time = img.Date;
-				description = img.Description;
-			}
+            var res = new GIOTagLibFileAbstraction () { Uri = DefaultVersion.Uri };
+            var metadata_file = TagLib.File.Create (res) as TagLib.Image.File;
+            var date = metadata_file.ImageTag.DateTime;
+            time = date.HasValue ? date.Value : CreateDate;
+            description = metadata_file.ImageTag.Comment;
 
 			metadata_parsed = true;
 		}
@@ -56,6 +58,13 @@ namespace FSpot {
 			}
 		}
 
+        private DateTime CreateDate {
+            get {
+                var info = GLib.FileFactory.NewForUri (DefaultVersion.Uri).QueryInfo ("time::created", GLib.FileQueryInfoFlags.None, null);
+                return NativeConvert.ToDateTime ((long)info.GetAttributeULong ("time::created"));
+            }
+        }
+
 		public IBrowsableItemVersion DefaultVersion { get; private set; }
 
 		private string description;
diff --git a/src/Imaging/Ciff.cs b/src/Imaging/Ciff.cs
index 66425f6..97994ba 100644
--- a/src/Imaging/Ciff.cs
+++ b/src/Imaging/Ciff.cs
@@ -432,20 +432,6 @@ namespace FSpot.Ciff {
 			return orientation;
 		}
 
-		public override System.DateTime Date {
-			get {
-				ImageDirectory props = Root.ReadDirectory (Tag.ImageProps);
-				byte [] date = props.ReadEntry (Tag.TimeStamp);
-
-				if (date == null) {
-					Log.Debug ("NO DATE");
-					return base.Date;
-				}
-
-				return new CaptureTime (date, little).LocalTime;
-			}
-		}
-
 		public override System.IO.Stream PixbufStream ()
 		{
 			byte [] data = GetEmbeddedJpeg ();
diff --git a/src/Imaging/ImageFile.cs b/src/Imaging/ImageFile.cs
index c44b9c9..e0514e1 100644
--- a/src/Imaging/ImageFile.cs
+++ b/src/Imaging/ImageFile.cs
@@ -168,15 +168,6 @@ namespace FSpot {
 			return null;
 		}
 		
-		public virtual System.DateTime Date 
-		{
-			get {
-				GFileInfo info = GLib.FileFactory.NewForUri (uri).QueryInfo ("time::modified", GLib.FileQueryInfoFlags.None, null);
-				DateTime create = NativeConvert.ToDateTime ((long)info.GetAttributeULong ("time::modified"));
-				return create;
-			}
-		}
-
 		public static bool HasLoader (SafeUri uri)
 		{
 			return GetLoaderType (uri) != null;
diff --git a/src/Imaging/JpegFile.cs b/src/Imaging/JpegFile.cs
index b187e8d..5a7d8e6 100644
--- a/src/Imaging/JpegFile.cs
+++ b/src/Imaging/JpegFile.cs
@@ -183,12 +183,5 @@ namespace FSpot {
             metadata_file.ImageTag.DateTime = time;
 		}
 
-		public override System.DateTime Date {
-			get {
-                var date = metadata_file.ImageTag.DateTime;
-                return date.HasValue ? date.Value : base.Date;
-			}
-		}
-
 	}
 }
diff --git a/src/Imaging/MrwFile.cs b/src/Imaging/MrwFile.cs
index df334aa..edc71d5 100644
--- a/src/Imaging/MrwFile.cs
+++ b/src/Imaging/MrwFile.cs
@@ -192,18 +192,6 @@ namespace FSpot.Mrw {
 			}
 		}
 
-		public override System.DateTime Date
-		{
-			get {
-				DirectoryEntry e = this.Header.Directory.Lookup (TagId.DateTime);
-				
-				if (e != null)
-					return DirectoryEntry.DateTimeFromString (e.StringValue);
-				else
-					return base.Date;
-			}
-		}
-		
 		public void Select (SemWeb.StatementSink sink)
 		{
 			this.Header.Select (sink);
diff --git a/src/Imaging/PngFile.cs b/src/Imaging/PngFile.cs
index cc64eec..be87c09 100644
--- a/src/Imaging/PngFile.cs
+++ b/src/Imaging/PngFile.cs
@@ -1375,20 +1375,5 @@ namespace FSpot.Png {
 			}
 			Header.Insert (itext);
 		}
-
-		public override System.DateTime Date {
-			get {
-				// FIXME: we should first try parsing the
-				// LookupText ("Creation Time") as a valid date
-
-				foreach (Chunk chunk in Chunks) {
-					TimeChunk time = chunk as TimeChunk;
-					if (time != null)
-						return time.Time;
-				}
-				return base.Date;
-			}
-		}
-		
 	}
 }
diff --git a/src/Imaging/Tiff.cs b/src/Imaging/Tiff.cs
index 2d8e22e..e7df951 100644
--- a/src/Imaging/Tiff.cs
+++ b/src/Imaging/Tiff.cs
@@ -2035,27 +2035,6 @@ namespace FSpot.Tiff {
 			Header.SelectDirectory (Header.Directory, sink);
 		}
 
-		public override System.DateTime Date {
-			get {
-				SubdirectoryEntry sub = (SubdirectoryEntry) this.Header.Directory.Lookup (TagId.ExifIfdPointer);
-				DirectoryEntry e;
-
-				if (sub != null) {
-					e = sub.Directory [0].Lookup (TagId.DateTimeOriginal);
-					
-					if (e != null)
-						return DirectoryEntry.DateTimeFromString (e.StringValue);
-				}
-
-				e = this.Header.Directory.Lookup (TagId.DateTime);
-
-				if (e != null)
-					return DirectoryEntry.DateTimeFromString (e.StringValue);
-				else
-					return base.Date;
-			}
-		}
-		
 		public override PixbufOrientation GetOrientation ()
 		{
 			ShortEntry e = (ShortEntry)(this.Header.Directory.Lookup (TagId.Orientation));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]