private void OnGroupPhotosReturned(object sender, GetGroupPhotosEventArgs e)
        {
            if (!Cinderella.CinderellaCore.GroupCache.ContainsKey(e.GroupId))
                return;

            FlickrGroup group = Cinderella.CinderellaCore.GroupCache[e.GroupId];

            JObject rawJson = JObject.Parse(e.Response);
            JObject rootJson = (JObject)rawJson["photos"];
            int TotalCount = int.Parse(rootJson["total"].ToString());
            int page = int.Parse(rootJson["page"].ToString());
            int numPages = int.Parse(rootJson["pages"].ToString());
            int perPage = int.Parse(rootJson["perpage"].ToString());

            List<Photo> newPhotos = new List<Photo>();
            foreach (var entry in rootJson["photo"])
            {
                JObject json = (JObject)entry;
                Photo photo = PhotoFactory.PhotoWithJObject(json);

                if (!group.Photos.Contains(photo))
                {
                    group.Photos.Add(photo);
                    newPhotos.Add(photo);
                }
            }

            // Dispatch event
            GroupPhotoListUpdatedEventArgs evt = new GroupPhotoListUpdatedEventArgs();
            evt.GroupId = group.ResourceId;
            evt.Page = page;
            evt.PageCount = numPages;
            evt.PerPage = perPage;
            evt.NewPhotos = newPhotos;
            GroupPhotoListUpdated.DispatchEvent(this, evt);
        }
        // Photo stream updated
        private void OnPhotoStreamUpdated(object sender, GroupPhotoListUpdatedEventArgs e)
        {
            Dispatcher.BeginInvoke(() => {
                if (e.GroupId != Group.ResourceId)
                    return;

                StatusLabel.Visibility = Visibility.Collapsed;
                PhotoStreamListView.Visibility = Visibility.Visible;

                if (e.NewPhotos.Count == 0)
                    return;

                if (e.Page == 1)
                    PhotoCollection.Clear();

                List<PhotoGroup> newGroups = rendererFactory.GeneratePhotoGroups(e.NewPhotos);
                foreach (var group in newGroups)
                {
                    PhotoCollection.Add(group);
                }

                if (PhotoCollection.Count == 0)
                {
                    StatusLabel.Text = AppResources.GenericNoContentFound;
                    StatusLabel.Visibility = Visibility.Collapsed;
                    PhotoStreamListView.Visibility = Visibility.Visible;
                }

            });
        }
 private void OnPhotoListUpdated(object sender, GroupPhotoListUpdatedEventArgs e)
 {
     Dispatcher.BeginInvoke(() =>
     {
         if (e.GroupId == GroupSource.ResourceId)
             if (SystemTray.ProgressIndicator != null)
                 SystemTray.ProgressIndicator.IsVisible = false;
     });
 }