init
This commit is contained in:
42
internal/tray/controller.go
Normal file
42
internal/tray/controller.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package tray
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
)
|
||||
|
||||
const (
|
||||
wmLeftButtonUp = 0x0202
|
||||
wmLeftButtonDoubleClick = 0x0203
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Tooltip string
|
||||
IconPath string
|
||||
OnOpen func()
|
||||
}
|
||||
|
||||
type Controller struct {
|
||||
config Config
|
||||
}
|
||||
|
||||
func Start(ctx context.Context, config Config) (func(), error) {
|
||||
if config.OnOpen == nil {
|
||||
return nil, errors.New("tray open handler is required")
|
||||
}
|
||||
return start(ctx, newController(config))
|
||||
}
|
||||
|
||||
func newController(config Config) *Controller {
|
||||
return &Controller{config: config}
|
||||
}
|
||||
|
||||
func (c *Controller) handleTrayEvent(event uintptr) bool {
|
||||
if event&0xffff != wmLeftButtonDoubleClick {
|
||||
return false
|
||||
}
|
||||
if c.config.OnOpen != nil {
|
||||
c.config.OnOpen()
|
||||
}
|
||||
return true
|
||||
}
|
||||
Reference in New Issue
Block a user