/* * Part of dc-qt, distributed under GPL, etc. */ #ifndef _PREVIEW_WIDGET_H_ #define _PREVIEW_WIDGET_H_ #include #include #include class av_player; class QLabel; class QVBox; class QLabel; class QSlider; class QPushButton; class QListView; class QListViewItem; class QTimer; class preview_widget : public QWidget { Q_OBJECT public: preview_widget(QWidget *parent=0, char *name=0); virtual ~preview_widget(); public slots: void slot_play_file(const QString &, const QString &); void slot_add_history_file(const QString &, const QString &); void slot_set_title(const QString &title); void slot_display_status_message(const QString &, int msec); // this is a hack... :( void slot_hide_mrls(); signals: protected: // mapping from lv-items to abs. paths to files typedef QMap MRLMap; // Our audio/video player abstract class (aka pure interface). // It is also a widget for actual video playback. av_player *player; // buttons QPushButton *play; QPushButton *pause; QPushButton *stop; QPushButton *ffwd; QPushButton *rwnd; QPushButton *next; QPushButton *prev; QPushButton *fullscreen; QPushButton *open; // sliders QSlider *volume; QSlider *progress; // labels QLabel *title; QLabel *status; QString currentFile; // filename now playing QString currentTitle;// title of currently playing file QString status_str; // status string QVBox *mrls_box; // toolbox-style window for the mrl list QListView *mrls; // list of items that we can play QListViewItem *mrls_finished; QListViewItem *mrls_incomplete; MRLMap files; // mapping from list items to actual file names QTimer *status_timer; QTimer *progress_timer; bool is_seeking; // internal methods bool is_media_type(const QString &, const QStringList &) const; void add_mrl_to_list(const QString &title, const QString file, bool complete); void find_incomplete_items(); void find_complete_items(); virtual void hideEvent ( QHideEvent * e ); private slots: // player buttons void slot_play(); void slot_stop(); void slot_pause(); void slot_ffwd(); void slot_rwnd(); void slot_next(); void slot_prev(); void slot_fullscreen(); void slot_show_mrls(); // sliders void slot_volume_slider_moved(int); void slot_volume_slider_released(); void slot_progress_slider_moved(int); void slot_progress_slider_pressed(); void slot_progress_slider_released(); // mrl listview void slot_lv_onItem(QListViewItem *); void slot_lv_onViewport(); void slot_lv_pressed(QListViewItem *); // status printing void slot_update_status(); // progress bar auto-moving void slot_update_progress(); }; #endif