@@ -1,6 +1,7 @@
11namespace Skrepka
22
33open Avalonia.Layout
4+open Avalonia.Styling
45open Fabulous.Avalonia
56
67open type Fabulous.Avalonia.View
@@ -12,6 +13,23 @@ module ViewChat =
1213 open Buttons
1314 open TextFields
1415
16+ let private marchingAntsStyle =
17+ let s = Avalonia.Styling.Style(fun sel -> sel.OfType<Avalonia.Controls.Shapes.Rectangle>())
18+ let anim = Avalonia.Animation.Animation()
19+ anim.Duration <- System.TimeSpan.FromSeconds 3.
20+ anim.IterationCount <- Avalonia.Animation.IterationCount.Infinite
21+ anim.Easing <- Avalonia.Animation.Easings.LinearEasing()
22+ let kf1 = Avalonia.Animation.KeyFrame()
23+ kf1.Setters.Add(Avalonia.Styling.Setter(Avalonia.Controls.Shapes.Shape.StrokeDashOffsetProperty, box 0.))
24+ kf1.Cue <- Avalonia.Animation.Cue(0.)
25+ let kf2 = Avalonia.Animation.KeyFrame()
26+ kf2.Setters.Add(Avalonia.Styling.Setter(Avalonia.Controls.Shapes.Shape.StrokeDashOffsetProperty, box 6.))
27+ kf2.Cue <- Avalonia.Animation.Cue(1.)
28+ anim.Children.Add(kf1)
29+ anim.Children.Add(kf2)
30+ s.Animations.Add(anim)
31+ s :> Avalonia.Styling.IStyle
32+
1533 let private scrollRef = Fabulous.ViewRef<Avalonia.Controls.ScrollViewer>()
1634 let mutable private lastMsgCount = 0
1735 let mutable private pageSize = 50
@@ -43,22 +61,7 @@ module ViewChat =
4361 .strokeThickness(4.)
4462 .strokeDashArray([ 4.; 2. ])
4563 .isHitTestVisible(false)
46− .onLoaded(fun args ->
47− let rect = args.Source :?> Avalonia.Controls.Shapes.Rectangle
48− let anim = Avalonia.Animation.Animation()
49− anim.Duration <- System.TimeSpan.FromSeconds 3.
50− anim.IterationCount <- Avalonia.Animation.IterationCount.Infinite
51− anim.Easing <- Avalonia.Animation.Easings.LinearEasing()
52− let kf1 = Avalonia.Animation.KeyFrame()
53− kf1.Setters.Add(Avalonia.Styling.Setter(Avalonia.Controls.Shapes.Shape.StrokeDashOffsetProperty, box 0.))
54− kf1.Cue <- Avalonia.Animation.Cue(0.)
55− let kf2 = Avalonia.Animation.KeyFrame()
56− kf2.Setters.Add(Avalonia.Styling.Setter(Avalonia.Controls.Shapes.Shape.StrokeDashOffsetProperty, box 6.))
57− kf2.Cue <- Avalonia.Animation.Cue(1.)
58− anim.Children.Add(kf1)
59− anim.Children.Add(kf2)
60− anim.RunAsync(rect) |> ignore
61− DismissError)
64+ .style(marchingAntsStyle)
6265 else
6366 Rectangle().stroke(Avalonia.Media.Colors.Black).strokeThickness(4.).isHitTestVisible (false)
6467