#ifndef AVPLAYER2_PLAY_CONTROL_WINDOW_H #define AVPLAYER2_PLAY_CONTROL_WINDOW_H #pragma once #include #include #include #include #include #include #include #include #include #include "clickable_slider.h" QT_BEGIN_NAMESPACE namespace Ui { class play_control_window; }; QT_END_NAMESPACE class PlayerController; class PlayControlWnd : public QWidget { Q_OBJECT public: explicit PlayControlWnd(PlayerController* playerController, QWidget* parent = Q_NULLPTR); ~PlayControlWnd(); public: void update_play_time(int64_t total_secs); void set_total_time(int64_t hours, int64_t mins, int64_t secs); inline QSlider* get_progress_slider() const; inline QSlider* get_volume_slider() const; inline QSlider* get_speed_slider() const; int get_volum_slider_max(); int get_progress_slider_max(); int get_progress_slider_value(); void set_volume_slider(float volume); void clear_all(); void update_btn_play(bool bPause = true); double get_total_time() const; double get_speed() const; void speed_adjust(bool up = true); public: static void get_play_time_params(int64_t total_secs, int64_t& hours, int64_t& mins, int64_t& secs); static QString get_play_time(int64_t hours, int64_t mins, int64_t secs); static inline double get_time_secs(int64_t hours, int64_t mins, int64_t secs); public slots: void volume_muted(int mute); void speed_changed(int speed); private: void enable_progressbar(bool enable = true); void enable_slider_vol(bool enable = true); void enable_slider_speed(bool enable = true); void init_slider_speed(); void clear_time(); void enable_play_buttons(bool enable = true); void update_play_time(int64_t hours, int64_t mins, int64_t secs); void set_progress_bar(double total_secs); void set_focus_policy(); void keyPressEvent(QKeyEvent* event) override; private: // UI控件成员 QPushButton* btn_pre = nullptr; QPushButton* btn_play = nullptr; QPushButton* btn_next = nullptr; QPushButton* btn_stop = nullptr; QSlider* slider_speed = nullptr; QLabel* label_speed = nullptr; QCheckBox* check_mute = nullptr; QSlider* slider_vol = nullptr; QLabel* label_vol = nullptr; ClickableSlider* progress_slider = nullptr; QLabel* label_curTime = nullptr; QLabel* label_totalTime = nullptr; QLabel* label_divider = nullptr; QGridLayout* gridLayout = nullptr; QHBoxLayout* hLayout_controls = nullptr; QHBoxLayout* hLayout_progress = nullptr; QVBoxLayout* mainLayout = nullptr; // ... 其它需要的布局和控件 ... int64_t m_hours{0}; int64_t m_mins{0}; int64_t m_secs{0}; }; #endif // AVPLAYER2_PLAY_CONTROL_WINDOW_H