[banshee: 58/61] [InternetArchive] More improvements



commit c6a62b49e7c5cac4f1cc5aebd0ad4114daf5ee04
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Mon Nov 2 17:12:41 2009 -0800

    [InternetArchive] More improvements
    
    Add link in details to write your own review.  Hide the files list track
    column if all entries contain the track # in the track title column.
    Add some more useful example searches (speeches, children, poetry,
    Library of Congress). Add DateAdded column to search results list, add
    sort by Title option, and add Collections to details table.

 .../Banshee.InternetArchive/DetailsView.cs         |   22 ++++++++++++-----
 .../Banshee.InternetArchive/HeaderFilters.cs       |    3 +-
 .../Banshee.InternetArchive/HomeSource.cs          |    2 +-
 .../Banshee.InternetArchive/HomeView.cs            |   25 ++++++++++---------
 .../Banshee.InternetArchive/SearchSource.cs        |    2 +-
 .../Banshee.InternetArchive/SearchView.cs          |    3 +-
 .../InternetArchive/Details.cs                     |    4 +++
 .../InternetArchive/Field.cs                       |    1 +
 .../InternetArchive/SearchResult.cs                |   10 ++++++++
 9 files changed, 49 insertions(+), 23 deletions(-)
---
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/DetailsView.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/DetailsView.cs
index d5d5941..bebacb6 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/DetailsView.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/DetailsView.cs
@@ -199,7 +199,7 @@ namespace Banshee.InternetArchive
                 Markup = String.Format ("{0}", GLib.Markup.EscapeText (Hyena.StringUtil.RemoveHtml (details.Description)))
             };
 
-            var desc_exp = CreateSection (Catalog.GetString ("Description"), desc);
+            var desc_expander = CreateSection (Catalog.GetString ("Description"), desc);
 
             // Details
             var table = new Banshee.Gui.TrackEditor.StatisticsPage () {
@@ -238,13 +238,14 @@ namespace Banshee.InternetArchive
 
             AddToTable (table, Catalog.GetString ("Added:"),      details.DateAdded);
             AddToTable (table, Catalog.GetString ("Added by:"),   details.AddedBy);
+            AddToTable (table, Catalog.GetString ("Collections:"),   details.Collections);
             AddToTable (table, Catalog.GetString ("Source:"),     details.Source);
             AddToTable (table, Catalog.GetString ("Contributor:"), details.Contributor);
             AddToTable (table, Catalog.GetString ("Recorded by:"),details.Taper);
             AddToTable (table, Catalog.GetString ("Lineage:"),    details.Lineage);
             AddToTable (table, Catalog.GetString ("Transferred by:"), details.Transferer);
 
-            var expander = CreateSection (Catalog.GetString ("Details"), table);
+            var details_expander = CreateSection (Catalog.GetString ("Details"), table);
 
             // Reviews
             Section reviews = null;
@@ -305,14 +306,18 @@ namespace Banshee.InternetArchive
             }
 
             // Packing
-            vbox.PackStart (desc_exp, true, true,  0);
-            //vbox.PackStart (new HSeparator (), false, false,  6);
-            vbox.PackStart (expander, true, true,  0);
-            //vbox.PackStart (new HSeparator (), false, false,  6);
+            vbox.PackStart (desc_expander, true, true,  0);
+            vbox.PackStart (details_expander, true, true,  0);
             if (reviews != null) {
                 vbox.PackStart (reviews, true, true, 0);
             }
 
+            string write_review_url = String.Format ("http://www.archive.org/write-review.php?identifier={0}";, item.Id);
+            var write_review_button = new LinkButton (write_review_url, Catalog.GetString ("Write your own review"));
+            write_review_button.Clicked += (o, a) => Banshee.Web.Browser.Open (write_review_url);
+            write_review_button.Xalign = 0f;
+            vbox.PackStart (write_review_button, false, false, 0);
+
             var vbox2 = new VBox ();
             vbox2.PackStart (vbox, false, false, 0);
 
