aluf/src/MainWindow.h

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;
};