Replace flags with capibilities

This commit is contained in:
Tim Bentley 2010-04-02 20:02:38 +01:00
parent 558ffc2d23
commit 8328a2dabe
8 changed files with 37 additions and 27 deletions

View File

@ -42,6 +42,13 @@ class ServiceItemType(object):
Image = 2
Command = 3
capabilities = [
u'allows_preview',
u'allows_edit',
u'allows_maintain',
u'requires_media'
]
class ServiceItem(object):
"""
The service item is a base class for the plugins to use to interact with
@ -67,14 +74,20 @@ class ServiceItem(object):
self.raw_footer = None
self.theme = None
self.service_item_type = None
self.edit_enabled = False
self.maintain_allowed = False
self._raw_frames = []
self._display_frames = []
self._uuid = unicode(uuid.uuid1())
self.auto_preview_allowed = False
self.notes = u''
self.from_plugin = False
self.capability_state = {}
for capability in capabilities:
self.updateCapability(capability)
def updateCapability(self, capability, State=False):
self.capability_state[capability] = State
def getCapability(self, capability):
return self.capability_state[capability]
def addIcon(self, icon):
"""
@ -207,10 +220,8 @@ class ServiceItem(object):
u'type':self.service_item_type,
u'audit':self.audit,
u'notes':self.notes,
u'preview':self.auto_preview_allowed,
u'edit':self.edit_enabled,
u'maintain':self.maintain_allowed,
u'from_plugin':self.from_plugin
u'from_plugin':self.from_plugin,
u'capabilities':self.capability_state
}
service_data = []
if self.service_item_type == ServiceItemType.Text:
@ -244,11 +255,9 @@ class ServiceItem(object):
self.addIcon(header[u'icon'])
self.raw_footer = header[u'footer']
self.audit = header[u'audit']
self.auto_preview_allowed = header[u'preview']
self.notes = header[u'notes']
self.edit_enabled = header[u'edit']
self.maintain_allowed = header[u'maintain']
self.from_plugin = header[u'from_plugin']
self.capability_state = header[u'capabilities']
if self.service_item_type == ServiceItemType.Text:
for slide in serviceitem[u'serviceitem'][u'data']:
self._raw_frames.append(slide)
@ -288,7 +297,7 @@ class ServiceItem(object):
return self.name.lower() == u'songs'
def is_media(self):
return self.name.lower() == u'media'
return self.getCapability(u'requires_media')
def is_command(self):
return self.service_item_type == ServiceItemType.Command

View File

@ -233,9 +233,9 @@ class ServiceManager(QtGui.QWidget):
self.editAction.setVisible(False)
self.maintainAction.setVisible(False)
self.notesAction.setVisible(False)
if serviceItem[u'service_item'].edit_enabled:
if serviceItem[u'service_item'].getCapability(u'allows_edit'):
self.editAction.setVisible(True)
if serviceItem[u'service_item'].maintain_allowed:
if serviceItem[u'service_item'].getCapability(u'allows_maintain'):
self.maintainAction.setVisible(True)
if item.parent() is None:
self.notesAction.setVisible(True)
@ -713,7 +713,7 @@ class ServiceManager(QtGui.QWidget):
get_config(u'auto preview', u'False')):
item += 1
if self.serviceItems and item < len(self.serviceItems) and \
self.serviceItems[item][u'service_item'].auto_preview_allowed:
self.serviceItems[item][u'service_item'].getCapability(u'allows_preview'):
self.parent.PreviewController.addServiceManagerItem(
self.serviceItems[item][u'service_item'], 0)
@ -722,7 +722,7 @@ class ServiceManager(QtGui.QWidget):
Posts a remote edit message to a plugin to allow item to be edited.
"""
item, count = self.findServiceItem()
if self.serviceItems[item][u'service_item'].edit_enabled:
if self.serviceItems[item][u'service_item'].getCapability(u'allows_edit'):
self.remoteEditTriggered = True
Receiver.send_message(u'%s_edit' %
self.serviceItems[item][u'service_item'].name, u'L:%s' %

View File

@ -395,7 +395,7 @@ class SlideController(QtGui.QWidget):
self.Toolbar.setVisible(True)
self.Mediabar.setVisible(False)
self.Toolbar.makeWidgetsInvisible(self.song_edit_list)
if item.edit_enabled and item.from_plugin:
if item.getCapability(u'allows_edit') and item.from_plugin:
self.Toolbar.makeWidgetsVisible(self.song_edit_list)
elif item.is_media():
self.Toolbar.setVisible(False)
@ -759,7 +759,7 @@ class SlideController(QtGui.QWidget):
else:
self.mediaObject.stop()
self.mediaObject.clearQueue()
file = os.path.join(item.service_item_path, item.get_frame_title())
file = os.path.join(item.get_frame_path(), item.get_frame_title())
self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
self.onMediaPlay()

View File

@ -449,7 +449,7 @@ class BibleMediaItem(MediaManagerItem):
raw_slides = []
raw_footer = []
bible_text = u''
service_item.auto_preview_allowed = True
service_item.updateCapability(u'allows_preview', True)
#If we want to use a 2nd translation / version
bible2 = u''
if self.SearchTabWidget.currentIndex() == 0:
@ -608,4 +608,4 @@ class BibleMediaItem(MediaManagerItem):
def searchByReference(self, bible, search):
log.debug(u'searchByReference %s, %s', bible, search)
self.search_results = self.parent.manager.get_verses(bible, search)
self.search_results = self.parent.manager.get_verses(bible, search)

View File

@ -144,11 +144,11 @@ class CustomMediaItem(MediaManagerItem):
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
else:
item_id = self.remoteCustom
service_item.auto_preview_allowed = True
service_item.updateCapability(u'allows_preview', True)
service_item.updateCapability(u'allows_edit', True)
customSlide = self.parent.custommanager.get_custom(item_id)
title = customSlide.title
credit = customSlide.credits
service_item.edit_enabled = True
service_item.editId = item_id
theme = customSlide.theme_name
if theme:
@ -166,4 +166,4 @@ class CustomMediaItem(MediaManagerItem):
else:
raw_footer.append(u'')
service_item.raw_footer = raw_footer
return True
return True

View File

@ -140,8 +140,8 @@ class ImageMediaItem(MediaManagerItem):
items = self.ListView.selectedIndexes()
if items:
service_item.title = self.trUtf8('Image(s)')
service_item.auto_preview_allowed = True
service_item.maintain_allowed = True
service_item.updateCapability(u'allows_preview', True)
service_item.updateCapability(u'allows_maintain', True)
for item in items:
bitem = self.ListView.item(item.row())
filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString())

View File

@ -82,6 +82,7 @@ class MediaMediaItem(MediaManagerItem):
if len(items) > 1:
return False
service_item.title = unicode(self.trUtf8('Media'))
service_item.updateCapability(u'requires_media', True)
for item in items:
bitem = self.ListView.item(item.row())
filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString())

View File

@ -290,10 +290,10 @@ class SongMediaItem(MediaManagerItem):
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
else:
item_id = self.remoteSong
service_item.auto_preview_allowed = True
service_item.updateCapability(u'allows_preview', True)
service_item.updateCapability(u'allows_edit', True)
song = self.parent.songmanager.get_song(item_id)
service_item.theme = song.theme_name
service_item.edit_enabled = True
service_item.editId = item_id
if song.lyrics.startswith(u'<?xml version='):
songXML = SongXMLParser(song.lyrics)
@ -345,4 +345,4 @@ class SongMediaItem(MediaManagerItem):
service_item.audit = [
song.title, author_audit, song.copyright, song.ccli_number
]
return True
return True