All pastes #627526 Raw Edit

Something

public text v1 · immutable
·published 2007-07-20 11:35 UTC
rendered paste body
import 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()