81 lines
2.5 KiB
Python
81 lines
2.5 KiB
Python
# Copyright 2021 (c) Anna Schumaker.
|
|
#
|
|
# Table: playlist_states
|
|
# +-----------+--------+------+---------+------+
|
|
# | plstateid | random | loop | current | sort |
|
|
# +-----------+--------+------+---------+------+
|
|
from gi.repository import GObject
|
|
from . import execute
|
|
from . import objects
|
|
|
|
class PlaylistState(objects.Row):
|
|
def do_get_column(self, column):
|
|
return execute(f"SELECT {column} FROM playlist_states "
|
|
"WHERE plstateid=?", [ self.rowid ])
|
|
|
|
@GObject.Property(type=bool,default=False)
|
|
def random(self):
|
|
return bool(self.get_column("random"))
|
|
|
|
@random.setter
|
|
def random(self, newval):
|
|
execute("UPDATE playlist_states SET random=? WHERE plstateid=?",
|
|
[ newval, self.rowid ])
|
|
|
|
@GObject.Property(type=bool,default=False)
|
|
def loop(self):
|
|
return bool(self.get_column("loop"))
|
|
|
|
@loop.setter
|
|
def loop(self, newval):
|
|
execute("UPDATE playlist_states SET loop=? WHERE plstateid=?",
|
|
[ newval, self.rowid ])
|
|
|
|
@GObject.Property(type=int)
|
|
def current(self):
|
|
return self.get_column("current")
|
|
|
|
@current.setter
|
|
def current(self, newval):
|
|
execute("UPDATE playlist_states SET current=? WHERE plstateid=?",
|
|
[ newval, self.rowid ])
|
|
|
|
@GObject.Property(type=str)
|
|
def sort(self):
|
|
return self.get_column("sort")
|
|
|
|
@sort.setter
|
|
def sort(self, newval):
|
|
execute("UPDATE playlist_states SET sort=? WHERE plstateid=?",
|
|
[ newval, self.rowid ])
|
|
|
|
|
|
class PlaylistStateTable(objects.Table):
|
|
def __init__(self):
|
|
objects.Table.__init__(self, "playlist_states", PlaylistState)
|
|
|
|
def do_create(self):
|
|
execute("CREATE TABLE IF NOT EXISTS playlist_states "
|
|
"(plstateid INTEGER PRIMARY KEY, "
|
|
" random INTEGER DEFAULT 0, "
|
|
" loop INTEGER DEFAULT 0, "
|
|
" current INTEGER DEFAULT -1, "
|
|
" sort TEXT)")
|
|
|
|
def do_insert(self, random, loop):
|
|
return execute("INSERT INTO playlist_states (random, loop, sort) "
|
|
"VALUES (?, ?, ?)", (random, loop, ""))
|
|
|
|
def do_delete(self, state):
|
|
return execute("DELETE FROM playlist_states WHERE plstateid=?", [ int(state) ])
|
|
|
|
def do_get(self, rowid):
|
|
return execute("SELECT plstateid FROM playlist_states "
|
|
"WHERE plstateid=?", [ rowid ])
|
|
|
|
def insert(self, random=False, loop=False):
|
|
return super().insert(random, loop)
|
|
|
|
|
|
Table = PlaylistStateTable()
|