summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/audiodevice.cpp4
-rw-r--r--core/multimedia/opieplayer/playlistwidget.cpp25
-rw-r--r--core/multimedia/opieplayer/playlistwidget.h2
3 files changed, 14 insertions, 17 deletions
diff --git a/core/multimedia/opieplayer/audiodevice.cpp b/core/multimedia/opieplayer/audiodevice.cpp
index e0989d0..3262e38 100644
--- a/core/multimedia/opieplayer/audiodevice.cpp
+++ b/core/multimedia/opieplayer/audiodevice.cpp
@@ -1,378 +1,378 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
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// 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#include <stdlib.h> 23#include <stdlib.h>
23#include <stdio.h> 24#include <stdio.h>
24#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
25#include <qpe/config.h> 26#include <qpe/config.h>
26#include "audiodevice.h" 27#include "audiodevice.h"
27 28
28#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP) 29#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP)
29#include "qpe/qcopenvelope_qws.h" 30#include "qpe/qcopenvelope_qws.h"
30#endif 31#endif
31 32
32#ifdef Q_WS_WIN 33#ifdef Q_WS_WIN
33#include <windows.h> 34#include <windows.h>
34#include <mmsystem.h> 35#include <mmsystem.h>
35#include <mmreg.h> 36#include <mmreg.h>
36#endif 37#endif
37 38
38#if defined(Q_WS_X11) || defined(Q_WS_QWS) 39#if defined(Q_WS_X11) || defined(Q_WS_QWS)
39#include <fcntl.h> 40#include <fcntl.h>
40#include <sys/ioctl.h> 41#include <sys/ioctl.h>
41#include <sys/soundcard.h> 42#include <sys/soundcard.h>
42#include <sys/stat.h> 43#include <sys/stat.h>
43#include <sys/time.h> 44#include <sys/time.h>
44#include <sys/types.h> 45#include <sys/types.h>
45#include <unistd.h> 46#include <unistd.h>
46#endif 47#endif
47 48
48#if defined(Q_OS_WIN32) 49#if defined(Q_OS_WIN32)
49static const int expectedBytesPerMilliSecond = 2 * 2 * 44000 / 1000; 50static const int expectedBytesPerMilliSecond = 2 * 2 * 44000 / 1000;
50static const int timerResolutionMilliSeconds = 30; 51static const int timerResolutionMilliSeconds = 30;
51static const int sound_fragment_bytes = timerResolutionMilliSeconds * expectedBytesPerMilliSecond; 52static const int sound_fragment_bytes = timerResolutionMilliSeconds * expectedBytesPerMilliSecond;
52#else 53#else
53# if defined(QT_QWS_IPAQ) 54# if defined(QT_QWS_IPAQ)
54static const int sound_fragment_shift = 14; 55static const int sound_fragment_shift = 14;
55# else 56# else
56static const int sound_fragment_shift = 16; 57static const int sound_fragment_shift = 16;
57# endif 58# endif
58static const int sound_fragment_bytes = (1<<sound_fragment_shift); 59static const int sound_fragment_bytes = (1<<sound_fragment_shift);
59#endif 60#endif
60 61
61 62
62class AudioDevicePrivate { 63class AudioDevicePrivate {
63public: 64public:
64 int handle; 65 int handle;
65 unsigned int frequency; 66 unsigned int frequency;
66 unsigned int channels; 67 unsigned int channels;
67 unsigned int bytesPerSample; 68 unsigned int bytesPerSample;
68 unsigned int bufferSize; 69 unsigned int bufferSize;
69#ifndef Q_OS_WIN32 70#ifndef Q_OS_WIN32
70 bool can_GETOSPACE; 71 bool can_GETOSPACE;
71 char* unwrittenBuffer; 72 char* unwrittenBuffer;
72 unsigned int unwritten; 73 unsigned int unwritten;
73#endif 74#endif
74 75
75 static int dspFd; 76 static int dspFd;
76 static bool muted; 77 static bool muted;
77 static unsigned int leftVolume; 78 static unsigned int leftVolume;
78 static unsigned int rightVolume; 79 static unsigned int rightVolume;
79}; 80};
80 81
81 82
82#ifdef Q_WS_QWS 83#ifdef Q_WS_QWS
83// This is for keeping the device open in-between playing files when 84// This is for keeping the device open in-between playing files when
84// the device makes clicks and it starts to drive you insane! :) 85// the device makes clicks and it starts to drive you insane! :)
85// Best to have the device not open when not using it though 86// Best to have the device not open when not using it though
86//#define KEEP_DEVICE_OPEN 87//#define KEEP_DEVICE_OPEN
87#endif 88#endif
88 89
89 90
90int AudioDevicePrivate::dspFd = 0; 91int AudioDevicePrivate::dspFd = 0;
91bool AudioDevicePrivate::muted = FALSE; 92bool AudioDevicePrivate::muted = FALSE;
92unsigned int AudioDevicePrivate::leftVolume = 0; 93unsigned int AudioDevicePrivate::leftVolume = 0;
93unsigned int AudioDevicePrivate::rightVolume = 0; 94unsigned int AudioDevicePrivate::rightVolume = 0;
94 95
95 96
96void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume, bool &muted ) { 97void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume, bool &muted ) {
97 muted = AudioDevicePrivate::muted; 98 muted = AudioDevicePrivate::muted;
98 unsigned int volume; 99 unsigned int volume;
99#ifdef Q_OS_WIN32 100#ifdef Q_OS_WIN32
100 HWAVEOUT handle; 101 HWAVEOUT handle;
101 WAVEFORMATEX formatData; 102 WAVEFORMATEX formatData;
102 formatData.cbSize = sizeof(WAVEFORMATEX); 103 formatData.cbSize = sizeof(WAVEFORMATEX);
103 formatData.wFormatTag = WAVE_FORMAT_PCM; 104 formatData.wFormatTag = WAVE_FORMAT_PCM;
104 formatData.nAvgBytesPerSec = 4 * 44000; 105 formatData.nAvgBytesPerSec = 4 * 44000;
105 formatData.nBlockAlign = 4; 106 formatData.nBlockAlign = 4;
106 formatData.nChannels = 2; 107 formatData.nChannels = 2;
107 formatData.nSamplesPerSec = 44000; 108 formatData.nSamplesPerSec = 44000;
108 formatData.wBitsPerSample = 16; 109 formatData.wBitsPerSample = 16;
109 waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL); 110 waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL);
110 if ( waveOutGetVolume( handle, (LPDWORD)&volume ) ) 111 if ( waveOutGetVolume( handle, (LPDWORD)&volume ) )
111// qDebug( "get volume of audio device failed" ); 112// qDebug( "get volume of audio device failed" );
112 waveOutClose( handle ); 113 waveOutClose( handle );
113 leftVolume = volume & 0xFFFF; 114 leftVolume = volume & 0xFFFF;
114 rightVolume = volume >> 16; 115 rightVolume = volume >> 16;
115#else 116#else
116 int mixerHandle = open( "/dev/mixer", O_RDWR ); 117 int mixerHandle = open( "/dev/mixer", O_RDWR );
117 if ( mixerHandle >= 0 ) { 118 if ( mixerHandle >= 0 ) {
118 if(ioctl( mixerHandle, MIXER_READ(0), &volume )==-1) 119 if(ioctl( mixerHandle, MIXER_READ(0), &volume )==-1)
119 perror("ioctl(\"MIXER_READ\")"); 120 perror("ioctl(\"MIXER_READ\")");
120 close( mixerHandle ); 121 close( mixerHandle );
121 } else 122 } else
122 perror("open(\"/dev/mixer\")"); 123 perror("open(\"/dev/mixer\")");
123 leftVolume = ((volume & 0x00FF) << 16) / 101; 124 leftVolume = ((volume & 0x00FF) << 16) / 101;
124 rightVolume = ((volume & 0xFF00) << 8) / 101; 125 rightVolume = ((volume & 0xFF00) << 8) / 101;
125#endif 126#endif
126} 127}
127 128
128 129
129void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, bool muted ) { 130void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, bool muted ) {
130 AudioDevicePrivate::muted = muted; 131 AudioDevicePrivate::muted = muted;
131 if ( muted ) { 132 if ( muted ) {
132 AudioDevicePrivate::leftVolume = leftVolume; 133 AudioDevicePrivate::leftVolume = leftVolume;
133 AudioDevicePrivate::rightVolume = rightVolume; 134 AudioDevicePrivate::rightVolume = rightVolume;
134 leftVolume = 0; 135 leftVolume = 0;
135 rightVolume = 0; 136 rightVolume = 0;
136 } else { 137 } else {
137 leftVolume = ( (int) leftVolume < 0 ) ? 0 : (( leftVolume > 0xFFFF ) ? 0xFFFF : leftVolume ); 138 leftVolume = ( (int) leftVolume < 0 ) ? 0 : (( leftVolume > 0xFFFF ) ? 0xFFFF : leftVolume );
138 rightVolume = ( (int)rightVolume < 0 ) ? 0 : (( rightVolume > 0xFFFF ) ? 0xFFFF : rightVolume ); 139 rightVolume = ( (int)rightVolume < 0 ) ? 0 : (( rightVolume > 0xFFFF ) ? 0xFFFF : rightVolume );
139 } 140 }
140#ifdef Q_OS_WIN32 141#ifdef Q_OS_WIN32
141 HWAVEOUT handle; 142 HWAVEOUT handle;
142 WAVEFORMATEX formatData; 143 WAVEFORMATEX formatData;
143 formatData.cbSize = sizeof(WAVEFORMATEX); 144 formatData.cbSize = sizeof(WAVEFORMATEX);
144 formatData.wFormatTag = WAVE_FORMAT_PCM; 145 formatData.wFormatTag = WAVE_FORMAT_PCM;
145 formatData.nAvgBytesPerSec = 4 * 44000; 146 formatData.nAvgBytesPerSec = 4 * 44000;
146 formatData.nBlockAlign = 4; 147 formatData.nBlockAlign = 4;
147 formatData.nChannels = 2; 148 formatData.nChannels = 2;
148 formatData.nSamplesPerSec = 44000; 149 formatData.nSamplesPerSec = 44000;
149 formatData.wBitsPerSample = 16; 150 formatData.wBitsPerSample = 16;
150 waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL); 151 waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL);
151 unsigned int volume = (rightVolume << 16) | leftVolume; 152 unsigned int volume = (rightVolume << 16) | leftVolume;
152 if ( waveOutSetVolume( handle, volume ) ) 153 if ( waveOutSetVolume( handle, volume ) )
153// qDebug( "set volume of audio device failed" ); 154// qDebug( "set volume of audio device failed" );
154 waveOutClose( handle ); 155 waveOutClose( handle );
155#else 156#else
156 // Volume can be from 0 to 100 which is 101 distinct values 157 // Volume can be from 0 to 100 which is 101 distinct values
157 unsigned int rV = (rightVolume * 101) >> 16; 158 unsigned int rV = (rightVolume * 101) >> 16;
158 159
159# if 0 160# if 0
160 unsigned int lV = (leftVolume * 101) >> 16; 161 unsigned int lV = (leftVolume * 101) >> 16;
161 unsigned int volume = ((rV << 8) & 0xFF00) | (lV & 0x00FF); 162 unsigned int volume = ((rV << 8) & 0xFF00) | (lV & 0x00FF);
162 int mixerHandle = 0; 163 int mixerHandle = 0;
163 if ( ( mixerHandle = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 164 if ( ( mixerHandle = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
164 if(ioctl( mixerHandle, MIXER_WRITE(0), &volume ) ==-1) 165 if(ioctl( mixerHandle, MIXER_WRITE(0), &volume ) ==-1)
165 perror("ioctl(\"MIXER_WRITE\")"); 166 perror("ioctl(\"MIXER_WRITE\")");
166 close( mixerHandle ); 167 close( mixerHandle );
167 } else 168 } else
168 perror("open(\"/dev/mixer\")"); 169 perror("open(\"/dev/mixer\")");
169 170
170# else 171# else
171 // This is the way this has to be done now I guess, doesn't allow for 172 // This is the way this has to be done now I guess, doesn't allow for
172 // independant right and left channel setting, or setting for different outputs 173 // independant right and left channel setting, or setting for different outputs
173 Config cfg("Sound"); 174 Config cfg("Sound");
174 cfg.setGroup("System"); 175 cfg.setGroup("System");
175 cfg.writeEntry("Volume",(int)rV); 176 cfg.writeEntry("Volume",(int)rV);
176# endif 177# endif
177 178
178#endif 179#endif
179// qDebug( "setting volume to: 0x%x", volume ); 180// qDebug( "setting volume to: 0x%x", volume );
180#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP) 181#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP)
181 // Send notification that the volume has changed 182 // Send notification that the volume has changed
182 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << muted; 183 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << muted;
183#endif 184#endif
184} 185}
185 186
186 187
187 188
188 189
189AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { 190AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
190 qDebug("creating new audio device"); 191 qDebug("creating new audio device");
192 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE;
191 d = new AudioDevicePrivate; 193 d = new AudioDevicePrivate;
192 d->frequency = f; 194 d->frequency = f;
193 d->channels = chs; 195 d->channels = chs;
194 d->bytesPerSample = bps; 196 d->bytesPerSample = bps;
195 qDebug("%d",bps); 197 qDebug("%d",bps);
196 int format=0; 198 int format=0;
197 if( bps == 8) format = AFMT_U8; 199 if( bps == 8) format = AFMT_U8;
198 else if( bps <= 0) format = AFMT_S16_LE; 200 else if( bps <= 0) format = AFMT_S16_LE;
199 else format = AFMT_S16_LE; 201 else format = AFMT_S16_LE;
200 qDebug("AD- freq %d, channels %d, b/sample %d, bitrate %d",f,chs,bps,format); 202 qDebug("AD- freq %d, channels %d, b/sample %d, bitrate %d",f,chs,bps,format);
201 connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( volumeChanged(bool) ) ); 203 connect( qApp, SIGNAL( volumeChanged(bool) ), this, SLOT( volumeChanged(bool) ) );
202 204
203 int fragments = 0x10000 * 8 + sound_fragment_shift; 205 int fragments = 0x10000 * 8 + sound_fragment_shift;
204 int capabilities = 0; 206 int capabilities = 0;
205 207
206 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE;
207 208
208#ifdef KEEP_DEVICE_OPEN 209#ifdef KEEP_DEVICE_OPEN
209 if ( AudioDevicePrivate::dspFd == 0 ) { 210 if ( AudioDevicePrivate::dspFd == 0 ) {
210#endif 211#endif
211 if ( ( d->handle = ::open( "/dev/dsp", O_WRONLY ) ) < 0 ) { 212 if ( ( d->handle = ::open( "/dev/dsp", O_WRONLY ) ) < 0 ) {
212 perror("open(\"/dev/dsp\") sending to /dev/null instead"); 213 perror("open(\"/dev/dsp\") sending to /dev/null instead");
213 d->handle = ::open( "/dev/null", O_WRONLY ); 214 d->handle = ::open( "/dev/null", O_WRONLY );
214 } 215 }
215#ifdef KEEP_DEVICE_OPEN 216#ifdef KEEP_DEVICE_OPEN
216 AudioDevicePrivate::dspFd = d->handle; 217 AudioDevicePrivate::dspFd = d->handle;
217 } else { 218 } else {
218 d->handle = AudioDevicePrivate::dspFd; 219 d->handle = AudioDevicePrivate::dspFd;
219 } 220 }
220#endif 221#endif
221 222
222 if(ioctl( d->handle, SNDCTL_DSP_GETCAPS, &capabilities )==-1) 223 if(ioctl( d->handle, SNDCTL_DSP_GETCAPS, &capabilities )==-1)
223 perror("ioctl(\"SNDCTL_DSP_GETCAPS\")"); 224 perror("ioctl(\"SNDCTL_DSP_GETCAPS\")");
224 if(ioctl( d->handle, SNDCTL_DSP_SETFRAGMENT, &fragments )==-1) 225 if(ioctl( d->handle, SNDCTL_DSP_SETFRAGMENT, &fragments )==-1)
225 perror("ioctl(\"SNDCTL_DSP_SETFRAGMENT\")"); 226 perror("ioctl(\"SNDCTL_DSP_SETFRAGMENT\")");
226 if(ioctl( d->handle, SNDCTL_DSP_SETFMT, & format )==-1) 227 if(ioctl( d->handle, SNDCTL_DSP_SETFMT, & format )==-1)
227 perror("ioctl(\"SNDCTL_DSP_SETFMT\")"); 228 perror("ioctl(\"SNDCTL_DSP_SETFMT\")");
228 qDebug("freq %d", d->frequency); 229 qDebug("freq %d", d->frequency);
229 if(ioctl( d->handle, SNDCTL_DSP_SPEED, &d->frequency )==-1) 230 if(ioctl( d->handle, SNDCTL_DSP_SPEED, &d->frequency )==-1)
230 perror("ioctl(\"SNDCTL_DSP_SPEED\")"); 231 perror("ioctl(\"SNDCTL_DSP_SPEED\")");
231 qDebug("channels %d",d->channels); 232 qDebug("channels %d",d->channels);
232 if ( ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels ) == -1 ) { 233 if ( ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels ) == -1 ) {
233 d->channels = ( d->channels == 1 ) ? 2 : d->channels; 234 d->channels = ( d->channels == 1 ) ? 2 : d->channels;
234 if(ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels )==-1) 235 if(ioctl( d->handle, SNDCTL_DSP_CHANNELS, &d->channels )==-1)
235 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")"); 236 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")");
236 } 237 }
237 238
238 d->bufferSize = sound_fragment_bytes; 239 d->bufferSize = sound_fragment_bytes;
239 d->unwrittenBuffer = new char[d->bufferSize]; 240 d->unwrittenBuffer = new char[d->bufferSize];
240 d->unwritten = 0; 241 d->unwritten = 0;
241 d->can_GETOSPACE = TRUE; // until we find otherwise 242 d->can_GETOSPACE = TRUE; // until we find otherwise
242 243
243 //if ( chs != d->channels ) qDebug( "Wanted %d, got %d channels", chs, d->channels ); 244 //if ( chs != d->channels ) qDebug( "Wanted %d, got %d channels", chs, d->channels );
244 //if ( f != d->frequency ) qDebug( "wanted %dHz, got %dHz", f, d->frequency ); 245 //if ( f != d->frequency ) qDebug( "wanted %dHz, got %dHz", f, d->frequency );
245 //if ( capabilities & DSP_CAP_BATCH ) qDebug( "Sound card has local buffer" ); 246 //if ( capabilities & DSP_CAP_BATCH ) qDebug( "Sound card has local buffer" );
246 //if ( capabilities & DSP_CAP_REALTIME )qDebug( "Sound card has realtime sync" ); 247 //if ( capabilities & DSP_CAP_REALTIME )qDebug( "Sound card has realtime sync" );
247 //if ( capabilities & DSP_CAP_TRIGGER ) qDebug( "Sound card has precise trigger" ); 248 //if ( capabilities & DSP_CAP_TRIGGER ) qDebug( "Sound card has precise trigger" );
248 //if ( capabilities & DSP_CAP_MMAP ) qDebug( "Sound card can mmap" ); 249 //if ( capabilities & DSP_CAP_MMAP ) qDebug( "Sound card can mmap" );
249 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE; 250 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE;
250 251
251} 252}
252 253
253 254
254AudioDevice::~AudioDevice() { 255AudioDevice::~AudioDevice() {
255 qDebug("destryo audiodevice"); 256 qDebug("destryo audiodevice");
256 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; 257 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE;
257 258
258#ifdef Q_OS_WIN32 259#ifdef Q_OS_WIN32
259 waveOutClose( (HWAVEOUT)d->handle ); 260 waveOutClose( (HWAVEOUT)d->handle );
260#else 261#else
261# ifndef KEEP_DEVICE_OPEN 262# ifndef KEEP_DEVICE_OPEN
262 close( d->handle ); // Now it should be safe to shut the handle 263 close( d->handle ); // Now it should be safe to shut the handle
263# endif 264# endif
264 delete d->unwrittenBuffer; 265 delete d->unwrittenBuffer;
265 delete d; 266 delete d;
266#endif 267#endif
267 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE;
268 268
269} 269}
270 270
271 271
272void AudioDevice::volumeChanged( bool muted ) 272void AudioDevice::volumeChanged( bool muted )
273{ 273{
274 AudioDevicePrivate::muted = muted; 274 AudioDevicePrivate::muted = muted;
275} 275}
276 276
277 277
278void AudioDevice::write( char *buffer, unsigned int length ) 278void AudioDevice::write( char *buffer, unsigned int length )
279{ 279{
280#ifdef Q_OS_WIN32 280#ifdef Q_OS_WIN32
281 // returns immediately and (to be implemented) emits completedIO() when finished writing 281 // returns immediately and (to be implemented) emits completedIO() when finished writing
282 WAVEHDR *lpWaveHdr = (WAVEHDR *)malloc( sizeof(WAVEHDR) ); 282 WAVEHDR *lpWaveHdr = (WAVEHDR *)malloc( sizeof(WAVEHDR) );
283 // maybe the buffer should be copied so that this fool proof, but its a performance hit 283 // maybe the buffer should be copied so that this fool proof, but its a performance hit
284 lpWaveHdr->lpData = buffer; 284 lpWaveHdr->lpData = buffer;
285 lpWaveHdr->dwBufferLength = length; 285 lpWaveHdr->dwBufferLength = length;
286 lpWaveHdr->dwFlags = 0L; 286 lpWaveHdr->dwFlags = 0L;
287 lpWaveHdr->dwLoops = 0L; 287 lpWaveHdr->dwLoops = 0L;
288 waveOutPrepareHeader( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) ); 288 waveOutPrepareHeader( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) );
289 // waveOutWrite returns immediately. the data is sent in the background. 289 // waveOutWrite returns immediately. the data is sent in the background.
290 if ( waveOutWrite( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) ) ) 290 if ( waveOutWrite( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) ) )
291 qDebug( "failed to write block to audio device" ); 291 qDebug( "failed to write block to audio device" );
292 // emit completedIO(); 292 // emit completedIO();
293#else 293#else
294 int t = ::write( d->handle, buffer, length ); 294 int t = ::write( d->handle, buffer, length );
295 if ( t<0 ) t = 0; 295 if ( t<0 ) t = 0;
296 if ( t != (int)length) { 296 if ( t != (int)length) {
297 qDebug("Ahhh!! memcpys 1"); 297 qDebug("Ahhh!! memcpys 1");
298 memcpy(d->unwrittenBuffer,buffer+t,length-t); 298 memcpy(d->unwrittenBuffer,buffer+t,length-t);
299 d->unwritten = length-t; 299 d->unwritten = length-t;
300 } 300 }
301#endif 301#endif
302} 302}
303 303
304 304
305unsigned int AudioDevice::channels() const 305unsigned int AudioDevice::channels() const
306{ 306{
307 return d->channels; 307 return d->channels;
308} 308}
309 309
310 310
311unsigned int AudioDevice::frequency() const 311unsigned int AudioDevice::frequency() const
312{ 312{
313 return d->frequency; 313 return d->frequency;
314} 314}
315 315
316 316
317unsigned int AudioDevice::bytesPerSample() const 317unsigned int AudioDevice::bytesPerSample() const
318{ 318{
319 return d->bytesPerSample; 319 return d->bytesPerSample;
320} 320}
321 321
322 322
323unsigned int AudioDevice::bufferSize() const 323unsigned int AudioDevice::bufferSize() const
324{ 324{
325 return d->bufferSize; 325 return d->bufferSize;
326} 326}
327 327
328unsigned int AudioDevice::canWrite() const 328unsigned int AudioDevice::canWrite() const
329{ 329{
330#ifdef Q_OS_WIN32 330#ifdef Q_OS_WIN32
331 return bufferSize(); // Any better? 331 return bufferSize(); // Any better?
332#else 332#else
333 audio_buf_info info; 333 audio_buf_info info;
334 if ( d->can_GETOSPACE && ioctl(d->handle,SNDCTL_DSP_GETOSPACE,&info) ) { 334 if ( d->can_GETOSPACE && ioctl(d->handle,SNDCTL_DSP_GETOSPACE,&info) ) {
335 d->can_GETOSPACE = FALSE; 335 d->can_GETOSPACE = FALSE;
336 fcntl( d->handle, F_SETFL, O_NONBLOCK ); 336 fcntl( d->handle, F_SETFL, O_NONBLOCK );
337 } 337 }
338 if ( d->can_GETOSPACE ) { 338 if ( d->can_GETOSPACE ) {
339 int t = info.fragments * sound_fragment_bytes; 339 int t = info.fragments * sound_fragment_bytes;
340 return QMIN(t,(int)bufferSize()); 340 return QMIN(t,(int)bufferSize());
341 } else { 341 } else {
342 if ( d->unwritten ) { 342 if ( d->unwritten ) {
343 int t = ::write( d->handle, d->unwrittenBuffer, d->unwritten ); 343 int t = ::write( d->handle, d->unwrittenBuffer, d->unwritten );
344 if ( t<0 ) t = 0; 344 if ( t<0 ) t = 0;
345 if ( (unsigned)t!=d->unwritten ) { 345 if ( (unsigned)t!=d->unwritten ) {
346 memcpy(d->unwrittenBuffer,d->unwrittenBuffer+t,d->unwritten-t); 346 memcpy(d->unwrittenBuffer,d->unwrittenBuffer+t,d->unwritten-t);
347 d->unwritten -= t; 347 d->unwritten -= t;
348 } else { 348 } else {
349 d->unwritten = 0; 349 d->unwritten = 0;
350 } 350 }
351 } 351 }
352 if ( d->unwritten ) 352 if ( d->unwritten )
353 return 0; 353 return 0;
354 else 354 else
355 return d->bufferSize; 355 return d->bufferSize;
356 } 356 }
357#endif 357#endif
358} 358}
359 359
360 360
361int AudioDevice::bytesWritten() { 361int AudioDevice::bytesWritten() {
362#ifdef Q_OS_WIN32 362#ifdef Q_OS_WIN32
363 MMTIME pmmt = { TIME_BYTES, 0 }; 363 MMTIME pmmt = { TIME_BYTES, 0 };
364 if ( ( waveOutGetPosition( (HWAVEOUT)d->handle, &pmmt, sizeof(MMTIME) ) != MMSYSERR_NOERROR ) || ( pmmt.wType != TIME_BYTES ) ) { 364 if ( ( waveOutGetPosition( (HWAVEOUT)d->handle, &pmmt, sizeof(MMTIME) ) != MMSYSERR_NOERROR ) || ( pmmt.wType != TIME_BYTES ) ) {
365 qDebug( "failed to get audio device position" ); 365 qDebug( "failed to get audio device position" );
366 return -1; 366 return -1;
367 } 367 }
368 return pmmt.u.cb; 368 return pmmt.u.cb;
369#else 369#else
370 int buffered = 0; 370 int buffered = 0;
371 if ( ioctl( d->handle, SNDCTL_DSP_GETODELAY, &buffered ) ) { 371 if ( ioctl( d->handle, SNDCTL_DSP_GETODELAY, &buffered ) ) {
372 qDebug( "failed to get audio device position" ); 372 qDebug( "failed to get audio device position" );
373 return -1; 373 return -1;
374 } 374 }
375 return buffered; 375 return buffered;
376#endif 376#endif
377} 377}
378 378
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp
index 930560e..d7447b7 100644
--- a/core/multimedia/opieplayer/playlistwidget.cpp
+++ b/core/multimedia/opieplayer/playlistwidget.cpp
@@ -1,1279 +1,1276 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
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// 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#include <qpe/qcopenvelope_qws.h> 22#include <qpe/qcopenvelope_qws.h>
23 23
24#include <qpe/qpemenubar.h> 24#include <qpe/qpemenubar.h>
25#include <qpe/qpetoolbar.h> 25#include <qpe/qpetoolbar.h>
26#include <qpe/fileselector.h> 26#include <qpe/fileselector.h>
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qpe/lnkproperties.h> 28#include <qpe/lnkproperties.h>
29#include <qpe/storage.h> 29#include <qpe/storage.h>
30 30
31#include <qpe/applnk.h> 31#include <qpe/applnk.h>
32#include <qpe/config.h> 32#include <qpe/config.h>
33#include <qpe/global.h> 33#include <qpe/global.h>
34#include <qpe/resource.h> 34#include <qpe/resource.h>
35#include <qaction.h> 35#include <qaction.h>
36#include <qcursor.h> 36#include <qcursor.h>
37#include <qimage.h> 37#include <qimage.h>
38#include <qfile.h> 38#include <qfile.h>
39#include <qdir.h> 39#include <qdir.h>
40#include <qlayout.h> 40#include <qlayout.h>
41#include <qlabel.h> 41#include <qlabel.h>
42#include <qlist.h> 42#include <qlist.h>
43#include <qlistbox.h> 43#include <qlistbox.h>
44#include <qmainwindow.h> 44#include <qmainwindow.h>
45#include <qmessagebox.h> 45#include <qmessagebox.h>
46#include <qtoolbutton.h> 46#include <qtoolbutton.h>
47#include <qtabwidget.h> 47#include <qtabwidget.h>
48#include <qlistview.h> 48#include <qlistview.h>
49#include <qpoint.h> 49#include <qpoint.h>
50#include <qlineedit.h> 50#include <qlineedit.h>
51#include <qpushbutton.h> 51#include <qpushbutton.h>
52#include <qregexp.h> 52#include <qregexp.h>
53#include <qtextstream.h> 53#include <qtextstream.h>
54 54
55//#include <qtimer.h> 55//#include <qtimer.h>
56 56
57#include "playlistselection.h" 57#include "playlistselection.h"
58#include "playlistwidget.h" 58#include "playlistwidget.h"
59#include "mediaplayerstate.h" 59#include "mediaplayerstate.h"
60 60
61#include "inputDialog.h" 61#include "inputDialog.h"
62 62
63#include <stdlib.h> 63#include <stdlib.h>
64#include "audiowidget.h" 64#include "audiowidget.h"
65#include "videowidget.h" 65#include "videowidget.h"
66 66
67#include <unistd.h> 67#include <unistd.h>
68#include <sys/file.h> 68#include <sys/file.h>
69#include <sys/ioctl.h> 69#include <sys/ioctl.h>
70#include <sys/soundcard.h> 70#include <sys/soundcard.h>
71 71
72// for setBacklight() 72// for setBacklight()
73#include <linux/fb.h> 73#include <linux/fb.h>
74#include <sys/types.h> 74#include <sys/types.h>
75#include <sys/stat.h> 75#include <sys/stat.h>
76#include <stdlib.h> 76#include <stdlib.h>
77 77
78#define BUTTONS_ON_TOOLBAR 78#define BUTTONS_ON_TOOLBAR
79#define SIDE_BUTTONS 79#define SIDE_BUTTONS
80#define CAN_SAVE_LOAD_PLAYLISTS 80#define CAN_SAVE_LOAD_PLAYLISTS
81 81
82extern AudioWidget *audioUI; 82extern AudioWidget *audioUI;
83extern VideoWidget *videoUI; 83extern VideoWidget *videoUI;
84extern MediaPlayerState *mediaPlayerState; 84extern MediaPlayerState *mediaPlayerState;
85 85
86// class myFileSelector { 86// class myFileSelector {
87 87
88// }; 88// };
89class PlayListWidgetPrivate { 89class PlayListWidgetPrivate {
90public: 90public:
91 QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove; 91 QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove;
92 QFrame *playListFrame; 92 QFrame *playListFrame;
93 FileSelector *files; 93 FileSelector *files;
94 PlayListSelection *selectedFiles; 94 PlayListSelection *selectedFiles;
95 bool setDocumentUsed; 95 bool setDocumentUsed;
96 DocLnk *current; 96 DocLnk *current;
97}; 97};
98 98
99 99
100class ToolButton : public QToolButton { 100class ToolButton : public QToolButton {
101public: 101public:
102 ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE ) 102 ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE )
103 : QToolButton( parent, name ) { 103 : QToolButton( parent, name ) {
104 setTextLabel( name ); 104 setTextLabel( name );
105 setPixmap( Resource::loadPixmap( icon ) ); 105 setPixmap( Resource::loadPixmap( icon ) );
106 setAutoRaise( TRUE ); 106 setAutoRaise( TRUE );
107 setFocusPolicy( QWidget::NoFocus ); 107 setFocusPolicy( QWidget::NoFocus );
108 setToggleButton( t ); 108 setToggleButton( t );
109 connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot ); 109 connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot );
110 QPEMenuToolFocusManager::manager()->addWidget( this ); 110 QPEMenuToolFocusManager::manager()->addWidget( this );
111 } 111 }
112}; 112};
113 113
114 114
115class MenuItem : public QAction { 115class MenuItem : public QAction {
116public: 116public:
117 MenuItem( QWidget *parent, const QString& text, QObject *handler, const QString& slot ) 117 MenuItem( QWidget *parent, const QString& text, QObject *handler, const QString& slot )
118 : QAction( text, QString::null, 0, 0 ) { 118 : QAction( text, QString::null, 0, 0 ) {
119 connect( this, SIGNAL( activated() ), handler, slot ); 119 connect( this, SIGNAL( activated() ), handler, slot );
120 addTo( parent ); 120 addTo( parent );
121 } 121 }
122}; 122};
123 123
124 124
125PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) 125PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
126 : QMainWindow( parent, name, fl ) { 126 : QMainWindow( parent, name, fl ) {
127 127
128 d = new PlayListWidgetPrivate; 128 d = new PlayListWidgetPrivate;
129 d->setDocumentUsed = FALSE; 129 d->setDocumentUsed = FALSE;
130 d->current = NULL; 130 d->current = NULL;
131 fromSetDocument = FALSE; 131 fromSetDocument = FALSE;
132 insanityBool=FALSE; 132 insanityBool=FALSE;
133 audioScan = FALSE; 133 audioScan = FALSE;
134 videoScan = FALSE; 134 videoScan = FALSE;
135// menuTimer = new QTimer( this ,"menu timer"), 135// menuTimer = new QTimer( this ,"menu timer"),
136// connect( menuTimer, SIGNAL( timeout() ), SLOT( addSelected() ) ); 136// connect( menuTimer, SIGNAL( timeout() ), SLOT( addSelected() ) );
137 137
138 setBackgroundMode( PaletteButton ); 138 setBackgroundMode( PaletteButton );
139 139
140 setCaption( tr("OpiePlayer") ); 140 setCaption( tr("OpiePlayer") );
141 setIcon( Resource::loadPixmap( "opieplayer/MPEGPlayer" ) ); 141 setIcon( Resource::loadPixmap( "opieplayer/MPEGPlayer" ) );
142 142
143 setToolBarsMovable( FALSE ); 143 setToolBarsMovable( FALSE );
144 144
145 // Create Toolbar 145 // Create Toolbar
146 QPEToolBar *toolbar = new QPEToolBar( this ); 146 QPEToolBar *toolbar = new QPEToolBar( this );
147 toolbar->setHorizontalStretchable( TRUE ); 147 toolbar->setHorizontalStretchable( TRUE );
148 148
149 // Create Menubar 149 // Create Menubar
150 QPEMenuBar *menu = new QPEMenuBar( toolbar ); 150 QPEMenuBar *menu = new QPEMenuBar( toolbar );
151 menu->setMargin( 0 ); 151 menu->setMargin( 0 );
152 152
153 QPEToolBar *bar = new QPEToolBar( this ); 153 QPEToolBar *bar = new QPEToolBar( this );
154 bar->setLabel( tr( "Play Operations" ) ); 154 bar->setLabel( tr( "Play Operations" ) );
155// d->tbPlayCurList = new ToolButton( bar, tr( "play List" ), "opieplayer/play_current_list", 155// d->tbPlayCurList = new ToolButton( bar, tr( "play List" ), "opieplayer/play_current_list",
156// this , SLOT( addSelected()) ); 156// this , SLOT( addSelected()) );
157 tbDeletePlaylist = new QPushButton( Resource::loadIconSet("trash"),"",bar,"close"); 157 tbDeletePlaylist = new QPushButton( Resource::loadIconSet("trash"),"",bar,"close");
158 tbDeletePlaylist->setFlat(TRUE); 158 tbDeletePlaylist->setFlat(TRUE);
159 tbDeletePlaylist->setFixedSize(20,20); 159 tbDeletePlaylist->setFixedSize(20,20);
160 connect(tbDeletePlaylist,(SIGNAL(released())),SLOT( deletePlaylist())); 160 connect(tbDeletePlaylist,(SIGNAL(released())),SLOT( deletePlaylist()));
161 161
162 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer/add_to_playlist", 162 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer/add_to_playlist",
163 this , SLOT(addSelected()) ); 163 this , SLOT(addSelected()) );
164 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "opieplayer/remove_from_playlist", 164 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "opieplayer/remove_from_playlist",
165 this , SLOT(removeSelected()) ); 165 this , SLOT(removeSelected()) );
166// d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", /*this */mediaPlayerState , SLOT(setPlaying(bool) /* btnPlay() */), TRUE ); 166// d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", /*this */mediaPlayerState , SLOT(setPlaying(bool) /* btnPlay() */), TRUE );
167 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", 167 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play",
168 this , SLOT( btnPlay(bool) ), TRUE ); 168 this , SLOT( btnPlay(bool) ), TRUE );
169 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer/shuffle", 169 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer/shuffle",
170 mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); 170 mediaPlayerState, SLOT(setShuffled(bool)), TRUE );
171 d->tbLoop = new ToolButton( bar, tr( "Loop" ),"opieplayer/loop", 171 d->tbLoop = new ToolButton( bar, tr( "Loop" ),"opieplayer/loop",
172 mediaPlayerState, SLOT(setLooping(bool)), TRUE ); 172 mediaPlayerState, SLOT(setLooping(bool)), TRUE );
173 tbDeletePlaylist->hide(); 173 tbDeletePlaylist->hide();
174 174
175 QPopupMenu *pmPlayList = new QPopupMenu( this ); 175 QPopupMenu *pmPlayList = new QPopupMenu( this );
176 menu->insertItem( tr( "File" ), pmPlayList ); 176 menu->insertItem( tr( "File" ), pmPlayList );
177 new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); 177 new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) );
178 new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) ); 178 new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) );
179 new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) ); 179 new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) );
180 new MenuItem( pmPlayList, tr( "Add all files" ), this, SLOT( addAllToList() ) ); 180 new MenuItem( pmPlayList, tr( "Add all files" ), this, SLOT( addAllToList() ) );
181// pmPlayList->insertSeparator(-1); 181// pmPlayList->insertSeparator(-1);
182 new MenuItem( pmPlayList, tr( "Save PlayList" ), this, SLOT( saveList() ) ); 182 new MenuItem( pmPlayList, tr( "Save PlayList" ), this, SLOT( saveList() ) );
183 pmPlayList->insertSeparator(-1); 183 pmPlayList->insertSeparator(-1);
184 new MenuItem( pmPlayList, tr( "Open File or URL" ), this,SLOT( openFile() ) ); 184 new MenuItem( pmPlayList, tr( "Open File or URL" ), this,SLOT( openFile() ) );
185 pmPlayList->insertSeparator(-1); 185 pmPlayList->insertSeparator(-1);
186 new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), this,SLOT( scanForAudio() ) ); 186 new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), this,SLOT( scanForAudio() ) );
187 new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), this,SLOT( scanForVideo() ) ); 187 new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), this,SLOT( scanForVideo() ) );
188 188
189 QPopupMenu *pmView = new QPopupMenu( this ); 189 QPopupMenu *pmView = new QPopupMenu( this );
190 menu->insertItem( tr( "View" ), pmView ); 190 menu->insertItem( tr( "View" ), pmView );
191 191
192 fullScreenButton = new QAction(tr("Full Screen"), Resource::loadPixmap("fullscreen"), QString::null, 0, this, 0); 192 fullScreenButton = new QAction(tr("Full Screen"), Resource::loadPixmap("fullscreen"), QString::null, 0, this, 0);
193 connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) ); 193 connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) );
194 fullScreenButton->addTo(pmView); 194 fullScreenButton->addTo(pmView);
195 scaleButton = new QAction(tr("Scale"), Resource::loadPixmap("opieplayer/scale"), QString::null, 0, this, 0); 195 scaleButton = new QAction(tr("Scale"), Resource::loadPixmap("opieplayer/scale"), QString::null, 0, this, 0);
196 connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) ); 196 connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) );
197 scaleButton->addTo(pmView); 197 scaleButton->addTo(pmView);
198 198
199 QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton ); 199 QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton );
200 QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton ); 200 QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton );
201 201
202 QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton ); 202 QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton );
203 203
204 tabWidget = new QTabWidget( hbox6, "tabWidget" ); 204 tabWidget = new QTabWidget( hbox6, "tabWidget" );
205 tabWidget->setTabShape(QTabWidget::Triangular); 205 tabWidget->setTabShape(QTabWidget::Triangular);
206 206
207 QWidget *pTab; 207 QWidget *pTab;
208 pTab = new QWidget( tabWidget, "pTab" ); 208 pTab = new QWidget( tabWidget, "pTab" );
209// playlistView = new QListView( pTab, "playlistview" ); 209// playlistView = new QListView( pTab, "playlistview" );
210// playlistView->setMinimumSize(236,260); 210// playlistView->setMinimumSize(236,260);
211 tabWidget->insertTab( pTab,"Playlist"); 211 tabWidget->insertTab( pTab,"Playlist");
212 212
213 213
214 // Add the playlist area 214 // Add the playlist area
215 215
216 QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton ); 216 QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton );
217 d->playListFrame = vbox3; 217 d->playListFrame = vbox3;
218 d->playListFrame ->setMinimumSize(235,260); 218 d->playListFrame ->setMinimumSize(235,260);
219 219
220 QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton ); 220 QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton );
221 221
222 d->selectedFiles = new PlayListSelection( hbox2); 222 d->selectedFiles = new PlayListSelection( hbox2);
223 QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton ); 223 QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton );
224 224
225 QPEApplication::setStylusOperation( d->selectedFiles->viewport(),QPEApplication::RightOnHold); 225 QPEApplication::setStylusOperation( d->selectedFiles->viewport(),QPEApplication::RightOnHold);
226 226
227 connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 227 connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
228 this,SLOT( playlistViewPressed(int, QListViewItem *, const QPoint&, int)) ); 228 this,SLOT( playlistViewPressed(int, QListViewItem *, const QPoint&, int)) );
229 229
230 230
231 QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch 231 QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch
232 new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) ); 232 new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) );
233 new ToolButton( vbox1, tr( "Remove" ), "opieplayer/cut", d->selectedFiles, SLOT(removeSelected()) ); 233 new ToolButton( vbox1, tr( "Remove" ), "opieplayer/cut", d->selectedFiles, SLOT(removeSelected()) );
234 new ToolButton( vbox1, tr( "Move Down" ), "opieplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) ); 234 new ToolButton( vbox1, tr( "Move Down" ), "opieplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) );
235 QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch 235 QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch
236 236
237 QWidget *aTab; 237 QWidget *aTab;
238 aTab = new QWidget( tabWidget, "aTab" ); 238 aTab = new QWidget( tabWidget, "aTab" );
239 audioView = new QListView( aTab, "Audioview" ); 239 audioView = new QListView( aTab, "Audioview" );
240 audioView->setMinimumSize(233,260); 240 audioView->setMinimumSize(233,260);
241 audioView->addColumn( tr("Title"),140); 241 audioView->addColumn( tr("Title"),140);
242 audioView->addColumn(tr("Size"), -1); 242 audioView->addColumn(tr("Size"), -1);
243 audioView->addColumn(tr("Media"),-1); 243 audioView->addColumn(tr("Media"),-1);
244 audioView->setColumnAlignment(1, Qt::AlignRight); 244 audioView->setColumnAlignment(1, Qt::AlignRight);
245 audioView->setColumnAlignment(2, Qt::AlignRight); 245 audioView->setColumnAlignment(2, Qt::AlignRight);
246 audioView->setAllColumnsShowFocus(TRUE); 246 audioView->setAllColumnsShowFocus(TRUE);
247 247
248 audioView->setMultiSelection( TRUE ); 248 audioView->setMultiSelection( TRUE );
249 audioView->setSelectionMode( QListView::Extended); 249 audioView->setSelectionMode( QListView::Extended);
250 250
251 tabWidget->insertTab(aTab,tr("Audio")); 251 tabWidget->insertTab(aTab,tr("Audio"));
252 252
253 QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold); 253 QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold);
254 connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 254 connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
255 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); 255 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) );
256 256
257 connect( audioView, SIGNAL( returnPressed( QListViewItem *)), 257 connect( audioView, SIGNAL( returnPressed( QListViewItem *)),
258 this,SLOT( playIt( QListViewItem *)) ); 258 this,SLOT( playIt( QListViewItem *)) );
259 259
260// audioView 260// audioView
261// populateAudioView(); 261// populateAudioView();
262// videowidget 262// videowidget
263 263
264 QWidget *vTab; 264 QWidget *vTab;
265 vTab = new QWidget( tabWidget, "vTab" ); 265 vTab = new QWidget( tabWidget, "vTab" );
266 videoView = new QListView( vTab, "Videoview" ); 266 videoView = new QListView( vTab, "Videoview" );
267 videoView->setMinimumSize(233,260); 267 videoView->setMinimumSize(233,260);
268 268
269 videoView->addColumn(tr("Title"),140); 269 videoView->addColumn(tr("Title"),140);
270 videoView->addColumn(tr("Size"),-1); 270 videoView->addColumn(tr("Size"),-1);
271 videoView->addColumn(tr("Media"),-1); 271 videoView->addColumn(tr("Media"),-1);
272 videoView->setColumnAlignment(1, Qt::AlignRight); 272 videoView->setColumnAlignment(1, Qt::AlignRight);
273 videoView->setColumnAlignment(2, Qt::AlignRight); 273 videoView->setColumnAlignment(2, Qt::AlignRight);
274 videoView->setAllColumnsShowFocus(TRUE); 274 videoView->setAllColumnsShowFocus(TRUE);
275 videoView->setMultiSelection( TRUE ); 275 videoView->setMultiSelection( TRUE );
276 videoView->setSelectionMode( QListView::Extended); 276 videoView->setSelectionMode( QListView::Extended);
277 277
278 QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold); 278 QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold);
279 279
280 connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 280 connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
281 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); 281 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) );
282 connect( videoView, SIGNAL( returnPressed( QListViewItem *)), 282 connect( videoView, SIGNAL( returnPressed( QListViewItem *)),
283 this,SLOT( playIt( QListViewItem *)) ); 283 this,SLOT( playIt( QListViewItem *)) );
284 284
285 tabWidget->insertTab( vTab,tr("Video")); 285 tabWidget->insertTab( vTab,tr("Video"));
286// populateVideoView(); 286// populateVideoView();
287 287
288//playlists list 288//playlists list
289 QWidget *LTab; 289 QWidget *LTab;
290 LTab = new QWidget( tabWidget, "LTab" ); 290 LTab = new QWidget( tabWidget, "LTab" );
291 playLists = new FileSelector( "playlist/plain", LTab, "fileselector" , FALSE, FALSE); //buggy 291 playLists = new FileSelector( "playlist/plain", LTab, "fileselector" , FALSE, FALSE); //buggy
292 playLists->setMinimumSize(233,260); 292 playLists->setMinimumSize(233,260);
293 tabWidget->insertTab(LTab,tr("Lists")); 293 tabWidget->insertTab(LTab,tr("Lists"));
294 294
295 connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) ); 295 connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) );
296// connect( playLists, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) ); 296// connect( playLists, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) );
297 297
298// add the library area 298// add the library area
299 299
300// connect( audioView, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int)), 300// connect( audioView, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int)),
301// this, SLOT( fauxPlay( QListViewItem *) ) ); 301// this, SLOT( fauxPlay( QListViewItem *) ) );
302// connect( videoView, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int)), 302// connect( videoView, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int)),
303// this, SLOT( fauxPlay( QListViewItem *)) ); 303// this, SLOT( fauxPlay( QListViewItem *)) );
304 304
305// connect( audioView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( fauxPlay( QListViewItem *) ) ); 305// connect( audioView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( fauxPlay( QListViewItem *) ) );
306// connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( fauxPlay( QListViewItem *) ) ); 306// connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( fauxPlay( QListViewItem *) ) );
307 307
308 connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); 308 connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) );
309 connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); 309 connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) );
310 310
311 connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*))); 311 connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*)));
312 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) ); 312 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) );
313 connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) ); 313 connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) );
314 connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) ); 314 connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) );
315 connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) ); 315 connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) );
316 316
317 connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); 317 connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) );
318// connect( d->selectedFiles, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) ); 318// connect( d->selectedFiles, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) );
319 319
320 setCentralWidget( vbox5 ); 320 setCentralWidget( vbox5 );
321 321
322 Config cfg( "OpiePlayer" ); 322 Config cfg( "OpiePlayer" );
323 readConfig( cfg ); 323 readConfig( cfg );
324 QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); 324 QString currentPlaylist = cfg.readEntry("CurrentPlaylist","");
325// qDebug("currentList is "+currentPlaylist); 325// qDebug("currentList is "+currentPlaylist);
326 loadList(DocLnk( currentPlaylist)); 326 loadList(DocLnk( currentPlaylist));
327 setCaption(tr("OpiePlayer: ")+ currentPlaylist ); 327 setCaption(tr("OpiePlayer: ")+ currentPlaylist );
328 328
329 initializeStates(); 329 initializeStates();
330} 330}
331 331
332 332
333PlayListWidget::~PlayListWidget() { 333PlayListWidget::~PlayListWidget() {
334 Config cfg( "OpiePlayer" ); 334 Config cfg( "OpiePlayer" );
335 writeConfig( cfg ); 335 writeConfig( cfg );
336 336
337 337
338 if ( d->current ) 338 if ( d->current )
339 delete d->current; 339 delete d->current;
340 delete d; 340 delete d;
341} 341}
342 342
343 343
344void PlayListWidget::initializeStates() { 344void PlayListWidget::initializeStates() {
345 345
346 d->tbPlay->setOn( mediaPlayerState->playing() ); 346 d->tbPlay->setOn( mediaPlayerState->playing() );
347 d->tbLoop->setOn( mediaPlayerState->looping() ); 347 d->tbLoop->setOn( mediaPlayerState->looping() );
348 d->tbShuffle->setOn( mediaPlayerState->shuffled() ); 348 d->tbShuffle->setOn( mediaPlayerState->shuffled() );
349// d->tbFull->setOn( mediaPlayerState->fullscreen() ); 349// d->tbFull->setOn( mediaPlayerState->fullscreen() );
350// d->tbScale->setOn( mediaPlayerState->scaled() ); 350// d->tbScale->setOn( mediaPlayerState->scaled() );
351// d->tbScale->setEnabled( mediaPlayerState->fullscreen() ); 351// d->tbScale->setEnabled( mediaPlayerState->fullscreen() );
352// setPlaylist( mediaPlayerState->playlist() ); 352// setPlaylist( mediaPlayerState->playlist() );
353 setPlaylist( true); 353 setPlaylist( true);
354// d->selectedFiles->first(); 354// d->selectedFiles->first();
355 355
356} 356}
357 357
358 358
359void PlayListWidget::readConfig( Config& cfg ) { 359void PlayListWidget::readConfig( Config& cfg ) {
360 cfg.setGroup("PlayList"); 360 cfg.setGroup("PlayList");
361 QString currentString = cfg.readEntry("current", "" ); 361 QString currentString = cfg.readEntry("current", "" );
362 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 362 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
363 for ( int i = 0; i < noOfFiles; i++ ) { 363 for ( int i = 0; i < noOfFiles; i++ ) {
364 QString entryName; 364 QString entryName;
365 entryName.sprintf( "File%i", i + 1 ); 365 entryName.sprintf( "File%i", i + 1 );
366 QString linkFile = cfg.readEntry( entryName ); 366 QString linkFile = cfg.readEntry( entryName );
367 DocLnk lnk( linkFile ); 367 DocLnk lnk( linkFile );
368 if ( lnk.isValid() ) { 368 if ( lnk.isValid() ) {
369 d->selectedFiles->addToSelection( lnk ); 369 d->selectedFiles->addToSelection( lnk );
370 } 370 }
371 } 371 }
372 d->selectedFiles->setSelectedItem( currentString); 372 d->selectedFiles->setSelectedItem( currentString);
373// d->selectedFiles->setSelectedItem( (const QString &)currentString); 373// d->selectedFiles->setSelectedItem( (const QString &)currentString);
374} 374}
375 375
376 376
377void PlayListWidget::writeConfig( Config& cfg ) const { 377void PlayListWidget::writeConfig( Config& cfg ) const {
378 378
379 d->selectedFiles->writeCurrent( cfg); 379 d->selectedFiles->writeCurrent( cfg);
380 cfg.setGroup("PlayList"); 380 cfg.setGroup("PlayList");
381 int noOfFiles = 0; 381 int noOfFiles = 0;
382 d->selectedFiles->first(); 382 d->selectedFiles->first();
383 do { 383 do {
384 const DocLnk *lnk = d->selectedFiles->current(); 384 const DocLnk *lnk = d->selectedFiles->current();
385 if ( lnk ) { 385 if ( lnk ) {
386 QString entryName; 386 QString entryName;
387 entryName.sprintf( "File%i", noOfFiles + 1 ); 387 entryName.sprintf( "File%i", noOfFiles + 1 );
388// qDebug(entryName); 388// qDebug(entryName);
389 cfg.writeEntry( entryName, lnk->linkFile() ); 389 cfg.writeEntry( entryName, lnk->linkFile() );
390 // if this link does exist, add it so we have the file 390 // if this link does exist, add it so we have the file
391 // next time... 391 // next time...
392 if ( !QFile::exists( lnk->linkFile() ) ) { 392 if ( !QFile::exists( lnk->linkFile() ) ) {
393 // the way writing lnks doesn't really check for out 393 // the way writing lnks doesn't really check for out
394 // of disk space, but check it anyway. 394 // of disk space, but check it anyway.
395 if ( !lnk->writeLink() ) { 395 if ( !lnk->writeLink() ) {
396 QMessageBox::critical( 0, tr("Out of space"), 396 QMessageBox::critical( 0, tr("Out of space"),
397 tr( "There was a problem saving " 397 tr( "There was a problem saving "
398 "the playlist.\n" 398 "the playlist.\n"
399 "Your playlist " 399 "Your playlist "
400 "may be missing some entries\n" 400 "may be missing some entries\n"
401 "the next time you start it." ) 401 "the next time you start it." )
402 ); 402 );
403 } 403 }
404 } 404 }
405 noOfFiles++; 405 noOfFiles++;
406 } 406 }
407 } 407 }
408 while ( d->selectedFiles->next() ); 408 while ( d->selectedFiles->next() );
409 cfg.writeEntry("NumberOfFiles", noOfFiles ); 409 cfg.writeEntry("NumberOfFiles", noOfFiles );
410} 410}
411 411
412 412
413void PlayListWidget::addToSelection( const DocLnk& lnk ) { 413void PlayListWidget::addToSelection( const DocLnk& lnk ) {
414// qDebug("add"); 414// qDebug("add");
415 d->setDocumentUsed = FALSE; 415 d->setDocumentUsed = FALSE;
416 if ( mediaPlayerState->playlist() ) 416 if ( mediaPlayerState->playlist() )
417 d->selectedFiles->addToSelection( lnk ); 417 d->selectedFiles->addToSelection( lnk );
418 else 418 else
419 mediaPlayerState->setPlaying( TRUE ); 419 mediaPlayerState->setPlaying( TRUE );
420} 420}
421 421
422 422
423void PlayListWidget::clearList() { 423void PlayListWidget::clearList() {
424 while ( first() ) 424 while ( first() )
425 d->selectedFiles->removeSelected(); 425 d->selectedFiles->removeSelected();
426} 426}
427 427
428 428
429void PlayListWidget::addAllToList() { 429void PlayListWidget::addAllToList() {
430 DocLnkSet filesAll; 430 DocLnkSet filesAll;
431 Global::findDocuments(&filesAll, "video/*;audio/*"); 431 Global::findDocuments(&filesAll, "video/*;audio/*");
432 QListIterator<DocLnk> Adit( filesAll.children() ); 432 QListIterator<DocLnk> Adit( filesAll.children() );
433 for ( ; Adit.current(); ++Adit ) 433 for ( ; Adit.current(); ++Adit )
434 d->selectedFiles->addToSelection( **Adit ); 434 d->selectedFiles->addToSelection( **Adit );
435} 435}
436 436
437 437
438void PlayListWidget::addAllMusicToList() { 438void PlayListWidget::addAllMusicToList() {
439 QListIterator<DocLnk> dit( files.children() ); 439 QListIterator<DocLnk> dit( files.children() );
440 for ( ; dit.current(); ++dit ) 440 for ( ; dit.current(); ++dit )
441 d->selectedFiles->addToSelection( **dit ); 441 d->selectedFiles->addToSelection( **dit );
442} 442}
443 443
444 444
445void PlayListWidget::addAllVideoToList() { 445void PlayListWidget::addAllVideoToList() {
446 QListIterator<DocLnk> dit( vFiles.children() ); 446 QListIterator<DocLnk> dit( vFiles.children() );
447 for ( ; dit.current(); ++dit ) 447 for ( ; dit.current(); ++dit )
448 d->selectedFiles->addToSelection( **dit ); 448 d->selectedFiles->addToSelection( **dit );
449} 449}
450 450
451 451
452void PlayListWidget::setDocument(const QString& fileref) { 452void PlayListWidget::setDocument(const QString& fileref) {
453 qDebug(fileref); 453 qDebug(fileref);
454 fromSetDocument = TRUE; 454 fromSetDocument = TRUE;
455 if ( fileref.isNull() ) { 455 if ( fileref.isNull() ) {
456 QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) ); 456 QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) );
457 return; 457 return;
458 } 458 }
459// qDebug("setDocument "+fileref); 459// qDebug("setDocument "+fileref);
460 if(fileref.find("m3u",0,TRUE) != -1) { //is m3u 460 if(fileref.find("m3u",0,TRUE) != -1) { //is m3u
461 readm3u( fileref); 461 readm3u( fileref);
462 } 462 }
463 else if(fileref.find("pls",0,TRUE) != -1) { //is pls 463 else if(fileref.find("pls",0,TRUE) != -1) { //is pls
464 readPls( fileref); 464 readPls( fileref);
465 } 465 }
466 else if(fileref.find("playlist",0,TRUE) != -1) {//is playlist 466 else if(fileref.find("playlist",0,TRUE) != -1) {//is playlist
467 clearList(); 467 clearList();
468 loadList(DocLnk(fileref)); 468 loadList(DocLnk(fileref));
469 d->selectedFiles->first(); 469 d->selectedFiles->first();
470 } else { 470 } else {
471 clearList(); 471 clearList();
472 addToSelection( DocLnk( fileref ) ); 472 addToSelection( DocLnk( fileref ) );
473 d->setDocumentUsed = TRUE; 473 d->setDocumentUsed = TRUE;
474 mediaPlayerState->setPlaying( FALSE ); 474 mediaPlayerState->setPlaying( FALSE );
475 qApp->processEvents(); 475 qApp->processEvents();
476 mediaPlayerState->setPlaying( TRUE ); 476 mediaPlayerState->setPlaying( TRUE );
477 qApp->processEvents(); 477 qApp->processEvents();
478 setCaption(tr("OpiePlayer")); 478 setCaption(tr("OpiePlayer"));
479 } 479 }
480} 480}
481 481
482 482
483void PlayListWidget::setActiveWindow() { 483void PlayListWidget::setActiveWindow() {
484 // When we get raised we need to ensure that it switches views 484 // When we get raised we need to ensure that it switches views
485 char origView = mediaPlayerState->view(); 485 char origView = mediaPlayerState->view();
486 mediaPlayerState->setView( 'l' ); // invalidate 486 mediaPlayerState->setView( 'l' ); // invalidate
487 mediaPlayerState->setView( origView ); // now switch back 487 mediaPlayerState->setView( origView ); // now switch back
488} 488}
489 489
490 490
491void PlayListWidget::useSelectedDocument() { 491void PlayListWidget::useSelectedDocument() {
492 d->setDocumentUsed = FALSE; 492 d->setDocumentUsed = FALSE;
493} 493}
494 494
495 495
496const DocLnk *PlayListWidget::current() { // this is fugly 496const DocLnk *PlayListWidget::current() { // this is fugly
497 497
498// if( fromSetDocument) { 498// if( fromSetDocument) {
499// qDebug("from setDoc"); 499// qDebug("from setDoc");
500// DocLnkSet files; 500// DocLnkSet files;
501// Global::findDocuments(&files, "video/*;audio/*"); 501// Global::findDocuments(&files, "video/*;audio/*");
502// QListIterator<DocLnk> dit( files.children() ); 502// QListIterator<DocLnk> dit( files.children() );
503// for ( ; dit.current(); ++dit ) { 503// for ( ; dit.current(); ++dit ) {
504// if(dit.current()->linkFile() == setDocFileRef) { 504// if(dit.current()->linkFile() == setDocFileRef) {
505// qDebug(setDocFileRef); 505// qDebug(setDocFileRef);
506// return dit; 506// return dit;
507// } 507// }
508// } 508// }
509// } else 509// } else
510 510
511 511
512 switch (tabWidget->currentPageIndex()) { 512 switch (tabWidget->currentPageIndex()) {
513 case 0: //playlist 513 case 0: //playlist
514 { 514 {
515 qDebug("playlist"); 515 qDebug("playlist");
516 if ( mediaPlayerState->playlist() ) { 516 if ( mediaPlayerState->playlist() ) {
517 return d->selectedFiles->current(); 517 return d->selectedFiles->current();
518 } 518 }
519 else if ( d->setDocumentUsed && d->current ) { 519 else if ( d->setDocumentUsed && d->current ) {
520 return d->current; 520 return d->current;
521 } else { 521 } else {
522 return d->files->selected(); 522 return d->files->selected();
523 } 523 }
524 } 524 }
525 break; 525 break;
526 case 1://audio 526 case 1://audio
527 { 527 {
528 qDebug("audioView"); 528 qDebug("audioView");
529 QListIterator<DocLnk> dit( files.children() ); 529 QListIterator<DocLnk> dit( files.children() );
530 for ( ; dit.current(); ++dit ) { 530 for ( ; dit.current(); ++dit ) {
531 if( dit.current()->name() == audioView->currentItem()->text(0) && !insanityBool) { 531 if( dit.current()->name() == audioView->currentItem()->text(0) && !insanityBool) {
532 qDebug("here"); 532 qDebug("here");
533 insanityBool=TRUE; 533 insanityBool=TRUE;
534 return dit; 534 return dit;
535 } 535 }
536 } 536 }
537 } 537 }
538 break; 538 break;
539 case 2: // video 539 case 2: // video
540 { 540 {
541 qDebug("videoView"); 541 qDebug("videoView");
542 QListIterator<DocLnk> Vdit( vFiles.children() ); 542 QListIterator<DocLnk> Vdit( vFiles.children() );
543 for ( ; Vdit.current(); ++Vdit ) { 543 for ( ; Vdit.current(); ++Vdit ) {
544 if( Vdit.current()->name() == videoView->currentItem()->text(0) && !insanityBool) { 544 if( Vdit.current()->name() == videoView->currentItem()->text(0) && !insanityBool) {
545 insanityBool=TRUE; 545 insanityBool=TRUE;
546 return Vdit; 546 return Vdit;
547 } 547 }
548 } 548 }
549 } 549 }
550 break; 550 break;
551 }; 551 };
552 return 0; 552 return 0;
553} 553}
554 554
555bool PlayListWidget::prev() { 555bool PlayListWidget::prev() {
556 if ( mediaPlayerState->playlist() ) { 556 if ( mediaPlayerState->playlist() ) {
557 if ( mediaPlayerState->shuffled() ) { 557 if ( mediaPlayerState->shuffled() ) {
558 const DocLnk *cur = current(); 558 const DocLnk *cur = current();
559 int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0)); 559 int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0));
560 for ( int i = 0; i < j; i++ ) { 560 for ( int i = 0; i < j; i++ ) {
561 if ( !d->selectedFiles->next() ) 561 if ( !d->selectedFiles->next() )
562 d->selectedFiles->first(); 562 d->selectedFiles->first();
563 } 563 }
564 if ( cur == current() ) 564 if ( cur == current() )
565 if ( !d->selectedFiles->next() ) 565 if ( !d->selectedFiles->next() )
566 d->selectedFiles->first(); 566 d->selectedFiles->first();
567 return TRUE; 567 return TRUE;
568 } else { 568 } else {
569 if ( !d->selectedFiles->prev() ) { 569 if ( !d->selectedFiles->prev() ) {
570 if ( mediaPlayerState->looping() ) { 570 if ( mediaPlayerState->looping() ) {
571 return d->selectedFiles->last(); 571 return d->selectedFiles->last();
572 } else { 572 } else {
573 return FALSE; 573 return FALSE;
574 } 574 }
575 } 575 }
576 return TRUE; 576 return TRUE;
577 } 577 }
578 } else { 578 } else {
579 return mediaPlayerState->looping(); 579 return mediaPlayerState->looping();
580 } 580 }
581} 581}
582 582
583 583
584bool PlayListWidget::next() { 584bool PlayListWidget::next() {
585 if ( mediaPlayerState->playlist() ) { 585 if ( mediaPlayerState->playlist() ) {
586 if ( mediaPlayerState->shuffled() ) { 586 if ( mediaPlayerState->shuffled() ) {
587 return prev(); 587 return prev();
588 } else { 588 } else {
589 if ( !d->selectedFiles->next() ) { 589 if ( !d->selectedFiles->next() ) {
590 if ( mediaPlayerState->looping() ) { 590 if ( mediaPlayerState->looping() ) {
591 return d->selectedFiles->first(); 591 return d->selectedFiles->first();
592 } else { 592 } else {
593 return FALSE; 593 return FALSE;
594 } 594 }
595 } 595 }
596 return TRUE; 596 return TRUE;
597 } 597 }
598 } else { 598 } else {
599 return mediaPlayerState->looping(); 599 return mediaPlayerState->looping();
600 } 600 }
601} 601}
602 602
603 603
604bool PlayListWidget::first() { 604bool PlayListWidget::first() {
605 if ( mediaPlayerState->playlist() ) 605 if ( mediaPlayerState->playlist() )
606 return d->selectedFiles->first(); 606 return d->selectedFiles->first();
607 else 607 else
608 return mediaPlayerState->looping(); 608 return mediaPlayerState->looping();
609} 609}
610 610
611 611
612bool PlayListWidget::last() { 612bool PlayListWidget::last() {
613 if ( mediaPlayerState->playlist() ) 613 if ( mediaPlayerState->playlist() )
614 return d->selectedFiles->last(); 614 return d->selectedFiles->last();
615 else 615 else
616 return mediaPlayerState->looping(); 616 return mediaPlayerState->looping();
617} 617}
618 618
619 619
620void PlayListWidget::saveList() { 620void PlayListWidget::saveList() {
621 621
622 QString filename; 622 QString filename;
623 InputDialog *fileDlg; 623 InputDialog *fileDlg;
624 fileDlg = new InputDialog(this,tr("Save Playlist"),TRUE, 0); 624 fileDlg = new InputDialog(this,tr("Save Playlist"),TRUE, 0);
625 fileDlg->exec(); 625 fileDlg->exec();
626 if( fileDlg->result() == 1 ) { 626 if( fileDlg->result() == 1 ) {
627 if ( d->current ) 627 if ( d->current )
628 delete d->current; 628 delete d->current;
629 filename = fileDlg->LineEdit1->text();//+".playlist"; 629 filename = fileDlg->LineEdit1->text();//+".playlist";
630// qDebug("saving playlist "+filename+".playlist"); 630// qDebug("saving playlist "+filename+".playlist");
631 Config cfg( filename +".playlist"); 631 Config cfg( filename +".playlist");
632 writeConfig( cfg ); 632 writeConfig( cfg );
633 633
634 DocLnk lnk; 634 DocLnk lnk;
635// lnk.setComment( ""); 635// lnk.setComment( "");
636 lnk.setFile(QDir::homeDirPath()+"/Settings/"+filename+".playlist.conf"); //sets File property 636 lnk.setFile(QDir::homeDirPath()+"/Settings/"+filename+".playlist.conf"); //sets File property
637 lnk.setType("playlist/plain");// hey is this a REGISTERED mime type?!?!? ;D 637 lnk.setType("playlist/plain");// hey is this a REGISTERED mime type?!?!? ;D
638 lnk.setIcon("opieplayer/playlist2"); 638 lnk.setIcon("opieplayer/playlist2");
639 lnk.setName( filename); //sets file name 639 lnk.setName( filename); //sets file name
640// qDebug(filename); 640// qDebug(filename);
641 if(!lnk.writeLink()) 641 if(!lnk.writeLink())
642 qDebug("Writing doclink did not work"); 642 qDebug("Writing doclink did not work");
643 } 643 }
644 Config config( "OpiePlayer" ); 644 Config config( "OpiePlayer" );
645 config.writeEntry("CurrentPlaylist",filename); 645 config.writeEntry("CurrentPlaylist",filename);
646 setCaption(tr("OpiePlayer: ")+filename); 646 setCaption(tr("OpiePlayer: ")+filename);
647 d->selectedFiles->first(); 647 d->selectedFiles->first();
648 if(fileDlg) 648 if(fileDlg)
649 delete fileDlg; 649 delete fileDlg;
650} 650}
651 651
652void PlayListWidget::loadList( const DocLnk & lnk) { 652void PlayListWidget::loadList( const DocLnk & lnk) {
653 QString name= lnk.name(); 653 QString name= lnk.name();
654// qDebug("currentList is "+name); 654// qDebug("currentList is "+name);
655 if( name.length()>1) { 655 if( name.length()>1) {
656 setCaption("OpiePlayer: "+name); 656 setCaption("OpiePlayer: "+name);
657// qDebug("load list "+ name+".playlist"); 657// qDebug("load list "+ name+".playlist");
658 clearList(); 658 clearList();
659 Config cfg( name+".playlist"); 659 Config cfg( name+".playlist");
660 readConfig(cfg); 660 readConfig(cfg);
661 661
662 tabWidget->setCurrentPage(0); 662 tabWidget->setCurrentPage(0);
663 663
664 Config config( "OpiePlayer" ); 664 Config config( "OpiePlayer" );
665 config.writeEntry("CurrentPlaylist", name); 665 config.writeEntry("CurrentPlaylist", name);
666// d->selectedFiles->first(); 666// d->selectedFiles->first();
667 } 667 }
668 668
669} 669}
670 670
671void PlayListWidget::setPlaylist( bool shown ) { 671void PlayListWidget::setPlaylist( bool shown ) {
672 if ( shown ) 672 if ( shown )
673 d->playListFrame->show(); 673 d->playListFrame->show();
674 else 674 else
675 d->playListFrame->hide(); 675 d->playListFrame->hide();
676} 676}
677 677
678void PlayListWidget::setView( char view ) { 678void PlayListWidget::setView( char view ) {
679 if ( view == 'l' ) 679 if ( view == 'l' )
680 showMaximized(); 680 showMaximized();
681 else 681 else
682 hide(); 682 hide();
683} 683}
684 684
685void PlayListWidget::addSelected() { 685void PlayListWidget::addSelected() {
686 686
687 Config cfg( "OpiePlayer" ); 687 Config cfg( "OpiePlayer" );
688 cfg.setGroup("PlayList"); 688 cfg.setGroup("PlayList");
689 QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); 689 QString currentPlaylist = cfg.readEntry("CurrentPlaylist","");
690 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 690 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
691 691
692 switch (tabWidget->currentPageIndex()) { 692 switch (tabWidget->currentPageIndex()) {
693 case 0: //playlist 693 case 0: //playlist
694 break; 694 break;
695 case 1: { //audio 695 case 1: { //audio
696// QString entryName; 696// QString entryName;
697// entryName.sprintf( "File%i", i + 1 ); 697// entryName.sprintf( "File%i", i + 1 );
698// QString linkFile = cfg.readEntry( entryName ); 698// QString linkFile = cfg.readEntry( entryName );
699 QListViewItemIterator it( audioView ); 699 QListViewItemIterator it( audioView );
700 // iterate through all items of the listview 700 // iterate through all items of the listview
701 for ( ; it.current(); ++it ) { 701 for ( ; it.current(); ++it ) {
702 if ( it.current()->isSelected() ) { 702 if ( it.current()->isSelected() ) {
703 QListIterator<DocLnk> dit( files.children() ); 703 QListIterator<DocLnk> dit( files.children() );
704 for ( ; dit.current(); ++dit ) { 704 for ( ; dit.current(); ++dit ) {
705 if( dit.current()->name() == it.current()->text(0) ) { 705 if( dit.current()->name() == it.current()->text(0) ) {
706 d->selectedFiles->addToSelection( **dit ); 706 d->selectedFiles->addToSelection( **dit );
707 } 707 }
708 } 708 }
709 audioView->setSelected( it.current(),FALSE); 709 audioView->setSelected( it.current(),FALSE);
710 } 710 }
711 } 711 }
712 tabWidget->setCurrentPage(0); 712 tabWidget->setCurrentPage(0);
713 } 713 }
714 break; 714 break;
715 case 2: { // video 715 case 2: { // video
716 QListViewItemIterator it( videoView ); 716 QListViewItemIterator it( videoView );
717 // iterate through all items of the listview 717 // iterate through all items of the listview
718 for ( ; it.current(); ++it ) { 718 for ( ; it.current(); ++it ) {
719 if ( it.current()->isSelected() ) { 719 if ( it.current()->isSelected() ) {
720 QListIterator<DocLnk> dit( vFiles.children() ); 720 QListIterator<DocLnk> dit( vFiles.children() );
721 for ( ; dit.current(); ++dit ) { 721 for ( ; dit.current(); ++dit ) {
722 if( dit.current()->name() == it.current()->text(0) ) { 722 if( dit.current()->name() == it.current()->text(0) ) {
723 d->selectedFiles->addToSelection( **dit ); 723 d->selectedFiles->addToSelection( **dit );
724 } 724 }
725 } 725 }
726 726
727 videoView->setSelected( it.current(),FALSE); 727 videoView->setSelected( it.current(),FALSE);
728 } 728 }
729 } 729 }
730// for ( int i = 0; i < noOfFiles; i++ ) { 730// for ( int i = 0; i < noOfFiles; i++ ) {
731// QString entryName; 731// QString entryName;
732// entryName.sprintf( "File%i", i + 1 ); 732// entryName.sprintf( "File%i", i + 1 );
733// QString linkFile = cfg.readEntry( entryName ); 733// QString linkFile = cfg.readEntry( entryName );
734// if( DocLnk( linkFile).name() == videoView->selectedItem()->text(0) ) { 734// if( DocLnk( linkFile).name() == videoView->selectedItem()->text(0) ) {
735// int result= QMessageBox::warning(this,tr("OpiePlayer"), 735// int result= QMessageBox::warning(this,tr("OpiePlayer"),
736// tr("This is all ready in your playlist.\nContinue?"), 736// tr("This is all ready in your playlist.\nContinue?"),
737// tr("Yes"),tr("No"),0,0,1); 737// tr("Yes"),tr("No"),0,0,1);
738// if (result !=0) 738// if (result !=0)
739// return; 739// return;
740// } 740// }
741// } 741// }
742// addToSelection( videoView->selectedItem() ); 742// addToSelection( videoView->selectedItem() );
743 tabWidget->setCurrentPage(0); 743 tabWidget->setCurrentPage(0);
744 } 744 }
745 break; 745 break;
746 }; 746 };
747} 747}
748 748
749void PlayListWidget::removeSelected() { 749void PlayListWidget::removeSelected() {
750 d->selectedFiles->removeSelected( ); 750 d->selectedFiles->removeSelected( );
751} 751}
752 752
753void PlayListWidget::playIt( QListViewItem *it) { 753void PlayListWidget::playIt( QListViewItem *it) {
754// d->setDocumentUsed = FALSE; 754// d->setDocumentUsed = FALSE;
755 mediaPlayerState->setPlaying(FALSE); 755 mediaPlayerState->setPlaying(FALSE);
756 mediaPlayerState->setPlaying(TRUE); 756 mediaPlayerState->setPlaying(TRUE);
757 d->selectedFiles->unSelect(); 757 d->selectedFiles->unSelect();
758} 758}
759 759
760void PlayListWidget::addToSelection( QListViewItem *it) { 760void PlayListWidget::addToSelection( QListViewItem *it) {
761 d->setDocumentUsed = FALSE; 761 d->setDocumentUsed = FALSE;
762 762
763 if(it) { 763 if(it) {
764 switch (tabWidget->currentPageIndex()) { 764 switch (tabWidget->currentPageIndex()) {
765 case 1: { 765 case 1: {
766 QListIterator<DocLnk> dit( files.children() ); 766 QListIterator<DocLnk> dit( files.children() );
767 for ( ; dit.current(); ++dit ) { 767 for ( ; dit.current(); ++dit ) {
768 if( dit.current()->name() == it->text(0)) { 768 if( dit.current()->name() == it->text(0)) {
769 d->selectedFiles->addToSelection( **dit ); 769 d->selectedFiles->addToSelection( **dit );
770 } 770 }
771 } 771 }
772 } 772 }
773 break; 773 break;
774 case 2: { 774 case 2: {
775 QListIterator<DocLnk> dit( vFiles.children() ); 775 QListIterator<DocLnk> dit( vFiles.children() );
776 for ( ; dit.current(); ++dit ) { 776 for ( ; dit.current(); ++dit ) {
777 if( dit.current()->name() == it->text(0)) { 777 if( dit.current()->name() == it->text(0)) {
778 d->selectedFiles->addToSelection( **dit ); 778 d->selectedFiles->addToSelection( **dit );
779 } 779 }
780 } 780 }
781 } 781 }
782 break; 782 break;
783 case 0: 783 case 0:
784 break; 784 break;
785 }; 785 };
786 tabWidget->setCurrentPage(0); 786 tabWidget->setCurrentPage(0);
787 } 787 }
788} 788}
789 789
790void PlayListWidget::tabChanged(QWidget *widg) { 790void PlayListWidget::tabChanged(QWidget *widg) {
791 791
792 switch ( tabWidget->currentPageIndex()) { 792 switch ( tabWidget->currentPageIndex()) {
793 case 0: 793 case 0:
794 { 794 {
795 if( !tbDeletePlaylist->isHidden()) 795 if( !tbDeletePlaylist->isHidden())
796 tbDeletePlaylist->hide(); 796 tbDeletePlaylist->hide();
797 d->tbRemoveFromList->setEnabled(TRUE); 797 d->tbRemoveFromList->setEnabled(TRUE);
798 d->tbAddToList->setEnabled(FALSE); 798 d->tbAddToList->setEnabled(FALSE);
799 } 799 }
800 break; 800 break;
801 case 1: 801 case 1:
802 { 802 {
803 audioView->clear(); 803 audioView->clear();
804 populateAudioView(); 804 populateAudioView();
805 805
806 if( !tbDeletePlaylist->isHidden()) 806 if( !tbDeletePlaylist->isHidden())
807 tbDeletePlaylist->hide(); 807 tbDeletePlaylist->hide();
808 d->tbRemoveFromList->setEnabled(FALSE); 808 d->tbRemoveFromList->setEnabled(FALSE);
809 d->tbAddToList->setEnabled(TRUE); 809 d->tbAddToList->setEnabled(TRUE);
810 } 810 }
811 break; 811 break;
812 case 2: 812 case 2:
813 { 813 {
814 videoView->clear(); 814 videoView->clear();
815 populateVideoView(); 815 populateVideoView();
816 if( !tbDeletePlaylist->isHidden()) 816 if( !tbDeletePlaylist->isHidden())
817 tbDeletePlaylist->hide(); 817 tbDeletePlaylist->hide();
818 d->tbRemoveFromList->setEnabled(FALSE); 818 d->tbRemoveFromList->setEnabled(FALSE);
819 d->tbAddToList->setEnabled(TRUE); 819 d->tbAddToList->setEnabled(TRUE);
820 } 820 }
821 break; 821 break;
822 case 3: 822 case 3:
823 { 823 {
824 if( tbDeletePlaylist->isHidden()) 824 if( tbDeletePlaylist->isHidden())
825 tbDeletePlaylist->show(); 825 tbDeletePlaylist->show();
826 playLists->reread(); 826 playLists->reread();
827 } 827 }
828 break; 828 break;
829 }; 829 };
830} 830}
831 831
832void PlayListWidget::btnPlay(bool b) { 832void PlayListWidget::btnPlay(bool b) {
833 833
834// mediaPlayerState->setPlaying(b); 834// mediaPlayerState->setPlaying(b);
835 switch ( tabWidget->currentPageIndex()) { 835 switch ( tabWidget->currentPageIndex()) {
836 case 0: 836 case 0:
837 { 837 {
838 mediaPlayerState->setPlaying(b); 838 mediaPlayerState->setPlaying(b);
839 } 839 }
840 break; 840 break;
841 case 1: 841 case 1:
842 { 842 {
843// if(audioView->selectedItem()) { 843 addToSelection( audioView->currentItem() );
844 addToSelection( audioView->selectedItem() );
845 mediaPlayerState->setPlaying(b); 844 mediaPlayerState->setPlaying(b);
846 d->selectedFiles->removeSelected( ); 845 d->selectedFiles->removeSelected( );
847 tabWidget->setCurrentPage(1); 846 tabWidget->setCurrentPage(1);
848 d->selectedFiles->unSelect(); 847 d->selectedFiles->unSelect();
849 insanityBool=FALSE; 848 insanityBool=FALSE;
850// audioView->clearSelection(); 849// audioView->clearSelection();
851// }
852 } 850 }
853 break; 851 break;
854 case 2: 852 case 2:
855 { 853 {
856// if(videoView->selectedItem() ) { 854 addToSelection( videoView->currentItem() );
857 addToSelection( videoView->selectedItem() );
858 mediaPlayerState->setPlaying(b); 855 mediaPlayerState->setPlaying(b);
859 qApp->processEvents(); 856 qApp->processEvents();
860 d->selectedFiles->removeSelected( ); 857 d->selectedFiles->removeSelected( );
861 tabWidget->setCurrentPage(2); 858 tabWidget->setCurrentPage(2);
862 d->selectedFiles->unSelect(); 859 d->selectedFiles->unSelect();
863 insanityBool=FALSE; 860 insanityBool=FALSE;
864// videoView->clearSelection(); 861// videoView->clearSelection();
865// }
866 } 862 }
867 break; 863 break;
868 }; 864 };
869} 865}
870 866
871void PlayListWidget::deletePlaylist() { 867void PlayListWidget::deletePlaylist() {
872 switch( QMessageBox::information( this, (tr("Remove Playlist?")), 868 switch( QMessageBox::information( this, (tr("Remove Playlist?")),
873 (tr("You really want to delete\nthis playlist?")), 869 (tr("You really want to delete\nthis playlist?")),
874 (tr("Yes")), (tr("No")), 0 )){ 870 (tr("Yes")), (tr("No")), 0 )){
875 case 0: // Yes clicked, 871 case 0: // Yes clicked,
876 QFile().remove(playLists->selected()->file()); 872 QFile().remove(playLists->selected()->file());
877 QFile().remove(playLists->selected()->linkFile()); 873 QFile().remove(playLists->selected()->linkFile());
878 playLists->reread(); 874 playLists->reread();
879 break; 875 break;
880 case 1: // Cancel 876 case 1: // Cancel
881 break; 877 break;
882 }; 878 };
883} 879}
884 880
885void PlayListWidget::viewPressed( int mouse, QListViewItem *item, const QPoint& point, int i) 881void PlayListWidget::viewPressed( int mouse, QListViewItem *item, const QPoint& point, int i)
886{ 882{
887 switch (mouse) { 883 switch (mouse) {
888 case 1: 884 case 1:
889 break; 885 break;
890 case 2:{ 886 case 2:{
891 QPopupMenu m; 887
892 m.insertItem( tr( "Play" ), this, SLOT( playSelected() )); 888 QPopupMenu m;
893 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() )); 889 m.insertItem( tr( "Play" ), this, SLOT( playSelected() ));
894 m.insertSeparator(); 890 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() ));
895 if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() ) 891 m.insertSeparator();
896 m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); 892 if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() )
893 m.insertItem( tr( "Properties" ), this, SLOT( listDelete() ));
897 894
898 m.exec( QCursor::pos() ); 895 m.exec( QCursor::pos() );
899 } 896 }
900 break; 897 break;
901 }; 898 };
902} 899}
903 900
904void PlayListWidget::playSelected() 901void PlayListWidget::playSelected()
905{ 902{
906 btnPlay( TRUE); 903 btnPlay( TRUE);
907// d->selectedFiles->unSelect(); 904// d->selectedFiles->unSelect();
908} 905}
909 906
910void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *item, const QPoint& point, int i) 907void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *item, const QPoint& point, int i)
911{ 908{
912 switch (mouse) { 909 switch (mouse) {
913 case 1: 910 case 1:
914 911
915 break; 912 break;
916 case 2:{ 913 case 2:{
917 QPopupMenu m; 914 QPopupMenu m;
918 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() )); 915 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() ));
919 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() )); 916 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() ));
920// m.insertSeparator(); 917// m.insertSeparator();
921// m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); 918// m.insertItem( tr( "Properties" ), this, SLOT( listDelete() ));
922 m.exec( QCursor::pos() ); 919 m.exec( QCursor::pos() );
923 } 920 }
924 break; 921 break;
925 }; 922 };
926 923
927} 924}
928 925
929void PlayListWidget::listDelete() { 926void PlayListWidget::listDelete() {
930 Config cfg( "OpiePlayer" ); 927 Config cfg( "OpiePlayer" );
931 cfg.setGroup("PlayList"); 928 cfg.setGroup("PlayList");
932 QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); 929 QString currentPlaylist = cfg.readEntry("CurrentPlaylist","");
933 QString file; 930 QString file;
934 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 931 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
935 switch ( tabWidget->currentPageIndex()) { 932 switch ( tabWidget->currentPageIndex()) {
936 case 0: 933 case 0:
937 break; 934 break;
938 case 1: 935 case 1:
939 { 936 {
940 file = audioView->selectedItem()->text(0); 937 file = audioView->selectedItem()->text(0);
941// Global::findDocuments(&files, "audio/*"); 938// Global::findDocuments(&files, "audio/*");
942// AppLnkSet appFiles; 939// AppLnkSet appFiles;
943 QListIterator<DocLnk> dit( files.children() ); 940 QListIterator<DocLnk> dit( files.children() );
944 for ( ; dit.current(); ++dit ) { 941 for ( ; dit.current(); ++dit ) {
945 if( dit.current()->name() == file) { 942 if( dit.current()->name() == file) {
946// qDebug(file); 943// qDebug(file);
947 LnkProperties prop( dit.current() ); 944 LnkProperties prop( dit.current() );
948// connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); 945// connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *)));
949 prop.showMaximized(); 946 prop.showMaximized();
950 prop.exec(); 947 prop.exec();
951 } 948 }
952 } 949 }
953 populateAudioView(); 950 populateAudioView();
954 } 951 }
955 break; 952 break;
956 case 2: 953 case 2:
957 { 954 {
958// file = videoView->selectedItem()->text(0); 955// file = videoView->selectedItem()->text(0);
959// for ( int i = 0; i < noOfFiles; i++ ) { 956// for ( int i = 0; i < noOfFiles; i++ ) {
960// QString entryName; 957// QString entryName;
961// entryName.sprintf( "File%i", i + 1 ); 958// entryName.sprintf( "File%i", i + 1 );
962// QString linkFile = cfg.readEntry( entryName ); 959// QString linkFile = cfg.readEntry( entryName );
963// AppLnk lnk( AppLnk(linkFile)); 960// AppLnk lnk( AppLnk(linkFile));
964// if( lnk.name() == file ) { 961// if( lnk.name() == file ) {
965// LnkProperties prop( &lnk); 962// LnkProperties prop( &lnk);
966// // connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); 963// // connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *)));
967// prop.showMaximized(); 964// prop.showMaximized();
968// prop.exec(); 965// prop.exec();
969// } 966// }
970// } 967// }
971 } 968 }
972 break; 969 break;
973 }; 970 };
974} 971}
975 972
976void PlayListWidget::scanForAudio() { 973void PlayListWidget::scanForAudio() {
977 qDebug("scan for audio"); 974 qDebug("scan for audio");
978 files.detachChildren(); 975 files.detachChildren();
979 QListIterator<DocLnk> sdit( files.children() ); 976 QListIterator<DocLnk> sdit( files.children() );
980 for ( ; sdit.current(); ++sdit ) { 977 for ( ; sdit.current(); ++sdit ) {
981 delete sdit.current(); 978 delete sdit.current();
982 } 979 }
983 Global::findDocuments(&files, "audio/*"); 980 Global::findDocuments(&files, "audio/*");
984 audioScan = TRUE; 981 audioScan = TRUE;
985} 982}
986void PlayListWidget::scanForVideo() { 983void PlayListWidget::scanForVideo() {
987 qDebug("scan for video"); 984 qDebug("scan for video");
988 vFiles.detachChildren(); 985 vFiles.detachChildren();
989 QListIterator<DocLnk> sdit( vFiles.children() ); 986 QListIterator<DocLnk> sdit( vFiles.children() );
990 for ( ; sdit.current(); ++sdit ) { 987 for ( ; sdit.current(); ++sdit ) {
991 delete sdit.current(); 988 delete sdit.current();
992 } 989 }
993 Global::findDocuments(&vFiles, "video/*"); 990 Global::findDocuments(&vFiles, "video/*");
994 videoScan = TRUE; 991 videoScan = TRUE;
995} 992}
996 993
997void PlayListWidget::populateAudioView() { 994void PlayListWidget::populateAudioView() {
998 995
999 audioView->clear(); 996 audioView->clear();
1000 StorageInfo storageInfo; 997 StorageInfo storageInfo;
1001 const QList<FileSystem> &fs = storageInfo.fileSystems(); 998 const QList<FileSystem> &fs = storageInfo.fileSystems();
1002 if(!audioScan) scanForAudio(); 999 if(!audioScan) scanForAudio();
1003 1000
1004 QListIterator<DocLnk> dit( files.children() ); 1001 QListIterator<DocLnk> dit( files.children() );
1005 QListIterator<FileSystem> it ( fs ); 1002 QListIterator<FileSystem> it ( fs );
1006 1003
1007 QString storage; 1004 QString storage;
1008 for ( ; dit.current(); ++dit ) { 1005 for ( ; dit.current(); ++dit ) {
1009 for( ; it.current(); ++it ){ 1006 for( ; it.current(); ++it ){
1010 const QString name = (*it)->name(); 1007 const QString name = (*it)->name();
1011 const QString path = (*it)->path(); 1008 const QString path = (*it)->path();
1012 if(dit.current()->file().find(path) != -1 ) storage=name; 1009 if(dit.current()->file().find(path) != -1 ) storage=name;
1013 } 1010 }
1014 1011
1015 QListViewItem * newItem; 1012 QListViewItem * newItem;
1016 if ( QFile( dit.current()->file()).exists() ) { 1013 if ( QFile( dit.current()->file()).exists() ) {
1017// qDebug(dit.current()->name()); 1014// qDebug(dit.current()->name());
1018 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), 1015 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(),
1019 QString::number( QFile( dit.current()->file()).size() ), storage); 1016 QString::number( QFile( dit.current()->file()).size() ), storage);
1020 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" )); 1017 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" ));
1021 } 1018 }
1022 } 1019 }
1023 1020
1024} 1021}
1025 1022
1026void PlayListWidget::populateVideoView() { 1023void PlayListWidget::populateVideoView() {
1027 videoView->clear(); 1024 videoView->clear();
1028 StorageInfo storageInfo; 1025 StorageInfo storageInfo;
1029 const QList<FileSystem> &fs = storageInfo.fileSystems(); 1026 const QList<FileSystem> &fs = storageInfo.fileSystems();
1030 1027
1031 if(!videoScan ) scanForVideo(); 1028 if(!videoScan ) scanForVideo();
1032 1029
1033 QListIterator<DocLnk> Vdit( vFiles.children() ); 1030 QListIterator<DocLnk> Vdit( vFiles.children() );
1034 QListIterator<FileSystem> it ( fs ); 1031 QListIterator<FileSystem> it ( fs );
1035 videoView->clear(); 1032 videoView->clear();
1036 QString storage; 1033 QString storage;
1037 for ( ; Vdit.current(); ++Vdit ) { 1034 for ( ; Vdit.current(); ++Vdit ) {
1038 for( ; it.current(); ++it ){ 1035 for( ; it.current(); ++it ){
1039 const QString name = (*it)->name(); 1036 const QString name = (*it)->name();
1040 const QString path = (*it)->path(); 1037 const QString path = (*it)->path();
1041 if( Vdit.current()->file().find(path) != -1 ) storage=name; 1038 if( Vdit.current()->file().find(path) != -1 ) storage=name;
1042 } 1039 }
1043 1040
1044 QListViewItem * newItem; 1041 QListViewItem * newItem;
1045 if ( QFile( Vdit.current()->file()).exists() ) { 1042 if ( QFile( Vdit.current()->file()).exists() ) {
1046 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), 1043 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(),
1047 QString::number( QFile( Vdit.current()->file()).size() ), storage); 1044 QString::number( QFile( Vdit.current()->file()).size() ), storage);
1048 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/videofile" )); 1045 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/videofile" ));
1049 } 1046 }
1050 } 1047 }
1051} 1048}
1052 1049
1053void PlayListWidget::openFile() { 1050void PlayListWidget::openFile() {
1054 QString filename, name; 1051 QString filename, name;
1055 InputDialog *fileDlg; 1052 InputDialog *fileDlg;
1056 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); 1053 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0);
1057 fileDlg->exec(); 1054 fileDlg->exec();
1058 if( fileDlg->result() == 1 ) { 1055 if( fileDlg->result() == 1 ) {
1059 filename = fileDlg->LineEdit1->text(); 1056 filename = fileDlg->LineEdit1->text();
1060// http://205.188.234.129:8030 1057// http://205.188.234.129:8030
1061// http://66.28.68.70:8000 1058// http://66.28.68.70:8000
1062 qDebug("Selected filename is "+filename); 1059 qDebug("Selected filename is "+filename);
1063 if(filename.right(3) == "m3u") 1060 if(filename.right(3) == "m3u")
1064 readm3u( filename); 1061 readm3u( filename);
1065 else if(filename.right(3) == "pls") 1062 else if(filename.right(3) == "pls")
1066 readPls( filename); 1063 readPls( filename);
1067 else { 1064 else {
1068 DocLnk lnk; 1065 DocLnk lnk;
1069 1066
1070 lnk.setName(filename); //sets file name 1067 lnk.setName(filename); //sets file name
1071 if(filename.right(1) != "/" && filename.right(3) != "mp3" && filename.right(3) != "MP3") 1068 if(filename.right(1) != "/" && filename.right(3) != "mp3" && filename.right(3) != "MP3")
1072 filename += "/"; 1069 filename += "/";
1073 lnk.setFile(filename); //sets File property 1070 lnk.setFile(filename); //sets File property
1074 1071
1075 lnk.setType("audio/x-mpegurl"); 1072 lnk.setType("audio/x-mpegurl");
1076 lnk.setExec("opieplayer"); 1073 lnk.setExec("opieplayer");
1077 lnk.setIcon("opieplayer/MPEGPlayer"); 1074 lnk.setIcon("opieplayer/MPEGPlayer");
1078 1075
1079 if(!lnk.writeLink()) 1076 if(!lnk.writeLink())
1080 qDebug("Writing doclink did not work"); 1077 qDebug("Writing doclink did not work");
1081 d->selectedFiles->addToSelection( lnk); 1078 d->selectedFiles->addToSelection( lnk);
1082// if(fileDlg2) 1079// if(fileDlg2)
1083// delete fileDlg2; 1080// delete fileDlg2;
1084 } 1081 }
1085 } 1082 }
1086 if(fileDlg) 1083 if(fileDlg)
1087 delete fileDlg; 1084 delete fileDlg;
1088} 1085}
1089 1086
1090void PlayListWidget::keyReleaseEvent( QKeyEvent *e) 1087void PlayListWidget::keyReleaseEvent( QKeyEvent *e)
1091{ 1088{
1092 switch ( e->key() ) { 1089 switch ( e->key() ) {
1093////////////////////////////// Zaurus keys 1090////////////////////////////// Zaurus keys
1094 case Key_F9: //activity 1091 case Key_F9: //activity
1095// if(audioUI->isHidden()) 1092// if(audioUI->isHidden())
1096// audioUI->showMaximized(); 1093// audioUI->showMaximized();
1097 break; 1094 break;
1098 case Key_F10: //contacts 1095 case Key_F10: //contacts
1099// if( videoUI->isHidden()) 1096// if( videoUI->isHidden())
1100// videoUI->showMaximized(); 1097// videoUI->showMaximized();
1101 break; 1098 break;
1102 case Key_F11: //menu 1099 case Key_F11: //menu
1103 break; 1100 break;
1104 case Key_F12: //home 1101 case Key_F12: //home
1105// doBlank(); 1102// doBlank();
1106 break; 1103 break;
1107 case Key_F13: //mail 1104 case Key_F13: //mail
1108// doUnblank(); 1105// doUnblank();
1109 break; 1106 break;
1110 case Key_Q: //add to playlist 1107 case Key_Q: //add to playlist
1111 qDebug("Add"); 1108 qDebug("Add");
1112 addSelected(); 1109 addSelected();
1113 break; 1110 break;
1114 case Key_R: //remove from playlist 1111 case Key_R: //remove from playlist
1115 removeSelected(); 1112 removeSelected();
1116 break; 1113 break;
1117// case Key_P: //play 1114// case Key_P: //play
1118// qDebug("Play"); 1115// qDebug("Play");
1119// playSelected(); 1116// playSelected();
1120// break; 1117// break;
1121 case Key_Space: 1118 case Key_Space:
1122 qDebug("Play"); 1119 qDebug("Play");
1123// playSelected(); puh 1120// playSelected(); puh
1124 break; 1121 break;
1125 case Key_1: 1122 case Key_1:
1126 tabWidget->setCurrentPage(0); 1123 tabWidget->setCurrentPage(0);
1127 break; 1124 break;
1128 case Key_2: 1125 case Key_2:
1129 tabWidget->setCurrentPage(1); 1126 tabWidget->setCurrentPage(1);
1130 break; 1127 break;
1131 case Key_3: 1128 case Key_3:
1132 tabWidget->setCurrentPage(2); 1129 tabWidget->setCurrentPage(2);
1133 break; 1130 break;
1134 case Key_4: 1131 case Key_4:
1135 tabWidget->setCurrentPage(3); 1132 tabWidget->setCurrentPage(3);
1136 break; 1133 break;
1137 } 1134 }
1138} 1135}
1139 1136
1140void PlayListWidget::keyPressEvent( QKeyEvent *e) 1137void PlayListWidget::keyPressEvent( QKeyEvent *e)
1141{ 1138{
1142// qDebug("Key press"); 1139// qDebug("Key press");
1143// switch ( e->key() ) { 1140// switch ( e->key() ) {
1144// ////////////////////////////// Zaurus keys 1141// ////////////////////////////// Zaurus keys
1145// case Key_A: //add to playlist 1142// case Key_A: //add to playlist
1146// qDebug("Add"); 1143// qDebug("Add");
1147// addSelected(); 1144// addSelected();
1148// break; 1145// break;
1149// case Key_R: //remove from playlist 1146// case Key_R: //remove from playlist
1150// removeSelected(); 1147// removeSelected();
1151// break; 1148// break;
1152// case Key_P: //play 1149// case Key_P: //play
1153// qDebug("Play"); 1150// qDebug("Play");
1154// playSelected(); 1151// playSelected();
1155// break; 1152// break;
1156// case Key_Space: 1153// case Key_Space:
1157// qDebug("Play"); 1154// qDebug("Play");
1158// playSelected(); 1155// playSelected();
1159// break; 1156// break;
1160// } 1157// }
1161} 1158}
1162 1159
1163void PlayListWidget::doBlank() { 1160void PlayListWidget::doBlank() {
1164 qDebug("do blanking"); 1161 qDebug("do blanking");
1165 fd=open("/dev/fb0",O_RDWR); 1162 fd=open("/dev/fb0",O_RDWR);
1166 if (fd != -1) { 1163 if (fd != -1) {
1167 ioctl(fd,FBIOBLANK,1); 1164 ioctl(fd,FBIOBLANK,1);
1168// close(fd); 1165// close(fd);
1169 } 1166 }
1170} 1167}
1171 1168
1172void PlayListWidget::doUnblank() { 1169void PlayListWidget::doUnblank() {
1173 // this crashes opieplayer with a segfault 1170 // this crashes opieplayer with a segfault
1174// int fd; 1171// int fd;
1175// fd=open("/dev/fb0",O_RDWR); 1172// fd=open("/dev/fb0",O_RDWR);
1176 qDebug("do unblanking"); 1173 qDebug("do unblanking");
1177 if (fd != -1) { 1174 if (fd != -1) {
1178 ioctl(fd,FBIOBLANK,0); 1175 ioctl(fd,FBIOBLANK,0);
1179 close(fd); 1176 close(fd);
1180 } 1177 }
1181 QCopEnvelope h("QPE/System", "setBacklight(int)"); 1178 QCopEnvelope h("QPE/System", "setBacklight(int)");
1182 h <<-3;// v[1]; // -3 Force on 1179 h <<-3;// v[1]; // -3 Force on
1183} 1180}
1184 1181
1185void PlayListWidget::readm3u(const QString &filename) { 1182void PlayListWidget::readm3u(const QString &filename) {
1186 1183
1187 qDebug("m3u filename is "+filename); 1184 qDebug("m3u filename is "+filename);
1188 QFile f(filename); 1185 QFile f(filename);
1189 1186
1190 if(f.open(IO_ReadOnly)) { 1187 if(f.open(IO_ReadOnly)) {
1191 QTextStream t(&f); 1188 QTextStream t(&f);
1192 QString s;//, first, second; 1189 QString s;//, first, second;
1193 int i=0; 1190 int i=0;
1194 while ( !t.atEnd()) { 1191 while ( !t.atEnd()) {
1195// Lview->insertLine(t.readLine(),-1); 1192// Lview->insertLine(t.readLine(),-1);
1196 s=t.readLine(); 1193 s=t.readLine();
1197 if(s.find("#",0,TRUE) == -1) { 1194 if(s.find("#",0,TRUE) == -1) {
1198 if(s.find(" ",0,TRUE) == -1) { // not sure if this is neede since cf uses vfat 1195 if(s.find(" ",0,TRUE) == -1) { // not sure if this is neede since cf uses vfat
1199 if(s.left(2) == "E:" || s.left(2) == "P:") { 1196 if(s.left(2) == "E:" || s.left(2) == "P:") {
1200 s=s.right(s.length()-2); 1197 s=s.right(s.length()-2);
1201 DocLnk lnk( s ); 1198 DocLnk lnk( s );
1202 QFileInfo f(s); 1199 QFileInfo f(s);
1203 QString name = f.baseName(); 1200 QString name = f.baseName();
1204 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); 1201 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
1205 lnk.setName( name); 1202 lnk.setName( name);
1206 s=s.replace( QRegExp("\\"),"/"); 1203 s=s.replace( QRegExp("\\"),"/");
1207 lnk.setFile( s); 1204 lnk.setFile( s);
1208// lnk.setIcon(opieplayer/MPEGPlayer); 1205// lnk.setIcon(opieplayer/MPEGPlayer);
1209 qDebug("add "+name); 1206 qDebug("add "+name);
1210 d->selectedFiles->addToSelection( lnk); 1207 d->selectedFiles->addToSelection( lnk);
1211 } else { // is url 1208 } else { // is url
1212 DocLnk lnk( s); 1209 DocLnk lnk( s);
1213 QString name = s.right( s.length() - 7); 1210 QString name = s.right( s.length() - 7);
1214// name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); 1211// name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
1215 lnk.setName(name); 1212 lnk.setName(name);
1216 lnk.setFile( s+"/"); 1213 lnk.setFile( s+"/");
1217// lnk.setFile( filename); 1214// lnk.setFile( filename);
1218// lnk.setComment( s+"/"); 1215// lnk.setComment( s+"/");
1219 lnk.setType("audio/x-mpegurl"); 1216 lnk.setType("audio/x-mpegurl");
1220// lnk.setIcon( "opieplayer/MPEGPlayer"); 1217// lnk.setIcon( "opieplayer/MPEGPlayer");
1221// qDebug("add "+s); 1218// qDebug("add "+s);
1222 d->selectedFiles->addToSelection( lnk); 1219 d->selectedFiles->addToSelection( lnk);
1223 } 1220 }
1224 i++; 1221 i++;
1225 } 1222 }
1226 } 1223 }
1227 } 1224 }
1228 } 1225 }
1229} 1226}
1230 1227
1231void PlayListWidget::writem3u(const QString &filename) { 1228void PlayListWidget::writem3u(const QString &filename) {
1232 1229
1233} 1230}
1234 1231
1235void PlayListWidget::readPls(const QString &filename) { 1232void PlayListWidget::readPls(const QString &filename) {
1236 1233
1237 qDebug("pls filename is "+filename); 1234 qDebug("pls filename is "+filename);
1238 QFile f(filename); 1235 QFile f(filename);
1239 1236
1240 if(f.open(IO_ReadOnly)) { 1237 if(f.open(IO_ReadOnly)) {
1241 QTextStream t(&f); 1238 QTextStream t(&f);
1242 QString s;//, first, second; 1239 QString s;//, first, second;
1243 int i=0; 1240 int i=0;
1244 while ( !t.atEnd()) { 1241 while ( !t.atEnd()) {
1245 s=t.readLine(); 1242 s=t.readLine();
1246 if(s.left(4) == "File") { 1243 if(s.left(4) == "File") {
1247 s=s.right(s.length() - 6); 1244 s=s.right(s.length() - 6);
1248 qDebug("adding "+s+" to playlist"); 1245 qDebug("adding "+s+" to playlist");
1249// numberofentries=2 1246// numberofentries=2
1250// File1=http 1247// File1=http
1251 // Title 1248 // Title
1252// Length 1249// Length
1253// Version 1250// Version
1254// File2=http 1251// File2=http
1255 1252
1256 s=s.replace( QRegExp("\\"),"/"); 1253 s=s.replace( QRegExp("\\"),"/");
1257// Lview->insertLine(t.readLine(),-1); 1254// Lview->insertLine(t.readLine(),-1);
1258// s=t.readLine(); 1255// s=t.readLine();
1259// s=s.right(s.length()-2); 1256// s=s.right(s.length()-2);
1260 DocLnk lnk( s ); 1257 DocLnk lnk( s );
1261 QFileInfo f(s); 1258 QFileInfo f(s);
1262 QString name = f.baseName(); 1259 QString name = f.baseName();
1263 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); 1260 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
1264// QFileInfo f(s); 1261// QFileInfo f(s);
1265// QString name = f.baseName(); 1262// QString name = f.baseName();
1266// // name = name.left(name.length()-4); 1263// // name = name.left(name.length()-4);
1267// name = name.right(name.findRev("/",0,TRUE)); 1264// name = name.right(name.findRev("/",0,TRUE));
1268 lnk.setName( name); 1265 lnk.setName( name);
1269 lnk.setFile( s+"/"); 1266 lnk.setFile( s+"/");
1270 lnk.setType("audio/x-mpegurl"); 1267 lnk.setType("audio/x-mpegurl");
1271 1268
1272 qDebug("DocLnk add "+name); 1269 qDebug("DocLnk add "+name);
1273 d->selectedFiles->addToSelection( lnk); 1270 d->selectedFiles->addToSelection( lnk);
1274 } 1271 }
1275 } 1272 }
1276 i++; 1273 i++;
1277 } 1274 }
1278} 1275}
1279 1276
diff --git a/core/multimedia/opieplayer/playlistwidget.h b/core/multimedia/opieplayer/playlistwidget.h
index 6569f35..5837ed3 100644
--- a/core/multimedia/opieplayer/playlistwidget.h
+++ b/core/multimedia/opieplayer/playlistwidget.h
@@ -1,125 +1,125 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
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#ifndef PLAY_LIST_WIDGET_H 20#ifndef PLAY_LIST_WIDGET_H
21#define PLAY_LIST_WIDGET_H 21#define PLAY_LIST_WIDGET_H
22 22
23#include <qmainwindow.h> 23#include <qmainwindow.h>
24#include <qpe/applnk.h> 24#include <qpe/applnk.h>
25#include <qtabwidget.h> 25#include <qtabwidget.h>
26#include <qpe/fileselector.h> 26#include <qpe/fileselector.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28 28
29/* #include <qtimer.h> */ 29/* #include <qtimer.h> */
30 30
31 31
32class PlayListWidgetPrivate; 32class PlayListWidgetPrivate;
33class Config; 33class Config;
34class QListViewItem; 34class QListViewItem;
35class QListView; 35class QListView;
36class QPoint; 36class QPoint;
37class QAction; 37class QAction;
38class QLabel; 38class QLabel;
39 39
40class PlayListWidget : public QMainWindow { 40class PlayListWidget : public QMainWindow {
41 Q_OBJECT 41 Q_OBJECT
42public: 42public:
43 PlayListWidget( QWidget* parent=0, const char* name=0, WFlags fl=0 ); 43 PlayListWidget( QWidget* parent=0, const char* name=0, WFlags fl=0 );
44 ~PlayListWidget(); 44 ~PlayListWidget();
45 QTabWidget * tabWidget; 45 QTabWidget * tabWidget;
46 QAction *fullScreenButton, *scaleButton; 46 QAction *fullScreenButton, *scaleButton;
47 DocLnkSet files; 47 DocLnkSet files;
48 DocLnkSet vFiles; 48 DocLnkSet vFiles;
49 QListView *audioView, *videoView, *playlistView; 49 QListView *audioView, *videoView, *playlistView;
50 QLabel *libString; 50 QLabel *libString;
51 bool fromSetDocument; 51 bool fromSetDocument;
52 bool insanityBool; 52 bool insanityBool;
53 QString setDocFileRef; 53 QString setDocFileRef;
54 // retrieve the current playlist entry (media file link) 54 // retrieve the current playlist entry (media file link)
55 const DocLnk *current(); 55 const DocLnk *current();
56 void useSelectedDocument(); 56 void useSelectedDocument();
57/* QTimer * menuTimer; */ 57/* QTimer * menuTimer; */
58 FileSelector* playLists; 58 FileSelector* playLists;
59 QPushButton *tbDeletePlaylist; 59 QPushButton *tbDeletePlaylist;
60 int fd; 60 int fd, selected;
61public slots: 61public slots:
62 bool first(); 62 bool first();
63 bool last(); 63 bool last();
64 bool next(); 64 bool next();
65 bool prev(); 65 bool prev();
66/* void setFullScreen(); */ 66/* void setFullScreen(); */
67/* void setScaled(); */ 67/* void setScaled(); */
68protected: 68protected:
69/* void contentsMousePressEvent( QMouseEvent * e ); */ 69/* void contentsMousePressEvent( QMouseEvent * e ); */
70/* void contentsMouseReleaseEvent( QMouseEvent * e ); */ 70/* void contentsMouseReleaseEvent( QMouseEvent * e ); */
71void keyReleaseEvent( QKeyEvent *e); 71void keyReleaseEvent( QKeyEvent *e);
72void keyPressEvent( QKeyEvent *e); 72void keyPressEvent( QKeyEvent *e);
73private: 73private:
74 bool audioScan, videoScan; 74 bool audioScan, videoScan;
75 void doBlank(); 75 void doBlank();
76 void doUnblank(); 76 void doUnblank();
77 void readm3u(const QString &); 77 void readm3u(const QString &);
78 void writem3u(const QString &); 78 void writem3u(const QString &);
79 void readPls(const QString &); 79 void readPls(const QString &);
80 80
81 81
82 void initializeStates(); 82 void initializeStates();
83 void readConfig( Config& cfg ); 83 void readConfig( Config& cfg );
84 void writeConfig( Config& cfg ) const; 84 void writeConfig( Config& cfg ) const;
85 PlayListWidgetPrivate *d; // Private implementation data 85 PlayListWidgetPrivate *d; // Private implementation data
86 void populateAudioView(); 86 void populateAudioView();
87 void populateVideoView(); 87 void populateVideoView();
88private slots: 88private slots:
89 void scanForAudio(); 89 void scanForAudio();
90 void scanForVideo(); 90 void scanForVideo();
91 void openFile(); 91 void openFile();
92 void setDocument( const QString& fileref ); 92 void setDocument( const QString& fileref );
93 void addToSelection( const DocLnk& ); // Add a media file to the playlist 93 void addToSelection( const DocLnk& ); // Add a media file to the playlist
94 void addToSelection( QListViewItem* ); // Add a media file to the playlist 94 void addToSelection( QListViewItem* ); // Add a media file to the playlist
95 void setActiveWindow(); // need to handle this to show the right view 95 void setActiveWindow(); // need to handle this to show the right view
96 void setPlaylist( bool ); // Show/Hide the playlist 96 void setPlaylist( bool ); // Show/Hide the playlist
97 void setView( char ); 97 void setView( char );
98 void clearList(); 98 void clearList();
99 void addAllToList(); 99 void addAllToList();
100 void addAllMusicToList(); 100 void addAllMusicToList();
101 void addAllVideoToList(); 101 void addAllVideoToList();
102 void saveList(); // Save the playlist 102 void saveList(); // Save the playlist
103 void loadList( const DocLnk &); // Load a playlist 103 void loadList( const DocLnk &); // Load a playlist
104 void playIt( QListViewItem *); 104 void playIt( QListViewItem *);
105 105
106 void btnPlay(bool); 106 void btnPlay(bool);
107 void deletePlaylist(); 107 void deletePlaylist();
108 void addSelected(); 108 void addSelected();
109 void removeSelected(); 109 void removeSelected();
110 void tabChanged(QWidget*); 110 void tabChanged(QWidget*);
111 void viewPressed( int, QListViewItem *, const QPoint&, int); 111 void viewPressed( int, QListViewItem *, const QPoint&, int);
112 void playlistViewPressed( int, QListViewItem *, const QPoint&, int); 112 void playlistViewPressed( int, QListViewItem *, const QPoint&, int);
113 void playSelected(); 113 void playSelected();
114 void listDelete(); 114 void listDelete();
115 115
116protected slots: 116protected slots:
117/* void cancelMenuTimer(); */ 117/* void cancelMenuTimer(); */
118/* void showFileMenu(); */ 118/* void showFileMenu(); */
119 119
120 120
121}; 121};
122 122
123 123
124#endif // PLAY_LIST_WIDGET_H 124#endif // PLAY_LIST_WIDGET_H
125 125