Add items to service via the search on the web remote

bzr-revno: 1562
This commit is contained in:
Jonathan Corwin 2011-05-22 12:56:22 +01:00
commit ac29839151
4 changed files with 42 additions and 18 deletions

View File

@ -515,18 +515,18 @@ class MediaManagerItem(QtGui.QWidget):
# multiple service items? # multiple service items?
if self.singleServiceItem or self.remoteTriggered: if self.singleServiceItem or self.remoteTriggered:
log.debug(u'%s Add requested', self.plugin.name) log.debug(u'%s Add requested', self.plugin.name)
serviceItem = self.buildServiceItem(None, True) self.addToService(replace=self.remoteTriggered)
if serviceItem:
serviceItem.from_plugin = False
self.parent.serviceManager.addServiceItem(serviceItem,
replace=self.remoteTriggered)
else: else:
items = self.listView.selectedIndexes() items = self.listView.selectedIndexes()
for item in items: for item in items:
self.addToService(item)
def addToService(self, item=None, replace=None):
serviceItem = self.buildServiceItem(item, True) serviceItem = self.buildServiceItem(item, True)
if serviceItem: if serviceItem:
serviceItem.from_plugin = False serviceItem.from_plugin = False
self.parent.serviceManager.addServiceItem(serviceItem) self.parent.serviceManager.addServiceItem(serviceItem,
replace=replace)
def onAddEditClick(self): def onAddEditClick(self):
""" """

View File

@ -757,7 +757,7 @@ class ServiceManager(QtGui.QWidget):
""" """
Called by a signal to select a specific item. Called by a signal to select a specific item.
""" """
self.setItem(int(message[0])) self.setItem(int(message))
def setItem(self, index): def setItem(self, index):
""" """

View File

@ -219,10 +219,11 @@ window.OpenLP = {
} }
else { else {
$.each(data.results.items, function (idx, value) { $.each(data.results.items, function (idx, value) {
var li = $("<li data-icon=\"false\">").append( var item = $("<li>").text(value[1]);
$("<a href=\"#\">").attr("value", value[0]).text(value[1])); var golive = $("<a href=\"#\">Go Live</a>").attr("value", value[0]).click(OpenLP.goLive);
li.children("a").click(OpenLP.goLive); var additem = $("<a href=\"#\">Add To Service</a>").attr("value", value[0]).click(OpenLP.addToService);
ul.append(li); item.append($("<ul>").append($("<li>").append(golive)).append($("<li>").append(additem)));
ul.append(item);
}); });
} }
ul.listview("refresh"); ul.listview("refresh");
@ -231,16 +232,28 @@ window.OpenLP = {
return false; return false;
}, },
goLive: function (event) { goLive: function (event) {
var slide = OpenLP.getElement(event); var item = OpenLP.getElement(event);
var id = slide.attr("value"); var id = item.attr("value");
var text = JSON.stringify({"request": {"id": id}}); var text = JSON.stringify({"request": {"id": id}});
$.getJSON( $.getJSON(
"/api/" + $("#search-plugin").val() + "/live", "/api/" + $("#search-plugin").val() + "/live",
{"data": text}) {"data": text})
$.mobile.changePage("slide-controller"); $.mobile.changePage("slide-controller");
return false; return false;
},
addToService: function (event) {
var item = OpenLP.getElement(event);
var id = item.attr("value");
var text = JSON.stringify({"request": {"id": id}});
$.getJSON(
"/api/" + $("#search-plugin").val() + "/add",
{"data": text},
function () {
history.back();
}
);
return false;
} }
} }
// Service Manager // Service Manager
$("#service-manager").live("pagebeforeshow", OpenLP.loadService); $("#service-manager").live("pagebeforeshow", OpenLP.loadService);

View File

@ -253,7 +253,8 @@ class HttpConnection(object):
(r'^/api/alert$', self.alert), (r'^/api/alert$', self.alert),
(r'^/api/plugin/(search)$', self.pluginInfo), (r'^/api/plugin/(search)$', self.pluginInfo),
(r'^/api/(.*)/search$', self.search), (r'^/api/(.*)/search$', self.search),
(r'^/api/(.*)/live$', self.go_live) (r'^/api/(.*)/live$', self.go_live),
(r'^/api/(.*)/add$', self.add_to_service)
] ]
QtCore.QObject.connect(self.socket, QtCore.SIGNAL(u'readyRead()'), QtCore.QObject.connect(self.socket, QtCore.SIGNAL(u'readyRead()'),
self.ready_read) self.ready_read)
@ -490,6 +491,16 @@ class HttpConnection(object):
if plugin.status == PluginStatus.Active and plugin.mediaItem: if plugin.status == PluginStatus.Active and plugin.mediaItem:
plugin.mediaItem.goLive(id) plugin.mediaItem.goLive(id)
def add_to_service(self, type):
"""
Add item of type ``type`` to the end of the service
"""
id = json.loads(self.url_params[u'data'][0])[u'request'][u'id']
plugin = self.parent.parent.pluginManager.get_plugin_by_name(type)
if plugin.status == PluginStatus.Active and plugin.mediaItem:
item_id = plugin.mediaItem.createItemFromId(id)
plugin.mediaItem.addToService(item_id)
def send_response(self, response): def send_response(self, response):
http = u'HTTP/1.1 %s\r\n' % response.code http = u'HTTP/1.1 %s\r\n' % response.code
for header, value in response.headers.iteritems(): for header, value in response.headers.iteritems():