-
Notifications
You must be signed in to change notification settings - Fork 5
/
subscription-setup-form.go
102 lines (86 loc) · 2.37 KB
/
subscription-setup-form.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package main
import (
"time"
"gioui.org/layout"
"gioui.org/unit"
"gioui.org/widget"
"gioui.org/widget/material"
materials "gioui.org/x/component"
"git.sr.ht/~whereswaldon/sprig/core"
"git.sr.ht/~whereswaldon/sprig/icons"
)
type SubSetupFormView struct {
manager ViewManager
core.App
SubStateManager
ConnectionList layout.List
Refresh, Continue widget.Clickable
}
var _ View = &SubSetupFormView{}
func NewSubSetupFormView(app core.App) View {
c := &SubSetupFormView{
App: app,
}
c.SubStateManager = NewSubStateManager(app, func() {
c.manager.RequestInvalidate()
})
c.ConnectionList.Axis = layout.Vertical
return c
}
func (c *SubSetupFormView) HandleIntent(intent Intent) {}
func (c *SubSetupFormView) BecomeVisible() {
c.SubStateManager.Refresh()
go func() {
time.Sleep(time.Second)
c.SubStateManager.Refresh()
}()
}
func (c *SubSetupFormView) NavItem() *materials.NavItem {
return nil
}
func (c *SubSetupFormView) AppBarData() (bool, string, []materials.AppBarAction, []materials.OverflowAction) {
return false, "", nil, nil
}
func (c *SubSetupFormView) Update(gtx layout.Context) {
c.SubStateManager.Update(gtx)
if c.Refresh.Clicked(gtx) {
c.SubStateManager.Refresh()
}
if c.Continue.Clicked(gtx) {
c.manager.SetView(ReplyViewID)
}
}
func (c *SubSetupFormView) Layout(gtx layout.Context) layout.Dimensions {
c.Update(gtx)
sTheme := c.Theme().Current()
theme := sTheme.Theme
inset := layout.UniformInset(unit.Dp(12))
return layout.Flex{
Axis: layout.Vertical,
Alignment: layout.Middle,
}.Layout(gtx,
layout.Rigid(func(gtx C) D {
return inset.Layout(gtx, func(gtx C) D {
return material.Body1(theme, "Subscribe to a few communities to get started:").Layout(gtx)
})
}),
layout.Flexed(1.0, func(gtx C) D {
return layout.UniformInset(unit.Dp(4)).Layout(gtx, SubscriptionList(theme, &c.ConnectionList, c.Subs).Layout)
}),
layout.Rigid(func(gtx C) D {
return inset.Layout(gtx, func(gtx C) D {
return layout.Flex{Spacing: layout.SpaceAround}.Layout(gtx,
layout.Rigid(func(gtx C) D {
return material.IconButton(theme, &c.Refresh, icons.RefreshIcon, "Refresh").Layout(gtx)
}),
layout.Rigid(func(gtx C) D {
return material.IconButton(theme, &c.Continue, icons.ForwardIcon, "Continue").Layout(gtx)
}),
)
})
}),
)
}
func (c *SubSetupFormView) SetManager(mgr ViewManager) {
c.manager = mgr
}