修正基本架构逻辑,基本实现离线功能
This commit is contained in:
+56
-11
@@ -3,24 +3,69 @@ package views
|
||||
import (
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/dialog"
|
||||
"fyne.io/fyne/v2/theme"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"work_cation/global"
|
||||
"work_cation/models"
|
||||
"work_cation/repo"
|
||||
"work_cation/views/showView"
|
||||
"work_cation/service"
|
||||
)
|
||||
|
||||
func myCardsViews(w fyne.Window) fyne.CanvasObject {
|
||||
var items []fyne.CanvasObject
|
||||
// 卡片展示界面
|
||||
func allCardsViews(w fyne.Window) fyne.CanvasObject {
|
||||
//var items []fyne.CanvasObject
|
||||
gridWrap := container.NewGridWrap(fyne.NewSize(200, 200))
|
||||
for _, baseCard := range repo.BaseCard.FindAll(global.DB) {
|
||||
switch baseCard.ToolType {
|
||||
case models.ToolTypeErlang:
|
||||
erlangCard := repo.ErlangCardRepo.Find(global.DB, baseCard.UUID)
|
||||
items = append(items, showView.ErlangCardView(w, &erlangCard))
|
||||
case models.ToolTypeExecFiles:
|
||||
if info, is := cardTypeMap[baseCard.ToolType]; is {
|
||||
var baseCardCopy = baseCard
|
||||
items = append(items, showView.ExecFileCardView(w, &baseCardCopy))
|
||||
view, err := info.showView(w, &baseCardCopy)
|
||||
if err != nil {
|
||||
view = errorCardView(w, &baseCardCopy, err)
|
||||
}
|
||||
var baseCardV *widget.Card
|
||||
baseCardV = baseCardView(w, baseCardV, baseCardCopy, gridWrap, view)
|
||||
|
||||
gridWrap.Add(baseCardV)
|
||||
}
|
||||
}
|
||||
return container.NewBorder(nil, nil, nil, nil, container.NewScroll(
|
||||
container.NewGridWrap(fyne.NewSize(200, 200), items...)))
|
||||
scroll := container.NewScroll(gridWrap)
|
||||
return container.NewBorder(nil, nil, nil, nil, scroll)
|
||||
}
|
||||
|
||||
// 单卡界面
|
||||
func baseCardView(
|
||||
w fyne.Window,
|
||||
baseCardV *widget.Card,
|
||||
baseCardCopy models.BaseCard,
|
||||
gridWrap *fyne.Container,
|
||||
view fyne.CanvasObject) *widget.Card {
|
||||
|
||||
baseCardV = widget.NewCard(baseCardCopy.Title, baseCardCopy.Text, container.NewBorder(nil, widget.NewToolbar(
|
||||
widget.NewToolbarAction(theme.ContentAddIcon(), func() {}),
|
||||
widget.NewToolbarAction(theme.DeleteIcon(), func() {
|
||||
err := service.BaseCard.Delete(global.DB, baseCardCopy)
|
||||
if err != nil {
|
||||
dialog.ShowInformation("删除失败", err.Error(), w)
|
||||
return
|
||||
}
|
||||
gridWrap.Remove(baseCardV)
|
||||
}),
|
||||
widget.NewToolbarAction(theme.SettingsIcon(), func() {}),
|
||||
widget.NewToolbarAction(theme.ViewRefreshIcon(), func() {
|
||||
|
||||
}),
|
||||
), nil, nil, view))
|
||||
return baseCardV
|
||||
}
|
||||
|
||||
func errorCardView(w fyne.Window, data *models.BaseCard, err error) fyne.CanvasObject {
|
||||
cardButton := widget.NewButton("出错尝试修复", func() {
|
||||
dialog.ShowInformation("结果", "修复失败", w)
|
||||
})
|
||||
showErrButton := widget.NewButton("工具解析错误", func() {
|
||||
dialog.ShowInformation("错误", err.Error(), w)
|
||||
})
|
||||
card := widget.NewCard(data.Title, data.Text, container.NewVBox(showErrButton, cardButton))
|
||||
return card
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user