diff options
Diffstat (limited to 'demos/player/playercontrols.cpp')
-rw-r--r-- | demos/player/playercontrols.cpp | 67 |
1 files changed, 66 insertions, 1 deletions
diff --git a/demos/player/playercontrols.cpp b/demos/player/playercontrols.cpp index bf4d96b2fd..103b4af5b4 100644 --- a/demos/player/playercontrols.cpp +++ b/demos/player/playercontrols.cpp @@ -46,7 +46,7 @@ #include <QtGui/qtoolbutton.h> #include <QtGui/qcombobox.h> -PlayerControls::PlayerControls(QWidget *parent) +PlayerControls::PlayerControls(QWidget *parent, QMediaPlayer *player) : QWidget(parent) , playerState(QMediaPlayer::StoppedState) , playerMuted(false) @@ -58,6 +58,11 @@ PlayerControls::PlayerControls(QWidget *parent) , volumeSlider(0) , rateBox(0) { +#ifdef Q_OS_SYMBIAN + initRemCon(); +#endif // Q_OS_SYMBIAN + iplayer = player; + playButton = new QToolButton(this); playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay)); @@ -115,6 +120,13 @@ PlayerControls::PlayerControls(QWidget *parent) setLayout(layout); } +PlayerControls::~PlayerControls() +{ +#ifdef Q_OS_SYMBIAN + delete interfaceSelector; +#endif +} + QMediaPlayer::State PlayerControls::state() const { return playerState; @@ -209,3 +221,56 @@ void PlayerControls::updateRate() { emit changeRate(playbackRate()); } + +#ifdef Q_OS_SYMBIAN +void PlayerControls::MrccatoCommand(TRemConCoreApiOperationId aOperationId, TRemConCoreApiButtonAction aButtonAct) +{ + if (!coreTarget) + return; + + switch (aOperationId){ + case ERemConCoreApiVolumeUp: + if ((aButtonAct == ERemConCoreApiButtonClick) || + (aButtonAct == ERemConCoreApiButtonPress) || + (aButtonAct == ERemConCoreApiButtonRelease)) + emit changeVolume((iplayer->volume()) + 10); + break; + case ERemConCoreApiVolumeDown: + if ((aButtonAct == ERemConCoreApiButtonClick) || + (aButtonAct == ERemConCoreApiButtonPress) || + (aButtonAct == ERemConCoreApiButtonRelease)) + emit changeVolume((iplayer->volume()) - 10); + break; + case ERemConCoreApiPausePlayFunction: + if (aButtonAct == ERemConCoreApiButtonClick) + playClicked(); + break; + case ERemConCoreApiStop: + if (aButtonAct == ERemConCoreApiButtonClick) + emit stop(); + break; + case ERemConCoreApiBackward: + if (aButtonAct == ERemConCoreApiButtonClick) + emit previous(); + break; + case ERemConCoreApiForward: + if (aButtonAct == ERemConCoreApiButtonClick) + emit next(); + break; + } +} + +void PlayerControls::initRemCon() +{ + try { + QT_TRAP_THROWING( + interfaceSelector = CRemConInterfaceSelector::NewL(); + coreTarget = CRemConCoreApiTarget::NewL(*interfaceSelector, *this); + interfaceSelector->OpenTargetL()); + } catch (const std::exception &e) { + delete interfaceSelector; + interfaceSelector = 0; + coreTarget = 0; + } +} +#endif // Q_OS_SYMBIAN |