play_control_window.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #pragma once
  2. #include <QSlider>
  3. #include <QWidget>
  4. #include <memory>
  5. #include <QPushButton>
  6. #include <QLabel>
  7. #include <QCheckBox>
  8. #include <QHBoxLayout>
  9. #include <QVBoxLayout>
  10. #include <QGridLayout>
  11. #include "clickable_slider.h"
  12. QT_BEGIN_NAMESPACE
  13. namespace Ui
  14. {
  15. class play_control_window;
  16. };
  17. QT_END_NAMESPACE
  18. class PlayerController;
  19. class PlayControlWnd : public QWidget
  20. {
  21. Q_OBJECT
  22. public:
  23. explicit PlayControlWnd(PlayerController* playerController, QWidget* parent = Q_NULLPTR);
  24. ~PlayControlWnd();
  25. public:
  26. void update_play_time(int64_t total_secs);
  27. void set_total_time(int64_t hours, int64_t mins, int64_t secs);
  28. inline QSlider* get_progress_slider() const;
  29. inline QSlider* get_volume_slider() const;
  30. inline QSlider* get_speed_slider() const;
  31. int get_volum_slider_max();
  32. int get_progress_slider_max();
  33. int get_progress_slider_value();
  34. void set_volume_slider(float volume);
  35. void clear_all();
  36. void update_btn_play(bool bPause = true);
  37. double get_total_time() const;
  38. double get_speed() const;
  39. void speed_adjust(bool up = true);
  40. public:
  41. static void get_play_time_params(int64_t total_secs, int64_t& hours, int64_t& mins, int64_t& secs);
  42. static QString get_play_time(int64_t hours, int64_t mins, int64_t secs);
  43. static inline double get_time_secs(int64_t hours, int64_t mins, int64_t secs);
  44. public slots:
  45. void volume_muted(int mute);
  46. void speed_changed(int speed);
  47. private:
  48. void enable_progressbar(bool enable = true);
  49. void enable_slider_vol(bool enable = true);
  50. void enable_slider_speed(bool enable = true);
  51. void init_slider_speed();
  52. void clear_time();
  53. void enable_play_buttons(bool enable = true);
  54. void update_play_time(int64_t hours, int64_t mins, int64_t secs);
  55. void set_progress_bar(double total_secs);
  56. void set_focus_policy();
  57. void keyPressEvent(QKeyEvent* event) override;
  58. private:
  59. // UI控件成员
  60. QPushButton* btn_pre = nullptr;
  61. QPushButton* btn_play = nullptr;
  62. QPushButton* btn_next = nullptr;
  63. QPushButton* btn_stop = nullptr;
  64. QSlider* slider_speed = nullptr;
  65. QLabel* label_speed = nullptr;
  66. QCheckBox* check_mute = nullptr;
  67. QSlider* slider_vol = nullptr;
  68. QLabel* label_vol = nullptr;
  69. ClickableSlider* progress_slider = nullptr;
  70. QLabel* label_curTime = nullptr;
  71. QLabel* label_totalTime = nullptr;
  72. QLabel* label_divider = nullptr;
  73. QGridLayout* gridLayout = nullptr;
  74. QHBoxLayout* hLayout_controls = nullptr;
  75. QHBoxLayout* hLayout_progress = nullptr;
  76. QVBoxLayout* mainLayout = nullptr;
  77. // ... 其它需要的布局和控件 ...
  78. int64_t m_hours{0};
  79. int64_t m_mins{0};
  80. int64_t m_secs{0};
  81. };