This commit is contained in:
billypom on debian 2024-09-05 22:55:58 -04:00
parent bc3a3c42a2
commit 3bd2c539cf
2 changed files with 43 additions and 15 deletions

View File

@ -16,12 +16,21 @@ from PyQt5.QtWidgets import (
QMessageBox, QMessageBox,
QAbstractItemView, QAbstractItemView,
) )
from PyQt5.QtCore import QAbstractItemModel, QModelIndex, Qt, pyqtSignal, QTimer from PyQt5.QtCore import (
QAbstractItemModel,
QModelIndex,
QThread,
Qt,
pyqtSignal,
QTimer,
)
from components.DebugWindow import DebugWindow from components.DebugWindow import DebugWindow
from components.ErrorDialog import ErrorDialog from components.ErrorDialog import ErrorDialog
from components.LyricsWindow import LyricsWindow from components.LyricsWindow import LyricsWindow
from components.AddToPlaylistWindow import AddToPlaylistWindow from components.AddToPlaylistWindow import AddToPlaylistWindow
from components.MetadataWindow import MetadataWindow from components.MetadataWindow import MetadataWindow
# from main import WorkerThread
from utils.delete_song_id_from_database import delete_song_id_from_database from utils.delete_song_id_from_database import delete_song_id_from_database
from utils.add_files_to_library import add_files_to_library from utils.add_files_to_library import add_files_to_library
from utils.get_reorganize_vars import get_reorganize_vars from utils.get_reorganize_vars import get_reorganize_vars
@ -36,6 +45,29 @@ import os
import shutil import shutil
class DropAddFilesThread(QThread):
signalStarted = pyqtSignal()
signalProgress = pyqtSignal(str)
signalFinished = pyqtSignal()
def __init__(self, files, parent=None):
QThread.__init__(self, parent)
self.files = files
def run(self) -> None:
self.add_files()
return
def add_files(self) -> None:
"""When song(s) added to the library, update the tableview model
- Drag & Drop song(s) on tableView
- File > Open > List of song(s)
"""
add_files_to_library(self.files)
self.signalFinished.emit()
return
class MusicTable(QTableView): class MusicTable(QTableView):
playPauseSignal = pyqtSignal() playPauseSignal = pyqtSignal()
enterKey = pyqtSignal() enterKey = pyqtSignal()
@ -237,8 +269,13 @@ class MusicTable(QTableView):
for url in data.urls(): for url in data.urls():
if url.isLocalFile(): if url.isLocalFile():
files.append(url.path()) files.append(url.path())
self.add_files(files)
e.accept() e.accept()
self.worker = DropAddFilesThread(files=files)
# self.model.dataChanged.disconnect(self.on_cell_data_changed)
# self.model.dataChanged.connect(self.on_cell_data_changed)
self.worker.signalFinished.connect(self.load_music_table)
self.worker.start()
# self.add_files(files)
else: else:
e.ignore() e.ignore()
@ -310,6 +347,8 @@ class MusicTable(QTableView):
# Get target directory # Get target directory
target_dir = str(self.config["directories"]["reorganize_destination"]) target_dir = str(self.config["directories"]["reorganize_destination"])
for filepath in filepaths: for filepath in filepaths:
if str(filepath).startswith((target_dir)):
continue
try: try:
# Read file metadata # Read file metadata
artist, album = get_reorganize_vars(filepath) artist, album = get_reorganize_vars(filepath)
@ -344,7 +383,7 @@ class MusicTable(QTableView):
) )
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()
@ -425,17 +464,6 @@ class MusicTable(QTableView):
lambda: self.verticalScrollBar().setValue(self.vertical_scroll_position), lambda: self.verticalScrollBar().setValue(self.vertical_scroll_position),
) )
def add_files(self, files) -> None:
"""When song(s) added to the library, update the tableview model
- Drag & Drop song(s) on tableView
- File > Open > List of song(s)
"""
number_of_files_added = add_files_to_library(files)
if number_of_files_added:
self.model.dataChanged.disconnect(self.on_cell_data_changed)
self.load_music_table()
self.model.dataChanged.connect(self.on_cell_data_changed)
def get_selected_rows(self) -> list[int]: def get_selected_rows(self) -> list[int]:
"""Returns a list of indexes for every selected row""" """Returns a list of indexes for every selected row"""
selection_model = self.selectionModel() selection_model = self.selectionModel()

View File

@ -102,7 +102,7 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
global stopped global stopped
stopped = False stopped = False
# Multithreading stuff... # Multithreading stuff...
self.workers = dict[UUID, WorkerThread] = {} # self.workers = dict[UUID, WorkerThread] = {}
self.threadpool = QThreadPool() self.threadpool = QThreadPool()
# UI # UI
self.setupUi(self) self.setupUi(self)