dreamfactory_cmd/cmd/v2/ui/tool_newlock.go
2023-06-09 21:58:02 +08:00

74 lines
1.7 KiB
Go

package ui
import (
"errors"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"image/color"
"strconv"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"github.com/sethvargo/go-password/password"
)
type appLock struct {
appAdapter
}
func (this *appLock) LazyInit(ptService service.PttService, obs observer.Observer) error {
this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_SEC, theme.DownloadIcon(), nil)
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
title := canvas.NewText("输入密码长度", color.White)
input := widget.NewEntry()
input.SetPlaceHolder("长度范围10-63")
text := canvas.NewText("", color.White)
text.TextSize = 16
btn := widget.NewButtonWithIcon("生成", theme.ConfirmIcon(), func() {
passwordLength, _ := strconv.Atoi(input.Text)
//Avoids length errors
if passwordLength <= 10 || passwordLength >= 63 {
passwordLength = 10
}
text.Text = password.MustGenerate(passwordLength, 5, 5, false, false)
text.Refresh()
})
copybtn := widget.NewButtonWithIcon("复制密码", theme.ContentCopyIcon(), func() {
if text.Text == "" {
dialog.ShowError(errors.New("请生成密码"), toolWin.w)
return
}
toolWin.w.Clipboard().SetContent(text.Text)
common.ShowTip("已复制到剪贴板")
})
c := container.NewVBox(title, input, text, btn, copybtn)
content.Objects = append(content.Objects, c)
this.tabItem.Content = content
return nil
}
func (a *appLock) GetAppName() string {
return common.TOOLBAR_SEC
}
func (a *appLock) Icon() fyne.Resource {
return theme.DownloadIcon()
}