102 lines
2.8 KiB
Go
102 lines
2.8 KiB
Go
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(_ 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
|
|
}
|