Songs Plugin get search as you type

This commit is contained in:
Tim Bentley 2009-10-17 06:47:17 +01:00
parent cbb17039d5
commit 025d7c86d2
4 changed files with 62 additions and 9 deletions

View File

@ -83,6 +83,9 @@ class EventReceiver(QtCore.QObject):
``audit_changed`` ``audit_changed``
Audit information may have changed Audit information may have changed
``config_updated``
Informs components the config has changed
""" """
global log global log
log = logging.getLogger(u'EventReceiver') log = logging.getLogger(u'EventReceiver')

View File

@ -27,7 +27,7 @@ import logging
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, translate, SongXMLParser, \ from openlp.core.lib import MediaManagerItem, translate, SongXMLParser, \
BaseListWithDnD, Receiver BaseListWithDnD, Receiver, str_to_bool
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm
class SongListView(BaseListWithDnD): class SongListView(BaseListWithDnD):
@ -113,6 +113,12 @@ class SongMediaItem(MediaManagerItem):
self.onSearchTextEditChanged) self.onSearchTextEditChanged)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'load_song_list'), self.onSearchTextButtonClick) QtCore.SIGNAL(u'load_song_list'), self.onSearchTextButtonClick)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_updated'), self.configUpdated)
def configUpdated(self):
self.searchAsYouType = str_to_bool(
self.parent.config.get_config(u'search as type', u'False'))
def retranslateUi(self): def retranslateUi(self):
self.SearchTypeLabel.setText( self.SearchTypeLabel.setText(
@ -126,6 +132,7 @@ class SongMediaItem(MediaManagerItem):
self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Titles')) self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Titles'))
self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Lyrics')) self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Lyrics'))
self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Authors')) self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Authors'))
self.configUpdated()
def onSearchTextButtonClick(self): def onSearchTextButtonClick(self):
search_keywords = unicode(self.SearchTextEdit.displayText()) search_keywords = unicode(self.SearchTextEdit.displayText())
@ -181,11 +188,12 @@ class SongMediaItem(MediaManagerItem):
self.SearchTextEdit.clear() self.SearchTextEdit.clear()
def onSearchTextEditChanged(self, text): def onSearchTextEditChanged(self, text):
search_length = 1 if self.searchAsYouType:
if self.SearchTypeComboBox.currentIndex() == 1: search_length = 1
search_length = 7 if self.SearchTypeComboBox.currentIndex() == 1:
if len(text) > search_length: search_length = 7
self.onSearchTextButtonClick() if len(text) > search_length:
self.onSearchTextButtonClick()
def onNewClick(self): def onNewClick(self):
self.edit_song_form.newSong() self.edit_song_form.newSong()

View File

@ -22,14 +22,53 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
############################################################################### ###############################################################################
from openlp.core.lib import SettingsTab, translate from PyQt4 import QtCore, QtGui
from openlp.core.lib import SettingsTab, str_to_bool, translate, Receiver
class SongsTab(SettingsTab): class SongsTab(SettingsTab):
""" """
SongsTab is the songs settings tab in the settings dialog. SongsTab is the Songs settings tab in the settings dialog.
""" """
def __init__(self): def __init__(self):
SettingsTab.__init__(self, translate(u'SongsTab', u'Songs'), u'Songs') SettingsTab.__init__(self, translate(u'SongsTab', u'Songs'), u'Songs')
def setupUi(self): def setupUi(self):
self.setObjectName(u'SongsTab') self.setObjectName(u'SongsTab')
self.SongsLayout = QtGui.QFormLayout(self)
self.SongsLayout.setObjectName(u'SongsLayout')
self.SongsModeGroupBox = QtGui.QGroupBox(self)
self.SongsModeGroupBox.setObjectName(u'SongsModeGroupBox')
self.SongsModeLayout = QtGui.QVBoxLayout(self.SongsModeGroupBox)
self.SongsModeLayout.setSpacing(8)
self.SongsModeLayout.setMargin(8)
self.SongsModeLayout.setObjectName(u'SongsModeLayout')
self.SearchAsTypeCheckBox = QtGui.QCheckBox(self.SongsModeGroupBox)
self.SearchAsTypeCheckBox.setObjectName(u'SearchAsTypeCheckBox')
self.SongsModeLayout.addWidget(self.SearchAsTypeCheckBox)
self.SongsLayout.setWidget(
0, QtGui.QFormLayout.LabelRole, self.SongsModeGroupBox)
QtCore.QObject.connect(self.SearchAsTypeCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'),
self.onSearchAsTypeCheckBoxChanged)
def retranslateUi(self):
self.SongsModeGroupBox.setTitle(translate(u'SongsTab', u'Songs Mode'))
self.SearchAsTypeCheckBox.setText(
translate(u'SongsTab', u'Enable search as you type:'))
def onSearchAsTypeCheckBoxChanged(self, check_state):
self.bible_search = False
# we have a set value convert to True/False
if check_state == QtCore.Qt.Checked:
self.bible_search = True
def load(self):
self.bible_search = str_to_bool(
self.config.get_config(u'search as type', u'False'))
self.SearchAsTypeCheckBox.setChecked(self.bible_search)
def save(self):
self.config.set_config(u'search as type', unicode(self.bible_search))
Receiver().send_message(u'config_updated')

View File

@ -27,7 +27,7 @@ import logging
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import Plugin, translate, buildIcon from openlp.core.lib import Plugin, translate, buildIcon
from openlp.plugins.songs.lib import SongManager, SongMediaItem from openlp.plugins.songs.lib import SongManager, SongMediaItem, SongsTab
from openlp.plugins.songs.forms import OpenLPImportForm, OpenSongExportForm, \ from openlp.plugins.songs.forms import OpenLPImportForm, OpenSongExportForm, \
OpenSongImportForm, OpenLPExportForm OpenSongImportForm, OpenLPExportForm
@ -62,6 +62,9 @@ class SongsPlugin(Plugin):
def can_be_disabled(self): def can_be_disabled(self):
return True return True
def get_settings_tab(self):
return SongsTab()
def initialise(self): def initialise(self):
log.info(u'Songs Initialising') log.info(u'Songs Initialising')
#if self.songmanager is None: #if self.songmanager is None: