public PrivateAwareStroke(Stroke stroke, string target) : base(stroke.StylusPoints, stroke.DrawingAttributes) { var cs = new[] {55, 0, 0, 0}.Select(i => (byte) i).ToList(); pen = new Pen(new SolidColorBrush( new Color{ A=cs[0], R=stroke.DrawingAttributes.Color.R, G=stroke.DrawingAttributes.Color.G, B=stroke.DrawingAttributes.Color.B }), stroke.DrawingAttributes.Width * 4); this.stroke = stroke; this.target = target; this.tag(stroke.tag()); isPrivate = this.tag().privacy == "private"; shouldShowPrivacy = (this.tag().author == Globals.conversationDetails.Author || Globals.conversationDetails.Permissions.studentCanPublish); if (!isPrivate) return; pen.Freeze(); }
private void doMyStrokeRemoved(Stroke stroke) { ClearAdorners(); doMyStrokeRemovedExceptHistory(stroke); UndoHistory.Queue( () => { if (Strokes.Where(s => s.sum().checksum == stroke.sum().checksum).Count() == 0) { Strokes.Add(stroke); doMyStrokeAddedExceptHistory(stroke, stroke.tag().privacy); } }, () => { if (Strokes.Where(s => s.sum().checksum == stroke.sum().checksum).Count() > 0) { Strokes.Remove(Strokes.Where(s=> s.sum().checksum == stroke.sum().checksum).First()); strokes.Remove(stroke.sum()); doMyStrokeRemovedExceptHistory(stroke); } }); }
private void doMyStrokeRemovedExceptHistory(Stroke stroke) { var sum = stroke.sum().checksum.ToString(); Commands.SendDirtyStroke.Execute(new MeTLLib.DataTypes.TargettedDirtyElement(currentSlide, stroke.tag().author,target,stroke.tag().privacy,sum)); }
private void doMyStrokeAddedExceptHistory(Stroke stroke, string thisPrivacy) { if (!strokes.Contains(stroke.sum())) strokes.Add(stroke.sum()); stroke.tag(new StrokeTag { author = stroke.tag().author, privacy = thisPrivacy, isHighlighter = stroke.DrawingAttributes.IsHighlighter }); SendTargettedStroke(stroke, thisPrivacy); }
public void SendTargettedStroke(Stroke stroke, string thisPrivacy) { if (!stroke.shouldPersist()) return; var privateRoom = string.Format("{0}{1}", currentSlide, stroke.tag().author); if(thisPrivacy.ToLower() == "private" && Globals.isAuthor && Globals.me != stroke.tag().author) Commands.SneakInto.Execute(privateRoom); Commands.SendStroke.Execute(new TargettedStroke(currentSlide,stroke.tag().author,target,stroke.tag().privacy,stroke, stroke.tag().startingSum)); if (thisPrivacy.ToLower() == "private" && Globals.isAuthor && Globals.me != stroke.tag().author) Commands.SneakOutOf.Execute(privateRoom); }
private bool dirtiesThis(TargettedMoveDelta moveDelta, Stroke elem) { return moveDelta.inkIds.Any(i => elem.tag().id == i && elem.tag().privacy == moveDelta.privacy && elem.tag().timestamp < moveDelta.timestamp); }
public void SendTargettedStroke(Stroke stroke, string thisPrivacy) { if (!stroke.shouldPersist()) return; Commands.ActualReportStrokeAttributes.ExecuteAsync(stroke.DrawingAttributes); Commands.SendStroke.Execute(new MeTLLib.DataTypes.TargettedStroke(Globals.location.currentSlide,Globals.me,target,stroke.tag().privacy,stroke, stroke.tag().startingSum)); }
private void doMyStrokeAddedExceptHistory(Stroke stroke, string thisPrivacy) { stroke.tag(new MeTLLib.DataTypes.StrokeTag { author = Globals.me, privacy = thisPrivacy, isHighlighter = stroke.DrawingAttributes.IsHighlighter }); SendTargettedStroke(stroke, thisPrivacy); }
public void doMyStrokeAdded(Stroke stroke, string intendedPrivacy) { doMyStrokeAddedExceptHistory(stroke, intendedPrivacy); UndoHistory.Queue( () => { var existingStroke = Strokes.Where(s => s.sum().checksum == stroke.sum().checksum).FirstOrDefault(); if (existingStroke != null) doMyStrokeRemovedExceptHistory(existingStroke); }, () => { if (Strokes.Where(s => s.sum().checksum == stroke.sum().checksum).Count() == 0) { Strokes.Add(stroke); doMyStrokeAddedExceptHistory(stroke, stroke.tag().privacy); } }); }
private void doMyStrokeRemovedExceptHistory(Stroke stroke) { var sum = stroke.sum().checksum.ToString(); var bounds = stroke.GetBounds(); Commands.SendDirtyStroke.Execute(new MeTLLib.DataTypes.TargettedDirtyElement(Globals.location.currentSlide,Globals.me,target,stroke.tag().privacy,sum)); }