Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 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);
             }
         });
 }
Ejemplo n.º 3
0
 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));
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 7
0
 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));
 }
Ejemplo n.º 8
0
 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);
 }
Ejemplo n.º 9
0
 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);
             }
         });
 }
Ejemplo n.º 10
0
 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));
 }