mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2026-03-19 02:19:45 +08:00
fix basic config layout
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
"AynaLivePlayer/pkg/logger"
|
||||
loggerRepo "AynaLivePlayer/pkg/logger/repository"
|
||||
"flag"
|
||||
"time"
|
||||
)
|
||||
|
||||
var dev = flag.Bool("dev", false, "dev")
|
||||
@@ -50,7 +51,12 @@ func main() {
|
||||
global.Logger.Infof("================Current Version: %s================", model.Version(config.Version))
|
||||
internal.Initialize()
|
||||
gui.Initialize()
|
||||
global.EventManager.Start()
|
||||
go func() {
|
||||
// temporary fix for gui not render correctly.
|
||||
// wait until gui rendered then start event dispatching
|
||||
time.Sleep(1 * time.Second)
|
||||
global.EventManager.Start()
|
||||
}()
|
||||
//plugins := []adapter.Plugin{diange.NewDiange(mainController), qiege.NewQiege(mainController),
|
||||
// textinfo.NewTextInfo(mainController), webinfo.NewWebInfo(mainController),
|
||||
// wylogin.NewWYLogin(mainController)}
|
||||
|
||||
BIN
assets/msyh1.ttf
BIN
assets/msyh1.ttf
Binary file not shown.
Binary file not shown.
@@ -1,7 +1,22 @@
|
||||
package events
|
||||
|
||||
import "AynaLivePlayer/core/model"
|
||||
|
||||
const PlayerVideoPlayerSetWindowHandleCmd = "cmd.player.videoplayer.set_window_handle"
|
||||
|
||||
type PlayerVideoPlayerSetWindowHandleCmdEvent struct {
|
||||
Handle uintptr
|
||||
}
|
||||
|
||||
const PlayerSetAudioDeviceCmd = "cmd.player.set_audio_device"
|
||||
|
||||
type PlayerSetAudioDeviceCmdEvent struct {
|
||||
Device string
|
||||
}
|
||||
|
||||
const PlayerAudioDeviceUpdate = "update.player.audio_device"
|
||||
|
||||
type PlayerAudioDeviceUpdateEvent struct {
|
||||
Current string
|
||||
Devices []model.AudioDevice
|
||||
}
|
||||
|
||||
@@ -4,15 +4,3 @@ type AudioDevice struct {
|
||||
Name string
|
||||
Description string
|
||||
}
|
||||
|
||||
type PlayerPropertyValue any
|
||||
type PlayerProperty string
|
||||
|
||||
const (
|
||||
PlayerPropIdleActive PlayerProperty = "idle-active"
|
||||
PlayerPropTimePos PlayerProperty = "time-pos"
|
||||
PlayerPropDuration PlayerProperty = "duration"
|
||||
PlayerPropPercentPos PlayerProperty = "percent-pos"
|
||||
PlayerPropPause PlayerProperty = "pause"
|
||||
PlayerPropVolume PlayerProperty = "volume"
|
||||
)
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package gui
|
||||
|
||||
import (
|
||||
"AynaLivePlayer/core/events"
|
||||
"AynaLivePlayer/core/model"
|
||||
"AynaLivePlayer/gui/component"
|
||||
"AynaLivePlayer/pkg/config"
|
||||
"AynaLivePlayer/global"
|
||||
"AynaLivePlayer/pkg/event"
|
||||
"AynaLivePlayer/pkg/i18n"
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/dialog"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
)
|
||||
|
||||
@@ -28,80 +28,119 @@ func (b *bascicConfig) CreatePanel() fyne.CanvasObject {
|
||||
return b.panel
|
||||
}
|
||||
|
||||
playerRandomCheck := widget.NewCheck(i18n.T("gui.config.basic.random_playlist.user"),
|
||||
func(b bool) {
|
||||
mode := model.PlaylistModeNormal
|
||||
if b {
|
||||
mode = model.PlaylistModeRandom
|
||||
}
|
||||
logger.Infof("Set player playlist mode to %d", mode)
|
||||
global.EventManager.CallA(events.PlaylistModeChangeCmd(model.PlaylistIDPlayer),
|
||||
events.PlaylistModeChangeCmdEvent{
|
||||
Mode: mode,
|
||||
})
|
||||
})
|
||||
global.EventManager.RegisterA(events.PlaylistModeChangeUpdate(model.PlaylistIDPlayer),
|
||||
"gui.config.basic.random_playlist.player",
|
||||
func(event *event.Event) {
|
||||
data := event.Data.(events.PlaylistModeChangeUpdateEvent)
|
||||
playerRandomCheck.SetChecked(data.Mode == model.PlaylistModeRandom)
|
||||
})
|
||||
|
||||
systemRandomCheck := widget.NewCheck(i18n.T("gui.config.basic.random_playlist.system"),
|
||||
func(b bool) {
|
||||
mode := model.PlaylistModeNormal
|
||||
if b {
|
||||
mode = model.PlaylistModeRandom
|
||||
}
|
||||
global.EventManager.CallA(events.PlaylistModeChangeCmd(model.PlaylistIDSystem),
|
||||
events.PlaylistModeChangeCmdEvent{
|
||||
Mode: mode,
|
||||
})
|
||||
})
|
||||
|
||||
global.EventManager.RegisterA(events.PlaylistModeChangeUpdate(model.PlaylistIDSystem),
|
||||
"gui.config.basic.random_playlist.system",
|
||||
func(event *event.Event) {
|
||||
data := event.Data.(events.PlaylistModeChangeUpdateEvent)
|
||||
systemRandomCheck.SetChecked(data.Mode == model.PlaylistModeRandom)
|
||||
})
|
||||
|
||||
randomPlaylist := container.NewHBox(
|
||||
widget.NewLabel(i18n.T("gui.config.basic.random_playlist")),
|
||||
newCheckInit(
|
||||
i18n.T("gui.config.basic.random_playlist.user"),
|
||||
func(b bool) {
|
||||
logger.Infof("Set random playlist for user: %t", b)
|
||||
if b {
|
||||
API.Playlists().GetCurrent().Model().Mode = model.PlaylistModeRandom
|
||||
} else {
|
||||
API.Playlists().GetCurrent().Model().Mode = model.PlaylistModeNormal
|
||||
}
|
||||
},
|
||||
API.Playlists().GetCurrent().Model().Mode == model.PlaylistModeRandom),
|
||||
newCheckInit(
|
||||
i18n.T("gui.config.basic.random_playlist.system"),
|
||||
func(b bool) {
|
||||
l().Infof("Set random playlist for system: %t", b)
|
||||
if b {
|
||||
API.Playlists().GetDefault().Model().Mode = model.PlaylistModeRandom
|
||||
} else {
|
||||
API.Playlists().GetDefault().Model().Mode = model.PlaylistModeNormal
|
||||
}
|
||||
},
|
||||
API.Playlists().GetDefault().Model().Mode == model.PlaylistModeRandom),
|
||||
playerRandomCheck,
|
||||
systemRandomCheck,
|
||||
)
|
||||
devices := API.PlayControl().GetAudioDevices()
|
||||
deviceDesc := make([]string, len(devices))
|
||||
deviceDesc2Name := make(map[string]string)
|
||||
for i, device := range devices {
|
||||
deviceDesc[i] = device.Description
|
||||
deviceDesc2Name[device.Description] = device.Name
|
||||
}
|
||||
deviceSel := widget.NewSelect(deviceDesc, func(s string) {
|
||||
API.PlayControl().SetAudioDevice(deviceDesc2Name[s])
|
||||
deviceSel := widget.NewSelect(make([]string, 0), func(s string) {
|
||||
name, ok := deviceDesc2Name[s]
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
global.EventManager.CallA(events.PlayerSetAudioDeviceCmd, events.PlayerSetAudioDeviceCmdEvent{
|
||||
Device: name,
|
||||
})
|
||||
})
|
||||
deviceSel.Selected = API.PlayControl().GetCurrentAudioDevice()
|
||||
global.EventManager.RegisterA(
|
||||
events.PlayerAudioDeviceUpdate,
|
||||
"gui.config.basic.audio_device.update",
|
||||
func(event *event.Event) {
|
||||
data := event.Data.(events.PlayerAudioDeviceUpdateEvent)
|
||||
devices := make([]string, len(data.Devices))
|
||||
deviceDesc2Name = make(map[string]string)
|
||||
currentDevice := ""
|
||||
for i, device := range data.Devices {
|
||||
devices[i] = device.Description
|
||||
deviceDesc2Name[device.Description] = device.Name
|
||||
if device.Name == data.Current {
|
||||
currentDevice = device.Description
|
||||
}
|
||||
}
|
||||
logger.Infof("update audio device. set current to %s (%s)", data.Current, deviceDesc2Name[data.Current])
|
||||
deviceSel.Options = devices
|
||||
deviceSel.Selected = currentDevice
|
||||
deviceSel.Refresh()
|
||||
})
|
||||
|
||||
outputDevice := container.NewBorder(nil, nil,
|
||||
widget.NewLabel(i18n.T("gui.config.basic.audio_device")), nil,
|
||||
deviceSel)
|
||||
skipPlaylistCheck := widget.NewCheck(i18n.T("gui.config.basic.skip_playlist"), func(b bool) {
|
||||
|
||||
})
|
||||
skipPlaylist := container.NewHBox(
|
||||
widget.NewLabel(i18n.T("gui.config.basic.skip_playlist")),
|
||||
component.NewCheckOneWayBinding(
|
||||
i18n.T("gui.config.basic.skip_playlist.prompt"),
|
||||
&API.PlayControl().Config().SkipPlaylist,
|
||||
API.PlayControl().Config().SkipPlaylist),
|
||||
skipPlaylistCheck,
|
||||
)
|
||||
skipWhenErr := container.NewHBox(
|
||||
widget.NewLabel(i18n.T("gui.config.basic.skip_when_error")),
|
||||
component.NewCheckOneWayBinding(
|
||||
i18n.T("gui.config.basic.skip_when_error.prompt"),
|
||||
&API.PlayControl().Config().AutoNextWhenFail,
|
||||
API.PlayControl().Config().AutoNextWhenFail),
|
||||
)
|
||||
checkUpdateBox := container.NewHBox(
|
||||
widget.NewLabel(i18n.T("gui.config.basic.auto_check_update")),
|
||||
component.NewCheckOneWayBinding(
|
||||
i18n.T("gui.config.basic.auto_check_update.prompt"),
|
||||
&config.General.AutoCheckUpdate,
|
||||
config.General.AutoCheckUpdate),
|
||||
)
|
||||
checkUpdateBtn := widget.NewButton(i18n.T("gui.config.basic.check_update"), func() {
|
||||
//err := API.App().CheckUpdate()
|
||||
//if err != nil {
|
||||
// showDialogIfError(err)
|
||||
// return
|
||||
//}
|
||||
//if API.App().LatestVersion().Version > API.App().Version().Version {
|
||||
// dialog.ShowCustom(
|
||||
// i18n.T("gui.update.new_version"),
|
||||
// "OK",
|
||||
// widget.NewRichTextFromMarkdown(API.App().LatestVersion().Info),
|
||||
// MainWindow)
|
||||
//}
|
||||
})
|
||||
b.panel = container.NewVBox(randomPlaylist, outputDevice, skipPlaylist, skipWhenErr, checkUpdateBox, checkUpdateBtn)
|
||||
//skipWhenErr := container.NewHBox(
|
||||
// widget.NewLabel(i18n.T("gui.config.basic.skip_when_error")),
|
||||
// component.NewCheckOneWayBinding(
|
||||
// i18n.T("gui.config.basic.skip_when_error.prompt"),
|
||||
// &API.PlayControl().Config().AutoNextWhenFail,
|
||||
// API.PlayControl().Config().AutoNextWhenFail),
|
||||
//)
|
||||
//checkUpdateBox := container.NewHBox(
|
||||
// widget.NewLabel(i18n.T("gui.config.basic.auto_check_update")),
|
||||
// component.NewCheckOneWayBinding(
|
||||
// i18n.T("gui.config.basic.auto_check_update.prompt"),
|
||||
// &config.General.AutoCheckUpdate,
|
||||
// config.General.AutoCheckUpdate),
|
||||
//)
|
||||
//checkUpdateBtn := widget.NewButton(i18n.T("gui.config.basic.check_update"), func() {
|
||||
// err := API.App().CheckUpdate()
|
||||
// if err != nil {
|
||||
// showDialogIfError(err)
|
||||
// return
|
||||
// }
|
||||
// if API.App().LatestVersion().Version > API.App().Version().Version {
|
||||
// dialog.ShowCustom(
|
||||
// i18n.T("gui.update.new_version"),
|
||||
// "OK",
|
||||
// widget.NewRichTextFromMarkdown(API.App().LatestVersion().Info),
|
||||
// MainWindow)
|
||||
// }
|
||||
//})
|
||||
//b.panel = container.NewVBox(randomPlaylist, outputDevice, skipPlaylist, skipWhenErr, checkUpdateBox, checkUpdateBtn)
|
||||
b.panel = container.NewVBox(randomPlaylist, outputDevice, skipPlaylist)
|
||||
return b.panel
|
||||
}
|
||||
|
||||
@@ -7,6 +7,20 @@ import (
|
||||
"fyne.io/fyne/v2/widget"
|
||||
)
|
||||
|
||||
var ConfigList = []ConfigLayout{
|
||||
&bascicConfig{},
|
||||
}
|
||||
|
||||
type ConfigLayout interface {
|
||||
Title() string
|
||||
Description() string
|
||||
CreatePanel() fyne.CanvasObject
|
||||
}
|
||||
|
||||
func AddConfigLayout(cfgs ...ConfigLayout) {
|
||||
ConfigList = append(ConfigList, cfgs...)
|
||||
}
|
||||
|
||||
func createConfigLayout() fyne.CanvasObject {
|
||||
// initialize config panels
|
||||
for _, c := range ConfigList {
|
||||
|
||||
@@ -54,9 +54,9 @@ func Initialize() {
|
||||
container.NewTabItem(i18n.T("gui.tab.history"),
|
||||
container.NewBorder(nil, nil, nil, nil, createHistoryList()),
|
||||
),
|
||||
//container.NewTabItem(i18n.T("gui.tab.config"),
|
||||
// createConfigLayout(),
|
||||
//),
|
||||
container.NewTabItem(i18n.T("gui.tab.config"),
|
||||
createConfigLayout(),
|
||||
),
|
||||
)
|
||||
|
||||
tabs.SetTabLocation(container.TabLocationTop)
|
||||
@@ -82,9 +82,6 @@ func Initialize() {
|
||||
if config.General.ShowSystemTray {
|
||||
setupSysTray()
|
||||
}
|
||||
//if config2.General.AutoCheckUpdate {
|
||||
// go checkUpdate()
|
||||
//}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -7,7 +7,8 @@ import (
|
||||
)
|
||||
|
||||
type playerConfig struct {
|
||||
Volume float64
|
||||
Volume float64
|
||||
AudioDevice string
|
||||
}
|
||||
|
||||
func (p *playerConfig) Name() string {
|
||||
@@ -34,4 +35,7 @@ func restoreConfig() {
|
||||
data := evnt.Data.(events.PlayerPropertyVolumeUpdateEvent)
|
||||
cfg.Volume = data.Volume
|
||||
})
|
||||
global.EventManager.CallA(events.PlayerSetAudioDeviceCmd, events.PlayerSetAudioDeviceCmdEvent{
|
||||
Device: cfg.AudioDevice,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
"fmt"
|
||||
"github.com/AynaLivePlayer/miaosic"
|
||||
"github.com/aynakeya/go-mpv"
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
var running bool = false
|
||||
@@ -32,6 +33,7 @@ func SetupPlayer() {
|
||||
registerHandler()
|
||||
registerCmdHandler()
|
||||
restoreConfig()
|
||||
updateAudioDeviceList()
|
||||
log.Info("starting mpv player")
|
||||
go func() {
|
||||
for running {
|
||||
@@ -61,6 +63,7 @@ func SetupPlayer() {
|
||||
}
|
||||
|
||||
func StopPlayer() {
|
||||
cfg.AudioDevice = libmpv.GetPropertyString("audio-device")
|
||||
log.Info("stopping mpv player")
|
||||
running = false
|
||||
// stop player async, should be closed in the end anyway
|
||||
@@ -230,6 +233,21 @@ func registerCmdHandler() {
|
||||
log.Warn("set window handle failed", err)
|
||||
}
|
||||
})
|
||||
|
||||
global.EventManager.RegisterA(events.PlayerSetAudioDeviceCmd, "player.set_audio_device", func(evnt *event.Event) {
|
||||
device := evnt.Data.(events.PlayerSetAudioDeviceCmdEvent).Device
|
||||
err := libmpv.SetPropertyString("audio-device", device)
|
||||
if err != nil {
|
||||
global.EventManager.CallA(
|
||||
events.ErrorUpdate,
|
||||
events.ErrorUpdateEvent{
|
||||
Error: err,
|
||||
})
|
||||
log.Warn("set audio device failed", err)
|
||||
}
|
||||
log.Infof("set audio device to %s", device)
|
||||
return
|
||||
})
|
||||
}
|
||||
|
||||
func SetWindowHandle(handle uintptr) error {
|
||||
@@ -238,35 +256,26 @@ func SetWindowHandle(handle uintptr) error {
|
||||
return libmpv.SetOptionString("vo", "gpu")
|
||||
}
|
||||
|
||||
//func (p *MpvPlayer) IsIdle() bool {
|
||||
// property, err := p.libmpv.GetProperty("idle-active", mpv.FORMAT_FLAG)
|
||||
// if err != nil {
|
||||
// p.log.Warn("[MPV Player] get property idle-active failed", err)
|
||||
// return false
|
||||
// }
|
||||
// return property.(bool)
|
||||
//}
|
||||
|
||||
//// GetAudioDeviceList get output device for mpv
|
||||
//// return format is []AudioDevice
|
||||
//func (p *MpvPlayer) GetAudioDeviceList() ([]model.AudioDevice, error) {
|
||||
// p.log.Debugf("[MPV Player] getting audio device list for mpv")
|
||||
// property, err := p.libmpv.GetProperty("audio-device-list", mpv.FORMAT_STRING)
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
// dl := make([]model.AudioDevice, 0)
|
||||
// gjson.Parse(property.(string)).ForEach(func(key, value gjson.Result) bool {
|
||||
// dl = append(dl, model.AudioDevice{
|
||||
// Name: value.Get("name").String(),
|
||||
// Description: value.Get("description").String(),
|
||||
// })
|
||||
// return true
|
||||
// })
|
||||
// return dl, nil
|
||||
//}
|
||||
//
|
||||
//func (p *MpvPlayer) SetAudioDevice(device string) error {
|
||||
// p.log.Debugf("[MPV Player] set audio device %s for mpv", device)
|
||||
// return p.libmpv.SetPropertyString("audio-device", device)
|
||||
//}
|
||||
// // updateAudioDeviceList get output device for mpv
|
||||
// // return format is []AudioDevice
|
||||
func updateAudioDeviceList() {
|
||||
property, err := libmpv.GetProperty("audio-device-list", mpv.FORMAT_STRING)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ad := libmpv.GetPropertyString("audio-device")
|
||||
dl := make([]model.AudioDevice, 0)
|
||||
gjson.Parse(property.(string)).ForEach(func(key, value gjson.Result) bool {
|
||||
dl = append(dl, model.AudioDevice{
|
||||
Name: value.Get("name").String(),
|
||||
Description: value.Get("description").String(),
|
||||
})
|
||||
return true
|
||||
})
|
||||
log.Infof("update audio device list %v, current %s", dl, ad)
|
||||
global.EventManager.CallA(events.PlayerAudioDeviceUpdate, events.PlayerAudioDeviceUpdateEvent{
|
||||
Current: ad,
|
||||
Devices: dl,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -40,7 +40,8 @@ func newPlaylist(id model.PlaylistID) *playlist {
|
||||
pl.Next(event.Data.(events.PlaylistNextCmdEvent).Remove)
|
||||
})
|
||||
global.EventManager.RegisterA(events.PlaylistModeChangeCmd(id), "internal.playlist.mode", func(event *event.Event) {
|
||||
pl.mode = event.Data.(events.PlaylistModeChangeUpdateEvent).Mode
|
||||
pl.mode = event.Data.(events.PlaylistModeChangeCmdEvent).Mode
|
||||
log.Infof("Playlist %s mode changed to %d", id, pl.mode)
|
||||
global.EventManager.CallA(events.PlaylistModeChangeUpdate(id), events.PlaylistModeChangeUpdateEvent{
|
||||
Mode: pl.mode,
|
||||
})
|
||||
|
||||
@@ -16,6 +16,7 @@ var SystemPlaylist *playlist = nil
|
||||
var PlaylistsPlaylist *playlist = nil
|
||||
|
||||
type playlistConfig struct {
|
||||
PlayerPlaylistMode model.PlaylistMode
|
||||
SystemPlaylistMode model.PlaylistMode
|
||||
SystemPlaylistID string
|
||||
PlaylistsPath string
|
||||
@@ -40,6 +41,7 @@ func (p *playlistConfig) OnSave() {
|
||||
}
|
||||
|
||||
var cfg = &playlistConfig{
|
||||
PlayerPlaylistMode: model.PlaylistModeNormal,
|
||||
SystemPlaylistMode: model.PlaylistModeNormal,
|
||||
PlaylistsPath: "playlists.json",
|
||||
playlists: make([]miaosic.Playlist, 0),
|
||||
@@ -54,11 +56,11 @@ func Initialize() {
|
||||
HistoryPlaylist = newPlaylist(model.PlaylistIDHistory)
|
||||
config.LoadConfig(cfg)
|
||||
|
||||
global.EventManager.RegisterA(events.PlaylistModeChangeCmd(model.PlaylistIDSystem), "internal.playlist.system_init", func(event *event.Event) {
|
||||
cfg.SystemPlaylistMode = event.Data.(events.PlaylistModeChangeUpdateEvent).Mode
|
||||
global.EventManager.CallA(events.PlaylistModeChangeCmd(model.PlaylistIDPlayer), events.PlaylistModeChangeCmdEvent{
|
||||
Mode: cfg.PlayerPlaylistMode,
|
||||
})
|
||||
|
||||
global.EventManager.CallA(events.PlaylistModeChangeUpdate(model.PlaylistIDSystem), events.PlaylistModeChangeUpdateEvent{
|
||||
global.EventManager.CallA(events.PlaylistModeChangeCmd(model.PlaylistIDSystem), events.PlaylistModeChangeCmdEvent{
|
||||
Mode: cfg.SystemPlaylistMode,
|
||||
})
|
||||
|
||||
@@ -83,4 +85,6 @@ func Close() {
|
||||
for _, v := range allPlaylists {
|
||||
cfg.playlists = append(cfg.playlists, *v)
|
||||
}
|
||||
cfg.PlayerPlaylistMode = PlayerPlaylist.mode
|
||||
cfg.SystemPlaylistMode = SystemPlaylist.mode
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package diange
|
||||
|
||||
import (
|
||||
"AynaLivePlayer/core/adapter"
|
||||
"AynaLivePlayer/core/model"
|
||||
"AynaLivePlayer/gui"
|
||||
"AynaLivePlayer/gui/component"
|
||||
@@ -30,11 +29,9 @@ type Diange struct {
|
||||
SourceCMD []string
|
||||
cooldowns map[string]int
|
||||
panel fyne.CanvasObject
|
||||
contro adapter.IControlBridge
|
||||
log adapter.ILogger
|
||||
}
|
||||
|
||||
func NewDiange(contr adapter.IControlBridge) *Diange {
|
||||
func NewDiange() *Diange {
|
||||
return &Diange{
|
||||
UserPermission: true,
|
||||
PrivilegePermission: true,
|
||||
@@ -44,8 +41,6 @@ func NewDiange(contr adapter.IControlBridge) *Diange {
|
||||
CustomCMD: "add",
|
||||
SourceCMD: make([]string, 0),
|
||||
cooldowns: make(map[string]int),
|
||||
contro: contr,
|
||||
log: contr.Logger().WithModule(MODULE_CMD_DIANGE),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ type Qiege struct {
|
||||
AdminPermission bool
|
||||
CustomCMD string
|
||||
panel fyne.CanvasObject
|
||||
ctr adapter.IControlBridge
|
||||
}
|
||||
|
||||
func NewQiege(ctr adapter.IControlBridge) *Qiege {
|
||||
@@ -29,7 +28,6 @@ func NewQiege(ctr adapter.IControlBridge) *Qiege {
|
||||
PrivilegePermission: true,
|
||||
AdminPermission: true,
|
||||
CustomCMD: "skip",
|
||||
ctr: ctr,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user