#pragma once #include #include #include #include "qxtglobalshortcut.h" class SoundButton : public QPushButton { Q_OBJECT public: explicit SoundButton(const std::string& filename, const std::string& name_ = "", const std::string& keycombo = "", QWidget* parent = nullptr); ~SoundButton(); const std::string& getName() const; const std::string& getFile() const; const std::string& getKeyCombo() const; uint64_t getStartMS() const; uint64_t getLengthMS() const; float getVolume() const; void setStartMS(uint64_t startms); void setLengthMS(uint64_t lengthms); void setVolume(float v); void setHighlighted(bool highlighted); void paintEvent(QPaintEvent *) override; public slots: void play(); private: void setDisabled(); QString getInfo() const; static uint64_t nextid; uint64_t id; std::string name; std::string file; std::string keycombo; uint64_t startms = 0; uint64_t lengthms = 0; // ignored when length = 0 float volume = 1.f; bool disabled = false; QxtGlobalShortcut* globalShortcut = nullptr; };