JustAudio/gui/icon.cpp

165 lines
2.8 KiB
C++
Raw Normal View History

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