@@ -440,9 +445,12 @@ namespace Banshee.InternetArchive
             var sorted_formats = formats.Select (f => new { Format = f, Order = Math.Max (format_order.IndexOf (", " + f.ToLower () + ","), format_order.IndexOf (f.ToLower ())) })
                                         .OrderBy (o => o.Order == -1 ? Int32.MaxValue : o.Order);
 
+            // See if all the files contain their track #
+            bool all_tracks_have_num_in_title = tracks.All (t => t.TrackNumber == 0 || t.TrackTitle.Contains (t.TrackNumber.ToString ()));
+
             // Make these columns snugly fix their data
             if (tracks.Count > 0) {
-                SetWidth (columns.TrackColumn,    tracks.Max (f => f.TrackNumber), 0);
+                SetWidth (columns.TrackColumn,    all_tracks_have_num_in_title ? 0 : tracks.Max (f => f.TrackNumber), 0);
                 SetWidth (columns.FileSizeColumn, tracks.Max (f => f.FileSize), 0);
                 SetWidth (columns.DurationColumn, tracks.Max (f => f.Duration), TimeSpan.Zero);
             }
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HeaderFilters.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HeaderFilters.cs
index c52e4e9..593268a 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HeaderFilters.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HeaderFilters.cs
@@ -68,6 +68,7 @@ namespace Banshee.InternetArchive
 
             Spacing = 6;
 
+            PackStart (new Label () { Visible = true }, true, true, 0);
             BuildMediaTypeCombo ();
             BuildSortCombo ();
             BuildSearchEntry ();
@@ -171,7 +172,7 @@ namespace Banshee.InternetArchive
             PackStart (button, false, false, 0);
         }
 
-        private static IA.Sort [] sorts = { IA.Sort.DownloadsDesc, IA.Sort.WeekDesc, IA.Sort.DateCreatedDesc, IA.Sort.DateCreatedAsc, IA.Sort.DateAddedDesc, IA.Sort.AvgRatingDesc };
+        private static IA.Sort [] sorts = { IA.Sort.DownloadsDesc, IA.Sort.WeekDesc, IA.Sort.DateCreatedDesc, IA.Sort.DateCreatedAsc, IA.Sort.DateAddedDesc, IA.Sort.TitleAsc, IA.Sort.AvgRatingDesc };
 
         private void UpdateSearch ()
         {
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeSource.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeSource.cs
index 501418e..1a4c43e 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeSource.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeSource.cs
@@ -156,7 +156,7 @@ namespace Banshee.InternetArchive
 
         public static readonly SchemaEntry<string> TextTypes = new SchemaEntry<string> (
             "plugins.internetarchive", "text_types",
-            "Text PDF, Standard LuraTech PDF, Grayscale LuraTech PDF, ZIP, Text, Hypertext",
+            "Text PDF, Standard LuraTech PDF, Grayscale LuraTech PDF, Image Container PDF, ZIP, Text, Hypertext",
             "Ordered list of preferred mediatypes for text items", null);
 
 #endregion
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeView.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeView.cs
index f83de29..6b8da2d 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeView.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeView.cs
@@ -118,12 +118,16 @@ namespace Banshee.InternetArchive
                 new SearchDescription (Catalog.GetString ("Creative Commons"), "license:creativecommons", IA.Sort.DownloadsDesc, null),
                 new SearchDescription (Catalog.GetString ("History"), "subject:history", IA.Sort.DownloadsDesc, null),
                 new SearchDescription (Catalog.GetString ("Classic Cartoons"), "", IA.Sort.DateCreatedAsc, IA.MediaType.Get ("animationandcartoons")),
+                new SearchDescription (Catalog.GetString ("Speeches"), "subject:speeches OR title:speech", IA.Sort.DownloadsDesc, null),
+                new SearchDescription (Catalog.GetString ("For Children"), "subject:children", IA.Sort.DownloadsDesc, null),
+                new SearchDescription (Catalog.GetString ("Poetry"), "subject:poetry", IA.Sort.DownloadsDesc, null),
                 new SearchDescription (Catalog.GetString ("Creator is United States"), "creator:\"United States\"", IA.Sort.DownloadsDesc, null),
-                new SearchDescription (Catalog.GetString ("Oldest Movies"), "", IA.Sort.DateCreatedAsc, IA.MediaType.Get ("moviesandfilms")),
+                new SearchDescription (Catalog.GetString ("Old Movies"), "", IA.Sort.DateCreatedAsc, IA.MediaType.Get ("moviesandfilms")),
                 new SearchDescription (Catalog.GetString ("New From LibriVox"), "publisher:LibriVox", IA.Sort.DateAddedDesc, IA.MediaType.Get ("audio")),
-                new SearchDescription (Catalog.GetString ("Oldest Texts"), "", IA.Sort.DateCreatedAsc, IA.MediaType.Get ("texts")),
+                new SearchDescription (Catalog.GetString ("Old Texts"), "", IA.Sort.DateCreatedAsc, IA.MediaType.Get ("texts")),
                 new SearchDescription (Catalog.GetString ("Charlie Chaplin"), "\"Charlie Chaplin\"", IA.Sort.DownloadsDesc, null),
-                new SearchDescription (Catalog.GetString ("NASA"), "NASA", IA.Sort.DownloadsDesc, null)
+                new SearchDescription (Catalog.GetString ("NASA"), "NASA", IA.Sort.DownloadsDesc, null),
+                new SearchDescription (Catalog.GetString ("Library of Congress"), "creator:\"Library of Congress\"", IA.Sort.DownloadsDesc, null)
             };
 
             var examples = new FlowBox () { Spacing = 0 };
