Clear and remove-items from Kodi playqueues once
This commit is contained in:
parent
ba0f22ac1e
commit
cf15799df2
2 changed files with 54 additions and 2 deletions
|
@ -229,6 +229,10 @@ class KodiMonitor(Monitor):
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
playqueue = self.playqueue.playqueues[data['playlistid']]
|
playqueue = self.playqueue.playqueues[data['playlistid']]
|
||||||
|
# Did PKC cause this add? Then lets not do anything
|
||||||
|
if playqueue.is_kodi_onremove() is False:
|
||||||
|
LOG.debug('PKC removed this item already from playqueue - ignoring')
|
||||||
|
return
|
||||||
# Check whether we even need to update our known playqueue
|
# Check whether we even need to update our known playqueue
|
||||||
kodi_playqueue = js.playlist_get_items(data['playlistid'])
|
kodi_playqueue = js.playlist_get_items(data['playlistid'])
|
||||||
if playqueue.old_kodi_pl == kodi_playqueue:
|
if playqueue.old_kodi_pl == kodi_playqueue:
|
||||||
|
@ -245,7 +249,11 @@ class KodiMonitor(Monitor):
|
||||||
u'playlistid': 1,
|
u'playlistid': 1,
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
self.playqueue.playqueues[data['playlistid']].clear()
|
playqueue = self.playqueue.playqueues[data['playlistid']]
|
||||||
|
if playqueue.is_kodi_onclear() is False:
|
||||||
|
LOG.debug('PKC already cleared the playqueue - ignoring')
|
||||||
|
return
|
||||||
|
playqueue.clear()
|
||||||
|
|
||||||
@LOCKER.lockthis
|
@LOCKER.lockthis
|
||||||
def PlayBackStart(self, data):
|
def PlayBackStart(self, data):
|
||||||
|
|
|
@ -45,6 +45,8 @@ class PlaylistObjectBaseclase(object):
|
||||||
# Needed to not add an item twice (first through PKC, then the kodi
|
# Needed to not add an item twice (first through PKC, then the kodi
|
||||||
# monitor)
|
# monitor)
|
||||||
self._onadd_queue = []
|
self._onadd_queue = []
|
||||||
|
self._onremove_queue = []
|
||||||
|
self._onclear_queue = []
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
"""
|
"""
|
||||||
|
@ -83,11 +85,53 @@ class PlaylistObjectBaseclase(object):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def kodi_onremove(self):
|
||||||
|
"""
|
||||||
|
Call this before removing an item from the Kodi playqueue
|
||||||
|
"""
|
||||||
|
self._onremove_queue.append(None)
|
||||||
|
|
||||||
|
def is_kodi_onremove(self):
|
||||||
|
"""
|
||||||
|
Returns False if the last kodimonitor on_remove was caused by PKC - so
|
||||||
|
that we are not adding a playlist item twice.
|
||||||
|
|
||||||
|
Calling this function will remove the item from our "checklist"
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
self._onremove_queue.pop()
|
||||||
|
except IndexError:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def kodi_onclear(self):
|
||||||
|
"""
|
||||||
|
Call this before clearing the Kodi playqueue IF it was not empty
|
||||||
|
"""
|
||||||
|
self._onclear_queue.append(None)
|
||||||
|
|
||||||
|
def is_kodi_onclear(self):
|
||||||
|
"""
|
||||||
|
Returns False if the last kodimonitor on_remove was caused by PKC - so
|
||||||
|
that we are not clearing the playlist twice.
|
||||||
|
|
||||||
|
Calling this function will remove the item from our "checklist"
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
self._onclear_queue.pop()
|
||||||
|
except IndexError:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
"""
|
"""
|
||||||
Resets the playlist object to an empty playlist
|
Resets the playlist object to an empty playlist
|
||||||
"""
|
"""
|
||||||
self.kodi_pl.clear() # Clear Kodi playlist object
|
# kodi monitor's on_clear method will only be called if there were some
|
||||||
|
# items to begin with
|
||||||
|
if self.kodi_pl.size() != 0:
|
||||||
|
self.kodi_onclear()
|
||||||
|
self.kodi_pl.clear() # Clear Kodi playlist object
|
||||||
self.items = []
|
self.items = []
|
||||||
self.old_kodi_pl = []
|
self.old_kodi_pl = []
|
||||||
self.id = None
|
self.id = None
|
||||||
|
|
Loading…
Reference in a new issue