private void UpdateConversationDetails(ConversationDetails details) { Dispatcher.adopt(delegate { if (Globals.location.activeConversation.IsEmpty) { current.Visibility = Visibility.Collapsed; currentConversation.Visibility = Visibility.Collapsed; separator2.Visibility = Visibility.Collapsed; } if (details.IsEmpty) return; // if the conversation we're participating in has been deleted or we're no longer in the listed permission group if (details.Jid == Globals.location.activeConversation.Jid) { if (details.isDeleted || (!details.UserHasPermission(Globals.credentials))) { current.Visibility = Visibility.Collapsed; currentConversation.Visibility = Visibility.Collapsed; separator2.Visibility = Visibility.Collapsed; Commands.ShowConversationSearchBox.Execute("find"); } } }); }
private bool canJoinConversation(ConversationDetails details) { if (details.isDeleted || !details.UserHasPermission(Globals.credentials)) { UpdateConversationDetails(details); return false; } return true; }
public void Display(ConversationDetails details) { //We only display the details of our current conversation (or the one we're entering) if (details.IsEmpty) return; Dispatcher.adopt(delegate { if (details.IsEmpty || !details.UserHasPermission(Globals.credentials)) { thumbnailList.Clear(); return; } //Commands.RequestTeacherStatus.Execute(new TeacherStatus { Conversation = Globals.conversationDetails.Jid, Slide = "0", Teacher = Globals.conversationDetails.Author }); IsNavigationLocked = calculateNavigationLocked(); checkMovementLimits(); redrawing = true; foreach (var thumb in thumbnailList.Where(sl => !details.Slides.Exists(s => sl.id == s.id)).ToList()) { thumbnailList.Remove(thumb); } foreach (var slide in details.Slides.OrderBy(s => s.index).Where(slide => slide.type == Slide.TYPE.SLIDE)) { var lastLegalPos = Math.Min(thumbnailList.Count, slide.index); var thumb = thumbnailList.FirstOrDefault(s => s.id == slide.id); if (thumb != null && thumb != default(Slide)) { if (thumb.index != slide.index) { thumbnailList.Remove(thumb); thumbnailList.Insert(lastLegalPos, slide); } } else { thumbnailList.Insert(lastLegalPos, slide); } if (slide.id == currentSlideId) slides.SelectedItem = slide; } redrawing = false; }); }