[banshee/amazon] Clean up Amazon cruft, improve pane UI
- From: Gabriel Burt <gburt src gnome org>
- To: svn-commits-list gnome org
- Subject: [banshee/amazon] Clean up Amazon cruft, improve pane UI
- Date: Fri, 8 May 2009 19:39:50 -0400 (EDT)
commit 038e024767eab0200d78b277104d01a772ea4ae3
Author: Gabriel Burt <gabriel burt gmail com>
Date: Fri May 8 16:34:51 2009 -0500
Clean up Amazon cruft, improve pane UI
---
.../Banshee.Amazon/Banshee.Amazon/AmazonPane.cs | 125 +++++++++-----------
.../Banshee.Amazon/Banshee.Amazon/AmazonUtils.cs | 4 +-
2 files changed, 57 insertions(+), 72 deletions(-)
diff --git a/src/Extensions/Banshee.Amazon/Banshee.Amazon/AmazonPane.cs b/src/Extensions/Banshee.Amazon/Banshee.Amazon/AmazonPane.cs
index 73805e1..c811633 100644
--- a/src/Extensions/Banshee.Amazon/Banshee.Amazon/AmazonPane.cs
+++ b/src/Extensions/Banshee.Amazon/Banshee.Amazon/AmazonPane.cs
@@ -14,6 +14,9 @@ using Banshee.Collection;
using Banshee.ServiceStack;
using AMZN = Amazon.ECS.Model;
+// Note: As of 2009-05-08, the Amazon API doesn't let you add mp3 tracks or albums to the cart
+// See http://developer.amazonwebservices.com/connect/thread.jspa?messageID=121497𝪙
+
namespace Banshee.Amazon
{
public class AmazonPane : ContextPanePage
@@ -47,34 +50,42 @@ namespace Banshee.Amazon
public class AmazonRecs : HBox
{
- AMZN.Cart cart;
-
TitledList album_box;
VBox album_list;
Gtk.ScrolledWindow album_sw;
+ Viewport album_vp;
TitledList track_box;
VBox track_list;
Gtk.ScrolledWindow track_sw;
+ Viewport track_vp;
public AmazonRecs ()
{
+ BorderWidth = 5;
+
album_box = new TitledList ("Top Albums");
album_box.TitleWidthChars = 35;
- album_box.SizeAllocated += OnSideSizeAllocated;
album_list = new VBox ();
+ album_vp = new Gtk.Viewport ();
+ album_vp. ShadowType = ShadowType.None;
album_sw = new Gtk.ScrolledWindow ();
album_sw.SetPolicy (PolicyType.Never, PolicyType.Automatic);
- album_sw.AddWithViewport (album_box);
+ album_sw.ShadowType = ShadowType.None;
+ album_vp.Add (album_box);
+ album_sw.Add (album_vp);
album_box.PackStart (album_list, false, false, 0);
track_box = new TitledList ("Top Tracks");
- track_box.SizeAllocated += OnSideSizeAllocated;
track_box.TitleWidthChars = 35;
track_list = new VBox ();
+ track_vp = new Gtk.Viewport ();
+ track_vp. ShadowType = ShadowType.None;
track_sw = new Gtk.ScrolledWindow ();
+ track_sw.ShadowType = ShadowType.None;
track_sw.SetPolicy (PolicyType.Never, PolicyType.Automatic);
- track_sw.AddWithViewport (track_box);
+ track_vp.Add (track_box);
+ track_sw.Add (track_vp);
track_box.PackStart (track_list, true, true, 0);
PackStart (album_sw, true, true, 5);
@@ -84,16 +95,11 @@ namespace Banshee.Amazon
ShowAll ();
}
- private void OnSideSizeAllocated (object o, SizeAllocatedArgs args)
- {
- //SetSizeRequest (-1, args.Allocation.Height + (Allocation.Height - args.Allocation.Height));
- }
-
protected override void OnStyleSet (Style previous_style)
{
base.OnStyleSet (previous_style);
- album_sw.ModifyBg (StateType.Normal, Style.Base (StateType.Normal));
- track_sw.ModifyBg (StateType.Normal, Style.Base (StateType.Normal));
+ album_vp.ModifyBg (StateType.Normal, Style.Base (StateType.Normal));
+ track_vp.ModifyBg (StateType.Normal, Style.Base (StateType.Normal));
}
string last_artist;
@@ -105,7 +111,6 @@ namespace Banshee.Amazon
last_artist = track.ArtistName;
var albums = AmazonUtils.FindItems (track.ArtistName, true, false);
var tracks = AmazonUtils.FindItems (track.ArtistName, true, true);
- Hyena.Log.DebugFormat ("Got amazon items for {0}", track.ArtistName);
Banshee.Base.ThreadAssist.ProxyToMain (delegate {
while (album_list.Children.Length > 0)
@@ -113,8 +118,7 @@ namespace Banshee.Amazon
album_box.Title = String.Format (Catalog.GetString ("Top Albums by {0}"), track.ArtistName);
foreach (var item in albums) {
- Console.WriteLine ("Got item {0}", item.ItemAttributes.Title);
- album_list.PackEnd (CreateItemWidget (item), false, false, 0);
+ album_list.PackEnd (CreateItemWidget (item, true), false, false, 0);
}
while (track_list.Children.Length > 0)
@@ -122,79 +126,58 @@ namespace Banshee.Amazon
track_box.Title = String.Format (Catalog.GetString ("Top Tracks by {0}"), track.ArtistName);
foreach (var item in tracks) {
- Console.WriteLine ("Got item {0}", item.ItemAttributes.Title);
- track_list.PackEnd (CreateItemWidget (item), false, false, 0);
+ track_list.PackEnd (CreateItemWidget (item, false), false, false, 0);
}
ShowAll ();
});
}
- private Widget CreateItemWidget (AMZN.Item item)
+ private Widget CreateItemWidget (AMZN.Item item, bool isAlbum)
{
- var label = new Label ();
- label.Xalign = 0;
- label.Ellipsize = Pango.EllipsizeMode.End;
- label.Markup = String.Format ("{0} ({1})", item.ItemAttributes.Title, item.OfferSummary.LowestNewPrice.FormattedPrice);
+ string artist = null;
+ try { artist = item.ItemAttributes.Artist[0]; } catch {}
+ if (artist == null) try { artist = item.ItemAttributes.Author[0]; } catch {}
- //var play_btn = new Button (new Image (Banshee.Gui.IconThemeUtils.LoadIcon ("media-playback-start", 16))) { Relief = ReliefStyle.None };
- //var add_btn = new Button (new Image (Banshee.Gui.IconThemeUtils.LoadIcon (Stock.Add, 16))) { Relief = ReliefStyle.None };
+ var label = new Label () {
+ Xalign = 0,
+ Ellipsize = Pango.EllipsizeMode.End
+ };
- var hbox = new HBox ();
- hbox.Spacing = 5;
- hbox.PackStart (label, true, true, 0);
- //hbox.PackStart (add_btn, false, false, 0);
- //hbox.PackStart (play_btn, false, false, 0);
+ string title = item.ItemAttributes.Title;
- var widget = new MenuButton (hbox, CreateMenu (item), true);
- widget.Name = item.ItemAttributes.Title;
- widget.CanFocus = true;
+ if (isAlbum) {
+ string year = null;
+ try { year = item.ItemAttributes.ReleaseDate.Substring (0, 4); } catch {}
+ label.Text = year == null ? title : String.Format ("{0} ({1})", title, year);
+ } else {
+ label.Text = title;
+ }
- return widget;
- }
+ // Price
+ var price = new Label (item.OfferSummary.LowestNewPrice.FormattedPrice);
+ price.Xalign = 1.0f;
- private Menu CreateMenu (AMZN.Item item)
- {
- //asin = "B001RTP3YQ";
- //asin = "B0012EJVIA"; // mp3 album
- string asin = item.ASIN;
- Menu menu = new Menu ();
-
- var goto_details = new ImageMenuItem (Catalog.GetString ("Buy on Amazon..."));
- goto_details.Image = new Image (Stock.JumpTo, IconSize.Menu);
- goto_details.Activated += (o, a) => {
- Banshee.Web.Browser.Open (item.DetailPageURL, true);
- };
-
- var queue_preview = new ImageMenuItem (Catalog.GetString ("Play Preview"));
- queue_preview.Image = new Image (Banshee.Gui.IconThemeUtils.LoadIcon ("media-playback-start", (int)IconSize.Menu));
- queue_preview.Activated += (o, a) => {
+ var play = new Button (new Image (Banshee.Gui.IconThemeUtils.LoadIcon ("media-playback-start", (int)IconSize.Button))) { Relief = ReliefStyle.None };
+ play.TooltipText = Catalog.GetString ("Play Preview");
+ play.Clicked += (o, a) => {
new AmazonPreviewTrackInfo (item).Play ();
};
- var add_to_cart = new ImageMenuItem (Catalog.GetString ("Add to Cart"));
- add_to_cart.Image = new Image (Stock.Add, IconSize.Menu);
- add_to_cart.Activated += (o, a) => {
- Console.WriteLine ("Got add to cart for asin {0}", asin);
- if (cart == null) {
- cart = AmazonUtils.CreateCart (asin);
- } else {
- AmazonUtils.AddToCart (cart, asin);
- }
-
- Console.WriteLine ("Have cart purchaseURL = {0}", cart.PurchaseURL);
+ var go = new Button (new Image (Stock.JumpTo, IconSize.Button)) { Relief = ReliefStyle.None };
+ go.TooltipText = Catalog.GetString ("Buy on Amazon...");
+ go.Clicked += (o, a) => {
+ Banshee.Web.Browser.Open (item.DetailPageURL, true);
};
- menu.Append (goto_details);
- menu.Append (queue_preview);
+ var hbox = new HBox ();
+ hbox.Spacing = 2;
+ hbox.PackStart (label, true, true, 0);
+ hbox.PackStart (price, false, false, 0);
+ hbox.PackStart (play, false, false, 0);
+ hbox.PackStart (go, false, false, 0);
- // Unfortunately, the Amazon API doesn't let you add mp3 tracks or albums to the cart
- // See http://developer.amazonwebservices.com/connect/thread.jspa?messageID=121497𝪙
- if (item.ItemAttributes.Binding != "MP3 Download") {
- menu.Append (add_to_cart);
- }
- menu.ShowAll ();
- return menu;
+ return hbox;
}
}
}
diff --git a/src/Extensions/Banshee.Amazon/Banshee.Amazon/AmazonUtils.cs b/src/Extensions/Banshee.Amazon/Banshee.Amazon/AmazonUtils.cs
index 4f0ffa3..883931c 100644
--- a/src/Extensions/Banshee.Amazon/Banshee.Amazon/AmazonUtils.cs
+++ b/src/Extensions/Banshee.Amazon/Banshee.Amazon/AmazonUtils.cs
@@ -47,10 +47,12 @@ namespace Banshee.Amazon
request.WithSort ("salesrank");
//request.WithSort ("relevancerank");
request.WithResponseGroup ("Large", "VariationOffers", "Offers", "ItemAttributes", "Tags", "Images", "Reviews", "AlternateVersions", "Tracks", "Variations", "Similarities");
+ //request.WithResponseGroup ("Offers", "ItemAttributes", "Images", "Reviews", "Tracks", "Variations", "Similarities");
+ //request.WithResponseGroup ("Offers", "ItemAttributes", "Images", "Reviews", "Tracks", "Variations");
try {
ItemSearchResponse response = service.ItemSearch (request);
- System.IO.File.WriteAllText (String.Format ("amazon-{0}-search.xml", artist), response.ToXML ());
+ System.IO.File.WriteAllText (String.Format ("amazon-{0}-{1}-search.xml", artist, returnTracks ? "tracks" : "albums"), response.ToXML ());
return response.Items[0].Item;
} catch (AmazonECSException e) {
Hyena.Log.Exception (e);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]