Diffstat (limited to 'noncore/multimedia/opieplayer2/videowidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/videowidget.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/noncore/multimedia/opieplayer2/videowidget.cpp b/noncore/multimedia/opieplayer2/videowidget.cpp index 48caf00..af06079 100644 --- a/noncore/multimedia/opieplayer2/videowidget.cpp +++ b/noncore/multimedia/opieplayer2/videowidget.cpp | |||
@@ -65,115 +65,117 @@ struct MediaButton { | |||
65 | }; | 65 | }; |
66 | 66 | ||
67 | 67 | ||
68 | // Layout information for the videoButtons (and if it is a toggle button or not) | 68 | // Layout information for the videoButtons (and if it is a toggle button or not) |
69 | MediaButton videoButtons[] = { | 69 | MediaButton videoButtons[] = { |
70 | { 5+0*32+xo, 200+yo, FALSE, FALSE, FALSE, 4 }, // previous | 70 | { 5+0*32+xo, 200+yo, FALSE, FALSE, FALSE, 4 }, // previous |
71 | { 5+1*32+xo, 200+yo, FALSE, FALSE, FALSE, 1 }, // stop | 71 | { 5+1*32+xo, 200+yo, FALSE, FALSE, FALSE, 1 }, // stop |
72 | { 5+2*32+xo, 200+yo, TRUE, FALSE, FALSE, 0 }, // play | 72 | { 5+2*32+xo, 200+yo, TRUE, FALSE, FALSE, 0 }, // play |
73 | { 5+3*32+xo, 200+yo, TRUE, FALSE, FALSE, 2 }, // pause | 73 | { 5+3*32+xo, 200+yo, TRUE, FALSE, FALSE, 2 }, // pause |
74 | { 5+4*32+xo, 200+yo, FALSE, FALSE, FALSE, 3 }, // next | 74 | { 5+4*32+xo, 200+yo, FALSE, FALSE, FALSE, 3 }, // next |
75 | { 5+5*32+xo, 200+yo, FALSE, FALSE, FALSE, 8 }, // playlist | 75 | { 5+5*32+xo, 200+yo, FALSE, FALSE, FALSE, 8 }, // playlist |
76 | { 5+6*32+xo, 200+yo, TRUE, FALSE, FALSE, 9 } // fullscreen | 76 | { 5+6*32+xo, 200+yo, TRUE, FALSE, FALSE, 9 } // fullscreen |
77 | }; | 77 | }; |
78 | 78 | ||
79 | 79 | ||
80 | static const int numButtons = (sizeof(videoButtons)/sizeof(MediaButton)); | 80 | static const int numButtons = (sizeof(videoButtons)/sizeof(MediaButton)); |
81 | 81 | ||
82 | 82 | ||
83 | VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) : | 83 | VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) : |
84 | QWidget( parent, name, f ), scaledWidth( 0 ), scaledHeight( 0 ) { | 84 | QWidget( parent, name, f ), scaledWidth( 0 ), scaledHeight( 0 ) { |
85 | setCaption( tr("OpiePlayer - Video") ); | 85 | setCaption( tr("OpiePlayer - Video") ); |
86 | Config cfg("OpiePlayer"); | 86 | Config cfg("OpiePlayer"); |
87 | cfg.setGroup("VideoWidget"); | 87 | cfg.setGroup("VideoWidget"); |
88 | 88 | ||
89 | QString Button0aPix, Button0bPix, controlsPix; | 89 | QString Button0aPix, Button0bPix, controlsPix; |
90 | //backgroundPix=cfg.readEntry( "backgroundPix", "opieplayer/metalFinish"); | 90 | //backgroundPix=cfg.readEntry( "backgroundPix", "opieplayer/metalFinish"); |
91 | Button0aPix=cfg.readEntry( "Button0aPix", "opieplayer/mediaButton0a"); | 91 | Button0aPix=cfg.readEntry( "Button0aPix", "opieplayer/mediaButton0a"); |
92 | Button0bPix=cfg.readEntry( "Button0bPix","opieplayer/mediaButton0b"); | 92 | Button0bPix=cfg.readEntry( "Button0bPix","opieplayer/mediaButton0b"); |
93 | controlsPix=cfg.readEntry( "controlsPix","opieplayer/mediaControls0" ); | 93 | controlsPix=cfg.readEntry( "controlsPix","opieplayer/mediaControls0" ); |
94 | 94 | ||
95 | cfg.setGroup("AudioWidget"); | 95 | cfg.setGroup("AudioWidget"); |
96 | QString skin = cfg.readEntry("Skin","default"); | 96 | QString skin = cfg.readEntry("Skin","default"); |
97 | QString skinPath = "opieplayer/skins/" + skin; | 97 | QString skinPath = "opieplayer/skins/" + skin; |
98 | backgroundPix = QString("%1/background").arg(skinPath) ; | 98 | backgroundPix = QString("%1/background").arg(skinPath) ; |
99 | 99 | ||
100 | setBackgroundPixmap( Resource::loadPixmap( backgroundPix) ); | 100 | setBackgroundPixmap( Resource::loadPixmap( backgroundPix) ); |
101 | pixmaps[0] = new QPixmap( Resource::loadPixmap( Button0aPix ) ); | 101 | pixmaps[0] = new QPixmap( Resource::loadPixmap( Button0aPix ) ); |
102 | pixmaps[1] = new QPixmap( Resource::loadPixmap( Button0bPix ) ); | 102 | pixmaps[1] = new QPixmap( Resource::loadPixmap( Button0bPix ) ); |
103 | pixmaps[2] = new QPixmap( Resource::loadPixmap( controlsPix) ); | 103 | pixmaps[2] = new QPixmap( Resource::loadPixmap( controlsPix) ); |
104 | currentFrame = new QImage( 220 + 2, 160, (QPixmap::defaultDepth() == 16) ? 16 : 32 ); | 104 | currentFrame = new QImage( 220 + 2, 160, (QPixmap::defaultDepth() == 16) ? 16 : 32 ); |
105 | 105 | ||
106 | slider = new QSlider( Qt::Horizontal, this ); | 106 | slider = new QSlider( Qt::Horizontal, this ); |
107 | slider->setMinValue( 0 ); | 107 | slider->setMinValue( 0 ); |
108 | slider->setMaxValue( 1 ); | 108 | slider->setMaxValue( 1 ); |
109 | slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); | 109 | slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); |
110 | slider->setFocusPolicy( QWidget::NoFocus ); | 110 | slider->setFocusPolicy( QWidget::NoFocus ); |
111 | slider->setGeometry( QRect( 7, 250, 220, 20 ) ); | 111 | slider->setGeometry( QRect( 7, 250, 220, 20 ) ); |
112 | 112 | ||
113 | videoFrame = new XineVideoWidget ( this, "Video frame" ); | ||
114 | |||
115 | connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & ))); | ||
116 | |||
113 | connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); | 117 | connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); |
114 | connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); | 118 | connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); |
115 | 119 | ||
116 | connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) ); | 120 | connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) ); |
117 | connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); | 121 | connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); |
118 | connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); | 122 | connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); |
119 | connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) ); | 123 | connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) ); |
120 | connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) ); | 124 | connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) ); |
121 | connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) ); | 125 | connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) ); |
122 | 126 | ||
123 | // Intialise state | 127 | // Intialise state |
124 | setLength( mediaPlayerState->length() ); | 128 | setLength( mediaPlayerState->length() ); |
125 | setPosition( mediaPlayerState->position() ); | 129 | setPosition( mediaPlayerState->position() ); |
126 | setFullscreen( mediaPlayerState->fullscreen() ); | 130 | setFullscreen( mediaPlayerState->fullscreen() ); |
127 | setPaused( mediaPlayerState->paused() ); | 131 | setPaused( mediaPlayerState->paused() ); |
128 | setPlaying( mediaPlayerState->playing() ); | 132 | setPlaying( mediaPlayerState->playing() ); |
129 | 133 | ||
130 | videoFrame = new XineVideoWidget( 240, 155 ,this, "Video frame" ); | ||
131 | |||
132 | } | 134 | } |
133 | 135 | ||
134 | 136 | ||
135 | VideoWidget::~VideoWidget() { | 137 | VideoWidget::~VideoWidget() { |
136 | for ( int i = 0; i < 3; i++ ) { | 138 | for ( int i = 0; i < 3; i++ ) { |
137 | delete pixmaps[i]; | 139 | delete pixmaps[i]; |
138 | } | 140 | } |
139 | delete currentFrame; | 141 | delete currentFrame; |
140 | } | 142 | } |
141 | 143 | ||
142 | 144 | ||
143 | static bool videoSliderBeingMoved = FALSE; | 145 | static bool videoSliderBeingMoved = FALSE; |
144 | 146 | ||
145 | 147 | ||
146 | void VideoWidget::sliderPressed() { | 148 | void VideoWidget::sliderPressed() { |
147 | videoSliderBeingMoved = TRUE; | 149 | videoSliderBeingMoved = TRUE; |
148 | } | 150 | } |
149 | 151 | ||
150 | 152 | ||
151 | void VideoWidget::sliderReleased() { | 153 | void VideoWidget::sliderReleased() { |
152 | videoSliderBeingMoved = FALSE; | 154 | videoSliderBeingMoved = FALSE; |
153 | if ( slider->width() == 0 ) { | 155 | if ( slider->width() == 0 ) { |
154 | return; | 156 | return; |
155 | } | 157 | } |
156 | long val = long((double)slider->value() * mediaPlayerState->length() / slider->width()); | 158 | long val = long((double)slider->value() * mediaPlayerState->length() / slider->width()); |
157 | mediaPlayerState->setPosition( val ); | 159 | mediaPlayerState->setPosition( val ); |
158 | } | 160 | } |
159 | 161 | ||
160 | 162 | ||
161 | void VideoWidget::setPosition( long i ) { | 163 | void VideoWidget::setPosition( long i ) { |
162 | updateSlider( i, mediaPlayerState->length() ); | 164 | updateSlider( i, mediaPlayerState->length() ); |
163 | } | 165 | } |
164 | 166 | ||
165 | 167 | ||
166 | void VideoWidget::setLength( long max ) { | 168 | void VideoWidget::setLength( long max ) { |
167 | updateSlider( mediaPlayerState->position(), max ); | 169 | updateSlider( mediaPlayerState->position(), max ); |
168 | } | 170 | } |
169 | 171 | ||
170 | 172 | ||
171 | void VideoWidget::setView( char view ) { | 173 | void VideoWidget::setView( char view ) { |
172 | if ( view == 'v' ) { | 174 | if ( view == 'v' ) { |
173 | makeVisible(); | 175 | makeVisible(); |
174 | } else { | 176 | } else { |
175 | // Effectively blank the view next time we show it so it looks nicer | 177 | // Effectively blank the view next time we show it so it looks nicer |
176 | scaledWidth = 0; | 178 | scaledWidth = 0; |
177 | scaledHeight = 0; | 179 | scaledHeight = 0; |
178 | hide(); | 180 | hide(); |
179 | } | 181 | } |
@@ -234,151 +236,159 @@ void VideoWidget::mouseMoveEvent( QMouseEvent *event ) { | |||
234 | int dist = dXY.x() * dXY.x() + dXY.y() * dXY.y(); | 236 | int dist = dXY.x() * dXY.x() + dXY.y() * dXY.y(); |
235 | bool isOnButton = dist <= (radius * radius); | 237 | bool isOnButton = dist <= (radius * radius); |
236 | if ( isOnButton != videoButtons[i].isHeld ) { | 238 | if ( isOnButton != videoButtons[i].isHeld ) { |
237 | videoButtons[i].isHeld = isOnButton; | 239 | videoButtons[i].isHeld = isOnButton; |
238 | toggleButton(i); | 240 | toggleButton(i); |
239 | } | 241 | } |
240 | } else { | 242 | } else { |
241 | if ( videoButtons[i].isHeld ) { | 243 | if ( videoButtons[i].isHeld ) { |
242 | videoButtons[i].isHeld = FALSE; | 244 | videoButtons[i].isHeld = FALSE; |
243 | if ( !videoButtons[i].isToggle ) | 245 | if ( !videoButtons[i].isToggle ) |
244 | setToggleButton( i, FALSE ); | 246 | setToggleButton( i, FALSE ); |
245 | } | 247 | } |
246 | } | 248 | } |
247 | switch (i) { | 249 | switch (i) { |
248 | case VideoPlay: mediaPlayerState->setPlaying(videoButtons[i].isDown); return; | 250 | case VideoPlay: mediaPlayerState->setPlaying(videoButtons[i].isDown); return; |
249 | case VideoStop: mediaPlayerState->setPlaying(FALSE); return; | 251 | case VideoStop: mediaPlayerState->setPlaying(FALSE); return; |
250 | case VideoPause: mediaPlayerState->setPaused(videoButtons[i].isDown); return; | 252 | case VideoPause: mediaPlayerState->setPaused(videoButtons[i].isDown); return; |
251 | case VideoNext: mediaPlayerState->setNext(); return; | 253 | case VideoNext: mediaPlayerState->setNext(); return; |
252 | case VideoPrevious: mediaPlayerState->setPrev(); return; | 254 | case VideoPrevious: mediaPlayerState->setPrev(); return; |
253 | case VideoPlayList: mediaPlayerState->setList(); return; | 255 | case VideoPlayList: mediaPlayerState->setList(); return; |
254 | case VideoFullscreen: mediaPlayerState->setFullscreen( TRUE ); makeVisible(); return; | 256 | case VideoFullscreen: mediaPlayerState->setFullscreen( TRUE ); makeVisible(); return; |
255 | } | 257 | } |
256 | 258 | ||
257 | } | 259 | } |
258 | } | 260 | } |
259 | 261 | ||
260 | 262 | ||
261 | void VideoWidget::mousePressEvent( QMouseEvent *event ) { | 263 | void VideoWidget::mousePressEvent( QMouseEvent *event ) { |
262 | mouseMoveEvent( event ); | 264 | mouseMoveEvent( event ); |
263 | } | 265 | } |
264 | 266 | ||
265 | 267 | ||
266 | void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) { | 268 | void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) { |
267 | if ( mediaPlayerState->fullscreen() ) { | 269 | if ( mediaPlayerState->fullscreen() ) { |
268 | mediaPlayerState->setFullscreen( FALSE ); | 270 | mediaPlayerState->setFullscreen( FALSE ); |
269 | makeVisible(); | 271 | makeVisible(); |
270 | 272 | ||
271 | mouseMoveEvent( event ); | 273 | mouseMoveEvent( event ); |
272 | } | 274 | } |
273 | } | 275 | } |
274 | 276 | ||
275 | 277 | ||
276 | void VideoWidget::makeVisible() { | 278 | void VideoWidget::makeVisible() { |
277 | if ( mediaPlayerState->fullscreen() ) { | 279 | if ( mediaPlayerState->fullscreen() ) { |
278 | setBackgroundMode( QWidget::NoBackground ); | 280 | setBackgroundMode( QWidget::NoBackground ); |
279 | showFullScreen(); | 281 | showFullScreen(); |
280 | resize( qApp->desktop()->size() ); | 282 | resize( qApp->desktop()->size() ); |
281 | slider->hide(); | 283 | slider->hide(); |
284 | videoFrame-> setGeometry ( 0, 0, width ( ), height ( )); | ||
282 | } else { | 285 | } else { |
283 | setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); | 286 | setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); |
284 | showNormal(); | 287 | showNormal(); |
285 | showMaximized(); | 288 | showMaximized(); |
286 | slider->show(); | 289 | slider->show(); |
290 | videoFrame->setGeometry( QRect( 10, 20, 220, 160 ) ); | ||
287 | } | 291 | } |
288 | } | 292 | } |
289 | 293 | ||
290 | 294 | ||
291 | void VideoWidget::paintEvent( QPaintEvent * ) { | 295 | void VideoWidget::paintEvent( QPaintEvent * ) { |
292 | QPainter p( this ); | 296 | QPainter p( this ); |
293 | 297 | ||
294 | if ( mediaPlayerState->fullscreen() ) { | 298 | if ( mediaPlayerState->fullscreen() ) { |
295 | // Clear the background | 299 | // Clear the background |
296 | p.setBrush( QBrush( Qt::black ) ); | 300 | p.setBrush( QBrush( Qt::black ) ); |
297 | videoFrame->setGeometry( QRect( 0, 0 , 240 ,340 ) ); | 301 | // videoFrame->setGeometry( QRect( 0, 0 , 240 ,320 ) ); |
298 | 302 | ||
299 | } else { | 303 | } else { |
300 | 304 | ||
301 | videoFrame->setGeometry( QRect( 0, 15 , 240 ,170 ) ); | 305 | // videoFrame->setGeometry( QRect( 0, 15 , 240 ,170 ) ); |
302 | // draw the buttons | 306 | // draw the buttons |
303 | 307 | ||
304 | for ( int i = 0; i < numButtons; i++ ) { | 308 | for ( int i = 0; i < numButtons; i++ ) { |
305 | paintButton( &p, i ); | 309 | paintButton( &p, i ); |
306 | } | 310 | } |
307 | // draw the slider | 311 | // draw the slider |
308 | slider->repaint( TRUE ); | 312 | slider->repaint( TRUE ); |
309 | } | 313 | } |
310 | } | 314 | } |
311 | 315 | ||
312 | 316 | ||
313 | void VideoWidget::closeEvent( QCloseEvent* ) { | 317 | void VideoWidget::closeEvent( QCloseEvent* ) { |
314 | mediaPlayerState->setList(); | 318 | mediaPlayerState->setList(); |
315 | } | 319 | } |
316 | 320 | ||
317 | 321 | ||
318 | bool VideoWidget::playVideo() { | 322 | bool VideoWidget::playVideo() { |
319 | bool result = FALSE; | 323 | bool result = FALSE; |
320 | 324 | ||
321 | int stream = 0; | 325 | int stream = 0; |
322 | 326 | ||
323 | int sw = 240; | 327 | int sw = 240; |
324 | int sh = 320; | 328 | int sh = 320; |
325 | int dd = QPixmap::defaultDepth(); | 329 | int dd = QPixmap::defaultDepth(); |
326 | int w = height(); | 330 | int w = height(); |
327 | int h = width(); | 331 | int h = width(); |
328 | 332 | ||
329 | return true; | 333 | return true; |
330 | } | 334 | } |
331 | 335 | ||
332 | 336 | ||
333 | 337 | ||
334 | void VideoWidget::keyReleaseEvent( QKeyEvent *e) | 338 | void VideoWidget::keyReleaseEvent( QKeyEvent *e) |
335 | { | 339 | { |
336 | switch ( e->key() ) { | 340 | switch ( e->key() ) { |
337 | ////////////////////////////// Zaurus keys | 341 | ////////////////////////////// Zaurus keys |
338 | case Key_Home: | 342 | case Key_Home: |
339 | break; | 343 | break; |
340 | case Key_F9: //activity | 344 | case Key_F9: //activity |
341 | break; | 345 | break; |
342 | case Key_F10: //contacts | 346 | case Key_F10: //contacts |
343 | // hide(); | 347 | // hide(); |
344 | break; | 348 | break; |
345 | case Key_F11: //menu | 349 | case Key_F11: //menu |
346 | break; | 350 | break; |
347 | case Key_F12: //home | 351 | case Key_F12: //home |
348 | break; | 352 | break; |
349 | case Key_F13: //mail | 353 | case Key_F13: //mail |
350 | break; | 354 | break; |
351 | case Key_Space: { | 355 | case Key_Space: { |
352 | if(mediaPlayerState->playing()) { | 356 | if(mediaPlayerState->playing()) { |
353 | mediaPlayerState->setPlaying(FALSE); | 357 | mediaPlayerState->setPlaying(FALSE); |
354 | } else { | 358 | } else { |
355 | mediaPlayerState->setPlaying(TRUE); | 359 | mediaPlayerState->setPlaying(TRUE); |
356 | } | 360 | } |
357 | } | 361 | } |
358 | break; | 362 | break; |
359 | case Key_Down: | 363 | case Key_Down: |
360 | // toggleButton(6); | 364 | // toggleButton(6); |
361 | // emit lessClicked(); | 365 | // emit lessClicked(); |
362 | // emit lessReleased(); | 366 | // emit lessReleased(); |
363 | // toggleButton(6); | 367 | // toggleButton(6); |
364 | break; | 368 | break; |
365 | case Key_Up: | 369 | case Key_Up: |
366 | // toggleButton(5); | 370 | // toggleButton(5); |
367 | // emit moreClicked(); | 371 | // emit moreClicked(); |
368 | // emit moreReleased(); | 372 | // emit moreReleased(); |
369 | // toggleButton(5); | 373 | // toggleButton(5); |
370 | break; | 374 | break; |
371 | case Key_Right: | 375 | case Key_Right: |
372 | mediaPlayerState->setNext(); | 376 | mediaPlayerState->setNext(); |
373 | break; | 377 | break; |
374 | case Key_Left: | 378 | case Key_Left: |
375 | mediaPlayerState->setPrev(); | 379 | mediaPlayerState->setPrev(); |
376 | break; | 380 | break; |
377 | case Key_Escape: | 381 | case Key_Escape: |
378 | break; | 382 | break; |
379 | 383 | ||
380 | }; | 384 | }; |
381 | } | 385 | } |
382 | XineVideoWidget* VideoWidget::vidWidget() { | 386 | XineVideoWidget* VideoWidget::vidWidget() { |
383 | return videoFrame; | 387 | return videoFrame; |
384 | } | 388 | } |
389 | |||
390 | |||
391 | void VideoWidget::setFullscreen ( bool b ) | ||
392 | { | ||
393 | setToggleButton( VideoFullscreen, b ); | ||
394 | } \ No newline at end of file | ||