package formview import ( "fmt" "go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/model" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/comm" "go_dreamfactory/pb" "strings" "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" "github.com/spf13/cast" ) type ReddotView struct { reddotList func() BaseformView itemList *common.ItemList flag bool } func (this *ReddotView) CreateView(t *model.TestCase) fyne.CanvasObject { this.itemList = common.NewItemList() this.itemList.ItemList = this.itemList.CreateList() reddotTypeEntry := widget.NewEntry() this.form.AppendItem(widget.NewFormItem("红点类型", reddotTypeEntry)) this.form.OnSubmit = func() { typesStr := strings.Split(reddotTypeEntry.Text, ",") var rids []int32 for _, s := range typesStr { rids = append(rids, cast.ToInt32(s)) } if err := service.GetPttService().SendToClient(t.MainType, "get", &pb.ReddotGetReq{ Rids: rids, }); err != nil { logrus.Error(err) } } this.reddotList = func() { if err := service.GetPttService().SendToClient( string(comm.ModuleReddot), "getall", &pb.ReddotGetAllReq{}); err != nil { logrus.Error(err) } } defer this.reddotList() refreshBtn := widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), func() { this.itemList.Reset() this.reddotList() }) this.dataListener() buttonBar := container.NewHBox(refreshBtn) c := container.NewBorder(buttonBar, this.form, nil, nil, this.itemList.ItemList) return c } func (this *ReddotView) dataListener() { this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ OnNotify: func(d interface{}, args ...interface{}) { data := d.(*pb.UserMessage) if !(data.MainType == string(comm.ModuleReddot) && data.SubType == "getall") { return } rsp := &pb.ReddotGetAllResp{} if !comm.ProtoUnmarshal(data, rsp) { logrus.Error("unmarshal err") } for k, v := range rsp.Reddot { item := common.Item{ Id: cast.ToString(k), Text: fmt.Sprintf("%v - %v", k, v), } this.itemList.AddItem(item) } }, }) }