summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opieplayer3/videowidget.cpp
Unidiff
Diffstat (limited to 'noncore/multimedia/opieplayer3/videowidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer3/videowidget.cpp122
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
14VideoWidget::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
34VideoWidget::~VideoWidget()
35{
36}
37
38void VideoWidget::slotClicked()
39{
40 odebug << "clicked " << oendl;
41 emit videoclicked();
42}
43
44void VideoWidget::closeEvent(QCloseEvent*e)
45{
46}
47
48void VideoWidget::slotNewPos(int pos)
49{
50 if (!m_xineLib) return;
51 if (m_uppos==pos) return;
52 m_xineLib->seekTo(pos);
53}
54
55void VideoWidget::sliderPressed()
56{
57 m_pressed = true;
58}
59
60void VideoWidget::sliderReleased()
61{
62 m_pressed = false;
63}
64
65void VideoWidget::fullScreen(bool how)
66{
67 if (how) {
68 m_PosSlider->hide();
69 } else {
70 m_PosSlider->show();
71 }
72}
73
74void 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
97void VideoWidget::stopPlaying()
98{
99 if (m_xineLib) {
100 m_xineLib->stop();
101 }
102}
103
104void VideoWidget::slotStopped()
105{
106// check fullscreen here!
107}
108
109void VideoWidget::slot_Videoresized(const QSize&s)
110{
111 odebug << "Videoresized: " << s << oendl;
112 if (m_xineLib) {
113 m_xineLib->resize(s);
114 }
115}
116
117void VideoWidget::updatePos(int val)
118{
119 if (m_pressed) return;
120 m_uppos = val;
121 m_PosSlider->setValue(val);
122}