summaryrefslogtreecommitdiff
authorar <ar>2004-05-02 17:04:41 (UTC)
committer ar <ar>2004-05-02 17:04:41 (UTC)
commit4d3379027557e251201b531896974a69ae4c665a (patch) (unidiff)
tree6e813be1aa29131f8f8e91f532f38f8a381e38f4
parentf8add41b2e0b0371754521b44d95f87fa70a6ff2 (diff)
downloadopie-4d3379027557e251201b531896974a69ae4c665a.zip
opie-4d3379027557e251201b531896974a69ae4c665a.tar.gz
opie-4d3379027557e251201b531896974a69ae4c665a.tar.bz2
- convert qDebug to odebug
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/audiodevice.cpp50
-rw-r--r--core/multimedia/opieplayer/audiowidget.cpp63
-rw-r--r--core/multimedia/opieplayer/libmad/libmadplugin.cpp72
-rw-r--r--core/multimedia/opieplayer/loopcontrol.cpp68
-rw-r--r--core/multimedia/opieplayer/loopcontrol_threaded.cpp54
-rw-r--r--core/multimedia/opieplayer/mediaplayer.cpp26
-rw-r--r--core/multimedia/opieplayer/mediaplayerstate.cpp34
-rw-r--r--core/multimedia/opieplayer/modplug/memfile.cpp30
-rw-r--r--core/multimedia/opieplayer/om3u.cpp28
-rw-r--r--core/multimedia/opieplayer/playlistselection.cpp19
-rw-r--r--core/multimedia/opieplayer/playlistwidget.cpp176
-rw-r--r--core/multimedia/opieplayer/videowidget.cpp39
-rw-r--r--core/multimedia/opieplayer/vorbis/libtremorplugin.cpp31
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavplugin.cpp50
14 files changed, 402 insertions, 338 deletions
diff --git a/core/multimedia/opieplayer/audiodevice.cpp b/core/multimedia/opieplayer/audiodevice.cpp
index 355062b..9b64e07 100644
--- a/core/multimedia/opieplayer/audiodevice.cpp
+++ b/core/multimedia/opieplayer/audiodevice.cpp
@@ -15,31 +15,35 @@
15 ** 15 **
16 ** Contact info@trolltech.com if any conditions of this licensing are 16 ** Contact info@trolltech.com if any conditions of this licensing are
17 ** not clear to you. 17 ** not clear to you.
18 ** 18 **
19 **********************************************************************/ 19 **********************************************************************/
20// L.J.Potter added better error code Fri 02-15-2002 14:37:47 20// L.J.Potter added better error code Fri 02-15-2002 14:37:47
21 21
22 22
23#include <stdlib.h>
24#include <stdio.h>
25#include <qpe/qpeapplication.h>
26#include <qpe/config.h>
27#include <qmessagebox.h>
28
29#include "audiodevice.h" 23#include "audiodevice.h"
30 24
31 25/* OPIE */
32#include <errno.h> 26#include <qpe/qpeapplication.h>
27#include <qpe/config.h>
28#include <opie2/odebug.h>
33 29
34#if !defined(QT_NO_COP) 30#if !defined(QT_NO_COP)
35#include <qpe/qcopenvelope_qws.h> 31#include <qpe/qcopenvelope_qws.h>
36#endif 32#endif
37 33
34/* QT */
35#include <qmessagebox.h>
36
37/* STD */
38#include <stdlib.h>
39#include <stdio.h>
40#include <errno.h>
41
38#if defined(Q_WS_X11) || defined(Q_WS_QWS) 42#if defined(Q_WS_X11) || defined(Q_WS_QWS)
39#include <fcntl.h> 43#include <fcntl.h>
40#include <sys/ioctl.h> 44#include <sys/ioctl.h>
41#include <sys/soundcard.h> 45#include <sys/soundcard.h>
42#include <sys/stat.h> 46#include <sys/stat.h>
43#include <sys/time.h> 47#include <sys/time.h>
44#include <sys/types.h> 48#include <sys/types.h>
45#include <unistd.h> 49#include <unistd.h>
@@ -140,38 +144,38 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume,
140 // This is the way this has to be done now I guess, doesn't allow for 144 // This is the way this has to be done now I guess, doesn't allow for
141 // independant right and left channel setting, or setting for different outputs 145 // independant right and left channel setting, or setting for different outputs
142 Config cfg("qpe"); // qtopia is "Sound" 146 Config cfg("qpe"); // qtopia is "Sound"
143 cfg.setGroup("Volume"); // qtopia is "Settings" 147 cfg.setGroup("Volume"); // qtopia is "Settings"
144 cfg.writeEntry("VolumePercent",(int)rV); //qtopia is Volume 148 cfg.writeEntry("VolumePercent",(int)rV); //qtopia is Volume
145# endif 149# endif
146 150
147//#endif 151//#endif
148// qDebug( "setting volume to: 0x%x", volume ); 152// odebug << "setting volume to: 0x" << volume << "" << oendl;
149#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP) 153#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP)
150 // Send notification that the volume has changed 154 // Send notification that the volume has changed
151 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << muted; 155 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << muted;
152#endif 156#endif
153} 157}
154 158
155 159
156 160
157AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { 161AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
158 // qDebug("creating new audio device"); 162 // odebug << "creating new audio device" << oendl;
159// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; 163// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE;
160 d = new AudioDevicePrivate; 164 d = new AudioDevicePrivate;
161 d->frequency = f; 165 d->frequency = f;
162 d->channels = chs; 166 d->channels = chs;
163 d->bytesPerSample = bps; 167 d->bytesPerSample = bps;
164 // qDebug("%d",bps); 168 // odebug << "" << bps << "" << oendl;
165 int format=0; 169 int format=0;
166 if( bps == 8) format = AFMT_U8; 170 if( bps == 8) format = AFMT_U8;
167 else if( bps <= 0) format = AFMT_S16_LE; 171 else if( bps <= 0) format = AFMT_S16_LE;
168 else format = AFMT_S16_LE; 172 else format = AFMT_S16_LE;
169 // qDebug("AD- freq %d, channels %d, b/sample %d, bitrate %d",f,chs,bps,format); 173 // odebug << "AD- freq " << f << ", channels " << chs << ", b/sample " << bps << ", bitrate " << format << "" << oendl;
170 connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( volumeChanged(bool) ) ); 174 connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( volumeChanged(bool) ) );
171 175
172 int fragments = 0x10000 * 8 + sound_fragment_shift; 176 int fragments = 0x10000 * 8 + sound_fragment_shift;
173 int capabilities = 0; 177 int capabilities = 0;
174 178
175 179
176#ifdef KEEP_DEVICE_OPEN 180#ifdef KEEP_DEVICE_OPEN
177 if ( AudioDevicePrivate::dspFd == 0 ) { 181 if ( AudioDevicePrivate::dspFd == 0 ) {
@@ -195,44 +199,44 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
195#endif 199#endif
196 200
197 if(ioctl( d->handle, SNDCTL_DSP_GETCAPS, &capabilities )==-1) 201 if(ioctl( d->handle, SNDCTL_DSP_GETCAPS, &capabilities )==-1)
198 perror("ioctl(\"SNDCTL_DSP_GETCAPS\")"); 202 perror("ioctl(\"SNDCTL_DSP_GETCAPS\")");
199 if(ioctl( d->handle, SNDCTL_DSP_SETFRAGMENT, &fragments )==-1) 203 if(ioctl( d->handle, SNDCTL_DSP_SETFRAGMENT, &fragments )==-1)
200 perror("ioctl(\"SNDCTL_DSP_SETFRAGMENT\")"); 204 perror("ioctl(\"SNDCTL_DSP_SETFRAGMENT\")");
201 if(ioctl( d->handle, SNDCTL_DSP_SETFMT, & format )==-1) 205 if(ioctl( d->handle, SNDCTL_DSP_SETFMT, & format )==-1)
202 perror("ioctl(\"SNDCTL_DSP_SETFMT\")"); 206 perror("ioctl(\"SNDCTL_DSP_SETFMT\")");
203 // qDebug("freq %d", d->frequency); 207 // odebug << "freq " << d->frequency << "" << oendl;
204 if(ioctl( d->handle, SNDCTL_DSP_SPEED, &d->frequency )==-1) 208 if(ioctl( d->handle, SNDCTL_DSP_SPEED, &d->frequency )==-1)
205 perror("ioctl(\"SNDCTL_DSP_SPEED\")"); 209 perror("ioctl(\"SNDCTL_DSP_SPEED\")");
206 // qDebug("channels %d",d->channels); 210 // odebug << "channels " << d->channels << "" << oendl;
207 if ( ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels ) == -1 ) { 211 if ( ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels ) == -1 ) {
208 d->channels = ( d->channels == 1 ) ? 2 : d->channels; 212 d->channels = ( d->channels == 1 ) ? 2 : d->channels;
209 if(ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels )==-1) 213 if(ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels )==-1)
210 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")"); 214 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")");
211 } 215 }
212// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE; 216// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE;
213 217
214 d->bufferSize = sound_fragment_bytes; 218 d->bufferSize = sound_fragment_bytes;
215 d->unwrittenBuffer = new char[d->bufferSize]; 219 d->unwrittenBuffer = new char[d->bufferSize];
216 d->unwritten = 0; 220 d->unwritten = 0;
217 d->can_GETOSPACE = TRUE; // until we find otherwise 221 d->can_GETOSPACE = TRUE; // until we find otherwise
218 222
219 //if ( chs != d->channels ) qDebug( "Wanted %d, got %d channels", chs, d->channels ); 223 //if ( chs != d->channels ) odebug << "Wanted " << chs << ", got " << d->channels << " channels" << oendl;
220 //if ( f != d->frequency ) qDebug( "wanted %dHz, got %dHz", f, d->frequency ); 224 //if ( f != d->frequency ) odebug << "wanted " << f << "Hz, got " << d->frequency << "Hz" << oendl;
221 //if ( capabilities & DSP_CAP_BATCH ) qDebug( "Sound card has local buffer" ); 225 //if ( capabilities & DSP_CAP_BATCH ) odebug << "Sound card has local buffer" << oendl;
222 //if ( capabilities & DSP_CAP_REALTIME )qDebug( "Sound card has realtime sync" ); 226 //if ( capabilities & DSP_CAP_REALTIME )odebug << "Sound card has realtime sync" << oendl;
223 //if ( capabilities & DSP_CAP_TRIGGER ) qDebug( "Sound card has precise trigger" ); 227 //if ( capabilities & DSP_CAP_TRIGGER ) odebug << "Sound card has precise trigger" << oendl;
224 //if ( capabilities & DSP_CAP_MMAP ) qDebug( "Sound card can mmap" ); 228 //if ( capabilities & DSP_CAP_MMAP ) odebug << "Sound card can mmap" << oendl;
225 229
226} 230}
227 231
228 232
229AudioDevice::~AudioDevice() { 233AudioDevice::~AudioDevice() {
230 // qDebug("destryo audiodevice"); 234 // odebug << "destryo audiodevice" << oendl;
231// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; 235// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE;
232 236
233# ifndef KEEP_DEVICE_OPEN 237# ifndef KEEP_DEVICE_OPEN
234 close( d->handle ); // Now it should be safe to shut the handle 238 close( d->handle ); // Now it should be safe to shut the handle
235# endif 239# endif
236 delete d->unwrittenBuffer; 240 delete d->unwrittenBuffer;
237 delete d; 241 delete d;
238// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE; 242// QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE;
@@ -246,17 +250,17 @@ void AudioDevice::volumeChanged( bool muted )
246} 250}
247 251
248 252
249void AudioDevice::write( char *buffer, unsigned int length ) 253void AudioDevice::write( char *buffer, unsigned int length )
250{ 254{
251 int t = ::write( d->handle, buffer, length ); 255 int t = ::write( d->handle, buffer, length );
252 if ( t<0 ) t = 0; 256 if ( t<0 ) t = 0;
253 if ( t != (int)length) { 257 if ( t != (int)length) {
254 // qDebug("Ahhh!! memcpys 1"); 258 // odebug << "Ahhh!! memcpys 1" << oendl;
255 memcpy(d->unwrittenBuffer,buffer+t,length-t); 259 memcpy(d->unwrittenBuffer,buffer+t,length-t);
256 d->unwritten = length-t; 260 d->unwritten = length-t;
257 } 261 }
258//#endif 262//#endif
259} 263}
260 264
261 265
262unsigned int AudioDevice::channels() const 266unsigned int AudioDevice::channels() const
@@ -309,14 +313,14 @@ unsigned int AudioDevice::canWrite() const
309 return d->bufferSize; 313 return d->bufferSize;
310 } 314 }
311} 315}
312 316
313 317
314int AudioDevice::bytesWritten() { 318int AudioDevice::bytesWritten() {
315 int buffered = 0; 319 int buffered = 0;
316 if ( ioctl( d->handle, SNDCTL_DSP_GETODELAY, &buffered ) ) { 320 if ( ioctl( d->handle, SNDCTL_DSP_GETODELAY, &buffered ) ) {
317 // qDebug( "failed to get audio device position" ); 321 // odebug << "failed to get audio device position" << oendl;
318 return -1; 322 return -1;
319 } 323 }
320 return buffered; 324 return buffered;
321} 325}
322 326
diff --git a/core/multimedia/opieplayer/audiowidget.cpp b/core/multimedia/opieplayer/audiowidget.cpp
index 7da2d54..376f8d3 100644
--- a/core/multimedia/opieplayer/audiowidget.cpp
+++ b/core/multimedia/opieplayer/audiowidget.cpp
@@ -12,24 +12,29 @@
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "audiowidget.h"
21#include "mediaplayerstate.h"
22
23/* OPIE */
20#include <qpe/qpeapplication.h> 24#include <qpe/qpeapplication.h>
21#include <qpe/resource.h> 25#include <qpe/resource.h>
22#include <qpe/config.h> 26#include <qpe/config.h>
27#include <opie2/odebug.h>
23 28
29/* QT */
24#include <qdir.h> 30#include <qdir.h>
25#include "audiowidget.h"
26#include "mediaplayerstate.h"
27 31
32/* STD */
28#include <stdlib.h> 33#include <stdlib.h>
29#include <stdio.h> 34#include <stdio.h>
30 35
31extern MediaPlayerState *mediaPlayerState; 36extern MediaPlayerState *mediaPlayerState;
32 37
33 38
34static const int xo = -2; // movable x offset 39static const int xo = -2; // movable x offset
35static const int yo = 22; // movable y offset 40static const int yo = 22; // movable y offset
@@ -66,82 +71,82 @@ static void changeTextColor( QWidget *w ) {
66} 71}
67 72
68static const int numButtons = (sizeof(audioButtons)/sizeof(MediaButton)); 73static const int numButtons = (sizeof(audioButtons)/sizeof(MediaButton));
69 74
70AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) : 75AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) :
71 QWidget( parent, name, f ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ) 76 QWidget( parent, name, f ), songInfo( this ), slider( Qt::Horizontal, this ), time( this )
72{ 77{
73 setCaption( tr("OpiePlayer") ); 78 setCaption( tr("OpiePlayer") );
74 // qDebug("<<<<<audioWidget"); 79 // odebug << "<<<<<audioWidget" << oendl;
75 80
76 Config cfg("OpiePlayer"); 81 Config cfg("OpiePlayer");
77 cfg.setGroup("Options"); 82 cfg.setGroup("Options");
78 skin = cfg.readEntry("Skin","default"); 83 skin = cfg.readEntry("Skin","default");
79 //skin = "scaleTest"; 84 //skin = "scaleTest";
80// color of background, frame, degree of transparency 85// color of background, frame, degree of transparency
81 86
82// QString skinPath = "opieplayer/skins/" + skin; 87// QString skinPath = "opieplayer/skins/" + skin;
83 QString skinPath; 88 QString skinPath;
84 skinPath = "opieplayer2/skins/" + skin; 89 skinPath = "opieplayer2/skins/" + skin;
85 if(!QDir(QString(getenv("OPIEDIR")) +"/pics/"+skinPath).exists()) 90 if(!QDir(QString(getenv("OPIEDIR")) +"/pics/"+skinPath).exists())
86 skinPath = "opieplayer2/skins/default"; 91 skinPath = "opieplayer2/skins/default";
87 92
88 // qDebug("skin path " + skinPath); 93 // odebug << "skin path " + skinPath << oendl;
89 94
90 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 95 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
91 imgUp = new QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) ); 96 imgUp = new QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) );
92 imgDn = new QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) ); 97 imgDn = new QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) );
93 98
94 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 ); 99 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 );
95 imgButtonMask->fill( 0 ); 100 imgButtonMask->fill( 0 );
96 101
97 for ( int i = 0; i < 10; i++ ) { 102 for ( int i = 0; i < 10; i++ ) {
98 QString filename = QString(getenv("OPIEDIR")) + "/pics/" + skinPath + "/skin_mask_" + skin_mask_file_names[i] + ".png"; 103 QString filename = QString(getenv("OPIEDIR")) + "/pics/" + skinPath + "/skin_mask_" + skin_mask_file_names[i] + ".png";
99 masks[i] = new QBitmap( filename ); 104 masks[i] = new QBitmap( filename );
100 105
101 if ( !masks[i]->isNull() ) { 106 if ( !masks[i]->isNull() ) {
102 QImage imgMask = masks[i]->convertToImage(); 107 QImage imgMask = masks[i]->convertToImage();
103 uchar **dest = imgButtonMask->jumpTable(); 108 uchar **dest = imgButtonMask->jumpTable();
104 for ( int y = 0; y < imgUp->height(); y++ ) { 109 for ( int y = 0; y < imgUp->height(); y++ ) {
105 uchar *line = dest[y]; 110 uchar *line = dest[y];
106 for ( int x = 0; x < imgUp->width(); x++ ) 111 for ( int x = 0; x < imgUp->width(); x++ )
107 if ( !qRed( imgMask.pixel( x, y ) ) ) 112 if ( !qRed( imgMask.pixel( x, y ) ) )
108 line[x] = i + 1; 113 line[x] = i + 1;
109 } 114 }
110 } 115 }
111 116
112 } 117 }
113 118
114 for ( int i = 0; i < 11; i++ ) { 119 for ( int i = 0; i < 11; i++ ) {
115 buttonPixUp[i] = NULL; 120 buttonPixUp[i] = NULL;
116 buttonPixDown[i] = NULL; 121 buttonPixDown[i] = NULL;
117 } 122 }
118 123
119 QWidget *d = QApplication::desktop(); 124 QWidget *d = QApplication::desktop();
120 int width = d->width(); 125 int width = d->width();
121 int height = d->height(); 126 int height = d->height();
122 127
123 if( (width != pixBg->width() ) || (height != pixBg->height() ) ) { 128 if( (width != pixBg->width() ) || (height != pixBg->height() ) ) {
124 // qDebug("<<<<<<<< scale image >>>>>>>>>>>>"); 129// odebug << "<<<<<<<< scale image >>>>>>>>>>>>" << oendl;
125 QImage img; 130 QImage img;
126 img = pixBg->convertToImage(); 131 img = pixBg->convertToImage();
127 pixBg->convertFromImage( img.smoothScale( width, height)); 132 pixBg->convertFromImage( img.smoothScale( width, height));
128 } 133 }
129 setBackgroundPixmap( *pixBg); 134 setBackgroundPixmap( *pixBg);
130 135
131 songInfo.setFocusPolicy( QWidget::NoFocus ); 136 songInfo.setFocusPolicy( QWidget::NoFocus );
132 137
133// changeTextColor( &songInfo ); 138// changeTextColor( &songInfo );
134// songInfo.setBackgroundColor( QColor( 167, 212, 167 )); 139// songInfo.setBackgroundColor( QColor( 167, 212, 167 ));
135// songInfo.setFrameStyle( QFrame::NoFrame); 140// songInfo.setFrameStyle( QFrame::NoFrame);
136// songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); 141// songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
137 //NoFrame 142 //NoFrame
138// songInfo.setForegroundColor(Qt::white); 143// songInfo.setForegroundColor(Qt::white);
139 144
140 slider.setFixedHeight( 20 ); 145 slider.setFixedHeight( 20 );
141 slider.setMinValue( 0 ); 146 slider.setMinValue( 0 );
142 slider.setMaxValue( 1 ); 147 slider.setMaxValue( 1 );
143 slider.setFocusPolicy( QWidget::NoFocus ); 148 slider.setFocusPolicy( QWidget::NoFocus );
144 149
145 slider.setBackgroundPixmap( *pixBg ); 150 slider.setBackgroundPixmap( *pixBg );
146 151
147 time.setFocusPolicy( QWidget::NoFocus ); 152 time.setFocusPolicy( QWidget::NoFocus );
@@ -167,17 +172,17 @@ AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) :
167// setPaused( mediaPlayerState->paused() ); 172// setPaused( mediaPlayerState->paused() );
168 setPlaying( mediaPlayerState->playing() ); 173 setPlaying( mediaPlayerState->playing() );
169this->setFocus(); 174this->setFocus();
170} 175}
171 176
172 177
173AudioWidget::~AudioWidget() { 178AudioWidget::~AudioWidget() {
174 // setPlaying( false); 179 // setPlaying( false);
175 180
176 for ( int i = 0; i < 10; i++ ) { 181 for ( int i = 0; i < 10; i++ ) {
177 if(buttonPixUp[i]) delete buttonPixUp[i]; 182 if(buttonPixUp[i]) delete buttonPixUp[i];
178 if(buttonPixDown[i]) delete buttonPixDown[i]; 183 if(buttonPixDown[i]) delete buttonPixDown[i];
179 } 184 }
180 if(pixBg) delete pixBg; 185 if(pixBg) delete pixBg;
181 if(imgUp) delete imgUp; 186 if(imgUp) delete imgUp;
182 if(imgDn) delete imgDn; 187 if(imgDn) delete imgDn;
183 if(imgButtonMask) delete imgButtonMask; 188 if(imgButtonMask) delete imgButtonMask;
@@ -248,17 +253,17 @@ void AudioWidget::sliderReleased() {
248 if ( slider.width() == 0 ) 253 if ( slider.width() == 0 )
249 return; 254 return;
250 long val = long((double)slider.value() * mediaPlayerState->length() / slider.width()); 255 long val = long((double)slider.value() * mediaPlayerState->length() / slider.width());
251 mediaPlayerState->setPosition( val ); 256 mediaPlayerState->setPosition( val );
252} 257}
253 258
254 259
255void AudioWidget::setPosition( long i ) { 260void AudioWidget::setPosition( long i ) {
256// qDebug("set position %d",i); 261// odebug << "set position " << i << "" << oendl;
257 long length = mediaPlayerState->length(); 262 long length = mediaPlayerState->length();
258 updateSlider( i, length ); 263 updateSlider( i, length );
259} 264}
260 265
261 266
262void AudioWidget::setLength( long max ) { 267void AudioWidget::setLength( long max ) {
263 updateSlider( mediaPlayerState->position(), max ); 268 updateSlider( mediaPlayerState->position(), max );
264} 269}
@@ -295,17 +300,17 @@ static QString timeAsString( long length ) {
295 int minutes = length / 60; 300 int minutes = length / 60;
296 int seconds = length % 60; 301 int seconds = length % 60;
297 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 ); 302 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 );
298} 303}
299 304
300void AudioWidget::updateSlider( long i, long max ) { 305void AudioWidget::updateSlider( long i, long max ) {
301this->setFocus(); 306this->setFocus();
302 time.setText( timeAsString( i ) + " / " + timeAsString( max ) ); 307 time.setText( timeAsString( i ) + " / " + timeAsString( max ) );
303 308
304 if ( max == 0 ) 309 if ( max == 0 )
305 return; 310 return;
306 // Will flicker too much if we don't do this 311 // Will flicker too much if we don't do this
307 // Scale to something reasonable 312 // Scale to something reasonable
308 int width = slider.width(); 313 int width = slider.width();
309 int val = int((double)i * width / max); 314 int val = int((double)i * width / max);
310 if ( !audioSliderBeingMoved ) { 315 if ( !audioSliderBeingMoved ) {
311 if ( slider.value() != val ) 316 if ( slider.value() != val )
@@ -361,29 +366,29 @@ void AudioWidget::mouseMoveEvent( QMouseEvent *event ) {
361 366
362 // The test to see if the mouse click is inside the button or not 367 // The test to see if the mouse click is inside the button or not
363 int x = event->pos().x() - xoff; 368 int x = event->pos().x() - xoff;
364 int y = event->pos().y() - yoff; 369 int y = event->pos().y() - yoff;
365 370
366 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width() 371 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width()
367 && y < imgButtonMask->height() && imgButtonMask->pixelIndex( x, y ) == i + 1 ); 372 && y < imgButtonMask->height() && imgButtonMask->pixelIndex( x, y ) == i + 1 );
368 373
369// if ( isOnButton && i == AudioVolumeUp ) 374// if ( isOnButton && i == AudioVolumeUp )
370// qDebug("on up"); 375// odebug << "on up" << oendl;
371 376
372 if ( isOnButton && !audioButtons[i].isHeld ) { 377 if ( isOnButton && !audioButtons[i].isHeld ) {
373 audioButtons[i].isHeld = TRUE; 378 audioButtons[i].isHeld = TRUE;
374 toggleButton(i); 379 toggleButton(i);
375 switch (i) { 380 switch (i) {
376 case AudioVolumeUp: 381 case AudioVolumeUp:
377 // qDebug("more clicked"); 382 // odebug << "more clicked" << oendl;
378 emit moreClicked(); 383 emit moreClicked();
379 return; 384 return;
380 case AudioVolumeDown: 385 case AudioVolumeDown:
381 // qDebug("less clicked"); 386 // odebug << "less clicked" << oendl;
382 emit lessClicked(); 387 emit lessClicked();
383 return; 388 return;
384 case AudioForward: 389 case AudioForward:
385 emit forwardClicked(); 390 emit forwardClicked();
386 return; 391 return;
387 case AudioBack: 392 case AudioBack:
388 emit backClicked(); 393 emit backClicked();
389 return; 394 return;
@@ -465,17 +470,17 @@ void AudioWidget::paintEvent( QPaintEvent * pe) {
465void AudioWidget::keyReleaseEvent( QKeyEvent *e) 470void AudioWidget::keyReleaseEvent( QKeyEvent *e)
466{ 471{
467 switch ( e->key() ) { 472 switch ( e->key() ) {
468////////////////////////////// Zaurus keys 473////////////////////////////// Zaurus keys
469 case Key_Home: 474 case Key_Home:
470 break; 475 break;
471 case Key_F9: //activity 476 case Key_F9: //activity
472 hide(); 477 hide();
473// qDebug("Audio F9"); 478// odebug << "Audio F9" << oendl;
474 break; 479 break;
475 case Key_F10: //contacts 480 case Key_F10: //contacts
476 break; 481 break;
477 case Key_F11: //menu 482 case Key_F11: //menu
478 break; 483 break;
479 case Key_F12: //home 484 case Key_F12: //home
480 break; 485 break;
481 case Key_F13: //mail 486 case Key_F13: //mail
diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.cpp b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
index 1989b4a..428fc28 100644
--- a/core/multimedia/opieplayer/libmad/libmadplugin.cpp
+++ b/core/multimedia/opieplayer/libmad/libmadplugin.cpp
@@ -14,52 +14,57 @@
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20// largly modified by Maximilian Reiss <max.reiss@gmx.de> 20// largly modified by Maximilian Reiss <max.reiss@gmx.de>
21 21
22#include "libmadplugin.h"
23
24/* OPIE */
25#include <qpe/config.h>
26#include <opie2/odebug.h>
27
28/* QT */
29#include <qapplication.h>
30#include <qmessagebox.h>
31#include <qregexp.h>
32
33/* STD */
22#include <stdio.h> 34#include <stdio.h>
23#include <stdarg.h> 35#include <stdarg.h>
24#include <stdlib.h> 36#include <stdlib.h>
25#include <sys/types.h> 37#include <sys/types.h>
26#include <sys/stat.h> 38#include <sys/stat.h>
27#include <fcntl.h> 39#include <fcntl.h>
28#include <unistd.h> 40#include <unistd.h>
29#include <string.h> 41#include <string.h>
30#include <ctype.h> 42#include <ctype.h>
31#include <errno.h> 43#include <errno.h>
32#include <time.h> 44#include <time.h>
33#include <locale.h> 45#include <locale.h>
34#include <math.h> 46#include <math.h>
35#include <assert.h> 47#include <assert.h>
36 48
37#include <qapplication.h>
38#include <qmessagebox.h>
39#include <qregexp.h>
40
41#include <qpe/config.h>
42
43// for network handling 49// for network handling
44#include <netinet/in.h> 50#include <netinet/in.h>
45#include <netdb.h> 51#include <netdb.h>
46#include <linux/limits.h> 52#include <linux/limits.h>
47#include <sys/socket.h> 53#include <sys/socket.h>
48#include <arpa/inet.h> 54#include <arpa/inet.h>
49#include <unistd.h> 55#include <unistd.h>
50 56
51 57
52//#define HAVE_MMAP 58//#define HAVE_MMAP
53 59
54#if defined(HAVE_MMAP) 60#if defined(HAVE_MMAP)
55# include <sys/mman.h> 61# include <sys/mman.h>
56#endif 62#endif
57#include "libmadplugin.h"
58 63
59 64
60extern "C" { 65extern "C" {
61#include "mad.h" 66#include "mad.h"
62} 67}
63 68
64 69
65#define MPEG_BUFFER_SIZE 65536 70#define MPEG_BUFFER_SIZE 65536
@@ -377,31 +382,31 @@ int LibMadPlugin::http_open(const QString& path ) {
377 QString message = tr("Info: "); 382 QString message = tr("Info: ");
378 do { 383 do {
379 384
380 int len; 385 int len;
381 386
382 len = http_read_line(tcp_sock, http_request, sizeof(http_request)); 387 len = http_read_line(tcp_sock, http_request, sizeof(http_request));
383 388
384 if (len == -1) { 389 if (len == -1) {
385 // qDebug( "http_open: "+ QString(strerror(errno)) +"\n"); 390 // odebug << "http_open: "+ QString(strerror(errno)) +"\n" << oendl;
386 return 0; 391 return 0;
387 } 392 }
388 393
389 if (QString(http_request).left(9) == "Location:") { 394 if (QString(http_request).left(9) == "Location:") {
390 /* redirect */ 395 /* redirect */
391 ::close(tcp_sock); 396 ::close(tcp_sock);
392 http_request[strlen(http_request) - 1] = '\0'; 397 http_request[strlen(http_request) - 1] = '\0';
393 return http_open(&http_request[10]); 398 return http_open(&http_request[10]);
394 } 399 }
395 400
396 if (QString(http_request).left(4) == "ICY ") { 401 if (QString(http_request).left(4) == "ICY ") {
397 /* This is shoutcast/icecast streaming */ 402 /* This is shoutcast/icecast streaming */
398 if (strncmp(http_request + 4, "200 ", 4)) { 403 if (strncmp(http_request + 4, "200 ", 4)) {
399 // qDebug("http_open: " + QString(http_request) + "\n"); 404 // odebug << "http_open: " + QString(http_request) + "\n" << oendl;
400 return 0; 405 return 0;
401 } 406 }
402 } else if (QString(http_request).left(4) == "icy-") { 407 } else if (QString(http_request).left(4) == "icy-") {
403 /* we can have: icy-noticeX, icy-name, icy-genre, icy-url, icy-pub, icy-metaint, icy-br */ 408 /* we can have: icy-noticeX, icy-name, icy-genre, icy-url, icy-pub, icy-metaint, icy-br */
404 if ( QString( http_request ).left( 8 ) == "icy-name" ) { 409 if ( QString( http_request ).left( 8 ) == "icy-name" ) {
405 name = tr("Name: ") + QString(http_request).mid(9, (QString(http_request).length())- 9 ); 410 name = tr("Name: ") + QString(http_request).mid(9, (QString(http_request).length())- 9 );
406 } else if ( QString( http_request ).left( 9 ) == "icy-genre" ) { 411 } else if ( QString( http_request ).left( 9 ) == "icy-genre" ) {
407 genre = tr("Genre: ") + QString(http_request).mid(10, (QString(http_request).length())-10 ); 412 genre = tr("Genre: ") + QString(http_request).mid(10, (QString(http_request).length())-10 );
@@ -412,77 +417,77 @@ int LibMadPlugin::http_open(const QString& path ) {
412 } else if ( QString( http_request ).left( 10 ) == "icy-notice" ) { 417 } else if ( QString( http_request ).left( 10 ) == "icy-notice" ) {
413 message += QString(http_request).mid(11, QString(http_request).length()-11 ) ; 418 message += QString(http_request).mid(11, QString(http_request).length()-11 ) ;
414 } 419 }
415 } 420 }
416 } while (strcmp(http_request, "\n") != 0); 421 } while (strcmp(http_request, "\n") != 0);
417 422
418 info = QString(name + genre + url + bitrate + message).replace( QRegExp("\n"), " : " ); 423 info = QString(name + genre + url + bitrate + message).replace( QRegExp("\n"), " : " );
419 424
420 // qDebug("Stream info: " + info); 425 // odebug << "Stream info: " + info << oendl;
421 426
422 return (tcp_sock); 427 return (tcp_sock);
423} 428}
424 429
425 430
426 431
427bool LibMadPlugin::open( const QString& path ) { 432bool LibMadPlugin::open( const QString& path ) {
428 debugMsg( "LibMadPlugin::open" ); 433 debugMsg( "LibMadPlugin::open" );
429 Config cfg("OpiePlayer"); 434 Config cfg("OpiePlayer");
430 cfg.setGroup("Options"); 435 cfg.setGroup("Options");
431 bufferSize = cfg.readNumEntry("MPeg_BufferSize",MPEG_BUFFER_SIZE); 436 bufferSize = cfg.readNumEntry("MPeg_BufferSize",MPEG_BUFFER_SIZE);
432 // qDebug("buffer size is %d", bufferSize); 437 // odebug << "buffer size is " << bufferSize << "" << oendl;
433 d->bad_last_frame = 0; 438 d->bad_last_frame = 0;
434 d->flush = TRUE; 439 d->flush = TRUE;
435 info = QString( "" ); 440 info = QString( "" );
436 441
437 //qDebug( "Opening %s", path.latin1() ); 442 //odebug << "Opening " << path << "" << oendl;
438 443
439 if (path.left( 4 ) == "http" ) { 444 if (path.left( 4 ) == "http" ) {
440 // in case of any error we get 0 here 445 // in case of any error we get 0 here
441 if ( !(http_open(path) == 0) ) { 446 if ( !(http_open(path) == 0) ) {
442 d->input.fd = http_open(path); 447 d->input.fd = http_open(path);
443 } else { 448 } else {
444 return FALSE; 449 return FALSE;
445 } 450 }
446 } else { 451 } else {
447 d->input.path = path.latin1(); 452 d->input.path = path.latin1();
448 d->input.fd = ::open( d->input.path, O_RDONLY ); 453 d->input.fd = ::open( d->input.path, O_RDONLY );
449 // thats a better place, since it should only seek for ID3 tags on mp3 files, not streams 454 // thats a better place, since it should only seek for ID3 tags on mp3 files, not streams
450 printID3Tags(); 455 printID3Tags();
451 } 456 }
452 if (d->input.fd == -1) { 457 if (d->input.fd == -1) {
453 // qDebug("error opening %s", d->input.path ); 458 // odebug << "error opening " << d->input.path << "" << oendl;
454 return FALSE; 459 return FALSE;
455 } 460 }
456 461
457 struct stat stat; 462 struct stat stat;
458 if (fstat(d->input.fd, &stat) == -1) { 463 if (fstat(d->input.fd, &stat) == -1) {
459 // qDebug("error calling fstat"); return FALSE; 464 // odebug << "error calling fstat" << oendl; return FALSE;
460 } 465 }
461 if (S_ISREG(stat.st_mode) && stat.st_size > 0) 466 if (S_ISREG(stat.st_mode) && stat.st_size > 0)
462 d->input.fileLength = stat.st_size; 467 d->input.fileLength = stat.st_size;
463 else 468 else
464 d->input.fileLength = 0; 469 d->input.fileLength = 0;
465 470
466#if defined(HAVE_MMAP) 471#if defined(HAVE_MMAP)
467 if (S_ISREG(stat.st_mode) && stat.st_size > 0) { 472 if (S_ISREG(stat.st_mode) && stat.st_size > 0) {
468 d->input.length = stat.st_size; 473 d->input.length = stat.st_size;
469 d->input.fdm = map_file(d->input.fd, &d->input.length); 474 d->input.fdm = map_file(d->input.fd, &d->input.length);
470 if (d->input.fdm == 0) { 475 if (d->input.fdm == 0) {
471 // qDebug("error mmapping file"); return FALSE; 476 // odebug << "error mmapping file" << oendl; return FALSE;
472 } 477 }
473 d->input.data = (unsigned char *)d->input.fdm; 478 d->input.data = (unsigned char *)d->input.fdm;
474 } 479 }
475#endif 480#endif
476 481
477 if (d->input.data == 0) { 482 if (d->input.data == 0) {
478 d->input.data = (unsigned char *)malloc( bufferSize /*MPEG_BUFFER_SIZE*/); 483 d->input.data = (unsigned char *)malloc( bufferSize /*MPEG_BUFFER_SIZE*/);
479 if (d->input.data == 0) { 484 if (d->input.data == 0) {
480 // qDebug("error allocating input buffer"); 485 // odebug << "error allocating input buffer" << oendl;
481 return FALSE; 486 return FALSE;
482 } 487 }
483 d->input.length = 0; 488 d->input.length = 0;
484 } 489 }
485 490
486 d->input.eof = 0; 491 d->input.eof = 0;
487 492
488 mad_stream_init(&d->stream); 493 mad_stream_init(&d->stream);
@@ -500,31 +505,31 @@ bool LibMadPlugin::close() {
500 505
501 mad_synth_finish(&d->synth); 506 mad_synth_finish(&d->synth);
502 mad_frame_finish(&d->frame); 507 mad_frame_finish(&d->frame);
503 mad_stream_finish(&d->stream); 508 mad_stream_finish(&d->stream);
504 509
505#if defined(HAVE_MMAP) 510#if defined(HAVE_MMAP)
506 if (d->input.fdm) { 511 if (d->input.fdm) {
507 if (unmap_file(d->input.fdm, d->input.length) == -1) { 512 if (unmap_file(d->input.fdm, d->input.length) == -1) {
508 // qDebug("error munmapping file"); 513 // odebug << "error munmapping file" << oendl;
509 result = FALSE; 514 result = FALSE;
510 } 515 }
511 d->input.fdm = 0; 516 d->input.fdm = 0;
512 d->input.data = 0; 517 d->input.data = 0;
513 } 518 }
514#endif 519#endif
515 520
516 if (d->input.data) { 521 if (d->input.data) {
517 free(d->input.data); 522 free(d->input.data);
518 d->input.data = 0; 523 d->input.data = 0;
519 } 524 }
520 525
521 if (::close(d->input.fd) == -1) { 526 if (::close(d->input.fd) == -1) {
522 // qDebug("error closing file %s", d->input.path); 527 // odebug << "error closing file " << d->input.path << "" << oendl;
523 result = FALSE; 528 result = FALSE;
524 } 529 }
525 530
526 d->input.fd = 0; 531 d->input.fd = 0;
527 532
528 return result; 533 return result;
529} 534}
530 535
@@ -540,64 +545,63 @@ int LibMadPlugin::audioStreams() {
540 return 1; 545 return 1;
541} 546}
542 547
543 548
544int LibMadPlugin::audioChannels( int ) { 549int LibMadPlugin::audioChannels( int ) {
545 debugMsg( "LibMadPlugin::audioChannels" ); 550 debugMsg( "LibMadPlugin::audioChannels" );
546/* 551/*
547 long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 ); 552 long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 );
548 qDebug( "LibMadPlugin::audioChannels: %i", d->frame.header.mode > 0 ? 2 : 1 ); 553 odebug << "LibMadPlugin::audioChannels: " << d->frame.header.mode > 0 ? 2 : 1 << "" << oendl;
549 return d->frame.header.mode > 0 ? 2 : 1; 554 return d->frame.header.mode > 0 ? 2 : 1;
550*/ 555*/
551 return 2; 556 return 2;
552} 557}
553 558
554 559
555int LibMadPlugin::audioFrequency( int ) { 560int LibMadPlugin::audioFrequency( int ) {
556 debugMsg( "LibMadPlugin::audioFrequency" ); 561 debugMsg( "LibMadPlugin::audioFrequency" );
557 long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 ); 562 long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 );
558 // qDebug( "LibMadPlugin::audioFrequency: %i", d->frame.header.samplerate ); 563 // odebug << "LibMadPlugin::audioFrequency: " << d->frame.header.samplerate << "" << oendl;
559 return d->frame.header.samplerate; 564 return d->frame.header.samplerate;
560} 565}
561 566
562 567
563int LibMadPlugin::audioSamples( int ) { 568int LibMadPlugin::audioSamples( int ) {
564 debugMsg( "LibMadPlugin::audioSamples" ); 569 debugMsg( "LibMadPlugin::audioSamples" );
565 570
566 long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 ); 571 long t; short t1[5]; audioReadSamples( t1, 2, 1, t, 0 );
567 mad_header_decode( (struct mad_header *)&d->frame.header, &d->stream ); 572 mad_header_decode( (struct mad_header *)&d->frame.header, &d->stream );
568/* 573/*
569 qDebug( "LibMadPlugin::audioSamples: %i*%i", d->frame.header.duration.seconds, 574 odebug << "LibMadPlugin::audioSamples: " << d->frame.header.duration.seconds << "*" << d->frame.header.samplerate << oendl;
570 d->frame.header.samplerate );
571 return d->frame.header.duration.seconds * d->frame.header.samplerate; 575 return d->frame.header.duration.seconds * d->frame.header.samplerate;
572*/ 576*/
573 if ( d->frame.header.bitrate == 0 ) 577 if ( d->frame.header.bitrate == 0 )
574 return 0; 578 return 0;
575 int samples = (d->input.fileLength / (d->frame.header.bitrate/8)) * d->frame.header.samplerate; 579 int samples = (d->input.fileLength / (d->frame.header.bitrate/8)) * d->frame.header.samplerate;
576 580
577 // qDebug( "LibMadPlugin::audioSamples: %i * %i * 8 / %i", (int)d->input.fileLength, 581 // qDebug( "LibMadPlugin::audioSamples: %i * %i * 8 / %i", (int)d->input.fileLength,
578 // (int)d->frame.header.samplerate, (int)d->frame.header.bitrate ); 582 // (int)d->frame.header.samplerate, (int)d->frame.header.bitrate );
579 // qDebug( "LibMadPlugin::audioSamples: %i", samples ); 583 // odebug << "LibMadPlugin::audioSamples: " << samples << "" << oendl;
580 584
581 return samples; 585 return samples;
582 586
583// return 10000000; 587// return 10000000;
584} 588}
585 589
586 590
587bool LibMadPlugin::audioSetSample( long, int ) { 591bool LibMadPlugin::audioSetSample( long, int ) {
588 debugMsg( "LibMadPlugin::audioSetSample" ); 592 debugMsg( "LibMadPlugin::audioSetSample" );
589 593
590// long totalSamples = audioSamples(0); 594// long totalSamples = audioSamples(0);
591// if ( totalSamples <= 1 ) 595// if ( totalSamples <= 1 )
592// return FALSE; 596// return FALSE;
593 597
594// // Seek to requested position 598// // Seek to requested position
595// qDebug( "seek pos: %i", (int)((double)pos * d->input.fileLength / totalSamples) ); 599// odebug << "seek pos: " << (int)((double)pos * d->input.fileLength / totalSamples) << "" << oendl;
596// ::lseek( d->input.fd, (long)((double)pos * d->input.fileLength / totalSamples), SEEK_SET ); 600// ::lseek( d->input.fd, (long)((double)pos * d->input.fileLength / totalSamples), SEEK_SET );
597// mad_stream_sync(&d->stream); 601// mad_stream_sync(&d->stream);
598 602
599// mad_stream_init(&d->stream); 603// mad_stream_init(&d->stream);
600// mad_frame_init(&d->frame); 604// mad_frame_init(&d->frame);
601// mad_synth_init(&d->synth); 605// mad_synth_init(&d->synth);
602 606
603// return TRUE; 607// return TRUE;
@@ -675,17 +679,17 @@ bool LibMadPlugin::read() {
675 } 679 }
676 680
677 do { 681 do {
678 len = ::read(d->input.fd, d->input.data + d->input.length, bufferSize /* MPEG_BUFFER_SIZE*/ - d->input.length); 682 len = ::read(d->input.fd, d->input.data + d->input.length, bufferSize /* MPEG_BUFFER_SIZE*/ - d->input.length);
679 } 683 }
680 while (len == -1 && errno == EINTR); 684 while (len == -1 && errno == EINTR);
681 685
682 if (len == -1) { 686 if (len == -1) {
683 // qDebug("error reading audio"); 687 // odebug << "error reading audio" << oendl;
684 return FALSE; 688 return FALSE;
685 } 689 }
686 else if (len == 0) { 690 else if (len == 0) {
687 d->input.eof = 1; 691 d->input.eof = 1;
688 692
689 assert(bufferSize /*MPEG_BUFFER_SIZE*/ - d->input.length >= MAD_BUFFER_GUARD); 693 assert(bufferSize /*MPEG_BUFFER_SIZE*/ - d->input.length >= MAD_BUFFER_GUARD);
690 694
691 while (len < MAD_BUFFER_GUARD) 695 while (len < MAD_BUFFER_GUARD)
@@ -753,17 +757,17 @@ bool LibMadPlugin::decode( short *output, long samples, long& samplesMade ) {
753 757
754 while (mad_frame_decode(&d->frame, &d->stream) == -1) { 758 while (mad_frame_decode(&d->frame, &d->stream) == -1) {
755 if (!MAD_RECOVERABLE(d->stream.error)) { 759 if (!MAD_RECOVERABLE(d->stream.error)) {
756 debugMsg( "feed me" ); 760 debugMsg( "feed me" );
757 return FALSE; // Feed me 761 return FALSE; // Feed me
758 } 762 }
759 if ( d->stream.error == MAD_ERROR_BADCRC ) { 763 if ( d->stream.error == MAD_ERROR_BADCRC ) {
760 mad_frame_mute(&d->frame); 764 mad_frame_mute(&d->frame);
761 // qDebug( "error decoding, bad crc" ); 765 // odebug << "error decoding, bad crc" << oendl;
762 } 766 }
763 } 767 }
764 768
765 mad_synth_frame(&d->synth, &d->frame); 769 mad_synth_frame(&d->synth, &d->frame);
766 int decodedSamples = d->synth.pcm.length; 770 int decodedSamples = d->synth.pcm.length;
767 memcpy( &(buffer[0][offset]), d->synth.pcm.samples[0], decodedSamples * sizeof(mad_fixed_t) ); 771 memcpy( &(buffer[0][offset]), d->synth.pcm.samples[0], decodedSamples * sizeof(mad_fixed_t) );
768 if ( d->synth.pcm.channels == 2 ) 772 if ( d->synth.pcm.channels == 2 )
769 memcpy( &(buffer[1][offset]), d->synth.pcm.samples[1], decodedSamples * sizeof(mad_fixed_t) ); 773 memcpy( &(buffer[1][offset]), d->synth.pcm.samples[1], decodedSamples * sizeof(mad_fixed_t) );
@@ -816,54 +820,54 @@ bool LibMadPlugin::audioReadSamples( short *output, int /*channels*/, long sampl
816 820
817double LibMadPlugin::getTime() { 821double LibMadPlugin::getTime() {
818 debugMsg( "LibMadPlugin::getTime" ); 822 debugMsg( "LibMadPlugin::getTime" );
819 return 0.0; 823 return 0.0;
820} 824}
821 825
822 826
823void LibMadPlugin::printID3Tags() { 827void LibMadPlugin::printID3Tags() {
824 // qDebug( "LibMadPlugin::printID3Tags" ); 828 // odebug << "LibMadPlugin::printID3Tags" << oendl;
825 829
826 char id3v1[128 + 1]; 830 char id3v1[128 + 1];
827 831
828 if ( ::lseek( d->input.fd, -128, SEEK_END ) == -1 ) { 832 if ( ::lseek( d->input.fd, -128, SEEK_END ) == -1 ) {
829 // qDebug( "error seeking to id3 tags" ); 833 // odebug << "error seeking to id3 tags" << oendl;
830 return; 834 return;
831 } 835 }
832 836
833 if ( ::read( d->input.fd, id3v1, 128 ) != 128 ) { 837 if ( ::read( d->input.fd, id3v1, 128 ) != 128 ) {
834 // qDebug( "error reading in id3 tags" ); 838 // odebug << "error reading in id3 tags" << oendl;
835 return; 839 return;
836 } 840 }
837 841
838 if ( ::strncmp( (const char *)id3v1, "TAG", 3 ) != 0 ) { 842 if ( ::strncmp( (const char *)id3v1, "TAG", 3 ) != 0 ) {
839 debugMsg( "sorry, no id3 tags" ); 843 debugMsg( "sorry, no id3 tags" );
840 } else { 844 } else {
841 int len[5] = { 30, 30, 30, 4, 30 }; 845 int len[5] = { 30, 30, 30, 4, 30 };
842 QString label[5] = { tr( "Title" ), tr( "Artist" ), tr( "Album" ), tr( "Year" ), tr( "Comment" ) }; 846 QString label[5] = { tr( "Title" ), tr( "Artist" ), tr( "Album" ), tr( "Year" ), tr( "Comment" ) };
843 char *ptr = id3v1 + 3, *ptr2 = ptr + len[0]; 847 char *ptr = id3v1 + 3, *ptr2 = ptr + len[0];
844 // qDebug( "ID3 tags in file:" ); 848 // odebug << "ID3 tags in file:" << oendl;
845 info = ""; 849 info = "";
846 for ( int i = 0; i < 5; ptr += len[i], i++, ptr2 += len[i] ) { 850 for ( int i = 0; i < 5; ptr += len[i], i++, ptr2 += len[i] ) {
847 char push = *ptr2; 851 char push = *ptr2;
848 *ptr2 = '\0'; 852 *ptr2 = '\0';
849 char *ptr3 = ptr2; 853 char *ptr3 = ptr2;
850 while ( ptr3-1 >= ptr && isspace(ptr3[-1]) ) ptr3--; 854 while ( ptr3-1 >= ptr && isspace(ptr3[-1]) ) ptr3--;
851 char push2 = *ptr3; *ptr3 = '\0'; 855 char push2 = *ptr3; *ptr3 = '\0';
852 if ( strcmp( ptr, "" ) ) { 856 if ( strcmp( ptr, "" ) ) {
853 if( ((QString)ptr).find(" ") == -1) // don't add anything that has blanks 857 if( ((QString)ptr).find(" ") == -1) // don't add anything that has blanks
854 info += ( i != 0 ? ", " : "" ) + label[i] + ": " + ptr; 858 info += ( i != 0 ? ", " : "" ) + label[i] + ": " + ptr;
855 } 859 }
856// qDebug( info.latin1() ); 860// odebug << info.latin1() << oendl;
857 *ptr3 = push2; 861 *ptr3 = push2;
858 *ptr2 = push; 862 *ptr2 = push;
859 } 863 }
860 if (id3v1[126] == 0 && id3v1[127] != 0) 864 if (id3v1[126] == 0 && id3v1[127] != 0)
861 info += tr( ", Track: " ) + id3v1[127]; 865 info += tr( ", Track: " ) + id3v1[127];
862 } 866 }
863 867
864 if ( ::lseek(d->input.fd, 0, SEEK_SET) == -1 ) { 868 if ( ::lseek(d->input.fd, 0, SEEK_SET) == -1 ) {
865 // qDebug( "error seeking back to beginning" ); 869 // odebug << "error seeking back to beginning" << oendl;
866 return; 870 return;
867 } 871 }
868} 872}
869 873
diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp
index 4ed5921..91153fd 100644
--- a/core/multimedia/opieplayer/loopcontrol.cpp
+++ b/core/multimedia/opieplayer/loopcontrol.cpp
@@ -14,32 +14,40 @@
14 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 14 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
15 ** 15 **
16 ** Contact info@trolltech.com if any conditions of this licensing are 16 ** Contact info@trolltech.com if any conditions of this licensing are
17 ** not clear to you. 17 ** not clear to you.
18 ** 18 **
19 **********************************************************************/ 19 **********************************************************************/
20// L.J.Potter added changes Fri 02-15-2002 20// L.J.Potter added changes Fri 02-15-2002
21 21
22
23#include "mediaplayerstate.h"
24#include "loopcontrol.h"
25#include "videowidget.h"
26#include "audiodevice.h"
27
28/* OPIE */
22#include <qpe/qpeapplication.h> 29#include <qpe/qpeapplication.h>
30#include <qpe/mediaplayerplugininterface.h>
31#include <opie2/odebug.h>
23 32
24#ifdef Q_WS_QWS 33#ifdef Q_WS_QWS
25#include <qpe/qcopenvelope_qws.h> 34#include <qpe/qcopenvelope_qws.h>
26#endif 35#endif
36
37/* QT */
38
39/* STD */
27#include <stdio.h> 40#include <stdio.h>
28#include <stdlib.h> 41#include <stdlib.h>
29#include <string.h> 42#include <string.h>
30#include <pthread.h> 43#include <pthread.h>
31#include <errno.h> 44#include <errno.h>
32#include <unistd.h> 45#include <unistd.h>
33#include "loopcontrol.h"
34#include "videowidget.h"
35#include "audiodevice.h"
36#include <qpe/mediaplayerplugininterface.h>
37#include "mediaplayerstate.h"
38 46
39 47
40extern VideoWidget *videoUI; // now only needed to tell it to play a frame 48extern VideoWidget *videoUI; // now only needed to tell it to play a frame
41extern MediaPlayerState *mediaPlayerState; 49extern MediaPlayerState *mediaPlayerState;
42 50
43 51
44//#define DecodeLoopDebug(x) qDebug x 52//#define DecodeLoopDebug(x) qDebug x
45#define DecodeLoopDebug(x) 53#define DecodeLoopDebug(x)
@@ -95,34 +103,34 @@ void *startAudioThread( void *ptr ) {
95 103
96Mutex *audioMutex; 104Mutex *audioMutex;
97 105
98 106
99LoopControl::LoopControl( QObject *parent, const char *name ) 107LoopControl::LoopControl( QObject *parent, const char *name )
100 : QObject( parent, name ) { 108 : QObject( parent, name ) {
101 isMuted = FALSE; 109 isMuted = FALSE;
102 connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( setMute(bool) ) ); 110 connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( setMute(bool) ) );
103 //qDebug("starting loopcontrol"); 111 //odebug << "starting loopcontrol" << oendl;
104 audioMutex = new Mutex; 112 audioMutex = new Mutex;
105 113
106 pthread_attr_init(&audio_attr); 114 pthread_attr_init(&audio_attr);
107#define USE_REALTIME_AUDIO_THREAD 115#define USE_REALTIME_AUDIO_THREAD
108#ifdef USE_REALTIME_AUDIO_THREAD 116#ifdef USE_REALTIME_AUDIO_THREAD
109 // Attempt to set it to real-time round robin 117 // Attempt to set it to real-time round robin
110 if ( pthread_attr_setschedpolicy( &audio_attr, SCHED_RR ) == 0 ) { 118 if ( pthread_attr_setschedpolicy( &audio_attr, SCHED_RR ) == 0 ) {
111 sched_param params; 119 sched_param params;
112 params.sched_priority = 50; 120 params.sched_priority = 50;
113 pthread_attr_setschedparam(&audio_attr,&params); 121 pthread_attr_setschedparam(&audio_attr,&params);
114 } else { 122 } else {
115 // qDebug( "Error setting up a realtime thread, reverting to using a normal thread." ); 123 // odebug << "Error setting up a realtime thread, reverting to using a normal thread." << oendl;
116 pthread_attr_destroy(&audio_attr); 124 pthread_attr_destroy(&audio_attr);
117 pthread_attr_init(&audio_attr); 125 pthread_attr_init(&audio_attr);
118 } 126 }
119#endif 127#endif
120 //qDebug("create audio thread"); 128 //odebug << "create audio thread" << oendl;
121 pthread_create(&audio_tid, &audio_attr, (void * (*)(void *))startAudioThread, this); 129 pthread_create(&audio_tid, &audio_attr, (void * (*)(void *))startAudioThread, this);
122} 130}
123 131
124 132
125LoopControl::~LoopControl() { 133LoopControl::~LoopControl() {
126 stop(); 134 stop();
127} 135}
128 136
@@ -139,26 +147,26 @@ void LoopControl::timerEvent( QTimerEvent *te ) {
139 if ( te->timerId() == sliderId ) { 147 if ( te->timerId() == sliderId ) {
140 if ( hasAudioChannel && !hasVideoChannel && moreAudio ) { 148 if ( hasAudioChannel && !hasVideoChannel && moreAudio ) {
141 mediaPlayerState->updatePosition( audioSampleCounter ); 149 mediaPlayerState->updatePosition( audioSampleCounter );
142 } else if ( hasVideoChannel && moreVideo ) { 150 } else if ( hasVideoChannel && moreVideo ) {
143 mediaPlayerState->updatePosition( current_frame ); 151 mediaPlayerState->updatePosition( current_frame );
144 } 152 }
145 } 153 }
146 154
147 if ( !moreVideo && !moreAudio ) { 155 if ( !moreVideo && !moreAudio ) {
148 mediaPlayerState->setPlaying( FALSE ); 156 mediaPlayerState->setPlaying( FALSE );
149 mediaPlayerState->setNext(); 157 mediaPlayerState->setNext();
150 } 158 }
151} 159}
152 160
153 161
154void LoopControl::setPosition( long pos ) { 162void LoopControl::setPosition( long pos ) {
155 audioMutex->lock(); 163 audioMutex->lock();
156// qDebug("Loop control %d", pos); 164// odebug << "Loop control " << pos << "" << oendl;
157 if ( hasVideoChannel && hasAudioChannel ) { 165 if ( hasVideoChannel && hasAudioChannel ) {
158 playtime.restart(); 166 playtime.restart();
159 playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) ); 167 playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) );
160 current_frame = pos + 1; 168 current_frame = pos + 1;
161 mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); 169 mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
162 prev_frame = current_frame - 1; 170 prev_frame = current_frame - 1;
163 currentSample = (int)( (double)current_frame * freq / framerate ); 171 currentSample = (int)( (double)current_frame * freq / framerate );
164 mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream ); 172 mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream );
@@ -214,39 +222,39 @@ void LoopControl::startVideo() {
214 222
215 } 223 }
216 224
217 } 225 }
218} 226}
219 227
220 228
221void LoopControl::startAudio() { 229void LoopControl::startAudio() {
222 230
223 audioMutex->lock(); 231 audioMutex->lock();
224 if ( moreAudio ) { 232 if ( moreAudio ) {
225 233
226 if ( !isMuted && mediaPlayerState->curDecoder() ) { 234 if ( !isMuted && mediaPlayerState->curDecoder() ) {
227 235
228 currentSample = audioSampleCounter + 1; 236 currentSample = audioSampleCounter + 1;
229 237
230// if ( currentSample != audioSampleCounter + 1 ) 238// if ( currentSample != audioSampleCounter + 1 )
231// qDebug("out of sync with decoder %i %i", currentSample, audioSampleCounter); 239// odebug << "out of sync with decoder " << currentSample << " " << audioSampleCounter << "" << oendl;
232 240
233 long samplesRead = 0; 241 long samplesRead = 0;
234 bool readOk=mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream ); 242 bool readOk=mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream );
235 long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000; 243 long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000;
236 long sampleWaitTime = currentSample - sampleWeShouldBeAt; 244 long sampleWaitTime = currentSample - sampleWeShouldBeAt;
237 245
238// this causes drop outs not sure why its even here 246// this causes drop outs not sure why its even here
239 if ( hasVideoChannel ) { 247 if ( hasVideoChannel ) {
240 if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) { 248 if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) {
241 usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) ); 249 usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) );
242 } 250 }
243 else if ( sampleWaitTime <= -5000 ) { 251 else if ( sampleWaitTime <= -5000 ) {
244 // qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt ); 252 // odebug << "need to catch up by: " << -sampleWaitTime << " (" << currentSample << "," << sampleWeShouldBeAt << ")" << oendl;
245 // //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream ); 253 // //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream );
246 currentSample = sampleWeShouldBeAt; 254 currentSample = sampleWeShouldBeAt;
247 } 255 }
248} 256}
249 257
250 audioDevice->write( audioBuffer, samplesRead * 2 * channels ); 258 audioDevice->write( audioBuffer, samplesRead * 2 * channels );
251 259
252 if( mediaPlayerState->isStreaming == FALSE) 260 if( mediaPlayerState->isStreaming == FALSE)
@@ -265,17 +273,17 @@ void LoopControl::startAudio() {
265 audioMutex->unlock(); 273 audioMutex->unlock();
266} 274}
267 275
268 276
269void LoopControl::killTimers() { 277void LoopControl::killTimers() {
270 278
271 audioMutex->lock(); 279 audioMutex->lock();
272 280
273 if ( hasVideoChannel ) 281 if ( hasVideoChannel )
274 killTimer( videoId ); 282 killTimer( videoId );
275 killTimer( sliderId ); 283 killTimer( sliderId );
276 threadOkToGo = FALSE; 284 threadOkToGo = FALSE;
277 285
278 audioMutex->unlock(); 286 audioMutex->unlock();
279} 287}
280 288
281 289
@@ -319,17 +327,17 @@ void LoopControl::setPaused( bool pause ) {
319 } 327 }
320} 328}
321 329
322 330
323void LoopControl::stop( bool willPlayAgainShortly ) { 331void LoopControl::stop( bool willPlayAgainShortly ) {
324 332
325#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 333#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
326 if ( !willPlayAgainShortly && disabledSuspendScreenSaver ) { 334 if ( !willPlayAgainShortly && disabledSuspendScreenSaver ) {
327 disabledSuspendScreenSaver = FALSE; 335 disabledSuspendScreenSaver = FALSE;
328 // Re-enable the suspend mode 336 // Re-enable the suspend mode
329 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 337 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
330 } 338 }
331#endif 339#endif
332 340
333 if ( mediaPlayerState->curDecoder() && mediaPlayerState->curDecoder()->isOpen() ) { 341 if ( mediaPlayerState->curDecoder() && mediaPlayerState->curDecoder()->isOpen() ) {
334 342
335 killTimers(); 343 killTimers();
@@ -344,71 +352,71 @@ void LoopControl::stop( bool willPlayAgainShortly ) {
344 audioDevice = 0; 352 audioDevice = 0;
345 audioBuffer = 0; 353 audioBuffer = 0;
346 } 354 }
347 355
348 audioMutex->unlock(); 356 audioMutex->unlock();
349 } 357 }
350 audioSampleCounter=0; 358 audioSampleCounter=0;
351 current_frame=0; 359 current_frame=0;
352 total_audio_samples=0; 360 total_audio_samples=0;
353} 361}
354 362
355 363
356bool LoopControl::init( const QString& filename ) { 364bool LoopControl::init( const QString& filename ) {
357 stop(); 365 stop();
358 audioMutex->lock(); 366 audioMutex->lock();
359 367
360 fileName = filename; 368 fileName = filename;
361 stream = 0; // only play stream 0 for now 369 stream = 0; // only play stream 0 for now
362 current_frame = total_video_frames = total_audio_samples = 0; 370 current_frame = total_video_frames = total_audio_samples = 0;
363 371
364 // qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() ); 372 // odebug << "Using the " << mediaPlayerState->curDecoder()->pluginName() << " decoder" << oendl;
365 373
366 // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin 374 // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin
367// if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) { 375// if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) {
368// if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename )) { 376// if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename )) {
369// total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 ); 377// total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 );
370// mediaPlayerState->libMpeg3Decoder()->close(); 378// mediaPlayerState->libMpeg3Decoder()->close();
371// } 379// }
372// } 380// }
373 381
374 if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) { 382 if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) {
375 audioMutex->unlock(); 383 audioMutex->unlock();
376 return FALSE; 384 return FALSE;
377 } 385 }
378 386
379 hasAudioChannel = mediaPlayerState->curDecoder()->audioStreams() > 0; 387 hasAudioChannel = mediaPlayerState->curDecoder()->audioStreams() > 0;
380 hasVideoChannel = mediaPlayerState->curDecoder()->videoStreams() > 0; 388 hasVideoChannel = mediaPlayerState->curDecoder()->videoStreams() > 0;
381 389
382 if ( hasAudioChannel ) { 390 if ( hasAudioChannel ) {
383 int astream = 0; 391 int astream = 0;
384 392
385 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMpeg3Plugin") ) 393 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMpeg3Plugin") )
386 channels = 2; //dont akx me why, but it needs this hack 394 channels = 2; //dont akx me why, but it needs this hack
387 else 395 else
388 channels = mediaPlayerState->curDecoder()->audioChannels( astream ); 396 channels = mediaPlayerState->curDecoder()->audioChannels( astream );
389 397
390 // qDebug( "LC- channels = %d", channels ); 398 // odebug << "LC- channels = " << channels << "" << oendl;
391 399
392// if ( !total_audio_samples ) 400// if ( !total_audio_samples )
393 total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); 401 total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream );
394 402
395 total_audio_samples += 1000; 403 total_audio_samples += 1000;
396 // qDebug("total samples %d", total_audio_samples); 404 // odebug << "total samples " << total_audio_samples << "" << oendl;
397 mediaPlayerState->setLength( total_audio_samples ); 405 mediaPlayerState->setLength( total_audio_samples );
398 406
399 freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); 407 freq = mediaPlayerState->curDecoder()->audioFrequency( astream );
400 // qDebug( "LC- frequency = %d", freq ); 408 // odebug << "LC- frequency = " << freq << "" << oendl;
401 409
402 audioSampleCounter = 0; 410 audioSampleCounter = 0;
403 int bits_per_sample; 411 int bits_per_sample;
404 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) { 412 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) {
405 bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime(); 413 bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime();
406 // qDebug("using stupid hack"); 414 // odebug << "using stupid hack" << oendl;
407 } else { 415 } else {
408 bits_per_sample=0; 416 bits_per_sample=0;
409 } 417 }
410 418
411 audioDevice = new AudioDevice( freq, channels, bits_per_sample); 419 audioDevice = new AudioDevice( freq, channels, bits_per_sample);
412 audioBuffer = new char[ audioDevice->bufferSize() ]; 420 audioBuffer = new char[ audioDevice->bufferSize() ];
413 channels = audioDevice->channels(); 421 channels = audioDevice->channels();
414 422
@@ -446,25 +454,25 @@ bool LoopControl::init( const QString& filename ) {
446 454
447 audioMutex->unlock(); 455 audioMutex->unlock();
448 456
449 return TRUE; 457 return TRUE;
450} 458}
451 459
452 460
453void LoopControl::play() { 461void LoopControl::play() {
454 // qDebug("LC- play"); 462 // odebug << "LC- play" << oendl;
455 mediaPlayerState->setPosition( 0); //uglyhack 463 mediaPlayerState->setPosition( 0); //uglyhack
456 464
457#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 465#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
458 if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) { 466 if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) {
459 disabledSuspendScreenSaver = TRUE; 467 disabledSuspendScreenSaver = TRUE;
460 previousSuspendMode = hasVideoChannel; 468 previousSuspendMode = hasVideoChannel;
461 // Stop the screen from blanking and power saving state 469 // Stop the screen from blanking and power saving state
462 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) 470 QCopEnvelope("QPE/System", "setScreenSaverMode(int)" )
463 << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend ); 471 << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend );
464 } 472 }
465#endif 473#endif
466 474
467 playtime.start(); 475 playtime.start();
468 startTimers(); 476 startTimers();
469} 477}
470 478
diff --git a/core/multimedia/opieplayer/loopcontrol_threaded.cpp b/core/multimedia/opieplayer/loopcontrol_threaded.cpp
index 0a1fc17..9a162c2 100644
--- a/core/multimedia/opieplayer/loopcontrol_threaded.cpp
+++ b/core/multimedia/opieplayer/loopcontrol_threaded.cpp
@@ -14,38 +14,44 @@
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#define _REENTRANT 20#define _REENTRANT
21 21
22#include "mediaplayerplugininterface.h"
23#include "loopcontrol.h"
24#include "audiodevice.h"
25#include "videowidget.h"
26#include "audiowidget.h"
27#include "mediaplayerstate.h"
28
29/* OPIE */
22#include <qpe/qpeapplication.h> 30#include <qpe/qpeapplication.h>
23#include <qpe/custom.h> 31#include <qpe/custom.h>
24#include <qimage.h> 32
25#include <qpainter.h>
26#if !defined(QT_NO_COP) 33#if !defined(QT_NO_COP)
27#include <qpe/qcopenvelope_qws.h> 34#include <qpe/qcopenvelope_qws.h>
28#endif 35#endif
29#include "mediaplayerplugininterface.h" 36
37#include <opie2/odebug.h>
38
39/* QT */
40#include <qimage.h>
41#include <qpainter.h>
42
43/* STD */
30#include <stdio.h> 44#include <stdio.h>
31#include <stdlib.h> 45#include <stdlib.h>
32#include <string.h> 46#include <string.h>
33#include <time.h> 47#include <time.h>
34#include <unistd.h> 48#include <unistd.h>
35#include <pthread.h> 49#include <pthread.h>
36#include "loopcontrol.h"
37#include "audiodevice.h"
38#include "videowidget.h"
39#include "audiowidget.h"
40#include "mediaplayerstate.h"
41
42
43
44 50
45 51
46extern VideoWidget *videoUI; // now only needed to tell it to play a frame 52extern VideoWidget *videoUI; // now only needed to tell it to play a frame
47extern MediaPlayerState *mediaPlayerState; 53extern MediaPlayerState *mediaPlayerState;
48 54
49 55
50#define DecodeLoopDebug(x) qDebug x 56#define DecodeLoopDebug(x) qDebug x
51//#define DecodeLoopDebug(x) 57//#define DecodeLoopDebug(x)
@@ -186,17 +192,17 @@ void LoopControl::setPosition( long pos ) {
186 if ( sendingNewPos ) { 192 if ( sendingNewPos ) {
187 sendingNewPos = FALSE; 193 sendingNewPos = FALSE;
188 return; 194 return;
189 } 195 }
190 196
191 if ( hasVideoChannel && hasAudioChannel ) { 197 if ( hasVideoChannel && hasAudioChannel ) {
192 videoMutex->lock(); 198 videoMutex->lock();
193 audioMutex->lock(); 199 audioMutex->lock();
194 //qDebug("setting position"); 200 //odebug << "setting position" << oendl;
195 playtime.restart(); 201 playtime.restart();
196 playtime = playtime.addMSecs( -pos * 1000 / framerate ); 202 playtime = playtime.addMSecs( -pos * 1000 / framerate );
197 //begin = clock() - (double)pos * CLOCKS_PER_SEC / framerate; 203 //begin = clock() - (double)pos * CLOCKS_PER_SEC / framerate;
198 current_frame = pos + 1; 204 current_frame = pos + 1;
199 mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); 205 mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
200 prev_frame = current_frame - 1; 206 prev_frame = current_frame - 1;
201 currentSample = (int)( current_frame * freq / framerate ); 207 currentSample = (int)( current_frame * freq / framerate );
202 mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream ); 208 mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream );
@@ -287,32 +293,32 @@ void LoopControl::startVideo() {
287 current_frame = int( (double)playtime.elapsed() * (double)framerate / 1000.0 ); 293 current_frame = int( (double)playtime.elapsed() * (double)framerate / 1000.0 );
288 done = current_frame >= prev_frame; 294 done = current_frame >= prev_frame;
289 videoMutex->unlock(); 295 videoMutex->unlock();
290 if ( !done ) 296 if ( !done )
291 usleep( 1000 ); // wait a bit 297 usleep( 1000 ); // wait a bit
292 298
293 } while ( !done ); 299 } while ( !done );
294 300
295// qDebug("elapsed: %i %i (%f)", int( playtime.elapsed() ), current_frame, framerate ); 301// odebug << "elapsed: " << int( playtime.elapsed() ) << " " << current_frame << " (" << framerate << ")" << oendl;
296 302
297 } else { 303 } else {
298 videoMutex->lock(); 304 videoMutex->lock();
299 current_frame++; 305 current_frame++;
300 videoMutex->unlock(); 306 videoMutex->unlock();
301 } 307 }
302 308
303 videoMutex->lock(); 309 videoMutex->lock();
304 bool check = current_frame && current_frame > prev_frame; 310 bool check = current_frame && current_frame > prev_frame;
305 videoMutex->unlock(); 311 videoMutex->unlock();
306 312
307 if ( check ) { 313 if ( check ) {
308 videoMutex->lock(); 314 videoMutex->lock();
309 if ( current_frame > prev_frame + 1 ) { 315 if ( current_frame > prev_frame + 1 ) {
310 // qDebug("skipped a frame"); 316 // odebug << "skipped a frame" << oendl;
311 mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); 317 mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream );
312 } 318 }
313 prev_frame = current_frame; 319 prev_frame = current_frame;
314 if ( moreVideo = videoUI->playVideo() ) 320 if ( moreVideo = videoUI->playVideo() )
315 emitChangePos = TRUE; 321 emitChangePos = TRUE;
316 videoMutex->unlock(); 322 videoMutex->unlock();
317 } 323 }
318 324
@@ -336,17 +342,17 @@ void LoopControl::startAudio() {
336 342
337 audioMutex->lock(); 343 audioMutex->lock();
338 currentSample = mediaPlayerState->curDecoder()->audioGetSample( stream ); 344 currentSample = mediaPlayerState->curDecoder()->audioGetSample( stream );
339 345
340 if ( currentSample == 0 ) 346 if ( currentSample == 0 )
341 currentSample = audioSampleCounter + 1; 347 currentSample = audioSampleCounter + 1;
342 348
343// if ( currentSample != audioSampleCounter + 1 ) 349// if ( currentSample != audioSampleCounter + 1 )
344// qDebug("out of sync with decoder %i %i", currentSample, audioSampleCounter); 350// odebug << "out of sync with decoder " << currentSample << " " << audioSampleCounter << "" << oendl;
345 audioMutex->unlock(); 351 audioMutex->unlock();
346 352
347/* 353/*
348 int sampleWeShouldBeAt = int( playtime.elapsed() ) * freq / 1000; 354 int sampleWeShouldBeAt = int( playtime.elapsed() ) * freq / 1000;
349 355
350 if ( sampleWeShouldBeAt - currentSample > 20000 ) { 356 if ( sampleWeShouldBeAt - currentSample > 20000 ) {
351 mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream ); 357 mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream );
352 currentSample = sampleWeShouldBeAt; 358 currentSample = sampleWeShouldBeAt;
@@ -360,77 +366,77 @@ void LoopControl::startAudio() {
360 366
361 audioMutex->lock(); 367 audioMutex->lock();
362 long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000; 368 long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000;
363 //long sampleWeShouldBeAt = long( clock() - begin ) * (double) freq / CLOCKS_PER_SEC; 369 //long sampleWeShouldBeAt = long( clock() - begin ) * (double) freq / CLOCKS_PER_SEC;
364 long sampleWaitTime = currentSample - sampleWeShouldBeAt; 370 long sampleWaitTime = currentSample - sampleWeShouldBeAt;
365 audioMutex->unlock(); 371 audioMutex->unlock();
366 372
367 if ( sampleWaitTime >= 0 && sampleWaitTime <= 2000 ) { 373 if ( sampleWaitTime >= 0 && sampleWaitTime <= 2000 ) {
368 //qDebug("sampleWaitTime: %i", sampleWaitTime); 374 //odebug << "sampleWaitTime: " << sampleWaitTime << "" << oendl;
369 usleep( ( sampleWaitTime * 1000000 ) / ( freq ) ); 375 usleep( ( sampleWaitTime * 1000000 ) / ( freq ) );
370 } else { 376 } else {
371 audioMutex->lock(); 377 audioMutex->lock();
372 if ( sampleWaitTime <= -2000 ) { 378 if ( sampleWaitTime <= -2000 ) {
373 // qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt ); 379 // odebug << "need to catch up by: " << -sampleWaitTime << " (" << currentSample << "," << sampleWeShouldBeAt << ")" << oendl;
374 mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream ); 380 mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream );
375 currentSample = sampleWeShouldBeAt; 381 currentSample = sampleWeShouldBeAt;
376 } 382 }
377 audioMutex->unlock(); 383 audioMutex->unlock();
378 } 384 }
379 385
380 audioDevice->write( audioBuffer, samplesRead * 2 * channels ); 386 audioDevice->write( audioBuffer, samplesRead * 2 * channels );
381 387
382 audioMutex->lock(); 388 audioMutex->lock();
383// audioSampleCounter += samplesRead; 389// audioSampleCounter += samplesRead;
384 audioSampleCounter = currentSample + samplesRead - 1; 390 audioSampleCounter = currentSample + samplesRead - 1;
385 audioMutex->unlock(); 391 audioMutex->unlock();
386 392
387 if ( !hasVideoChannel ) 393 if ( !hasVideoChannel )
388 emitChangePos = TRUE; 394 emitChangePos = TRUE;
389 395
390 //qDebug("currentSample: %i audioSampleCounter: %i total_audio_samples: %i", currentSample, audioSampleCounter, total_audio_samples); 396 //odebug << "currentSample: " << currentSample << " audioSampleCounter: " << audioSampleCounter << " total_audio_samples: " << total_audio_samples << "" << oendl;
391// qDebug("current: %i counter: %i total: %i", currentSample, audioSampleCounter, (int)total_audio_samples); 397// odebug << "current: " << currentSample << " counter: " << audioSampleCounter << " total: " << (int)total_audio_samples << "" << oendl;
392 moreAudio = audioSampleCounter <= total_audio_samples; 398 moreAudio = audioSampleCounter <= total_audio_samples;
393 399
394 } else { 400 } else {
395 401
396 if ( mediaPlayerState->curDecoder() && hasAudioChannel ) 402 if ( mediaPlayerState->curDecoder() && hasAudioChannel )
397 usleep( 100000 ); // Check every 1/10 sec to see if mute is off 403 usleep( 100000 ); // Check every 1/10 sec to see if mute is off
398 else 404 else
399 moreAudio = FALSE; 405 moreAudio = FALSE;
400 406
401 } 407 }
402 } 408 }
403 409
404 // qDebug( "End of file" ); 410 // odebug << "End of file" << oendl;
405 411
406 if ( !moreVideo && !moreAudio ) 412 if ( !moreVideo && !moreAudio )
407 emitPlayFinished = TRUE; 413 emitPlayFinished = TRUE;
408 414
409 pthread_exit(NULL); 415 pthread_exit(NULL);
410} 416}
411 417
412void LoopControl::killTimers() { 418void LoopControl::killTimers() {
413 if ( hasVideoChannel ) { 419 if ( hasVideoChannel ) {
414 if ( pthread_self() != video_tid ) { 420 if ( pthread_self() != video_tid ) {
415 if ( pthread_cancel(video_tid) == 0 ) { 421 if ( pthread_cancel(video_tid) == 0 ) {
416 void *thread_result = 0; 422 void *thread_result = 0;
417 if ( pthread_join(video_tid,&thread_result) != 0 ) 423 if ( pthread_join(video_tid,&thread_result) != 0 )
418 // qDebug("thread join error 1"); 424 // odebug << "thread join error 1" << oendl;
419 pthread_attr_destroy(&video_attr); 425 pthread_attr_destroy(&video_attr);
420 } 426 }
421 } 427 }
422 } 428 }
423 if ( hasAudioChannel ) { 429 if ( hasAudioChannel ) {
424 if ( pthread_self() != audio_tid ) { 430 if ( pthread_self() != audio_tid ) {
425 if ( pthread_cancel(audio_tid) == 0 ) { 431 if ( pthread_cancel(audio_tid) == 0 ) {
426 void *thread_result = 0; 432 void *thread_result = 0;
427 if ( pthread_join(audio_tid,&thread_result) != 0 ) 433 if ( pthread_join(audio_tid,&thread_result) != 0 )
428 // qDebug("thread join error 2"); 434 // odebug << "thread join error 2" << oendl;
429 pthread_attr_destroy(&audio_attr); 435 pthread_attr_destroy(&audio_attr);
430 } 436 }
431 } 437 }
432 } 438 }
433} 439}
434 440
435void LoopControl::startTimers() { 441void LoopControl::startTimers() {
436 moreVideo = FALSE; 442 moreVideo = FALSE;
@@ -442,17 +448,17 @@ void LoopControl::startTimers() {
442 pthread_create(&video_tid, &video_attr, (void * (*)(void *))startVideoThread, this); 448 pthread_create(&video_tid, &video_attr, (void * (*)(void *))startVideoThread, this);
443 } 449 }
444 450
445 if ( hasAudioChannel ) { 451 if ( hasAudioChannel ) {
446 moreAudio = TRUE; 452 moreAudio = TRUE;
447 pthread_attr_init(&audio_attr); 453 pthread_attr_init(&audio_attr);
448#ifdef USE_REALTIME_AUDIO_THREAD 454#ifdef USE_REALTIME_AUDIO_THREAD
449 pthread_attr_setschedpolicy(&audio_attr,SCHED_RR); // Real-time round robin 455 pthread_attr_setschedpolicy(&audio_attr,SCHED_RR); // Real-time round robin
450 //qDebug("min: %i, max: %i", sched_get_priority_min( SCHED_RR ), sched_get_priority_max( SCHED_RR ) ); 456 //odebug << "min: " << sched_get_priority_min( SCHED_RR ) << ", max: " << sched_get_priority_max( SCHED_RR ) << "" << oendl;
451 sched_param params; 457 sched_param params;
452 params.sched_priority = 50; 458 params.sched_priority = 50;
453 pthread_attr_setschedparam(&audio_attr,&params); 459 pthread_attr_setschedparam(&audio_attr,&params);
454#endif 460#endif
455 pthread_create(&audio_tid, &audio_attr, (void * (*)(void *))startAudioThread, this); 461 pthread_create(&audio_tid, &audio_attr, (void * (*)(void *))startAudioThread, this);
456 } 462 }
457} 463}
458 464
@@ -507,17 +513,17 @@ void LoopControl::stop( bool willPlayAgainShortly ) {
507 513
508 514
509bool LoopControl::init( const QString& filename ) { 515bool LoopControl::init( const QString& filename ) {
510 stop(); 516 stop();
511 fileName = filename; 517 fileName = filename;
512 stream = 0; // only play stream 0 for now 518 stream = 0; // only play stream 0 for now
513 current_frame = total_video_frames = total_audio_samples = 0; 519 current_frame = total_video_frames = total_audio_samples = 0;
514 520
515 // qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() ); 521 // odebug << "Using the " << mediaPlayerState->curDecoder()->pluginName() << " decoder" << oendl;
516 522
517 // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin 523 // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin
518 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) { 524 if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) {
519 if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename ) ) { 525 if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename ) ) {
520 total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 ); 526 total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 );
521 mediaPlayerState->libMpeg3Decoder()->close(); 527 mediaPlayerState->libMpeg3Decoder()->close();
522 } 528 }
523 } 529 }
diff --git a/core/multimedia/opieplayer/mediaplayer.cpp b/core/multimedia/opieplayer/mediaplayer.cpp
index 6c743ec..15f6928 100644
--- a/core/multimedia/opieplayer/mediaplayer.cpp
+++ b/core/multimedia/opieplayer/mediaplayer.cpp
@@ -14,26 +14,28 @@
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21 21
22#include <qmessagebox.h>
23
24#include "mediaplayer.h" 22#include "mediaplayer.h"
25#include "playlistwidget.h" 23#include "playlistwidget.h"
26#include "audiowidget.h" 24#include "audiowidget.h"
27#include "loopcontrol.h" 25#include "loopcontrol.h"
28#include "audiodevice.h" 26#include "audiodevice.h"
29
30#include "mediaplayerstate.h" 27#include "mediaplayerstate.h"
31 28
29/* OPIE */
30#include <opie2/odebug.h>
31
32/* QT */
33#include <qmessagebox.h>
32 34
33extern AudioWidget *audioUI; 35extern AudioWidget *audioUI;
34extern PlayListWidget *playList; 36extern PlayListWidget *playList;
35extern LoopControl *loopControl; 37extern LoopControl *loopControl;
36extern MediaPlayerState *mediaPlayerState; 38extern MediaPlayerState *mediaPlayerState;
37 39
38 40
39MediaPlayer::MediaPlayer( QObject *parent, const char *name ) 41MediaPlayer::MediaPlayer( QObject *parent, const char *name )
@@ -68,30 +70,30 @@ void MediaPlayer::pauseCheck( bool b ) {
68 70
69void MediaPlayer::play() { 71void MediaPlayer::play() {
70 mediaPlayerState->setPlaying( FALSE ); 72 mediaPlayerState->setPlaying( FALSE );
71 mediaPlayerState->setPlaying( TRUE ); 73 mediaPlayerState->setPlaying( TRUE );
72} 74}
73 75
74 76
75void MediaPlayer::setPlaying( bool play ) { 77void MediaPlayer::setPlaying( bool play ) {
76 // qDebug("MediaPlayer setPlaying %d", play); 78 // odebug << "MediaPlayer setPlaying " << play << "" << oendl;
77 if ( !play ) { 79 if ( !play ) {
78 mediaPlayerState->setPaused( FALSE ); 80 mediaPlayerState->setPaused( FALSE );
79 loopControl->stop( FALSE ); 81 loopControl->stop( FALSE );
80 return; 82 return;
81 } 83 }
82 84
83 if ( mediaPlayerState->paused() ) { 85 if ( mediaPlayerState->paused() ) {
84 mediaPlayerState->setPaused( FALSE ); 86 mediaPlayerState->setPaused( FALSE );
85 return; 87 return;
86 } 88 }
87 // qDebug("about to ctrash"); 89 // odebug << "about to ctrash" << oendl;
88 const DocLnk *playListCurrent = playList->current(); 90 const DocLnk *playListCurrent = playList->current();
89 91
90 if ( playListCurrent != NULL ) { 92 if ( playListCurrent != NULL ) {
91 loopControl->stop( TRUE ); 93 loopControl->stop( TRUE );
92 currentFile = playListCurrent; 94 currentFile = playListCurrent;
93 } 95 }
94 if ( currentFile == NULL ) { 96 if ( currentFile == NULL ) {
95 QMessageBox::critical( 0, tr( "No file"), tr( "Error: There is no file selected" ) ); 97 QMessageBox::critical( 0, tr( "No file"), tr( "Error: There is no file selected" ) );
96 mediaPlayerState->setPlaying( FALSE ); 98 mediaPlayerState->setPlaying( FALSE );
97 return; 99 return;
@@ -166,17 +168,17 @@ void MediaPlayer::startDecreasingVolume() {
166 AudioDevice::decreaseVolume(); 168 AudioDevice::decreaseVolume();
167} 169}
168 170
169 171
170void MediaPlayer::startIncreasingVolume() { 172void MediaPlayer::startIncreasingVolume() {
171 volumeDirection = +1; 173 volumeDirection = +1;
172 startTimer( 100 ); 174 startTimer( 100 );
173 AudioDevice::increaseVolume(); 175 AudioDevice::increaseVolume();
174 176
175} 177}
176 178
177bool drawnOnScreenDisplay = FALSE; 179bool drawnOnScreenDisplay = FALSE;
178unsigned int onScreenDisplayVolume = 0; 180unsigned int onScreenDisplayVolume = 0;
179const int yoff = 110; 181const int yoff = 110;
180 182
181void MediaPlayer::stopChangingVolume() { 183void MediaPlayer::stopChangingVolume() {
182 killTimers(); 184 killTimers();
@@ -186,29 +188,29 @@ void MediaPlayer::stopChangingVolume() {
186 onScreenDisplayVolume = 0; 188 onScreenDisplayVolume = 0;
187 int w = audioUI->width(); 189 int w = audioUI->width();
188 int h = audioUI->height(); 190 int h = audioUI->height();
189 audioUI->repaint( (w - 200) / 2, h - yoff, 200 + 9, 70, FALSE ); 191 audioUI->repaint( (w - 200) / 2, h - yoff, 200 + 9, 70, FALSE );
190} 192}
191 193
192 194
193void MediaPlayer::timerEvent( QTimerEvent * ) { 195void MediaPlayer::timerEvent( QTimerEvent * ) {
194// qDebug("timer"); 196// odebug << "timer" << oendl;
195 if ( volumeDirection == +1 ) 197 if ( volumeDirection == +1 )
196 AudioDevice::increaseVolume(); 198 AudioDevice::increaseVolume();
197 else if ( volumeDirection == -1 ) 199 else if ( volumeDirection == -1 )
198 AudioDevice::decreaseVolume(); 200 AudioDevice::decreaseVolume();
199 201
200 // Display an on-screen display volume 202 // Display an on-screen display volume
201 unsigned int l, r, v; bool m; 203 unsigned int l, r, v; bool m;
202 AudioDevice::getVolume( l, r, m ); 204 AudioDevice::getVolume( l, r, m );
203 v = ((l + r) * 11) / (2*0xFFFF); 205 v = ((l + r) * 11) / (2*0xFFFF);
204 206
205 if ( drawnOnScreenDisplay && onScreenDisplayVolume == v ) { 207 if ( drawnOnScreenDisplay && onScreenDisplayVolume == v ) {
206// qDebug("returning %d, %d, %d, %d", v, l, r, m); 208// odebug << "returning " << v << ", " << l << ", " << r << ", " << m << "" << oendl;
207 return; 209 return;
208 } 210 }
209 211
210 int w = audioUI->width(); 212 int w = audioUI->width();
211 int h = audioUI->height(); 213 int h = audioUI->height();
212 214
213 if ( drawnOnScreenDisplay ) { 215 if ( drawnOnScreenDisplay ) {
214 if ( onScreenDisplayVolume > v ) 216 if ( onScreenDisplayVolume > v )
@@ -225,36 +227,36 @@ void MediaPlayer::timerEvent( QTimerEvent * ) {
225 227
226 QFont f; 228 QFont f;
227 f.setPixelSize( 20 ); 229 f.setPixelSize( 20 );
228 f.setBold( TRUE ); 230 f.setBold( TRUE );
229 p.setFont( f ); 231 p.setFont( f );
230 p.drawText( (w - 200) / 2, h - yoff + 20, tr("Volume") ); 232 p.drawText( (w - 200) / 2, h - yoff + 20, tr("Volume") );
231 233
232 for ( unsigned int i = 0; i < 10; i++ ) { 234 for ( unsigned int i = 0; i < 10; i++ ) {
233 if ( v > i ) 235 if ( v > i )
234 p.drawRect( (w - 200) / 2 + i * 20 + 0, h - yoff + 40, 9, 30 ); 236 p.drawRect( (w - 200) / 2 + i * 20 + 0, h - yoff + 40, 9, 30 );
235 else 237 else
236 p.drawRect( (w - 200) / 2 + i * 20 + 3, h - yoff + 50, 3, 10 ); 238 p.drawRect( (w - 200) / 2 + i * 20 + 3, h - yoff + 50, 3, 10 );
237 } 239 }
238} 240}
239 241
240void MediaPlayer::keyReleaseEvent( QKeyEvent *e) { 242void MediaPlayer::keyReleaseEvent( QKeyEvent *e) {
241 switch ( e->key() ) { 243 switch ( e->key() ) {
242////////////////////////////// Zaurus keys 244////////////////////////////// Zaurus keys
243 case Key_Home: 245 case Key_Home:
244 break; 246 break;
245 case Key_F9: //activity 247 case Key_F9: //activity
246 break; 248 break;
247 case Key_F10: //contacts 249 case Key_F10: //contacts
248 break; 250 break;
249 case Key_F11: //menu 251 case Key_F11: //menu
250 break; 252 break;
251 case Key_F12: //home 253 case Key_F12: //home
252 // qDebug("Blank here"); 254 // odebug << "Blank here" << oendl;
253 break; 255 break;
254 case Key_F13: //mail 256 case Key_F13: //mail
255 break; 257 break;
256 } 258 }
257} 259}
258 260
259void MediaPlayer::doBlank() { 261void MediaPlayer::doBlank() {
260 262
diff --git a/core/multimedia/opieplayer/mediaplayerstate.cpp b/core/multimedia/opieplayer/mediaplayerstate.cpp
index 5bfb87e..b700cd1 100644
--- a/core/multimedia/opieplayer/mediaplayerstate.cpp
+++ b/core/multimedia/opieplayer/mediaplayerstate.cpp
@@ -12,32 +12,36 @@
12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13 ** 13 **
14 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 14 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
15 ** 15 **
16 ** Contact info@trolltech.com if any conditions of this licensing are 16 ** Contact info@trolltech.com if any conditions of this licensing are
17 ** not clear to you. 17 ** not clear to you.
18 ** 18 **
19 **********************************************************************/ 19 **********************************************************************/
20#include <qpe/qpeapplication.h>
21#include <qpe/qlibrary.h>
22#include <qpe/config.h>
23#include <qdir.h>
24#include <qpe/mediaplayerplugininterface.h>
25#include "mediaplayerstate.h"
26
27
28 20
29#ifdef QT_NO_COMPONENT 21#ifdef QT_NO_COMPONENT
30// Plugins which are compiled in when no plugin architecture available 22// Plugins which are compiled in when no plugin architecture available
31#include "libmad/libmadpluginimpl.h" 23#include "libmad/libmadpluginimpl.h"
32#include "libmpeg3/libmpeg3pluginimpl.h" 24#include "libmpeg3/libmpeg3pluginimpl.h"
33#include "wavplugin/wavpluginimpl.h" 25#include "wavplugin/wavpluginimpl.h"
34#endif 26#endif
35 27
28#include "mediaplayerstate.h"
29
30/* OPIE */
31#include <qpe/qpeapplication.h>
32#include <qpe/qlibrary.h>
33#include <qpe/config.h>
34#include <qpe/mediaplayerplugininterface.h>
35#include <opie2/odebug.h>
36
37/* QT */
38#include <qdir.h>
39
36 40
37//#define MediaPlayerDebug(x) qDebug x 41//#define MediaPlayerDebug(x) qDebug x
38#define MediaPlayerDebug(x) 42#define MediaPlayerDebug(x)
39 43
40 44
41MediaPlayerState::MediaPlayerState( QObject *parent, const char *name ) 45MediaPlayerState::MediaPlayerState( QObject *parent, const char *name )
42 : QObject( parent, name ), decoder( NULL ), libmpeg3decoder( NULL ) { 46 : QObject( parent, name ), decoder( NULL ), libmpeg3decoder( NULL ) {
43 Config cfg( "OpiePlayer" ); 47 Config cfg( "OpiePlayer" );
@@ -99,18 +103,18 @@ MediaPlayerDecoder *MediaPlayerState::newDecoder( const QString& file ) {
99 if ( (*it).decoder->isFileSupported( file ) ) { 103 if ( (*it).decoder->isFileSupported( file ) ) {
100 tmpDecoder = (*it).decoder; 104 tmpDecoder = (*it).decoder;
101 break; 105 break;
102 } 106 }
103 } 107 }
104 if(file.left(4)=="http") 108 if(file.left(4)=="http")
105 isStreaming = TRUE; 109 isStreaming = TRUE;
106 else 110 else
107 isStreaming = FALSE; 111 isStreaming = FALSE;
108 return decoder = tmpDecoder; 112 return decoder = tmpDecoder;
109} 113}
110 114
111 115
112MediaPlayerDecoder *MediaPlayerState::curDecoder() { 116MediaPlayerDecoder *MediaPlayerState::curDecoder() {
113 return decoder; 117 return decoder;
114} 118}
115 119
116 120
@@ -120,38 +124,38 @@ MediaPlayerDecoder *MediaPlayerState::libMpeg3Decoder() {
120} 124}
121 125
122// ### hack to get true sample count 126// ### hack to get true sample count
123// MediaPlayerDecoder *MediaPlayerState::libWavDecoder() { 127// MediaPlayerDecoder *MediaPlayerState::libWavDecoder() {
124// return libwavdecoder; 128// return libwavdecoder;
125// } 129// }
126 130
127void MediaPlayerState::loadPlugins() { 131void MediaPlayerState::loadPlugins() {
128 // qDebug("load plugins"); 132 // odebug << "load plugins" << oendl;
129#ifndef QT_NO_COMPONENT 133#ifndef QT_NO_COMPONENT
130 QValueList<MediaPlayerPlugin>::Iterator mit; 134 QValueList<MediaPlayerPlugin>::Iterator mit;
131 for ( mit = pluginList.begin(); mit != pluginList.end(); ++mit ) { 135 for ( mit = pluginList.begin(); mit != pluginList.end(); ++mit ) {
132 (*mit).iface->release(); 136 (*mit).iface->release();
133 (*mit).library->unload(); 137 (*mit).library->unload();
134 delete (*mit).library; 138 delete (*mit).library;
135 } 139 }
136 pluginList.clear(); 140 pluginList.clear();
137 141
138 QString path = QPEApplication::qpeDir() + "/plugins/codecs"; 142 QString path = QPEApplication::qpeDir() + "/plugins/codecs";
139 QDir dir( path, "lib*.so" ); 143 QDir dir( path, "lib*.so" );
140 QStringList list = dir.entryList(); 144 QStringList list = dir.entryList();
141 QStringList::Iterator it; 145 QStringList::Iterator it;
142 for ( it = list.begin(); it != list.end(); ++it ) { 146 for ( it = list.begin(); it != list.end(); ++it ) {
143 MediaPlayerPluginInterface *iface = 0; 147 MediaPlayerPluginInterface *iface = 0;
144 QLibrary *lib = new QLibrary( path + "/" + *it ); 148 QLibrary *lib = new QLibrary( path + "/" + *it );
145// qDebug( "querying: %s", QString( path + "/" + *it ).latin1() ); 149// odebug << "querying: " << QString( path + "/" + *it ) << "" << oendl;
146 150
147 if ( lib->queryInterface( IID_MediaPlayerPlugin, (QUnknownInterface**)&iface ) == QS_OK ) { 151 if ( lib->queryInterface( IID_MediaPlayerPlugin, (QUnknownInterface**)&iface ) == QS_OK ) {
148 152
149// qDebug( "loading: %s", QString( path + "/" + *it ).latin1() ); 153// odebug << "loading: " << QString( path + "/" + *it ) << "" << oendl;
150 154
151 MediaPlayerPlugin plugin; 155 MediaPlayerPlugin plugin;
152 plugin.library = lib; 156 plugin.library = lib;
153 plugin.iface = iface; 157 plugin.iface = iface;
154 plugin.decoder = plugin.iface->decoder(); 158 plugin.decoder = plugin.iface->decoder();
155 plugin.encoder = plugin.iface->encoder(); 159 plugin.encoder = plugin.iface->encoder();
156 pluginList.append( plugin ); 160 pluginList.append( plugin );
157 161
@@ -160,17 +164,17 @@ void MediaPlayerState::loadPlugins() {
160 libmpeg3decoder = plugin.decoder; 164 libmpeg3decoder = plugin.decoder;
161 165
162 } else { 166 } else {
163 delete lib; 167 delete lib;
164 } 168 }
165 } 169 }
166#else 170#else
167 pluginList.clear(); 171 pluginList.clear();
168 172
169 MediaPlayerPlugin plugin0; 173 MediaPlayerPlugin plugin0;
170 plugin0.iface = new LibMpeg3PluginImpl; 174 plugin0.iface = new LibMpeg3PluginImpl;
171 plugin0.decoder = plugin0.iface->decoder(); 175 plugin0.decoder = plugin0.iface->decoder();
172 plugin0.encoder = plugin0.iface->encoder(); 176 plugin0.encoder = plugin0.iface->encoder();
173 pluginList.append( plugin0 ); 177 pluginList.append( plugin0 );
174 178
175 MediaPlayerPlugin plugin1; 179 MediaPlayerPlugin plugin1;
176 plugin1.iface = new LibMadPluginImpl; 180 plugin1.iface = new LibMadPluginImpl;
@@ -180,14 +184,14 @@ void MediaPlayerState::loadPlugins() {
180 184
181 MediaPlayerPlugin plugin2; 185 MediaPlayerPlugin plugin2;
182 plugin2.iface = new WavPluginImpl; 186 plugin2.iface = new WavPluginImpl;
183 plugin2.decoder = plugin2.iface->decoder(); 187 plugin2.decoder = plugin2.iface->decoder();
184 plugin2.encoder = plugin2.iface->encoder(); 188 plugin2.encoder = plugin2.iface->encoder();
185 pluginList.append( plugin2 ); 189 pluginList.append( plugin2 );
186#endif 190#endif
187 191
188 if ( pluginList.count() ) 192 if ( pluginList.count() )
189 MediaPlayerDebug(( "%i decoders found", pluginList.count() )); 193 MediaPlayerDebug(( "%i decoders found", pluginList.count() ));
190 else 194 else
191 MediaPlayerDebug(( "No decoders found" )); 195 MediaPlayerDebug(( "No decoders found" ));
192} 196}
193 197
diff --git a/core/multimedia/opieplayer/modplug/memfile.cpp b/core/multimedia/opieplayer/modplug/memfile.cpp
index 8a29997..cd243c7 100644
--- a/core/multimedia/opieplayer/modplug/memfile.cpp
+++ b/core/multimedia/opieplayer/modplug/memfile.cpp
@@ -14,16 +14,20 @@
14 You should have received a copy of the GNU General Public License 14 You should have received a copy of the GNU General Public License
15 along with this program; see the file COPYING. If not, write to 15 along with this program; see the file COPYING. If not, write to
16 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 16 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 Boston, MA 02111-1307, USA. 17 Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include "memfile.h" 20#include "memfile.h"
21 21
22/* OPIE */
23#include <opie2/odebug.h>
24
25/* STD */
22#include <unistd.h> 26#include <unistd.h>
23#include <sys/mman.h> 27#include <sys/mman.h>
24 28
25MemFile::MemFile() 29MemFile::MemFile()
26{ 30{
27} 31}
28 32
29MemFile::MemFile( const QString &name ) 33MemFile::MemFile( const QString &name )
@@ -42,35 +46,35 @@ void MemFile::close()
42 QFile::close(); 46 QFile::close();
43} 47}
44 48
45void MemFile::unmap() 49void MemFile::unmap()
46{ 50{
47#if defined(Q_WS_X11) || defined(Q_WS_QWS) 51#if defined(Q_WS_X11) || defined(Q_WS_QWS)
48 if ( m_data.data() ) 52 if ( m_data.data() )
49 { 53 {
50 munmap( m_data.data(), m_data.size() ); 54 munmap( m_data.data(), m_data.size() );
51 m_data.resetRawData( m_data.data(), m_data.size() ); 55 m_data.resetRawData( m_data.data(), m_data.size() );
52 } 56 }
53#endif 57#endif
54} 58}
55 59
56QByteArray &MemFile::data() 60QByteArray &MemFile::data()
57{ 61{
58 if ( !m_data.data() ) 62 if ( !m_data.data() )
59 { 63 {
60#if defined(Q_WS_X11) || defined(Q_WS_QWS) 64#if defined(Q_WS_X11) || defined(Q_WS_QWS)
61 const char *rawData = (const char *)mmap( 0, size(), PROT_READ, 65 const char *rawData = (const char *)mmap( 0, size(), PROT_READ,
62 MAP_SHARED, handle(), 0 ); 66 MAP_SHARED, handle(), 0 );
63 if ( rawData ) 67 if ( rawData )
64 { 68 {
65 m_data.setRawData( rawData, size() ); 69 m_data.setRawData( rawData, size() );
66 return m_data; 70 return m_data;
67 } 71 }
68 else 72 else
69 qDebug( "MemFile: mmap() failed!" ); 73 odebug << "MemFile: mmap() failed!" << oendl;
70 // fallback 74 // fallback
71#endif 75#endif
72 m_data = readAll(); 76 m_data = readAll();
73 } 77 }
74 return m_data; 78 return m_data;
75} 79}
76 80
diff --git a/core/multimedia/opieplayer/om3u.cpp b/core/multimedia/opieplayer/om3u.cpp
index ae89518..95ed03c 100644
--- a/core/multimedia/opieplayer/om3u.cpp
+++ b/core/multimedia/opieplayer/om3u.cpp
@@ -26,78 +26,80 @@
26 If not, write to the Free Software Foundation, 26 If not, write to the Free Software Foundation,
27 Inc., 59 Temple Place - Suite 330, 27 Inc., 59 Temple Place - Suite 330,
28 Boston, MA 02111-1307, USA. 28 Boston, MA 02111-1307, USA.
29 29
30*/ 30*/
31 31
32#include "om3u.h" 32#include "om3u.h"
33 33
34/* OPIE */
35#include <opie2/odebug.h>
34 36
35 37
36static inline QString fullBaseName ( const QFileInfo &fi ) 38static inline QString fullBaseName ( const QFileInfo &fi )
37{ 39{
38 QString str = fi. fileName ( ); 40 QString str = fi. fileName ( );
39 return str. left ( str. findRev ( '.' )); 41 return str. left ( str. findRev ( '.' ));
40} 42}
41 43
42 44
43//extern PlayListWidget *playList; 45//extern PlayListWidget *playList;
44 46
45Om3u::Om3u( const QString &filePath, int mode) 47Om3u::Om3u( const QString &filePath, int mode)
46 : QStringList (){ 48 : QStringList (){
47//qDebug("<<<<<<<new m3u "+filePath); 49//odebug << "<<<<<<<new m3u "+filePath << oendl;
48 f.setName(filePath); 50 f.setName(filePath);
49 f.open(mode); 51 f.open(mode);
50} 52}
51 53
52Om3u::~Om3u(){} 54Om3u::~Om3u(){}
53 55
54void Om3u::readM3u() { 56void Om3u::readM3u() {
55// qDebug("<<<<<<reading m3u "+f.name()); 57// odebug << "<<<<<<reading m3u "+f.name() << oendl;
56 QTextStream t(&f); 58 QTextStream t(&f);
57 t.setEncoding(QTextStream::UnicodeUTF8); 59 t.setEncoding(QTextStream::UnicodeUTF8);
58 QString s; 60 QString s;
59 while ( !t.atEnd() ) { 61 while ( !t.atEnd() ) {
60 s=t.readLine(); 62 s=t.readLine();
61 // qDebug(s); 63 // odebug << s << oendl;
62 if( s.find( "#", 0, TRUE) == -1 ) { 64 if( s.find( "#", 0, TRUE) == -1 ) {
63 if( s.left(2) == "E:" || s.left(2) == "P:" ) { 65 if( s.left(2) == "E:" || s.left(2) == "P:" ) {
64 s = s.right( s.length() -2 ); 66 s = s.right( s.length() -2 );
65 QFileInfo f( s ); 67 QFileInfo f( s );
66 QString name = fullBaseName ( f ); 68 QString name = fullBaseName ( f );
67 name = name.right( name.length() - name.findRev( "\\", -1, TRUE ) -1 ); 69 name = name.right( name.length() - name.findRev( "\\", -1, TRUE ) -1 );
68 s=s.replace( QRegExp( "\\" ), "/" ); 70 s=s.replace( QRegExp( "\\" ), "/" );
69 append(s); 71 append(s);
70 // qDebug(s); 72 // odebug << s << oendl;
71 } else { // is url 73 } else { // is url
72 s.replace( QRegExp( "%20" )," " ); 74 s.replace( QRegExp( "%20" )," " );
73 QString name; 75 QString name;
74 // if( name.left( 4 ) == "http" ) { 76 // if( name.left( 4 ) == "http" ) {
75 // name = s.right( s.length() - 7 ); 77 // name = s.right( s.length() - 7 );
76 // } else { 78 // } else {
77 name = s; 79 name = s;
78 // } 80 // }
79 append(name); 81 append(name);
80 // qDebug(name); 82 // odebug << name << oendl;
81 } 83 }
82 } 84 }
83 } 85 }
84} 86}
85 87
86void Om3u::readPls() { //it's a pls file 88void Om3u::readPls() { //it's a pls file
87 QTextStream t( &f ); 89 QTextStream t( &f );
88 t.setEncoding(QTextStream::UnicodeUTF8); 90 t.setEncoding(QTextStream::UnicodeUTF8);
89 QString s; 91 QString s;
90 while ( !t.atEnd() ) { 92 while ( !t.atEnd() ) {
91 s = t.readLine(); 93 s = t.readLine();
92 if( s.left(4) == "File" ) { 94 if( s.left(4) == "File" ) {
93 s = s.right( s.length() - 6 ); 95 s = s.right( s.length() - 6 );
94 s.replace( QRegExp( "%20" )," "); 96 s.replace( QRegExp( "%20" )," ");
95// qDebug( "adding " + s + " to playlist" ); 97// odebug << "adding " + s + " to playlist" << oendl;
96 // numberofentries=2 98 // numberofentries=2
97 // File1=http 99 // File1=http
98 // Title 100 // Title
99 // Length 101 // Length
100 // Version 102 // Version
101 // File2=http 103 // File2=http
102 s = s.replace( QRegExp( "\\" ), "/" ); 104 s = s.replace( QRegExp( "\\" ), "/" );
103 QFileInfo f( s ); 105 QFileInfo f( s );
@@ -117,38 +119,38 @@ void Om3u::readPls() { //it's a pls file
117 append(s); 119 append(s);
118 } 120 }
119 } 121 }
120 } 122 }
121} 123}
122 124
123void Om3u::write() { //writes list to m3u file 125void Om3u::write() { //writes list to m3u file
124 QString list; 126 QString list;
125 QTextStream t(&f); 127 QTextStream t(&f);
126 t.setEncoding(QTextStream::UnicodeUTF8); 128 t.setEncoding(QTextStream::UnicodeUTF8);
127 if(count()>0) { 129 if(count()>0) {
128 for ( QStringList::ConstIterator it = begin(); it != end(); ++it ) { 130 for ( QStringList::ConstIterator it = begin(); it != end(); ++it ) {
129 // qDebug(*it); 131 // odebug << *it << oendl;
130 t << *it << "\n"; 132 t << *it << "\n";
131 } 133 }
132 } 134 }
133// f.close(); 135// f.close();
134} 136}
135 137
136void Om3u::add(const QString &filePath) { //adds to m3u file 138void Om3u::add(const QString &filePath) { //adds to m3u file
137 append(filePath); 139 append(filePath);
138} 140}
139 141
140void Om3u::remove(const QString &filePath) { //removes from m3u list 142void Om3u::remove(const QString &filePath) { //removes from m3u list
141 QString list, currentFile; 143 QString list, currentFile;
142 if(count()>0) { 144 if(count()>0) {
143 for ( QStringList::ConstIterator it = begin(); it != end(); ++it ) { 145 for ( QStringList::ConstIterator it = begin(); it != end(); ++it ) {
144 currentFile=*it; 146 currentFile=*it;
145 // qDebug(*it); 147 // odebug << *it << oendl;
146 148
147 if( filePath != currentFile) 149 if( filePath != currentFile)
148 list += currentFile+"\n"; 150 list += currentFile+"\n";
149 } 151 }
150 f.writeBlock( list, list.length() ); 152 f.writeBlock( list, list.length() );
151 } 153 }
152} 154}
153 155
154void Om3u::deleteFile(const QString &filePath) {//deletes m3u file 156void Om3u::deleteFile(const QString &filePath) {//deletes m3u file
diff --git a/core/multimedia/opieplayer/playlistselection.cpp b/core/multimedia/opieplayer/playlistselection.cpp
index ad831cf..58c3966 100644
--- a/core/multimedia/opieplayer/playlistselection.cpp
+++ b/core/multimedia/opieplayer/playlistselection.cpp
@@ -13,20 +13,25 @@
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qheader.h>
22
23#include "playlistselection.h" 21#include "playlistselection.h"
24 22
23/* OPIE */
24#include <opie2/odebug.h>
25
26/* QT */
27#include <qheader.h>
28
29/* STD */
25#include <stdlib.h> 30#include <stdlib.h>
26 31
27class PlayListSelectionItem : public QListViewItem { 32class PlayListSelectionItem : public QListViewItem {
28public: 33public:
29 PlayListSelectionItem( QListView *parent, const DocLnk *f ) : QListViewItem( parent ), fl( f ) { 34 PlayListSelectionItem( QListView *parent, const DocLnk *f ) : QListViewItem( parent ), fl( f ) {
30 setText( 0, f->name() ); 35 setText( 0, f->name() );
31 setPixmap( 0, f->pixmap() ); 36 setPixmap( 0, f->pixmap() );
32 } 37 }
@@ -39,17 +44,17 @@ public:
39private: 44private:
40 const DocLnk *fl; 45 const DocLnk *fl;
41}; 46};
42 47
43 48
44PlayListSelection::PlayListSelection( QWidget *parent, const char *name ) 49PlayListSelection::PlayListSelection( QWidget *parent, const char *name )
45 : QListView( parent, name ) 50 : QListView( parent, name )
46{ 51{
47// qDebug("starting playlistselector"); 52// odebug << "starting playlistselector" << oendl;
48// #ifdef USE_PLAYLIST_BACKGROUND 53// #ifdef USE_PLAYLIST_BACKGROUND
49// setStaticBackground( TRUE ); 54// setStaticBackground( TRUE );
50// setBackgroundPixmap( Resource::loadPixmap( "opieplayer/background" ) ); 55// setBackgroundPixmap( Resource::loadPixmap( "opieplayer/background" ) );
51 56
52// setBackgroundPixmap( Resource::loadPixmap( "launcher/opielogo" ) ); 57// setBackgroundPixmap( Resource::loadPixmap( "launcher/opielogo" ) );
53// #endif 58// #endif
54// addColumn("Title",236); 59// addColumn("Title",236);
55// setAllColumnsShowFocus( TRUE ); 60// setAllColumnsShowFocus( TRUE );
@@ -61,17 +66,17 @@ PlayListSelection::PlayListSelection( QWidget *parent, const char *name )
61 66
62 67
63PlayListSelection::~PlayListSelection() { 68PlayListSelection::~PlayListSelection() {
64} 69}
65 70
66 71
67// #ifdef USE_PLAYLIST_BACKGROUND 72// #ifdef USE_PLAYLIST_BACKGROUND
68void PlayListSelection::drawBackground( QPainter *p, const QRect &r ) { 73void PlayListSelection::drawBackground( QPainter *p, const QRect &r ) {
69// qDebug("drawBackground"); 74// odebug << "drawBackground" << oendl;
70 p->fillRect( r, QBrush( white ) ); 75 p->fillRect( r, QBrush( white ) );
71// QImage logo = Resource::loadImage( "launcher/opielogo" ); 76// QImage logo = Resource::loadImage( "launcher/opielogo" );
72// if ( !logo.isNull() ) 77// if ( !logo.isNull() )
73// p->drawImage( (width() - logo.width()) / 2, (height() - logo.height()) / 2, logo ); 78// p->drawImage( (width() - logo.width()) / 2, (height() - logo.height()) / 2, logo );
74} 79}
75// #endif 80// #endif
76 81
77 82
@@ -181,28 +186,28 @@ void PlayListSelection::unSelect()
181 setSelected( currentItem(), FALSE); 186 setSelected( currentItem(), FALSE);
182} 187}
183 188
184void PlayListSelection::writeCurrent( Config& cfg ) { 189void PlayListSelection::writeCurrent( Config& cfg ) {
185 cfg.setGroup("PlayList"); 190 cfg.setGroup("PlayList");
186 QListViewItem *item = selectedItem(); 191 QListViewItem *item = selectedItem();
187 if ( item ) 192 if ( item )
188 cfg.writeEntry("current", item->text(0) ); 193 cfg.writeEntry("current", item->text(0) );
189 // qDebug(item->text(0)); 194 // odebug << item->text(0) << oendl;
190 195
191} 196}
192 197
193void PlayListSelection::setSelectedItem(const QString &strk ) { 198void PlayListSelection::setSelectedItem(const QString &strk ) {
194 199
195 unSelect(); 200 unSelect();
196 QListViewItemIterator it( this ); 201 QListViewItemIterator it( this );
197 for ( ; it.current(); ++it ) { 202 for ( ; it.current(); ++it ) {
198// qDebug( it.current()->text(0)); 203// odebug << it.current()->text(0) << oendl;
199 if( strk == it.current()->text(0)) { 204 if( strk == it.current()->text(0)) {
200// qDebug( "We have a match "+strk); 205// odebug << "We have a match "+strk << oendl;
201 setSelected( it.current(), TRUE); 206 setSelected( it.current(), TRUE);
202 ensureItemVisible( it.current() ); 207 ensureItemVisible( it.current() );
203 return; 208 return;
204 } 209 }
205 } 210 }
206// setSelected( item, TRUE ); 211// setSelected( item, TRUE );
207// ensureItemVisible( selectedItem() ); 212// ensureItemVisible( selectedItem() );
208} 213}
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp
index 3609f5d..d85ce50 100644
--- a/core/multimedia/opieplayer/playlistwidget.cpp
+++ b/core/multimedia/opieplayer/playlistwidget.cpp
@@ -15,35 +15,37 @@
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20// code added by L. J. Potter Sat 03-02-2002 06:17:54 20// code added by L. J. Potter Sat 03-02-2002 06:17:54
21#define QTOPIA_INTERNAL_FSLP 21#define QTOPIA_INTERNAL_FSLP
22 22
23#include <qtoolbar.h> 23#include "playlistselection.h"
24#include "playlistwidget.h"
25#include "mediaplayerstate.h"
26#include "inputDialog.h"
27#include "audiowidget.h"
28#include "videowidget.h"
29
30/* OPIE */
24#include <qpe/qpemenubar.h> 31#include <qpe/qpemenubar.h>
25#include <qpe/lnkproperties.h> 32#include <qpe/lnkproperties.h>
33#include <opie2/odebug.h>
26 34
35/* QT */
36#include <qtoolbar.h>
27#include <qaction.h> 37#include <qaction.h>
28#include <qlayout.h> 38#include <qlayout.h>
29#include <qmessagebox.h> 39#include <qmessagebox.h>
30
31//#include <qtimer.h> 40//#include <qtimer.h>
32 41
33#include "playlistselection.h" 42/* STD */
34#include "playlistwidget.h"
35#include "mediaplayerstate.h"
36
37#include "inputDialog.h"
38
39#include <stdlib.h> 43#include <stdlib.h>
40#include "audiowidget.h"
41#include "videowidget.h"
42 44
43#include <unistd.h> 45#include <unistd.h>
44#include <sys/file.h> 46#include <sys/file.h>
45#include <sys/ioctl.h> 47#include <sys/ioctl.h>
46#include <sys/soundcard.h> 48#include <sys/soundcard.h>
47 49
48// for setBacklight() 50// for setBacklight()
49#include <linux/fb.h> 51#include <linux/fb.h>
@@ -140,17 +142,17 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
140 QToolBar *bar = new QToolBar( this ); 142 QToolBar *bar = new QToolBar( this );
141 bar->setLabel( tr( "Play Operations" ) ); 143 bar->setLabel( tr( "Play Operations" ) );
142// d->tbPlayCurList = new ToolButton( bar, tr( "play List" ), "opieplayer/play_current_list", 144// d->tbPlayCurList = new ToolButton( bar, tr( "play List" ), "opieplayer/play_current_list",
143// this , SLOT( addSelected()) ); 145// this , SLOT( addSelected()) );
144 tbDeletePlaylist = new QPushButton( Resource::loadIconSet("trash"),"",bar,"close"); 146 tbDeletePlaylist = new QPushButton( Resource::loadIconSet("trash"),"",bar,"close");
145 tbDeletePlaylist->setFlat(TRUE); 147 tbDeletePlaylist->setFlat(TRUE);
146 148
147 tbDeletePlaylist->setFixedSize(20,20); 149 tbDeletePlaylist->setFixedSize(20,20);
148 150
149 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer/add_to_playlist", 151 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer/add_to_playlist",
150 this , SLOT(addSelected()) ); 152 this , SLOT(addSelected()) );
151 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "opieplayer/remove_from_playlist", 153 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "opieplayer/remove_from_playlist",
152 this , SLOT(removeSelected()) ); 154 this , SLOT(removeSelected()) );
153// d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", /*this */mediaPlayerState , SLOT(setPlaying(bool)/*btnPlay()*/), TRUE ); 155// d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", /*this */mediaPlayerState , SLOT(setPlaying(bool)/*btnPlay()*/), TRUE );
154 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", 156 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play",
155 this , SLOT( btnPlay(bool) ), TRUE ); 157 this , SLOT( btnPlay(bool) ), TRUE );
156 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer/shuffle", 158 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer/shuffle",
@@ -187,46 +189,46 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
187 connect( skinsMenu, SIGNAL( activated(int) ) , 189 connect( skinsMenu, SIGNAL( activated(int) ) ,
188 this, SLOT( skinsMenuActivated(int) ) ); 190 this, SLOT( skinsMenuActivated(int) ) );
189 populateSkinsMenu(); 191 populateSkinsMenu();
190 192
191 QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton ); 193 QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton );
192 QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton ); 194 QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton );
193 195
194 QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton ); 196 QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton );
195 197
196 tabWidget = new QTabWidget( hbox6, "tabWidget" ); 198 tabWidget = new QTabWidget( hbox6, "tabWidget" );
197// tabWidget->setTabShape(QTabWidget::Triangular); 199// tabWidget->setTabShape(QTabWidget::Triangular);
198 200
199 QWidget *pTab; 201 QWidget *pTab;
200 pTab = new QWidget( tabWidget, "pTab" ); 202 pTab = new QWidget( tabWidget, "pTab" );
201// playlistView = new QListView( pTab, "playlistview" ); 203// playlistView = new QListView( pTab, "playlistview" );
202// playlistView->setMinimumSize(236,260); 204// playlistView->setMinimumSize(236,260);
203 tabWidget->insertTab( pTab,"Playlist"); 205 tabWidget->insertTab( pTab,"Playlist");
204 206
205 207
206 // Add the playlist area 208 // Add the playlist area
207 209
208 QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton ); 210 QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton );
209 d->playListFrame = vbox3; 211 d->playListFrame = vbox3;
210 212
211 QGridLayout *layoutF = new QGridLayout( pTab ); 213 QGridLayout *layoutF = new QGridLayout( pTab );
212 layoutF->setSpacing( 2); 214 layoutF->setSpacing( 2);
213 layoutF->setMargin( 2); 215 layoutF->setMargin( 2);
214 layoutF->addMultiCellWidget( d->playListFrame , 0, 0, 0, 1 ); 216 layoutF->addMultiCellWidget( d->playListFrame , 0, 0, 0, 1 );
215 217
216 QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton ); 218 QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton );
217 219
218 d->selectedFiles = new PlayListSelection( hbox2); 220 d->selectedFiles = new PlayListSelection( hbox2);
219 QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton ); 221 QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton );
220 222
221 QPEApplication::setStylusOperation( d->selectedFiles->viewport(),QPEApplication::RightOnHold); 223 QPEApplication::setStylusOperation( d->selectedFiles->viewport(),QPEApplication::RightOnHold);
222 224
223 225
224 226
225 QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch 227 QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch
226 new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) ); 228 new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) );
227 new ToolButton( vbox1, tr( "Remove" ), "opieplayer/cut", d->selectedFiles, SLOT(removeSelected()) ); 229 new ToolButton( vbox1, tr( "Remove" ), "opieplayer/cut", d->selectedFiles, SLOT(removeSelected()) );
228 new ToolButton( vbox1, tr( "Move Down" ), "opieplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) ); 230 new ToolButton( vbox1, tr( "Move Down" ), "opieplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) );
229 QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch 231 QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch
230 232
231 QWidget *aTab; 233 QWidget *aTab;
232 aTab = new QWidget( tabWidget, "aTab" ); 234 aTab = new QWidget( tabWidget, "aTab" );
@@ -236,42 +238,42 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
236 layoutA->setSpacing( 2); 238 layoutA->setSpacing( 2);
237 layoutA->setMargin( 2); 239 layoutA->setMargin( 2);
238 layoutA->addMultiCellWidget( audioView, 0, 0, 0, 1 ); 240 layoutA->addMultiCellWidget( audioView, 0, 0, 0, 1 );
239 241
240 audioView->addColumn( tr("Title"),-1); 242 audioView->addColumn( tr("Title"),-1);
241 audioView->addColumn(tr("Size"), -1); 243 audioView->addColumn(tr("Size"), -1);
242 audioView->addColumn(tr("Media"),-1); 244 audioView->addColumn(tr("Media"),-1);
243 audioView->addColumn( tr( "Path" ), -1 ); 245 audioView->addColumn( tr( "Path" ), -1 );
244 246
245 audioView->setColumnAlignment(1, Qt::AlignRight); 247 audioView->setColumnAlignment(1, Qt::AlignRight);
246 audioView->setColumnAlignment(2, Qt::AlignRight); 248 audioView->setColumnAlignment(2, Qt::AlignRight);
247 audioView->setAllColumnsShowFocus(TRUE); 249 audioView->setAllColumnsShowFocus(TRUE);
248 250
249 audioView->setMultiSelection( TRUE ); 251 audioView->setMultiSelection( TRUE );
250 audioView->setSelectionMode( QListView::Extended); 252 audioView->setSelectionMode( QListView::Extended);
251 audioView->setSorting( 3, TRUE ); 253 audioView->setSorting( 3, TRUE );
252 254
253 tabWidget->insertTab(aTab,tr("Audio")); 255 tabWidget->insertTab(aTab,tr("Audio"));
254 256
255 QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold); 257 QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold);
256 258
257// audioView 259// audioView
258// populateAudioView(); 260// populateAudioView();
259// videowidget 261// videowidget
260 262
261 QWidget *vTab; 263 QWidget *vTab;
262 vTab = new QWidget( tabWidget, "vTab" ); 264 vTab = new QWidget( tabWidget, "vTab" );
263 videoView = new QListView( vTab, "Videoview" ); 265 videoView = new QListView( vTab, "Videoview" );
264 266
265 QGridLayout *layoutV = new QGridLayout( vTab ); 267 QGridLayout *layoutV = new QGridLayout( vTab );
266 layoutV->setSpacing( 2); 268 layoutV->setSpacing( 2);
267 layoutV->setMargin( 2); 269 layoutV->setMargin( 2);
268 layoutV->addMultiCellWidget( videoView, 0, 0, 0, 1 ); 270 layoutV->addMultiCellWidget( videoView, 0, 0, 0, 1 );
269 271
270 videoView->addColumn(tr("Title"),-1); 272 videoView->addColumn(tr("Title"),-1);
271 videoView->addColumn(tr("Size"),-1); 273 videoView->addColumn(tr("Size"),-1);
272 videoView->addColumn(tr("Media"),-1); 274 videoView->addColumn(tr("Media"),-1);
273 videoView->addColumn(tr( "Path" ), -1 ); 275 videoView->addColumn(tr( "Path" ), -1 );
274 videoView->setColumnAlignment(1, Qt::AlignRight); 276 videoView->setColumnAlignment(1, Qt::AlignRight);
275 videoView->setColumnAlignment(2, Qt::AlignRight); 277 videoView->setColumnAlignment(2, Qt::AlignRight);
276 videoView->setAllColumnsShowFocus(TRUE); 278 videoView->setAllColumnsShowFocus(TRUE);
277 videoView->setMultiSelection( TRUE ); 279 videoView->setMultiSelection( TRUE );
@@ -298,17 +300,17 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
298 300
299 connect( d->selectedFiles, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)), 301 connect( d->selectedFiles, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),
300 this,SLOT( playlistViewPressed(int,QListViewItem*,const QPoint&,int)) ); 302 this,SLOT( playlistViewPressed(int,QListViewItem*,const QPoint&,int)) );
301 303
302 304
303///audioView 305///audioView
304 connect( audioView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)), 306 connect( audioView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),
305 this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int)) ); 307 this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int)) );
306 308
307 connect( audioView, SIGNAL( returnPressed(QListViewItem*)), 309 connect( audioView, SIGNAL( returnPressed(QListViewItem*)),
308 this,SLOT( playIt(QListViewItem*)) ); 310 this,SLOT( playIt(QListViewItem*)) );
309 connect( audioView, SIGNAL( doubleClicked(QListViewItem*) ), this, SLOT( addToSelection(QListViewItem*) ) ); 311 connect( audioView, SIGNAL( doubleClicked(QListViewItem*) ), this, SLOT( addToSelection(QListViewItem*) ) );
310 312
311 313
312//videoView 314//videoView
313 connect( videoView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)), 315 connect( videoView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),
314 this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int)) ); 316 this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int)) );
@@ -332,17 +334,17 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
332 setCentralWidget( vbox5 ); 334 setCentralWidget( vbox5 );
333 335
334 Config cfg( "OpiePlayer" ); 336 Config cfg( "OpiePlayer" );
335 readConfig( cfg ); 337 readConfig( cfg );
336 338
337 currentPlayList = cfg.readEntry("CurrentPlaylist","default"); 339 currentPlayList = cfg.readEntry("CurrentPlaylist","default");
338 loadList(DocLnk( currentPlayList)); 340 loadList(DocLnk( currentPlayList));
339 setCaption(tr("OpiePlayer: ")+ fullBaseName ( QFileInfo(currentPlayList))); 341 setCaption(tr("OpiePlayer: ")+ fullBaseName ( QFileInfo(currentPlayList)));
340 342
341 initializeStates(); 343 initializeStates();
342} 344}
343 345
344 346
345PlayListWidget::~PlayListWidget() { 347PlayListWidget::~PlayListWidget() {
346 Config cfg( "OpiePlayer" ); 348 Config cfg( "OpiePlayer" );
347 writeConfig( cfg ); 349 writeConfig( cfg );
348 350
@@ -384,34 +386,34 @@ void PlayListWidget::writeConfig( Config& cfg ) const {
384 cfg.setGroup("PlayList"); 386 cfg.setGroup("PlayList");
385 int noOfFiles = 0; 387 int noOfFiles = 0;
386 d->selectedFiles->first(); 388 d->selectedFiles->first();
387 do { 389 do {
388 const DocLnk *lnk = d->selectedFiles->current(); 390 const DocLnk *lnk = d->selectedFiles->current();
389 if ( lnk ) { 391 if ( lnk ) {
390 QString entryName; 392 QString entryName;
391 entryName.sprintf( "File%i", noOfFiles + 1 ); 393 entryName.sprintf( "File%i", noOfFiles + 1 );
392// qDebug(entryName); 394// odebug << entryName << oendl;
393 cfg.writeEntry( entryName, lnk->linkFile() ); 395 cfg.writeEntry( entryName, lnk->linkFile() );
394 // if this link does exist, add it so we have the file 396 // if this link does exist, add it so we have the file
395 // next time... 397 // next time...
396 if ( !QFile::exists( lnk->linkFile() ) ) { 398 if ( !QFile::exists( lnk->linkFile() ) ) {
397 // the way writing lnks doesn't really check for out 399 // the way writing lnks doesn't really check for out
398 // of disk space, but check it anyway. 400 // of disk space, but check it anyway.
399// if ( !lnk->writeLink() ) { 401// if ( !lnk->writeLink() ) {
400// QMessageBox::critical( 0, tr("Out of space"), 402// QMessageBox::critical( 0, tr("Out of space"),
401// tr( "There was a problem saving " 403// tr( "There was a problem saving "
402// "the playlist.\n" 404// "the playlist.\n"
403// "Your playlist " 405// "Your playlist "
404// "may be missing some entries\n" 406// "may be missing some entries\n"
405// "the next time you start it." ) 407// "the next time you start it." )
406// ); 408// );
407// } 409// }
408 410
409 } 411 }
410 noOfFiles++; 412 noOfFiles++;
411 } 413 }
412 } 414 }
413 while ( d->selectedFiles->next() ); 415 while ( d->selectedFiles->next() );
414 cfg.writeEntry("NumberOfFiles", noOfFiles ); 416 cfg.writeEntry("NumberOfFiles", noOfFiles );
415} 417}
416 418
417 419
@@ -441,63 +443,63 @@ void PlayListWidget::clearList() {
441void PlayListWidget::addAllToList() { 443void PlayListWidget::addAllToList() {
442 DocLnkSet filesAll; 444 DocLnkSet filesAll;
443 Global::findDocuments(&filesAll, "video/*;audio/*"); 445 Global::findDocuments(&filesAll, "video/*;audio/*");
444 QListIterator<DocLnk> Adit( filesAll.children() ); 446 QListIterator<DocLnk> Adit( filesAll.children() );
445 for ( ; Adit.current(); ++Adit ) 447 for ( ; Adit.current(); ++Adit )
446 if(QFileInfo(Adit.current()->file()).exists()) 448 if(QFileInfo(Adit.current()->file()).exists())
447 d->selectedFiles->addToSelection( **Adit ); 449 d->selectedFiles->addToSelection( **Adit );
448 tabWidget->setCurrentPage(0); 450 tabWidget->setCurrentPage(0);
449 451
450 writeCurrentM3u(); 452 writeCurrentM3u();
451 d->selectedFiles->first(); 453 d->selectedFiles->first();
452} 454}
453 455
454 456
455void PlayListWidget::addAllMusicToList() { 457void PlayListWidget::addAllMusicToList() {
456 QListIterator<DocLnk> dit( files.children() ); 458 QListIterator<DocLnk> dit( files.children() );
457 for ( ; dit.current(); ++dit ) 459 for ( ; dit.current(); ++dit )
458 if(QFileInfo(dit.current()->file()).exists()) 460 if(QFileInfo(dit.current()->file()).exists())
459 d->selectedFiles->addToSelection( **dit ); 461 d->selectedFiles->addToSelection( **dit );
460 tabWidget->setCurrentPage(0); 462 tabWidget->setCurrentPage(0);
461 463
462 writeCurrentM3u(); 464 writeCurrentM3u();
463 d->selectedFiles->first(); 465 d->selectedFiles->first();
464} 466}
465 467
466 468
467void PlayListWidget::addAllVideoToList() { 469void PlayListWidget::addAllVideoToList() {
468 QListIterator<DocLnk> dit( vFiles.children() ); 470 QListIterator<DocLnk> dit( vFiles.children() );
469 for ( ; dit.current(); ++dit ) 471 for ( ; dit.current(); ++dit )
470 if(QFileInfo( dit.current()->file()).exists()) 472 if(QFileInfo( dit.current()->file()).exists())
471 d->selectedFiles->addToSelection( **dit ); 473 d->selectedFiles->addToSelection( **dit );
472 tabWidget->setCurrentPage(0); 474 tabWidget->setCurrentPage(0);
473 475
474 writeCurrentM3u(); 476 writeCurrentM3u();
475 d->selectedFiles->first(); 477 d->selectedFiles->first();
476} 478}
477 479
478 480
479void PlayListWidget::setDocument(const QString& fileref) { 481void PlayListWidget::setDocument(const QString& fileref) {
480 fromSetDocument = true; 482 fromSetDocument = true;
481 d->setDocumentUsed = TRUE; 483 d->setDocumentUsed = TRUE;
482 setDocumentEx(fileref); 484 setDocumentEx(fileref);
483} 485}
484 486
485void PlayListWidget::setDocumentEx(const QString& fileref) { 487void PlayListWidget::setDocumentEx(const QString& fileref) {
486 qDebug("opieplayer receive "+fileref); 488 odebug << "opieplayer receive "+fileref << oendl;
487 clearList(); 489 clearList();
488 DocLnk lnk; 490 DocLnk lnk;
489 QFileInfo fileInfo(fileref); 491 QFileInfo fileInfo(fileref);
490 if ( !fileInfo.exists() ) { 492 if ( !fileInfo.exists() ) {
491 QMessageBox::critical( 0, tr( "Invalid File" ), 493 QMessageBox::critical( 0, tr( "Invalid File" ),
492 tr( "There was a problem in getting the file." ) ); 494 tr( "There was a problem in getting the file." ) );
493 return; 495 return;
494 } 496 }
495 // qDebug("<<<<<<<<<<<<<<<<<<<<<<setDocument "+fileref); 497 // odebug << "<<<<<<<<<<<<<<<<<<<<<<setDocument "+fileref << oendl;
496 QString extension = fileInfo.extension(false); 498 QString extension = fileInfo.extension(false);
497 if( extension.find( "m3u", 0, false) != -1) { //is m3u 499 if( extension.find( "m3u", 0, false) != -1) { //is m3u
498 readm3u( fileref); 500 readm3u( fileref);
499 } 501 }
500 else if( extension.find( "pls", 0, false) != -1 ) { //is pls 502 else if( extension.find( "pls", 0, false) != -1 ) { //is pls
501 readPls( fileref); 503 readPls( fileref);
502 } 504 }
503 else if( fileref.find("playlist",0,TRUE) != -1) {//is playlist 505 else if( fileref.find("playlist",0,TRUE) != -1) {//is playlist
@@ -529,55 +531,55 @@ void PlayListWidget::setDocumentEx(const QString& fileref) {
529 mediaPlayerState->setPlaying( FALSE ); 531 mediaPlayerState->setPlaying( FALSE );
530 qApp->processEvents(); 532 qApp->processEvents();
531 mediaPlayerState->setPlaying( TRUE ); 533 mediaPlayerState->setPlaying( TRUE );
532 534
533} 535}
534 536
535 537
536void PlayListWidget::setActiveWindow() { 538void PlayListWidget::setActiveWindow() {
537 // qDebug("SETTING active window"); 539 // odebug << "SETTING active window" << oendl;
538 // When we get raised we need to ensure that it switches views 540 // When we get raised we need to ensure that it switches views
539 char origView = mediaPlayerState->view(); 541 char origView = mediaPlayerState->view();
540 mediaPlayerState->setView( 'l' ); // invalidate 542 mediaPlayerState->setView( 'l' ); // invalidate
541 mediaPlayerState->setView( origView ); // now switch back 543 mediaPlayerState->setView( origView ); // now switch back
542} 544}
543 545
544 546
545void PlayListWidget::useSelectedDocument() { 547void PlayListWidget::useSelectedDocument() {
546 d->setDocumentUsed = FALSE; 548 d->setDocumentUsed = FALSE;
547} 549}
548 550
549 551
550const DocLnk *PlayListWidget::current() { // this is fugly 552const DocLnk *PlayListWidget::current() { // this is fugly
551 switch (tabWidget->currentPageIndex()) { 553 switch (tabWidget->currentPageIndex()) {
552 case 0: //playlist 554 case 0: //playlist
553 { 555 {
554 // qDebug("playlist"); 556 // odebug << "playlist" << oendl;
555 if ( mediaPlayerState->playlist() ) { 557 if ( mediaPlayerState->playlist() ) {
556 return d->selectedFiles->current(); 558 return d->selectedFiles->current();
557 } 559 }
558 else if ( d->setDocumentUsed && d->current ) { 560 else if ( d->setDocumentUsed && d->current ) {
559 return d->current; 561 return d->current;
560 } else { 562 } else {
561 return &(d->files->selectedDocument()); 563 return &(d->files->selectedDocument());
562 } 564 }
563 } 565 }
564 break; 566 break;
565 case 1://audio 567 case 1://audio
566 { 568 {
567 // qDebug("audioView"); 569 // odebug << "audioView" << oendl;
568 QListIterator<DocLnk> dit( files.children() ); 570 QListIterator<DocLnk> dit( files.children() );
569 for ( ; dit.current(); ++dit ) { 571 for ( ; dit.current(); ++dit ) {
570 if( dit.current()->name() == audioView->currentItem()->text(0) && !insanityBool) { 572 if( dit.current()->name() == audioView->currentItem()->text(0) && !insanityBool) {
571 insanityBool=TRUE; 573 insanityBool=TRUE;
572 return dit; 574 return dit;
573 } 575 }
574 } 576 }
575 } 577 }
576 break; 578 break;
577 case 2: // video 579 case 2: // video
578 { 580 {
579 QListIterator<DocLnk> Vdit( vFiles.children() ); 581 QListIterator<DocLnk> Vdit( vFiles.children() );
580 for ( ; Vdit.current(); ++Vdit ) { 582 for ( ; Vdit.current(); ++Vdit ) {
581 if( Vdit.current()->name() == videoView->currentItem()->text(0) && !insanityBool) { 583 if( Vdit.current()->name() == videoView->currentItem()->text(0) && !insanityBool) {
582 insanityBool=TRUE; 584 insanityBool=TRUE;
583 return Vdit; 585 return Vdit;
@@ -655,29 +657,29 @@ bool PlayListWidget::last() {
655 657
656 658
657void PlayListWidget::saveList() { 659void PlayListWidget::saveList() {
658 writem3u(); 660 writem3u();
659} 661}
660 662
661void PlayListWidget::loadList( const DocLnk & lnk) { 663void PlayListWidget::loadList( const DocLnk & lnk) {
662 QString name = lnk.name(); 664 QString name = lnk.name();
663 // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<currentList is "+name); 665 // odebug << "<<<<<<<<<<<<<<<<<<<<<<<<currentList is "+name << oendl;
664 666
665 if( name.length()>0) { 667 if( name.length()>0) {
666 setCaption("OpiePlayer: "+name); 668 setCaption("OpiePlayer: "+name);
667 // qDebug("<<<<<<<<<<<<load list "+ lnk.file()); 669 // odebug << "<<<<<<<<<<<<load list "+ lnk.file() << oendl;
668 clearList(); 670 clearList();
669 readm3u(lnk.file()); 671 readm3u(lnk.file());
670 tabWidget->setCurrentPage(0); 672 tabWidget->setCurrentPage(0);
671 } 673 }
672} 674}
673 675
674void PlayListWidget::setPlaylist( bool shown ) { 676void PlayListWidget::setPlaylist( bool shown ) {
675 if ( shown ) 677 if ( shown )
676 d->playListFrame->show(); 678 d->playListFrame->show();
677 else 679 else
678 d->playListFrame->hide(); 680 d->playListFrame->hide();
679} 681}
680 682
681void PlayListWidget::setView( char view ) { 683void PlayListWidget::setView( char view ) {
682 if ( view == 'l' ) 684 if ( view == 'l' )
683 QPEApplication::showWidget( this ); 685 QPEApplication::showWidget( this );
@@ -702,34 +704,34 @@ void PlayListWidget::addSelected() {
702 lnk.setFile( filename ); //sets file name 704 lnk.setFile( filename ); //sets file name
703 d->selectedFiles->addToSelection( lnk); 705 d->selectedFiles->addToSelection( lnk);
704 } 706 }
705 } 707 }
706 audioView->clearSelection(); 708 audioView->clearSelection();
707 // d->selectedFiles->next(); 709 // d->selectedFiles->next();
708 } 710 }
709 break; 711 break;
710 712
711 case 2: { // video 713 case 2: { // video
712 QListViewItemIterator it( videoView ); 714 QListViewItemIterator it( videoView );
713 for ( ; it.current(); ++it ) { 715 for ( ; it.current(); ++it ) {
714 if ( it.current()->isSelected() ) { 716 if ( it.current()->isSelected() ) {
715 717
716 filename = it.current()->text(3); 718 filename = it.current()->text(3);
717 lnk.setName( QFileInfo(filename).baseName() ); //sets name 719 lnk.setName( QFileInfo(filename).baseName() ); //sets name
718 lnk.setFile( filename ); //sets file name 720 lnk.setFile( filename ); //sets file name
719 d->selectedFiles->addToSelection( lnk); 721 d->selectedFiles->addToSelection( lnk);
720 } 722 }
721 } 723 }
722 videoView->clearSelection(); 724 videoView->clearSelection();
723 } 725 }
724 break; 726 break;
725 }; 727 };
726 // tabWidget->setCurrentPage(0); 728 // tabWidget->setCurrentPage(0);
727 writeCurrentM3u(); 729 writeCurrentM3u();
728 730
729} 731}
730 732
731void PlayListWidget::removeSelected() { 733void PlayListWidget::removeSelected() {
732 d->selectedFiles->removeSelected( ); 734 d->selectedFiles->removeSelected( );
733} 735}
734 736
735void PlayListWidget::playIt( QListViewItem *) { 737void PlayListWidget::playIt( QListViewItem *) {
@@ -752,21 +754,21 @@ void PlayListWidget::addToSelection( QListViewItem *it) {
752 // case 1: { 754 // case 1: {
753 DocLnk lnk; 755 DocLnk lnk;
754 QString filename; 756 QString filename;
755 757
756 filename=it->text(3); 758 filename=it->text(3);
757 lnk.setName( fullBaseName ( QFileInfo(filename)) ); //sets name 759 lnk.setName( fullBaseName ( QFileInfo(filename)) ); //sets name
758 lnk.setFile( filename ); //sets file name 760 lnk.setFile( filename ); //sets file name
759 d->selectedFiles->addToSelection( lnk); 761 d->selectedFiles->addToSelection( lnk);
760 762
761 if(tabWidget->currentPageIndex() == 0) 763 if(tabWidget->currentPageIndex() == 0)
762 writeCurrentM3u(); 764 writeCurrentM3u();
763 // tabWidget->setCurrentPage(0); 765 // tabWidget->setCurrentPage(0);
764 766
765 } 767 }
766} 768}
767 769
768void PlayListWidget::tabChanged(QWidget *) { 770void PlayListWidget::tabChanged(QWidget *) {
769 771
770 switch ( tabWidget->currentPageIndex()) { 772 switch ( tabWidget->currentPageIndex()) {
771 case 0: 773 case 0:
772 { 774 {
@@ -813,45 +815,45 @@ void PlayListWidget::btnPlay(bool b) {
813 case 0: 815 case 0:
814 { 816 {
815 // if( d->selectedFiles->current()->file().find(" ",0,TRUE) != -1 817 // if( d->selectedFiles->current()->file().find(" ",0,TRUE) != -1
816 // if( d->selectedFiles->current()->file().find("%20",0,TRUE) != -1) { 818 // if( d->selectedFiles->current()->file().find("%20",0,TRUE) != -1) {
817 // QMessageBox::message("Note","You are trying to play\na malformed url."); 819 // QMessageBox::message("Note","You are trying to play\na malformed url.");
818 // } else { 820 // } else {
819 mediaPlayerState->setPlaying(b); 821 mediaPlayerState->setPlaying(b);
820 insanityBool=FALSE; 822 insanityBool=FALSE;
821 qDebug("insanity"); 823 odebug << "insanity" << oendl;
822 // } 824 // }
823 } 825 }
824 break; 826 break;
825 case 1: 827 case 1:
826 { 828 {
827 // d->selectedFiles->unSelect(); 829 // d->selectedFiles->unSelect();
828 addToSelection( audioView->currentItem() ); 830 addToSelection( audioView->currentItem() );
829 mediaPlayerState->setPlaying( b); 831 mediaPlayerState->setPlaying( b);
830 d->selectedFiles->removeSelected( ); 832 d->selectedFiles->removeSelected( );
831 d->selectedFiles->unSelect(); 833 d->selectedFiles->unSelect();
832 tabWidget->setCurrentPage(1); 834 tabWidget->setCurrentPage(1);
833 insanityBool=FALSE; 835 insanityBool=FALSE;
834 }// audioView->clearSelection(); 836 }// audioView->clearSelection();
835 break; 837 break;
836 case 2: 838 case 2:
837 { 839 {
838 840
839 addToSelection( videoView->currentItem() ); 841 addToSelection( videoView->currentItem() );
840 mediaPlayerState->setPlaying( b); 842 mediaPlayerState->setPlaying( b);
841 // qApp->processEvents(); 843 // qApp->processEvents();
842 d->selectedFiles->removeSelected( ); 844 d->selectedFiles->removeSelected( );
843 d->selectedFiles->unSelect(); 845 d->selectedFiles->unSelect();
844 tabWidget->setCurrentPage(2); 846 tabWidget->setCurrentPage(2);
845 insanityBool=FALSE; 847 insanityBool=FALSE;
846 }// videoView->clearSelection(); 848 }// videoView->clearSelection();
847 break; 849 break;
848 }; 850 };
849 851
850} 852}
851 853
852void PlayListWidget::deletePlaylist() { 854void PlayListWidget::deletePlaylist() {
853 switch( QMessageBox::information( this, (tr("Remove Playlist?")), 855 switch( QMessageBox::information( this, (tr("Remove Playlist?")),
854 (tr("You really want to delete\nthis playlist?")), 856 (tr("You really want to delete\nthis playlist?")),
855 (tr("Yes")), (tr("No")), 0 )){ 857 (tr("Yes")), (tr("No")), 0 )){
856 case 0: // Yes clicked, 858 case 0: // Yes clicked,
857 QFile().remove(playLists->selectedDocument().file()); 859 QFile().remove(playLists->selectedDocument().file());
@@ -869,36 +871,36 @@ void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint&, int
869 case 1: 871 case 1:
870 break; 872 break;
871 case 2:{ 873 case 2:{
872 874
873 QPopupMenu m; 875 QPopupMenu m;
874 m.insertItem( tr( "Play" ), this, SLOT( playSelected() )); 876 m.insertItem( tr( "Play" ), this, SLOT( playSelected() ));
875 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() )); 877 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() ));
876 m.insertSeparator(); 878 m.insertSeparator();
877 if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() ) 879 if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() )
878 m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); 880 m.insertItem( tr( "Properties" ), this, SLOT( listDelete() ));
879 881
880 m.exec( QCursor::pos() ); 882 m.exec( QCursor::pos() );
881 } 883 }
882 break; 884 break;
883 }; 885 };
884} 886}
885 887
886void PlayListWidget::playSelected() 888void PlayListWidget::playSelected()
887{ 889{
888 btnPlay( true); 890 btnPlay( true);
889// d->selectedFiles->unSelect(); 891// d->selectedFiles->unSelect();
890} 892}
891 893
892void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint&, int) 894void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint&, int)
893{ 895{
894 switch (mouse) { 896 switch (mouse) {
895 case 1: 897 case 1:
896 898
897 break; 899 break;
898 case 2:{ 900 case 2:{
899 QPopupMenu m; 901 QPopupMenu m;
900 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() )); 902 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() ));
901 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() )); 903 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() ));
902 // m.insertSeparator(); 904 // m.insertSeparator();
903 // m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); 905 // m.insertItem( tr( "Properties" ), this, SLOT( listDelete() ));
904 m.exec( QCursor::pos() ); 906 m.exec( QCursor::pos() );
@@ -910,17 +912,17 @@ void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoi
910 912
911void PlayListWidget::listDelete() { 913void PlayListWidget::listDelete() {
912 Config cfg( "OpiePlayer" ); 914 Config cfg( "OpiePlayer" );
913 cfg.setGroup("PlayList"); 915 cfg.setGroup("PlayList");
914 currentPlayList = cfg.readEntry("CurrentPlaylist",""); 916 currentPlayList = cfg.readEntry("CurrentPlaylist","");
915 QString file; 917 QString file;
916 // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 918 // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
917 switch ( tabWidget->currentPageIndex()) { 919 switch ( tabWidget->currentPageIndex()) {
918 case 0: 920 case 0:
919 break; 921 break;
920 case 1: 922 case 1:
921 { 923 {
922 file = audioView->currentItem()->text(0); 924 file = audioView->currentItem()->text(0);
923 QListIterator<DocLnk> Pdit( files.children() ); 925 QListIterator<DocLnk> Pdit( files.children() );
924 for ( ; Pdit.current(); ++Pdit ) { 926 for ( ; Pdit.current(); ++Pdit ) {
925 if( Pdit.current()->name() == file) { 927 if( Pdit.current()->name() == file) {
926 LnkProperties prop( Pdit.current() ); 928 LnkProperties prop( Pdit.current() );
@@ -946,27 +948,27 @@ void PlayListWidget::listDelete() {
946 // } 948 // }
947 // } 949 // }
948 } 950 }
949 break; 951 break;
950 }; 952 };
951} 953}
952 954
953void PlayListWidget::scanForAudio() { 955void PlayListWidget::scanForAudio() {
954 // qDebug("scan for audio"); 956 // odebug << "scan for audio" << oendl;
955 files.detachChildren(); 957 files.detachChildren();
956 QListIterator<DocLnk> sdit( files.children() ); 958 QListIterator<DocLnk> sdit( files.children() );
957 for ( ; sdit.current(); ++sdit ) { 959 for ( ; sdit.current(); ++sdit ) {
958 delete sdit.current(); 960 delete sdit.current();
959 } 961 }
960 Global::findDocuments( &files, audioMimes); 962 Global::findDocuments( &files, audioMimes);
961 audioScan = true; 963 audioScan = true;
962} 964}
963void PlayListWidget::scanForVideo() { 965void PlayListWidget::scanForVideo() {
964 // qDebug("scan for video"); 966 // odebug << "scan for video" << oendl;
965 vFiles.detachChildren(); 967 vFiles.detachChildren();
966 QListIterator<DocLnk> sdit( vFiles.children() ); 968 QListIterator<DocLnk> sdit( vFiles.children() );
967 for ( ; sdit.current(); ++sdit ) { 969 for ( ; sdit.current(); ++sdit ) {
968 delete sdit.current(); 970 delete sdit.current();
969 } 971 }
970 Global::findDocuments(&vFiles, "video/*"); 972 Global::findDocuments(&vFiles, "video/*");
971 videoScan = true; 973 videoScan = true;
972} 974}
@@ -989,19 +991,19 @@ void PlayListWidget::populateAudioView() {
989 if(dit.current()->file().find(path) != -1 ) storage=name; 991 if(dit.current()->file().find(path) != -1 ) storage=name;
990 } 992 }
991 993
992 QListViewItem * newItem; 994 QListViewItem * newItem;
993 if ( QFile( dit.current()->file()).exists() || dit.current()->file().left(4) == "http" ) { 995 if ( QFile( dit.current()->file()).exists() || dit.current()->file().left(4) == "http" ) {
994 long size; 996 long size;
995 if( dit.current()->file().left(4) == "http" ) 997 if( dit.current()->file().left(4) == "http" )
996 size=0; 998 size=0;
997 else 999 else
998 size = QFile( dit.current()->file() ).size(); 1000 size = QFile( dit.current()->file() ).size();
999 // qDebug(dit.current()->name()); 1001 // odebug << dit.current()->name() << oendl;
1000 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), 1002 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(),
1001 QString::number(size ), storage, dit.current()->file()); 1003 QString::number(size ), storage, dit.current()->file());
1002 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" )); 1004 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" ));
1003 } 1005 }
1004 } 1006 }
1005 1007
1006} 1008}
1007 1009
@@ -1035,17 +1037,17 @@ void PlayListWidget::populateVideoView() {
1035 1037
1036void PlayListWidget::openFile() { 1038void PlayListWidget::openFile() {
1037 QString filename, name; 1039 QString filename, name;
1038 InputDialog *fileDlg; 1040 InputDialog *fileDlg;
1039 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); 1041 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0);
1040 fileDlg->exec(); 1042 fileDlg->exec();
1041 if( fileDlg->result() == 1 ) { 1043 if( fileDlg->result() == 1 ) {
1042 filename = fileDlg->text(); 1044 filename = fileDlg->text();
1043 // qDebug( "Selected filename is " + filename ); 1045 // odebug << "Selected filename is " + filename << oendl;
1044 DocLnk lnk; 1046 DocLnk lnk;
1045 Config cfg( "OpiePlayer" ); 1047 Config cfg( "OpiePlayer" );
1046 cfg.setGroup("PlayList"); 1048 cfg.setGroup("PlayList");
1047 1049
1048 QString m3uFile; 1050 QString m3uFile;
1049 m3uFile = filename; 1051 m3uFile = filename;
1050 if(filename.left(4) == "http") { 1052 if(filename.left(4) == "http") {
1051 if(filename.find(":",8,TRUE) != -1) { //found a port 1053 if(filename.find(":",8,TRUE) != -1) { //found a port
@@ -1070,57 +1072,57 @@ void PlayListWidget::openFile() {
1070 } else { 1072 } else {
1071 lnk.setName( fullBaseName ( QFileInfo(filename)) ); //sets name 1073 lnk.setName( fullBaseName ( QFileInfo(filename)) ); //sets name
1072 lnk.setFile( filename ); //sets file name 1074 lnk.setFile( filename ); //sets file name
1073 d->selectedFiles->addToSelection( lnk); 1075 d->selectedFiles->addToSelection( lnk);
1074 lnk.removeLinkFile(); 1076 lnk.removeLinkFile();
1075 writeCurrentM3u(); 1077 writeCurrentM3u();
1076 } 1078 }
1077 } 1079 }
1078 1080
1079 if( fileDlg ) { 1081 if( fileDlg ) {
1080 delete fileDlg; 1082 delete fileDlg;
1081 } 1083 }
1082} 1084}
1083 1085
1084 1086
1085/* 1087/*
1086reads m3u and shows files/urls to playlist widget */ 1088reads m3u and shows files/urls to playlist widget */
1087void PlayListWidget::readm3u( const QString &filename ) { 1089void PlayListWidget::readm3u( const QString &filename ) {
1088 // qDebug( "read m3u filename " + filename ); 1090 // odebug << "read m3u filename " + filename << oendl;
1089 1091
1090 Om3u *m3uList; 1092 Om3u *m3uList;
1091 QString s, name; 1093 QString s, name;
1092 m3uList = new Om3u( filename, IO_ReadOnly ); 1094 m3uList = new Om3u( filename, IO_ReadOnly );
1093 m3uList->readM3u(); 1095 m3uList->readM3u();
1094 DocLnk lnk; 1096 DocLnk lnk;
1095 for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) { 1097 for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) {
1096 s = *it; 1098 s = *it;
1097 // qDebug("reading "+ s); 1099 // odebug << "reading "+ s << oendl;
1098 if(s.left(4)=="http") { 1100 if(s.left(4)=="http") {
1099 lnk.setName( s ); //sets file name 1101 lnk.setName( s ); //sets file name
1100 lnk.setIcon("opieplayer2/musicfile"); 1102 lnk.setIcon("opieplayer2/musicfile");
1101 1103
1102 // if(s.right(4) != '.' || s.right(5) != '.') 1104 // if(s.right(4) != '.' || s.right(5) != '.')
1103 if(s.right(4) != '.' || s.right(5) != '.' ) 1105 if(s.right(4) != '.' || s.right(5) != '.' )
1104 if( s.right(1) != "/") 1106 if( s.right(1) != "/")
1105 lnk.setFile( s+"/"); //if url with no extension 1107 lnk.setFile( s+"/"); //if url with no extension
1106 else 1108 else
1107 lnk.setFile( s ); //sets file name 1109 lnk.setFile( s ); //sets file name
1108 1110
1109 } else { 1111 } else {
1110 // if( QFileInfo( s ).exists() ) { 1112 // if( QFileInfo( s ).exists() ) {
1111 lnk.setName( fullBaseName ( QFileInfo(s))); 1113 lnk.setName( fullBaseName ( QFileInfo(s)));
1112 // if(s.right(4) == '.') {//if regular file 1114 // if(s.right(4) == '.') {//if regular file
1113 if(s.left(1) != "/") { 1115 if(s.left(1) != "/") {
1114 // qDebug("set link "+QFileInfo(filename).dirPath()+"/"+s); 1116 // odebug << "set link "+QFileInfo(filename).dirPath()+"/"+s << oendl;
1115 lnk.setFile( QFileInfo(filename).dirPath()+"/"+s); 1117 lnk.setFile( QFileInfo(filename).dirPath()+"/"+s);
1116 lnk.setIcon("SoundPlayer"); 1118 lnk.setIcon("SoundPlayer");
1117 } else { 1119 } else {
1118 // qDebug("set link2 "+s); 1120 // odebug << "set link2 "+s << oendl;
1119 lnk.setFile( s); 1121 lnk.setFile( s);
1120 lnk.setIcon("SoundPlayer"); 1122 lnk.setIcon("SoundPlayer");
1121 } 1123 }
1122 } 1124 }
1123 d->selectedFiles->addToSelection( lnk ); 1125 d->selectedFiles->addToSelection( lnk );
1124 } 1126 }
1125 Config config( "OpiePlayer" ); 1127 Config config( "OpiePlayer" );
1126 config.setGroup( "PlayList" ); 1128 config.setGroup( "PlayList" );
@@ -1130,24 +1132,24 @@ void PlayListWidget::readm3u( const QString &filename ) {
1130 currentPlayList=filename; 1132 currentPlayList=filename;
1131 1133
1132// m3uList->write(); 1134// m3uList->write();
1133 m3uList->close(); 1135 m3uList->close();
1134 if(m3uList) delete m3uList; 1136 if(m3uList) delete m3uList;
1135 1137
1136 d->selectedFiles->setSelectedItem( s); 1138 d->selectedFiles->setSelectedItem( s);
1137 setCaption(tr("OpiePlayer: ")+ fullBaseName ( QFileInfo(filename))); 1139 setCaption(tr("OpiePlayer: ")+ fullBaseName ( QFileInfo(filename)));
1138 1140
1139} 1141}
1140 1142
1141/* 1143/*
1142reads pls and adds files/urls to playlist */ 1144reads pls and adds files/urls to playlist */
1143void PlayListWidget::readPls( const QString &filename ) { 1145void PlayListWidget::readPls( const QString &filename ) {
1144 1146
1145 // qDebug( "pls filename is " + filename ); 1147 // odebug << "pls filename is " + filename << oendl;
1146 Om3u *m3uList; 1148 Om3u *m3uList;
1147 QString s, name; 1149 QString s, name;
1148 m3uList = new Om3u( filename, IO_ReadOnly ); 1150 m3uList = new Om3u( filename, IO_ReadOnly );
1149 m3uList->readPls(); 1151 m3uList->readPls();
1150 1152
1151 for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) { 1153 for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) {
1152 s = *it; 1154 s = *it;
1153 // s.replace( QRegExp( "%20" )," " ); 1155 // s.replace( QRegExp( "%20" )," " );
@@ -1180,30 +1182,30 @@ void PlayListWidget::readPls( const QString &filename ) {
1180 1182
1181 m3uList->close(); 1183 m3uList->close();
1182 if(m3uList) delete m3uList; 1184 if(m3uList) delete m3uList;
1183} 1185}
1184 1186
1185/* 1187/*
1186 writes current playlist to current m3u file */ 1188 writes current playlist to current m3u file */
1187void PlayListWidget::writeCurrentM3u() { 1189void PlayListWidget::writeCurrentM3u() {
1188 // qDebug("writing to current m3u"); 1190 // odebug << "writing to current m3u" << oendl;
1189 Config cfg( "OpiePlayer" ); 1191 Config cfg( "OpiePlayer" );
1190 cfg.setGroup("PlayList"); 1192 cfg.setGroup("PlayList");
1191 currentPlayList = cfg.readEntry("CurrentPlaylist",""); 1193 currentPlayList = cfg.readEntry("CurrentPlaylist","");
1192 Om3u *m3uList; 1194 Om3u *m3uList;
1193 m3uList = new Om3u( currentPlayList, IO_ReadWrite | IO_Truncate ); 1195 m3uList = new Om3u( currentPlayList, IO_ReadWrite | IO_Truncate );
1194 1196
1195 if( d->selectedFiles->first()) { 1197 if( d->selectedFiles->first()) {
1196 do { 1198 do {
1197 // qDebug( "writeCurrentM3u " +d->selectedFiles->current()->file()); 1199 // odebug << "writeCurrentM3u " +d->selectedFiles->current()->file() << oendl;
1198 m3uList->add( d->selectedFiles->current()->file() ); 1200 m3uList->add( d->selectedFiles->current()->file() );
1199 } 1201 }
1200 while ( d->selectedFiles->next() ); 1202 while ( d->selectedFiles->next() );
1201 // qDebug( "<<<<<<<<<<<<>>>>>>>>>>>>>>>>>" ); 1203 // odebug << "<<<<<<<<<<<<>>>>>>>>>>>>>>>>>" << oendl;
1202 m3uList->write(); 1204 m3uList->write();
1203 m3uList->close(); 1205 m3uList->close();
1204 1206
1205 if(m3uList) delete m3uList; 1207 if(m3uList) delete m3uList;
1206 } 1208 }
1207} 1209}
1208 1210
1209 /* 1211 /*
@@ -1212,55 +1214,55 @@ void PlayListWidget::writem3u() {
1212 InputDialog *fileDlg; 1214 InputDialog *fileDlg;
1213 fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0); 1215 fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0);
1214 fileDlg->exec(); 1216 fileDlg->exec();
1215 QString name, filename, list; 1217 QString name, filename, list;
1216 Om3u *m3uList; 1218 Om3u *m3uList;
1217 1219
1218 if( fileDlg->result() == 1 ) { 1220 if( fileDlg->result() == 1 ) {
1219 name = fileDlg->text(); 1221 name = fileDlg->text();
1220 // qDebug( filename ); 1222 // odebug << filename << oendl;
1221 if( name.find("/",0,true) != -1) {// assume they specify a file path 1223 if( name.find("/",0,true) != -1) {// assume they specify a file path
1222 filename = name; 1224 filename = name;
1223 name = name.right(name.length()- name.findRev("/",-1,true) - 1 ); 1225 name = name.right(name.length()- name.findRev("/",-1,true) - 1 );
1224 } 1226 }
1225 else //otherwise dump it somewhere noticable 1227 else //otherwise dump it somewhere noticable
1226 filename = QPEApplication::documentDir() + "/" + name; 1228 filename = QPEApplication::documentDir() + "/" + name;
1227 1229
1228 if( filename.right( 3 ) != "m3u" ) //needs filename extension 1230 if( filename.right( 3 ) != "m3u" ) //needs filename extension
1229 filename += ".m3u"; 1231 filename += ".m3u";
1230 1232
1231 if( d->selectedFiles->first()) { 1233 if( d->selectedFiles->first()) {
1232 m3uList = new Om3u(filename, IO_ReadWrite | IO_Truncate); 1234 m3uList = new Om3u(filename, IO_ReadWrite | IO_Truncate);
1233 1235
1234 do { 1236 do {
1235 m3uList->add( d->selectedFiles->current()->file()); 1237 m3uList->add( d->selectedFiles->current()->file());
1236 } 1238 }
1237 while ( d->selectedFiles->next() ); 1239 while ( d->selectedFiles->next() );
1238 // qDebug( list ); 1240 // odebug << list << oendl;
1239 m3uList->write(); 1241 m3uList->write();
1240 m3uList->close(); 1242 m3uList->close();
1241 if(m3uList) delete m3uList; 1243 if(m3uList) delete m3uList;
1242 1244
1243 if(fileDlg) delete fileDlg; 1245 if(fileDlg) delete fileDlg;
1244 1246
1245 DocLnk lnk; 1247 DocLnk lnk;
1246 lnk.setFile( filename); 1248 lnk.setFile( filename);
1247 lnk.setIcon("opieplayer2/playlist2"); 1249 lnk.setIcon("opieplayer2/playlist2");
1248 lnk.setName( name); //sets file name 1250 lnk.setName( name); //sets file name
1249 1251
1250 // qDebug(filename); 1252 // odebug << filename << oendl;
1251 Config config( "OpiePlayer" ); 1253 Config config( "OpiePlayer" );
1252 config.setGroup( "PlayList" ); 1254 config.setGroup( "PlayList" );
1253 1255
1254 config.writeEntry("CurrentPlaylist",filename); 1256 config.writeEntry("CurrentPlaylist",filename);
1255 currentPlayList=filename; 1257 currentPlayList=filename;
1256 1258
1257 if(!lnk.writeLink()) { 1259 if(!lnk.writeLink()) {
1258 // qDebug("Writing doclink did not work"); 1260 // odebug << "Writing doclink did not work" << oendl;
1259 } 1261 }
1260 1262
1261 setCaption(tr("OpiePlayer: ") + name); 1263 setCaption(tr("OpiePlayer: ") + name);
1262 } 1264 }
1263 } 1265 }
1264} 1266}
1265 1267
1266 1268
@@ -1286,89 +1288,89 @@ void PlayListWidget::keyReleaseEvent( QKeyEvent *e)
1286 break; 1288 break;
1287 case Key_Q: //add to playlist 1289 case Key_Q: //add to playlist
1288 addSelected(); 1290 addSelected();
1289 break; 1291 break;
1290 case Key_R: //remove from playlist 1292 case Key_R: //remove from playlist
1291 removeSelected(); 1293 removeSelected();
1292 break; 1294 break;
1293// case Key_P: //play 1295// case Key_P: //play
1294// qDebug("Play"); 1296// odebug << "Play" << oendl;
1295// playSelected(); 1297// playSelected();
1296// break; 1298// break;
1297 case Key_Space: 1299 case Key_Space:
1298// playSelected(); puh 1300// playSelected(); puh
1299 break; 1301 break;
1300 case Key_1: 1302 case Key_1:
1301 tabWidget->setCurrentPage(0); 1303 tabWidget->setCurrentPage(0);
1302 break; 1304 break;
1303 case Key_2: 1305 case Key_2:
1304 tabWidget->setCurrentPage(1); 1306 tabWidget->setCurrentPage(1);
1305 break; 1307 break;
1306 case Key_3: 1308 case Key_3:
1307 tabWidget->setCurrentPage(2); 1309 tabWidget->setCurrentPage(2);
1308 break; 1310 break;
1309 case Key_4: 1311 case Key_4:
1310 tabWidget->setCurrentPage(3); 1312 tabWidget->setCurrentPage(3);
1311 break; 1313 break;
1312 case Key_Down: 1314 case Key_Down:
1313 if ( !d->selectedFiles->next() ) 1315 if ( !d->selectedFiles->next() )
1314 d->selectedFiles->first(); 1316 d->selectedFiles->first();
1315 1317
1316 break; 1318 break;
1317 case Key_Up: 1319 case Key_Up:
1318 if ( !d->selectedFiles->prev() ) 1320 if ( !d->selectedFiles->prev() )
1319 // d->selectedFiles->last(); 1321 // d->selectedFiles->last();
1320 1322
1321 break; 1323 break;
1322 1324
1323 } 1325 }
1324} 1326}
1325 1327
1326void PlayListWidget::keyPressEvent( QKeyEvent *) 1328void PlayListWidget::keyPressEvent( QKeyEvent *)
1327{ 1329{
1328// qDebug("Key press"); 1330// odebug << "Key press" << oendl;
1329// switch ( e->key() ) { 1331// switch ( e->key() ) {
1330// ////////////////////////////// Zaurus keys 1332// ////////////////////////////// Zaurus keys
1331// case Key_A: //add to playlist 1333// case Key_A: //add to playlist
1332// qDebug("Add"); 1334// odebug << "Add" << oendl;
1333// addSelected(); 1335// addSelected();
1334// break; 1336// break;
1335// case Key_R: //remove from playlist 1337// case Key_R: //remove from playlist
1336// removeSelected(); 1338// removeSelected();
1337// break; 1339// break;
1338// case Key_P: //play 1340// case Key_P: //play
1339// qDebug("Play"); 1341// odebug << "Play" << oendl;
1340// playSelected(); 1342// playSelected();
1341// break; 1343// break;
1342// case Key_Space: 1344// case Key_Space:
1343// qDebug("Play"); 1345// odebug << "Play" << oendl;
1344// playSelected(); 1346// playSelected();
1345// break; 1347// break;
1346// } 1348// }
1347} 1349}
1348 1350
1349void PlayListWidget::doBlank() { 1351void PlayListWidget::doBlank() {
1350 // qDebug("do blanking"); 1352 // odebug << "do blanking" << oendl;
1351#ifdef QT_QWS_DEVFS 1353#ifdef QT_QWS_DEVFS
1352 fd=open("/dev/fb/0",O_RDWR); 1354 fd=open("/dev/fb/0",O_RDWR);
1353#else 1355#else
1354 fd=open("/dev/fb0",O_RDWR); 1356 fd=open("/dev/fb0",O_RDWR);
1355#endif 1357#endif
1356 if (fd != -1) { 1358 if (fd != -1) {
1357 ioctl(fd,FBIOBLANK,1); 1359 ioctl(fd,FBIOBLANK,1);
1358 // close(fd); 1360 // close(fd);
1359 } 1361 }
1360} 1362}
1361 1363
1362void PlayListWidget::doUnblank() { 1364void PlayListWidget::doUnblank() {
1363 // this crashes opieplayer with a segfault 1365 // this crashes opieplayer with a segfault
1364 // int fd; 1366 // int fd;
1365 // fd=open("/dev/fb0",O_RDWR); 1367 // fd=open("/dev/fb0",O_RDWR);
1366 // qDebug("do unblanking"); 1368 // odebug << "do unblanking" << oendl;
1367 if (fd != -1) { 1369 if (fd != -1) {
1368 ioctl(fd,FBIOBLANK,0); 1370 ioctl(fd,FBIOBLANK,0);
1369 close(fd); 1371 close(fd);
1370 } 1372 }
1371 QCopEnvelope h("QPE/System", "setBacklight(int)"); 1373 QCopEnvelope h("QPE/System", "setBacklight(int)");
1372 h <<-3;// v[1]; // -3 Force on 1374 h <<-3;// v[1]; // -3 Force on
1373} 1375}
1374 1376
@@ -1383,17 +1385,17 @@ void PlayListWidget::populateSkinsMenu() {
1383 QDir skinsDir( QPEApplication::qpeDir() + "/pics/opieplayer2/skins" ); 1385 QDir skinsDir( QPEApplication::qpeDir() + "/pics/opieplayer2/skins" );
1384 skinsDir.setFilter( QDir::Dirs ); 1386 skinsDir.setFilter( QDir::Dirs );
1385 skinsDir.setSorting(QDir::Name ); 1387 skinsDir.setSorting(QDir::Name );
1386 const QFileInfoList *skinslist = skinsDir.entryInfoList(); 1388 const QFileInfoList *skinslist = skinsDir.entryInfoList();
1387 QFileInfoListIterator it( *skinslist ); 1389 QFileInfoListIterator it( *skinslist );
1388 QFileInfo *fi; 1390 QFileInfo *fi;
1389 while ( ( fi = it.current() ) ) { 1391 while ( ( fi = it.current() ) ) {
1390 skinName = fi->fileName(); 1392 skinName = fi->fileName();
1391 // qDebug( fi->fileName() ); 1393 // odebug << fi->fileName() << oendl;
1392 if( skinName != "." && skinName != ".." && skinName !="CVS" ) { 1394 if( skinName != "." && skinName != ".." && skinName !="CVS" ) {
1393 item = skinsMenu->insertItem( fi->fileName() ) ; 1395 item = skinsMenu->insertItem( fi->fileName() ) ;
1394 } 1396 }
1395 if( skinName == "default" ) { 1397 if( skinName == "default" ) {
1396 defaultSkinIndex = item; 1398 defaultSkinIndex = item;
1397 } 1399 }
1398 if( skinName == skin ) { 1400 if( skinName == skin ) {
1399 skinsMenu->setItemChecked( item, TRUE ); 1401 skinsMenu->setItemChecked( item, TRUE );
@@ -1409,28 +1411,28 @@ void PlayListWidget::skinsMenuActivated( int item ) {
1409 skinsMenu->setItemChecked( item, TRUE ); 1411 skinsMenu->setItemChecked( item, TRUE );
1410 1412
1411 Config cfg( "OpiePlayer" ); 1413 Config cfg( "OpiePlayer" );
1412 cfg.setGroup("Options"); 1414 cfg.setGroup("Options");
1413 cfg.writeEntry("Skin", skinsMenu->text( item ) ); 1415 cfg.writeEntry("Skin", skinsMenu->text( item ) );
1414} 1416}
1415 1417
1416void PlayListWidget::qcopReceive(const QCString &msg, const QByteArray &data) { 1418void PlayListWidget::qcopReceive(const QCString &msg, const QByteArray &data) {
1417 // qDebug("qcop message "+msg ); 1419 // odebug << "qcop message "+msg << oendl;
1418 QDataStream stream ( data, IO_ReadOnly ); 1420 QDataStream stream ( data, IO_ReadOnly );
1419 if ( msg == "play()" ) { //plays current selection 1421 if ( msg == "play()" ) { //plays current selection
1420 btnPlay( true); 1422 btnPlay( true);
1421 } else if ( msg == "stop()" ) { 1423 } else if ( msg == "stop()" ) {
1422 mediaPlayerState->setPlaying( false); 1424 mediaPlayerState->setPlaying( false);
1423 } else if ( msg == "togglePause()" ) { 1425 } else if ( msg == "togglePause()" ) {
1424 mediaPlayerState->togglePaused(); 1426 mediaPlayerState->togglePaused();
1425 } else if ( msg == "next()" ) { //select next in lis 1427 } else if ( msg == "next()" ) { //select next in lis
1426 mediaPlayerState->setNext(); 1428 mediaPlayerState->setNext();
1427 } else if ( msg == "prev()" ) { //select previous in list 1429 } else if ( msg == "prev()" ) { //select previous in list
1428 mediaPlayerState->setPrev(); 1430 mediaPlayerState->setPrev();
1429 } else if ( msg == "toggleLooping()" ) { //loop or not loop 1431 } else if ( msg == "toggleLooping()" ) { //loop or not loop
1430 mediaPlayerState->toggleLooping(); 1432 mediaPlayerState->toggleLooping();
1431 } else if ( msg == "toggleShuffled()" ) { //shuffled or not shuffled 1433 } else if ( msg == "toggleShuffled()" ) { //shuffled or not shuffled
1432 mediaPlayerState->toggleShuffled(); 1434 mediaPlayerState->toggleShuffled();
1433 } else if ( msg == "volUp()" ) { //volume more 1435 } else if ( msg == "volUp()" ) { //volume more
1434 // emit moreClicked(); 1436 // emit moreClicked();
1435 // emit moreReleased(); 1437 // emit moreReleased();
1436 } else if ( msg == "volDown()" ) { //volume less 1438 } else if ( msg == "volDown()" ) { //volume less
diff --git a/core/multimedia/opieplayer/videowidget.cpp b/core/multimedia/opieplayer/videowidget.cpp
index 164458b..e851044 100644
--- a/core/multimedia/opieplayer/videowidget.cpp
+++ b/core/multimedia/opieplayer/videowidget.cpp
@@ -12,25 +12,30 @@
12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13 ** 13 **
14 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 14 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
15 ** 15 **
16 ** Contact info@trolltech.com if any conditions of this licensing are 16 ** Contact info@trolltech.com if any conditions of this licensing are
17 ** not clear to you. 17 ** not clear to you.
18 ** 18 **
19 **********************************************************************/ 19 **********************************************************************/
20
21#include "videowidget.h"
22#include "mediaplayerstate.h"
23
24/* OPIE */
20#include <qpe/resource.h> 25#include <qpe/resource.h>
21#include <qpe/mediaplayerplugininterface.h> 26#include <qpe/mediaplayerplugininterface.h>
22#include <qpe/config.h> 27#include <qpe/config.h>
23#include <qpe/qpeapplication.h> 28#include <qpe/qpeapplication.h>
29#include <opie2/odebug.h>
24 30
31/* QT */
25#include <qdir.h> 32#include <qdir.h>
26#include <qslider.h> 33#include <qslider.h>
27#include "videowidget.h"
28#include "mediaplayerstate.h"
29 34
30 35
31#ifdef Q_WS_QWS 36#ifdef Q_WS_QWS
32# define USE_DIRECT_PAINTER 37# define USE_DIRECT_PAINTER
33# include <qdirectpainter_qws.h> 38# include <qdirectpainter_qws.h>
34# include <qgfxraster_qws.h> 39# include <qgfxraster_qws.h>
35#endif 40#endif
36 41
@@ -77,62 +82,62 @@ VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) :
77 cfg.setGroup("Options"); 82 cfg.setGroup("Options");
78 skin = cfg.readEntry("Skin","default"); 83 skin = cfg.readEntry("Skin","default");
79 84
80 QString skinPath; 85 QString skinPath;
81 skinPath = "opieplayer2/skins/" + skin; 86 skinPath = "opieplayer2/skins/" + skin;
82 if(!QDir(QString(getenv("OPIEDIR")) +"/pics/"+skinPath).exists()) 87 if(!QDir(QString(getenv("OPIEDIR")) +"/pics/"+skinPath).exists())
83 skinPath = "opieplayer2/skins/default"; 88 skinPath = "opieplayer2/skins/default";
84 89
85 // qDebug("skin path " + skinPath); 90 // odebug << "skin path " + skinPath << oendl;
86 91
87// QString skinPath = "opieplayer2/skins/" + skin; 92// QString skinPath = "opieplayer2/skins/" + skin;
88 93
89 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 94 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
90 imgUp = new QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) ); 95 imgUp = new QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) );
91 imgDn = new QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) ); 96 imgDn = new QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) );
92 97
93 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 ); 98 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 );
94 imgButtonMask->fill( 0 ); 99 imgButtonMask->fill( 0 );
95 100
96 for ( int i = 0; i < 7; i++ ) { 101 for ( int i = 0; i < 7; i++ ) {
97 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + 102 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath +
98 "/skinV_mask_" + skinV_mask_file_names[i] + ".png" ); 103 "/skinV_mask_" + skinV_mask_file_names[i] + ".png" );
99 // qDebug("loading "+filename); 104 // odebug << "loading "+filename << oendl;
100 masks[i] = new QBitmap( filename ); 105 masks[i] = new QBitmap( filename );
101 106
102 if ( !masks[i]->isNull() ) { 107 if ( !masks[i]->isNull() ) {
103 QImage imgMask = masks[i]->convertToImage(); 108 QImage imgMask = masks[i]->convertToImage();
104 uchar **dest = imgButtonMask->jumpTable(); 109 uchar **dest = imgButtonMask->jumpTable();
105 for ( int y = 0; y < imgUp->height(); y++ ) { 110 for ( int y = 0; y < imgUp->height(); y++ ) {
106 uchar *line = dest[y]; 111 uchar *line = dest[y];
107 for ( int x = 0; x < imgUp->width(); x++ ) { 112 for ( int x = 0; x < imgUp->width(); x++ ) {
108 if ( !qRed( imgMask.pixel( x, y ) ) ) 113 if ( !qRed( imgMask.pixel( x, y ) ) )
109 line[x] = i + 1; 114 line[x] = i + 1;
110 } 115 }
111 } 116 }
112 } 117 }
113 } 118 }
114 // qDebug("finished loading first pics"); 119 // odebug << "finished loading first pics" << oendl;
115 for ( int i = 0; i < 7; i++ ) { 120 for ( int i = 0; i < 7; i++ ) {
116 buttonPixUp[i] = NULL; 121 buttonPixUp[i] = NULL;
117 buttonPixDown[i] = NULL; 122 buttonPixDown[i] = NULL;
118 } 123 }
119 124
120 125
121 QWidget *d = QApplication::desktop(); 126 QWidget *d = QApplication::desktop();
122 int width = d->width(); 127 int width = d->width();
123 int height = d->height(); 128 int height = d->height();
124 129
125 if( (width != pixBg->width() ) || (height != pixBg->height() ) ) { 130 if( (width != pixBg->width() ) || (height != pixBg->height() ) ) {
126 // qDebug("<<<<<<<< scale image >>>>>>>>>>>>"); 131// odebug << "<<<<<<<< scale image >>>>>>>>>>>>" << oendl;
127 QImage img; 132 QImage img;
128 img = pixBg->convertToImage(); 133 img = pixBg->convertToImage();
129 pixBg->convertFromImage( img.smoothScale( width, height)); 134 pixBg->convertFromImage( img.smoothScale( width, height));
130 } 135 }
131 setBackgroundPixmap( *pixBg ); 136 setBackgroundPixmap( *pixBg );
132 137
133 currentFrame = new QImage( 220 + 2, 160, (QPixmap::defaultDepth() == 16) ? 16 : 32 ); 138 currentFrame = new QImage( 220 + 2, 160, (QPixmap::defaultDepth() == 16) ? 16 : 32 );
134 139
135 slider = new QSlider( Qt::Horizontal, this ); 140 slider = new QSlider( Qt::Horizontal, this );
136 slider->setMinValue( 0 ); 141 slider->setMinValue( 0 );
137 slider->setMaxValue( 1 ); 142 slider->setMaxValue( 1 );
138 slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); 143 slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) );
@@ -348,30 +353,30 @@ void VideoWidget::mouseMoveEvent( QMouseEvent *event ) {
348 videoButtons[i].isHeld = FALSE; 353 videoButtons[i].isHeld = FALSE;
349 if ( !videoButtons[i].isToggle ) { 354 if ( !videoButtons[i].isToggle ) {
350 setToggleButton( i, FALSE ); 355 setToggleButton( i, FALSE );
351 } 356 }
352 357
353 switch(i) { 358 switch(i) {
354 359
355 case VideoPlay: { 360 case VideoPlay: {
356 // qDebug("play"); 361 // odebug << "play" << oendl;
357 if( !mediaPlayerState->playing()) { 362 if( !mediaPlayerState->playing()) {
358 mediaPlayerState->setPlaying( true); 363 mediaPlayerState->setPlaying( true);
359 setToggleButton( i-1, false ); 364 setToggleButton( i-1, false );
360 setToggleButton( i, false ); 365 setToggleButton( i, false );
361 return; 366 return;
362 } 367 }
363 if( mediaPlayerState->isPaused ) { 368 if( mediaPlayerState->isPaused ) {
364 // qDebug("isPaused"); 369 // odebug << "isPaused" << oendl;
365 setToggleButton( i, FALSE ); 370 setToggleButton( i, FALSE );
366 mediaPlayerState->setPaused( FALSE ); 371 mediaPlayerState->setPaused( FALSE );
367 return; 372 return;
368 } else if( !mediaPlayerState->isPaused ) { 373 } else if( !mediaPlayerState->isPaused ) {
369 // qDebug("is not paused"); 374 // odebug << "is not paused" << oendl;
370 setToggleButton( i, TRUE ); 375 setToggleButton( i, TRUE );
371 mediaPlayerState->setPaused( TRUE ); 376 mediaPlayerState->setPaused( TRUE );
372 return; 377 return;
373 } else { 378 } else {
374 return; 379 return;
375 } 380 }
376 } 381 }
377 382
@@ -453,17 +458,17 @@ void VideoWidget::paintEvent( QPaintEvent * pe) {
453 458
454void VideoWidget::closeEvent( QCloseEvent* ) { 459void VideoWidget::closeEvent( QCloseEvent* ) {
455 mediaPlayerState->setList(); 460 mediaPlayerState->setList();
456} 461}
457 462
458 463
459bool VideoWidget::playVideo() { 464bool VideoWidget::playVideo() {
460 bool result = FALSE; 465 bool result = FALSE;
461// qDebug("<<<<<<<<<<<<<<<< play video"); 466// odebug << "<<<<<<<<<<<<<<<< play video" << oendl;
462 int stream = 0; 467 int stream = 0;
463 468
464 int sw = mediaPlayerState->curDecoder()->videoWidth( stream ); 469 int sw = mediaPlayerState->curDecoder()->videoWidth( stream );
465 int sh = mediaPlayerState->curDecoder()->videoHeight( stream ); 470 int sh = mediaPlayerState->curDecoder()->videoHeight( stream );
466 int dd = QPixmap::defaultDepth(); 471 int dd = QPixmap::defaultDepth();
467 int w = height(); 472 int w = height();
468 int h = width(); 473 int h = width();
469 474
diff --git a/core/multimedia/opieplayer/vorbis/libtremorplugin.cpp b/core/multimedia/opieplayer/vorbis/libtremorplugin.cpp
index 53c4b2b..0002213 100644
--- a/core/multimedia/opieplayer/vorbis/libtremorplugin.cpp
+++ b/core/multimedia/opieplayer/vorbis/libtremorplugin.cpp
@@ -14,34 +14,39 @@
14* GNU General Public License for more details. 14* GNU General Public License for more details.
15* 15*
16* You should have received a copy of the GNU General Public License 16* You should have received a copy of the GNU General Public License
17* along with this program; if not, write to the Free Software 17* along with this program; if not, write to the Free Software
18* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19****************************************************************************/ 19****************************************************************************/
20// fixed and adapted for opieplayer 2003 ljp <llornkcor@handhelds.org> 20// fixed and adapted for opieplayer 2003 ljp <llornkcor@handhelds.org>
21 21
22#include "libtremorplugin.h"
23
24/* OPIE */
25#include <opie2/odebug.h>
26
27/* QT */
28#include <qmap.h>
29
30/* STD */
22#include <stdio.h> 31#include <stdio.h>
23#include <stdarg.h> 32#include <stdarg.h>
24#include <stdlib.h> 33#include <stdlib.h>
25#include <sys/types.h> 34#include <sys/types.h>
26#include <sys/stat.h> 35#include <sys/stat.h>
27#include <fcntl.h> 36#include <fcntl.h>
28#include <unistd.h> 37#include <unistd.h>
29#include <string.h> 38#include <string.h>
30#include <errno.h> 39#include <errno.h>
31#include <time.h> 40#include <time.h>
32#include <locale.h> 41#include <locale.h>
33#include <math.h> 42#include <math.h>
34#include <assert.h> 43#include <assert.h>
35 44
36#include <qmap.h>
37
38#include "libtremorplugin.h"
39
40 45
41extern "C" { 46extern "C" {
42#include "tremor/ivorbisfile.h" 47#include "tremor/ivorbisfile.h"
43} 48}
44 49
45 50
46#define MPEG_BUFFER_SIZE 65536 51#define MPEG_BUFFER_SIZE 65536
47//#define debugMsg(a) qDebug(a) 52//#define debugMsg(a) qDebug(a)
@@ -57,17 +62,17 @@ public:
57 vorbis_comment* vc; 62 vorbis_comment* vc;
58 bool bos; 63 bool bos;
59 int csection; 64 int csection;
60 QString finfo; 65 QString finfo;
61}; 66};
62 67
63 68
64LibTremorPlugin::LibTremorPlugin() { 69LibTremorPlugin::LibTremorPlugin() {
65qDebug("<<<<<<<<<<<<<TREMOR!!!!!>>>>>>>>>>>>>>>>>>"); 70odebug << "<<<<<<<<<<<<<TREMOR!!!!!>>>>>>>>>>>>>>>>>>" << oendl;
66 d = new LibTremorPluginData; 71 d = new LibTremorPluginData;
67 d->f = 0; 72 d->f = 0;
68 d->vi = 0; 73 d->vi = 0;
69 d->vc = 0; 74 d->vc = 0;
70 d->bos = 0; 75 d->bos = 0;
71 d->csection = 0; 76 d->csection = 0;
72 d->finfo = ""; 77 d->finfo = "";
73} 78}
@@ -100,22 +105,22 @@ bool LibTremorPlugin::isFileSupported( const QString& path ) {
100 105
101 106
102bool LibTremorPlugin::open( const QString& path ) { 107bool LibTremorPlugin::open( const QString& path ) {
103 debugMsg( "LibTremorPlugin::open" ); 108 debugMsg( "LibTremorPlugin::open" );
104 109
105 d->filename = (char*) path.latin1(); 110 d->filename = (char*) path.latin1();
106 d->f = fopen( d->filename, "r" ); 111 d->f = fopen( d->filename, "r" );
107 if (d->f == 0) { 112 if (d->f == 0) {
108 qDebug("error opening %s", d->filename ); 113 odebug << "error opening " << d->filename << "" << oendl;
109 return FALSE; 114 return FALSE;
110 } 115 }
111 116
112 if (ov_open(d->f, &d->vf, NULL, 0) < 0) { 117 if (ov_open(d->f, &d->vf, NULL, 0) < 0) {
113 qDebug("error opening %s", d->filename); 118 odebug << "error opening " << d->filename << "" << oendl;
114 return FALSE; 119 return FALSE;
115 } 120 }
116 121
117 d->vc = ov_comment(&d->vf, -1); 122 d->vc = ov_comment(&d->vf, -1);
118 d->vi = ov_info(&d->vf, -1); 123 d->vi = ov_info(&d->vf, -1);
119 d->bos = false; 124 d->bos = false;
120 125
121 QString comments[] = { "title", "artist", "album", "year", "tracknumber", "" }; 126 QString comments[] = { "title", "artist", "album", "year", "tracknumber", "" };
@@ -148,29 +153,29 @@ bool LibTremorPlugin::open( const QString& path ) {
148 if (!d->finfo.isEmpty()) { 153 if (!d->finfo.isEmpty()) {
149 d->finfo += ", "; 154 d->finfo += ", ";
150 } 155 }
151 156
152 d->finfo += cdescr[i] + ": " + v; 157 d->finfo += cdescr[i] + ": " + v;
153 } 158 }
154 } 159 }
155 160
156 qDebug("finfo: " + d->finfo); 161 odebug << "finfo: " + d->finfo << oendl;
157 162
158 return TRUE; 163 return TRUE;
159} 164}
160 165
161 166
162bool LibTremorPlugin::close() { 167bool LibTremorPlugin::close() {
163 debugMsg( "LibTremorPlugin::close" ); 168 debugMsg( "LibTremorPlugin::close" );
164 169
165 int result = TRUE; 170 int result = TRUE;
166 171
167 if (fclose(d->f) == -1) { 172 if (fclose(d->f) == -1) {
168 qDebug("error closing file %s", d->filename); 173 odebug << "error closing file " << d->filename << "" << oendl;
169 result = FALSE; 174 result = FALSE;
170 } 175 }
171 176
172 d->f = 0; 177 d->f = 0;
173 d->finfo = ""; 178 d->finfo = "";
174 179
175 return result; 180 return result;
176} 181}
@@ -188,23 +193,23 @@ const QString &LibTremorPlugin::fileInfo() {
188 193
189int LibTremorPlugin::audioStreams() { 194int LibTremorPlugin::audioStreams() {
190 debugMsg( "LibTremorPlugin::audioStreams" ); 195 debugMsg( "LibTremorPlugin::audioStreams" );
191 return 1; 196 return 1;
192} 197}
193 198
194 199
195int LibTremorPlugin::audioChannels( int ) { 200int LibTremorPlugin::audioChannels( int ) {
196 qDebug( "LibTremorPlugin::audioChannels: %i", d->vi->channels ); 201 odebug << "LibTremorPlugin::audioChannels: " << d->vi->channels << "" << oendl;
197 return d->vi->channels; 202 return d->vi->channels;
198} 203}
199 204
200 205
201int LibTremorPlugin::audioFrequency( int ) { 206int LibTremorPlugin::audioFrequency( int ) {
202 qDebug( "LibTremorPlugin::audioFrequency: %ld", d->vi->rate ); 207 odebug << "LibTremorPlugin::audioFrequency: " << d->vi->rate << "" << oendl;
203 return d->vi->rate; 208 return d->vi->rate;
204} 209}
205 210
206 211
207int LibTremorPlugin::audioSamples( int ) { 212int LibTremorPlugin::audioSamples( int ) {
208 debugMsg( "LibTremorPlugin::audioSamples" ); 213 debugMsg( "LibTremorPlugin::audioSamples" );
209 return (int) ov_pcm_total(&d->vf,-1); 214 return (int) ov_pcm_total(&d->vf,-1);
210} 215}
@@ -218,17 +223,17 @@ bool LibTremorPlugin::audioSetSample( long, int ) {
218 223
219long LibTremorPlugin::audioGetSample( int ) { 224long LibTremorPlugin::audioGetSample( int ) {
220 debugMsg( "LibTremorPlugin::audioGetSample" ); 225 debugMsg( "LibTremorPlugin::audioGetSample" );
221 return 0; 226 return 0;
222} 227}
223 228
224 229
225bool LibTremorPlugin::audioReadSamples( short *output, int, long samples, long& samplesMade, int ) { 230bool LibTremorPlugin::audioReadSamples( short *output, int, long samples, long& samplesMade, int ) {
226// qDebug( "<<<<<<<<<<<<LibTremorPlugin::audioReadStereoSamples %d", samples ); 231// odebug << "<<<<<<<<<<<<LibTremorPlugin::audioReadStereoSamples " << samples << "" << oendl;
227 232
228 int old_section = d->csection; 233 int old_section = d->csection;
229 234
230 char* buf = (char*) output; 235 char* buf = (char*) output;
231 int length = samples * 4; 236 int length = samples * 4;
232 237
233 if ( samples == 0 ) 238 if ( samples == 0 )
234 return false; 239 return false;
@@ -240,17 +245,17 @@ bool LibTremorPlugin::audioReadSamples( short *output, int, long samples, long&
240 } 245 }
241 246
242 int n = 4096; 247 int n = 4096;
243 if (length < n) { 248 if (length < n) {
244 n = length; 249 n = length;
245 } 250 }
246 251
247 long ret = ov_read(&d->vf, buf, n, &d->csection); 252 long ret = ov_read(&d->vf, buf, n, &d->csection);
248// qDebug("%d", ret); 253// odebug << "" << ret << "" << oendl;
249 if (ret == 0) { 254 if (ret == 0) {
250 break; 255 break;
251 } else if (ret < 0) { 256 } else if (ret < 0) {
252 return true; 257 return true;
253 } 258 }
254 259
255 if (old_section != d->csection) { 260 if (old_section != d->csection) {
256 d->bos = true; 261 d->bos = true;
diff --git a/core/multimedia/opieplayer/wavplugin/wavplugin.cpp b/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
index 4e82900..7f3a0a8 100644
--- a/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
+++ b/core/multimedia/opieplayer/wavplugin/wavplugin.cpp
@@ -14,23 +14,31 @@
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20// L.J.Potter added changes Fri 02-15-2002 20// L.J.Potter added changes Fri 02-15-2002
21 21
22
23#include "wavplugin.h"
24
25/* OPIE */
26#include <opie2/odebug.h>
27
28/* QT */
29#include <qfile.h>
30
31/* STD */
22#include <stdio.h> 32#include <stdio.h>
23#include <stdarg.h> 33#include <stdarg.h>
24#include <stdlib.h> 34#include <stdlib.h>
25#include <errno.h> 35#include <errno.h>
26#include <unistd.h> 36#include <unistd.h>
27#include <qfile.h>
28#include "wavplugin.h"
29 37
30//#define debugMsg(a) qDebug(a) 38//#define debugMsg(a) qDebug(a)
31#define debugMsg(a) 39#define debugMsg(a)
32 40
33 41
34struct RiffChunk { 42struct RiffChunk {
35 char id[4]; 43 char id[4];
36 Q_UINT32 size; 44 Q_UINT32 size;
@@ -71,24 +79,24 @@ public:
71 } 79 }
72 80
73 // expands out samples to the frequency of 44kHz //not any more 81 // expands out samples to the frequency of 44kHz //not any more
74 bool add( short *output, long count, long& done, bool stereo ) 82 bool add( short *output, long count, long& done, bool stereo )
75 { 83 {
76 done = 0; 84 done = 0;
77 85
78 if ( input == 0 ) { 86 if ( input == 0 ) {
79 qDebug("no input"); 87 odebug << "no input" << oendl;
80 return FALSE; 88 return FALSE;
81 } 89 }
82 90
83 while ( count ) { 91 while ( count ) {
84 int l,r; 92 int l,r;
85 if ( getSample(l, r) == FALSE ) { 93 if ( getSample(l, r) == FALSE ) {
86 qDebug("didn't get sample"); 94 odebug << "didn't get sample" << oendl;
87 return FALSE; 95 return FALSE;
88 } 96 }
89 samples_due += chunkdata.samplesPerSec; 97 samples_due += chunkdata.samplesPerSec;
90 printf("samples due %d\r", samples_due); 98 printf("samples due %d\r", samples_due);
91 fflush(stdout); 99 fflush(stdout);
92 while ( count && (samples_due > chunkdata.samplesPerSec) ) { 100 while ( count && (samples_due > chunkdata.samplesPerSec) ) {
93 *output++ = l; 101 *output++ = l;
94 if ( stereo ) 102 if ( stereo )
@@ -130,27 +138,27 @@ public:
130 } 138 }
131 } 139 }
132 } else if ( qstrncmp(chunk.id,"fmt ",4) == 0 ) { 140 } else if ( qstrncmp(chunk.id,"fmt ",4) == 0 ) {
133 if ( input->readBlock((char*)&chunkdata,sizeof(chunkdata)) != sizeof(chunkdata) ) { 141 if ( input->readBlock((char*)&chunkdata,sizeof(chunkdata)) != sizeof(chunkdata) ) {
134 return FALSE; 142 return FALSE;
135 } 143 }
136#define WAVE_FORMAT_PCM 1 144#define WAVE_FORMAT_PCM 1
137 if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) { 145 if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) {
138 qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag); 146 odebug << "WAV file: UNSUPPORTED FORMAT " << chunkdata.formatTag << "" << oendl;
139 return FALSE; 147 return FALSE;
140 } 148 }
141 } else { 149 } else {
142 // ignored chunk 150 // ignored chunk
143 if ( chunk.size > 1000000000 || !input->at(input->at()+chunk.size) ) { 151 if ( chunk.size > 1000000000 || !input->at(input->at()+chunk.size) ) {
144 return FALSE; 152 return FALSE;
145 } 153 }
146 } 154 }
147 } // while 155 } // while
148 qDebug("bits %d", chunkdata.wBitsPerSample); 156 odebug << "bits " << chunkdata.wBitsPerSample << "" << oendl;
149 return TRUE; 157 return TRUE;
150 } 158 }
151 159
152 160
153 // gets a sample from the file 161 // gets a sample from the file
154 bool getSample(int& l, int& r) 162 bool getSample(int& l, int& r)
155 { 163 {
156 l = r = 0; 164 l = r = 0;
@@ -202,17 +210,17 @@ WavPlugin::WavPlugin() {
202 210
203WavPlugin::~WavPlugin() { 211WavPlugin::~WavPlugin() {
204 close(); 212 close();
205 delete d; 213 delete d;
206} 214}
207 215
208 216
209bool WavPlugin::isFileSupported( const QString& path ) { 217bool WavPlugin::isFileSupported( const QString& path ) {
210// qDebug( "WavPlugin::isFileSupported" ); 218// odebug << "WavPlugin::isFileSupported" << oendl;
211 219
212 char *ext = strrchr( path.latin1(), '.' ); 220 char *ext = strrchr( path.latin1(), '.' );
213 221
214 // Test file extension 222 // Test file extension
215 if ( ext ) { 223 if ( ext ) {
216 if ( strncasecmp(ext, ".raw", 4) == 0 ) 224 if ( strncasecmp(ext, ".raw", 4) == 0 )
217 return TRUE; 225 return TRUE;
218 if ( strncasecmp(ext, ".wav", 4) == 0 ) 226 if ( strncasecmp(ext, ".wav", 4) == 0 )
@@ -221,86 +229,86 @@ bool WavPlugin::isFileSupported( const QString& path ) {
221 return TRUE; 229 return TRUE;
222 } 230 }
223 231
224 return FALSE; 232 return FALSE;
225} 233}
226 234
227 235
228bool WavPlugin::open( const QString& path ) { 236bool WavPlugin::open( const QString& path ) {
229// qDebug( "WavPlugin::open" ); 237// odebug << "WavPlugin::open" << oendl;
230 238
231 d->max = d->out = sound_buffer_size; 239 d->max = d->out = sound_buffer_size;
232 d->wavedata_remaining = 0; 240 d->wavedata_remaining = 0;
233 d->samples_due = 0; 241 d->samples_due = 0;
234 242
235 d->input = new QFile( path ); 243 d->input = new QFile( path );
236 if ( d->input->open(IO_ReadOnly) == FALSE ) { 244 if ( d->input->open(IO_ReadOnly) == FALSE ) {
237 qDebug("couldn't open file"); 245 odebug << "couldn't open file" << oendl;
238 delete d->input; 246 delete d->input;
239 d->input = 0; 247 d->input = 0;
240 return FALSE; 248 return FALSE;
241 } 249 }
242 250
243 d->initialise(); 251 d->initialise();
244 qApp->processEvents(); 252 qApp->processEvents();
245 253
246 return TRUE; 254 return TRUE;
247} 255}
248 256
249 257
250bool WavPlugin::close() { 258bool WavPlugin::close() {
251// qDebug( "WavPlugin::close" ); 259// odebug << "WavPlugin::close" << oendl;
252 260
253 d->input->close(); 261 d->input->close();
254 delete d->input; 262 delete d->input;
255 d->input = 0; 263 d->input = 0;
256 return TRUE; 264 return TRUE;
257} 265}
258 266
259 267
260bool WavPlugin::isOpen() { 268bool WavPlugin::isOpen() {
261// qDebug( "WavPlugin::isOpen" ); 269// odebug << "WavPlugin::isOpen" << oendl;
262 return ( d->input != 0 ); 270 return ( d->input != 0 );
263} 271}
264 272
265 273
266int WavPlugin::audioStreams() { 274int WavPlugin::audioStreams() {
267// qDebug( "WavPlugin::audioStreams" ); 275// odebug << "WavPlugin::audioStreams" << oendl;
268 return 1; 276 return 1;
269} 277}
270 278
271 279
272int WavPlugin::audioChannels( int ) { 280int WavPlugin::audioChannels( int ) {
273// qDebug( "WavPlugin::audioChannels" ); 281// odebug << "WavPlugin::audioChannels" << oendl;
274 return d->chunkdata.channels;// 2; // ### Always scale audio to stereo samples 282 return d->chunkdata.channels;// 2; // ### Always scale audio to stereo samples
275} 283}
276 284
277 285
278int WavPlugin::audioFrequency( int ) { 286int WavPlugin::audioFrequency( int ) {
279// qDebug( "WavPlugin::audioFrequency %d", d->chunkdata.samplesPerSec ); 287// odebug << "WavPlugin::audioFrequency " << d->chunkdata.samplesPerSec << "" << oendl;
280 return d->chunkdata.samplesPerSec; //44100; // ### Always scale to frequency of 44100 288 return d->chunkdata.samplesPerSec; //44100; // ### Always scale to frequency of 44100
281} 289}
282 290
283 291
284int WavPlugin::audioSamples( int ) { 292int WavPlugin::audioSamples( int ) {
285// qDebug( "WavPlugin::audioSamples" ); 293// odebug << "WavPlugin::audioSamples" << oendl;
286 return d->samples / d->chunkdata.channels/2; // ### Scaled samples will be made stereo, 294 return d->samples / d->chunkdata.channels/2; // ### Scaled samples will be made stereo,
287 // Therefore if source is mono we will double the number of samples 295 // Therefore if source is mono we will double the number of samples
288} 296}
289 297
290 298
291bool WavPlugin::audioSetSample( long, int ) { 299bool WavPlugin::audioSetSample( long, int ) {
292// qDebug( "WavPlugin::audioSetSample" ); 300// odebug << "WavPlugin::audioSetSample" << oendl;
293 return FALSE; 301 return FALSE;
294} 302}
295 303
296 304
297long WavPlugin::audioGetSample( int ) { 305long WavPlugin::audioGetSample( int ) {
298// qDebug( "WavPlugin::audioGetSample" ); 306// odebug << "WavPlugin::audioGetSample" << oendl;
299 return 0; 307 return 0;
300} 308}
301 309
302/* 310/*
303bool WavPlugin::audioReadSamples( short *, int, long, int ) { 311bool WavPlugin::audioReadSamples( short *, int, long, int ) {
304 debugMsg( "WavPlugin::audioReadSamples" ); 312 debugMsg( "WavPlugin::audioReadSamples" );
305 return FALSE; 313 return FALSE;
306} 314}
@@ -320,23 +328,23 @@ bool WavPlugin::audioReadMonoSamples( short *output, long samples, long& samples
320 328
321bool WavPlugin::audioReadStereoSamples( short *output, long samples, long& samplesMade, int ) { 329bool WavPlugin::audioReadStereoSamples( short *output, long samples, long& samplesMade, int ) {
322 debugMsg( "WavPlugin::audioReadStereoSamples" ); 330 debugMsg( "WavPlugin::audioReadStereoSamples" );
323 return !d->add( output, samples, samplesMade, TRUE ); 331 return !d->add( output, samples, samplesMade, TRUE );
324} 332}
325*/ 333*/
326 334
327bool WavPlugin::audioReadSamples( short *output, int channels, long samples, long& samplesMade, int ) { 335bool WavPlugin::audioReadSamples( short *output, int channels, long samples, long& samplesMade, int ) {
328// qDebug( "WavPlugin::audioReadSamples" ); 336// odebug << "WavPlugin::audioReadSamples" << oendl;
329 return d->add( output, samples, samplesMade, channels != 1 ); 337 return d->add( output, samples, samplesMade, channels != 1 );
330} 338}
331 339
332double WavPlugin::getTime() { 340double WavPlugin::getTime() {
333// qDebug( "WavPlugin::getTime" ); //this is a stupid hack here!! 341// odebug << "WavPlugin::getTime" << oendl; //this is a stupid hack here!!
334 return d->chunkdata.wBitsPerSample; /*0.0*/; 342 return d->chunkdata.wBitsPerSample; /*0.0*/;
335} 343}
336 344
337// int WavPlugin::audioBitsPerSample( int ) { 345// int WavPlugin::audioBitsPerSample( int ) {
338// // qDebug( "WavPlugin::audioFormat %d", d->chunkdata.wBitsPerSample ); 346// // odebug << "WavPlugin::audioFormat " << d->chunkdata.wBitsPerSample << "" << oendl;
339// return d->chunkdata.wBitsPerSample; // 347// return d->chunkdata.wBitsPerSample; //
340// } 348// }
341 349
342 350