完善个人数据维护, 初步建立局域网链接逻辑
This commit is contained in:
+83
-14
@@ -1,32 +1,101 @@
|
||||
package views
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/canvas"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/data/binding"
|
||||
"fyne.io/fyne/v2/dialog"
|
||||
"fyne.io/fyne/v2/theme"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
"work_cation/assets"
|
||||
"work_cation/cfg"
|
||||
"work_cation/global"
|
||||
"work_cation/models"
|
||||
"work_cation/pkg/utils"
|
||||
"work_cation/repo"
|
||||
)
|
||||
|
||||
func mainUserViews(w fyne.Window) fyne.CanvasObject {
|
||||
image := canvas.NewImageFromResource(assets.LogoDataSR)
|
||||
image.FillMode = canvas.ImageFillContain
|
||||
|
||||
user := repo.User.GetUserInfo(global.DB)
|
||||
|
||||
userCard := widget.NewCard(
|
||||
user.Name,
|
||||
user.Ip,
|
||||
nil)
|
||||
userCard.SetImage(image)
|
||||
|
||||
return container.NewBorder(nil,
|
||||
func mainUserViews(_ fyne.Window) fyne.CanvasObject {
|
||||
var userCard = widget.NewCard("", "", nil)
|
||||
user1 := repo.User.GetUserInfo(global.DB)
|
||||
refresh := func(user *models.Users) {
|
||||
userCard.SetTitle(user.Name)
|
||||
userCard.SetSubTitle(user.Ip)
|
||||
image := canvas.NewImageFromResource(assets.LogoDataSR)
|
||||
if user.Avatar != "" {
|
||||
bytes, err := os.ReadFile(filepath.Join(cfg.T.Avatar, user.Avatar))
|
||||
if err == nil {
|
||||
image.Resource = fyne.NewStaticResource("", bytes)
|
||||
}
|
||||
}
|
||||
image.FillMode = canvas.ImageFillContain
|
||||
userCard.SetImage(image)
|
||||
}
|
||||
refresh(user1)
|
||||
return container.NewBorder(widget.NewToolbar(widget.NewToolbarAction(theme.SettingsIcon(), func() {
|
||||
mainUserSetWin(refresh)
|
||||
})),
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
userCard,
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
func mainUserSetWin(refresh func(*models.Users)) {
|
||||
myApp := fyne.CurrentApp()
|
||||
myWindow := myApp.NewWindow("设置个人信息")
|
||||
myWindow.CenterOnScreen()
|
||||
myWindow.Resize(fyne.NewSize(500, 0))
|
||||
myWindow.SetContent(mainUserSetView(myWindow, refresh))
|
||||
myWindow.Show()
|
||||
}
|
||||
|
||||
func mainUserSetView(w fyne.Window, refresh func(*models.Users)) fyne.CanvasObject {
|
||||
var (
|
||||
formWid = widget.NewForm()
|
||||
user = repo.User.GetUserInfo(global.DB)
|
||||
avatar = ""
|
||||
)
|
||||
formWid.SubmitText = "保存"
|
||||
formWid.OnSubmit = func() {
|
||||
if avatar != "" {
|
||||
avatarPath := fmt.Sprintf("%s_avatar%s", user.ID, filepath.Ext(avatar))
|
||||
// 删除旧的
|
||||
if user.Avatar != "" {
|
||||
err := os.Remove(filepath.Join(cfg.T.Avatar, user.Avatar))
|
||||
if err != nil {
|
||||
dialog.ShowInformation("原头像删除错误", err.Error(), w)
|
||||
}
|
||||
}
|
||||
// 拷贝文件
|
||||
err := utils.File.CopyFile(avatar, filepath.Join(cfg.T.Avatar, avatarPath))
|
||||
if err != nil {
|
||||
dialog.ShowInformation("头像地址错误", err.Error(), w)
|
||||
return
|
||||
}
|
||||
avatar = ""
|
||||
user.Avatar = avatarPath
|
||||
}
|
||||
err := repo.User.Update(global.DB, user)
|
||||
if err != nil {
|
||||
dialog.ShowInformation("保存失败", err.Error(), w)
|
||||
return
|
||||
}
|
||||
dialog.ShowInformation("结果", "保存成功", w)
|
||||
refresh(user)
|
||||
time.AfterFunc(200*time.Millisecond, w.Close)
|
||||
}
|
||||
formWid.Append("用户名", widget.NewEntryWithData(binding.BindString(&user.Name)))
|
||||
formWid.Append("头像", widget.NewEntryWithData(binding.BindString(&avatar)))
|
||||
formWid.Append("邮箱", widget.NewEntryWithData(binding.BindString(&user.Email)))
|
||||
formWid.Append("电话", widget.NewEntryWithData(binding.BindString(&user.Phone)))
|
||||
formWid.Append("工位", widget.NewEntryWithData(binding.BindString(&user.Address)))
|
||||
|
||||
return formWid
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user