ocarina/src/core/next.py

72 lines
1.2 KiB
Python

# Basic plugin class
__author__="bjschuma"
__date__ ="$Feb 7, 2010 7:40:01 PM$"
from bt import plugin
from bt import signal
from bt.message import write
from bt import sql
from ct import db
import settings
import manager
class Plugin(plugin.Plugin):
def __init__(self):
plugin.Plugin.__init__(self)
self.help = "Advance to the next track"
self.usage = "next [, songID]"
def open(self):
if settings.has("curtrk") == False:
settings.set("curtrk",-1)
signal.register("next",self.next)
def close(self):
pass
def next(self):
signal.stop("next")
curlib = str(settings.get("curlib"))
count = db.countlib(curlib)
nxttrk = settings.get("curtrk")
if nxttrk >= (count-1):
nxttrk = 0
else:
nxttrk += 1
manager.run("next",[nxttrk])
def run(self, args=None):
# args: new current track number
if args==None or len(args)==0:
signal.emit("next")
return
nxttrk = int(args[0])
curlib = str( settings.get("curlib") )
sel = sql.Select("track","libtrack","library="+curlib)
rows = sel.execute().fetchall()
if nxttrk >= len(rows)-1:
nxttrk = len(rows)-1
next = rows[nxttrk][0]
path = db.getpath(next)
settings.set("curtrk",nxttrk)
manager.run("music",["load",path])
manager.run("music",["play"])