← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~trb143/openlp/bug-850254 into lp:openlp

 

Tim Bentley has proposed merging lp:~trb143/openlp/bug-850254 into lp:openlp.

Requested reviews:
  Raoul Snyman (raoul-snyman)
Related bugs:
  Bug #850254 in OpenLP: "Web remote interface does not affect local button's state"
  https://bugs.launchpad.net/openlp/+bug/850254

For more details, see:
https://code.launchpad.net/~trb143/openlp/bug-850254/+merge/85740

This is the core changes to handle the remote events.
Web pages and Android code will come later.
-- 
https://code.launchpad.net/~trb143/openlp/bug-850254/+merge/85740
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py	2011-12-09 12:35:18 +0000
+++ openlp/core/ui/slidecontroller.py	2011-12-14 20:30:31 +0000
@@ -95,7 +95,7 @@
             u'Edit Song',
         ]
         self.nextPreviousList = [
-            u'Previous Slide', 
+            u'Previous Slide',
             u'Next Slide'
         ]
         self.timer_id = 0
@@ -114,8 +114,8 @@
             self.typeLabel.setText(UiStrings().Live)
             self.split = 1
             self.typePrefix = u'live'
-            self.keypress_queue = deque() 
-            self.keypress_loop = False           
+            self.keypress_queue = deque()
+            self.keypress_loop = False
         else:
             self.typeLabel.setText(UiStrings().Preview)
             self.split = 0
@@ -187,7 +187,7 @@
                 translate('OpenLP.SlideController', 'Hide'), self.toolbar))
             self.blankScreen = shortcut_action(self.hideMenu, u'blankScreen',
                 [QtCore.Qt.Key_Period], self.onBlankDisplay,
-                u':/slides/slide_blank.png', False, 
+                u':/slides/slide_blank.png', False,
                 unicode(UiStrings().LiveToolbar))
             self.blankScreen.setText(
                 translate('OpenLP.SlideController', 'Blank Screen'))
@@ -412,6 +412,9 @@
             QtCore.QObject.connect(Receiver.get_receiver(),
                 QtCore.SIGNAL(u'slidecontroller_live_spin_delay'),
                 self.receiveSpinDelay)
+            QtCore.QObject.connect(Receiver.get_receiver(),
+                QtCore.SIGNAL(u'slidecontroller_toggle_display'),
+                self.toggleDisplay)
             self.toolbar.makeWidgetsInvisible(self.loopList)
         else:
             QtCore.QObject.connect(self.previewListWidget,
@@ -570,6 +573,18 @@
         self.display.setVisible(False)
         self.mediaController.video_stop([self])
 
+    def toggleDisplay(self, action):
+        """
+        Toggle the display settings triggered from remote messages.
+        """
+        if action == u'blank':
+            self.onBlankDisplay(not self.blankScreen.isChecked())
+        elif action == u'theme':
+            self.onThemeDisplay(not self.themeScreen.isChecked())
+        elif action == u'desktop':
+            self.onHideDisplay(not self.desktopScreen.isChecked())
+
+
     def servicePrevious(self):
         """
         Live event to select the previous service item from the service manager.
@@ -618,8 +633,8 @@
         self.previewSizeChanged()
         self.previewDisplay.setup()
         serviceItem = ServiceItem()
-        self.previewDisplay.webView.setHtml(build_html(serviceItem, 
-            self.previewDisplay.screen, None, self.isLive, None, 
+        self.previewDisplay.webView.setHtml(build_html(serviceItem,
+            self.previewDisplay.screen, None, self.isLive, None,
             plugins=PluginManager.get_instance().plugins))
         self.mediaController.setup_display(self.previewDisplay)
         if self.serviceItem:

=== modified file 'openlp/plugins/remotes/lib/httpserver.py'
--- openlp/plugins/remotes/lib/httpserver.py	2011-11-26 20:32:47 +0000
+++ openlp/plugins/remotes/lib/httpserver.py	2011-12-14 20:30:31 +0000
@@ -252,6 +252,8 @@
             (r'^/api/display/(hide|show)$', self.display),
             (r'^/api/alert$', self.alert),
             (r'^/api/plugin/(search)$', self.pluginInfo),
+            (r'^/api/display-status$', self.status),
+            (r'^/api/display-status/(blank|theme|desktop)$', self.changeStatus),
             (r'^/api/(.*)/search$', self.search),
             (r'^/api/(.*)/live$', self.go_live),
             (r'^/api/(.*)/add$', self.add_to_service)
@@ -416,6 +418,31 @@
         return HttpResponse(json.dumps({u'results': {u'success': True}}),
             {u'Content-Type': u'application/json'})
 
+    def status(self):
+        """
+        Obtain the status of system.
+
+        """
+        result = {
+            u'blank': self.parent.plugin.liveController.blankScreen.\
+                isChecked(),
+            u'theme': self.parent.plugin.liveController.themeScreen.\
+                isChecked(),
+            u'display': self.parent.plugin.liveController.desktopScreen.\
+                isChecked()
+        }
+        return HttpResponse(json.dumps({u'results': result}),
+            {u'Content-Type': u'application/json'})
+
+    def changeStatus(self, action):
+        """
+        Toggle the display of the system including the status button.
+
+        """
+        Receiver.send_message(u'slidecontroller_toggle_display', action)
+        return HttpResponse(json.dumps({u'results': {u'success': True}}),
+            {u'Content-Type': u'application/json'})
+
     def alert(self):
         """
         Send an alert.


Follow ups