diff --git a/main.py b/main.py
index eb4c458..e1a822a 100644
--- a/main.py
+++ b/main.py
@@ -1,8 +1,8 @@
import DBA
from ui import Ui_MainWindow
-from PyQt5.QtWidgets import QMainWindow, QApplication, QGraphicsScene, QHeaderView
+from PyQt5.QtWidgets import QMainWindow, QApplication, QGraphicsScene, QHeaderView, QGraphicsPixmapItem
import qdarktheme
-from PyQt5.QtCore import QUrl, QTimer, QEvent, Qt, QRect
+from PyQt5.QtCore import QUrl, QTimer, QEvent, Qt
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent, QAudioProbe
from PyQt5.QtGui import QPixmap
from utils import scan_for_music
@@ -76,7 +76,7 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
self.actionClearDatabase.triggered.connect(self.clear_database) # Clear database
## tableView
# self.tableView.clicked.connect(self.set_clicked_cell_filepath)
- self.tableView.doubleClicked.connect(self.play_audio_file) # Double click to play song
+ self.tableView.doubleClicked.connect(self.play_audio_file) # Listens for the double click event, and plays the song
self.tableView.enterKey.connect(self.play_audio_file) # Press Enter to play song
self.tableView.playPauseSignal.connect(self.on_play_clicked) # Spacebar toggle playpause signal
self.tableView.viewport().installEventFilter(self) # for drag & drop functionality
@@ -124,7 +124,7 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
super().closeEvent(event)
def play_audio_file(self):
- """Start playback of selected track & moves playback slider"""
+ """Start playback of tableView.current_song_filepath track & moves playback slider"""
self.current_song_metadata = self.tableView.get_current_song_metadata() # get metadata
self.current_song_album_art = self.tableView.get_current_song_album_art()
url = QUrl.fromLocalFile(self.tableView.get_current_song_filepath()) # read the file
@@ -149,17 +149,36 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
def load_album_art(self, album_art_data):
"""Sets the album art for the currently playing track"""
if self.current_song_album_art:
+ # Clear the scene
+ self.album_art_scene.clear()
+ # Reset the scene
+ self.albumGraphicsView.setScene(None)
# Create pixmap for album art
pixmap = QPixmap()
pixmap.loadFromData(self.current_song_album_art)
- self.album_art_scene.addPixmap(pixmap)
- # Reset the scene
- self.albumGraphicsView.setScene(None)
+ # Create a QGraphicsPixmapItem for more control over pic
+ pixmapItem = QGraphicsPixmapItem(pixmap)
+ pixmapItem.setTransformationMode(Qt.SmoothTransformation) # For better quality scaling
+ # Add pixmap item to the scene
+ self.album_art_scene.addItem(pixmapItem)
# Set the scene
self.albumGraphicsView.setScene(self.album_art_scene)
- # Put artwork in the scene, fit to graphics view widget
- self.albumGraphicsView.fitInView(self.album_art_scene.sceneRect(), Qt.KeepAspectRatio)
+ # Adjust the album art scaling
+ self.adjustPixmapScaling(pixmapItem)
+ def adjustPixmapScaling(self, pixmapItem):
+ """Adjust the scaling of the pixmap item to fit the QGraphicsView, maintaining aspect ratio"""
+ viewWidth = self.albumGraphicsView.width()
+ viewHeight = self.albumGraphicsView.height()
+ pixmapSize = pixmapItem.pixmap().size()
+
+ # Calculate scaling factor while maintaining aspect ratio
+ scaleX = viewWidth / pixmapSize.width()
+ scaleY = viewHeight / pixmapSize.height()
+ scaleFactor = min(scaleX, scaleY)
+
+ # Apply scaling to the pixmap item
+ pixmapItem.setScale(scaleFactor)
def update_audio_visualization(self):
"""Handles upading points on the pyqtgraph visual"""
diff --git a/ui.py b/ui.py
index 5f73ad7..b70deac 100644
--- a/ui.py
+++ b/ui.py
@@ -32,10 +32,12 @@ class Ui_MainWindow(object):
sizePolicy.setHeightForWidth(self.albumGraphicsView.sizePolicy().hasHeightForWidth())
self.albumGraphicsView.setSizePolicy(sizePolicy)
self.albumGraphicsView.setMinimumSize(QtCore.QSize(200, 200))
+ self.albumGraphicsView.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.albumGraphicsView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.albumGraphicsView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.albumGraphicsView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored)
self.albumGraphicsView.setInteractive(False)
+ self.albumGraphicsView.setResizeAnchor(QtWidgets.QGraphicsView.AnchorViewCenter)
self.albumGraphicsView.setViewportUpdateMode(QtWidgets.QGraphicsView.FullViewportUpdate)
self.albumGraphicsView.setObjectName("albumGraphicsView")
self.vlayoutAlbumArt.addWidget(self.albumGraphicsView)
diff --git a/ui.ui b/ui.ui
index 7c887ed..4330b2a 100644
--- a/ui.ui
+++ b/ui.ui
@@ -39,6 +39,12 @@
200
+
+
+ 16777215
+ 16777215
+
+
Qt::ScrollBarAlwaysOff
@@ -51,6 +57,9 @@
false
+
+ QGraphicsView::AnchorViewCenter
+
QGraphicsView::FullViewportUpdate