public void RefreshTraktActivity() { try { System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { TraktActivity.Clear(); TraktShouts.Clear(); }); JMMServerBinary.Contract_Trakt_Activity traktActivity = JMMServerVM.Instance.clientBinaryHTTP.GetTraktFriendInfo(20, false, true, false); if (traktActivity.HasTraktAccount) { string blankImageName = @"/Images/blankposter.png"; if (AppSettings.DashMetroImageType == DashboardMetroImageType.Fanart) { blankImageName = @"/Images/blankfanart.png"; } int numItems = 0; // first get all the shouts foreach (JMMServerBinary.Contract_Trakt_FriendActivity contractAct in traktActivity.TraktFriendActivity) { if (contractAct.ActivityAction == (int)TraktActivityAction.Shout) { if (contractAct.ActivityType == (int)TraktActivityType.Episode) { Trakt_ActivityShoutEpisodeVM shoutEp = new Trakt_ActivityShoutEpisodeVM(contractAct); TraktShoutTile tile = new TraktShoutTile() { ShowName = shoutEp.Shout.ShowTitle, ShowPicture = blankImageName, Details = shoutEp.Shout.EpisodeDescription + Environment.NewLine + shoutEp.Shout.Text, ShoutDateString = shoutEp.ActivityDateString, FriendName = shoutEp.User.Username, FriendPicture = blankImageName, OnlineShowPicture = shoutEp.Shout.OnlineImagePath, OnlineFriendPicture = shoutEp.User.Avatar, URL = shoutEp.Shout.Episode_Url, TileSize = "Large", Height = 100 }; TraktShouts.Add(tile); imagesToDownload.Add(tile); numItems = 1; } else { Trakt_ActivityShoutShowVM shoutShow = new Trakt_ActivityShoutShowVM(contractAct); TraktShoutTile tile = new TraktShoutTile() { ShowName = shoutShow.Shout.ShowTitle, ShowPicture = blankImageName, Details = shoutShow.Shout.Text, ShoutDateString = shoutShow.ActivityDateString, FriendName = shoutShow.User.Username, FriendPicture = blankImageName, URL = shoutShow.Shout.TraktShow.url, OnlineShowPicture = shoutShow.Shout.OnlineImagePath, OnlineFriendPicture = shoutShow.User.Avatar, TileSize = "Large", Height = 100 }; TraktShouts.Add(tile); imagesToDownload.Add(tile); numItems = 1; } } } if (TraktShouts.Count > 0) { System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { TraktActivity.Add(TraktShouts[0]); }); } traktActivity = JMMServerVM.Instance.clientBinaryHTTP.GetTraktFriendInfo(AppSettings.DashMetro_TraktActivity_Items + 1, false, false, true); foreach (JMMServerBinary.Contract_Trakt_FriendActivity contractAct in traktActivity.TraktFriendActivity) { if (numItems == AppSettings.DashMetro_TraktActivity_Items) { break; } if (contractAct.ActivityAction == (int)TraktActivityAction.Scrobble) { Trakt_ActivityScrobbleVM scrobble = new Trakt_ActivityScrobbleVM(contractAct); TraktActivityTile tile = new TraktActivityTile() { Scrobble = scrobble, ShowName = scrobble.Episode.ShowTitle, ShowPicture = blankImageName, EpisodeDetails = scrobble.Episode.EpisodeDescription, URL = scrobble.Episode.Episode_Url, FriendName = scrobble.User.Username, FriendPicture = blankImageName, TileSize = "Large", Height = 100 }; numItems++; System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { TraktActivity.Add(tile); }); imagesToDownload.Add(tile); } } } else { Trakt_SignupVM signup = new Trakt_SignupVM(); System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { TraktActivity.Add(signup); }); } OnFinishedProcess(new FinishedProcessEventArgs(DashboardMetroProcessType.TraktActivity)); } catch (Exception ex) { Utils.ShowErrorMessage(ex); } finally { } }
public void RefreshTraktFriends(bool traktScrobbles, bool traktShouts) { try { System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { TraktActivity.Clear(); }); JMMServerBinary.Contract_Trakt_Activity traktActivity = JMMServerVM.Instance.clientBinaryHTTP.GetTraktFriendInfo(AppSettings.Dash_TraktFriends_Items, AppSettings.Dash_TraktFriends_AnimeOnly, traktShouts, traktScrobbles); List <object> activity = new List <object>(); if (traktActivity.HasTraktAccount) { foreach (JMMServerBinary.Contract_Trakt_FriendFrequest contractFriend in traktActivity.TraktFriendRequests) { Trakt_FriendRequestVM req = new Trakt_FriendRequestVM(contractFriend); activity.Add(req); } foreach (JMMServerBinary.Contract_Trakt_FriendActivity contractAct in traktActivity.TraktFriendActivity) { if (contractAct.ActivityAction == (int)TraktActivityAction.Scrobble) { Trakt_ActivityScrobbleVM scrobble = new Trakt_ActivityScrobbleVM(contractAct); if (!string.IsNullOrEmpty(scrobble.UserFullImagePath) && !File.Exists(scrobble.UserFullImagePath)) { // re-download the friends avatar image try { System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { ImageDownloadRequest req = new ImageDownloadRequest(ImageEntityType.Trakt_ActivityScrobble, scrobble, true); MainWindow.imageHelper.DownloadImage(req); }); } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } } activity.Add(scrobble); } else if (contractAct.ActivityAction == (int)TraktActivityAction.Shout) { if (contractAct.ActivityType == (int)TraktActivityType.Episode) { Trakt_ActivityShoutEpisodeVM shoutEp = new Trakt_ActivityShoutEpisodeVM(contractAct); activity.Add(shoutEp); } else { Trakt_ActivityShoutShowVM shoutShow = new Trakt_ActivityShoutShowVM(contractAct); activity.Add(shoutShow); } } } foreach (JMMServerBinary.Contract_Trakt_Friend contract in traktActivity.TraktFriends) { if (contract.WatchedEpisodes != null && contract.WatchedEpisodes.Count > 0) { Trakt_FriendVM friend = new Trakt_FriendVM(contract); activity.Add(friend); } } } else { Trakt_SignupVM signup = new Trakt_SignupVM(); activity.Add(signup); } System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { foreach (object act in activity) { TraktActivity.Add(act); } ViewTraktActivity.Refresh(); }); } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } finally { } }