private void OnGroupSearchReturned(object sender, GroupSearchEventArgs e)
        {
            JObject json = JObject.Parse(e.Response);
            JObject groupJson = (JObject)json["groups"];

            int page = int.Parse(groupJson["page"].ToString());
            int perPage = int.Parse(groupJson["perpage"].ToString());
            int numTotal = int.Parse(groupJson["total"].ToString());

            List<FlickrGroup> groups = new List<FlickrGroup>();
            foreach (var js in groupJson["group"])
            {
                FlickrGroup group = FlickrGroupFactory.GroupWithJObject((JObject)js);
                groups.Add(group);
            }

            GroupSearchResultEventArgs evt = new GroupSearchResultEventArgs();
            evt.SearchSessionId = e.SearchSessionId;
            evt.Page = page;
            evt.PerPage = perPage;
            evt.TotalCount = numTotal;
            evt.Groups = groups;
            GroupSearchCompleted.DispatchEvent(this, evt);
        }
        private void OnGroupSearchResult(object sender, GroupSearchResultEventArgs e)
        {
            Dispatcher.BeginInvoke(() => {
                if (e.SearchSessionId != SearchSessionId)
                    return;

                if (_groups.Count == 0 && e.Groups.Count == 0)
                {
                    NoResultLabel.Visibility = Visibility.Visible;
                    ResultListView.Visibility = Visibility.Collapsed;
                    LoadingView.Visibility = Visibility.Collapsed;

                    return;
                }

                // Add new photos
                foreach (FlickrGroup group in e.Groups)
                {
                    if (!_groups.Contains(group))
                        _groups.Add(group);
                }

                NoResultLabel.Visibility = Visibility.Collapsed;
                ResultListView.Visibility = Visibility.Visible;
                LoadingView.Visibility = Visibility.Collapsed;

                int page = _groups.Count / perPage + 1;
                TotalCount = e.TotalCount;
            });
        }