mirror of
https://github.com/clockworkpi/launcher.git
synced 2025-12-12 17:58:50 +01:00
add bluetooth info page
This commit is contained in:
parent
586a76d37b
commit
da2d61366f
@ -4,7 +4,7 @@ import pygame
|
||||
#import math
|
||||
import commands
|
||||
import dbus
|
||||
#from beeprint import pp
|
||||
from beeprint import pp
|
||||
from libs.roundrects import aa_round_rect
|
||||
|
||||
from libs.DBUS import bus, adapter,devices
|
||||
@ -23,17 +23,258 @@ from UI.icon_pool import MyIconPool
|
||||
from UI.icon_item import IconItem
|
||||
from UI.multi_icon_item import MultiIconItem
|
||||
from UI.skin_manager import SkinManager
|
||||
from UI.confirm_page import ConfirmPage
|
||||
from UI.info_page_list_item import InfoPageListItem
|
||||
|
||||
from UI.multilabel import MultiLabel
|
||||
|
||||
from net_item import NetItem
|
||||
|
||||
class BleForgetConfirmPage(ConfirmPage):
|
||||
|
||||
_ConfirmText = "Confirm Forget?"
|
||||
|
||||
def KeyDown(self,event):
|
||||
if event.key == CurKeys["Menu"] or event.key == CurKeys["A"]:
|
||||
self.ReturnToUpLevelPage()
|
||||
self._Screen.Draw()
|
||||
self._Screen.SwapAndShow()
|
||||
|
||||
if event.key == CurKeys["B"]:
|
||||
self.SnapMsg("Deleteing...")
|
||||
self._Screen.Draw()
|
||||
self._Screen.SwapAndShow()
|
||||
|
||||
try:
|
||||
#self._Parent._Adapter.RemoveDevice()
|
||||
print("try to RemoveDevice")
|
||||
except Exception,e:
|
||||
print(str(e))
|
||||
|
||||
pygame.time.delay(400)
|
||||
|
||||
self.ReturnToUpLevelPage()
|
||||
self._Screen.Draw()
|
||||
self._Screen.SwapAndShow()
|
||||
|
||||
|
||||
def Draw(self):
|
||||
#self.ClearCanvas()
|
||||
self.DrawBG()
|
||||
for i in self._MyList:
|
||||
i.Draw()
|
||||
|
||||
self.Reset()
|
||||
|
||||
|
||||
class BleInfoPageSelector(PageSelector):
|
||||
_BackgroundColor = SkinManager().GiveColor('Front')
|
||||
|
||||
def __init__(self):
|
||||
self._PosX = 0
|
||||
self._PosY = 0
|
||||
self._Height = 0
|
||||
|
||||
def AnimateDraw(self,x2,y2):
|
||||
pass
|
||||
|
||||
def Draw(self):
|
||||
idx = self._Parent._PsIndex
|
||||
if idx < len( self._Parent._MyList):
|
||||
x = self._PosX+2
|
||||
y = self._Parent._MyList[idx]._PosY+1
|
||||
h = self._Parent._MyList[idx]._Height -3
|
||||
|
||||
self._PosX = x
|
||||
self._PosY = y
|
||||
self._Height = h
|
||||
|
||||
aa_round_rect(self._Parent._CanvasHWND,
|
||||
(x,y,self._Width-4,h),self._BackgroundColor,4,0,self._BackgroundColor)
|
||||
|
||||
class BleInfoPage(Page):
|
||||
_FootMsg = ["Nav.","Disconnect","Forget","Back",""]
|
||||
_MyList = []
|
||||
_ListFontObj = fonts["varela15"]
|
||||
_ListFontObj = fonts["varela15"]
|
||||
_ListSmFontObj = fonts["varela12"] # small font
|
||||
_ListSm2FontObj= fonts["varela11"]
|
||||
|
||||
_AList = {}
|
||||
|
||||
def Init(self):
|
||||
if self._Screen != None:
|
||||
if self._Screen._CanvasHWND != None and self._CanvasHWND == None:
|
||||
self._CanvasHWND = self._Screen._CanvasHWND
|
||||
|
||||
self._PosX = self._Index*self._Screen._Width
|
||||
self._Width = self._Screen._Width ## equal to screen width
|
||||
self._Height = self._Screen._Height
|
||||
|
||||
ps = BleInfoPageSelector()
|
||||
ps._Parent = self
|
||||
self._Ps = ps
|
||||
self._PsIndex = 0
|
||||
|
||||
#_AList is an object
|
||||
self.GenList()
|
||||
|
||||
self._Scroller = ListScroller()
|
||||
self._Scroller._Parent = self
|
||||
self._Scroller._PosX = 2
|
||||
self._Scroller._PosY = 2
|
||||
self._Scroller.Init()
|
||||
|
||||
self._ConfirmPage1 = BleForgetConfirmPage()
|
||||
self._ConfirmPage1._Screen = self._Screen
|
||||
self._ConfirmPage1._Name = "Confirm Forget"
|
||||
self._ConfirmPage1._Parent = self
|
||||
self._ConfirmPage1.Init()
|
||||
|
||||
def GenList(self):
|
||||
if self._AList== None:
|
||||
return
|
||||
self._MyList = []
|
||||
|
||||
start_x = 0
|
||||
start_y = 0
|
||||
for i,v in enumerate( self._AList):
|
||||
#print(i,v) # (0, dbus.String(u'AddressType'))
|
||||
|
||||
li = InfoPageListItem()
|
||||
li._Parent = self
|
||||
li._PosX = start_x
|
||||
li._PosY = start_y + i*InfoPageListItem._Height
|
||||
li._Width = Width
|
||||
li._Fonts["normal"] = self._ListFontObj
|
||||
|
||||
if v == "UUIDs":
|
||||
li._Fonts["small"] = self._ListSm2FontObj
|
||||
else:
|
||||
li._Fonts["small"] = self._ListSmFontObj
|
||||
|
||||
li.Init( str(v) )
|
||||
li._Flag = v
|
||||
|
||||
if v =="UUIDs":
|
||||
pp(self._AList[v][0])
|
||||
sm_text = str(self._AList[v][0])
|
||||
else:
|
||||
sm_text = str(self._AList[v])
|
||||
|
||||
if sm_text == "0":
|
||||
sm_text="No"
|
||||
elif sm_text == "1":
|
||||
sm_text="Yes"
|
||||
|
||||
li.SetSmallText(sm_text)
|
||||
|
||||
li._PosX = 2
|
||||
self._MyList.append(li)
|
||||
|
||||
|
||||
def ScrollUp(self):
|
||||
if len(self._MyList) == 0:
|
||||
return
|
||||
self._PsIndex -= 1
|
||||
if self._PsIndex < 0:
|
||||
self._PsIndex = 0
|
||||
cur_li = self._MyList[self._PsIndex]
|
||||
if cur_li._PosY < 0:
|
||||
for i in range(0, len(self._MyList)):
|
||||
self._MyList[i]._PosY += self._MyList[i]._Height
|
||||
|
||||
|
||||
def ScrollDown(self):
|
||||
if len(self._MyList) == 0:
|
||||
return
|
||||
self._PsIndex +=1
|
||||
if self._PsIndex >= len(self._MyList):
|
||||
self._PsIndex = len(self._MyList) -1
|
||||
|
||||
cur_li = self._MyList[self._PsIndex]
|
||||
if cur_li._PosY +cur_li._Height > self._Height:
|
||||
for i in range(0,len(self._MyList)):
|
||||
self._MyList[i]._PosY -= self._MyList[i]._Height
|
||||
|
||||
def TryToForget(self):
|
||||
print("try to forget this")
|
||||
pass
|
||||
|
||||
def TryToDisconnect(self):
|
||||
print("try to Disconnect")
|
||||
pass
|
||||
|
||||
def Click(self):
|
||||
if self._PsIndex >= len(self._MyList):
|
||||
return
|
||||
|
||||
cur_li = self._MyList[self._PsIndex]
|
||||
print(cur_li._Flag)
|
||||
|
||||
def OnLoadCb(self):
|
||||
if self._AList != None:
|
||||
if "Connected" in self._AList:
|
||||
if self._AList["Connected"] == 1:
|
||||
self._FootMsg[1] = "Disconnect"
|
||||
else:
|
||||
self._FootMsg[1] = ""
|
||||
|
||||
self.GenList()
|
||||
|
||||
def OnReturnBackCb(self):
|
||||
self.ReturnToUpLevelPage()
|
||||
self._Screen.Draw()
|
||||
self._Screen.SwapAndShow()
|
||||
|
||||
def KeyDown(self,event):
|
||||
if event.key == CurKeys["A"] or event.key == CurKeys["Menu"]:
|
||||
self.ReturnToUpLevelPage()
|
||||
self._Screen.Draw()
|
||||
self._Screen.SwapAndShow()
|
||||
|
||||
if event.key == CurKeys["Up"]:
|
||||
self.ScrollUp()
|
||||
self._Screen.Draw()
|
||||
self._Screen.SwapAndShow()
|
||||
if event.key == CurKeys["Down"]:
|
||||
self.ScrollDown()
|
||||
self._Screen.Draw()
|
||||
self._Screen.SwapAndShow()
|
||||
|
||||
if event.key == CurKeys["Enter"]:
|
||||
self.Click()
|
||||
|
||||
if event.key == CurKeys["X"]:
|
||||
self.TryToDisconnect()
|
||||
|
||||
if event.key == CurKeys["Y"]:
|
||||
self.TryToForget()
|
||||
|
||||
|
||||
def Draw(self):
|
||||
if len(self._MyList) == 0:
|
||||
return
|
||||
|
||||
self.ClearCanvas()
|
||||
|
||||
if len(self._MyList) * InfoPageListItem._Height > self._Height:
|
||||
self._Ps._Width = self._Width - 10
|
||||
self._Ps._PosX = 9
|
||||
self._Ps.Draw()
|
||||
for i in self._MyList:
|
||||
i.Draw()
|
||||
|
||||
self._Scroller.UpdateSize(len(self._MyList)*InfoPageListItem._Height, self._PsIndex*InfoPageListItem._Height)
|
||||
self._Scroller.Draw()
|
||||
|
||||
else:
|
||||
self._Ps._Width = self._Width
|
||||
self._Ps.Draw()
|
||||
for i in self._MyList:
|
||||
i.Draw()
|
||||
|
||||
|
||||
|
||||
|
||||
class BleListSelector(PageSelector):
|
||||
_BackgroundColor = SkinManager().GiveColor('Front')
|
||||
@ -155,6 +396,10 @@ class BluetoothPage(Page):
|
||||
|
||||
self.GenNetworkList()
|
||||
|
||||
self._InfoPage = BleInfoPage()
|
||||
self._InfoPage._Screen = self._Screen
|
||||
self._InfoPage._Name = "Bluetooth info"
|
||||
self._InfoPage.Init()
|
||||
|
||||
def print_normal(self,address, properties):
|
||||
print("[ " + address + " ]")
|
||||
@ -200,7 +445,8 @@ class BluetoothPage(Page):
|
||||
address = devices[path]["Address"]
|
||||
else:
|
||||
address = "<unknown>"
|
||||
|
||||
|
||||
self._Devices = devices
|
||||
self.print_normal(address, devices[path])
|
||||
|
||||
def ShutDownConnecting(self):
|
||||
@ -216,7 +462,6 @@ class BluetoothPage(Page):
|
||||
def CheckIfBluetoothConnecting(self):
|
||||
return True
|
||||
|
||||
|
||||
def GenNetworkList(self):
|
||||
self._WirelessList = []
|
||||
start_x = 0
|
||||
@ -306,6 +551,15 @@ class BluetoothPage(Page):
|
||||
|
||||
if event.key == CurKeys["X"]:
|
||||
self.Rescan()
|
||||
|
||||
if event.key == CurKeys["Y"]:
|
||||
if len(self._WirelessList) == 0:
|
||||
return
|
||||
|
||||
self._InfoPage._AList = self._WirelessList[self._PsIndex]._Atts
|
||||
self._Screen.PushPage(self._InfoPage)
|
||||
self._Screen.Draw()
|
||||
self._Screen.SwapAndShow()
|
||||
|
||||
def Draw(self):
|
||||
self.ClearCanvas()
|
||||
|
||||
@ -80,7 +80,7 @@ class NetItem(object):
|
||||
|
||||
|
||||
name_label = Label()
|
||||
name_label._PosX = 16
|
||||
name_label._PosX = 12
|
||||
name_label._CanvasHWND = self._Parent._CanvasHWND
|
||||
|
||||
mac_addr = self._MacAddr
|
||||
@ -103,15 +103,7 @@ class NetItem(object):
|
||||
done_icon._Parent = self
|
||||
|
||||
self._Icons["done"] = done_icon
|
||||
|
||||
|
||||
## reuse the resource from TitleBar
|
||||
nimt = NetItemMultiIcon()
|
||||
nimt._ImgSurf = self._Parent._Screen._TitleBar._Icons["wifistatus"]._ImgSurf
|
||||
nimt._CanvasHWND = self._Parent._CanvasHWND
|
||||
nimt._Parent = self
|
||||
self._Icons["wifistatus"] = nimt
|
||||
|
||||
#pp(theString)
|
||||
|
||||
|
||||
@ -132,18 +124,5 @@ class NetItem(object):
|
||||
self._Icons["done"].NewCoord(320-14,self._PosY)
|
||||
self._Icons["done"].Draw()
|
||||
|
||||
"""
|
||||
ge = 0
|
||||
if ge > 0:
|
||||
self._Icons["wifistatus"]._IconIndex = ge
|
||||
self._Icons["wifistatus"].NewCoord(self._Width-23,self._PosY)
|
||||
self._Icons["wifistatus"].Draw()
|
||||
|
||||
else:
|
||||
self._Icons["wifistatus"]._IconIndex = 0
|
||||
self._Icons["wifistatus"].NewCoord(self._Width-23,self._PosY)
|
||||
self._Icons["wifistatus"].Draw()
|
||||
|
||||
"""
|
||||
pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'),
|
||||
(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1)
|
||||
|
||||
@ -17,62 +17,12 @@ from UI.scroller import ListScroller
|
||||
from UI.confirm_page import ConfirmPage
|
||||
from UI.skin_manager import SkinManager
|
||||
|
||||
from UI.info_page_list_item import InfoPageListItem
|
||||
|
||||
from net_item import NetItem
|
||||
|
||||
import myvars
|
||||
|
||||
|
||||
class InfoPageListItem(object):
|
||||
_PosX = 0
|
||||
_PosY = 0
|
||||
_Width = 0
|
||||
_Height = 30
|
||||
|
||||
_Labels = {}
|
||||
_Icons = {}
|
||||
_Fonts = {}
|
||||
|
||||
_LinkObj = None
|
||||
|
||||
def __init__(self):
|
||||
self._Labels = {}
|
||||
self._Icons = {}
|
||||
self._Fonts = {}
|
||||
|
||||
def SetSmallText(self,text):
|
||||
|
||||
l = Label()
|
||||
l._PosX = 40
|
||||
l.SetCanvasHWND(self._Parent._CanvasHWND)
|
||||
l.Init(text,self._Fonts["small"])
|
||||
self._Labels["Small"] = l
|
||||
|
||||
def Init(self,text):
|
||||
|
||||
#self._Fonts["normal"] = fonts["veramono12"]
|
||||
|
||||
l = Label()
|
||||
l._PosX = 10
|
||||
l.SetCanvasHWND(self._Parent._CanvasHWND)
|
||||
|
||||
l.Init(text,self._Fonts["normal"])
|
||||
self._Labels["Text"] = l
|
||||
|
||||
def Draw(self):
|
||||
|
||||
self._Labels["Text"]._PosY = self._PosY + (self._Height - self._Labels["Text"]._Height)/2
|
||||
self._Labels["Text"].Draw()
|
||||
|
||||
if "Small" in self._Labels:
|
||||
self._Labels["Small"]._PosX = self._Width - self._Labels["Small"]._Width-5
|
||||
|
||||
self._Labels["Small"]._PosY = self._PosY + (self._Height - self._Labels["Small"]._Height)/2
|
||||
self._Labels["Small"].Draw()
|
||||
|
||||
pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1)
|
||||
|
||||
|
||||
|
||||
class WifiDisconnectConfirmPage(ConfirmPage):
|
||||
|
||||
_ConfirmText = "Confirm Disconnect?"
|
||||
|
||||
@ -21,6 +21,8 @@ fonts_path["noto"] = "%s/NotoSansMono-Regular.ttf" % skinpath
|
||||
fonts_path["notocjk"] = "%s/NotoSansCJK-Regular.ttf" % skinpath
|
||||
|
||||
fonts = {}
|
||||
fonts["varela10"] = pygame.font.Font(fonts_path["varela"],10)
|
||||
fonts["varela11"] = pygame.font.Font(fonts_path["varela"],11)
|
||||
fonts["varela12"] = pygame.font.Font(fonts_path["varela"],12)
|
||||
fonts["varela13"] = pygame.font.Font(fonts_path["varela"],13)
|
||||
fonts["varela14"] = pygame.font.Font(fonts_path["varela"],14)
|
||||
|
||||
55
sys.py/UI/info_page_list_item.py
Normal file
55
sys.py/UI/info_page_list_item.py
Normal file
@ -0,0 +1,55 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import pygame
|
||||
from label import Label
|
||||
from skin_manager import SkinManager
|
||||
|
||||
class InfoPageListItem(object):
|
||||
_PosX = 0
|
||||
_PosY = 0
|
||||
_Width = 0
|
||||
_Height = 30
|
||||
|
||||
_Labels = {}
|
||||
_Icons = {}
|
||||
_Fonts = {}
|
||||
|
||||
_LinkObj = None
|
||||
|
||||
def __init__(self):
|
||||
self._Labels = {}
|
||||
self._Icons = {}
|
||||
self._Fonts = {}
|
||||
|
||||
def SetSmallText(self,text):
|
||||
|
||||
l = Label()
|
||||
l._PosX = 40
|
||||
l.SetCanvasHWND(self._Parent._CanvasHWND)
|
||||
l.Init(text,self._Fonts["small"])
|
||||
self._Labels["Small"] = l
|
||||
|
||||
def Init(self,text):
|
||||
|
||||
#self._Fonts["normal"] = fonts["veramono12"]
|
||||
|
||||
l = Label()
|
||||
l._PosX = 10
|
||||
l.SetCanvasHWND(self._Parent._CanvasHWND)
|
||||
|
||||
l.Init(text,self._Fonts["normal"])
|
||||
self._Labels["Text"] = l
|
||||
|
||||
def Draw(self):
|
||||
self._Labels["Text"]._PosX = self._Labels["Text"]._PosX + self._PosX
|
||||
self._Labels["Text"]._PosY = self._PosY + (self._Height - self._Labels["Text"]._Height)/2
|
||||
self._Labels["Text"].Draw()
|
||||
self._Labels["Text"]._PosX = self._Labels["Text"]._PosX - self._PosX
|
||||
|
||||
if "Small" in self._Labels:
|
||||
self._Labels["Small"]._PosX = self._Width - self._Labels["Small"]._Width-5
|
||||
|
||||
self._Labels["Small"]._PosY = self._PosY + (self._Height - self._Labels["Small"]._Height)/2
|
||||
self._Labels["Small"].Draw()
|
||||
|
||||
pygame.draw.line(self._Parent._CanvasHWND,SkinManager().GiveColor('Line'),(self._PosX,self._PosY+self._Height-1),(self._PosX+self._Width,self._PosY+self._Height-1),1)
|
||||
Loading…
x
Reference in New Issue
Block a user