From 68ccbd33d7f85a7f82b2b45daaac2c9f123b216a Mon Sep 17 00:00:00 2001 From: cuu Date: Wed, 12 Dec 2018 23:50:30 +0800 Subject: [PATCH] settings storage --- Menu/GameShell/10_Settings/Settings.go | 4 +- .../10_Settings/Storage/plugin_init.go | 40 +++++ .../10_Settings/Storage/storage_page.go | 149 ++++++++++++++++++ 3 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 Menu/GameShell/10_Settings/Storage/plugin_init.go create mode 100644 Menu/GameShell/10_Settings/Storage/storage_page.go diff --git a/Menu/GameShell/10_Settings/Settings.go b/Menu/GameShell/10_Settings/Settings.go index 01347e9..188ec8f 100644 --- a/Menu/GameShell/10_Settings/Settings.go +++ b/Menu/GameShell/10_Settings/Settings.go @@ -19,7 +19,8 @@ import ( "github.com/cuu/LauncherGoDev/Menu/GameShell/10_Settings/Wifi" "github.com/cuu/LauncherGoDev/Menu/GameShell/10_Settings/LauncherPy" "github.com/cuu/LauncherGoDev/Menu/GameShell/10_Settings/Update" - + "github.com/cuu/LauncherGoDev/Menu/GameShell/10_Settings/Storage" + ) type SettingsPageSelector struct { @@ -92,6 +93,7 @@ func (self *SettingsPage) GenList() []*UI.UIPlugin { &UI.UIPlugin{0,"", "Sound", "Sound Volume" , &Sound.APIOBJ}, &UI.UIPlugin{0,"", "Brightness", "BackLight Brightness", &Brightness.APIOBJ}, + &UI.UIPlugin{0,"", "Storage", "", &Storage.APIOBJ}, &UI.UIPlugin{0,"", "Update", "Update", &Update.APIOBJ}, &UI.UIPlugin{0,"", "About", "About", &About.APIOBJ}, diff --git a/Menu/GameShell/10_Settings/Storage/plugin_init.go b/Menu/GameShell/10_Settings/Storage/plugin_init.go new file mode 100644 index 0000000..bb998ae --- /dev/null +++ b/Menu/GameShell/10_Settings/Storage/plugin_init.go @@ -0,0 +1,40 @@ +package Storage + + +import ( +/* + "github.com/veandco/go-sdl2/ttf" + + "github.com/cuu/gogame/surface" + "github.com/cuu/gogame/event" + "github.com/cuu/gogame/rect" + "github.com/cuu/gogame/color" +*/ + "github.com/cuu/LauncherGoDev/sysgo/UI" + +) + +/******************************************************************************/ +type StoragePlugin struct { + UI.Plugin + StoragePage *StoragePage +} + + +func (self *StoragePlugin) Init( main_screen *UI.MainScreen ) { + self.StoragePage = NewStoragePage() + self.StoragePage.SetScreen( main_screen) + self.StoragePage.SetName("Storage") + self.StoragePage.Init() +} + +func (self *StoragePlugin) Run( main_screen *UI.MainScreen ) { + if main_screen != nil { + main_screen.PushCurPage() + main_screen.SetCurPage(self.StoragePage) + main_screen.Draw() + main_screen.SwapAndShow() + } +} + +var APIOBJ StoragePlugin diff --git a/Menu/GameShell/10_Settings/Storage/storage_page.go b/Menu/GameShell/10_Settings/Storage/storage_page.go new file mode 100644 index 0000000..a1aae3f --- /dev/null +++ b/Menu/GameShell/10_Settings/Storage/storage_page.go @@ -0,0 +1,149 @@ +package Storage + +import ( + "fmt" + "syscall" + + "github.com/cuu/gogame/draw" + "github.com/cuu/gogame/color" + + "github.com/cuu/LauncherGoDev/sysgo/UI" + +) + +const ( + B = 1 + KB = 1024 * B + MB = 1024 * KB + GB = 1024 * MB +) + +type StoragePage struct { + UI.Page + + BGpng UI.IconItemInterface + BGwidth int // 96 + BGheight int // 73 + BGlabel UI.LabelInterface + FreeLabel UI.LabelInterface + + BGmsg string // "%.1GB of %.1fGB Used" + + DskUsg [2]float64 + HighColor *color.Color //MySkinManager.GiveColor('High') + +} + +type DiskStatus struct { + All uint64 `json:"all"` + Used uint64 `json:"used"` + Free uint64 `json:"free"` +} + +func DiskUsage(path string) (disk DiskStatus) { + fs := syscall.Statfs_t{} + err := syscall.Statfs(path, &fs) + if err != nil { + return + } + disk.All = fs.Blocks * uint64(fs.Bsize) + disk.Free = fs.Bfree * uint64(fs.Bsize) + disk.Used = disk.All - disk.Free + return +} + +func NewStoragePage() *StoragePage { + p:= &StoragePage{} + + p.PageIconMargin = 20 + p.SelectedIconTopOffset = 20 + p.EasingDur = 10 + + p.Align = UI.ALIGN["SLeft"] + + p.FootMsg = [5]string{"Nav","","","Back",""} + + p.HighColor = &color.Color{51, 166, 255,255} + + p.BGwidth = 96 + p.BGheight = 73 + + p.BGmsg = "%.1fGB of %.1fGB Used" + return p +} + +func (self *StoragePage) DiskUsage() (float64,float64) { + disk := DiskUsage("/") + + all := float64(disk.All)/float64(GB) + + free := float64(disk.Free)/float64(GB) + + return free,all + +} + +func (self *StoragePage) Init() { + + self.DskUsg[0],self.DskUsg[1] = self.DiskUsage() + + self.CanvasHWND = self.Screen.CanvasHWND + self.Width = self.Screen.Width + self.Height = self.Screen.Height + + bgpng := UI.NewIconItem() + bgpng.ImgSurf = UI.MyIconPool.GetImgSurf("icon_sd") + bgpng.MyType = UI.ICON_TYPES["STAT"] + bgpng.Parent = self + + bgpng.AddLabel( fmt.Sprintf(self.BGmsg,self.DskUsg[1]-self.DskUsg[0],self.DskUsg[1]),UI.Fonts["varela15"]) + bgpng.Adjust(0,0,self.BGwidth,self.BGheight,0) + + self.BGpng = bgpng + self.BGlabel = UI.NewLabel() + self.BGlabel.SetCanvasHWND(self.CanvasHWND) + + usage_percent := int((self.DskUsg[0]/self.DskUsg[1])*100.0) + + self.BGlabel.Init(fmt.Sprintf("%d%%",usage_percent ),UI.Fonts["varela25"],nil) + self.BGlabel.SetColor(self.HighColor) + + self.FreeLabel = UI.NewLabel() + self.FreeLabel.SetCanvasHWND(self.CanvasHWND) + self.FreeLabel.Init("Free",UI.Fonts["varela13"],nil) + self.FreeLabel.SetColor(self.BGlabel.(*UI.Label).Color) + +} + +func (self *StoragePage) Draw() { + self.ClearCanvas() + + self.BGpng.NewCoord(self.Width/2,self.Height/2-10) + self.BGpng.Draw() + + self.BGlabel.NewCoord(self.Width/2-28,self.Height/2-30) + self.BGlabel.Draw() + + x,_ := self.BGlabel.Coord() + self.FreeLabel.NewCoord(x+10 ,self.Height/2) + self.FreeLabel.Draw() + + usage_percent := (self.DskUsg[0]/self.DskUsg[1] ) + if usage_percent < 0.1 { + usage_percent = 0.1 + } + + rect_ := draw.MidRect(self.Width/2,self.Height-30,170,17, UI.Width,UI.Height) + + draw.AARoundRect(self.CanvasHWND,rect_,&color.Color{169,169,169,255},5,0,&color.Color{169,169,169,255}) + + rect2_ := draw.MidRect(self.Width/2,self.Height-30,int(170.0*(1.0-usage_percent)),17, UI.Width,UI.Height) + + rect2_.X = rect_.X + rect2_.Y = rect_.Y + + + draw.AARoundRect(self.CanvasHWND,rect2_,&color.Color{131,199,219,255},5,0,&color.Color{131,199,219,255}) + + +}