summaryrefslogtreecommitdiff
authorsimon <simon>2002-12-09 15:15:23 (UTC)
committer simon <simon>2002-12-09 15:15:23 (UTC)
commit3f37a852175ace7ee69b626f48eaea19d736b6ed (patch) (unidiff)
tree5b35af63926143660dc634d27b9b230cc13aca7c
parent80902b6ade54252e05cf948040a11b2e975f6759 (diff)
downloadopie-3f37a852175ace7ee69b626f48eaea19d736b6ed.zip
opie-3f37a852175ace7ee69b626f48eaea19d736b6ed.tar.gz
opie-3f37a852175ace7ee69b626f48eaea19d736b6ed.tar.bz2
- pixBg is now backgroundPixmap and shared in the base class
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/audiowidget.cpp12
-rw-r--r--noncore/multimedia/opieplayer2/audiowidget.h1
-rw-r--r--noncore/multimedia/opieplayer2/mediawidget.h2
-rw-r--r--noncore/multimedia/opieplayer2/videowidget.cpp14
-rw-r--r--noncore/multimedia/opieplayer2/videowidget.h1
5 files changed, 15 insertions, 15 deletions
diff --git a/noncore/multimedia/opieplayer2/audiowidget.cpp b/noncore/multimedia/opieplayer2/audiowidget.cpp
index 5cc2814..553c56b 100644
--- a/noncore/multimedia/opieplayer2/audiowidget.cpp
+++ b/noncore/multimedia/opieplayer2/audiowidget.cpp
@@ -1,469 +1,469 @@
1/* 1/*
2                This file is part of the Opie Project 2                This file is part of the Opie Project
3 3
4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> 4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com> 5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU General Public 12:`=1 )Y*s>-.--   : the terms of the GNU General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#include <qpe/qpeapplication.h> 34#include <qpe/qpeapplication.h>
35#include <qpe/resource.h> 35#include <qpe/resource.h>
36#include <qpe/config.h> 36#include <qpe/config.h>
37#include <opie/oticker.h> 37#include <opie/oticker.h>
38 38
39#include <qwidget.h> 39#include <qwidget.h>
40#include <qpixmap.h> 40#include <qpixmap.h>
41#include <qbutton.h> 41#include <qbutton.h>
42#include <qpainter.h> 42#include <qpainter.h>
43#include <qframe.h> 43#include <qframe.h>
44#include <qlayout.h> 44#include <qlayout.h>
45#include <qdir.h> 45#include <qdir.h>
46#include <stdlib.h> 46#include <stdlib.h>
47#include <stdio.h> 47#include <stdio.h>
48 48
49#include "audiowidget.h" 49#include "audiowidget.h"
50#include "mediaplayerstate.h" 50#include "mediaplayerstate.h"
51#include "playlistwidget.h" 51#include "playlistwidget.h"
52 52
53namespace 53namespace
54{ 54{
55 55
56const int xo = -2; // movable x offset 56const int xo = -2; // movable x offset
57const int yo = 22; // movable y offset 57const int yo = 22; // movable y offset
58 58
59const MediaWidget::SkinButtonInfo skinInfo[] = 59const MediaWidget::SkinButtonInfo skinInfo[] =
60{ 60{
61 { MediaWidget::Play, "play", MediaWidget::ToggleButton }, 61 { MediaWidget::Play, "play", MediaWidget::ToggleButton },
62 { MediaWidget::Stop, "stop", MediaWidget::NormalButton }, 62 { MediaWidget::Stop, "stop", MediaWidget::NormalButton },
63 { MediaWidget::Next, "next", MediaWidget::NormalButton }, 63 { MediaWidget::Next, "next", MediaWidget::NormalButton },
64 { MediaWidget::Previous, "prev", MediaWidget::NormalButton }, 64 { MediaWidget::Previous, "prev", MediaWidget::NormalButton },
65 { MediaWidget::VolumeUp, "up", MediaWidget::NormalButton }, 65 { MediaWidget::VolumeUp, "up", MediaWidget::NormalButton },
66 { MediaWidget::VolumeDown, "down", MediaWidget::NormalButton }, 66 { MediaWidget::VolumeDown, "down", MediaWidget::NormalButton },
67 { MediaWidget::Loop, "loop", MediaWidget::ToggleButton }, 67 { MediaWidget::Loop, "loop", MediaWidget::ToggleButton },
68 { MediaWidget::PlayList, "playlist", MediaWidget::NormalButton }, 68 { MediaWidget::PlayList, "playlist", MediaWidget::NormalButton },
69 { MediaWidget::Forward, "forward", MediaWidget::NormalButton }, 69 { MediaWidget::Forward, "forward", MediaWidget::NormalButton },
70 { MediaWidget::Back, "back", MediaWidget::NormalButton } 70 { MediaWidget::Back, "back", MediaWidget::NormalButton }
71}; 71};
72 72
73const uint buttonCount = sizeof( skinInfo ) / sizeof( skinInfo[ 0 ] ); 73const uint buttonCount = sizeof( skinInfo ) / sizeof( skinInfo[ 0 ] );
74 74
75void changeTextColor( QWidget * w) { 75void changeTextColor( QWidget * w) {
76 QPalette p = w->palette(); 76 QPalette p = w->palette();
77 p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) ); 77 p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) );
78 p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) ); 78 p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) );
79 w->setPalette( p ); 79 w->setPalette( p );
80} 80}
81 81
82} 82}
83 83
84AudioWidget::AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent, const char* name) : 84AudioWidget::AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent, const char* name) :
85 85
86 MediaWidget( playList, mediaPlayerState, parent, name ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ), 86 MediaWidget( playList, mediaPlayerState, parent, name ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ),
87 audioSliderBeingMoved( false ) 87 audioSliderBeingMoved( false )
88{ 88{
89 setCaption( tr("OpiePlayer") ); 89 setCaption( tr("OpiePlayer") );
90 90
91 Config cfg("OpiePlayer"); 91 Config cfg("OpiePlayer");
92 cfg.setGroup("Options"); 92 cfg.setGroup("Options");
93 skin = cfg.readEntry("Skin","default"); 93 skin = cfg.readEntry("Skin","default");
94 //skin = "scaleTest"; 94 //skin = "scaleTest";
95 // color of background, frame, degree of transparency 95 // color of background, frame, degree of transparency
96 96
97 QString skinPath = "opieplayer2/skins/" + skin; 97 QString skinPath = "opieplayer2/skins/" + skin;
98 pixBg = QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 98 backgroundPixmap = QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
99 imgUp = QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) ); 99 imgUp = QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) );
100 imgDn = QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) ); 100 imgDn = QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) );
101 101
102 buttonMask = QImage( imgUp.width(), imgUp.height(), 8, 255 ); 102 buttonMask = QImage( imgUp.width(), imgUp.height(), 8, 255 );
103 buttonMask.fill( 0 ); 103 buttonMask.fill( 0 );
104 104
105 for ( uint i = 0; i < buttonCount; i++ ) { 105 for ( uint i = 0; i < buttonCount; i++ ) {
106 Button button; 106 Button button;
107 button.type = skinInfo[ i ].type; 107 button.type = skinInfo[ i ].type;
108 108
109 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skin_mask_" + skinInfo[i].fileName + ".png" ); 109 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skin_mask_" + skinInfo[i].fileName + ".png" );
110 button.mask =QBitmap( filename ); 110 button.mask =QBitmap( filename );
111 111
112 if ( !button.mask.isNull() ) { 112 if ( !button.mask.isNull() ) {
113 QImage imgMask = button.mask.convertToImage(); 113 QImage imgMask = button.mask.convertToImage();
114 uchar **dest = buttonMask.jumpTable(); 114 uchar **dest = buttonMask.jumpTable();
115 for ( int y = 0; y < imgUp.height(); y++ ) { 115 for ( int y = 0; y < imgUp.height(); y++ ) {
116 uchar *line = dest[y]; 116 uchar *line = dest[y];
117 for ( int x = 0; x < imgUp.width(); x++ ) 117 for ( int x = 0; x < imgUp.width(); x++ )
118 if ( !qRed( imgMask.pixel( x, y ) ) ) 118 if ( !qRed( imgMask.pixel( x, y ) ) )
119 line[x] = i + 1; 119 line[x] = i + 1;
120 } 120 }
121 } 121 }
122 122
123 buttons.insert( i, button ); 123 buttons.insert( i, button );
124 } 124 }
125 125
126 setBackgroundPixmap( pixBg ); 126 setBackgroundPixmap( backgroundPixmap );
127 127
128 songInfo.setFocusPolicy( QWidget::NoFocus ); 128 songInfo.setFocusPolicy( QWidget::NoFocus );
129// changeTextColor( &songInfo ); 129// changeTextColor( &songInfo );
130// songInfo.setBackgroundColor( QColor( 167, 212, 167 )); 130// songInfo.setBackgroundColor( QColor( 167, 212, 167 ));
131// songInfo.setFrameStyle( QFrame::NoFrame); 131// songInfo.setFrameStyle( QFrame::NoFrame);
132 songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); 132 songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
133// songInfo.setForegroundColor(Qt::white); 133// songInfo.setForegroundColor(Qt::white);
134 134
135 slider.setFixedHeight( 20 ); 135 slider.setFixedHeight( 20 );
136 slider.setMinValue( 0 ); 136 slider.setMinValue( 0 );
137 slider.setMaxValue( 1 ); 137 slider.setMaxValue( 1 );
138 slider.setFocusPolicy( QWidget::NoFocus ); 138 slider.setFocusPolicy( QWidget::NoFocus );
139 slider.setBackgroundPixmap( pixBg ); 139 slider.setBackgroundPixmap( backgroundPixmap );
140 140
141// Config cofg("qpe"); 141// Config cofg("qpe");
142// cofg.setGroup("Appearance"); 142// cofg.setGroup("Appearance");
143// QColor backgroundcolor = QColor( cofg.readEntry( "Background", "#E5E1D5" ) ); 143// QColor backgroundcolor = QColor( cofg.readEntry( "Background", "#E5E1D5" ) );
144 144
145 time.setFocusPolicy( QWidget::NoFocus ); 145 time.setFocusPolicy( QWidget::NoFocus );
146 time.setAlignment( Qt::AlignCenter ); 146 time.setAlignment( Qt::AlignCenter );
147 147
148// time.setFrame(FALSE); 148// time.setFrame(FALSE);
149// changeTextColor( &time ); 149// changeTextColor( &time );
150 150
151 resizeEvent( NULL ); 151 resizeEvent( NULL );
152 152
153 connect( &mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) ); 153 connect( &mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) );
154 connect( &mediaPlayerState, SIGNAL( isSeekableToggled( bool ) ), this, SLOT( setSeekable( bool ) ) ); 154 connect( &mediaPlayerState, SIGNAL( isSeekableToggled( bool ) ), this, SLOT( setSeekable( bool ) ) );
155 155
156 connect( this, SIGNAL( forwardClicked() ), this, SLOT( skipFor() ) ); 156 connect( this, SIGNAL( forwardClicked() ), this, SLOT( skipFor() ) );
157 connect( this, SIGNAL( backClicked() ), this, SLOT( skipBack() ) ); 157 connect( this, SIGNAL( backClicked() ), this, SLOT( skipBack() ) );
158 connect( this, SIGNAL( forwardReleased() ), this, SLOT( stopSkip() ) ); 158 connect( this, SIGNAL( forwardReleased() ), this, SLOT( stopSkip() ) );
159 connect( this, SIGNAL( backReleased() ), this, SLOT( stopSkip() ) ); 159 connect( this, SIGNAL( backReleased() ), this, SLOT( stopSkip() ) );
160 160
161 // Intialise state 161 // Intialise state
162 setLength( mediaPlayerState.length() ); 162 setLength( mediaPlayerState.length() );
163 setPosition( mediaPlayerState.position() ); 163 setPosition( mediaPlayerState.position() );
164 setLooping( mediaPlayerState.isFullscreen() ); 164 setLooping( mediaPlayerState.isFullscreen() );
165 // setPaused( mediaPlayerState->paused() ); 165 // setPaused( mediaPlayerState->paused() );
166 setPlaying( mediaPlayerState.isPlaying() ); 166 setPlaying( mediaPlayerState.isPlaying() );
167 167
168} 168}
169 169
170AudioWidget::~AudioWidget() { 170AudioWidget::~AudioWidget() {
171 171
172// mediaPlayerState->setPlaying(false); 172// mediaPlayerState->setPlaying(false);
173} 173}
174 174
175namespace { 175namespace {
176 176
177QPixmap combineImageWithBackground( QImage img, QPixmap bg, QPoint offset ) { 177QPixmap combineImageWithBackground( QImage img, QPixmap bg, QPoint offset ) {
178 QPixmap pix( img.width(), img.height() ); 178 QPixmap pix( img.width(), img.height() );
179 QPainter p( &pix ); 179 QPainter p( &pix );
180 p.drawTiledPixmap( pix.rect(), bg, offset ); 180 p.drawTiledPixmap( pix.rect(), bg, offset );
181 p.drawImage( 0, 0, img ); 181 p.drawImage( 0, 0, img );
182 return pix; 182 return pix;
183} 183}
184 184
185 185
186QPixmap maskPixToMask( QPixmap pix, QBitmap mask ) { 186QPixmap maskPixToMask( QPixmap pix, QBitmap mask ) {
187 QPixmap pixmap( pix ); 187 QPixmap pixmap( pix );
188 pixmap.setMask( mask ); 188 pixmap.setMask( mask );
189 return pixmap; 189 return pixmap;
190} 190}
191 191
192}; 192};
193 193
194void AudioWidget::resizeEvent( QResizeEvent * ) { 194void AudioWidget::resizeEvent( QResizeEvent * ) {
195 int h = height(); 195 int h = height();
196 int w = width(); 196 int w = width();
197 197
198 songInfo.setGeometry( QRect( 2, 2, w - 4, 20 ) ); 198 songInfo.setGeometry( QRect( 2, 2, w - 4, 20 ) );
199 slider.setFixedWidth( w - 110 ); 199 slider.setFixedWidth( w - 110 );
200 slider.setGeometry( QRect( 15, h - 22, w - 90, 20 ) ); 200 slider.setGeometry( QRect( 15, h - 22, w - 90, 20 ) );
201 slider.setBackgroundOrigin( QWidget::ParentOrigin ); 201 slider.setBackgroundOrigin( QWidget::ParentOrigin );
202 time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) ); 202 time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) );
203 203
204 upperLeftOfButtonMask.rx() = ( w - imgUp.width() ) / 2; 204 upperLeftOfButtonMask.rx() = ( w - imgUp.width() ) / 2;
205 upperLeftOfButtonMask.ry() = (( h - imgUp.height() ) / 2) - 10; 205 upperLeftOfButtonMask.ry() = (( h - imgUp.height() ) / 2) - 10;
206 QPoint p = upperLeftOfButtonMask; 206 QPoint p = upperLeftOfButtonMask;
207 207
208 QPixmap pixUp = combineImageWithBackground( imgUp, pixBg, p ); 208 QPixmap pixUp = combineImageWithBackground( imgUp, backgroundPixmap, p );
209 QPixmap pixDn = combineImageWithBackground( imgDn, pixBg, p ); 209 QPixmap pixDn = combineImageWithBackground( imgDn, backgroundPixmap, p );
210 210
211 for ( uint i = 0; i < buttons.count(); i++ ) { 211 for ( uint i = 0; i < buttons.count(); i++ ) {
212 if ( !buttons[i].mask.isNull() ) { 212 if ( !buttons[i].mask.isNull() ) {
213 buttons[i].pixUp = maskPixToMask( pixUp, buttons[i].mask ); 213 buttons[i].pixUp = maskPixToMask( pixUp, buttons[i].mask );
214 buttons[i].pixDown = maskPixToMask( pixDn, buttons[i].mask ); 214 buttons[i].pixDown = maskPixToMask( pixDn, buttons[i].mask );
215 } 215 }
216 } 216 }
217} 217}
218 218
219void AudioWidget::sliderPressed() { 219void AudioWidget::sliderPressed() {
220 audioSliderBeingMoved = TRUE; 220 audioSliderBeingMoved = TRUE;
221} 221}
222 222
223 223
224void AudioWidget::sliderReleased() { 224void AudioWidget::sliderReleased() {
225 audioSliderBeingMoved = FALSE; 225 audioSliderBeingMoved = FALSE;
226 if ( slider.width() == 0 ) 226 if ( slider.width() == 0 )
227 return; 227 return;
228 long val = long((double)slider.value() * mediaPlayerState.length() / slider.width()); 228 long val = long((double)slider.value() * mediaPlayerState.length() / slider.width());
229 mediaPlayerState.setPosition( val ); 229 mediaPlayerState.setPosition( val );
230} 230}
231 231
232void AudioWidget::setPosition( long i ) { 232void AudioWidget::setPosition( long i ) {
233 // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i); 233 // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i);
234 updateSlider( i, mediaPlayerState.length() ); 234 updateSlider( i, mediaPlayerState.length() );
235} 235}
236 236
237 237
238void AudioWidget::setLength( long max ) { 238void AudioWidget::setLength( long max ) {
239 updateSlider( mediaPlayerState.position(), max ); 239 updateSlider( mediaPlayerState.position(), max );
240} 240}
241 241
242 242
243void AudioWidget::setDisplayType( MediaPlayerState::DisplayType mediaType ) { 243void AudioWidget::setDisplayType( MediaPlayerState::DisplayType mediaType ) {
244 if ( mediaType == MediaPlayerState::Audio ) { 244 if ( mediaType == MediaPlayerState::Audio ) {
245 // startTimer( 150 ); 245 // startTimer( 150 );
246 showMaximized(); 246 showMaximized();
247 return; 247 return;
248 } 248 }
249 249
250 killTimers(); 250 killTimers();
251 hide(); 251 hide();
252} 252}
253 253
254 254
255void AudioWidget::setSeekable( bool isSeekable ) { 255void AudioWidget::setSeekable( bool isSeekable ) {
256 256
257 if ( !isSeekable ) { 257 if ( !isSeekable ) {
258 qDebug("<<<<<<<<<<<<<<file is STREAMING>>>>>>>>>>>>>>>>>>>"); 258 qDebug("<<<<<<<<<<<<<<file is STREAMING>>>>>>>>>>>>>>>>>>>");
259 if( !slider.isHidden()) { 259 if( !slider.isHidden()) {
260 slider.hide(); 260 slider.hide();
261 } 261 }
262 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 262 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
263 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 263 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
264 disconnect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 264 disconnect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
265 disconnect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 265 disconnect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
266 } else { 266 } else {
267 // this stops the slider from being moved, thus 267 // this stops the slider from being moved, thus
268 // does not stop stream when it reaches the end 268 // does not stop stream when it reaches the end
269 slider.show(); 269 slider.show();
270 qDebug( " CONNECT SET POSTION " ); 270 qDebug( " CONNECT SET POSTION " );
271 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 271 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
272 connect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 272 connect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
273 connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 273 connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
274 connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 274 connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
275 } 275 }
276} 276}
277 277
278 278
279static QString timeAsString( long length ) { 279static QString timeAsString( long length ) {
280 int minutes = length / 60; 280 int minutes = length / 60;
281 int seconds = length % 60; 281 int seconds = length % 60;
282 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 ); 282 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 );
283} 283}
284 284
285void AudioWidget::updateSlider( long i, long max ) { 285void AudioWidget::updateSlider( long i, long max ) {
286 286
287 time.setText( timeAsString( i ) + " / " + timeAsString( max ) ); 287 time.setText( timeAsString( i ) + " / " + timeAsString( max ) );
288// qDebug( timeAsString( i ) + " / " + timeAsString( max ) ) ; 288// qDebug( timeAsString( i ) + " / " + timeAsString( max ) ) ;
289 289
290 if ( max == 0 ) { 290 if ( max == 0 ) {
291 return; 291 return;
292 } 292 }
293 // Will flicker too much if we don't do this 293 // Will flicker too much if we don't do this
294 // Scale to something reasonable 294 // Scale to something reasonable
295 int width = slider.width(); 295 int width = slider.width();
296 int val = int((double)i * width / max); 296 int val = int((double)i * width / max);
297 if ( !audioSliderBeingMoved ) { 297 if ( !audioSliderBeingMoved ) {
298 if ( slider.value() != val ) { 298 if ( slider.value() != val ) {
299 slider.setValue( val ); 299 slider.setValue( val );
300 } 300 }
301 301
302 if ( slider.maxValue() != width ) { 302 if ( slider.maxValue() != width ) {
303 slider.setMaxValue( width ); 303 slider.setMaxValue( width );
304 } 304 }
305 } 305 }
306} 306}
307 307
308 308
309void AudioWidget::setToggleButton( int i, bool down ) { 309void AudioWidget::setToggleButton( int i, bool down ) {
310 qDebug("setToggleButton %d", i); 310 qDebug("setToggleButton %d", i);
311 if ( down != buttons[i].isDown ) { 311 if ( down != buttons[i].isDown ) {
312 toggleButton( i ); 312 toggleButton( i );
313 } 313 }
314} 314}
315 315
316void AudioWidget::skipFor() { 316void AudioWidget::skipFor() {
317 skipDirection = +1; 317 skipDirection = +1;
318 startTimer( 50 ); 318 startTimer( 50 );
319 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 ); 319 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 );
320} 320}
321 321
322void AudioWidget::skipBack() { 322void AudioWidget::skipBack() {
323 skipDirection = -1; 323 skipDirection = -1;
324 startTimer( 50 ); 324 startTimer( 50 );
325 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 ); 325 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 );
326} 326}
327 327
328 328
329 329
330void AudioWidget::stopSkip() { 330void AudioWidget::stopSkip() {
331 killTimers(); 331 killTimers();
332} 332}
333 333
334 334
335void AudioWidget::timerEvent( QTimerEvent * ) { 335void AudioWidget::timerEvent( QTimerEvent * ) {
336 if ( skipDirection == +1 ) { 336 if ( skipDirection == +1 ) {
337 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 ); 337 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 );
338 } else if ( skipDirection == -1 ) { 338 } else if ( skipDirection == -1 ) {
339 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 ); 339 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 );
340 } 340 }
341} 341}
342 342
343 343
344void AudioWidget::mouseMoveEvent( QMouseEvent *event ) { 344void AudioWidget::mouseMoveEvent( QMouseEvent *event ) {
345 for ( unsigned int i = 0; i < buttons.count(); i++ ) { 345 for ( unsigned int i = 0; i < buttons.count(); i++ ) {
346 if ( event->state() == QMouseEvent::LeftButton ) { 346 if ( event->state() == QMouseEvent::LeftButton ) {
347 // The test to see if the mouse click is inside the button or not 347 // The test to see if the mouse click is inside the button or not
348 bool isOnButton = isOverButton( event->pos() - upperLeftOfButtonMask, i ); 348 bool isOnButton = isOverButton( event->pos() - upperLeftOfButtonMask, i );
349 349
350 if ( isOnButton && !buttons[i].isHeld ) { 350 if ( isOnButton && !buttons[i].isHeld ) {
351 buttons[i].isHeld = TRUE; 351 buttons[i].isHeld = TRUE;
352 toggleButton(i); 352 toggleButton(i);
353 switch (i) { 353 switch (i) {
354 case VolumeUp: 354 case VolumeUp:
355 emit moreClicked(); 355 emit moreClicked();
356 return; 356 return;
357 case VolumeDown: 357 case VolumeDown:
358 emit lessClicked(); 358 emit lessClicked();
359 return; 359 return;
360 case Forward: 360 case Forward:
361 emit forwardClicked(); 361 emit forwardClicked();
362 return; 362 return;
363 case Back: 363 case Back:
364 emit backClicked(); 364 emit backClicked();
365 return; 365 return;
366 } 366 }
367 } else if ( !isOnButton && buttons[i].isHeld ) { 367 } else if ( !isOnButton && buttons[i].isHeld ) {
368 buttons[i].isHeld = FALSE; 368 buttons[i].isHeld = FALSE;
369 toggleButton(i); 369 toggleButton(i);
370 } 370 }
371 } else { 371 } else {
372 if ( buttons[i].isHeld ) { 372 if ( buttons[i].isHeld ) {
373 buttons[i].isHeld = FALSE; 373 buttons[i].isHeld = FALSE;
374 if ( buttons[i].type != ToggleButton ) { 374 if ( buttons[i].type != ToggleButton ) {
375 setToggleButton( i, FALSE ); 375 setToggleButton( i, FALSE );
376 } 376 }
377 qDebug("mouseEvent %d", i); 377 qDebug("mouseEvent %d", i);
378 handleCommand( static_cast<Command>( i ), buttons[ i ].isDown ); 378 handleCommand( static_cast<Command>( i ), buttons[ i ].isDown );
379 } 379 }
380 } 380 }
381 } 381 }
382} 382}
383 383
384 384
385void AudioWidget::mousePressEvent( QMouseEvent *event ) { 385void AudioWidget::mousePressEvent( QMouseEvent *event ) {
386 mouseMoveEvent( event ); 386 mouseMoveEvent( event );
387} 387}
388 388
389 389
390void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) { 390void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) {
391 mouseMoveEvent( event ); 391 mouseMoveEvent( event );
392} 392}
393 393
394 394
395void AudioWidget::showEvent( QShowEvent* ) { 395void AudioWidget::showEvent( QShowEvent* ) {
396 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 ); 396 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 );
397 mouseMoveEvent( &event ); 397 mouseMoveEvent( &event );
398} 398}
399 399
400 400
401void AudioWidget::paintEvent( QPaintEvent * pe ) { 401void AudioWidget::paintEvent( QPaintEvent * pe ) {
402 if ( !pe->erased() ) { 402 if ( !pe->erased() ) {
403 // Combine with background and double buffer 403 // Combine with background and double buffer
404 QPixmap pix( pe->rect().size() ); 404 QPixmap pix( pe->rect().size() );
405 QPainter p( &pix ); 405 QPainter p( &pix );
406 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 406 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
407 p.drawTiledPixmap( pe->rect(), pixBg, pe->rect().topLeft() ); 407 p.drawTiledPixmap( pe->rect(), backgroundPixmap, pe->rect().topLeft() );
408 for ( unsigned int i = 0; i < buttons.count(); i++ ) 408 for ( unsigned int i = 0; i < buttons.count(); i++ )
409 paintButton( p, buttons[ i ] ); 409 paintButton( p, buttons[ i ] );
410 QPainter p2( this ); 410 QPainter p2( this );
411 p2.drawPixmap( pe->rect().topLeft(), pix ); 411 p2.drawPixmap( pe->rect().topLeft(), pix );
412 } else { 412 } else {
413 QPainter p( this ); 413 QPainter p( this );
414 for ( unsigned int i = 0; i < buttons.count(); i++ ) 414 for ( unsigned int i = 0; i < buttons.count(); i++ )
415 paintButton( p, buttons[ i ] ); 415 paintButton( p, buttons[ i ] );
416 } 416 }
417} 417}
418 418
419void AudioWidget::keyReleaseEvent( QKeyEvent *e) { 419void AudioWidget::keyReleaseEvent( QKeyEvent *e) {
420 switch ( e->key() ) { 420 switch ( e->key() ) {
421 ////////////////////////////// Zaurus keys 421 ////////////////////////////// Zaurus keys
422 case Key_Home: 422 case Key_Home:
423 break; 423 break;
424 case Key_F9: //activity 424 case Key_F9: //activity
425 hide(); 425 hide();
426 // qDebug("Audio F9"); 426 // qDebug("Audio F9");
427 break; 427 break;
428 case Key_F10: //contacts 428 case Key_F10: //contacts
429 break; 429 break;
430 case Key_F11: //menu 430 case Key_F11: //menu
431 mediaPlayerState.toggleBlank(); 431 mediaPlayerState.toggleBlank();
432 break; 432 break;
433 case Key_F12: //home 433 case Key_F12: //home
434 break; 434 break;
435 case Key_F13: //mail 435 case Key_F13: //mail
436 mediaPlayerState.toggleBlank(); 436 mediaPlayerState.toggleBlank();
437 break; 437 break;
438 case Key_Space: { 438 case Key_Space: {
439 mediaPlayerState.togglePaused(); 439 mediaPlayerState.togglePaused();
440 } 440 }
441 break; 441 break;
442 case Key_Down: 442 case Key_Down:
443 // toggleButton(6); 443 // toggleButton(6);
444 emit lessClicked(); 444 emit lessClicked();
445 emit lessReleased(); 445 emit lessReleased();
446 // toggleButton(6); 446 // toggleButton(6);
447 break; 447 break;
448 case Key_Up: 448 case Key_Up:
449 // toggleButton(5); 449 // toggleButton(5);
450 emit moreClicked(); 450 emit moreClicked();
451 emit moreReleased(); 451 emit moreReleased();
452 // toggleButton(5); 452 // toggleButton(5);
453 break; 453 break;
454 case Key_Right: 454 case Key_Right:
455 // toggleButton(3); 455 // toggleButton(3);
456 mediaPlayerState.setNext(); 456 mediaPlayerState.setNext();
457 // toggleButton(3); 457 // toggleButton(3);
458 break; 458 break;
459 case Key_Left: 459 case Key_Left:
460 // toggleButton(4); 460 // toggleButton(4);
461 mediaPlayerState.setPrev(); 461 mediaPlayerState.setPrev();
462 // toggleButton(4); 462 // toggleButton(4);
463 break; 463 break;
464 case Key_Escape: { 464 case Key_Escape: {
465 } 465 }
466 break; 466 break;
467 467
468 }; 468 };
469} 469}
diff --git a/noncore/multimedia/opieplayer2/audiowidget.h b/noncore/multimedia/opieplayer2/audiowidget.h
index 7a775cd..69837cd 100644
--- a/noncore/multimedia/opieplayer2/audiowidget.h
+++ b/noncore/multimedia/opieplayer2/audiowidget.h
@@ -1,110 +1,109 @@
1/* 1/*
2                This file is part of the Opie Project 2                This file is part of the Opie Project
3 3
4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> 4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com> 5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU General Public 12:`=1 )Y*s>-.--   : the terms of the GNU General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#ifndef AUDIO_WIDGET_H 34#ifndef AUDIO_WIDGET_H
35#define AUDIO_WIDGET_H 35#define AUDIO_WIDGET_H
36 36
37#include <qpainter.h> 37#include <qpainter.h>
38#include <qdrawutil.h> 38#include <qdrawutil.h>
39#include <qpixmap.h> 39#include <qpixmap.h>
40#include <qstring.h> 40#include <qstring.h>
41#include <qslider.h> 41#include <qslider.h>
42#include <qframe.h> 42#include <qframe.h>
43#include <qlineedit.h> 43#include <qlineedit.h>
44#include <qimage.h> 44#include <qimage.h>
45 45
46#include <opie/oticker.h> 46#include <opie/oticker.h>
47 47
48#include "mediawidget.h" 48#include "mediawidget.h"
49 49
50class QPixmap; 50class QPixmap;
51 51
52class AudioWidget : public MediaWidget { 52class AudioWidget : public MediaWidget {
53 Q_OBJECT 53 Q_OBJECT
54public: 54public:
55 AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent=0, const char* name=0 ); 55 AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent=0, const char* name=0 );
56 ~AudioWidget(); 56 ~AudioWidget();
57 void setTickerText( const QString &text ) { songInfo.setText( text ); } 57 void setTickerText( const QString &text ) { songInfo.setText( text ); }
58public slots: 58public slots:
59 void updateSlider( long, long ); 59 void updateSlider( long, long );
60 void sliderPressed( ); 60 void sliderPressed( );
61 void sliderReleased( ); 61 void sliderReleased( );
62 void setLooping( bool b) { setToggleButton( Loop, b ); } 62 void setLooping( bool b) { setToggleButton( Loop, b ); }
63 void setPosition( long ); 63 void setPosition( long );
64 void setSeekable( bool ); 64 void setSeekable( bool );
65 65
66public: 66public:
67 virtual void setLength( long ); 67 virtual void setLength( long );
68 virtual void setPlaying( bool b) { setToggleButton( Play, b ); } 68 virtual void setPlaying( bool b) { setToggleButton( Play, b ); }
69 virtual void setDisplayType( MediaPlayerState::DisplayType displayType ); 69 virtual void setDisplayType( MediaPlayerState::DisplayType displayType );
70 70
71signals: 71signals:
72 void moreClicked(); 72 void moreClicked();
73 void lessClicked(); 73 void lessClicked();
74 void forwardClicked(); 74 void forwardClicked();
75 void backClicked(); 75 void backClicked();
76 void sliderMoved(long); 76 void sliderMoved(long);
77 77
78protected: 78protected:
79 void doBlank(); 79 void doBlank();
80 void doUnblank(); 80 void doUnblank();
81 void paintEvent( QPaintEvent *pe ); 81 void paintEvent( QPaintEvent *pe );
82 void showEvent( QShowEvent *se ); 82 void showEvent( QShowEvent *se );
83 void resizeEvent( QResizeEvent *re ); 83 void resizeEvent( QResizeEvent *re );
84 void mouseMoveEvent( QMouseEvent *event ); 84 void mouseMoveEvent( QMouseEvent *event );
85 void mousePressEvent( QMouseEvent *event ); 85 void mousePressEvent( QMouseEvent *event );
86 void mouseReleaseEvent( QMouseEvent *event ); 86 void mouseReleaseEvent( QMouseEvent *event );
87 void timerEvent( QTimerEvent *event ); 87 void timerEvent( QTimerEvent *event );
88 void keyReleaseEvent( QKeyEvent *e); 88 void keyReleaseEvent( QKeyEvent *e);
89private slots: 89private slots:
90 void skipFor(); 90 void skipFor();
91 void skipBack(); 91 void skipBack();
92 void stopSkip(); 92 void stopSkip();
93private: 93private:
94 void setToggleButton( int, bool ); 94 void setToggleButton( int, bool );
95 int skipDirection; 95 int skipDirection;
96 QString skin; 96 QString skin;
97 QPixmap pixBg;
98 QImage imgUp; 97 QImage imgUp;
99 QImage imgDn; 98 QImage imgDn;
100 99
101 OTicker songInfo; 100 OTicker songInfo;
102 QSlider slider; 101 QSlider slider;
103 QLineEdit time; 102 QLineEdit time;
104 bool isStreaming : 1; 103 bool isStreaming : 1;
105 bool audioSliderBeingMoved : 1; 104 bool audioSliderBeingMoved : 1;
106}; 105};
107 106
108 107
109#endif // AUDIO_WIDGET_H 108#endif // AUDIO_WIDGET_H
110 109
diff --git a/noncore/multimedia/opieplayer2/mediawidget.h b/noncore/multimedia/opieplayer2/mediawidget.h
index 163f449..211e56c 100644
--- a/noncore/multimedia/opieplayer2/mediawidget.h
+++ b/noncore/multimedia/opieplayer2/mediawidget.h
@@ -1,105 +1,107 @@
1/* 1/*
2 Copyright (C) 2002 Simon Hausmann <hausmann@kde.org> 2 Copyright (C) 2002 Simon Hausmann <hausmann@kde.org>
3 (C) 2002 Max Reiss <harlekin@handhelds.org> 3 (C) 2002 Max Reiss <harlekin@handhelds.org>
4 (C) 2002 L. Potter <ljp@llornkcor.com> 4 (C) 2002 L. Potter <ljp@llornkcor.com>
5 (C) 2002 Holger Freyther <zecke@handhelds.org> 5 (C) 2002 Holger Freyther <zecke@handhelds.org>
6 6
7 This library is free software; you can redistribute it and/or 7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public 8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either 9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version. 10 version 2 of the License, or (at your option) any later version.
11 11
12 This library is distributed in the hope that it will be useful, 12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details. 15 Library General Public License for more details.
16 16
17 You should have received a copy of the GNU Library General Public License 17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to 18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. 20 Boston, MA 02111-1307, USA.
21*/ 21*/
22 22
23#ifndef MEDIAWIDGET_H 23#ifndef MEDIAWIDGET_H
24#define MEDIAWIDGET_H 24#define MEDIAWIDGET_H
25 25
26#include <qwidget.h> 26#include <qwidget.h>
27#include <qmap.h> 27#include <qmap.h>
28 28
29#include "mediaplayerstate.h" 29#include "mediaplayerstate.h"
30#include "playlistwidget.h" 30#include "playlistwidget.h"
31 31
32#include <vector> 32#include <vector>
33 33
34class MediaWidget : public QWidget 34class MediaWidget : public QWidget
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37public: 37public:
38 enum Command { Play = 0, Stop, Next, Previous, VolumeUp, VolumeDown, Loop, PlayList, Forward, Back }; 38 enum Command { Play = 0, Stop, Next, Previous, VolumeUp, VolumeDown, Loop, PlayList, Forward, Back };
39 enum ButtonType { NormalButton, ToggleButton }; 39 enum ButtonType { NormalButton, ToggleButton };
40 40
41 struct Button 41 struct Button
42 { 42 {
43 Button() : type( NormalButton ), isHeld( false ), isDown( false ) {} 43 Button() : type( NormalButton ), isHeld( false ), isDown( false ) {}
44 44
45 ButtonType type : 1; 45 ButtonType type : 1;
46 bool isHeld : 1; 46 bool isHeld : 1;
47 bool isDown : 1; 47 bool isDown : 1;
48 48
49 QBitmap mask; 49 QBitmap mask;
50 QPixmap pixUp; 50 QPixmap pixUp;
51 QPixmap pixDown; 51 QPixmap pixDown;
52 }; 52 };
53 typedef std::vector<Button> ButtonVector; 53 typedef std::vector<Button> ButtonVector;
54 // when the transition is done this should be Command -> Button 54 // when the transition is done this should be Command -> Button
55 typedef QMap<int, Button> ButtonMap; 55 typedef QMap<int, Button> ButtonMap;
56 56
57 struct SkinButtonInfo 57 struct SkinButtonInfo
58 { 58 {
59 Command command; 59 Command command;
60 const char *fileName; 60 const char *fileName;
61 ButtonType type; 61 ButtonType type;
62 }; 62 };
63 63
64 typedef std::vector<QBitmap> MaskVector; 64 typedef std::vector<QBitmap> MaskVector;
65 typedef std::vector<QPixmap> PixmapVector; 65 typedef std::vector<QPixmap> PixmapVector;
66 66
67 MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent = 0, const char *name = 0 ); 67 MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent = 0, const char *name = 0 );
68 virtual ~MediaWidget(); 68 virtual ~MediaWidget();
69 69
70public slots: 70public slots:
71 virtual void setDisplayType( MediaPlayerState::DisplayType displayType ) = 0; 71 virtual void setDisplayType( MediaPlayerState::DisplayType displayType ) = 0;
72 virtual void setLength( long length ) = 0; 72 virtual void setLength( long length ) = 0;
73 virtual void setPlaying( bool playing ) = 0; 73 virtual void setPlaying( bool playing ) = 0;
74 74
75signals: 75signals:
76 void moreReleased(); 76 void moreReleased();
77 void lessReleased(); 77 void lessReleased();
78 void forwardReleased(); 78 void forwardReleased();
79 void backReleased(); 79 void backReleased();
80 80
81protected: 81protected:
82 virtual void closeEvent( QCloseEvent * ); 82 virtual void closeEvent( QCloseEvent * );
83 83
84 void handleCommand( Command command, bool buttonDown ); 84 void handleCommand( Command command, bool buttonDown );
85 85
86 bool isOverButton( const QPoint &position, int buttonId ) const; 86 bool isOverButton( const QPoint &position, int buttonId ) const;
87 87
88 void paintButton( int buttonId ); 88 void paintButton( int buttonId );
89 void paintButton( QPainter &p, const Button &button ); 89 void paintButton( QPainter &p, const Button &button );
90 90
91 void toggleButton( int buttonId ); 91 void toggleButton( int buttonId );
92 92
93 MediaPlayerState &mediaPlayerState; 93 MediaPlayerState &mediaPlayerState;
94 PlayListWidget &playList; 94 PlayListWidget &playList;
95 95
96 ButtonMap buttons; 96 ButtonMap buttons;
97 97
98 QImage buttonMask; 98 QImage buttonMask;
99 99
100 QPoint upperLeftOfButtonMask; 100 QPoint upperLeftOfButtonMask;
101
102 QPixmap backgroundPixmap;
101}; 103};
102 104
103#endif // MEDIAWIDGET_H 105#endif // MEDIAWIDGET_H
104/* vim: et sw=4 ts=4 106/* vim: et sw=4 ts=4
105 */ 107 */
diff --git a/noncore/multimedia/opieplayer2/videowidget.cpp b/noncore/multimedia/opieplayer2/videowidget.cpp
index a483434..a8bf252 100644
--- a/noncore/multimedia/opieplayer2/videowidget.cpp
+++ b/noncore/multimedia/opieplayer2/videowidget.cpp
@@ -1,470 +1,470 @@
1/* 1/*
2                This file is part of the Opie Project 2                This file is part of the Opie Project
3 3
4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> 4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com> 5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU General Public 12:`=1 )Y*s>-.--   : the terms of the GNU General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#include <qpe/qpeapplication.h> 34#include <qpe/qpeapplication.h>
35#include <qpe/resource.h> 35#include <qpe/resource.h>
36#include <qpe/config.h> 36#include <qpe/config.h>
37 37
38 38
39#include <qwidget.h> 39#include <qwidget.h>
40#include <qpainter.h> 40#include <qpainter.h>
41#include <qpixmap.h> 41#include <qpixmap.h>
42#include <qslider.h> 42#include <qslider.h>
43#include <qdrawutil.h> 43#include <qdrawutil.h>
44#include "videowidget.h" 44#include "videowidget.h"
45#include "mediaplayerstate.h" 45#include "mediaplayerstate.h"
46#include "playlistwidget.h" 46#include "playlistwidget.h"
47 47
48 48
49#ifdef Q_WS_QWS 49#ifdef Q_WS_QWS
50# define USE_DIRECT_PAINTER 50# define USE_DIRECT_PAINTER
51# include <qdirectpainter_qws.h> 51# include <qdirectpainter_qws.h>
52# include <qgfxraster_qws.h> 52# include <qgfxraster_qws.h>
53#endif 53#endif
54 54
55 55
56namespace 56namespace
57{ 57{
58 58
59const int xo = 2; // movable x offset 59const int xo = 2; // movable x offset
60const int yo = 0; // movable y offset 60const int yo = 0; // movable y offset
61 61
62const char * const skinV_mask_file_names[7] = { 62const char * const skinV_mask_file_names[7] = {
63"play","stop","fwd","back","up","down","full" 63"play","stop","fwd","back","up","down","full"
64}; 64};
65 65
66} 66}
67 67
68VideoWidget::VideoWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent, const char* name ) 68VideoWidget::VideoWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent, const char* name )
69 : MediaWidget( playList, mediaPlayerState, parent, name ), scaledWidth( 0 ), scaledHeight( 0 ) 69 : MediaWidget( playList, mediaPlayerState, parent, name ), scaledWidth( 0 ), scaledHeight( 0 )
70{ 70{
71 setCaption( tr("OpiePlayer - Video") ); 71 setCaption( tr("OpiePlayer - Video") );
72 72
73 Button defaultButton; 73 Button defaultButton;
74 Button toggleButton = defaultButton; 74 Button toggleButton = defaultButton;
75 toggleButton.type = ToggleButton; 75 toggleButton.type = ToggleButton;
76 76
77 buttons.insert( 0, toggleButton ); // play 77 buttons.insert( 0, toggleButton ); // play
78 buttons.insert( 1, toggleButton ); // stop 78 buttons.insert( 1, toggleButton ); // stop
79 buttons.insert( 2, toggleButton ); // next 79 buttons.insert( 2, toggleButton ); // next
80 buttons.insert( 3, toggleButton ); // previous 80 buttons.insert( 3, toggleButton ); // previous
81 buttons.insert( 4, toggleButton ); // volUp 81 buttons.insert( 4, toggleButton ); // volUp
82 buttons.insert( 5, toggleButton ); // volDown 82 buttons.insert( 5, toggleButton ); // volDown
83 buttons.insert( 6, toggleButton ); // fullscreen 83 buttons.insert( 6, toggleButton ); // fullscreen
84 84
85 videoFrame = new XineVideoWidget ( this, "Video frame" ); 85 videoFrame = new XineVideoWidget ( this, "Video frame" );
86 86
87 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & ))); 87 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & )));
88 connect ( videoFrame, SIGNAL( clicked () ), this, SLOT ( backToNormal() ) ); 88 connect ( videoFrame, SIGNAL( clicked () ), this, SLOT ( backToNormal() ) );
89 89
90 Config cfg("OpiePlayer"); 90 Config cfg("OpiePlayer");
91 cfg.setGroup("Options"); 91 cfg.setGroup("Options");
92 skin = cfg.readEntry("Skin","default"); 92 skin = cfg.readEntry("Skin","default");
93 93
94 QString skinPath = "opieplayer2/skins/" + skin; 94 QString skinPath = "opieplayer2/skins/" + skin;
95 pixBg = QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 95 backgroundPixmap = QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
96 imgUp = QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) ); 96 imgUp = QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) );
97 imgDn = QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) ); 97 imgDn = QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) );
98 98
99 buttonMask = QImage( imgUp.width(), imgUp.height(), 8, 255 ); 99 buttonMask = QImage( imgUp.width(), imgUp.height(), 8, 255 );
100 buttonMask.fill( 0 ); 100 buttonMask.fill( 0 );
101 101
102 for ( int i = 0; i < 7; i++ ) { 102 for ( int i = 0; i < 7; i++ ) {
103 Button &button = buttons[ i ]; 103 Button &button = buttons[ i ];
104 104
105 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skinV_mask_" + skinV_mask_file_names[i] + ".png" ); 105 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skinV_mask_" + skinV_mask_file_names[i] + ".png" );
106 button.mask = QBitmap( filename ); 106 button.mask = QBitmap( filename );
107 107
108 if ( !button.mask.isNull() ) { 108 if ( !button.mask.isNull() ) {
109 QImage imgMask = button.mask.convertToImage(); 109 QImage imgMask = button.mask.convertToImage();
110 uchar **dest = buttonMask.jumpTable(); 110 uchar **dest = buttonMask.jumpTable();
111 for ( int y = 0; y < imgUp.height(); y++ ) { 111 for ( int y = 0; y < imgUp.height(); y++ ) {
112 uchar *line = dest[y]; 112 uchar *line = dest[y];
113 for ( int x = 0; x < imgUp.width(); x++ ) { 113 for ( int x = 0; x < imgUp.width(); x++ ) {
114 if ( !qRed( imgMask.pixel( x, y ) ) ) 114 if ( !qRed( imgMask.pixel( x, y ) ) )
115 line[x] = i + 1; 115 line[x] = i + 1;
116 } 116 }
117 } 117 }
118 } 118 }
119 } 119 }
120 120
121 setBackgroundPixmap( pixBg ); 121 setBackgroundPixmap( backgroundPixmap );
122 122
123 slider = new QSlider( Qt::Horizontal, this ); 123 slider = new QSlider( Qt::Horizontal, this );
124 slider->setMinValue( 0 ); 124 slider->setMinValue( 0 );
125 slider->setMaxValue( 1 ); 125 slider->setMaxValue( 1 );
126 slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); 126 slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) );
127 //slider->setFocusPolicy( QWidget::NoFocus ); 127 //slider->setFocusPolicy( QWidget::NoFocus );
128 128
129 resizeEvent( NULL ); 129 resizeEvent( NULL );
130 130
131 setLength( mediaPlayerState.length() ); 131 setLength( mediaPlayerState.length() );
132 setPosition( mediaPlayerState.position() ); 132 setPosition( mediaPlayerState.position() );
133 setFullscreen( mediaPlayerState.isFullscreen() ); 133 setFullscreen( mediaPlayerState.isFullscreen() );
134 setPlaying( mediaPlayerState.isPlaying() ); 134 setPlaying( mediaPlayerState.isPlaying() );
135} 135}
136 136
137 137
138VideoWidget::~VideoWidget() 138VideoWidget::~VideoWidget()
139{ 139{
140} 140}
141 141
142QPixmap *combineVImageWithBackground( QImage img, QPixmap bg, QPoint offset ) { 142QPixmap *combineVImageWithBackground( QImage img, QPixmap bg, QPoint offset ) {
143 QPixmap pix( img.width(), img.height() ); 143 QPixmap pix( img.width(), img.height() );
144 QPainter p( &pix ); 144 QPainter p( &pix );
145 p.drawTiledPixmap( pix.rect(), bg, offset ); 145 p.drawTiledPixmap( pix.rect(), bg, offset );
146 p.drawImage( 0, 0, img ); 146 p.drawImage( 0, 0, img );
147 return new QPixmap( pix ); 147 return new QPixmap( pix );
148} 148}
149 149
150QPixmap maskVPixToMask( QPixmap pix, QBitmap mask ) { 150QPixmap maskVPixToMask( QPixmap pix, QBitmap mask ) {
151 QPixmap pixmap( pix ); 151 QPixmap pixmap( pix );
152 pixmap.setMask( mask ); 152 pixmap.setMask( mask );
153 return pixmap; 153 return pixmap;
154} 154}
155 155
156void VideoWidget::resizeEvent( QResizeEvent * ) { 156void VideoWidget::resizeEvent( QResizeEvent * ) {
157 int h = height(); 157 int h = height();
158 int w = width(); 158 int w = width();
159 //int Vh = 160; 159 //int Vh = 160;
160 //int Vw = 220; 160 //int Vw = 220;
161 161
162 slider->setFixedWidth( w - 20 ); 162 slider->setFixedWidth( w - 20 );
163 slider->setGeometry( QRect( 15, h - 22, w - 90, 20 ) ); 163 slider->setGeometry( QRect( 15, h - 22, w - 90, 20 ) );
164 slider->setBackgroundOrigin( QWidget::ParentOrigin ); 164 slider->setBackgroundOrigin( QWidget::ParentOrigin );
165 slider->setFocusPolicy( QWidget::NoFocus ); 165 slider->setFocusPolicy( QWidget::NoFocus );
166 slider->setBackgroundPixmap( pixBg ); 166 slider->setBackgroundPixmap( backgroundPixmap );
167 167
168 upperLeftOfButtonMask.rx() = 0;// ( imgUp->width() ) / 2; 168 upperLeftOfButtonMask.rx() = 0;// ( imgUp->width() ) / 2;
169 if(w>h) 169 if(w>h)
170 upperLeftOfButtonMask.ry() = 0; 170 upperLeftOfButtonMask.ry() = 0;
171 else 171 else
172 upperLeftOfButtonMask.ry() = 185;//(( Vh - imgUp->height() ) / 2) - 10; 172 upperLeftOfButtonMask.ry() = 185;//(( Vh - imgUp->height() ) / 2) - 10;
173 QPoint p = upperLeftOfButtonMask; 173 QPoint p = upperLeftOfButtonMask;
174 174
175 QPixmap *pixUp = combineVImageWithBackground( imgUp, pixBg, p ); 175 QPixmap *pixUp = combineVImageWithBackground( imgUp, backgroundPixmap, p );
176 QPixmap *pixDn = combineVImageWithBackground( imgDn, pixBg, p ); 176 QPixmap *pixDn = combineVImageWithBackground( imgDn, backgroundPixmap, p );
177 177
178 for ( int i = 0; i < 7; i++ ) { 178 for ( int i = 0; i < 7; i++ ) {
179 Button &button = buttons[ i ]; 179 Button &button = buttons[ i ];
180 180
181 if ( !button.mask.isNull() ) { 181 if ( !button.mask.isNull() ) {
182 button.pixUp = maskVPixToMask( *pixUp, button.mask ); 182 button.pixUp = maskVPixToMask( *pixUp, button.mask );
183 button.pixDown = maskVPixToMask( *pixDn, button.mask ); 183 button.pixDown = maskVPixToMask( *pixDn, button.mask );
184 } 184 }
185 } 185 }
186 186
187 delete pixUp; 187 delete pixUp;
188 delete pixDn; 188 delete pixDn;
189} 189}
190 190
191static bool videoSliderBeingMoved = FALSE; 191static bool videoSliderBeingMoved = FALSE;
192 192
193void VideoWidget::sliderPressed() { 193void VideoWidget::sliderPressed() {
194 videoSliderBeingMoved = TRUE; 194 videoSliderBeingMoved = TRUE;
195} 195}
196 196
197void VideoWidget::sliderReleased() { 197void VideoWidget::sliderReleased() {
198 videoSliderBeingMoved = FALSE; 198 videoSliderBeingMoved = FALSE;
199 if ( slider->width() == 0 ) { 199 if ( slider->width() == 0 ) {
200 return; 200 return;
201 } 201 }
202 long val = long((double)slider->value() * mediaPlayerState.length() / slider->width()); 202 long val = long((double)slider->value() * mediaPlayerState.length() / slider->width());
203 mediaPlayerState.setPosition( val ); 203 mediaPlayerState.setPosition( val );
204} 204}
205 205
206void VideoWidget::setPosition( long i ) { 206void VideoWidget::setPosition( long i ) {
207 updateSlider( i, mediaPlayerState.length() ); 207 updateSlider( i, mediaPlayerState.length() );
208} 208}
209 209
210 210
211void VideoWidget::setLength( long max ) { 211void VideoWidget::setLength( long max ) {
212 updateSlider( mediaPlayerState.position(), max ); 212 updateSlider( mediaPlayerState.position(), max );
213} 213}
214 214
215void VideoWidget::setDisplayType( MediaPlayerState::DisplayType displayType ) 215void VideoWidget::setDisplayType( MediaPlayerState::DisplayType displayType )
216{ 216{
217 if ( displayType == MediaPlayerState::Video ) { 217 if ( displayType == MediaPlayerState::Video ) {
218 makeVisible(); 218 makeVisible();
219 return; 219 return;
220 } 220 }
221 221
222 // Effectively blank the view next time we show it so it looks nicer 222 // Effectively blank the view next time we show it so it looks nicer
223 scaledWidth = 0; 223 scaledWidth = 0;
224 scaledHeight = 0; 224 scaledHeight = 0;
225 hide(); 225 hide();
226} 226}
227 227
228void VideoWidget::updateSlider( long i, long max ) { 228void VideoWidget::updateSlider( long i, long max ) {
229 // Will flicker too much if we don't do this 229 // Will flicker too much if we don't do this
230 if ( max == 0 ) { 230 if ( max == 0 ) {
231 return; 231 return;
232 } 232 }
233 int width = slider->width(); 233 int width = slider->width();
234 int val = int((double)i * width / max); 234 int val = int((double)i * width / max);
235 if ( !mediaPlayerState.isFullscreen() && !videoSliderBeingMoved ) { 235 if ( !mediaPlayerState.isFullscreen() && !videoSliderBeingMoved ) {
236 if ( slider->value() != val ) { 236 if ( slider->value() != val ) {
237 slider->setValue( val ); 237 slider->setValue( val );
238 } 238 }
239 if ( slider->maxValue() != width ) { 239 if ( slider->maxValue() != width ) {
240 slider->setMaxValue( width ); 240 slider->setMaxValue( width );
241 } 241 }
242 } 242 }
243} 243}
244 244
245void VideoWidget::setToggleButton( int i, bool down ) { 245void VideoWidget::setToggleButton( int i, bool down ) {
246 if ( down != buttons[i].isDown ) { 246 if ( down != buttons[i].isDown ) {
247 toggleButton( i ); 247 toggleButton( i );
248 } 248 }
249} 249}
250 250
251void VideoWidget::mouseMoveEvent( QMouseEvent *event ) { 251void VideoWidget::mouseMoveEvent( QMouseEvent *event ) {
252 for ( unsigned int i = 0; i < buttons.count(); i++ ) { 252 for ( unsigned int i = 0; i < buttons.count(); i++ ) {
253 if ( event->state() == QMouseEvent::LeftButton ) { 253 if ( event->state() == QMouseEvent::LeftButton ) {
254 // The test to see if the mouse click is inside the button or not 254 // The test to see if the mouse click is inside the button or not
255 bool isOnButton = isOverButton( event->pos() - upperLeftOfButtonMask, i ); 255 bool isOnButton = isOverButton( event->pos() - upperLeftOfButtonMask, i );
256 256
257 if ( isOnButton && !buttons[i].isHeld ) { 257 if ( isOnButton && !buttons[i].isHeld ) {
258 buttons[i].isHeld = TRUE; 258 buttons[i].isHeld = TRUE;
259 toggleButton(i); 259 toggleButton(i);
260 260
261 switch (i) { 261 switch (i) {
262 case VideoVolUp: 262 case VideoVolUp:
263 emit moreClicked(); 263 emit moreClicked();
264 return; 264 return;
265 case VideoVolDown: 265 case VideoVolDown:
266 emit lessClicked(); 266 emit lessClicked();
267 return; 267 return;
268 } 268 }
269 } else if ( !isOnButton && buttons[i].isHeld ) { 269 } else if ( !isOnButton && buttons[i].isHeld ) {
270 buttons[i].isHeld = FALSE; 270 buttons[i].isHeld = FALSE;
271 toggleButton(i); 271 toggleButton(i);
272 } 272 }
273 } else { 273 } else {
274 274
275 if ( buttons[i].isHeld ) { 275 if ( buttons[i].isHeld ) {
276 buttons[i].isHeld = FALSE; 276 buttons[i].isHeld = FALSE;
277 if ( buttons[i].type != ToggleButton ) { 277 if ( buttons[i].type != ToggleButton ) {
278 setToggleButton( i, FALSE ); 278 setToggleButton( i, FALSE );
279 } 279 }
280 280
281 switch(i) { 281 switch(i) {
282 282
283 case VideoPlay: { 283 case VideoPlay: {
284 if( mediaPlayerState.isPaused() ) { 284 if( mediaPlayerState.isPaused() ) {
285 setToggleButton( i, FALSE ); 285 setToggleButton( i, FALSE );
286 mediaPlayerState.setPaused( FALSE ); 286 mediaPlayerState.setPaused( FALSE );
287 return; 287 return;
288 } else if( !mediaPlayerState.isPaused() ) { 288 } else if( !mediaPlayerState.isPaused() ) {
289 setToggleButton( i, TRUE ); 289 setToggleButton( i, TRUE );
290 mediaPlayerState.setPaused( TRUE ); 290 mediaPlayerState.setPaused( TRUE );
291 return; 291 return;
292 } else { 292 } else {
293 return; 293 return;
294 } 294 }
295 } 295 }
296 296
297 case VideoStop: mediaPlayerState.setPlaying( FALSE ); return; 297 case VideoStop: mediaPlayerState.setPlaying( FALSE ); return;
298 case VideoNext: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setNext(); return; 298 case VideoNext: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setNext(); return;
299 case VideoPrevious: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setPrev(); return; 299 case VideoPrevious: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setPrev(); return;
300 case VideoVolUp: emit moreReleased(); return; 300 case VideoVolUp: emit moreReleased(); return;
301 case VideoVolDown: emit lessReleased(); return; 301 case VideoVolDown: emit lessReleased(); return;
302 case VideoFullscreen: mediaPlayerState.setFullscreen( TRUE ); makeVisible(); return; 302 case VideoFullscreen: mediaPlayerState.setFullscreen( TRUE ); makeVisible(); return;
303 } 303 }
304 } 304 }
305 } 305 }
306 } 306 }
307} 307}
308 308
309void VideoWidget::mousePressEvent( QMouseEvent *event ) { 309void VideoWidget::mousePressEvent( QMouseEvent *event ) {
310 mouseMoveEvent( event ); 310 mouseMoveEvent( event );
311} 311}
312 312
313void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) { 313void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) {
314 if ( mediaPlayerState.isFullscreen() ) { 314 if ( mediaPlayerState.isFullscreen() ) {
315 mediaPlayerState.setFullscreen( FALSE ); 315 mediaPlayerState.setFullscreen( FALSE );
316 makeVisible(); 316 makeVisible();
317 } 317 }
318 mouseMoveEvent( event ); 318 mouseMoveEvent( event );
319} 319}
320 320
321void VideoWidget::showEvent( QShowEvent* ) { 321void VideoWidget::showEvent( QShowEvent* ) {
322 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 ); 322 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 );
323 mouseMoveEvent( &event ); 323 mouseMoveEvent( &event );
324} 324}
325 325
326 326
327 void VideoWidget::backToNormal() { 327 void VideoWidget::backToNormal() {
328 mediaPlayerState.setFullscreen( FALSE ); 328 mediaPlayerState.setFullscreen( FALSE );
329 makeVisible(); 329 makeVisible();
330 } 330 }
331 331
332void VideoWidget::makeVisible() { 332void VideoWidget::makeVisible() {
333 if ( mediaPlayerState.isFullscreen() ) { 333 if ( mediaPlayerState.isFullscreen() ) {
334 setBackgroundMode( QWidget::NoBackground ); 334 setBackgroundMode( QWidget::NoBackground );
335 showFullScreen(); 335 showFullScreen();
336 resize( qApp->desktop()->size() ); 336 resize( qApp->desktop()->size() );
337 videoFrame-> setGeometry ( 0, 0, width ( ), height ( )); 337 videoFrame-> setGeometry ( 0, 0, width ( ), height ( ));
338 338
339 slider->hide(); 339 slider->hide();
340 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 340 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
341 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 341 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
342 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 342 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
343 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 343 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
344 344
345 } else { 345 } else {
346 showNormal(); 346 showNormal();
347 showMaximized(); 347 showMaximized();
348 setBackgroundPixmap( pixBg ); 348 setBackgroundPixmap( backgroundPixmap );
349 QWidget *d = QApplication::desktop(); 349 QWidget *d = QApplication::desktop();
350 int w = d->width(); 350 int w = d->width();
351 int h = d->height(); 351 int h = d->height();
352 352
353 if(w>h) { 353 if(w>h) {
354 int newW=(w/2)-(246/2); //this will only work with 320x240 354 int newW=(w/2)-(246/2); //this will only work with 320x240
355 videoFrame->setGeometry( QRect( newW, 4, 240, 170 ) ); 355 videoFrame->setGeometry( QRect( newW, 4, 240, 170 ) );
356 } else { 356 } else {
357 videoFrame->setGeometry( QRect( 0, 30, 240, 170 ) ); 357 videoFrame->setGeometry( QRect( 0, 30, 240, 170 ) );
358 } 358 }
359 359
360 if ( !mediaPlayerState.isSeekable() ) { 360 if ( !mediaPlayerState.isSeekable() ) {
361 if( !slider->isHidden()) { 361 if( !slider->isHidden()) {
362 slider->hide(); 362 slider->hide();
363 } 363 }
364 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 364 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
365 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 365 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
366 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 366 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
367 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 367 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
368 } else { 368 } else {
369 slider->show(); 369 slider->show();
370 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 370 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
371 connect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 371 connect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
372 connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 372 connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
373 connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 373 connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
374 } 374 }
375 } 375 }
376} 376}
377 377
378 378
379 379
380 380
381void VideoWidget::paintEvent( QPaintEvent * pe) { 381void VideoWidget::paintEvent( QPaintEvent * pe) {
382 QPainter p( this ); 382 QPainter p( this );
383 383
384 if ( mediaPlayerState.isFullscreen() ) { 384 if ( mediaPlayerState.isFullscreen() ) {
385 // Clear the background 385 // Clear the background
386 p.setBrush( QBrush( Qt::black ) ); 386 p.setBrush( QBrush( Qt::black ) );
387 } else { 387 } else {
388 if ( !pe->erased() ) { 388 if ( !pe->erased() ) {
389 // Combine with background and double buffer 389 // Combine with background and double buffer
390 QPixmap pix( pe->rect().size() ); 390 QPixmap pix( pe->rect().size() );
391 QPainter p( &pix ); 391 QPainter p( &pix );
392 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 392 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
393 p.drawTiledPixmap( pe->rect(), pixBg, pe->rect().topLeft() ); 393 p.drawTiledPixmap( pe->rect(), backgroundPixmap, pe->rect().topLeft() );
394 for ( unsigned int i = 0; i < buttons.count(); i++ ) { 394 for ( unsigned int i = 0; i < buttons.count(); i++ ) {
395 paintButton( p, buttons[ i ] ); 395 paintButton( p, buttons[ i ] );
396 } 396 }
397 QPainter p2( this ); 397 QPainter p2( this );
398 p2.drawPixmap( pe->rect().topLeft(), pix ); 398 p2.drawPixmap( pe->rect().topLeft(), pix );
399 } else { 399 } else {
400 QPainter p( this ); 400 QPainter p( this );
401 for ( unsigned int i = 0; i < buttons.count(); i++ ) 401 for ( unsigned int i = 0; i < buttons.count(); i++ )
402 paintButton( p, buttons[ i ] ); 402 paintButton( p, buttons[ i ] );
403 } 403 }
404 //slider->repaint( TRUE ); 404 //slider->repaint( TRUE );
405 } 405 }
406} 406}
407 407
408 408
409void VideoWidget::keyReleaseEvent( QKeyEvent *e) { 409void VideoWidget::keyReleaseEvent( QKeyEvent *e) {
410 switch ( e->key() ) { 410 switch ( e->key() ) {
411////////////////////////////// Zaurus keys 411////////////////////////////// Zaurus keys
412 case Key_Home: 412 case Key_Home:
413 break; 413 break;
414 case Key_F9: //activity 414 case Key_F9: //activity
415 break; 415 break;
416 case Key_F10: //contacts 416 case Key_F10: //contacts
417// hide(); 417// hide();
418 break; 418 break;
419 case Key_F11: //menu 419 case Key_F11: //menu
420 break; 420 break;
421 case Key_F12: //home 421 case Key_F12: //home
422 break; 422 break;
423 case Key_F13: //mail 423 case Key_F13: //mail
424 break; 424 break;
425 case Key_Space: { 425 case Key_Space: {
426 if(mediaPlayerState.isPlaying()) { 426 if(mediaPlayerState.isPlaying()) {
427 mediaPlayerState.setPlaying(FALSE); 427 mediaPlayerState.setPlaying(FALSE);
428 } else { 428 } else {
429 mediaPlayerState.setPlaying(TRUE); 429 mediaPlayerState.setPlaying(TRUE);
430 } 430 }
431 } 431 }
432 break; 432 break;
433 case Key_Down: 433 case Key_Down:
434// toggleButton(6); 434// toggleButton(6);
435 emit lessClicked(); 435 emit lessClicked();
436 emit lessReleased(); 436 emit lessReleased();
437// toggleButton(6); 437// toggleButton(6);
438 break; 438 break;
439 case Key_Up: 439 case Key_Up:
440// toggleButton(5); 440// toggleButton(5);
441 emit moreClicked(); 441 emit moreClicked();
442 emit moreReleased(); 442 emit moreReleased();
443// toggleButton(5); 443// toggleButton(5);
444 break; 444 break;
445 case Key_Right: 445 case Key_Right:
446 mediaPlayerState.setNext(); 446 mediaPlayerState.setNext();
447 break; 447 break;
448 case Key_Left: 448 case Key_Left:
449 mediaPlayerState.setPrev(); 449 mediaPlayerState.setPrev();
450 break; 450 break;
451 case Key_Escape: 451 case Key_Escape:
452 break; 452 break;
453 453
454 }; 454 };
455} 455}
456 456
457XineVideoWidget* VideoWidget::vidWidget() { 457XineVideoWidget* VideoWidget::vidWidget() {
458 return videoFrame; 458 return videoFrame;
459} 459}
460 460
461 461
462void VideoWidget::setFullscreen ( bool b ) { 462void VideoWidget::setFullscreen ( bool b ) {
463 setToggleButton( VideoFullscreen, b ); 463 setToggleButton( VideoFullscreen, b );
464} 464}
465 465
466 466
467void VideoWidget::setPlaying( bool b) { 467void VideoWidget::setPlaying( bool b) {
468 setToggleButton( VideoPlay, b ); 468 setToggleButton( VideoPlay, b );
469} 469}
470 470
diff --git a/noncore/multimedia/opieplayer2/videowidget.h b/noncore/multimedia/opieplayer2/videowidget.h
index a271120..9d5239b 100644
--- a/noncore/multimedia/opieplayer2/videowidget.h
+++ b/noncore/multimedia/opieplayer2/videowidget.h
@@ -1,119 +1,118 @@
1/* 1/*
2                This file is part of the Opie Project 2                This file is part of the Opie Project
3 3
4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> 4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com> 5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU General Public 12:`=1 )Y*s>-.--   : the terms of the GNU General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#ifndef VIDEO_WIDGET_H 34#ifndef VIDEO_WIDGET_H
35#define VIDEO_WIDGET_H 35#define VIDEO_WIDGET_H
36 36
37#include <qwidget.h> 37#include <qwidget.h>
38#include <qimage.h> 38#include <qimage.h>
39#include <qpixmap.h> 39#include <qpixmap.h>
40#include "xinevideowidget.h" 40#include "xinevideowidget.h"
41 41
42#include "mediawidget.h" 42#include "mediawidget.h"
43 43
44class QPixmap; 44class QPixmap;
45class QSlider; 45class QSlider;
46 46
47enum VideoButtons { 47enum VideoButtons {
48 VideoPlay = 0, 48 VideoPlay = 0,
49 VideoStop, 49 VideoStop,
50// VideoPause, 50// VideoPause,
51 VideoNext, 51 VideoNext,
52 VideoPrevious, 52 VideoPrevious,
53 VideoVolUp, 53 VideoVolUp,
54 VideoVolDown, 54 VideoVolDown,
55 VideoFullscreen 55 VideoFullscreen
56}; 56};
57 57
58class VideoWidget : public MediaWidget { 58class VideoWidget : public MediaWidget {
59 Q_OBJECT 59 Q_OBJECT
60public: 60public:
61 VideoWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent=0, const char* name=0 ); 61 VideoWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent=0, const char* name=0 );
62 ~VideoWidget(); 62 ~VideoWidget();
63 63
64 64
65 XineVideoWidget* vidWidget(); 65 XineVideoWidget* vidWidget();
66public slots: 66public slots:
67 void updateSlider( long, long ); 67 void updateSlider( long, long );
68 void sliderPressed( ); 68 void sliderPressed( );
69 void sliderReleased( ); 69 void sliderReleased( );
70 void setFullscreen( bool b ); 70 void setFullscreen( bool b );
71 void makeVisible(); 71 void makeVisible();
72 void backToNormal(); 72 void backToNormal();
73 void setPosition( long ); 73 void setPosition( long );
74 74
75public: 75public:
76 virtual void setPlaying( bool b); 76 virtual void setPlaying( bool b);
77 virtual void setLength( long ); 77 virtual void setLength( long );
78 virtual void setDisplayType( MediaPlayerState::DisplayType displayType ); 78 virtual void setDisplayType( MediaPlayerState::DisplayType displayType );
79 79
80signals: 80signals:
81 void moreClicked(); 81 void moreClicked();
82 void lessClicked(); 82 void lessClicked();
83 void moreReleased(); 83 void moreReleased();
84 void lessReleased(); 84 void lessReleased();
85 void sliderMoved( long ); 85 void sliderMoved( long );
86 void videoResized ( const QSize &s ); 86 void videoResized ( const QSize &s );
87 87
88protected: 88protected:
89 89
90 void resizeEvent( QResizeEvent * ); 90 void resizeEvent( QResizeEvent * );
91 void paintEvent( QPaintEvent *pe ); 91 void paintEvent( QPaintEvent *pe );
92 void showEvent( QShowEvent *se ); 92 void showEvent( QShowEvent *se );
93 void mouseMoveEvent( QMouseEvent *event ); 93 void mouseMoveEvent( QMouseEvent *event );
94 void mousePressEvent( QMouseEvent *event ); 94 void mousePressEvent( QMouseEvent *event );
95 void mouseReleaseEvent( QMouseEvent *event ); 95 void mouseReleaseEvent( QMouseEvent *event );
96 void keyReleaseEvent( QKeyEvent *e); 96 void keyReleaseEvent( QKeyEvent *e);
97 97
98private: 98private:
99// Ticker songInfo; 99// Ticker songInfo;
100 QPixmap pixBg;
101 QImage imgUp; 100 QImage imgUp;
102 QImage imgDn; 101 QImage imgDn;
103 QString skin; 102 QString skin;
104 103
105 104
106 void setToggleButton( int, bool ); 105 void setToggleButton( int, bool );
107 106
108 QString backgroundPix; 107 QString backgroundPix;
109 QSlider *slider; 108 QSlider *slider;
110 QImage *currentFrame; 109 QImage *currentFrame;
111 int scaledWidth; 110 int scaledWidth;
112 int scaledHeight; 111 int scaledHeight;
113 XineVideoWidget* videoFrame; 112 XineVideoWidget* videoFrame;
114}; 113};
115 114
116#endif // VIDEO_WIDGET_H 115#endif // VIDEO_WIDGET_H
117 116
118 117
119 118