forked from openlp/openlp
Tests and added icon
This commit is contained in:
parent
53b210d9cd
commit
eee14a654a
@ -125,6 +125,15 @@ class ListWidgetWithDnD(QtWidgets.QListWidget):
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
def allItems(self):
|
||||
"""
|
||||
An generator to list all the items in the widget
|
||||
|
||||
:return: a generator
|
||||
"""
|
||||
for row in range(self.count()):
|
||||
yield self.item(row)
|
||||
|
||||
def paintEvent(self, event):
|
||||
"""
|
||||
Re-implement paintEvent so that we can add 'No Results' text when the listWidget is empty.
|
||||
|
@ -84,8 +84,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
:param kwargs: Keyword arguments to pass to the super method. (dict)
|
||||
"""
|
||||
self.clear_icon = build_icon(':/bibles/bibles_search_clear.png')
|
||||
self.lock_icon = build_icon(':/bibles/bibles_search_lock.png')
|
||||
self.unlock_icon = build_icon(':/bibles/bibles_search_unlock.png')
|
||||
self.save_results_icon = build_icon(':/bibles/bibles_save_results.png')
|
||||
self.sort_icon = build_icon(':/bibles/bibles_book_sort.png')
|
||||
self.bible = None
|
||||
self.second_bible = None
|
||||
@ -191,7 +190,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.clear_button = QtWidgets.QToolButton(self)
|
||||
self.clear_button.setIcon(self.clear_icon)
|
||||
self.save_results_button = QtWidgets.QToolButton(self)
|
||||
self.save_results_button.setIcon(self.unlock_icon)
|
||||
self.save_results_button.setIcon(self.save_results_icon)
|
||||
self.search_button_layout.addWidget(self.clear_button)
|
||||
self.search_button_layout.addWidget(self.save_results_button)
|
||||
self.search_button = QtWidgets.QPushButton(self)
|
||||
@ -201,6 +200,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.results_view_tab = QtWidgets.QTabBar(self)
|
||||
self.results_view_tab.addTab('')
|
||||
self.results_view_tab.addTab('')
|
||||
self.results_view_tab.setCurrentIndex(ResultsTab.Search)
|
||||
self.page_layout.addWidget(self.results_view_tab)
|
||||
|
||||
def setupUi(self):
|
||||
@ -492,18 +492,18 @@ class BibleMediaItem(MediaManagerItem):
|
||||
:return: None
|
||||
"""
|
||||
current_index = self.results_view_tab.currentIndex()
|
||||
for item in self.list_view.selectedItems():
|
||||
self.list_view.takeItem(self.list_view.row(item))
|
||||
results = [item.data(QtCore.Qt.UserRole) for item in self.list_view.allItems()]
|
||||
if current_index == ResultsTab.Saved:
|
||||
self.saved_results = []
|
||||
self.saved_results = results
|
||||
elif current_index == ResultsTab.Search:
|
||||
self.current_results = []
|
||||
self.search_edit.clear()
|
||||
self.on_focus()
|
||||
self.current_results = results
|
||||
self.on_results_view_tab_total_update(current_index)
|
||||
self.list_view.clear()
|
||||
|
||||
def on_save_results_button_clicked(self):
|
||||
"""
|
||||
Toggle the lock button.
|
||||
Add the selected verses to the saved_results list.
|
||||
|
||||
:return: None
|
||||
"""
|
||||
|
BIN
resources/images/bibles_save_results.png
Normal file
BIN
resources/images/bibles_save_results.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 735 B |
Binary file not shown.
Before Width: | Height: | Size: 452 B |
Binary file not shown.
Before Width: | Height: | Size: 440 B |
Binary file not shown.
Before Width: | Height: | Size: 577 B |
@ -34,8 +34,7 @@
|
||||
<file>bibles_search_text.png</file>
|
||||
<file>bibles_search_reference.png</file>
|
||||
<file>bibles_search_clear.png</file>
|
||||
<file>bibles_search_unlock.png</file>
|
||||
<file>bibles_search_lock.png</file>
|
||||
<file>bibles_save_results.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="plugins">
|
||||
<file>plugin_alerts.png</file>
|
||||
@ -144,7 +143,6 @@
|
||||
</qresource>
|
||||
<qresource prefix="remote">
|
||||
<file>network_server.png</file>
|
||||
<file>network_ssl.png</file>
|
||||
<file>network_auth.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="songusage">
|
||||
@ -188,4 +186,4 @@
|
||||
<file>android_app_qr.png</file>
|
||||
<file>ios_app_qr.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
</RCC>
|
||||
|
@ -23,6 +23,7 @@
|
||||
This module contains tests for the openlp.core.lib.listwidgetwithdnd module
|
||||
"""
|
||||
from unittest import TestCase
|
||||
from types import GeneratorType
|
||||
|
||||
from openlp.core.common.uistrings import UiStrings
|
||||
from openlp.core.ui.lib.listwidgetwithdnd import ListWidgetWithDnD
|
||||
@ -59,6 +60,38 @@ class TestListWidgetWithDnD(TestCase):
|
||||
# THEN: The results text should be the 'short results' text.
|
||||
self.assertEqual(widget.no_results_text, UiStrings().ShortResults)
|
||||
|
||||
def test_all_items_no_list_items(self):
|
||||
"""
|
||||
Test allItems when there are no items in the list widget
|
||||
"""
|
||||
# GIVEN: An instance of ListWidgetWithDnD
|
||||
widget = ListWidgetWithDnD()
|
||||
with patch.object(widget, 'count', return_value=0), \
|
||||
patch.object(widget, 'item', side_effect=lambda x: [][x]):
|
||||
|
||||
# WHEN: Calling allItems
|
||||
result = widget.allItems()
|
||||
|
||||
# THEN: An instance of a Generator object should be returned. The generator should not yeild any results
|
||||
self.assertIsInstance(result, GeneratorType)
|
||||
self.assertEqual(list(result), [])
|
||||
|
||||
def test_all_items_list_items(self):
|
||||
"""
|
||||
Test allItems when the list widget contains some items.
|
||||
"""
|
||||
# GIVEN: An instance of ListWidgetWithDnD
|
||||
widget = ListWidgetWithDnD()
|
||||
with patch.object(widget, 'count', return_value=2), \
|
||||
patch.object(widget, 'item', side_effect=lambda x: [5, 3][x]):
|
||||
|
||||
# WHEN: Calling allItems
|
||||
result = widget.allItems()
|
||||
|
||||
# THEN: An instance of a Generator object should be returned. The generator should not yeild any results
|
||||
self.assertIsInstance(result, GeneratorType)
|
||||
self.assertEqual(list(result), [5, 3])
|
||||
|
||||
def test_paint_event(self):
|
||||
"""
|
||||
Test the paintEvent method when the list is not empty
|
||||
|
Loading…
Reference in New Issue
Block a user