#!/usr/bin/python3 from PyQt6.QtWidgets import QDialog, QFileDialog from .library.import_dialog import ImportDialog from ..types import Types class Popups: def __init__(self, app, gui): self.app = app self.gui = gui self.window = gui.window self.audio_file_selector = QFileDialog(self.window, "Select Audio Files") self.audio_file_selector.setFileMode(QFileDialog.FileMode.ExistingFiles) self.audio_file_selector.setNameFilters(["Audio Files (*.flac *.wav *.mp3 *.ogg *.opus *.m4a)", "Any (*)"]) self.audio_file_selector.setViewMode(QFileDialog.ViewMode.List) self.playlist_file_selector = QFileDialog(self.window, "Select Playlist") self.playlist_file_selector.setFileMode(QFileDialog.FileMode.ExistingFile) self.playlist_file_selector.setNameFilters(["Playlists (*.wbz.m3u *.m3u)", "Any (*)"]) self.playlist_file_selector.setViewMode(QFileDialog.ViewMode.List) self.import_dialog = ImportDialog() self.window.open_track_action.triggered.connect(self.open_tracks) self.window.import_track_action.triggered.connect(self.import_tracks) self.window.open_playlist_action.triggered.connect(self.open_playlist) self.window.import_playlist_action.triggered.connect(self.import_playlist) def select_audio_files(self): if self.audio_file_selector.exec(): return self.audio_file_selector.selectedFiles() def select_playlist_file(self): if self.playlist_file_selector.exec(): return self.playlist_file_selector.selectedFiles()[0] def open_tracks(self): files = self.select_audio_files() if files is not None and not files == []: self.app.library.open_tracks(files) def get_import_options(self): import_options = Types.ImportOptions() if self.import_dialog.tagging_section.overwrite_metadata.isChecked(): artist = self.import_dialog.tagging_section.artist.text() album = self.import_dialog.tagging_section.album.text() genre = self.import_dialog.tagging_section.genre.text() if not artist == "": import_options.artist = artist if not album == "": import_options.album = album if not genre == "": import_options.genre = genre if self.import_dialog.file_section.copy_type_copy.isChecked(): import_options.copy_type = Types.CopyType.copy elif self.import_dialog.file_section.copy_type_move.isChecked(): import_options.copy_type = Types.CopyType.move return import_options def import_tracks(self): files = self.select_audio_files() if files is None or files == []: return if self.import_dialog.exec() == QDialog.rejected: return import_options = self.get_import_options() self.app.library.import_tracks(files, import_options) def open_playlist(self): playlist_path = self.select_playlist_file() if playlist_path is not None and not playlist_path == "": self.app.library.open_playlist(playlist_path) def import_playlist(self): playlist_path = self.select_playlist_file() if playlist_path is None or playlist_path == "": return if self.import_dialog.exec() == QDialog.rejected: return import_options = self.get_import_options() self.app.library.import_playlist(playlist_path, import_options)