search box typing timer before searching
This commit is contained in:
parent
de260f3786
commit
e7cc36f133
@ -142,7 +142,7 @@ class MusicTable(QTableView):
|
|||||||
self.doubleClicked.connect(self.play_selected_audio_file)
|
self.doubleClicked.connect(self.play_selected_audio_file)
|
||||||
self.enterKey.connect(self.play_selected_audio_file)
|
self.enterKey.connect(self.play_selected_audio_file)
|
||||||
self.model2.dataChanged.connect(self.on_cell_data_changed) # editing cells
|
self.model2.dataChanged.connect(self.on_cell_data_changed) # editing cells
|
||||||
self.model2.layoutChanged.connect(self.restore_scroll_position)
|
# self.model2.layoutChanged.connect(self.restore_scroll_position)
|
||||||
self.horizontal_header.sectionResized.connect(self.on_header_resized)
|
self.horizontal_header.sectionResized.connect(self.on_header_resized)
|
||||||
# Final actions
|
# Final actions
|
||||||
# self.load_music_table()
|
# self.load_music_table()
|
||||||
@ -674,9 +674,6 @@ class MusicTable(QTableView):
|
|||||||
|
|
||||||
hint: You get a `playlist_id` from the signal emitted from PlaylistsPane as a tuple (1,)
|
hint: You get a `playlist_id` from the signal emitted from PlaylistsPane as a tuple (1,)
|
||||||
"""
|
"""
|
||||||
debug(
|
|
||||||
f"load_music_table() | playlist id: \nTYPE: {type(playlist_id)}\nVALUE: {playlist_id}\n"
|
|
||||||
)
|
|
||||||
self.disconnect_data_changed()
|
self.disconnect_data_changed()
|
||||||
self.disconnect_layout_changed()
|
self.disconnect_layout_changed()
|
||||||
self.vertical_scroll_position = self.verticalScrollBar().value() # type: ignore
|
self.vertical_scroll_position = self.verticalScrollBar().value() # type: ignore
|
||||||
@ -757,16 +754,16 @@ class MusicTable(QTableView):
|
|||||||
# reloading the model destroys and makes new indexes
|
# reloading the model destroys and makes new indexes
|
||||||
# so we look for the new index of the current song on load
|
# so we look for the new index of the current song on load
|
||||||
current_song_filepath = self.get_current_song_filepath()
|
current_song_filepath = self.get_current_song_filepath()
|
||||||
print(f"load music table current filepath: {current_song_filepath}")
|
debug(f"load_music_table() | current filepath: {current_song_filepath}")
|
||||||
for row in range(self.model2.rowCount()):
|
for row in range(self.model2.rowCount()):
|
||||||
real_index = self.model2.index(
|
real_index = self.model2.index(
|
||||||
row, self.headers.user_fields.index("filepath")
|
row, self.headers.user_fields.index("filepath")
|
||||||
)
|
)
|
||||||
if real_index.data() == current_song_filepath:
|
if real_index.data() == current_song_filepath:
|
||||||
print("is it true?")
|
# print("is it true?")
|
||||||
print(f"{real_index.data()} == {current_song_filepath}")
|
# print(f"{real_index.data()} == {current_song_filepath}")
|
||||||
print("load music table real index:")
|
# print("load music table real index:")
|
||||||
print(real_index)
|
# print(real_index)
|
||||||
self.current_song_qmodel_index = real_index
|
self.current_song_qmodel_index = real_index
|
||||||
self.model2.layoutChanged.emit() # emits a signal that the view should be updated
|
self.model2.layoutChanged.emit() # emits a signal that the view should be updated
|
||||||
self.playlistStatsSignal.emit(f"Songs: {row_count} | Total time: {total_time}")
|
self.playlistStatsSignal.emit(f"Songs: {row_count} | Total time: {total_time}")
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
from PyQt5.QtCore import QTimer, pyqtSignal
|
||||||
from PyQt5.QtWidgets import QLineEdit
|
from PyQt5.QtWidgets import QLineEdit
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -14,9 +15,15 @@ in MusicTable.py, when Ctrl+F is pressed, the line edit gets hidden or visible
|
|||||||
|
|
||||||
|
|
||||||
class SearchLineEdit(QLineEdit):
|
class SearchLineEdit(QLineEdit):
|
||||||
|
textTypedSignal = pyqtSignal(str)
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self.setVisible(False)
|
self.setVisible(False)
|
||||||
|
self.timer = QTimer(self)
|
||||||
|
self.timer.setSingleShot(True)
|
||||||
|
self.timer.timeout.connect(self.on_typing_stopped)
|
||||||
|
self.textChanged.connect(self.on_text_changed)
|
||||||
|
|
||||||
def toggle_visibility(self) -> bool:
|
def toggle_visibility(self) -> bool:
|
||||||
"""
|
"""
|
||||||
@ -33,10 +40,10 @@ class SearchLineEdit(QLineEdit):
|
|||||||
self.setText(None)
|
self.setText(None)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# def toggle_visibility(self):
|
def on_text_changed(self):
|
||||||
# if self.is_hidden:
|
"""Reset a timer each time text is changed"""
|
||||||
# self.button.setVisible(True)
|
self.timer.start(300)
|
||||||
# self.is_hidden = False
|
|
||||||
# else:
|
def on_typing_stopped(self):
|
||||||
# self.button.setVisible(False)
|
"""When timer reaches end, emit the text that is currently entered"""
|
||||||
# self.is_hidden = True
|
self.textTypedSignal.emit(self.text())
|
||||||
|
|||||||
7
main.py
7
main.py
@ -67,6 +67,7 @@ from components import (
|
|||||||
AudioVisualizer,
|
AudioVisualizer,
|
||||||
CreatePlaylistWindow,
|
CreatePlaylistWindow,
|
||||||
ExportPlaylistWindow,
|
ExportPlaylistWindow,
|
||||||
|
SearchLineEdit,
|
||||||
)
|
)
|
||||||
from utils.get_album_art import get_album_art
|
from utils.get_album_art import get_album_art
|
||||||
|
|
||||||
@ -266,14 +267,14 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
|||||||
self.lineEditSearch: QLineEdit
|
self.lineEditSearch: QLineEdit
|
||||||
|
|
||||||
## CONNECTIONS
|
## CONNECTIONS
|
||||||
self.lineEditSearch.textChanged.connect(self.handle_search_box_text)
|
self.lineEditSearch.textTypedSignal.connect(self.handle_search_box_text)
|
||||||
# tableView
|
# tableView
|
||||||
self.tableView.playSignal.connect(self.play_audio_file)
|
self.tableView.playSignal.connect(self.play_audio_file)
|
||||||
self.tableView.playPauseSignal.connect(
|
self.tableView.playPauseSignal.connect(
|
||||||
self.on_play_clicked
|
self.on_play_clicked
|
||||||
) # Spacebar toggle play/pause signal
|
) # Spacebar toggle play/pause signal
|
||||||
self.tableView.handleProgressSignal.connect(self.handle_progress)
|
self.tableView.handleProgressSignal.connect(self.handle_progress)
|
||||||
self.tableView.searchBoxSignal.connect(self.handle_search_box)
|
self.tableView.searchBoxSignal.connect(self.handle_search_box_visibility)
|
||||||
self.tableView.playlistStatsSignal.connect(
|
self.tableView.playlistStatsSignal.connect(
|
||||||
self.set_permanent_status_bar_message
|
self.set_permanent_status_bar_message
|
||||||
)
|
)
|
||||||
@ -489,7 +490,7 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
|
|||||||
else:
|
else:
|
||||||
self.status_bar.showMessage(message)
|
self.status_bar.showMessage(message)
|
||||||
|
|
||||||
def handle_search_box(self):
|
def handle_search_box_visibility(self):
|
||||||
"""show or hide the searchbox"""
|
"""show or hide the searchbox"""
|
||||||
visible = self.lineEditSearch.toggle_visibility()
|
visible = self.lineEditSearch.toggle_visibility()
|
||||||
if visible:
|
if visible:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user