@@ -142,7 +146,7 @@ namespace Banshee.InternetArchive
                 Markup = Catalog.GetString ("The Internet Archive, a 501(c)(3) non-profit, is building a digital library of Internet sites and other cultural artifacts in digital form. Like a paper library, we provide free access to researchers, historians, scholars, and the general public.")
             };
 
-            var visit_button = new LinkButton ("http://archive.org/";, "Visit the Internet Archive online at archive.org");
+            var visit_button = new LinkButton ("http://archive.org/";, Catalog.GetString ("Visit the Internet Archive online at archive.org"));
             visit_button.Clicked += (o, a) => Banshee.Web.Browser.Open ("http://archive.org/";);
             visit_button.Xalign = 0f;
             var visit_box = new HBox ();
@@ -283,7 +287,10 @@ namespace Banshee.InternetArchive
             public string IconName { get; private set; }
 
             public Category (string media_type, string name, int count, string icon_name)
-                : base (name, null, IA.Sort.DownloadsDesc, IA.MediaType.Get (media_type))
+                : this (media_type, name, null, count, icon_name) {}
+
+            public Category (string media_type, string name, string query, int count, string icon_name)
+                : base (name, query, IA.Sort.DownloadsDesc, IA.MediaType.Get (media_type))
             {
                 Count = count;
                 IconName = icon_name;
@@ -297,18 +304,12 @@ namespace Banshee.InternetArchive
             var categories = new Category [] {
                 new Category ("audio_bookspoetry", Catalog.GetString ("Audiobooks"), 4300, "audio-x-generic"),
                 new Category ("movies", Catalog.GetString ("Movies"), 200000, "video-x-generic"),
-                new Category ("education", Catalog.GetString ("Lectures"), 1290, "x-office-presentation"),
+                new Category (null, Catalog.GetString ("Lectures"), "subject:ocw OR creator:university OR mediatype:education OR publisher:University", 1290, "x-office-presentation"),
                 new Category ("etree", Catalog.GetString ("Concerts"), 69000, "audio-x-generic"),
                 new Category ("texts", Catalog.GetString ("Books"), 1600000, "x-office-document")
             };
 
             foreach (var cat in categories.OrderBy (c => c.Name)) {
-                /*var tile = new Banshee.Widgets.Tile () {
-                    PrimaryText = cat.Name,
-                    SecondaryText = String.Format ("Over {0:N0} items", cat.Count),
-                    Pixbuf = IconThemeUtils.LoadIcon (cat.IconName, 22)
-                };*/
-
                 var this_cat = cat;
                 var tile = new ImageButton (cat.Name, cat.IconName) {
                     InnerPadding = 4
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchSource.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchSource.cs
index eefbd38..ec0195f 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchSource.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchSource.cs
@@ -171,7 +171,7 @@ namespace Banshee.InternetArchive
                 int count = model.Count;
                 if (total_results == 0) {
                     ThreadAssist.ProxyToMain (delegate {
-                        SetStatus (Catalog.GetString ("No matches. Try another search?"), false, false, "gtk-info");
+                        SetStatus (Catalog.GetString ("No matches."), false, false, "gtk-info");
                     });
                 } else {
                     ThreadAssist.ProxyToMain (ClearMessages);
diff --git a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchView.cs b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchView.cs
index b910b58..427a0a7 100644
--- a/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchView.cs
+++ b/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchView.cs
@@ -132,7 +132,8 @@ namespace Banshee.InternetArchive
                 Create ("Year",        Catalog.GetString ("Year"), 0.15, true, new ColumnCellPositiveInt (null, true, 4, 4) { CultureFormatted = false }),
                 Create ("Downloads",   Catalog.GetString ("Downloads"), 0.15, true, new ColumnCellPositiveInt (null, true, 2, 5)),
                 Create ("Format",      Catalog.GetString ("Formats"), 0.15, false, new ColumnCellText (null, true)),
-                Create ("LicenseUrl",  Catalog.GetString ("License"), 0.15, true, new ColumnCellCreativeCommons (null, true))
+                Create ("LicenseUrl",  Catalog.GetString ("License"), 0.15, true, new ColumnCellCreativeCommons (null, true)),
+                Create ("DateAdded",   Catalog.GetString ("Added"), 0.15, false, new ColumnCellDateTime (null, true) { Format = DateTimeFormat.ShortDate })
             };
 
             foreach (var col in cols) {
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/Details.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/Details.cs
index f4369c3..c85729d 100644
--- a/src/Extensions/Banshee.InternetArchive/InternetArchive/Details.cs
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/Details.cs
@@ -104,6 +104,10 @@ namespace InternetArchive
             get { return metadata.GetJoined ("transferer", ", "); }
         }
 
+        public string Collections {
+            get { return metadata.GetJoined ("collection", ", "); }
+        }
+
         public DateTime DateAdded {
             get { return GetMetadataDate ("addeddate"); }
         }
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/Field.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/Field.cs
index b6d2e4b..3811bc1 100644
--- a/src/Extensions/Banshee.InternetArchive/InternetArchive/Field.cs
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/Field.cs
@@ -62,6 +62,7 @@ namespace InternetArchive
         public static Field Collection = new Field ("collection", Catalog.GetString ("Collection"));
         public static Field Contributor= new Field ("contributor",Catalog.GetString ("Contributor"));
         public static Field Date       = new Field ("date",       Catalog.GetString ("Created"));
+        public static Field DateAdded  = new Field ("publicdate", Catalog.GetString ("Added"));
         public static Field Description= new Field ("description",Catalog.GetString ("Description"));
         public static Field Downloads  = new Field ("downloads",  Catalog.GetString ("Downloads"));
         public static Field Format     = new Field ("format",     Catalog.GetString ("Format"));
diff --git a/src/Extensions/Banshee.InternetArchive/InternetArchive/SearchResult.cs b/src/Extensions/Banshee.InternetArchive/InternetArchive/SearchResult.cs
index ac61cc1..50c7145 100644
--- a/src/Extensions/Banshee.InternetArchive/InternetArchive/SearchResult.cs
+++ b/src/Extensions/Banshee.InternetArchive/InternetArchive/SearchResult.cs
@@ -51,6 +51,10 @@ namespace InternetArchive
             get { return String.Format ("http://www.archive.org/details/{0}";, Id); }
         }
 
+        public DateTime DateAdded {
+            get { return GetDate (Field.DateAdded.Id); }
+        }
+
         public string Creator {
             get { return GetJoined (Field.Creator, ", ") ?? ""; }
         }
@@ -100,6 +104,12 @@ namespace InternetArchive
             return item.Get<T> (field.Id);
         }
 
+        public DateTime GetDate (string key)
+        {
+            DateTime ret;
+            return DateTime.TryParse (item.GetJoined (key, null), out ret) ? ret : DateTime.MinValue;
+        }
+
         public string GetJoined (Field field, string with)
         {
             return item.GetJoined (field.Id, with);



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