haiku/src/apps/mediaplayer/ControllerObserver.h

75 lines
1.9 KiB
C++

/*
* Copyright 2007-2009, Haiku. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Stephan Aßmus <superstippi@gmx.de>
*/
#ifndef CONTROLLER_OBSERVER_H
#define CONTROLLER_OBSERVER_H
#include "AbstractLOAdapter.h"
#include "Controller.h"
enum {
MSG_CONTROLLER_FILE_FINISHED = 'cnff',
MSG_CONTROLLER_FILE_CHANGED = 'cnfc',
MSG_CONTROLLER_VIDEO_TRACK_CHANGED = 'cnvt',
MSG_CONTROLLER_AUDIO_TRACK_CHANGED = 'cnat',
MSG_CONTROLLER_SUB_TITLE_TRACK_CHANGED = 'cnst',
MSG_CONTROLLER_VIDEO_STATS_CHANGED = 'cnvs',
MSG_CONTROLLER_AUDIO_STATS_CHANGED = 'cnas',
MSG_CONTROLLER_PLAYBACK_STATE_CHANGED = 'cnps',
MSG_CONTROLLER_POSITION_CHANGED = 'cnpc',
MSG_CONTROLLER_SEEK_HANDLED = 'cnsh',
MSG_CONTROLLER_VOLUME_CHANGED = 'cnvc',
MSG_CONTROLLER_MUTED_CHANGED = 'cnmc'
};
enum {
OBSERVE_FILE_CHANGES = 0x0001,
OBSERVE_TRACK_CHANGES = 0x0002,
OBSERVE_STAT_CHANGES = 0x0004,
OBSERVE_PLAYBACK_STATE_CHANGES = 0x0008,
OBSERVE_POSITION_CHANGES = 0x0010,
OBSERVE_VOLUME_CHANGES = 0x0020,
OBSERVE_ALL_CHANGES = 0xffff
};
class ControllerObserver
: public Controller::Listener, public AbstractLOAdapter {
public:
ControllerObserver(BHandler* target,
uint32 observeFlags = OBSERVE_ALL_CHANGES);
virtual ~ControllerObserver();
// Controller::Listener interface
virtual void FileFinished();
virtual void FileChanged(PlaylistItem* item, status_t result);
virtual void VideoTrackChanged(int32 index);
virtual void AudioTrackChanged(int32 index);
virtual void SubTitleTrackChanged(int32 index);
virtual void VideoStatsChanged();
virtual void AudioStatsChanged();
virtual void PlaybackStateChanged(uint32 state);
virtual void PositionChanged(float position);
virtual void SeekHandled(int64 seekFrame);
virtual void VolumeChanged(float volume);
virtual void MutedChanged(bool muted);
private:
uint32 fObserveFlags;
};
#endif // CONTROLLER_OBSERVER_H