@@ -1,6 +1,7 @@
1namespace Skrepka
1namespace Skrepka
3open Avalonia.Layout
3open Avalonia.Layout
4open Fabulous.Avalonia
5open Fabulous.Avalonia
6open type Fabulous.Avalonia.View
7open type Fabulous.Avalonia.View
@@ -12,6 +13,23 @@ module ViewChat =
12 open Buttons
13 open Buttons
13 open TextFields
14 open TextFields
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
15 let private scrollRef = Fabulous.ViewRef<Avalonia.Controls.ScrollViewer>()
33 let private scrollRef = Fabulous.ViewRef<Avalonia.Controls.ScrollViewer>()
16 let mutable private lastMsgCount = 0
34 let mutable private lastMsgCount = 0
17 let mutable private pageSize = 50
35 let mutable private pageSize = 50
@@ -43,22 +61,7 @@ module ViewChat =
43 .strokeThickness(4.)
61 .strokeThickness(4.)
44 .strokeDashArray([ 4.; 2. ])
62 .strokeDashArray([ 4.; 2. ])
45 .isHitTestVisible(false)
63 .isHitTestVisible(false)
46− .onLoaded(fun args ->
64+ .style(marchingAntsStyle)
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
63 Rectangle().stroke(Avalonia.Media.Colors.Black).strokeThickness(4.).isHitTestVisible (false)
66 Rectangle().stroke(Avalonia.Media.Colors.Black).strokeThickness(4.).isHitTestVisible (false)