From 38000b5e5615bf8475cbee8978c7b56b71567dcf Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 26 May 2011 08:23:22 +0200 Subject: [PATCH] Give the media items the ability to do something when they are "focused". Make the search edits on the Songs, Bibles and Custom media items focus when the item is selected. --- openlp/core/lib/mediamanageritem.py | 7 +++++++ openlp/core/ui/mainwindow.py | 8 ++++++++ openlp/plugins/bibles/lib/mediaitem.py | 7 +++++++ openlp/plugins/custom/lib/mediaitem.py | 3 +++ openlp/plugins/songs/lib/mediaitem.py | 3 +++ 5 files changed, 28 insertions(+) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 00ec3a88a..01d9eb961 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -431,6 +431,13 @@ class MediaManagerItem(QtGui.QWidget): raise NotImplementedError(u'MediaManagerItem.onDeleteClick needs to ' u'be defined by the plugin') + def onFocus(self): + """ + Run when a tab in the media manager gains focus. This gives the media + item a chance to focus any elements it wants to. + """ + pass + def generateSlideData(self, serviceItem, item=None, xmlVersion=False): raise NotImplementedError(u'MediaManagerItem.generateSlideData needs ' u'to be defined by the plugin') diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index b54f7b206..249867f4a 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -537,6 +537,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtCore.SIGNAL(u'config_screen_changed'), self.screenChanged) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'maindisplay_status_text'), self.showStatusMessage) + # Media Manager + QtCore.QObject.connect(self.mediaToolBox, + QtCore.SIGNAL(u'currentChanged(int)'), self.onMediaToolBoxChanged) Receiver.send_message(u'cursor_busy') # Simple message boxes QtCore.QObject.connect(Receiver.get_receiver(), @@ -602,6 +605,11 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): LanguageManager.auto_language = value LanguageManager.set_language(self.languageGroup.checkedAction()) + def onMediaToolBoxChanged(self, index): + widget = self.mediaToolBox.widget(index) + if widget: + widget.onFocus() + def versionNotice(self, version): """ Notifies the user that a newer version of OpenLP is available. diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index e2aa86d8c..99437d7f2 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -273,6 +273,12 @@ class BibleMediaItem(MediaManagerItem): QtCore.SIGNAL(u'currentChanged(int)'), self.onSearchTabBarCurrentChanged) + def onFocus(self): + if self.quickTab.isVisible(): + self.quickSearchEdit.setFocus() + else: + self.advancedBookComboBox.setFocus() + def configUpdated(self): log.debug(u'configUpdated') if QtCore.QSettings().value(self.settingsSection + u'/second bibles', @@ -463,6 +469,7 @@ class BibleMediaItem(MediaManagerItem): else: self.quickTab.setVisible(False) self.advancedTab.setVisible(True) + self.advancedBookComboBox.setFocus() def onLockButtonToggled(self, checked): if checked: diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 64ddf2374..499961152 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -199,6 +199,9 @@ class CustomMediaItem(MediaManagerItem): for row in row_list: self.listView.takeItem(row) + def onFocus(self): + self.searchTextEdit.setFocus() + def generateSlideData(self, service_item, item=None, xmlVersion=False): raw_slides = [] raw_footer = [] diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 7ea1658fc..acce12d54 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -125,6 +125,9 @@ class SongMediaItem(MediaManagerItem): QtCore.SIGNAL(u'searchTypeChanged(int)'), self.onSearchTextButtonClick) + def onFocus(self): + self.searchTextEdit.setFocus() + def configUpdated(self): self.searchAsYouType = QtCore.QSettings().value( self.settingsSection + u'/search as type',