You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
1.9 KiB

#ifndef RENDERER_MANAGER_HPP
#define RENDERER_MANAGER_HPP
#include "qt.hpp"
#include "util/singleton.hpp"
#include <QObject>
#include <QEvent>
#include <QTimer>
#include <QVector>
#include <QHash>
extern "C" {
typedef struct vlc_renderer_item_t vlc_renderer_item_t;
}
class RendererManagerEvent : public QEvent
{
public:
static const QEvent::Type AddedEvent;
static const QEvent::Type RemovedEvent;
RendererManagerEvent( QEvent::Type type, vlc_renderer_item_t *p_item_ );
virtual ~RendererManagerEvent();
vlc_renderer_item_t * getItem() const { return p_item; }
private:
vlc_renderer_item_t *p_item;
};
class RendererManager : public QObject, public Singleton<RendererManager>
{
Q_OBJECT
friend class Singleton<RendererManager>;
public:
enum RendererStatus
{
FAILED = -2,
IDLE = -1,
RUNNING,
};
RendererManager( qt_intf_t * );
virtual ~RendererManager();
void customEvent( QEvent * );
public slots:
void SelectRenderer( vlc_renderer_item_t * );
void StartScan();
void StopScan();
signals:
void rendererItemAdded( vlc_renderer_item_t * ); /* For non queued only */
void rendererItemRemoved( vlc_renderer_item_t * ); /* For non queued only */
void statusUpdated( int );
private:
static void renderer_event_item_added( vlc_renderer_discovery_t *,
vlc_renderer_item_t * );
static void renderer_event_item_removed( vlc_renderer_discovery_t *,
vlc_renderer_item_t * );
typedef std::pair<bool, vlc_renderer_item_t *> ItemEntry;
qt_intf_t* const p_intf;
const vlc_renderer_item_t *p_selected_item;
QVector<vlc_renderer_discovery_t*> m_rds;
QHash<QString, ItemEntry> m_items;
QTimer m_stop_scan_timer;
unsigned m_scan_remain;
private slots:
void RendererMenuCountdown();
};
#endif // RENDERER_MANAGER_HPP