|
@@ -0,0 +1,180 @@
|
|
|
+package UI
|
|
|
+
|
|
|
+import (
|
|
|
+ "log"
|
|
|
+ "strconv"
|
|
|
+ "bufio"
|
|
|
+ "strings"
|
|
|
+
|
|
|
+ "github.com/veandco/go-sdl2/sdl"
|
|
|
+
|
|
|
+ "github.com/cuu/gogame/surface"
|
|
|
+
|
|
|
+ "github.com/itchyny/volume-go"
|
|
|
+
|
|
|
+ "../sysgo"
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+var TitleBar_BarHeight = 24
|
|
|
+
|
|
|
+type TitleBar struct {
|
|
|
+
|
|
|
+ PosX int
|
|
|
+ PosY int
|
|
|
+ Width int
|
|
|
+ Height int
|
|
|
+ BarHeight int
|
|
|
+ LOffset int
|
|
|
+ ROffset int
|
|
|
+ Icons map[string]interface{}
|
|
|
+ IconWidth
|
|
|
+ IconHeight
|
|
|
+ BorderWidth
|
|
|
+ CanvasHWND *sdl.Surface
|
|
|
+ HWND interface{}
|
|
|
+ Title string
|
|
|
+ InLowBackLight int
|
|
|
+ SkinManager interface{}
|
|
|
+
|
|
|
+ icon_base_path string /// SkinMap("gameshell/titlebar_icons/")
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func NewTitleBar() *TitleBar {
|
|
|
+ t := &TitleBar{}
|
|
|
+
|
|
|
+
|
|
|
+ t.BorderWidth = 1
|
|
|
+
|
|
|
+ t.BarHeight = TitleBar_BarHeight
|
|
|
+ t.Height = t.BarHeight + t.BorderWidth
|
|
|
+
|
|
|
+ t.Width = Width
|
|
|
+
|
|
|
+ t.Icons = make(map[string]interface{})
|
|
|
+
|
|
|
+ //t.icon_base_path = SkinMap("gameshell/titlebar_icons/")
|
|
|
+}
|
|
|
+
|
|
|
+func (t *TitleBar) RoundRobinCheck {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (t *TitleBar) UpdateWifiStrength() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (t *TitleBar) GetWifiStrength(stren string) int {
|
|
|
+ segs := [][]int{ []int{-2,-1}, []int{0,25}, []int{25,50}, []int{50,75},int{75,100}}
|
|
|
+ stren_number,_ := strconv.Atoi( stren )
|
|
|
+ ge := 0
|
|
|
+ if stren_number == 0 {
|
|
|
+ return ge
|
|
|
+ }
|
|
|
+
|
|
|
+ for i,v in range segs {
|
|
|
+ if stren_number >= v[0] && stren_number <= v[1] {
|
|
|
+ ge = i
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return ge
|
|
|
+}
|
|
|
+
|
|
|
+func (t *TitleBar) SyncSoundVolume() {
|
|
|
+
|
|
|
+ vol, err := volume.GetVolume()
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("get volume failed: %+v", err)
|
|
|
+ vol = 0
|
|
|
+ }
|
|
|
+ fmt.Printf("current volume: %d\n", vol)
|
|
|
+
|
|
|
+ snd_segs := [][]int{ []int{0,10}, []int{10,30}, []int{30,70},[]int{70,100} }
|
|
|
+ ge := 0
|
|
|
+
|
|
|
+ for i,v in range snd_segs {
|
|
|
+ if vol >= v[0] && vol <= v[1] {
|
|
|
+ ge = i
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+}
|
|
|
+
|
|
|
+func (t *TitleBar) SetSoundVolume(vol int) {
|
|
|
+ //pass
|
|
|
+}
|
|
|
+
|
|
|
+func (t *TitleBar) CheckBatteryStat() {
|
|
|
+ bat_segs:= [][]int{[]int{0,6},[]int{7,15},[]int{16,20},[]int{21,30},[]int{31,50},[]int{51,60},[]int{61,80},[]int{81,90},[]int{91,100}}
|
|
|
+
|
|
|
+ file, err := os.Open( sysgo.Battery )
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Could not open file ", sysgo.Battery)
|
|
|
+ t.Icons["battery"] = t.Icons["battery_unknown"]
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ defer file.Close()
|
|
|
+
|
|
|
+ bat_uevent := make([string]string)
|
|
|
+
|
|
|
+ scanner := bufio.NewScanner(file)
|
|
|
+ scanner.Split(bufio.ScanLines)
|
|
|
+
|
|
|
+ for scanner.Scan() {
|
|
|
+ line := scanner.Text()
|
|
|
+ line = strings.Trim(line," ")
|
|
|
+ pis := strings.Split(line,"=")
|
|
|
+ if len(pis) > 1 {
|
|
|
+ bat_uevent[ pis[0] ] = pis[1]
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ cur_cap := 0
|
|
|
+
|
|
|
+ if val, ok := bat_uevent["POWER_SUPPLY_CAPACITY"]; ok {
|
|
|
+ cur_cap = strings.Atoi(val)
|
|
|
+ }else {
|
|
|
+ cur_cap = 0
|
|
|
+ }
|
|
|
+
|
|
|
+ cap_ge := 0
|
|
|
+
|
|
|
+ for i,v in range bat_segs {
|
|
|
+ if cur_cap >= v[0] && cur_cap <= v[1] {
|
|
|
+ cap_ge = i
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if val, ok := bat_uevent["POWER_SUPPLY_STATUS"]; ok {
|
|
|
+ if val == "Charging" {
|
|
|
+ t.Icons["battery_charging"].IconIndex = cap_ge
|
|
|
+ t.Icons["battery"] = t.Icons["battery_charging"]
|
|
|
+ }else {
|
|
|
+ t.Icons["battery_charging"].IconIndex = cap_ge
|
|
|
+ t.Icons["battery"] = t.Icons["battery_discharging"]
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (t *TitleBar) SetBatteryStat( bat int) {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (t *TitleBar) Init(screen *MainScreen) {
|
|
|
+
|
|
|
+ start_x := 0
|
|
|
+
|
|
|
+ t.CanvasHWND = surface.Surface(t.Width,t.Height)
|
|
|
+ t.HWND = screen
|
|
|
+
|
|
|
+ icon_wifi_statu := NewMultiIconItem()
|
|
|
+
|
|
|
+}
|