NxWM::CMediaPlay: Now receives button events
This commit is contained in:
parent
0bef47273f
commit
541a92146a
@ -79,20 +79,36 @@ namespace NxWM
|
|||||||
private NXWidgets::CWidgetEventHandler
|
private NXWidgets::CWidgetEventHandler
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
/**
|
||||||
|
* This enumeration identifies the state of the media player
|
||||||
|
*/
|
||||||
|
|
||||||
|
enum EMediaPlayerState
|
||||||
|
{
|
||||||
|
MPLAYER_STOPPED = 0, /**< No media file has been selected */
|
||||||
|
MPLAYER_PLAYING, /**< Playing a media file */
|
||||||
|
MPLAYER_PAUSED, /**< Playing a media file but paused */
|
||||||
|
MPLAYER_FFORWARD, /**< Fast forwarding through a media file */
|
||||||
|
MPLAYER_FREWIND, /**< Rewinding a media file */
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The structure defines a pending operation.
|
* The structure defines a pending operation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct SPendingOperation
|
struct SPendingOperation
|
||||||
{
|
{
|
||||||
int64_t value; /**< Accumulated value */
|
int64_t value; /**< Accumulated value */
|
||||||
uint8_t operation; /**< Identifies the operations */
|
uint8_t operation; /**< Identifies the operations */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Media player state data.
|
* Media player state data.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
enum EMediaPlayerState m_state; /**< Media player current state */
|
||||||
|
enum EMediaPlayerState m_prevState; /**< Media player previous state */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cached constructor parameters.
|
* Cached constructor parameters.
|
||||||
*/
|
*/
|
||||||
@ -147,8 +163,8 @@ namespace NxWM
|
|||||||
void close(void);
|
void close(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle a widget action event. For CImage, this is a button pre-
|
* Handle a widget action event. This includes a button pre/release
|
||||||
* release event.
|
* release events and volume slider change events.
|
||||||
*
|
*
|
||||||
* @param e The event data.
|
* @param e The event data.
|
||||||
*/
|
*/
|
||||||
|
@ -90,6 +90,10 @@ CMediaPlayer::CMediaPlayer(CTaskbar *taskbar, CApplicationWindow *window)
|
|||||||
m_text = (NXWidgets::CLabel *)0;
|
m_text = (NXWidgets::CLabel *)0;
|
||||||
m_font = (NXWidgets::CNxFont *)0;
|
m_font = (NXWidgets::CNxFont *)0;
|
||||||
|
|
||||||
|
// Initial state is stopped
|
||||||
|
|
||||||
|
m_state = MPLAYER_STOPPED;
|
||||||
|
|
||||||
// Add our personalized window label
|
// Add our personalized window label
|
||||||
|
|
||||||
NXWidgets::CNxString myName = getName();
|
NXWidgets::CNxString myName = getName();
|
||||||
@ -427,7 +431,7 @@ bool CMediaPlayer::createPlayer(void)
|
|||||||
|
|
||||||
buttonH += 8;
|
buttonH += 8;
|
||||||
|
|
||||||
// Create the Play Image
|
// Create the Play image
|
||||||
|
|
||||||
nxgl_coord_t playControlX = (m_windowSize.w >> 1) - (playButtonW >> 1);
|
nxgl_coord_t playControlX = (m_windowSize.w >> 1) - (playButtonW >> 1);
|
||||||
uint32_t controlY = (180 * m_windowSize.h) >> 8;
|
uint32_t controlY = (180 * m_windowSize.h) >> 8;
|
||||||
@ -436,6 +440,8 @@ bool CMediaPlayer::createPlayer(void)
|
|||||||
CImage(control, playControlX, (nxgl_coord_t)controlY,
|
CImage(control, playControlX, (nxgl_coord_t)controlY,
|
||||||
playButtonW, buttonH, playBitmap);
|
playButtonW, buttonH, playBitmap);
|
||||||
|
|
||||||
|
// Configure the Play image
|
||||||
|
|
||||||
m_playPause->alignHorizontalCenter();
|
m_playPause->alignHorizontalCenter();
|
||||||
m_playPause->alignVerticalCenter();
|
m_playPause->alignVerticalCenter();
|
||||||
#ifndef CONFIG_NXWM_MEDIAPLAYER_BORDERS
|
#ifndef CONFIG_NXWM_MEDIAPLAYER_BORDERS
|
||||||
@ -444,7 +450,11 @@ bool CMediaPlayer::createPlayer(void)
|
|||||||
m_playPause->setBorderless(false);
|
m_playPause->setBorderless(false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Create the Rewind Image
|
// Register to get events from the mouse clicks on the Play image
|
||||||
|
|
||||||
|
m_playPause->addWidgetEventHandler(this);
|
||||||
|
|
||||||
|
// Create the Rewind image
|
||||||
|
|
||||||
nxgl_coord_t rewControlX = playControlX - rewButtonW -
|
nxgl_coord_t rewControlX = playControlX - rewButtonW -
|
||||||
CONFIG_NXWM_MEDIAPLAYER_XSPACING;
|
CONFIG_NXWM_MEDIAPLAYER_XSPACING;
|
||||||
@ -453,6 +463,8 @@ bool CMediaPlayer::createPlayer(void)
|
|||||||
CImage(control, rewControlX, (nxgl_coord_t)controlY,
|
CImage(control, rewControlX, (nxgl_coord_t)controlY,
|
||||||
rewButtonW, buttonH, rewBitmap);
|
rewButtonW, buttonH, rewBitmap);
|
||||||
|
|
||||||
|
// Configure the Rewind image
|
||||||
|
|
||||||
m_rew->alignHorizontalCenter();
|
m_rew->alignHorizontalCenter();
|
||||||
m_rew->alignVerticalCenter();
|
m_rew->alignVerticalCenter();
|
||||||
#ifndef CONFIG_NXWM_MEDIAPLAYER_BORDERS
|
#ifndef CONFIG_NXWM_MEDIAPLAYER_BORDERS
|
||||||
@ -461,6 +473,10 @@ bool CMediaPlayer::createPlayer(void)
|
|||||||
m_rew->setBorderless(false);
|
m_rew->setBorderless(false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Register to get events from the mouse clicks on the Rewind image
|
||||||
|
|
||||||
|
m_rew->addWidgetEventHandler(this);
|
||||||
|
|
||||||
// Create the Forward Image
|
// Create the Forward Image
|
||||||
|
|
||||||
nxgl_coord_t fwdControlX = playControlX + playButtonW +
|
nxgl_coord_t fwdControlX = playControlX + playButtonW +
|
||||||
@ -471,6 +487,8 @@ bool CMediaPlayer::createPlayer(void)
|
|||||||
fwdButtonW, buttonH, fwdBitmap);
|
fwdButtonW, buttonH, fwdBitmap);
|
||||||
|
|
||||||
|
|
||||||
|
// Configure the Forward image
|
||||||
|
|
||||||
m_fwd->alignHorizontalCenter();
|
m_fwd->alignHorizontalCenter();
|
||||||
m_fwd->alignVerticalCenter();
|
m_fwd->alignVerticalCenter();
|
||||||
#ifndef CONFIG_NXWM_MEDIAPLAYER_BORDERS
|
#ifndef CONFIG_NXWM_MEDIAPLAYER_BORDERS
|
||||||
@ -479,6 +497,10 @@ bool CMediaPlayer::createPlayer(void)
|
|||||||
m_fwd->setBorderless(false);
|
m_fwd->setBorderless(false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Register to get events from the mouse clicks on the Forward image
|
||||||
|
|
||||||
|
m_fwd->addWidgetEventHandler(this);
|
||||||
|
|
||||||
// Create the Volume control
|
// Create the Volume control
|
||||||
|
|
||||||
NXWidgets::CRlePaletteBitmap *volBitmap = new NXWidgets::
|
NXWidgets::CRlePaletteBitmap *volBitmap = new NXWidgets::
|
||||||
@ -495,10 +517,16 @@ bool CMediaPlayer::createPlayer(void)
|
|||||||
volBitmap->getHeight() + 4, volBitmap,
|
volBitmap->getHeight() + 4, volBitmap,
|
||||||
MKRGB(63, 90,192));
|
MKRGB(63, 90,192));
|
||||||
|
|
||||||
|
// Configure the volume control
|
||||||
|
|
||||||
m_volume->setMinimumValue(0);
|
m_volume->setMinimumValue(0);
|
||||||
m_volume->setMaximumValue(100);
|
m_volume->setMaximumValue(100);
|
||||||
m_volume->setValue(15);
|
m_volume->setValue(15);
|
||||||
|
|
||||||
|
// Register to get events from the mouse clicks on the Forward image
|
||||||
|
|
||||||
|
m_volume->addWidgetEventHandler(this);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -529,7 +557,65 @@ void CMediaPlayer::close(void)
|
|||||||
|
|
||||||
void CMediaPlayer::handleActionEvent(const NXWidgets::CWidgetEventArgs &e)
|
void CMediaPlayer::handleActionEvent(const NXWidgets::CWidgetEventArgs &e)
|
||||||
{
|
{
|
||||||
/* Nothing here yet! Coming soon! */
|
// Check is a media file has been selected. Do nothing if there is
|
||||||
|
// no media file.
|
||||||
|
|
||||||
|
if (m_playPause->isClicked())
|
||||||
|
{
|
||||||
|
printf("Play/pause clicked\n");
|
||||||
|
|
||||||
|
if (m_state == MPLAYER_PLAYING)
|
||||||
|
{
|
||||||
|
printf("Media player is now paused\n");
|
||||||
|
m_state = MPLAYER_PAUSED;
|
||||||
|
m_prevState = MPLAYER_PAUSED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Media player is now playing\n");
|
||||||
|
m_state = MPLAYER_PLAYING;
|
||||||
|
m_prevState = MPLAYER_PLAYING;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_rew->isClicked())
|
||||||
|
{
|
||||||
|
printf("Rewind clicked\n");
|
||||||
|
|
||||||
|
if (m_state == MPLAYER_FREWIND)
|
||||||
|
{
|
||||||
|
// Or increase rewind speed?
|
||||||
|
printf("Reverting to previous Play/Pause state\n");
|
||||||
|
m_state = m_prevState;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Rewinding...\n");
|
||||||
|
m_state = MPLAYER_FREWIND;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_fwd->isClicked())
|
||||||
|
{
|
||||||
|
printf("Forward clicked\n");
|
||||||
|
|
||||||
|
if (m_state == MPLAYER_FFORWARD)
|
||||||
|
{
|
||||||
|
// Or increase fast forward speed?
|
||||||
|
printf("Reverting to previous Play/Pause state\n");
|
||||||
|
m_state = m_prevState;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Fast forwarding...\n");
|
||||||
|
m_state = MPLAYER_FFORWARD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_volume->isClicked())
|
||||||
|
{
|
||||||
|
printf("Volume clicked\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user