rendered paste bodyimport time, sys, xbmc, xbmcgui, traceback
from XinBox_Settings import Settings
import XinBox_Util
from XinBox_EmailEngine import Email
from XinBox_Language import Language
import threading
import XinBox_MainMenu
TITLE = "XinBox"
class Minimode:
def init(self):
print "XinBox Mini-Mode: Started"
xbmc.executebuiltin("Skin.SetBool(mmfinished)")
xbmc.executebuiltin("Skin.Reset(mmfinished)")
xbmc.executebuiltin("Skin.SetBool(mmrunning)")
xbmc.executebuiltin("Skin.SetBool(timerunning)")
xbmc.executebuiltin("Skin.ToggleSetting(timerunning)")
time.sleep(5)
self.exit = False
self.account = sys.argv[1:][0]
self.srcpath = sys.argv[1:][1]
self.loadsettings()
self.inboxes = self.buildinboxdict()
if not len(self.inboxes) == 0:self.startmm()
print "XinBox Mini-Mode: Closed"
xbmc.executebuiltin("Skin.ToggleSetting(mmfinished)")
def startmm(self):
while xbmc.getCondVisibility('Skin.HasSetting(mmrunning)'):
print "XinBox Mini-Mode: Checking of Inboxes Started"
for inbox in self.inboxes:
if xbmc.getCondVisibility('Skin.HasSetting(mmrunning)'):
print "XinBox Mini-Mode: Checking Inbox: " + str(inbox)
inboxsettings = self.accountsettings.getSettingInListbyname("Inboxes",inbox)
self.checkfornew(inboxsettings,inbox)
else:break
if xbmc.getCondVisibility('Skin.HasSetting(mmrunning)'):
print "XinBox Mini-Mode: Starting Delay (" + self.accountsettings.getSetting("MiniMode Time") + "s)"
xbmc.executebuiltin("Skin.SetBool(timerunning)")
time.sleep(int(self.accountsettings.getSetting("MiniMode Time")))
xbmc.executebuiltin("Skin.ToggleSetting(timerunning)")
print "XinBox Mini-Mode: Delay Finished"
return
def buildinboxdict(self):
inboxes = []
for set in self.accountsettings.getSetting("Inboxes")[1]:
if set[1].getSetting("Mini Mode Enabled") == "True":
inboxes.append(set[0])
return inboxes
def loadsettings(self):
self.settings = Settings("XinBox_Settings.xml",TITLE,"")
self.accountsettings = self.settings.getSettingInListbyname("Accounts",self.account)
def checkfornew(self, ibsettings, inbox):
w = Email(ibsettings,inbox,self.account,False, True)
w.checkemail()
newlist = w.newlist
del w
if len(newlist) != 0:
print "XinBox Mini-Mode: Inbox: " + str(inbox) + " : " + str(len(newlist)) + " New Emails"
self.popup(newlist, inbox)
else:print "XinBox Mini-Mode: Inbox: " + str(inbox) + " : No New Emails"
def popup(self, newlist, inbox):
if xbmc.getCondVisibility('Skin.HasSetting(mmrunning)'):
mymessage = "Inbox: " + str(inbox) + "\n" + str(len(newlist)) + " # new emails recieved"
w = Popup("XinBox_Popup.xml",self.srcpath,"DefaultSkin",0,message = mymessage)
w.doModal()
self.returnval = w.returnval
del w
if self.returnval == 1:
self.launch(inbox)
def launch(self, inbox):
xbmc.executebuiltin("Skin.ToggleSetting(mmrunning)")
w = XinBox_MainMenu.GUI("XinBox_MainMenu.xml",self.srcpath,"DefaultSkin",bforeFallback=False,minimode=True, minibox = inbox)
w.doModal()
del w
class Popup( xbmcgui.WindowXMLDialog ):
def __init__(self,strXMLname, strFallbackPath,strDefaultName,bforeFallback=0,message=False):
self.message = message
self.control_action = XinBox_Util.setControllerAction()
def onInit(self):
self.returnval = 0
self.getControl(21).setText(self.message)
self.animating = True
xbmc.executebuiltin("Skin.SetBool(showpopup)")
time.sleep(0.5)
self.animating = False
self.showing = True
subThread = threading.Thread(target=self.SubthreadProc, args=())
subThread.start()
def SubthreadProc(self):
time.sleep(8)
if self.showing:
self.animating = True
xbmc.executebuiltin("Skin.ToggleSetting(showpopup)")
time.sleep(0.5)
self.animating = False
self.close()
def onClick(self, controlID):
pass
def onAction( self, action ):
if not self.animating:
button_key = self.control_action.get( action.getButtonCode(), 'n/a' )
actionID = action.getId()
try:focusid = self.getFocusId()
except:focusid = 0
try:control = self.getFocus()
except: control = 0
if ( button_key == 'Keyboard ESC Button' or button_key == 'Back Button' or button_key == 'Remote Menu Button' ):
self.animating = True
xbmc.executebuiltin("Skin.ToggleSetting(showpopup)")
time.sleep(0.5)
self.animating = False
self.returnval = 0
self.showing = False
self.close()
else:
self.returnval = 1
self.close()
def onFocus(self, controlID):
pass
Minimode().init()