__init__.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. import os
  4. ## local UI import
  5. from UI.page import Page
  6. from UI.skin_manager import MySkinManager
  7. from UI.constants import ICON_TYPES,Width,Height
  8. from UI.icon_item import IconItem
  9. from UI.icon_pool import MyIconPool
  10. from UI.label import Label
  11. from UI.util_funcs import midRect
  12. from libs.roundrects import aa_round_rect
  13. class StoragePage(Page):
  14. _Icons = {}
  15. _BGpng = None
  16. _BGwidth = 96
  17. _BGheight = 73
  18. _BGlabel = None
  19. _FreeLabel = None
  20. _BGmsg = "%.1fGB of %.1fGB Used"
  21. _DskUsg = None
  22. _HighColor = MySkinManager.GiveColor('High')
  23. _FootMsg = ["Nav.","","","Back",""]
  24. def __init__(self):
  25. Page.__init__(self)
  26. self._Icons = {}
  27. def DiskUsage(self):
  28. statvfs = os.statvfs('/')
  29. total_space = (statvfs.f_frsize * statvfs.f_blocks)/1024.0/1024.0/1024.0
  30. avail_space = ( statvfs.f_frsize * statvfs.f_bavail) / 1024.0 / 1024.0/ 1024.0
  31. return avail_space,total_space
  32. def Init(self):
  33. self._DskUsg = self.DiskUsage()
  34. self._CanvasHWND = self._Screen._CanvasHWND
  35. self._Width = self._Screen._Width
  36. self._Height = self._Screen._Height
  37. self._BGpng = IconItem()
  38. self._BGpng._ImgSurf = MyIconPool.GiveIconSurface("icon_sd")
  39. self._BGpng._MyType = ICON_TYPES["STAT"]
  40. self._BGpng._Parent = self
  41. self._BGpng.AddLabel(self._BGmsg % (self._DskUsg[1]-self._DskUsg[0], self._DskUsg[1]), MySkinManager.GiveFont("varela15"))
  42. self._BGpng.Adjust(0,0,self._BGwidth,self._BGheight,0)
  43. self._BGlabel = Label()
  44. self._BGlabel.SetCanvasHWND(self._CanvasHWND)
  45. usage_percent = (self._DskUsg[0]/self._DskUsg[1] )*100.0
  46. self._BGlabel.Init("%d%%"% int(usage_percent),MySkinManager.GiveFont("varela25"))
  47. self._BGlabel.SetColor( self._HighColor )
  48. self._FreeLabel = Label()
  49. self._FreeLabel.SetCanvasHWND(self._CanvasHWND)
  50. self._FreeLabel.Init("Free",MySkinManager.GiveFont("varela13"))
  51. self._FreeLabel.SetColor(self._BGlabel._Color)
  52. def OnLoadCb(self):
  53. pass
  54. def Draw(self):
  55. self.ClearCanvas()
  56. self._BGpng.NewCoord(self._Width/2,self._Height/2-10)
  57. self._BGpng.Draw()
  58. self._BGlabel.NewCoord(self._Width/2-28,self._Height/2-30)
  59. self._BGlabel.Draw()
  60. self._FreeLabel.NewCoord(self._BGlabel._PosX+10 ,self._Height/2)
  61. self._FreeLabel.Draw()
  62. #bgcolor = (238,238,238), fgcolor = (126,206,244)
  63. #aa_round_rect
  64. usage_percent = (self._DskUsg[0]/self._DskUsg[1] )
  65. if usage_percent < 0.1:
  66. usage_percent = 0.1
  67. rect_ = midRect(self._Width/2,self._Height-30,170,17, Width,Height)
  68. aa_round_rect(self._CanvasHWND, rect_, MySkinManager.GiveColor('Line'), 5, 0, MySkinManager.GiveColor('Line'))
  69. rect2 = midRect(self._Width/2,self._Height-30,int(170*(1.0-usage_percent)),17, Width,Height)
  70. rect2.left = rect_.left
  71. rect2.top = rect_.top
  72. aa_round_rect(self._CanvasHWND,rect2, MySkinManager.GiveColor('Front'),5,0,MySkinManager.GiveColor('Front'))
  73. class APIOBJ(object):
  74. _StoragePage = None
  75. def __init__(self):
  76. pass
  77. def Init(self,main_screen):
  78. self._StoragePage = StoragePage()
  79. self._StoragePage._Screen = main_screen
  80. self._StoragePage._Name ="Storage"
  81. self._StoragePage.Init()
  82. def API(self,main_screen):
  83. if main_screen !=None:
  84. main_screen.PushPage(self._StoragePage)
  85. main_screen.Draw()
  86. main_screen.SwapAndShow()
  87. OBJ = APIOBJ()
  88. def Init(main_screen):
  89. OBJ.Init(main_screen)
  90. def API(main_screen):
  91. OBJ.API(main_screen)