Diffstat (limited to 'noncore/multimedia/opieplayer3/videowidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer3/videowidget.cpp | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/noncore/multimedia/opieplayer3/videowidget.cpp b/noncore/multimedia/opieplayer3/videowidget.cpp new file mode 100644 index 0000000..c5c63c7 --- a/dev/null +++ b/noncore/multimedia/opieplayer3/videowidget.cpp | |||
@@ -0,0 +1,122 @@ | |||
1 | #include "videowidget.h" | ||
2 | #include "../opieplayer2/lib.h" | ||
3 | #include "../opieplayer2/threadutil.h" | ||
4 | #include "../opieplayer2/xinevideowidget.h" | ||
5 | |||
6 | #include <opie2/odebug.h> | ||
7 | |||
8 | #include <qpe/qpeapplication.h> | ||
9 | |||
10 | #include <qlayout.h> | ||
11 | #include <qslider.h> | ||
12 | #include <qlabel.h> | ||
13 | |||
14 | VideoWidget::VideoWidget( QWidget * parent, const char * name, WFlags f) | ||
15 | :QWidget(parent,name,f) | ||
16 | { | ||
17 | m_xineLib = 0; | ||
18 | |||
19 | m_MainLayout = new QVBoxLayout(this); | ||
20 | m_MainLayout->setAutoAdd(true); | ||
21 | m_Videodisplay = new XineVideoWidget(this,"videodisp"); | ||
22 | m_PosSlider = new QSlider(QSlider::Horizontal,this); | ||
23 | m_PosSlider->setTickInterval(60); | ||
24 | connect(m_PosSlider,SIGNAL(valueChanged(int)),this,SLOT(slotNewPos(int))); | ||
25 | connect(m_PosSlider,SIGNAL(sliderMoved(int)),this,SLOT(slotNewPos(int))); | ||
26 | connect(m_PosSlider,SIGNAL(sliderPressed()),this,SLOT(sliderPressed())); | ||
27 | connect(m_PosSlider,SIGNAL(sliderReleased()),this,SLOT(sliderReleased())); | ||
28 | connect(m_Videodisplay,SIGNAL(videoResized ( const QSize & )),this,SLOT(slot_Videoresized(const QSize&))); | ||
29 | connect(m_Videodisplay,SIGNAL(clicked()),this,SLOT(slotClicked())); | ||
30 | m_pressed = false; | ||
31 | m_uppos=0; | ||
32 | } | ||
33 | |||
34 | VideoWidget::~VideoWidget() | ||
35 | { | ||
36 | } | ||
37 | |||
38 | void VideoWidget::slotClicked() | ||
39 | { | ||
40 | odebug << "clicked " << oendl; | ||
41 | emit videoclicked(); | ||
42 | } | ||
43 | |||
44 | void VideoWidget::closeEvent(QCloseEvent*e) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | void VideoWidget::slotNewPos(int pos) | ||
49 | { | ||
50 | if (!m_xineLib) return; | ||
51 | if (m_uppos==pos) return; | ||
52 | m_xineLib->seekTo(pos); | ||
53 | } | ||
54 | |||
55 | void VideoWidget::sliderPressed() | ||
56 | { | ||
57 | m_pressed = true; | ||
58 | } | ||
59 | |||
60 | void VideoWidget::sliderReleased() | ||
61 | { | ||
62 | m_pressed = false; | ||
63 | } | ||
64 | |||
65 | void VideoWidget::fullScreen(bool how) | ||
66 | { | ||
67 | if (how) { | ||
68 | m_PosSlider->hide(); | ||
69 | } else { | ||
70 | m_PosSlider->show(); | ||
71 | } | ||
72 | } | ||
73 | |||
74 | void VideoWidget::playFile(const DocLnk&aLnk,XINE::Lib*aLib) | ||
75 | { | ||
76 | m_current = aLnk; | ||
77 | if (m_xineLib != aLib) { | ||
78 | disconnect(m_xineLib); | ||
79 | m_xineLib = aLib; | ||
80 | if (aLib) m_xineLib->setWidget(m_Videodisplay); | ||
81 | } | ||
82 | if (!m_xineLib) { | ||
83 | return; | ||
84 | } | ||
85 | connect(m_xineLib,SIGNAL(stopped()),this,SLOT(slotStopped())); | ||
86 | m_uppos=0; | ||
87 | m_PosSlider->setValue(0); | ||
88 | m_xineLib->setWidget(m_Videodisplay); | ||
89 | m_xineLib->setShowVideo(true); | ||
90 | m_xineLib->resize(m_Videodisplay->size()); | ||
91 | m_xineLib->play(m_current.file()); | ||
92 | int l = m_xineLib->length(); | ||
93 | m_PosSlider->setRange(0,l); | ||
94 | m_PosSlider->setPageStep(l/10); | ||
95 | } | ||
96 | |||
97 | void VideoWidget::stopPlaying() | ||
98 | { | ||
99 | if (m_xineLib) { | ||
100 | m_xineLib->stop(); | ||
101 | } | ||
102 | } | ||
103 | |||
104 | void VideoWidget::slotStopped() | ||
105 | { | ||
106 | // check fullscreen here! | ||
107 | } | ||
108 | |||
109 | void VideoWidget::slot_Videoresized(const QSize&s) | ||
110 | { | ||
111 | odebug << "Videoresized: " << s << oendl; | ||
112 | if (m_xineLib) { | ||
113 | m_xineLib->resize(s); | ||
114 | } | ||
115 | } | ||
116 | |||
117 | void VideoWidget::updatePos(int val) | ||
118 | { | ||
119 | if (m_pressed) return; | ||
120 | m_uppos = val; | ||
121 | m_PosSlider->setValue(val); | ||
122 | } | ||