summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opieplayer2/videowidget.cpp
Unidiff
Diffstat (limited to 'noncore/multimedia/opieplayer2/videowidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/videowidget.cpp38
1 files changed, 17 insertions, 21 deletions
diff --git a/noncore/multimedia/opieplayer2/videowidget.cpp b/noncore/multimedia/opieplayer2/videowidget.cpp
index 41dddb7..c0039b1 100644
--- a/noncore/multimedia/opieplayer2/videowidget.cpp
+++ b/noncore/multimedia/opieplayer2/videowidget.cpp
@@ -88,81 +88,77 @@ MediaWidget( mediaPlayerState, parent, name ), scaledWidth( 0 ), scaledHeight( 0
88 setCaption( tr("OpiePlayer - Video") ); 88 setCaption( tr("OpiePlayer - Video") );
89 89
90 videoFrame = new XineVideoWidget ( this, "Video frame" ); 90 videoFrame = new XineVideoWidget ( this, "Video frame" );
91 91
92 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & ))); 92 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & )));
93 connect ( videoFrame, SIGNAL( clicked () ), this, SLOT ( backToNormal() ) ); 93 connect ( videoFrame, SIGNAL( clicked () ), this, SLOT ( backToNormal() ) );
94 94
95 Config cfg("OpiePlayer"); 95 Config cfg("OpiePlayer");
96 cfg.setGroup("Options"); 96 cfg.setGroup("Options");
97 skin = cfg.readEntry("Skin","default"); 97 skin = cfg.readEntry("Skin","default");
98 98
99 QString skinPath = "opieplayer2/skins/" + skin; 99 QString skinPath = "opieplayer2/skins/" + skin;
100 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 100 pixBg = QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
101 imgUp = new QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) ); 101 imgUp = QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) );
102 imgDn = new QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) ); 102 imgDn = QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) );
103 103
104 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 ); 104 imgButtonMask = QImage( imgUp.width(), imgUp.height(), 8, 255 );
105 imgButtonMask->fill( 0 ); 105 imgButtonMask.fill( 0 );
106 106
107 for ( int i = 0; i < 7; i++ ) { 107 for ( int i = 0; i < 7; i++ ) {
108 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skinV_mask_" + skinV_mask_file_names[i] + ".png" ); 108 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skinV_mask_" + skinV_mask_file_names[i] + ".png" );
109 masks[i] = new QBitmap( filename ); 109 masks[i] = new QBitmap( filename );
110 110
111 if ( !masks[i]->isNull() ) { 111 if ( !masks[i]->isNull() ) {
112 QImage imgMask = masks[i]->convertToImage(); 112 QImage imgMask = masks[i]->convertToImage();
113 uchar **dest = imgButtonMask->jumpTable(); 113 uchar **dest = imgButtonMask.jumpTable();
114 for ( int y = 0; y < imgUp->height(); y++ ) { 114 for ( int y = 0; y < imgUp.height(); y++ ) {
115 uchar *line = dest[y]; 115 uchar *line = dest[y];
116 for ( int x = 0; x < imgUp->width(); x++ ) { 116 for ( int x = 0; x < imgUp.width(); x++ ) {
117 if ( !qRed( imgMask.pixel( x, y ) ) ) 117 if ( !qRed( imgMask.pixel( x, y ) ) )
118 line[x] = i + 1; 118 line[x] = i + 1;
119 } 119 }
120 } 120 }
121 } 121 }
122 } 122 }
123 123
124 for ( int i = 0; i < 7; i++ ) { 124 for ( int i = 0; i < 7; i++ ) {
125 buttonPixUp[i] = NULL; 125 buttonPixUp[i] = NULL;
126 buttonPixDown[i] = NULL; 126 buttonPixDown[i] = NULL;
127 } 127 }
128 128
129 setBackgroundPixmap( *pixBg ); 129 setBackgroundPixmap( pixBg );
130 130
131 slider = new QSlider( Qt::Horizontal, this ); 131 slider = new QSlider( Qt::Horizontal, this );
132 slider->setMinValue( 0 ); 132 slider->setMinValue( 0 );
133 slider->setMaxValue( 1 ); 133 slider->setMaxValue( 1 );
134 slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); 134 slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) );
135 //slider->setFocusPolicy( QWidget::NoFocus ); 135 //slider->setFocusPolicy( QWidget::NoFocus );
136 136
137 resizeEvent( NULL ); 137 resizeEvent( NULL );
138 138
139 setLength( mediaPlayerState.length() ); 139 setLength( mediaPlayerState.length() );
140 setPosition( mediaPlayerState.position() ); 140 setPosition( mediaPlayerState.position() );
141 setFullscreen( mediaPlayerState.isFullscreen() ); 141 setFullscreen( mediaPlayerState.isFullscreen() );
142 setPlaying( mediaPlayerState.isPlaying() ); 142 setPlaying( mediaPlayerState.isPlaying() );
143} 143}
144 144
145 145
146VideoWidget::~VideoWidget() { 146VideoWidget::~VideoWidget() {
147 147
148 for ( int i = 0; i < 7; i++ ) { 148 for ( int i = 0; i < 7; i++ ) {
149 delete buttonPixUp[i]; 149 delete buttonPixUp[i];
150 delete buttonPixDown[i]; 150 delete buttonPixDown[i];
151 } 151 }
152 152
153 delete pixBg;
154 delete imgUp;
155 delete imgDn;
156 delete imgButtonMask;
157 for ( int i = 0; i < 7; i++ ) { 153 for ( int i = 0; i < 7; i++ ) {
158 delete masks[i]; 154 delete masks[i];
159 } 155 }
160 156
161} 157}
162 158
163QPixmap *combineVImageWithBackground( QImage img, QPixmap bg, QPoint offset ) { 159QPixmap *combineVImageWithBackground( QImage img, QPixmap bg, QPoint offset ) {
164 QPixmap pix( img.width(), img.height() ); 160 QPixmap pix( img.width(), img.height() );
165 QPainter p( &pix ); 161 QPainter p( &pix );
166 p.drawTiledPixmap( pix.rect(), bg, offset ); 162 p.drawTiledPixmap( pix.rect(), bg, offset );
167 p.drawImage( 0, 0, img ); 163 p.drawImage( 0, 0, img );
168 return new QPixmap( pix ); 164 return new QPixmap( pix );
@@ -175,35 +171,35 @@ QPixmap *maskVPixToMask( QPixmap pix, QBitmap mask ) {
175} 171}
176 172
177void VideoWidget::resizeEvent( QResizeEvent * ) { 173void VideoWidget::resizeEvent( QResizeEvent * ) {
178 int h = height(); 174 int h = height();
179 int w = width(); 175 int w = width();
180 //int Vh = 160; 176 //int Vh = 160;
181 //int Vw = 220; 177 //int Vw = 220;
182 178
183 slider->setFixedWidth( w - 20 ); 179 slider->setFixedWidth( w - 20 );
184 slider->setGeometry( QRect( 15, h - 22, w - 90, 20 ) ); 180 slider->setGeometry( QRect( 15, h - 22, w - 90, 20 ) );
185 slider->setBackgroundOrigin( QWidget::ParentOrigin ); 181 slider->setBackgroundOrigin( QWidget::ParentOrigin );
186 slider->setFocusPolicy( QWidget::NoFocus ); 182 slider->setFocusPolicy( QWidget::NoFocus );
187 slider->setBackgroundPixmap( *pixBg ); 183 slider->setBackgroundPixmap( pixBg );
188 184
189 xoff = 0;// ( imgUp->width() ) / 2; 185 xoff = 0;// ( imgUp->width() ) / 2;
190 if(w>h) 186 if(w>h)
191 yoff = 0; 187 yoff = 0;
192 else 188 else
193 yoff = 185;//(( Vh - imgUp->height() ) / 2) - 10; 189 yoff = 185;//(( Vh - imgUp->height() ) / 2) - 10;
194 QPoint p( xoff, yoff ); 190 QPoint p( xoff, yoff );
195 191
196 QPixmap *pixUp = combineVImageWithBackground( *imgUp, *pixBg, p ); 192 QPixmap *pixUp = combineVImageWithBackground( imgUp, pixBg, p );
197 QPixmap *pixDn = combineVImageWithBackground( *imgDn, *pixBg, p ); 193 QPixmap *pixDn = combineVImageWithBackground( imgDn, pixBg, p );
198 194
199 for ( int i = 0; i < 7; i++ ) { 195 for ( int i = 0; i < 7; i++ ) {
200 if ( !masks[i]->isNull() ) { 196 if ( !masks[i]->isNull() ) {
201 delete buttonPixUp[i]; 197 delete buttonPixUp[i];
202 delete buttonPixDown[i]; 198 delete buttonPixDown[i];
203 buttonPixUp[i] = maskVPixToMask( *pixUp, *masks[i] ); 199 buttonPixUp[i] = maskVPixToMask( *pixUp, *masks[i] );
204 buttonPixDown[i] = maskVPixToMask( *pixDn, *masks[i] ); 200 buttonPixDown[i] = maskVPixToMask( *pixDn, *masks[i] );
205 } 201 }
206 } 202 }
207 203
208 delete pixUp; 204 delete pixUp;
209 delete pixDn; 205 delete pixDn;
@@ -282,27 +278,27 @@ void VideoWidget::paintButton( QPainter *p, int i ) {
282 } else { 278 } else {
283 p->drawPixmap( xoff, yoff, *buttonPixUp[i] ); 279 p->drawPixmap( xoff, yoff, *buttonPixUp[i] );
284 } 280 }
285} 281}
286 282
287void VideoWidget::mouseMoveEvent( QMouseEvent *event ) { 283void VideoWidget::mouseMoveEvent( QMouseEvent *event ) {
288 for ( int i = 0; i < numVButtons; i++ ) { 284 for ( int i = 0; i < numVButtons; i++ ) {
289 if ( event->state() == QMouseEvent::LeftButton ) { 285 if ( event->state() == QMouseEvent::LeftButton ) {
290 // The test to see if the mouse click is inside the button or not 286 // The test to see if the mouse click is inside the button or not
291 int x = event->pos().x() - xoff; 287 int x = event->pos().x() - xoff;
292 int y = event->pos().y() - yoff; 288 int y = event->pos().y() - yoff;
293 289
294 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width() 290 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask.width()
295 && y < imgButtonMask->height() 291 && y < imgButtonMask.height()
296 && imgButtonMask->pixelIndex( x, y ) == i + 1 ); 292 && imgButtonMask.pixelIndex( x, y ) == i + 1 );
297 293
298 if ( isOnButton && !videoButtons[i].isHeld ) { 294 if ( isOnButton && !videoButtons[i].isHeld ) {
299 videoButtons[i].isHeld = TRUE; 295 videoButtons[i].isHeld = TRUE;
300 toggleButton(i); 296 toggleButton(i);
301 297
302 switch (i) { 298 switch (i) {
303 case VideoVolUp: 299 case VideoVolUp:
304 emit moreClicked(); 300 emit moreClicked();
305 return; 301 return;
306 case VideoVolDown: 302 case VideoVolDown:
307 emit lessClicked(); 303 emit lessClicked();
308 return; 304 return;
@@ -377,25 +373,25 @@ void VideoWidget::makeVisible() {
377 resize( qApp->desktop()->size() ); 373 resize( qApp->desktop()->size() );
378 videoFrame-> setGeometry ( 0, 0, width ( ), height ( )); 374 videoFrame-> setGeometry ( 0, 0, width ( ), height ( ));
379 375
380 slider->hide(); 376 slider->hide();
381 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 377 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
382 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 378 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
383 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 379 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
384 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 380 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
385 381
386 } else { 382 } else {
387 showNormal(); 383 showNormal();
388 showMaximized(); 384 showMaximized();
389 setBackgroundPixmap( *pixBg ); 385 setBackgroundPixmap( pixBg );
390 QWidget *d = QApplication::desktop(); 386 QWidget *d = QApplication::desktop();
391 int w = d->width(); 387 int w = d->width();
392 int h = d->height(); 388 int h = d->height();
393 389
394 if(w>h) { 390 if(w>h) {
395 int newW=(w/2)-(246/2); //this will only work with 320x240 391 int newW=(w/2)-(246/2); //this will only work with 320x240
396 videoFrame->setGeometry( QRect( newW, 4, 240, 170 ) ); 392 videoFrame->setGeometry( QRect( newW, 4, 240, 170 ) );
397 } else { 393 } else {
398 videoFrame->setGeometry( QRect( 0, 30, 240, 170 ) ); 394 videoFrame->setGeometry( QRect( 0, 30, 240, 170 ) );
399 } 395 }
400 396
401 if ( !mediaPlayerState.isSeekable() ) { 397 if ( !mediaPlayerState.isSeekable() ) {
@@ -422,25 +418,25 @@ void VideoWidget::makeVisible() {
422void VideoWidget::paintEvent( QPaintEvent * pe) { 418void VideoWidget::paintEvent( QPaintEvent * pe) {
423 QPainter p( this ); 419 QPainter p( this );
424 420
425 if ( mediaPlayerState.isFullscreen() ) { 421 if ( mediaPlayerState.isFullscreen() ) {
426 // Clear the background 422 // Clear the background
427 p.setBrush( QBrush( Qt::black ) ); 423 p.setBrush( QBrush( Qt::black ) );
428 } else { 424 } else {
429 if ( !pe->erased() ) { 425 if ( !pe->erased() ) {
430 // Combine with background and double buffer 426 // Combine with background and double buffer
431 QPixmap pix( pe->rect().size() ); 427 QPixmap pix( pe->rect().size() );
432 QPainter p( &pix ); 428 QPainter p( &pix );
433 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 429 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
434 p.drawTiledPixmap( pe->rect(), *pixBg, pe->rect().topLeft() ); 430 p.drawTiledPixmap( pe->rect(), pixBg, pe->rect().topLeft() );
435 for ( int i = 0; i < numVButtons; i++ ) { 431 for ( int i = 0; i < numVButtons; i++ ) {
436 paintButton( &p, i ); 432 paintButton( &p, i );
437 } 433 }
438 QPainter p2( this ); 434 QPainter p2( this );
439 p2.drawPixmap( pe->rect().topLeft(), pix ); 435 p2.drawPixmap( pe->rect().topLeft(), pix );
440 } else { 436 } else {
441 QPainter p( this ); 437 QPainter p( this );
442 for ( int i = 0; i < numVButtons; i++ ) 438 for ( int i = 0; i < numVButtons; i++ )
443 paintButton( &p, i ); 439 paintButton( &p, i );
444 } 440 }
445 //slider->repaint( TRUE ); 441 //slider->repaint( TRUE );
446 } 442 }