diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index 297437d93..bfb05d486 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -24,10 +24,12 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from PyQt4 import QtCore, QtGui +from PyQt4 import QtCore, QtGui, QtNetwork from openlp.core.lib import SettingsTab, translate +ZERO_URL = u'0.0.0.0' + class RemoteTab(SettingsTab): """ RemoteTab is the Remotes settings tab in the settings dialog. @@ -51,13 +53,29 @@ class RemoteTab(SettingsTab): self.addressEdit.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp( u'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'), self)) self.addressEdit.setObjectName(u'addressEdit') + QtCore.QObject.connect(self.addressEdit, + QtCore.SIGNAL(u'textChanged(const QString&)'), self.setUrls) self.serverSettingsLayout.addRow(self.addressLabel, self.addressEdit) self.portLabel = QtGui.QLabel(self.serverSettingsGroupBox) self.portLabel.setObjectName(u'portLabel') self.portSpinBox = QtGui.QSpinBox(self.serverSettingsGroupBox) self.portSpinBox.setMaximum(32767) self.portSpinBox.setObjectName(u'portSpinBox') + QtCore.QObject.connect(self.portSpinBox, + QtCore.SIGNAL(u'valueChanged(int)'), self.setUrls) self.serverSettingsLayout.addRow(self.portLabel, self.portSpinBox) + self.remoteUrlLabel = QtGui.QLabel(self.serverSettingsGroupBox) + self.remoteUrlLabel.setObjectName(u'remoteUrlLabel') + self.remoteUrl = QtGui.QLabel(self.serverSettingsGroupBox) + self.remoteUrl.setObjectName(u'remoteUrl') + self.remoteUrl.setOpenExternalLinks(True) + self.serverSettingsLayout.addRow(self.remoteUrlLabel, self.remoteUrl) + self.stageUrlLabel = QtGui.QLabel(self.serverSettingsGroupBox) + self.stageUrlLabel.setObjectName(u'stageUrlLabel') + self.stageUrl = QtGui.QLabel(self.serverSettingsGroupBox) + self.stageUrl.setObjectName(u'stageUrl') + self.stageUrl.setOpenExternalLinks(True) + self.serverSettingsLayout.addRow(self.stageUrlLabel, self.stageUrl) self.leftLayout.addWidget(self.serverSettingsGroupBox) self.leftLayout.addStretch() self.rightLayout.addStretch() @@ -69,6 +87,34 @@ class RemoteTab(SettingsTab): 'Serve on IP address:')) self.portLabel.setText(translate('RemotePlugin.RemoteTab', 'Port number:')) + self.remoteUrlLabel.setText(translate('RemotePlugin.RemoteTab', + 'Remote URL:')) + self.stageUrlLabel.setText(translate('RemotePlugin.RemoteTab', + 'Stage view URL:')) + + def setUrls(self): + ipAddress = None + if self.addressEdit.text() == ZERO_URL: + for ip in QtNetwork.QNetworkInterface.allAddresses(): + if ip.protocol() == 0 and ip != QtNetwork.QHostAddress.LocalHost: + ipAddress = ip.toString() + break + else: + ipAddress = self.addressEdit.text() + if not ipAddress: + self.remoteUrlLabel.setVisible(False) + self.remoteUrl.setVisible(False) + self.stageUrlLabel.setVisible(False) + self.stageUrl.setVisible(False) + return + self.remoteUrlLabel.setVisible(True) + self.remoteUrl.setVisible(True) + self.stageUrlLabel.setVisible(True) + self.stageUrl.setVisible(True) + url = u'http://%s:%s/' % (ipAddress, self.portSpinBox.value()) + self.remoteUrl.setText(u'%s' % (url, url)) + url = url + u'stage' + self.stageUrl.setText(u'%s' % (url, url)) def load(self): self.portSpinBox.setValue( @@ -76,7 +122,8 @@ class RemoteTab(SettingsTab): QtCore.QVariant(4316)).toInt()[0]) self.addressEdit.setText( QtCore.QSettings().value(self.settingsSection + u'/ip address', - QtCore.QVariant(u'0.0.0.0')).toString()) + QtCore.QVariant(ZERO_URL)).toString()) + self.setUrls() def save(self): QtCore.QSettings().setValue(self.settingsSection + u'/port',