MusicTable clean up duplicate double click functionality

This commit is contained in:
billypom on debian 2024-02-29 20:22:50 -05:00
parent 6cb1f79bf5
commit ca5b9ad849
2 changed files with 12 additions and 43 deletions

View File

@ -21,7 +21,8 @@ class MusicTable(QTableView):
self.qapp = None self.qapp = None
# self.tableView.resizeColumnsToContents() # self.tableView.resizeColumnsToContents()
self.clicked.connect(self.set_selected_song_filepath) self.clicked.connect(self.set_selected_song_filepath)
self.doubleClicked.connect(self.set_current_song_filepath) # listens for emitted signal, runs set_current_song_filepath # doubleClicked is a built in event for QTableView - we listen for this event and run set_current_song_filepath
self.doubleClicked.connect(self.set_current_song_filepath)
self.enterKey.connect(self.set_current_song_filepath) self.enterKey.connect(self.set_current_song_filepath)
self.fetch_library() self.fetch_library()
@ -45,43 +46,12 @@ class MusicTable(QTableView):
else: # Default behavior else: # Default behavior
super().keyPressEvent(event) super().keyPressEvent(event)
def mousePressEvent(self, event):
"""Press mouse button. Do thing"""
self.last = "Click"
QTableView.mousePressEvent(self, event) # Keep original functionality
def mouseReleaseEvent(self, event):
"""Release mouse button. Do thing"""
if self.last == "Click":
QTimer.singleShot(self.qapp.instance().doubleClickInterval(),
self.performSingleClickAction)
else:
# Perform double click action.
self.set_current_song_filepath
self.message = "Double Click"
self.update()
QTableView.mouseReleaseEvent(self, event) # Keep original functionality
def mouseDoubleClickEvent(self, event):
self.last = "Double Click"
self.doubleClicked.emit(self.selectionModel().currentIndex()) # emits the current index of the double clicked song
QTableView.mouseDoubleClickEvent(self, event) # Keep original functionality
def performSingleClickAction(self):
if self.last == "Click":
self.message = "Click"
self.update()
def toggle_play_pause(self): def toggle_play_pause(self):
"""Toggles the currently playing song by emitting a signal""" """Toggles the currently playing song by emitting a signal"""
if not self.current_song_filepath: if not self.current_song_filepath:
self.set_current_song_filepath() self.set_current_song_filepath()
self.playPauseSignal.emit() self.playPauseSignal.emit()
def choose_new_song(self):
"""Starts the playback of a new song by emitting a signal"""
def get_selected_rows(self): def get_selected_rows(self):
"""Returns a list of indexes for every selected row""" """Returns a list of indexes for every selected row"""
rows = [] rows = []
@ -95,30 +65,30 @@ class MusicTable(QTableView):
print(f'Selected song: {self.selected_song_filepath}') print(f'Selected song: {self.selected_song_filepath}')
def set_current_song_filepath(self): def set_current_song_filepath(self):
"""Sets the filepath of the currently playing/chosen song""" """Sets the filepath of the currently playing song"""
# Setting the current song filepath automatically plays that song # Setting the current song filepath automatically plays that song
# self.tableView listens to this function and plays the audio file located at self.current_song_filepath # self.tableView listens to this function and plays the audio file located at self.current_song_filepath
self.current_song_filepath = self.currentIndex().siblingAtColumn(self.headers.index('path')).data() self.current_song_filepath = self.currentIndex().siblingAtColumn(self.headers.index('path')).data()
print(f'Current song: {self.current_song_filepath}') print(f'Current song: {self.current_song_filepath}')
def get_selected_song_filepath(self): def get_selected_song_filepath(self):
"""Returns the selected song filepath""" """Returns the selected songs filepath"""
return self.selected_song_filepath return self.selected_song_filepath
def get_selected_song_metadata(self): def get_selected_song_metadata(self):
"""Returns the current/chosen song's ID3 tags""" """Returns the selected song's ID3 tags"""
return get_id3_tags(self.selected_song_filepath) return get_id3_tags(self.selected_song_filepath)
def get_current_song_filepath(self): def get_current_song_filepath(self):
"""Returns the current/chosen song filepath""" """Returns the currently playing song filepath"""
return self.current_song_filepath return self.current_song_filepath
def get_current_song_metadata(self): def get_current_song_metadata(self):
"""Returns the current/chosen song's ID3 tags""" """Returns the currently playing song's ID3 tags"""
return get_id3_tags(self.current_song_filepath) return get_id3_tags(self.current_song_filepath)
def get_current_song_album_art(self): def get_current_song_album_art(self):
"""Returns the APIC data for the currently playing song""" """Returns the APIC data (album art lol) for the currently playing song"""
return get_album_art(self.current_song_filepath) return get_album_art(self.current_song_filepath)
@ -150,6 +120,7 @@ class MusicTable(QTableView):
def load_qapp(self, qapp): def load_qapp(self, qapp):
# why was this necessary again? :thinking:
self.qapp = qapp self.qapp = qapp

View File

@ -1,4 +1,3 @@
import DBA
from ui import Ui_MainWindow from ui import Ui_MainWindow
from PyQt5.QtWidgets import QMainWindow, QApplication, QGraphicsScene, QHeaderView, QGraphicsPixmapItem from PyQt5.QtWidgets import QMainWindow, QApplication, QGraphicsScene, QHeaderView, QGraphicsPixmapItem
import qdarktheme import qdarktheme
@ -76,9 +75,9 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
self.actionClearDatabase.triggered.connect(self.clear_database) # Clear database self.actionClearDatabase.triggered.connect(self.clear_database) # Clear database
## tableView ## tableView
# self.tableView.clicked.connect(self.set_clicked_cell_filepath) # self.tableView.clicked.connect(self.set_clicked_cell_filepath)
self.tableView.doubleClicked.connect(self.play_audio_file) # Listens for the double click event, and plays the song self.tableView.doubleClicked.connect(self.play_audio_file) # Listens for the double click event, then plays the song
self.tableView.enterKey.connect(self.play_audio_file) # Press Enter to play song self.tableView.enterKey.connect(self.play_audio_file) # Listens for the enter key event, then plays the song
self.tableView.playPauseSignal.connect(self.on_play_clicked) # Spacebar toggle playpause signal self.tableView.playPauseSignal.connect(self.on_play_clicked) # Spacebar toggle play/pause signal
self.tableView.viewport().installEventFilter(self) # for drag & drop functionality self.tableView.viewport().installEventFilter(self) # for drag & drop functionality
# self.tableView.model.layoutChanged() # self.tableView.model.layoutChanged()
### set column widths ### set column widths
@ -117,7 +116,6 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
column_widths_as_string = ','.join(list_of_column_widths) column_widths_as_string = ','.join(list_of_column_widths)
self.config['table']['column_widths'] = column_widths_as_string self.config['table']['column_widths'] = column_widths_as_string
# Save the config # Save the config
with open('config.ini', 'w') as configfile: with open('config.ini', 'w') as configfile:
self.config.write(configfile) self.config.write(configfile)