diff --git a/cmd/v2/model/friend.go b/cmd/v2/model/friend.go deleted file mode 100644 index 5ed8c2e74..000000000 --- a/cmd/v2/model/friend.go +++ /dev/null @@ -1,24 +0,0 @@ -package model - -type FriendModel struct { - Uid string - Name string -} - -type FriendModelList struct { - DataList []*FriendModel -} - -func NewFriendModelList() *FriendModelList { - return &FriendModelList{ - DataList: make([]*FriendModel, 0), - } -} - -func (s *FriendModelList) AsInterfaceArray() []interface{} { - rs := make([]interface{}, len(s.DataList), len(s.DataList)) - for i := range s.DataList { - rs[i] = s.DataList[i] - } - return rs -} diff --git a/cmd/v2/model/item.go b/cmd/v2/model/item.go new file mode 100644 index 000000000..70b746cdb --- /dev/null +++ b/cmd/v2/model/item.go @@ -0,0 +1,24 @@ +package model + +type ItemModel struct { + Id string + Label string +} + +type ItemModelList struct { + DataList []*ItemModel +} + +func NewItemModelList() *ItemModelList { + return &ItemModelList{ + DataList: make([]*ItemModel, 0), + } +} + +func (s *ItemModelList) AsInterfaceArray() []interface{} { + rs := make([]interface{}, len(s.DataList), len(s.DataList)) + for i := range s.DataList { + rs[i] = s.DataList[i] + } + return rs +} diff --git a/cmd/v2/ui/formview/baselistview.go b/cmd/v2/ui/formview/baselistview.go new file mode 100644 index 000000000..4580256c6 --- /dev/null +++ b/cmd/v2/ui/formview/baselistview.go @@ -0,0 +1,99 @@ +package formview + +import ( + "go_dreamfactory/cmd/v2/model" + "go_dreamfactory/cmd/v2/service" + "go_dreamfactory/comm" + "go_dreamfactory/modules/friend" + "go_dreamfactory/pb" + "go_dreamfactory/utils" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/data/binding" + "fyne.io/fyne/v2/widget" + "github.com/sirupsen/logrus" +) + +type ListBaseView struct { + BaseformView + dataListWidget *widget.List + dataBinding binding.UntypedList + selItemIds []string //选择的ID + itemListData *model.ItemModelList +} + +// init data +func (this *ListBaseView) initItemList() { + this.dataBinding = binding.NewUntypedList() + this.itemListData = model.NewItemModelList() +} + +// create list view with check widget +func (this *ListBaseView) createItemListWithCheck() *widget.List { + this.dataListWidget = widget.NewListWithData(this.dataBinding, + func() fyne.CanvasObject { + return container.NewHBox( + widget.NewCheck("", func(b bool) {}), + widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.TextStyle{}), + ) + }, + func(data binding.DataItem, item fyne.CanvasObject) { + o, _ := data.(binding.Untyped).Get() + pd := o.(*model.ItemModel) + item.(*fyne.Container).Objects[0].(*widget.Check).OnChanged = func(b bool) { + if b { + this.selItemIds = append(this.selItemIds, pd.Id) + } else { + utils.DeleteString(this.selItemIds, pd.Id) + } + } + item.(*fyne.Container).Objects[1].(*widget.Label).SetText(pd.Label) + }, + ) + return this.dataListWidget +} + +// create list , single select +func (this *ListBaseView) createItemList() *widget.List { + this.dataListWidget = widget.NewListWithData(this.dataBinding, + func() fyne.CanvasObject { + return container.NewHBox( + widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.TextStyle{}), + ) + }, + func(data binding.DataItem, item fyne.CanvasObject) { + o, _ := data.(binding.Untyped).Get() + pd := o.(*model.ItemModel) + item.(*fyne.Container).Objects[0].(*widget.Label).SetText(pd.Label) + }, + ) + + // single select + this.dataListWidget.OnSelected = func(id widget.ListItemID) { + sel := this.itemListData.DataList[id] + this.selItemIds = []string{sel.Id} + } + + return this.dataListWidget +} + +func (this *ListBaseView) listBtnFun() func() { + return func() { + if err := service.GetPttService().SendToClient( + string(comm.ModuleFriend), + friend.FriendSubTypeApplyList, + &pb.FriendApplyListReq{}); err != nil { + logrus.Error(err) + } + this.itemListData = model.NewItemModelList() + } +} + +// set data +func (this *ListBaseView) reloadListData() { + if this.itemListData != nil { + d := this.itemListData.AsInterfaceArray() + this.dataBinding.Set(d) + } +} diff --git a/cmd/v2/ui/formview/friend_agree.go b/cmd/v2/ui/formview/friend_agree.go index f1434dd1c..9e4ad9956 100644 --- a/cmd/v2/ui/formview/friend_agree.go +++ b/cmd/v2/ui/formview/friend_agree.go @@ -16,12 +16,12 @@ import ( ) type FriendAgreeView struct { - FriendListBaseView + ListBaseView } func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject { //init required - this.initFriendList() + this.initItemList() //同意提交 agreeBtn := widget.NewButtonWithIcon("同意", theme.ConfirmIcon(), func() { @@ -29,13 +29,13 @@ func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject { t.MainType, t.SubType, &pb.FriendAgreeReq{ - FriendIds: this.selFriendIds, + FriendIds: this.selItemIds, }, ); err != nil { logrus.Error(err) return } - this.applyListBtnFun() + this.listBtnFun() }) //拒绝 @@ -44,19 +44,19 @@ func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject { string(comm.ModuleFriend), friend.FriendSubTypeRefuse, &pb.FriendRefuseReq{ - FriendIds: this.selFriendIds, + FriendIds: this.selItemIds, }); err != nil { logrus.Error(err) return } - this.applyListBtnFun() + this.listBtnFun() }) - this.createList() + this.createItemListWithCheck() - applyListBtn := widget.NewButton("申请列表", this.applyListBtnFun()) + applyListBtn := widget.NewButton("申请列表", this.listBtnFun()) - split := container.NewHSplit(this.dataList, container.NewVBox(applyListBtn, agreeBtn, refuseBtn)) + split := container.NewHSplit(this.dataListWidget, container.NewVBox(applyListBtn, agreeBtn, refuseBtn)) split.Offset = 1 this.dataListener() @@ -79,13 +79,13 @@ func (this *FriendAgreeView) dataListener() { } for _, v := range rsp.List { - fm := &model.FriendModel{ - Uid: v.UserId, - Name: v.NickName, + fm := &model.ItemModel{ + Id: v.UserId, + Label: v.NickName, } - this.friendData.DataList = append(this.friendData.DataList, fm) + this.itemListData.DataList = append(this.itemListData.DataList, fm) } - this.reloadFriendData() + this.reloadListData() }, }) } diff --git a/cmd/v2/ui/formview/friend_base.go b/cmd/v2/ui/formview/friend_base.go deleted file mode 100644 index 0b4fb933d..000000000 --- a/cmd/v2/ui/formview/friend_base.go +++ /dev/null @@ -1,75 +0,0 @@ -package formview - -import ( - "go_dreamfactory/cmd/v2/model" - "go_dreamfactory/cmd/v2/service" - "go_dreamfactory/comm" - "go_dreamfactory/modules/friend" - "go_dreamfactory/pb" - "go_dreamfactory/utils" - - "fyne.io/fyne/v2" - "fyne.io/fyne/v2/container" - "fyne.io/fyne/v2/data/binding" - "fyne.io/fyne/v2/widget" - "github.com/sirupsen/logrus" -) - -type FriendListBaseView struct { - BaseformView - dataList *widget.List - friendBinding binding.UntypedList - selFriendIds []string //选择的UID - friendData *model.FriendModelList -} - -// init data -func (this *FriendListBaseView) initFriendList() { - this.friendBinding = binding.NewUntypedList() - this.friendData = model.NewFriendModelList() -} - -// create list view -func (this *FriendListBaseView) createList() *widget.List { - this.dataList = widget.NewListWithData(this.friendBinding, - func() fyne.CanvasObject { - return container.NewHBox( - widget.NewCheck("", func(b bool) {}), - widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.TextStyle{}), - ) - }, - func(data binding.DataItem, item fyne.CanvasObject) { - o, _ := data.(binding.Untyped).Get() - pd := o.(*model.FriendModel) - item.(*fyne.Container).Objects[0].(*widget.Check).OnChanged = func(b bool) { - if b { - this.selFriendIds = append(this.selFriendIds, pd.Uid) - } else { - utils.DeleteString(this.selFriendIds, pd.Uid) - } - } - item.(*fyne.Container).Objects[1].(*widget.Label).SetText(pd.Name) - }, - ) - return this.dataList -} - -func (this *FriendListBaseView) applyListBtnFun() func() { - return func() { - if err := service.GetPttService().SendToClient( - string(comm.ModuleFriend), - friend.FriendSubTypeApplyList, - &pb.FriendApplyListReq{}); err != nil { - logrus.Error(err) - } - this.friendData = model.NewFriendModelList() - } -} - -// set data -func (this *FriendListBaseView) reloadFriendData() { - if this.friendData != nil { - d := this.friendData.AsInterfaceArray() - this.friendBinding.Set(d) - } -} diff --git a/cmd/v2/ui/formview/friend_blacklist.go b/cmd/v2/ui/formview/friend_blacklist.go index e755e5e3a..8a5d79ddf 100644 --- a/cmd/v2/ui/formview/friend_blacklist.go +++ b/cmd/v2/ui/formview/friend_blacklist.go @@ -15,14 +15,14 @@ import ( ) type FriendBlacklistView struct { - FriendListBaseView + ListBaseView } func (this *FriendBlacklistView) CreateView(t *model.TestCase) fyne.CanvasObject { // init required - this.initFriendList() + this.initItemList() // create friend list view - this.createList() + this.createItemListWithCheck() friendList := func() { if err := service.GetPttService().SendToClient( @@ -31,12 +31,12 @@ func (this *FriendBlacklistView) CreateView(t *model.TestCase) fyne.CanvasObject &pb.FriendBlackListReq{}); err != nil { logrus.Error(err) } - this.friendData = model.NewFriendModelList() + this.itemListData = model.NewItemModelList() } friendListBtn := widget.NewButton("黑名单列表", friendList) // layout - split := container.NewHSplit(this.dataList, container.NewVBox(friendListBtn)) + split := container.NewHSplit(this.dataListWidget, container.NewVBox(friendListBtn)) split.Offset = 1 //data listener for @@ -60,13 +60,13 @@ func (this *FriendBlacklistView) dataListener() { } for _, v := range rsp.Friends { - fm := &model.FriendModel{ - Uid: v.UserId, - Name: v.NickName, + fm := &model.ItemModel{ + Id: v.UserId, + Label: v.NickName, } - this.friendData.DataList = append(this.friendData.DataList, fm) + this.itemListData.DataList = append(this.itemListData.DataList, fm) } - this.reloadFriendData() + this.reloadListData() }, }) } diff --git a/cmd/v2/ui/formview/friend_list.go b/cmd/v2/ui/formview/friend_list.go index 3c45bd1e0..1e2e608ac 100644 --- a/cmd/v2/ui/formview/friend_list.go +++ b/cmd/v2/ui/formview/friend_list.go @@ -17,16 +17,16 @@ import ( //好友列表 type FriendListView struct { - FriendListBaseView //继承支持好友列表的基类 - friendList func() + ListBaseView //继承支持好友列表的基类 + friendList func() } func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject { // init required - this.initFriendList() + this.initItemList() // create friend list view - this.createList() + this.createItemListWithCheck() // new friendlist btn this.friendList = func() { @@ -36,7 +36,7 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject { &pb.FriendListReq{}); err != nil { logrus.Error(err) } - this.friendData = model.NewFriendModelList() + this.itemListData = model.NewItemModelList() } friendListBtn := widget.NewButton("好友列表", this.friendList) @@ -47,17 +47,17 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject { t.MainType, friend.FriendSubTypeZan, &pb.FriendZanReq{ - FriendId: this.selFriendIds[0], + FriendId: this.selItemIds[0], }, ); err != nil { logrus.Error(err) return } - this.applyListBtnFun() + this.listBtnFun() }) // layout - split := container.NewHSplit(this.dataList, container.NewVBox(friendListBtn, zanBtn)) + split := container.NewHSplit(this.dataListWidget, container.NewVBox(friendListBtn, zanBtn)) split.Offset = 1 //data listener for @@ -83,15 +83,15 @@ func (this *FriendListView) dataListener() { logrus.Error("unmarshal err") } - this.friendData = model.NewFriendModelList() + this.itemListData = model.NewItemModelList() for _, v := range rsp.List { - fm := &model.FriendModel{ - Uid: v.UserId, - Name: v.NickName, + fm := &model.ItemModel{ + Id: v.UserId, + Label: v.NickName, } - this.friendData.DataList = append(this.friendData.DataList, fm) + this.itemListData.DataList = append(this.itemListData.DataList, fm) } - this.reloadFriendData() + this.reloadListData() }, }) } diff --git a/cmd/v2/ui/formview/friend_zan.go b/cmd/v2/ui/formview/friend_zan.go index d463e768b..610fbc15b 100644 --- a/cmd/v2/ui/formview/friend_zan.go +++ b/cmd/v2/ui/formview/friend_zan.go @@ -16,12 +16,12 @@ import ( ) type FriendZanView struct { - FriendListBaseView + ListBaseView } func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject { //init required - this.initFriendList() + this.initItemList() receiveBtn := widget.NewButtonWithIcon("获赞", theme.ConfirmIcon(), func() { @@ -29,13 +29,13 @@ func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject { t.MainType, "zanreceive", &pb.FriendZanreceiveReq{ - FriendId: this.selFriendIds[0], + FriendId: this.selItemIds[0], }, ); err != nil { logrus.Error(err) return } - this.applyListBtnFun() + this.listBtnFun() }) // new zanlist btn @@ -46,15 +46,15 @@ func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject { &pb.FriendZanlistReq{}); err != nil { logrus.Error(err) } - this.friendData = model.NewFriendModelList() + this.itemListData = model.NewItemModelList() } zanListBtn := widget.NewButton("点赞列表", zanList) // create friend list view - this.createList() + this.createItemListWithCheck() // layout - split := container.NewHSplit(this.dataList, container.NewVBox(zanListBtn, receiveBtn)) + split := container.NewHSplit(this.dataListWidget, container.NewVBox(zanListBtn, receiveBtn)) split.Offset = 1 this.dataListener() @@ -75,15 +75,15 @@ func (this *FriendZanView) dataListener() { logrus.Error("unmarshal err") } - this.friendData = model.NewFriendModelList() + this.itemListData = model.NewItemModelList() for _, v := range rsp.List { - fm := &model.FriendModel{ - Uid: v.UserId, - Name: v.NickName, + fm := &model.ItemModel{ + Id: v.UserId, + Label: v.NickName, } - this.friendData.DataList = append(this.friendData.DataList, fm) + this.itemListData.DataList = append(this.itemListData.DataList, fm) } - this.reloadFriendData() + this.reloadListData() }, }) } diff --git a/cmd/v2/ui/formview/hero_list.go b/cmd/v2/ui/formview/hero_list.go index f64fcf73c..47925c8de 100644 --- a/cmd/v2/ui/formview/hero_list.go +++ b/cmd/v2/ui/formview/hero_list.go @@ -1,24 +1,92 @@ package formview import ( + "fmt" "go_dreamfactory/cmd/v2/model" "go_dreamfactory/cmd/v2/service" + "go_dreamfactory/cmd/v2/service/observer" + "go_dreamfactory/comm" + "go_dreamfactory/modules/hero" "go_dreamfactory/pb" "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 HeroListView struct { - BaseformView + ListBaseView } func (this *HeroListView) CreateView(t *model.TestCase) fyne.CanvasObject { - this.form.OnSubmit = func() { + // init required + this.initItemList() + + // create friend list view + this.createItemList() + + // hero list button + heroListBtn := widget.NewButtonWithIcon("英雄列表", theme.ConfirmIcon(), func() { if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.HeroListReq{}); err != nil { logrus.Error(err) } + }) - } - return this.form + //升星 + starBtn := widget.NewButtonWithIcon("升星", theme.ConfirmIcon(), func() { + + // if err := service.GetPttService().SendToClient( + // t.MainType, + // t.SubType, + // &pb.HeroStrengthenUpStarReq{ + // HeroObjID: heroObjID.Text, + // HeroRace: heroRace, + // Hero: hero, + // }); err != nil { + // logrus.Error(err) + // } + }) + + //升级 + + // layout + split := container.NewHSplit(this.dataListWidget, container.NewVBox(heroListBtn, starBtn)) + split.Offset = 1 + + //data listener for + this.dataListener() + + return split +} + +func (this *HeroListView) 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.ModuleHero) && + data.SubType == hero.HeroSubTypeList) { + return + } + + rsp := &pb.HeroListResp{} + if !comm.ProtoUnmarshal(data, rsp) { + logrus.Error("unmarshal err") + } + + this.itemListData = model.NewItemModelList() + for _, v := range rsp.List { + if v.CardType != 3 { //不显示类型是3的 + fm := &model.ItemModel{ + Id: cast.ToString(v.Id), + Label: fmt.Sprintf("%s Lv:%d S:%d T:%d", cast.ToString(v.HeroID), v.Lv, v.Star, v.CardType), + } + this.itemListData.DataList = append(this.itemListData.DataList, fm) + } + } + this.reloadListData() + }, + }) } diff --git a/cmd/v2/ui/formview/task_activelist.go b/cmd/v2/ui/formview/task_activelist.go index de51edcdc..77bf8ddcf 100644 --- a/cmd/v2/ui/formview/task_activelist.go +++ b/cmd/v2/ui/formview/task_activelist.go @@ -1,32 +1,103 @@ package formview import ( + "errors" + "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/modules/task" "go_dreamfactory/pb" "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" "github.com/spf13/cast" ) type TaskActiveListView struct { - BaseformView + ListBaseView + activeVal int32 } func (this *TaskActiveListView) CreateView(t *model.TestCase) fyne.CanvasObject { + // init required + this.initItemList() + + // create friend list view + this.createItemList() + + // select widget tagSelect := getTaskTagSelect() this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect)) - this.form.OnSubmit = func() { + // task active list button + taskListBtn := widget.NewButtonWithIcon("活跃度", theme.ConfirmIcon(), func() { if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.TaskActiveListReq{ - TaskTag: cast.ToInt32(tagSelect.Selected), }); err != nil { logrus.Error(err) } - } - return this.form + }) + + //label + activeLabel := widget.NewLabel(fmt.Sprintf("当前活跃度:%d", this.activeVal)) + + //receive button + receiveBtn := widget.NewButtonWithIcon("领取", theme.ConfirmIcon(), func() { + if len(this.selItemIds) != 1 { + dialog.ShowError(errors.New("请选择一项"), this.w) + return + } + if err := service.GetPttService().SendToClient( + t.MainType, "activereceive", + &pb.TaskReceiveReq{Id: this.selItemIds[0], TaskTag: cast.ToInt32(tagSelect.Selected)}); err != nil { + logrus.Error(err) + return + } + }) + + // layout + split := container.NewHSplit(this.dataListWidget, container.NewVBox(activeLabel, this.form, taskListBtn, receiveBtn)) + split.Offset = 1 + + //data listener for + this.dataListener() + + return split +} + +func (this *TaskActiveListView) 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.ModuleTask) && + data.SubType == task.TaskSubTypeActiveList) { + return + } + + rsp := &pb.TaskActiveListResp{} + if !comm.ProtoUnmarshal(data, rsp) { + logrus.Error("unmarshal err") + } + + this.activeVal = rsp.Active + + this.itemListData = model.NewItemModelList() + for _, v := range rsp.List { + fm := &model.ItemModel{ + Id: cast.ToString(v.Id), + Label: fmt.Sprintf("%s R:%d", cast.ToString(v.RId), v.Received), + } + this.itemListData.DataList = append(this.itemListData.DataList, fm) + } + this.reloadListData() + + }, + }) } diff --git a/cmd/v2/ui/formview/task_list.go b/cmd/v2/ui/formview/task_list.go index 92dfedd69..934d99eb9 100644 --- a/cmd/v2/ui/formview/task_list.go +++ b/cmd/v2/ui/formview/task_list.go @@ -1,31 +1,96 @@ package formview import ( + "errors" + "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/modules/task" "go_dreamfactory/pb" "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" "github.com/spf13/cast" ) type TaskListView struct { - BaseformView + ListBaseView } func (this *TaskListView) CreateView(t *model.TestCase) fyne.CanvasObject { + // init required + this.initItemList() + + // create friend list view + this.createItemList() + + // select widget tagSelect := getTaskTagSelect() this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect)) - this.form.OnSubmit = func() { + // task list button + taskListBtn := widget.NewButtonWithIcon("任务列表", theme.ConfirmIcon(), func() { if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.TaskListReq{ TaskTag: cast.ToInt32(tagSelect.Selected), }); err != nil { logrus.Error(err) } - } - return this.form + }) + + // task receive button + receiveBtn := widget.NewButtonWithIcon("任务领取", theme.ConfirmIcon(), func() { + if len(this.selItemIds) != 1 { + dialog.ShowError(errors.New("请选择一项"), this.w) + return + } + if err := service.GetPttService().SendToClient( + t.MainType, "receive", + &pb.TaskReceiveReq{Id: this.selItemIds[0], TaskTag: cast.ToInt32(tagSelect.Selected)}); err != nil { + logrus.Error(err) + return + } + }) + + // layout + split := container.NewHSplit(this.dataListWidget, container.NewVBox(this.form, taskListBtn, receiveBtn)) + split.Offset = 1 + + //data listener for + this.dataListener() + + return split +} + +func (this *TaskListView) 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.ModuleTask) && + data.SubType == task.TaskSubTypeList) { + return + } + + rsp := &pb.TaskListResp{} + if !comm.ProtoUnmarshal(data, rsp) { + logrus.Error("unmarshal err") + } + + this.itemListData = model.NewItemModelList() + for _, v := range rsp.List { + fm := &model.ItemModel{ + Id: cast.ToString(v.Id), + Label: fmt.Sprintf("%s S:%d R:%d", cast.ToString(v.TaskId), v.Status, v.Received), + } + this.itemListData.DataList = append(this.itemListData.DataList, fm) + } + this.reloadListData() + }, + }) } diff --git a/cmd/v2/ui/formview/task_receive.go b/cmd/v2/ui/formview/task_receive.go deleted file mode 100644 index 73a4d3d3c..000000000 --- a/cmd/v2/ui/formview/task_receive.go +++ /dev/null @@ -1,40 +0,0 @@ -package formview - -import ( - "go_dreamfactory/cmd/v2/lib/common" - "go_dreamfactory/cmd/v2/model" - "go_dreamfactory/cmd/v2/service" - "go_dreamfactory/comm" - "go_dreamfactory/modules/task" - "go_dreamfactory/pb" - - "fyne.io/fyne/v2" - "fyne.io/fyne/v2/widget" - "github.com/sirupsen/logrus" - "github.com/spf13/cast" -) - -type TaskReceiveView struct { - BaseformView -} - -func (this *TaskReceiveView) CreateView(t *model.TestCase) fyne.CanvasObject { - - if t.MainType == string(comm.ModuleTask) && t.SubType == task.TaskSubTypeReceive { - id := widget.NewEntry() - tagSelect := getTaskTagSelect() - this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASK_OID, id)) - this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect)) - - this.form.OnSubmit = func() { - if err := service.GetPttService().SendToClient(t.MainType, t.SubType, - &pb.TaskReceiveReq{Id: id.Text, TaskTag: cast.ToInt32(tagSelect.Selected)}); err != nil { - logrus.Error(err) - return - } - - } - } - - return this.form -} diff --git a/cmd/v2/ui/mainwindow.go b/cmd/v2/ui/mainwindow.go index 8f663cded..83d835ec8 100644 --- a/cmd/v2/ui/mainwindow.go +++ b/cmd/v2/ui/mainwindow.go @@ -148,9 +148,12 @@ func (ui *MainWindowImpl) checkVersion(parent fyne.Window) { } ver := gjson.Get(string(b), "version").String() + if strings.HasSuffix(ver, ".zip") { + ver = strings.TrimSuffix(ver, ".zip") + } logrus.WithField("version", ver).Debug("server version") if common.IsUpgrade(ver, ui.app.Metadata().Version) { - chkDialog := dialog.NewConfirm("版本检查", "检查到新版本:"+ver, func(b bool) { + chkDialog := dialog.NewConfirm("版本检查", "检查到新版本:"+ver+" 请升级后使用", func(b bool) { var commands = map[string]string{ "windows": "explorer", "darwin": "open", @@ -167,8 +170,8 @@ func (ui *MainWindowImpl) checkVersion(parent fyne.Window) { cmd := exec.Command(run, uri) return cmd.Run() } - open(ui.configService.GetConfig().UpgradeUrl) - + _ = open(ui.configService.GetConfig().UpgradeUrl) + defer parent.Close() }, parent) chkDialog.SetConfirmText(common.BUTTON_OK) chkDialog.Show() diff --git a/cmd/v2/ui/protocol.go b/cmd/v2/ui/protocol.go index 9cf317c71..df4dfd8ae 100644 --- a/cmd/v2/ui/protocol.go +++ b/cmd/v2/ui/protocol.go @@ -44,7 +44,6 @@ var ( ff(comm.ModuleMail, "getallmailattachment"): &formview.MailAttachmentAllView{}, //task ff(comm.ModuleTask, task.TaskSubTypeList): &formview.TaskListView{}, - ff(comm.ModuleTask, task.TaskSubTypeReceive): &formview.TaskReceiveView{}, ff(comm.ModuleTask, task.TaskSubTypeActiveList): &formview.TaskActiveListView{}, ff(comm.ModuleTask, task.TaskSubTypeActiveReceive): &formview.TaskActiveReceiveView{}, // hero @@ -121,7 +120,6 @@ var ( }, "task": { ff(comm.ModuleTask, task.TaskSubTypeList), - ff(comm.ModuleTask, task.TaskSubTypeReceive), ff(comm.ModuleTask, task.TaskSubTypeActiveList), ff(comm.ModuleTask, task.TaskSubTypeActiveReceive), }, @@ -277,15 +275,8 @@ var ( Rsp: &pb.TaskListResp{}, Enabled: true, }, - "task.receive": { - NavLabel: "任务领取", - Desc: "用户任务领取", - MainType: "task", - SubType: "receive", - Enabled: true, - }, ff(comm.ModuleTask, task.TaskSubTypeActiveList): { - NavLabel: "活跃度", + NavLabel: "活跃度列表", Desc: "用户活跃度列表", MainType: string(comm.ModuleTask), SubType: task.TaskSubTypeActiveList, diff --git a/modules/task/config.go b/modules/task/config.go index 8d6f1c34e..3c3c0385a 100644 --- a/modules/task/config.go +++ b/modules/task/config.go @@ -76,14 +76,17 @@ func (this *configureComp) getTaskById(taskId int32) (data *cfg.GametaskRoundDat } //是否第一个成就任务 -func (this *configureComp) isFirstTask(taskId int32) bool { +func (this *configureComp) isFirstTask(taskId int32) (ok bool) { data := this.getTaskByTag(int32(comm.TASK_ACHIEVE)) for _, v := range data { if v.IdAfter == taskId { - return false + ok = false + } else { + ok = true } + break } - return true + return } // 上一个任务 diff --git a/modules/task/model_task.go b/modules/task/model_task.go index 9e313d226..bf6b36ba9 100644 --- a/modules/task/model_task.go +++ b/modules/task/model_task.go @@ -82,7 +82,7 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) (newli newlist = append(newlist, v) } } - + break } }