Add widget to seek through songs on an album
This commit is contained in:
@@ -12,6 +12,7 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
|||||||
SOURCES += \
|
SOURCES += \
|
||||||
src/components/albumTile/albumtile.cpp \
|
src/components/albumTile/albumtile.cpp \
|
||||||
src/components/spinningAlbumArt/spinningalbumart.cpp \
|
src/components/spinningAlbumArt/spinningalbumart.cpp \
|
||||||
|
src/components/tracklistWidget/tracklistwidget.cpp \
|
||||||
src/main.cpp \
|
src/main.cpp \
|
||||||
src/windows/musicSelector/musicSelector.cpp \
|
src/windows/musicSelector/musicSelector.cpp \
|
||||||
src/windows/playerWindow/playerWindow.cpp \
|
src/windows/playerWindow/playerWindow.cpp \
|
||||||
@@ -25,6 +26,7 @@ SOURCES += \
|
|||||||
HEADERS += \
|
HEADERS += \
|
||||||
src/components/albumTile/albumtile.h \
|
src/components/albumTile/albumtile.h \
|
||||||
src/components/spinningAlbumArt/spinningalbumart.h \
|
src/components/spinningAlbumArt/spinningalbumart.h \
|
||||||
|
src/components/tracklistWidget/tracklistwidget.h \
|
||||||
src/data/cleanerScripts.h \
|
src/data/cleanerScripts.h \
|
||||||
src/windows/musicSelector/musicSelector.h \
|
src/windows/musicSelector/musicSelector.h \
|
||||||
src/windows/playerWindow/playerWindow.h \
|
src/windows/playerWindow/playerWindow.h \
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Generated by qmake (3.1) (Qt 6.9.3)
|
# Generated by qmake (3.1) (Qt 6.9.3)
|
||||||
# Project: ../../Music-Player.pro
|
# Project: ../../Music-Player.pro
|
||||||
# Template: app
|
# Template: app
|
||||||
# Command: /opt/homebrew/opt/qtbase/bin/qmake -o Makefile ../../Music-Player.pro -spec macx-clang CONFIG+=debug CONFIG+=qml_debug
|
# Command: /opt/homebrew/Cellar/qtbase/6.9.3/bin/qmake -o Makefile ../../Music-Player.pro -spec macx-clang CONFIG+=debug CONFIG+=qml_debug
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
MAKEFILE = Makefile
|
MAKEFILE = Makefile
|
||||||
@@ -18,7 +18,7 @@ DEFINES = -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB
|
|||||||
CFLAGS = -pipe -g $(EXPORT_ARCH_ARGS) -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=14.0 -Wall -Wextra $(DEFINES)
|
CFLAGS = -pipe -g $(EXPORT_ARCH_ARGS) -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=14.0 -Wall -Wextra $(DEFINES)
|
||||||
CXXFLAGS = -pipe -stdlib=libc++ -g -std=gnu++1z $(EXPORT_ARCH_ARGS) -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=14.0 -Wall -Wextra $(DEFINES)
|
CXXFLAGS = -pipe -stdlib=libc++ -g -std=gnu++1z $(EXPORT_ARCH_ARGS) -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=14.0 -Wall -Wextra $(DEFINES)
|
||||||
INCPATH = -I../../../Qt-Music-Player -I. -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/opt/homebrew/share/qt/mkspecs/macx-clang -F/opt/homebrew/lib
|
INCPATH = -I../../../Qt-Music-Player -I. -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/opt/homebrew/share/qt/mkspecs/macx-clang -F/opt/homebrew/lib
|
||||||
QMAKE = /opt/homebrew/opt/qtbase/bin/qmake
|
QMAKE = /opt/homebrew/Cellar/qtbase/6.9.3/bin/qmake
|
||||||
DEL_FILE = rm -f
|
DEL_FILE = rm -f
|
||||||
CHK_DIR_EXISTS= test -d
|
CHK_DIR_EXISTS= test -d
|
||||||
MKDIR = mkdir -p
|
MKDIR = mkdir -p
|
||||||
@@ -28,8 +28,8 @@ COPY_DIR = cp -f -R
|
|||||||
INSTALL_FILE = install -m 644 -p
|
INSTALL_FILE = install -m 644 -p
|
||||||
INSTALL_PROGRAM = install -m 755 -p
|
INSTALL_PROGRAM = install -m 755 -p
|
||||||
INSTALL_DIR = cp -f -R
|
INSTALL_DIR = cp -f -R
|
||||||
QINSTALL = /opt/homebrew/opt/qtbase/bin/qmake -install qinstall
|
QINSTALL = /opt/homebrew/Cellar/qtbase/6.9.3/bin/qmake -install qinstall
|
||||||
QINSTALL_PROGRAM = /opt/homebrew/opt/qtbase/bin/qmake -install qinstall -exe
|
QINSTALL_PROGRAM = /opt/homebrew/Cellar/qtbase/6.9.3/bin/qmake -install qinstall -exe
|
||||||
DEL_FILE = rm -f
|
DEL_FILE = rm -f
|
||||||
SYMLINK = ln -f -s
|
SYMLINK = ln -f -s
|
||||||
DEL_DIR = rmdir
|
DEL_DIR = rmdir
|
||||||
@@ -54,6 +54,7 @@ OBJECTS_DIR = ./
|
|||||||
|
|
||||||
SOURCES = ../../src/components/albumTile/albumtile.cpp \
|
SOURCES = ../../src/components/albumTile/albumtile.cpp \
|
||||||
../../src/components/spinningAlbumArt/spinningalbumart.cpp \
|
../../src/components/spinningAlbumArt/spinningalbumart.cpp \
|
||||||
|
../../src/components/tracklistWidget/tracklistwidget.cpp \
|
||||||
../../src/main.cpp \
|
../../src/main.cpp \
|
||||||
../../src/windows/musicSelector/musicSelector.cpp \
|
../../src/windows/musicSelector/musicSelector.cpp \
|
||||||
../../src/windows/playerWindow/playerWindow.cpp \
|
../../src/windows/playerWindow/playerWindow.cpp \
|
||||||
@@ -62,12 +63,14 @@ SOURCES = ../../src/components/albumTile/albumtile.cpp \
|
|||||||
../../src/layout/flowLayout/flowLayout.cpp qrc_qmake_qmake_qm_files.cpp \
|
../../src/layout/flowLayout/flowLayout.cpp qrc_qmake_qmake_qm_files.cpp \
|
||||||
moc_albumtile.cpp \
|
moc_albumtile.cpp \
|
||||||
moc_spinningalbumart.cpp \
|
moc_spinningalbumart.cpp \
|
||||||
|
moc_tracklistwidget.cpp \
|
||||||
moc_musicSelector.cpp \
|
moc_musicSelector.cpp \
|
||||||
moc_playerWindow.cpp \
|
moc_playerWindow.cpp \
|
||||||
moc_albumButton.cpp \
|
moc_albumButton.cpp \
|
||||||
moc_mediaButton.cpp
|
moc_mediaButton.cpp
|
||||||
OBJECTS = albumtile.o \
|
OBJECTS = albumtile.o \
|
||||||
spinningalbumart.o \
|
spinningalbumart.o \
|
||||||
|
tracklistwidget.o \
|
||||||
main.o \
|
main.o \
|
||||||
musicSelector.o \
|
musicSelector.o \
|
||||||
playerWindow.o \
|
playerWindow.o \
|
||||||
@@ -77,6 +80,7 @@ OBJECTS = albumtile.o \
|
|||||||
qrc_qmake_qmake_qm_files.o \
|
qrc_qmake_qmake_qm_files.o \
|
||||||
moc_albumtile.o \
|
moc_albumtile.o \
|
||||||
moc_spinningalbumart.o \
|
moc_spinningalbumart.o \
|
||||||
|
moc_tracklistwidget.o \
|
||||||
moc_musicSelector.o \
|
moc_musicSelector.o \
|
||||||
moc_playerWindow.o \
|
moc_playerWindow.o \
|
||||||
moc_albumButton.o \
|
moc_albumButton.o \
|
||||||
@@ -455,6 +459,7 @@ DIST = /opt/homebrew/share/qt/mkspecs/features/spec_pre.prf \
|
|||||||
/opt/homebrew/share/qt/mkspecs/features/lex.prf \
|
/opt/homebrew/share/qt/mkspecs/features/lex.prf \
|
||||||
../../../../Music-Player.pro ../../src/components/albumTile/albumtile.h \
|
../../../../Music-Player.pro ../../src/components/albumTile/albumtile.h \
|
||||||
../../src/components/spinningAlbumArt/spinningalbumart.h \
|
../../src/components/spinningAlbumArt/spinningalbumart.h \
|
||||||
|
../../src/components/tracklistWidget/tracklistwidget.h \
|
||||||
../../src/data/cleanerScripts.h \
|
../../src/data/cleanerScripts.h \
|
||||||
../../src/windows/musicSelector/musicSelector.h \
|
../../src/windows/musicSelector/musicSelector.h \
|
||||||
../../src/windows/playerWindow/playerWindow.h \
|
../../src/windows/playerWindow/playerWindow.h \
|
||||||
@@ -463,6 +468,7 @@ DIST = /opt/homebrew/share/qt/mkspecs/features/spec_pre.prf \
|
|||||||
../../src/data/albumInformation.h \
|
../../src/data/albumInformation.h \
|
||||||
../../src/layout/flowLayout/flowLayout.h ../../src/components/albumTile/albumtile.cpp \
|
../../src/layout/flowLayout/flowLayout.h ../../src/components/albumTile/albumtile.cpp \
|
||||||
../../src/components/spinningAlbumArt/spinningalbumart.cpp \
|
../../src/components/spinningAlbumArt/spinningalbumart.cpp \
|
||||||
|
../../src/components/tracklistWidget/tracklistwidget.cpp \
|
||||||
../../src/main.cpp \
|
../../src/main.cpp \
|
||||||
../../src/windows/musicSelector/musicSelector.cpp \
|
../../src/windows/musicSelector/musicSelector.cpp \
|
||||||
../../src/windows/playerWindow/playerWindow.cpp \
|
../../src/windows/playerWindow/playerWindow.cpp \
|
||||||
@@ -1278,8 +1284,8 @@ distdir: FORCE
|
|||||||
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
|
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
|
||||||
$(COPY_FILE) --parents qmake_qmake_qm_files.qrc $(DISTDIR)/
|
$(COPY_FILE) --parents qmake_qmake_qm_files.qrc $(DISTDIR)/
|
||||||
$(COPY_FILE) --parents /opt/homebrew/share/qt/mkspecs/features/data/dummy.cpp $(DISTDIR)/
|
$(COPY_FILE) --parents /opt/homebrew/share/qt/mkspecs/features/data/dummy.cpp $(DISTDIR)/
|
||||||
$(COPY_FILE) --parents ../../src/components/albumTile/albumtile.h ../../src/components/spinningAlbumArt/spinningalbumart.h ../../src/data/cleanerScripts.h ../../src/windows/musicSelector/musicSelector.h ../../src/windows/playerWindow/playerWindow.h ../../src/components/albumButton/albumButton.h ../../src/components/mediaButton/mediaButton.h ../../src/data/albumInformation.h ../../src/layout/flowLayout/flowLayout.h $(DISTDIR)/
|
$(COPY_FILE) --parents ../../src/components/albumTile/albumtile.h ../../src/components/spinningAlbumArt/spinningalbumart.h ../../src/components/tracklistWidget/tracklistwidget.h ../../src/data/cleanerScripts.h ../../src/windows/musicSelector/musicSelector.h ../../src/windows/playerWindow/playerWindow.h ../../src/components/albumButton/albumButton.h ../../src/components/mediaButton/mediaButton.h ../../src/data/albumInformation.h ../../src/layout/flowLayout/flowLayout.h $(DISTDIR)/
|
||||||
$(COPY_FILE) --parents ../../src/components/albumTile/albumtile.cpp ../../src/components/spinningAlbumArt/spinningalbumart.cpp ../../src/main.cpp ../../src/windows/musicSelector/musicSelector.cpp ../../src/windows/playerWindow/playerWindow.cpp ../../src/components/albumButton/albumButton.cpp ../../src/components/mediaButton/mediaButton.cpp ../../src/layout/flowLayout/flowLayout.cpp $(DISTDIR)/
|
$(COPY_FILE) --parents ../../src/components/albumTile/albumtile.cpp ../../src/components/spinningAlbumArt/spinningalbumart.cpp ../../src/components/tracklistWidget/tracklistwidget.cpp ../../src/main.cpp ../../src/windows/musicSelector/musicSelector.cpp ../../src/windows/playerWindow/playerWindow.cpp ../../src/components/albumButton/albumButton.cpp ../../src/components/mediaButton/mediaButton.cpp ../../src/layout/flowLayout/flowLayout.cpp $(DISTDIR)/
|
||||||
$(COPY_FILE) --parents ../../src/windows/musicSelector/musicSelector.ui $(DISTDIR)/
|
$(COPY_FILE) --parents ../../src/windows/musicSelector/musicSelector.ui $(DISTDIR)/
|
||||||
|
|
||||||
|
|
||||||
@@ -1322,9 +1328,9 @@ compiler_moc_predefs_clean:
|
|||||||
moc_predefs.h: /opt/homebrew/share/qt/mkspecs/features/data/dummy.cpp
|
moc_predefs.h: /opt/homebrew/share/qt/mkspecs/features/data/dummy.cpp
|
||||||
/Library/Developer/CommandLineTools/usr/bin/clang++ -pipe -stdlib=libc++ -g -std=gnu++1z $(EXPORT_ARCH_ARGS) -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=14.0 -Wall -Wextra -dM -E -o moc_predefs.h /opt/homebrew/share/qt/mkspecs/features/data/dummy.cpp
|
/Library/Developer/CommandLineTools/usr/bin/clang++ -pipe -stdlib=libc++ -g -std=gnu++1z $(EXPORT_ARCH_ARGS) -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=14.0 -Wall -Wextra -dM -E -o moc_predefs.h /opt/homebrew/share/qt/mkspecs/features/data/dummy.cpp
|
||||||
|
|
||||||
compiler_moc_header_make_all: moc_albumtile.cpp moc_spinningalbumart.cpp moc_musicSelector.cpp moc_playerWindow.cpp moc_albumButton.cpp moc_mediaButton.cpp
|
compiler_moc_header_make_all: moc_albumtile.cpp moc_spinningalbumart.cpp moc_tracklistwidget.cpp moc_musicSelector.cpp moc_playerWindow.cpp moc_albumButton.cpp moc_mediaButton.cpp
|
||||||
compiler_moc_header_clean:
|
compiler_moc_header_clean:
|
||||||
-$(DEL_FILE) moc_albumtile.cpp moc_spinningalbumart.cpp moc_musicSelector.cpp moc_playerWindow.cpp moc_albumButton.cpp moc_mediaButton.cpp
|
-$(DEL_FILE) moc_albumtile.cpp moc_spinningalbumart.cpp moc_tracklistwidget.cpp moc_musicSelector.cpp moc_playerWindow.cpp moc_albumButton.cpp moc_mediaButton.cpp
|
||||||
moc_albumtile.cpp: ../../src/components/albumTile/albumtile.h \
|
moc_albumtile.cpp: ../../src/components/albumTile/albumtile.h \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/QWidget \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QWidget \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/qwidget.h \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qwidget.h \
|
||||||
@@ -1356,6 +1362,15 @@ moc_spinningalbumart.cpp: ../../src/components/spinningAlbumArt/spinningalbumart
|
|||||||
/opt/homebrew/share/qt/libexec/moc
|
/opt/homebrew/share/qt/libexec/moc
|
||||||
/opt/homebrew/share/qt/libexec/moc $(DEFINES) --include /Users/lucas/Developer/Qt-Music-Player/build/Desktop-Debug/moc_predefs.h -I/opt/homebrew/share/qt/mkspecs/macx-clang -I/Users/lucas/Developer/Qt-Music-Player -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/17/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/opt/homebrew/lib ../../src/components/spinningAlbumArt/spinningalbumart.h -o moc_spinningalbumart.cpp
|
/opt/homebrew/share/qt/libexec/moc $(DEFINES) --include /Users/lucas/Developer/Qt-Music-Player/build/Desktop-Debug/moc_predefs.h -I/opt/homebrew/share/qt/mkspecs/macx-clang -I/Users/lucas/Developer/Qt-Music-Player -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/17/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/opt/homebrew/lib ../../src/components/spinningAlbumArt/spinningalbumart.h -o moc_spinningalbumart.cpp
|
||||||
|
|
||||||
|
moc_tracklistwidget.cpp: ../../src/components/tracklistWidget/tracklistwidget.h \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QWidget \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qwidget.h \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QListWidget \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qlistwidget.h \
|
||||||
|
moc_predefs.h \
|
||||||
|
/opt/homebrew/share/qt/libexec/moc
|
||||||
|
/opt/homebrew/share/qt/libexec/moc $(DEFINES) --include /Users/lucas/Developer/Qt-Music-Player/build/Desktop-Debug/moc_predefs.h -I/opt/homebrew/share/qt/mkspecs/macx-clang -I/Users/lucas/Developer/Qt-Music-Player -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/17/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/opt/homebrew/lib ../../src/components/tracklistWidget/tracklistwidget.h -o moc_tracklistwidget.cpp
|
||||||
|
|
||||||
moc_musicSelector.cpp: ../../src/windows/musicSelector/musicSelector.h \
|
moc_musicSelector.cpp: ../../src/windows/musicSelector/musicSelector.h \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/QWidget \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QWidget \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/qwidget.h \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qwidget.h \
|
||||||
@@ -1389,6 +1404,9 @@ moc_playerWindow.cpp: ../../src/windows/playerWindow/playerWindow.h \
|
|||||||
../../src/components/spinningalbumart/spinningAlbumArt.h \
|
../../src/components/spinningalbumart/spinningAlbumArt.h \
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/QPixmap \
|
/opt/homebrew/lib/QtGui.framework/Headers/QPixmap \
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \
|
/opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \
|
||||||
|
../../src/components/tracklistWidget/tracklistwidget.h \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QListWidget \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qlistwidget.h \
|
||||||
moc_predefs.h \
|
moc_predefs.h \
|
||||||
/opt/homebrew/share/qt/libexec/moc
|
/opt/homebrew/share/qt/libexec/moc
|
||||||
/opt/homebrew/share/qt/libexec/moc $(DEFINES) --include /Users/lucas/Developer/Qt-Music-Player/build/Desktop-Debug/moc_predefs.h -I/opt/homebrew/share/qt/mkspecs/macx-clang -I/Users/lucas/Developer/Qt-Music-Player -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/17/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/opt/homebrew/lib ../../src/windows/playerWindow/playerWindow.h -o moc_playerWindow.cpp
|
/opt/homebrew/share/qt/libexec/moc $(DEFINES) --include /Users/lucas/Developer/Qt-Music-Player/build/Desktop-Debug/moc_predefs.h -I/opt/homebrew/share/qt/mkspecs/macx-clang -I/Users/lucas/Developer/Qt-Music-Player -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I. -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 -I/Library/Developer/CommandLineTools/usr/lib/clang/17/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/usr/include -F/opt/homebrew/lib ../../src/windows/playerWindow/playerWindow.h -o moc_playerWindow.cpp
|
||||||
@@ -1473,6 +1491,17 @@ spinningalbumart.o: ../../src/components/spinningAlbumArt/spinningalbumart.cpp .
|
|||||||
/opt/homebrew/lib/QtGui.framework/Headers/qpainterpath.h
|
/opt/homebrew/lib/QtGui.framework/Headers/qpainterpath.h
|
||||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o spinningalbumart.o ../../src/components/spinningAlbumArt/spinningalbumart.cpp
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o spinningalbumart.o ../../src/components/spinningAlbumArt/spinningalbumart.cpp
|
||||||
|
|
||||||
|
tracklistwidget.o: ../../src/components/tracklistWidget/tracklistwidget.cpp ../../src/components/tracklistWidget/tracklistwidget.h \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QWidget \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qwidget.h \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QListWidget \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qlistwidget.h \
|
||||||
|
/opt/homebrew/lib/QtCore.framework/Headers/QFileInfo \
|
||||||
|
/opt/homebrew/lib/QtCore.framework/Headers/qfileinfo.h \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QVBoxLayout \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qboxlayout.h
|
||||||
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tracklistwidget.o ../../src/components/tracklistWidget/tracklistwidget.cpp
|
||||||
|
|
||||||
main.o: ../../src/main.cpp ../../src/windows/musicSelector/musicSelector.h \
|
main.o: ../../src/main.cpp ../../src/windows/musicSelector/musicSelector.h \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/QWidget \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QWidget \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/qwidget.h \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qwidget.h \
|
||||||
@@ -1518,6 +1547,9 @@ musicSelector.o: ../../src/windows/musicSelector/musicSelector.cpp ../../src/win
|
|||||||
../../src/components/spinningalbumart/spinningAlbumArt.h \
|
../../src/components/spinningalbumart/spinningAlbumArt.h \
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/QPixmap \
|
/opt/homebrew/lib/QtGui.framework/Headers/QPixmap \
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \
|
/opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \
|
||||||
|
../../src/components/tracklistWidget/tracklistwidget.h \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QListWidget \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qlistwidget.h \
|
||||||
../../src/layout/flowlayout/flowLayout.h \
|
../../src/layout/flowlayout/flowLayout.h \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/QLayout \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QLayout \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/qlayout.h \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qlayout.h \
|
||||||
@@ -1552,12 +1584,11 @@ playerWindow.o: ../../src/windows/playerWindow/playerWindow.cpp ../../src/window
|
|||||||
../../src/components/spinningalbumart/spinningAlbumArt.h \
|
../../src/components/spinningalbumart/spinningAlbumArt.h \
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/QPixmap \
|
/opt/homebrew/lib/QtGui.framework/Headers/QPixmap \
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \
|
/opt/homebrew/lib/QtGui.framework/Headers/qpixmap.h \
|
||||||
|
../../src/components/tracklistWidget/tracklistwidget.h \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QListWidget \
|
||||||
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qlistwidget.h \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/QVBoxLayout \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/QVBoxLayout \
|
||||||
/opt/homebrew/lib/QtWidgets.framework/Headers/qboxlayout.h \
|
/opt/homebrew/lib/QtWidgets.framework/Headers/qboxlayout.h \
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/QPainter \
|
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/qpainter.h \
|
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/QPainterPath \
|
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/qpainterpath.h \
|
|
||||||
/opt/homebrew/lib/QtCore.framework/Headers/QFileInfo \
|
/opt/homebrew/lib/QtCore.framework/Headers/QFileInfo \
|
||||||
/opt/homebrew/lib/QtCore.framework/Headers/qfileinfo.h \
|
/opt/homebrew/lib/QtCore.framework/Headers/qfileinfo.h \
|
||||||
/opt/homebrew/lib/QtGui.framework/Headers/QCloseEvent \
|
/opt/homebrew/lib/QtGui.framework/Headers/QCloseEvent \
|
||||||
@@ -1734,6 +1765,9 @@ moc_albumtile.o: moc_albumtile.cpp
|
|||||||
moc_spinningalbumart.o: moc_spinningalbumart.cpp
|
moc_spinningalbumart.o: moc_spinningalbumart.cpp
|
||||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_spinningalbumart.o moc_spinningalbumart.cpp
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_spinningalbumart.o moc_spinningalbumart.cpp
|
||||||
|
|
||||||
|
moc_tracklistwidget.o: moc_tracklistwidget.cpp
|
||||||
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_tracklistwidget.o moc_tracklistwidget.cpp
|
||||||
|
|
||||||
moc_musicSelector.o: moc_musicSelector.cpp
|
moc_musicSelector.o: moc_musicSelector.cpp
|
||||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_musicSelector.o moc_musicSelector.cpp
|
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_musicSelector.o moc_musicSelector.cpp
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -39,14 +39,10 @@ template <> constexpr inline auto PlayerWindow::qt_create_metaobjectdata<qt_meta
|
|||||||
{
|
{
|
||||||
namespace QMC = QtMocConstants;
|
namespace QMC = QtMocConstants;
|
||||||
QtMocHelpers::StringRefStorage qt_stringData {
|
QtMocHelpers::StringRefStorage qt_stringData {
|
||||||
"PlayerWindow",
|
"PlayerWindow"
|
||||||
"playNext",
|
|
||||||
""
|
|
||||||
};
|
};
|
||||||
|
|
||||||
QtMocHelpers::UintData qt_methods {
|
QtMocHelpers::UintData qt_methods {
|
||||||
// Slot 'playNext'
|
|
||||||
QtMocHelpers::SlotData<void()>(1, 2, QMC::AccessPrivate, QMetaType::Void),
|
|
||||||
};
|
};
|
||||||
QtMocHelpers::UintData qt_properties {
|
QtMocHelpers::UintData qt_properties {
|
||||||
};
|
};
|
||||||
@@ -68,12 +64,9 @@ Q_CONSTINIT const QMetaObject PlayerWindow::staticMetaObject = { {
|
|||||||
void PlayerWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
void PlayerWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
||||||
{
|
{
|
||||||
auto *_t = static_cast<PlayerWindow *>(_o);
|
auto *_t = static_cast<PlayerWindow *>(_o);
|
||||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
(void)_t;
|
||||||
switch (_id) {
|
(void)_c;
|
||||||
case 0: _t->playNext(); break;
|
(void)_id;
|
||||||
default: ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
(void)_a;
|
(void)_a;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,18 +86,6 @@ void *PlayerWindow::qt_metacast(const char *_clname)
|
|||||||
int PlayerWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
int PlayerWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
||||||
{
|
{
|
||||||
_id = QWidget::qt_metacall(_c, _id, _a);
|
_id = QWidget::qt_metacall(_c, _id, _a);
|
||||||
if (_id < 0)
|
|
||||||
return _id;
|
|
||||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
|
||||||
if (_id < 1)
|
|
||||||
qt_static_metacall(this, _c, _id, _a);
|
|
||||||
_id -= 1;
|
|
||||||
}
|
|
||||||
if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
|
|
||||||
if (_id < 1)
|
|
||||||
*reinterpret_cast<QMetaType *>(_a[0]) = QMetaType();
|
|
||||||
_id -= 1;
|
|
||||||
}
|
|
||||||
return _id;
|
return _id;
|
||||||
}
|
}
|
||||||
QT_WARNING_POP
|
QT_WARNING_POP
|
||||||
|
|||||||
Binary file not shown.
121
build/Desktop-Debug/moc_tracklistwidget.cpp
Normal file
121
build/Desktop-Debug/moc_tracklistwidget.cpp
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
** Meta object code from reading C++ file 'tracklistwidget.h'
|
||||||
|
**
|
||||||
|
** Created by: The Qt Meta Object Compiler version 69 (Qt 6.9.3)
|
||||||
|
**
|
||||||
|
** WARNING! All changes made in this file will be lost!
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#include "../../src/components/tracklistWidget/tracklistwidget.h"
|
||||||
|
#include <QtCore/qmetatype.h>
|
||||||
|
|
||||||
|
#include <QtCore/qtmochelpers.h>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
|
||||||
|
#include <QtCore/qxptype_traits.h>
|
||||||
|
#if !defined(Q_MOC_OUTPUT_REVISION)
|
||||||
|
#error "The header file 'tracklistwidget.h' doesn't include <QObject>."
|
||||||
|
#elif Q_MOC_OUTPUT_REVISION != 69
|
||||||
|
#error "This file was generated using the moc from 6.9.3. It"
|
||||||
|
#error "cannot be used with the include files from this version of Qt."
|
||||||
|
#error "(The moc has changed too much.)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef Q_CONSTINIT
|
||||||
|
#define Q_CONSTINIT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QT_WARNING_PUSH
|
||||||
|
QT_WARNING_DISABLE_DEPRECATED
|
||||||
|
QT_WARNING_DISABLE_GCC("-Wuseless-cast")
|
||||||
|
namespace {
|
||||||
|
struct qt_meta_tag_ZN15TrackListWidgetE_t {};
|
||||||
|
} // unnamed namespace
|
||||||
|
|
||||||
|
template <> constexpr inline auto TrackListWidget::qt_create_metaobjectdata<qt_meta_tag_ZN15TrackListWidgetE_t>()
|
||||||
|
{
|
||||||
|
namespace QMC = QtMocConstants;
|
||||||
|
QtMocHelpers::StringRefStorage qt_stringData {
|
||||||
|
"TrackListWidget",
|
||||||
|
"trackSelected",
|
||||||
|
"",
|
||||||
|
"index"
|
||||||
|
};
|
||||||
|
|
||||||
|
QtMocHelpers::UintData qt_methods {
|
||||||
|
// Signal 'trackSelected'
|
||||||
|
QtMocHelpers::SignalData<void(int)>(1, 2, QMC::AccessPublic, QMetaType::Void, {{
|
||||||
|
{ QMetaType::Int, 3 },
|
||||||
|
}}),
|
||||||
|
};
|
||||||
|
QtMocHelpers::UintData qt_properties {
|
||||||
|
};
|
||||||
|
QtMocHelpers::UintData qt_enums {
|
||||||
|
};
|
||||||
|
return QtMocHelpers::metaObjectData<TrackListWidget, qt_meta_tag_ZN15TrackListWidgetE_t>(QMC::MetaObjectFlag{}, qt_stringData,
|
||||||
|
qt_methods, qt_properties, qt_enums);
|
||||||
|
}
|
||||||
|
Q_CONSTINIT const QMetaObject TrackListWidget::staticMetaObject = { {
|
||||||
|
QMetaObject::SuperData::link<QWidget::staticMetaObject>(),
|
||||||
|
qt_staticMetaObjectStaticContent<qt_meta_tag_ZN15TrackListWidgetE_t>.stringdata,
|
||||||
|
qt_staticMetaObjectStaticContent<qt_meta_tag_ZN15TrackListWidgetE_t>.data,
|
||||||
|
qt_static_metacall,
|
||||||
|
nullptr,
|
||||||
|
qt_staticMetaObjectRelocatingContent<qt_meta_tag_ZN15TrackListWidgetE_t>.metaTypes,
|
||||||
|
nullptr
|
||||||
|
} };
|
||||||
|
|
||||||
|
void TrackListWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
||||||
|
{
|
||||||
|
auto *_t = static_cast<TrackListWidget *>(_o);
|
||||||
|
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||||
|
switch (_id) {
|
||||||
|
case 0: _t->trackSelected((*reinterpret_cast< std::add_pointer_t<int>>(_a[1]))); break;
|
||||||
|
default: ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_c == QMetaObject::IndexOfMethod) {
|
||||||
|
if (QtMocHelpers::indexOfMethod<void (TrackListWidget::*)(int )>(_a, &TrackListWidget::trackSelected, 0))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const QMetaObject *TrackListWidget::metaObject() const
|
||||||
|
{
|
||||||
|
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *TrackListWidget::qt_metacast(const char *_clname)
|
||||||
|
{
|
||||||
|
if (!_clname) return nullptr;
|
||||||
|
if (!strcmp(_clname, qt_staticMetaObjectStaticContent<qt_meta_tag_ZN15TrackListWidgetE_t>.strings))
|
||||||
|
return static_cast<void*>(this);
|
||||||
|
return QWidget::qt_metacast(_clname);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TrackListWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
||||||
|
{
|
||||||
|
_id = QWidget::qt_metacall(_c, _id, _a);
|
||||||
|
if (_id < 0)
|
||||||
|
return _id;
|
||||||
|
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||||
|
if (_id < 1)
|
||||||
|
qt_static_metacall(this, _c, _id, _a);
|
||||||
|
_id -= 1;
|
||||||
|
}
|
||||||
|
if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
|
||||||
|
if (_id < 1)
|
||||||
|
*reinterpret_cast<QMetaType *>(_a[0]) = QMetaType();
|
||||||
|
_id -= 1;
|
||||||
|
}
|
||||||
|
return _id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SIGNAL 0
|
||||||
|
void TrackListWidget::trackSelected(int _t1)
|
||||||
|
{
|
||||||
|
QMetaObject::activate<void>(this, &staticMetaObject, 0, nullptr, _t1);
|
||||||
|
}
|
||||||
|
QT_WARNING_POP
|
||||||
BIN
build/Desktop-Debug/moc_tracklistwidget.o
Normal file
BIN
build/Desktop-Debug/moc_tracklistwidget.o
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
build/Desktop-Debug/tracklistwidget.o
Normal file
BIN
build/Desktop-Debug/tracklistwidget.o
Normal file
Binary file not shown.
42
src/components/tracklistWidget/tracklistwidget.cpp
Normal file
42
src/components/tracklistWidget/tracklistwidget.cpp
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#include "tracklistwidget.h"
|
||||||
|
#include <QFileInfo>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include "src/data/cleanerScripts.h"
|
||||||
|
|
||||||
|
TrackListWidget::TrackListWidget(const QStringList& audioFiles, QWidget* parent)
|
||||||
|
: QWidget(parent)
|
||||||
|
{
|
||||||
|
list_ = new QListWidget(this);
|
||||||
|
|
||||||
|
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||||
|
layout->addWidget(list_);
|
||||||
|
|
||||||
|
int trackNum = 1;
|
||||||
|
|
||||||
|
for (const QString& f : audioFiles) {
|
||||||
|
|
||||||
|
// Extract just the filename
|
||||||
|
QString fileName = QFileInfo(f).fileName();
|
||||||
|
|
||||||
|
// Run through your cleaner
|
||||||
|
QString songTitle = cleanTrackTitle(fileName);
|
||||||
|
|
||||||
|
// Format display text: "1. Song Title"
|
||||||
|
QString display = QString("%1. %2")
|
||||||
|
.arg(trackNum++)
|
||||||
|
.arg(songTitle);
|
||||||
|
|
||||||
|
list_->addItem(display);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Emit signal when clicked
|
||||||
|
connect(list_, &QListWidget::itemClicked, this, [=](QListWidgetItem* item){
|
||||||
|
int index = list_->row(item);
|
||||||
|
emit trackSelected(index);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void TrackListWidget::setCurrentRow(int row)
|
||||||
|
{
|
||||||
|
list_->setCurrentRow(row);
|
||||||
|
}
|
||||||
23
src/components/tracklistWidget/tracklistwidget.h
Normal file
23
src/components/tracklistWidget/tracklistwidget.h
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef TRACKLISTWIDGET_H
|
||||||
|
#define TRACKLISTWIDGET_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QListWidget>
|
||||||
|
|
||||||
|
class TrackListWidget : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit TrackListWidget(const QStringList& audioFiles, QWidget* parent = nullptr);
|
||||||
|
|
||||||
|
void setCurrentRow(int row); // <-- THIS must be here
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void trackSelected(int index);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QListWidget* list_;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TRACKLISTWIDGET_H
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
#include "playerWindow.h"
|
#include "playerWindow.h"
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QPainter>
|
|
||||||
#include <QPainterPath>
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
#include "src/data/cleanerScripts.h"
|
#include "src/data/cleanerScripts.h"
|
||||||
@@ -9,24 +7,31 @@
|
|||||||
PlayerWindow::PlayerWindow(const AlbumData& item, QWidget* parent)
|
PlayerWindow::PlayerWindow(const AlbumData& item, QWidget* parent)
|
||||||
: QWidget(parent), item_(item)
|
: QWidget(parent), item_(item)
|
||||||
{
|
{
|
||||||
this->setWindowTitle("Now Playing");
|
setWindowTitle("Now Playing");
|
||||||
this->resize(300, 370);
|
resize(350, 500);
|
||||||
|
|
||||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||||
|
|
||||||
// SUPER SIMPLE now:
|
// Album artwork
|
||||||
spinningArt_ = new SpinningAlbumArt(item.imagePath, 250);
|
spinningArt_ = new SpinningAlbumArt(item.imagePath, 250);
|
||||||
layout->addWidget(spinningArt_);
|
layout->addWidget(spinningArt_, 0, Qt::AlignCenter);
|
||||||
|
|
||||||
trackLabel_ = new QLabel("Track 1");
|
// Track label
|
||||||
|
trackLabel_ = new QLabel("Track");
|
||||||
trackLabel_->setAlignment(Qt::AlignCenter);
|
trackLabel_->setAlignment(Qt::AlignCenter);
|
||||||
trackLabel_->setStyleSheet("font-size: 14px; font-weight: 500;");
|
trackLabel_->setStyleSheet("font-size: 14px; font-weight: 500;");
|
||||||
layout->addWidget(trackLabel_);
|
layout->addWidget(trackLabel_);
|
||||||
|
|
||||||
|
// Track list widget
|
||||||
|
trackList_ = new TrackListWidget(item_.audioFiles, this);
|
||||||
|
layout->addWidget(trackList_);
|
||||||
|
|
||||||
|
// Audio backend
|
||||||
player_ = new QMediaPlayer(this);
|
player_ = new QMediaPlayer(this);
|
||||||
audio_ = new QAudioOutput(this);
|
audio_ = new QAudioOutput(this);
|
||||||
player_->setAudioOutput(audio_);
|
player_->setAudioOutput(audio_);
|
||||||
|
|
||||||
|
// Spin album art based on playback
|
||||||
connect(player_, &QMediaPlayer::playbackStateChanged, this,
|
connect(player_, &QMediaPlayer::playbackStateChanged, this,
|
||||||
[this](QMediaPlayer::PlaybackState st){
|
[this](QMediaPlayer::PlaybackState st){
|
||||||
if (st == QMediaPlayer::PlayingState)
|
if (st == QMediaPlayer::PlayingState)
|
||||||
@@ -35,35 +40,60 @@ PlayerWindow::PlayerWindow(const AlbumData& item, QWidget* parent)
|
|||||||
spinningArt_->stop();
|
spinningArt_->stop();
|
||||||
});
|
});
|
||||||
|
|
||||||
playNext();
|
// When a track finishes, auto-play next
|
||||||
|
connect(player_, &QMediaPlayer::mediaStatusChanged, this,
|
||||||
|
[this](QMediaPlayer::MediaStatus st){
|
||||||
|
if (st == QMediaPlayer::EndOfMedia)
|
||||||
|
handleTrackFinished();
|
||||||
|
});
|
||||||
|
|
||||||
|
// When a track is clicked
|
||||||
|
connect(trackList_, &TrackListWidget::trackSelected, this,
|
||||||
|
[this](int i){
|
||||||
|
index_ = i;
|
||||||
|
playTrack(index_);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Start with track 0
|
||||||
|
playTrack(index_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerWindow::playNext()
|
void PlayerWindow::playTrack(int idx)
|
||||||
{
|
{
|
||||||
if (index_ >= item_.audioFiles.size()) {
|
if (idx < 0 || idx >= item_.audioFiles.size())
|
||||||
this->close();
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
QString filePath = item_.audioFiles[index_];
|
index_ = idx;
|
||||||
|
|
||||||
|
QString filePath = item_.audioFiles[idx];
|
||||||
QString fileName = QFileInfo(filePath).fileName();
|
QString fileName = QFileInfo(filePath).fileName();
|
||||||
QString title = cleanTrackTitle(fileName);
|
QString title = cleanTrackTitle(fileName);
|
||||||
|
|
||||||
trackLabel_->setText(
|
trackLabel_->setText(QString("Track %1: %2").arg(idx + 1).arg(title));
|
||||||
QString("Track %1: %2").arg(index_ + 1).arg(title)
|
|
||||||
);
|
|
||||||
|
|
||||||
player_->setSource(QUrl::fromLocalFile(filePath));
|
player_->setSource(QUrl::fromLocalFile(filePath));
|
||||||
player_->play();
|
player_->play();
|
||||||
|
|
||||||
index_++;
|
// Highlight in the list
|
||||||
|
trackList_->setCurrentRow(idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerWindow::handleTrackFinished()
|
||||||
|
{
|
||||||
|
int nextIndex = index_ + 1;
|
||||||
|
|
||||||
|
if (nextIndex >= item_.audioFiles.size()) {
|
||||||
|
close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
playTrack(nextIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerWindow::closeEvent(QCloseEvent* event)
|
void PlayerWindow::closeEvent(QCloseEvent* event)
|
||||||
{
|
{
|
||||||
if (player_) {
|
if (player_)
|
||||||
player_->stop();
|
player_->stop();
|
||||||
spinTimer_->stop();
|
|
||||||
}
|
|
||||||
QWidget::closeEvent(event);
|
QWidget::closeEvent(event);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef PLAYERWINDOW_H
|
||||||
|
#define PLAYERWINDOW_H
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
@@ -7,33 +8,32 @@
|
|||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include "src/data/albumInformation.h"
|
#include "src/data/albumInformation.h"
|
||||||
#include "src/components/spinningalbumart/spinningAlbumArt.h"
|
#include "src/components/spinningalbumart/spinningAlbumArt.h"
|
||||||
|
#include "src/components/tracklistWidget/tracklistwidget.h"
|
||||||
|
|
||||||
class PlayerWindow : public QWidget {
|
class PlayerWindow : public QWidget
|
||||||
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
SpinningAlbumArt* spinningArt_;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit PlayerWindow(const AlbumData& item, QWidget* parent = nullptr);
|
explicit PlayerWindow(const AlbumData& item, QWidget* parent = nullptr);
|
||||||
|
void setCurrentRow(int row);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent* event) override;
|
void closeEvent(QCloseEvent* event) override;
|
||||||
|
|
||||||
private slots:
|
|
||||||
void playNext();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void playTrack(int index);
|
||||||
|
void handleTrackFinished();
|
||||||
|
|
||||||
AlbumData item_;
|
AlbumData item_;
|
||||||
int index_ = 0;
|
int index_ = 0; // active track index
|
||||||
|
|
||||||
|
SpinningAlbumArt* spinningArt_;
|
||||||
|
QLabel* trackLabel_;
|
||||||
|
TrackListWidget* trackList_;
|
||||||
|
|
||||||
QMediaPlayer* player_;
|
QMediaPlayer* player_;
|
||||||
QAudioOutput* audio_;
|
QAudioOutput* audio_;
|
||||||
|
|
||||||
QLabel* artLabel_;
|
|
||||||
QLabel* trackLabel_;
|
|
||||||
|
|
||||||
QPixmap discArt_; // circular cropped album art
|
|
||||||
QPixmap overlayArt_; // optional overlay (not required)
|
|
||||||
qreal rotationAngle_ = 0;
|
|
||||||
|
|
||||||
QTimer* spinTimer_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user