mahfiaz has proposed merging lp:~mahfiaz/openlp/bug-904438 into lp:openlp. Requested reviews: Tim Bentley (trb143) Related bugs: Bug #904438 in OpenLP: "Prefilled default service name in save dialog" https://bugs.launchpad.net/openlp/+bug/904438
For more details, see: https://code.launchpad.net/~mahfiaz/openlp/bug-904438/+merge/88591 Have a default name for service Save as dialog always filled in. -- https://code.launchpad.net/~mahfiaz/openlp/bug-904438/+merge/88591 Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/ui/advancedtab.py' --- openlp/core/ui/advancedtab.py 2012-01-07 11:22:53 +0000 +++ openlp/core/ui/advancedtab.py 2012-01-15 01:36:28 +0000 @@ -32,6 +32,8 @@ from openlp.core.lib import SettingsTab, translate, build_icon, Receiver from openlp.core.lib.ui import UiStrings from openlp.core.utils import get_images_filter +from datetime import datetime, timedelta +import re class AdvancedTab(SettingsTab): """ @@ -44,6 +46,16 @@ """ self.display_changed = False advancedTranslated = translate('OpenLP.AdvancedTab', 'Advanced') + # 7 stands for now, 0 to 6 is Monday to Sunday. + self.default_service_day = 0 + # 11 o'clock is the most popular time for morning service. + self.default_service_hour = 11 + self.default_service_minute = 0 + self.default_service_name = unicode(translate('OpenLP.AdvancedTab', + 'Service %Y-%m-%d-%H-%M')) + self.default_service_example = unicode(translate('OpenLP.AdvancedTab', + '%Y-%m-%d-%H-%M', + 'This should be the date part of default service name.')) self.default_image = u':/graphics/openlp-splash-screen.png' self.default_color = u'#ffffff' self.icon_path = u':/system/system_settings.png' @@ -84,6 +96,58 @@ u'enableAutoCloseCheckBox') self.uiLayout.addRow(self.enableAutoCloseCheckBox) self.leftLayout.addWidget(self.uiGroupBox) + self.defaultServiceGroupBox = QtGui.QGroupBox(self.leftColumn) + self.defaultServiceGroupBox.setObjectName(u'defaultServiceGroupBox') + self.defaultServiceLayout = QtGui.QFormLayout( + self.defaultServiceGroupBox) + self.defaultServiceLayout.setObjectName(u'defaultServiceLayout') + self.defaultServiceDayLabel = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceDayLabel.setObjectName(u'defaultServiceDayLabel') + self.defaultServiceDay = QtGui.QComboBox( + self.defaultServiceGroupBox) + self.defaultServiceDay.addItems( + [u'', u'', u'', u'', u'', u'', u'', u'']) + self.defaultServiceDay.setObjectName( + u'defaultServiceDay') + self.defaultServiceTime = QtGui.QTimeEdit(self.defaultServiceGroupBox) + self.defaultServiceTime.setObjectName(u'defaultServiceTime') + self.defaultServiceTimeHBox = QtGui.QHBoxLayout() + self.defaultServiceTimeHBox.setObjectName(u'defaultServiceTimeHBox') + self.defaultServiceTimeHBox.addWidget(self.defaultServiceDayLabel) + self.defaultServiceTimeHBox.addWidget(self.defaultServiceDay) + self.defaultServiceTimeHBox.addWidget(self.defaultServiceTime) + self.defaultServiceLayout.addRow(self.defaultServiceTimeHBox) + self.defaultServiceLabel = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceLabel.setObjectName(u'defaultServiceLabel') + self.defaultServiceName = QtGui.QLineEdit(self.defaultServiceGroupBox) + self.defaultServiceName.setObjectName(u'defaultServiceName') + self.defaultServiceName.setValidator(QtGui.QRegExpValidator( + QtCore.QRegExp(r'[^/\\?*|<>\[\]":+]+'), self)) + self.defaultServiceRevertButton = QtGui.QToolButton( + self.defaultServiceGroupBox) + self.defaultServiceRevertButton.setObjectName( + u'defaultServiceRevertButton') + self.defaultServiceRevertButton.setIcon( + build_icon(u':/general/general_revert.png')) + self.defaultServiceHBox = QtGui.QHBoxLayout() + self.defaultServiceHBox.setObjectName(u'defaultServiceHBox') + self.defaultServiceHBox.addWidget(self.defaultServiceLabel) + self.defaultServiceHBox.addWidget(self.defaultServiceName) + self.defaultServiceHBox.addWidget(self.defaultServiceRevertButton) + self.defaultServiceLayout.addRow(self.defaultServiceHBox) + self.defaultServiceExampleLabel = QtGui.QLabel( + self.defaultServiceGroupBox) + self.defaultServiceExampleLabel.setObjectName( + u'defaultServiceExampleLabel') + self.defaultServiceExample = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceExample.setObjectName(u'defaultServiceExample') + self.defaultServiceLayout.addRow(self.defaultServiceExampleLabel, + self.defaultServiceExample) + self.defaultServiceNoteLabel = QtGui.QLabel(self.defaultServiceGroupBox) + self.defaultServiceNoteLabel.setWordWrap(True) + self.defaultServiceNoteLabel.setObjectName(u'defaultServiceNoteLabel') + self.defaultServiceLayout.addRow(self.defaultServiceNoteLabel) + self.leftLayout.addWidget(self.defaultServiceGroupBox) self.leftLayout.addStretch() self.defaultImageGroupBox = QtGui.QGroupBox(self.rightColumn) self.defaultImageGroupBox.setObjectName(u'defaultImageGroupBox') @@ -133,6 +197,18 @@ self.rightLayout.addWidget(self.x11GroupBox) self.rightLayout.addStretch() + QtCore.QObject.connect(self.defaultServiceDay, + QtCore.SIGNAL(u'currentIndexChanged(int)'), + self.onDefaultServiceDayChanged) + QtCore.QObject.connect(self.defaultServiceTime, + QtCore.SIGNAL(u'timeChanged(QTime)'), + self.onDefaultServiceTimeChanged) + QtCore.QObject.connect(self.defaultServiceName, + QtCore.SIGNAL(u'textChanged(QString)'), + self.onDefaultServiceNameChanged) + QtCore.QObject.connect(self.defaultServiceRevertButton, + QtCore.SIGNAL(u'pressed()'), + self.onDefaultServiceRevertButtonPressed) QtCore.QObject.connect(self.defaultColorButton, QtCore.SIGNAL(u'pressed()'), self.onDefaultColorButtonPressed) QtCore.QObject.connect(self.defaultBrowseButton, @@ -162,6 +238,42 @@ 'Expand new service items on creation')) self.enableAutoCloseCheckBox.setText(translate('OpenLP.AdvancedTab', 'Enable application exit confirmation')) + self.defaultServiceGroupBox.setTitle( + translate('OpenLP.AdvancedTab', 'Default Service')) + self.defaultServiceDayLabel.setText( + translate('OpenLP.AdvancedTab', 'Service name refers to:')) + self.defaultServiceDay.setItemText(0, + translate('OpenLP.AdvancedTab', 'Monday')) + self.defaultServiceDay.setItemText(1, + translate('OpenLP.AdvancedTab', 'Tuesday')) + self.defaultServiceDay.setItemText(2, + translate('OpenLP.AdvancedTab', 'Wednesday')) + self.defaultServiceDay.setItemText(3, + translate('OpenLP.AdvancedTab', 'Thurdsday')) + self.defaultServiceDay.setItemText(4, + translate('OpenLP.AdvancedTab', 'Friday')) + self.defaultServiceDay.setItemText(5, + translate('OpenLP.AdvancedTab', 'Saturday')) + self.defaultServiceDay.setItemText(6, + translate('OpenLP.AdvancedTab', 'Sunday')) + self.defaultServiceDay.setItemText(7, + translate('OpenLP.AdvancedTab', 'Now')) + self.defaultServiceTime.setToolTip(translate('OpenLP.AdvancedTab', + 'Time when usual service starts.')) + self.defaultServiceLabel.setText( + translate('OpenLP.AdvancedTab', 'Default service name:')) + self.defaultServiceRevertButton.setToolTip(unicode( + translate('OpenLP.AdvancedTab', + 'Revert to the default service name "%s".')) % + self.default_service_name) + self.defaultServiceExampleLabel.setText(translate('OpenLP.AdvancedTab', + 'Example:')) + self.defaultServiceNoteLabel.setText(unicode( + translate('OpenLP.AdvancedTab', 'Default service name when ' + 'saving a new service. You can use date placeholders, e.g %s ' + 'results in %s. Leave it empty to use no default value.')) % + (self.default_service_example, + datetime.now().strftime(self.default_service_example))) self.hideMouseGroupBox.setTitle(translate('OpenLP.AdvancedTab', 'Mouse Cursor')) self.hideMouseCheckBox.setText(translate('OpenLP.AdvancedTab', @@ -213,6 +325,18 @@ QtCore.QVariant(True)).toBool()) self.hideMouseCheckBox.setChecked( settings.value(u'hide mouse', QtCore.QVariant(False)).toBool()) + self.service_day, ok = settings.value(u'default service day', + QtCore.QVariant(self.default_service_day)).toInt() + self.service_hour, ok = settings.value(u'default service hour', + self.default_service_hour).toInt() + self.service_minute, ok = settings.value(u'default service minute', + self.default_service_minute).toInt() + self.service_name = unicode(settings.value(u'default service name', + self.default_service_name).toString()) + self.defaultServiceDay.setCurrentIndex(self.service_day) + self.defaultServiceTime.setTime( + QtCore.QTime(self.service_hour, self.service_minute)) + self.defaultServiceName.setText(self.service_name) self.x11BypassCheckBox.setChecked( settings.value(u'x11 bypass wm', QtCore.QVariant(True)).toBool()) self.default_color = settings.value(u'default color', @@ -228,8 +352,21 @@ """ Save settings to disk. """ + preset_is_valid, name_example = self.generate_service_name_example() + if not preset_is_valid: + self.service_name = self.default_service_name settings = QtCore.QSettings() settings.beginGroup(self.settingsSection) + if self.service_name == self.default_service_name: + settings.remove(u'default service name') + else: + settings.setValue(u'default service name', self.service_name) + settings.setValue(u'default service day', + self.defaultServiceDay.currentIndex()) + settings.setValue(u'default service hour', + self.defaultServiceTime.time().hour()) + settings.setValue(u'default service minute', + self.defaultServiceTime.time().minute()) settings.setValue(u'recent file count', QtCore.QVariant(self.recentSpinBox.value())) settings.setValue(u'save current plugin', @@ -253,6 +390,47 @@ Receiver.send_message(u'config_screen_changed') self.display_changed = False + def generate_service_name_example(self): + preset_is_valid = True + if self.service_day == 7: + time = datetime.now() + else: + now = datetime.now() + day_delta = self.service_day - now.weekday() + if day_delta < 0: + day_delta += 7 + time = now + timedelta(days=day_delta) + time = time.replace(hour = self.service_hour, + minute = self.service_minute) + try: + service_name_example = time.strftime(unicode(self.service_name)) + except ValueError: + service_name_example = translate('OpenLP.AdvancedTab', + 'Syntax error.') + preset_is_valid = False + return preset_is_valid, service_name_example + + def updateServiceNameExample(self): + preset_is_valid, name_example = self.generate_service_name_example() + self.defaultServiceExample.setText(name_example) + + def onDefaultServiceDayChanged(self, index): + self.service_day = index + self.updateServiceNameExample() + + def onDefaultServiceTimeChanged(self, time): + self.service_hour = time.hour() + self.service_minute = time.minute() + self.updateServiceNameExample() + + def onDefaultServiceNameChanged(self, name): + self.service_name = name + self.updateServiceNameExample() + + def onDefaultServiceRevertButtonPressed(self): + self.defaultServiceName.setText(self.default_service_name) + self.defaultServiceName.setFocus() + def onDefaultColorButtonPressed(self): new_color = QtGui.QColorDialog.getColor( QtGui.QColor(self.default_color), self) === modified file 'openlp/core/ui/servicemanager.py' --- openlp/core/ui/servicemanager.py 2012-01-01 13:43:43 +0000 +++ openlp/core/ui/servicemanager.py 2012-01-15 01:36:28 +0000 @@ -31,6 +31,7 @@ import shutil import zipfile from tempfile import mkstemp +from datetime import datetime, timedelta log = logging.getLogger(__name__) @@ -612,10 +613,31 @@ Get a file name and then call :func:`ServiceManager.saveFile` to save the file. """ + service_day, ok = QtCore.QSettings().value( + u'advanced/default service day', 7).toInt() + if service_day == 7: + time = datetime.now() + else: + service_hour, ok = QtCore.QSettings().value( + u'advanced/default service hour', 11).toInt() + service_minute, ok = QtCore.QSettings().value( + u'advanced/default service minute', 0).toInt() + now = datetime.now() + day_delta = service_day - now.weekday() + if day_delta < 0: + day_delta += 7 + time = now + timedelta(days=day_delta) + time = time.replace(hour = service_hour, minute = service_minute) + default_pattern = unicode(QtCore.QSettings().value( + u'advanced/default service name', + translate('OpenLP.AdvancedTab', + 'Service %Y-%m-%d-%H-%M')).toString()) + default_filename = time.strftime(default_pattern) + directory = unicode(SettingsManager.get_last_dir( + self.mainwindow.servicemanagerSettingsSection)) + path = os.path.join(directory, default_filename) fileName = unicode(QtGui.QFileDialog.getSaveFileName(self.mainwindow, - UiStrings().SaveService, - SettingsManager.get_last_dir( - self.mainwindow.servicemanagerSettingsSection), + UiStrings().SaveService, path, translate('OpenLP.ServiceManager', 'OpenLP Service Files (*.osz)'))) if not fileName: return False
_______________________________________________ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp