59 lines
1.5 KiB
C++
59 lines
1.5 KiB
C++
#pragma once
|
|
#include <QMainWindow>
|
|
#include <QDockWidget>
|
|
#include <QListWidget>
|
|
#include <QStackedWidget>
|
|
#include <QTabWidget>
|
|
#include <QTimer>
|
|
#include "AudioEngine.h"
|
|
#include "PlayerControls.h"
|
|
#include "CommonWidgets.h"
|
|
|
|
class MainWindow : public QMainWindow {
|
|
Q_OBJECT
|
|
public:
|
|
MainWindow(QWidget* parent = nullptr);
|
|
~MainWindow();
|
|
void loadPath(const QString& path, bool recursive);
|
|
protected:
|
|
void closeEvent(QCloseEvent* event) override;
|
|
private slots:
|
|
void onOpenFile();
|
|
void onOpenFolder();
|
|
void onPermissionsResult(bool granted);
|
|
void updateLoop();
|
|
void onTrackFinished();
|
|
void onTrackLoaded(bool success);
|
|
void onTrackDoubleClicked(QListWidgetItem* item);
|
|
void play();
|
|
void pause();
|
|
void nextTrack();
|
|
void prevTrack();
|
|
void seek(float pos);
|
|
void onDspChanged(int fft, int hop);
|
|
void onBinsChanged(int n);
|
|
void onToggleFullScreen();
|
|
void saveSettings();
|
|
private:
|
|
void initUi();
|
|
void loadIndex(int index);
|
|
void loadSettings();
|
|
|
|
QStackedWidget* m_stack;
|
|
WelcomeWidget* m_welcome;
|
|
PlayerPage* m_playerPage;
|
|
QDockWidget* m_dock;
|
|
QTabWidget* m_mobileTabs;
|
|
QListWidget* m_playlist;
|
|
AudioEngine* m_engine;
|
|
QTimer* m_timer;
|
|
struct TrackInfo {
|
|
QString path;
|
|
Utils::Metadata meta;
|
|
};
|
|
QVector<TrackInfo> m_tracks;
|
|
int m_currentIndex = -1;
|
|
enum class PendingAction { None, File, Folder };
|
|
PendingAction m_pendingAction = PendingAction::None;
|
|
QString m_settingsDir;
|
|
}; |