[banshee] Emusic.Store: Add a Signout link
- From: Gabriel Burt <gburt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [banshee] Emusic.Store: Add a Signout link
- Date: Fri, 8 Apr 2011 17:33:41 +0000 (UTC)
commit 6b8405bd44f4e41ed36ae107cab0c1942a4a80cf
Author: Will Thompson <will willthompson co uk>
Date: Sun Mar 20 23:33:56 2011 +0000
Emusic.Store: Add a Signout link
This works a little differently to the Amazon version: because we don't
have any other items in the menu, just hiding the item leaves us with an
empty menu in the UI.
If a similar page is added for eMusic, this could be made to work like
Amazon.
Signed-off-by: Gabriel Burt <gabriel burt gmail com>
.../Banshee.Emusic.Store/StoreView.cs | 29 ++++++++++++++++++++
.../Banshee.Emusic.Store/StoreWebBrowserShell.cs | 14 ++++++++-
2 files changed, 41 insertions(+), 2 deletions(-)
---
diff --git a/src/Extensions/Banshee.Emusic.Store/Banshee.Emusic.Store/StoreView.cs b/src/Extensions/Banshee.Emusic.Store/Banshee.Emusic.Store/StoreView.cs
index 4212e93..fab133e 100644
--- a/src/Extensions/Banshee.Emusic.Store/Banshee.Emusic.Store/StoreView.cs
+++ b/src/Extensions/Banshee.Emusic.Store/Banshee.Emusic.Store/StoreView.cs
@@ -52,6 +52,9 @@ namespace Banshee.Emusic.Store
public StoreView ()
{
CanSearch = true;
+ IsSignedIn = false;
+ OssiferSession.CookieChanged += (o, n) => CheckSignIn ();
+ CheckSignIn ();
FullReload ();
}
@@ -108,5 +111,31 @@ namespace Banshee.Emusic.Store
{
LoadUri ("http://integrated-services.banshee.fm/emusic/search/" + System.Uri.EscapeDataString(query));
}
+
+ public event EventHandler SignInChanged;
+ public bool IsSignedIn { get; private set; }
+
+ public void SignOut ()
+ {
+ LoadUri ("https://www.emusic.com/security/j_acegi_logout.html");
+ }
+
+ private void CheckSignIn ()
+ {
+ bool signed_in = OssiferSession.GetCookie ("EMUSIC_REMEMBER_ME_COOKIE", "www.emusic.com", "/") != null;
+
+ if (IsSignedIn != signed_in) {
+ IsSignedIn = signed_in;
+ OnSignInChanged ();
+ }
+ }
+
+ protected virtual void OnSignInChanged ()
+ {
+ var handler = SignInChanged;
+ if (handler != null) {
+ handler (this, EventArgs.Empty);
+ }
+ }
}
}
diff --git a/src/Extensions/Banshee.Emusic.Store/Banshee.Emusic.Store/StoreWebBrowserShell.cs b/src/Extensions/Banshee.Emusic.Store/Banshee.Emusic.Store/StoreWebBrowserShell.cs
index 0d5c8e0..3017eeb 100644
--- a/src/Extensions/Banshee.Emusic.Store/Banshee.Emusic.Store/StoreWebBrowserShell.cs
+++ b/src/Extensions/Banshee.Emusic.Store/Banshee.Emusic.Store/StoreWebBrowserShell.cs
@@ -44,10 +44,20 @@ namespace Banshee.Emusic.Store
SearchEntry.EmptyMessage = String.Format (Catalog.GetString ("Search eMusic"));
- // FIXME: add a â??sign outâ?? button, just as soon as someone figures
- // out how to detect being signed in.
+ store_view.SignInChanged += (o, a) => CheckSignedIn ();
+ CheckSignedIn ();
ShowAll ();
}
+
+ private void CheckSignedIn ()
+ {
+ if (StoreView.IsSignedIn) {
+ var signout = NavigationControl.AddLink (Catalog.GetString ("Sign Out of eMusic"), null);
+ signout.Activated += (o, a) => StoreView.SignOut ();
+ } else {
+ NavigationControl.ClearLinks ();
+ }
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]