#include "icon.h" Icon::Icon(IconType t, QWidget *parent) : QToolButton(parent) { QRect rect = QApplication::desktop()->screenGeometry(); setMinimumHeight(rect.height() / 40); setMinimumWidth(rect.height() / 40); setCursor(Qt::PointingHandCursor); setToolButtonStyle(Qt::ToolButtonIconOnly); setPopupMode(QToolButton::InstantPopup); switch (t) { case PAUSE_PLAY: { stateChanged(QMediaPlayer::StoppedState); setToolTip(tr("Pause/Play")); break; } case MENU: { loadImg(":/svg/menu"); setToolTip(tr("Menu")); break; } case OPEN: { loadImg(":/svg/open"); setToolTip(tr("Open File")); break; } case STOP: { loadImg(":/svg/stop"); setToolTip(tr("Stop")); break; } case PREV: { loadImg(":/svg/prev"); setToolTip(tr("Previous File")); break; } case NEXT: { loadImg(":/svg/next"); setToolTip(tr("Next File")); break; } case VOL_UP: { loadImg(":/svg/volume_up"); setToolTip(tr("Volume Up")); break; } case VOL_DOWN: { loadImg(":/svg/volume_down"); setToolTip(tr("Volume Down")); break; } case RESTORE: { loadImg(":/svg/restore"); setToolTip(tr("Restore")); break; } } if (t != MENU) { connect(this, SIGNAL(clicked()), this, SLOT(buttonClicked())); } type = t; volSlider = 0; } void Icon::buttonClicked() { if (type == PAUSE_PLAY) { if (playerState == QMediaPlayer::PlayingState) { emit pause(); } else { emit play(); } } else if (type == OPEN) { emit open(); } else if (type == NEXT) { emit next(); } else if (type == PREV) { emit prev(); } else if (type == STOP) { emit stop(); } else if ((type == VOL_DOWN) && volSlider) { volSlider->setValue(volSlider->value() - 1); } else if ((type == VOL_UP) && volSlider) { volSlider->setValue(volSlider->value() + 1); } else if (type == RESTORE) { emit restore(); } } void Icon::paintEvent(QPaintEvent *) { QPainter painter(this); QSvgRenderer svg(svgFile, this); svg.render(&painter); } void Icon::stateChanged(QMediaPlayer::State state) { playerState = state; if (state == QMediaPlayer::PlayingState) { loadImg(":/svg/pause"); } else { loadImg(":/svg/play"); } } void Icon::loadImg(const QString &path) { svgFile = path; update(); } void Icon::setSlider(QSlider *slider) { volSlider = slider; }