diff options
author | Will Thompson <will@willthompson.co.uk> | 2011-03-20 23:33:56 +0000 |
---|---|---|
committer | Will Thompson <will@willthompson.co.uk> | 2011-03-20 23:52:04 +0000 |
commit | 1abbd0f4d9485dc1ab961bfc797cbc3bfe57763a (patch) | |
tree | da5392907ff677e4ecf22e506898d2d16a43408e | |
parent | a4887dfde52ecec290d4cb5fbd7971268c5bc47a (diff) |
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.
-rw-r--r-- | src/Extensions/Banshee.Emusic.Store/Banshee.Emusic.Store/StoreView.cs | 29 | ||||
-rw-r--r-- | src/Extensions/Banshee.Emusic.Store/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 4212e93f3..fab133e94 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 0d5c8e0c4..3017eebe9 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 (); + } + } } } |