tiny_cloud_page.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package TinyCloud
  2. import (
  3. "fmt"
  4. "github.com/cuu/gogame/event"
  5. "github.com/cuu/gogame/rect"
  6. "github.com/cuu/gogame/surface"
  7. "github.com/veandco/go-sdl2/ttf"
  8. "github.com/cuu/gogame/color"
  9. "github.com/clockworkpi/LauncherGoDev/sysgo/UI"
  10. )
  11. type TinyCloudLabel struct {
  12. Key string
  13. Lable string
  14. Font *ttf.Font
  15. Color *color.Color
  16. }
  17. type TinyCloudPage struct {
  18. UI.Page
  19. ListFontObj *ttf.Font
  20. URLColor *color.Color
  21. TextColor *color.Color
  22. Labels map[string]UI.LabelInterface
  23. Icons map[string]UI.IconItemInterface
  24. Coords map[string]UI.Coord
  25. IP string
  26. PngSize map[string]UI.Plane
  27. }
  28. func NewTinyCloudPage() *TinyCloudPage {
  29. p := &TinyCloudPage{}
  30. p.PageIconMargin = 20
  31. p.SelectedIconTopOffset = 20
  32. p.EasingDur = 10
  33. p.Align = UI.ALIGN["SLeft"]
  34. p.FootMsg = [5]string{"Nav.", "", "", "Back", ""}
  35. p.Coords = make(map[string]UI.Coord)
  36. p.PngSize = make(map[string]UI.Plane)
  37. p.URLColor = UI.MySkinManager.GiveColor("URL")
  38. p.TextColor = UI.MySkinManager.GiveColor("Text")
  39. p.ListFontObj = UI.MyLangManager.TrFont("varela13")
  40. p.Labels = make(map[string]UI.LabelInterface)
  41. p.Icons = make(map[string]UI.IconItemInterface)
  42. return p
  43. }
  44. func (self *TinyCloudPage) OnLoadCb() {
  45. self.PosY = 0
  46. }
  47. func (self *TinyCloudPage) SetCoords() {
  48. self.Coords["forID"] = UI.Coord{15, 11}
  49. self.Coords["forKey"] = UI.Coord{71, self.Coords["forID"].Y}
  50. self.Coords["key_and_pass"] = UI.Coord{36, self.Coords["forID"].Y}
  51. self.Coords["forssh"] = UI.Coord{self.Coords["forID"].X, 36}
  52. self.Coords["ssh_addr"] = UI.Coord{self.Coords["forID"].X, 54}
  53. self.Coords["forwin"] = UI.Coord{self.Coords["forID"].X, 80}
  54. self.Coords["samba_games"] = UI.Coord{self.Coords["forID"].X, 97}
  55. self.Coords["samba_music"] = UI.Coord{self.Coords["samba_games"].X, 115}
  56. self.Coords["for_airplay"] = UI.Coord{self.Coords["forID"].X, 140}
  57. self.Coords["airplay_name"] = UI.Coord{68, self.Coords["for_airplay"].Y}
  58. self.Coords["for-usb-eth"] = UI.Coord{self.Coords["forID"].X, 163}
  59. self.Coords["usb-eth-addr"] = UI.Coord{112, self.Coords["for-usb-eth"].Y}
  60. self.Coords["bg"] = UI.Coord{self.Width / 2, self.Height / 2}
  61. self.Coords["online"] = UI.Coord{266, 99}
  62. }
  63. func (self *TinyCloudPage) SetLabels() {
  64. if self.Screen.IsWifiConnectedNow() {
  65. self.IP = self.Screen.GetWirelessIP()
  66. fmt.Printf("TinyCould : %s\n", self.IP)
  67. } else {
  68. self.IP = "xxx.xxx.xxx.xxx"
  69. }
  70. labels := []*TinyCloudLabel{
  71. &TinyCloudLabel{"forssh", "For ssh and scp:", self.ListFontObj, self.TextColor},
  72. &TinyCloudLabel{"ssh_addr", fmt.Sprintf("ssh cpi@%s", self.IP), self.ListFontObj, self.URLColor},
  73. &TinyCloudLabel{"forwin", "For Windows network:", self.ListFontObj, self.TextColor},
  74. &TinyCloudLabel{"samba_games", fmt.Sprintf("\\\\%s\\games", self.IP), self.ListFontObj, self.URLColor},
  75. &TinyCloudLabel{"samba_music", fmt.Sprintf("\\\\%s\\music", self.IP), self.ListFontObj, self.URLColor},
  76. &TinyCloudLabel{"forID", "ID:", self.ListFontObj, self.TextColor},
  77. &TinyCloudLabel{"forKey", "Key:", self.ListFontObj, self.TextColor},
  78. &TinyCloudLabel{"key_and_pass", "cpi", self.ListFontObj, self.URLColor},
  79. &TinyCloudLabel{"for_airplay", "Airplay:", self.ListFontObj, self.TextColor},
  80. &TinyCloudLabel{"airplay_name", "clockworkpi", self.ListFontObj, self.URLColor},
  81. &TinyCloudLabel{"for-usb-eth", "USB-Ethernet:", self.ListFontObj, self.TextColor},
  82. &TinyCloudLabel{"usb-eth-addr", "192.168.10.1", self.ListFontObj, self.URLColor},
  83. }
  84. for _, v := range labels {
  85. l := UI.NewLabel()
  86. l.SetCanvasHWND(self.CanvasHWND)
  87. l.Init(v.Lable, v.Font, nil)
  88. l.SetColor(v.Color)
  89. self.Labels[v.Key] = l
  90. }
  91. self.SetCoords()
  92. }
  93. func (self *TinyCloudPage) Init() {
  94. if self.Screen == nil {
  95. panic("No Screen")
  96. }
  97. if self.Screen.CanvasHWND != nil && self.CanvasHWND == nil {
  98. self.HWND = self.Screen.CanvasHWND
  99. self.CanvasHWND = surface.Surface(self.Screen.Width, self.Screen.Height)
  100. }
  101. self.PosX = self.Index * self.Screen.Width
  102. self.Width = self.Screen.Width
  103. self.Height = self.Screen.Height
  104. self.PngSize["bg"] = UI.Plane{253, 114}
  105. self.PngSize["online"] = UI.Plane{75, 122}
  106. bgpng := UI.NewIconItem()
  107. bgpng.ImgSurf = UI.MyIconPool.GetImgSurf("needwifi_bg")
  108. bgpng.MyType = UI.ICON_TYPES["STAT"]
  109. bgpng.Parent = self
  110. bgpng.Adjust(0, 0, self.PngSize["bg"].W, self.PngSize["bg"].H, 0)
  111. self.Icons["bg"] = bgpng
  112. onlinepng := UI.NewIconItem()
  113. onlinepng.ImgSurf = UI.MyIconPool.GetImgSurf("online")
  114. onlinepng.MyType = UI.ICON_TYPES["STAT"]
  115. onlinepng.Parent = self
  116. onlinepng.Adjust(0, 0, self.PngSize["online"].W, self.PngSize["online"].H, 0)
  117. self.Icons["online"] = onlinepng
  118. self.SetLabels()
  119. }
  120. func (self *TinyCloudPage) KeyDown(ev *event.Event) {
  121. if ev.Data["Key"] == UI.CurKeys["A"] || ev.Data["Key"] == UI.CurKeys["Menu"] {
  122. self.ReturnToUpLevelPage()
  123. self.Screen.Draw()
  124. self.Screen.SwapAndShow()
  125. }
  126. return
  127. }
  128. func (self *TinyCloudPage) Draw() {
  129. self.ClearCanvas()
  130. if self.Screen.IsWifiConnectedNow() {
  131. self.Icons["online"].NewCoord(self.Coords["online"].X, self.Coords["online"].Y)
  132. self.Icons["online"].Draw()
  133. for k, _ := range self.Labels {
  134. if _, ok := self.Coords[k]; ok {
  135. self.Labels[k].NewCoord(self.Coords[k].X, self.Coords[k].Y)
  136. self.Labels[k].Draw()
  137. }
  138. }
  139. self.Labels["key_and_pass"].NewCoord(103, self.Coords["key_and_pass"].Y)
  140. self.Labels["key_and_pass"].Draw()
  141. } else {
  142. self.Icons["bg"].NewCoord(self.Coords["bg"].X, self.Coords["bg"].Y)
  143. self.Icons["bg"].Draw()
  144. self.Labels["for-usb-eth"].NewCoord(self.Coords["for-usb-eth"].X+55, self.Coords["for-usb-eth"].Y)
  145. self.Labels["for-usb-eth"].Draw()
  146. self.Labels["usb-eth-addr"].NewCoord(self.Coords["usb-eth-addr"].X+55, self.Coords["usb-eth-addr"].Y)
  147. self.Labels["usb-eth-addr"].Draw()
  148. }
  149. if self.HWND != nil {
  150. surface.Fill(self.HWND, UI.MySkinManager.GiveColor("white"))
  151. rect_ := rect.Rect(self.PosX, self.PosY, self.Width, self.Height)
  152. surface.Blit(self.HWND, self.CanvasHWND, &rect_, nil)
  153. }
  154. }