summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/playlistwidget.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp
index d7447b7..200ec16 100644
--- a/core/multimedia/opieplayer/playlistwidget.cpp
+++ b/core/multimedia/opieplayer/playlistwidget.cpp
@@ -1,1276 +1,1280 @@
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 addToSelection( audioView->currentItem() ); 843 addToSelection( audioView->currentItem() );
844 mediaPlayerState->setPlaying(b); 844 mediaPlayerState->setPlaying(b);
845 d->selectedFiles->removeSelected( ); 845 d->selectedFiles->removeSelected( );
846 tabWidget->setCurrentPage(1); 846 tabWidget->setCurrentPage(1);
847 d->selectedFiles->unSelect(); 847 d->selectedFiles->unSelect();
848 insanityBool=FALSE; 848 insanityBool=FALSE;
849// audioView->clearSelection(); 849// audioView->clearSelection();
850 } 850 }
851 break; 851 break;
852 case 2: 852 case 2:
853 { 853 {
854 addToSelection( videoView->currentItem() ); 854 addToSelection( videoView->currentItem() );
855 mediaPlayerState->setPlaying(b); 855 mediaPlayerState->setPlaying(b);
856 qApp->processEvents(); 856 qApp->processEvents();
857 d->selectedFiles->removeSelected( ); 857 d->selectedFiles->removeSelected( );
858 tabWidget->setCurrentPage(2); 858 tabWidget->setCurrentPage(2);
859 d->selectedFiles->unSelect(); 859 d->selectedFiles->unSelect();
860 insanityBool=FALSE; 860 insanityBool=FALSE;
861// videoView->clearSelection(); 861// videoView->clearSelection();
862 } 862 }
863 break; 863 break;
864 }; 864 };
865} 865}
866 866
867void PlayListWidget::deletePlaylist() { 867void PlayListWidget::deletePlaylist() {
868 switch( QMessageBox::information( this, (tr("Remove Playlist?")), 868 switch( QMessageBox::information( this, (tr("Remove Playlist?")),
869 (tr("You really want to delete\nthis playlist?")), 869 (tr("You really want to delete\nthis playlist?")),
870 (tr("Yes")), (tr("No")), 0 )){ 870 (tr("Yes")), (tr("No")), 0 )){
871 case 0: // Yes clicked, 871 case 0: // Yes clicked,
872 QFile().remove(playLists->selected()->file()); 872 QFile().remove(playLists->selected()->file());
873 QFile().remove(playLists->selected()->linkFile()); 873 QFile().remove(playLists->selected()->linkFile());
874 playLists->reread(); 874 playLists->reread();
875 break; 875 break;
876 case 1: // Cancel 876 case 1: // Cancel
877 break; 877 break;
878 }; 878 };
879} 879}
880 880
881void PlayListWidget::viewPressed( int mouse, QListViewItem *item, const QPoint& point, int i) 881void PlayListWidget::viewPressed( int mouse, QListViewItem *item, const QPoint& point, int i)
882{ 882{
883 switch (mouse) { 883 switch (mouse) {
884 case 1: 884 case 1:
885 break; 885 break;
886 case 2:{ 886 case 2:{
887 887
888 QPopupMenu m; 888 QPopupMenu m;
889 m.insertItem( tr( "Play" ), this, SLOT( playSelected() )); 889 m.insertItem( tr( "Play" ), this, SLOT( playSelected() ));
890 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() )); 890 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() ));
891 m.insertSeparator(); 891 m.insertSeparator();
892 if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() ) 892 if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() )
893 m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); 893 m.insertItem( tr( "Properties" ), this, SLOT( listDelete() ));
894 894
895 m.exec( QCursor::pos() ); 895 m.exec( QCursor::pos() );
896 } 896 }
897 break; 897 break;
898 }; 898 };
899} 899}
900 900
901void PlayListWidget::playSelected() 901void PlayListWidget::playSelected()
902{ 902{
903 btnPlay( TRUE); 903 btnPlay( TRUE);
904// d->selectedFiles->unSelect(); 904// d->selectedFiles->unSelect();
905} 905}
906 906
907void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *item, const QPoint& point, int i) 907void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *item, const QPoint& point, int i)
908{ 908{
909 switch (mouse) { 909 switch (mouse) {
910 case 1: 910 case 1:
911 911
912 break; 912 break;
913 case 2:{ 913 case 2:{
914 QPopupMenu m; 914 QPopupMenu m;
915 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() )); 915 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() ));
916 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() )); 916 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() ));
917// m.insertSeparator(); 917// m.insertSeparator();
918// m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); 918// m.insertItem( tr( "Properties" ), this, SLOT( listDelete() ));
919 m.exec( QCursor::pos() ); 919 m.exec( QCursor::pos() );
920 } 920 }
921 break; 921 break;
922 }; 922 };
923 923
924} 924}
925 925
926void PlayListWidget::listDelete() { 926void PlayListWidget::listDelete() {
927 Config cfg( "OpiePlayer" ); 927 Config cfg( "OpiePlayer" );
928 cfg.setGroup("PlayList"); 928 cfg.setGroup("PlayList");
929 QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); 929 QString currentPlaylist = cfg.readEntry("CurrentPlaylist","");
930 QString file; 930 QString file;
931 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 931 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
932 switch ( tabWidget->currentPageIndex()) { 932 switch ( tabWidget->currentPageIndex()) {
933 case 0: 933 case 0:
934 break; 934 break;
935 case 1: 935 case 1:
936 { 936 {
937 file = audioView->selectedItem()->text(0); 937 file = audioView->selectedItem()->text(0);
938// Global::findDocuments(&files, "audio/*"); 938// Global::findDocuments(&files, "audio/*");
939// AppLnkSet appFiles; 939// AppLnkSet appFiles;
940 QListIterator<DocLnk> dit( files.children() ); 940 QListIterator<DocLnk> dit( files.children() );
941 for ( ; dit.current(); ++dit ) { 941 for ( ; dit.current(); ++dit ) {
942 if( dit.current()->name() == file) { 942 if( dit.current()->name() == file) {
943// qDebug(file); 943// qDebug(file);
944 LnkProperties prop( dit.current() ); 944 LnkProperties prop( dit.current() );
945// connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); 945// connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *)));
946 prop.showMaximized(); 946 prop.showMaximized();
947 prop.exec(); 947 prop.exec();
948 } 948 }
949 } 949 }
950 populateAudioView(); 950 populateAudioView();
951 } 951 }
952 break; 952 break;
953 case 2: 953 case 2:
954 { 954 {
955// file = videoView->selectedItem()->text(0); 955// file = videoView->selectedItem()->text(0);
956// for ( int i = 0; i < noOfFiles; i++ ) { 956// for ( int i = 0; i < noOfFiles; i++ ) {
957// QString entryName; 957// QString entryName;
958// entryName.sprintf( "File%i", i + 1 ); 958// entryName.sprintf( "File%i", i + 1 );
959// QString linkFile = cfg.readEntry( entryName ); 959// QString linkFile = cfg.readEntry( entryName );
960// AppLnk lnk( AppLnk(linkFile)); 960// AppLnk lnk( AppLnk(linkFile));
961// if( lnk.name() == file ) { 961// if( lnk.name() == file ) {
962// LnkProperties prop( &lnk); 962// LnkProperties prop( &lnk);
963// // connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); 963// // connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *)));
964// prop.showMaximized(); 964// prop.showMaximized();
965// prop.exec(); 965// prop.exec();
966// } 966// }
967// } 967// }
968 } 968 }
969 break; 969 break;
970 }; 970 };
971} 971}
972 972
973void PlayListWidget::scanForAudio() { 973void PlayListWidget::scanForAudio() {
974 qDebug("scan for audio"); 974 qDebug("scan for audio");
975 files.detachChildren(); 975 files.detachChildren();
976 QListIterator<DocLnk> sdit( files.children() ); 976 QListIterator<DocLnk> sdit( files.children() );
977 for ( ; sdit.current(); ++sdit ) { 977 for ( ; sdit.current(); ++sdit ) {
978 delete sdit.current(); 978 delete sdit.current();
979 } 979 }
980 Global::findDocuments(&files, "audio/*"); 980 Global::findDocuments(&files, "audio/*");
981 audioScan = TRUE; 981 audioScan = TRUE;
982} 982}
983void PlayListWidget::scanForVideo() { 983void PlayListWidget::scanForVideo() {
984 qDebug("scan for video"); 984 qDebug("scan for video");
985 vFiles.detachChildren(); 985 vFiles.detachChildren();
986 QListIterator<DocLnk> sdit( vFiles.children() ); 986 QListIterator<DocLnk> sdit( vFiles.children() );
987 for ( ; sdit.current(); ++sdit ) { 987 for ( ; sdit.current(); ++sdit ) {
988 delete sdit.current(); 988 delete sdit.current();
989 } 989 }
990 Global::findDocuments(&vFiles, "video/*"); 990 Global::findDocuments(&vFiles, "video/*");
991 videoScan = TRUE; 991 videoScan = TRUE;
992} 992}
993 993
994void PlayListWidget::populateAudioView() { 994void PlayListWidget::populateAudioView() {
995 995
996 audioView->clear(); 996 audioView->clear();
997 StorageInfo storageInfo; 997 StorageInfo storageInfo;
998 const QList<FileSystem> &fs = storageInfo.fileSystems(); 998 const QList<FileSystem> &fs = storageInfo.fileSystems();
999 if(!audioScan) scanForAudio(); 999 if(!audioScan) scanForAudio();
1000 1000
1001 QListIterator<DocLnk> dit( files.children() ); 1001 QListIterator<DocLnk> dit( files.children() );
1002 QListIterator<FileSystem> it ( fs ); 1002 QListIterator<FileSystem> it ( fs );
1003 1003
1004 QString storage; 1004 QString storage;
1005 for ( ; dit.current(); ++dit ) { 1005 for ( ; dit.current(); ++dit ) {
1006 for( ; it.current(); ++it ){ 1006 for( ; it.current(); ++it ){
1007 const QString name = (*it)->name(); 1007 const QString name = (*it)->name();
1008 const QString path = (*it)->path(); 1008 const QString path = (*it)->path();
1009 if(dit.current()->file().find(path) != -1 ) storage=name; 1009 if(dit.current()->file().find(path) != -1 ) storage=name;
1010 } 1010 }
1011 1011
1012 QListViewItem * newItem; 1012 QListViewItem * newItem;
1013 if ( QFile( dit.current()->file()).exists() ) { 1013 if ( QFile( dit.current()->file()).exists() ) {
1014// qDebug(dit.current()->name()); 1014// qDebug(dit.current()->name());
1015 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), 1015 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(),
1016 QString::number( QFile( dit.current()->file()).size() ), storage); 1016 QString::number( QFile( dit.current()->file()).size() ), storage);
1017 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" )); 1017 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" ));
1018 } 1018 }
1019 } 1019 }
1020 1020
1021} 1021}
1022 1022
1023void PlayListWidget::populateVideoView() { 1023void PlayListWidget::populateVideoView() {
1024 videoView->clear(); 1024 videoView->clear();
1025 StorageInfo storageInfo; 1025 StorageInfo storageInfo;
1026 const QList<FileSystem> &fs = storageInfo.fileSystems(); 1026 const QList<FileSystem> &fs = storageInfo.fileSystems();
1027 1027
1028 if(!videoScan ) scanForVideo(); 1028 if(!videoScan ) scanForVideo();
1029 1029
1030 QListIterator<DocLnk> Vdit( vFiles.children() ); 1030 QListIterator<DocLnk> Vdit( vFiles.children() );
1031 QListIterator<FileSystem> it ( fs ); 1031 QListIterator<FileSystem> it ( fs );
1032 videoView->clear(); 1032 videoView->clear();
1033 QString storage; 1033 QString storage;
1034 for ( ; Vdit.current(); ++Vdit ) { 1034 for ( ; Vdit.current(); ++Vdit ) {
1035 for( ; it.current(); ++it ){ 1035 for( ; it.current(); ++it ){
1036 const QString name = (*it)->name(); 1036 const QString name = (*it)->name();
1037 const QString path = (*it)->path(); 1037 const QString path = (*it)->path();
1038 if( Vdit.current()->file().find(path) != -1 ) storage=name; 1038 if( Vdit.current()->file().find(path) != -1 ) storage=name;
1039 } 1039 }
1040 1040
1041 QListViewItem * newItem; 1041 QListViewItem * newItem;
1042 if ( QFile( Vdit.current()->file()).exists() ) { 1042 if ( QFile( Vdit.current()->file()).exists() ) {
1043 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), 1043 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(),
1044 QString::number( QFile( Vdit.current()->file()).size() ), storage); 1044 QString::number( QFile( Vdit.current()->file()).size() ), storage);
1045 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/videofile" )); 1045 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/videofile" ));
1046 } 1046 }
1047 } 1047 }
1048} 1048}
1049 1049
1050void PlayListWidget::openFile() { 1050void PlayListWidget::openFile() {
1051 QString filename, name; 1051 QString filename, name;
1052 InputDialog *fileDlg; 1052 InputDialog *fileDlg;
1053 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); 1053 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0);
1054 fileDlg->exec(); 1054 fileDlg->exec();
1055 if( fileDlg->result() == 1 ) { 1055 if( fileDlg->result() == 1 ) {
1056 filename = fileDlg->LineEdit1->text(); 1056 filename = fileDlg->LineEdit1->text();
1057// http://205.188.234.129:8030 1057// http://205.188.234.129:8030
1058// http://66.28.68.70:8000 1058// http://66.28.68.70:8000
1059 qDebug("Selected filename is "+filename); 1059 filename.replace(QRegExp("%20")," ");
1060
1061 qDebug("Selected filename is "+filename);
1060 if(filename.right(3) == "m3u") 1062 if(filename.right(3) == "m3u")
1061 readm3u( filename); 1063 readm3u( filename);
1062 else if(filename.right(3) == "pls") 1064 else if(filename.right(3) == "pls")
1063 readPls( filename); 1065 readPls( filename);
1064 else { 1066 else {
1065 DocLnk lnk; 1067 DocLnk lnk;
1066 1068
1067 lnk.setName(filename); //sets file name 1069 lnk.setName(filename); //sets file name
1068 if(filename.right(1) != "/" && filename.right(3) != "mp3" && filename.right(3) != "MP3") 1070 if(filename.right(1) != "/" && filename.right(3) != "mp3" && filename.right(3) != "MP3")
1069 filename += "/"; 1071 filename += "/";
1070 lnk.setFile(filename); //sets File property 1072 lnk.setFile(filename); //sets File property
1071 1073
1072 lnk.setType("audio/x-mpegurl"); 1074 lnk.setType("audio/x-mpegurl");
1073 lnk.setExec("opieplayer"); 1075 lnk.setExec("opieplayer");
1074 lnk.setIcon("opieplayer/MPEGPlayer"); 1076 lnk.setIcon("opieplayer/MPEGPlayer");
1075 1077
1076 if(!lnk.writeLink()) 1078 if(!lnk.writeLink())
1077 qDebug("Writing doclink did not work"); 1079 qDebug("Writing doclink did not work");
1078 d->selectedFiles->addToSelection( lnk); 1080 d->selectedFiles->addToSelection( lnk);
1079// if(fileDlg2) 1081// if(fileDlg2)
1080// delete fileDlg2; 1082// delete fileDlg2;
1081 } 1083 }
1082 } 1084 }
1083 if(fileDlg) 1085 if(fileDlg)
1084 delete fileDlg; 1086 delete fileDlg;
1085} 1087}
1086 1088
1087void PlayListWidget::keyReleaseEvent( QKeyEvent *e) 1089void PlayListWidget::keyReleaseEvent( QKeyEvent *e)
1088{ 1090{
1089 switch ( e->key() ) { 1091 switch ( e->key() ) {
1090////////////////////////////// Zaurus keys 1092////////////////////////////// Zaurus keys
1091 case Key_F9: //activity 1093 case Key_F9: //activity
1092// if(audioUI->isHidden()) 1094// if(audioUI->isHidden())
1093// audioUI->showMaximized(); 1095// audioUI->showMaximized();
1094 break; 1096 break;
1095 case Key_F10: //contacts 1097 case Key_F10: //contacts
1096// if( videoUI->isHidden()) 1098// if( videoUI->isHidden())
1097// videoUI->showMaximized(); 1099// videoUI->showMaximized();
1098 break; 1100 break;
1099 case Key_F11: //menu 1101 case Key_F11: //menu
1100 break; 1102 break;
1101 case Key_F12: //home 1103 case Key_F12: //home
1102// doBlank(); 1104// doBlank();
1103 break; 1105 break;
1104 case Key_F13: //mail 1106 case Key_F13: //mail
1105// doUnblank(); 1107// doUnblank();
1106 break; 1108 break;
1107 case Key_Q: //add to playlist 1109 case Key_Q: //add to playlist
1108 qDebug("Add"); 1110 qDebug("Add");
1109 addSelected(); 1111 addSelected();
1110 break; 1112 break;
1111 case Key_R: //remove from playlist 1113 case Key_R: //remove from playlist
1112 removeSelected(); 1114 removeSelected();
1113 break; 1115 break;
1114// case Key_P: //play 1116// case Key_P: //play
1115// qDebug("Play"); 1117// qDebug("Play");
1116// playSelected(); 1118// playSelected();
1117// break; 1119// break;
1118 case Key_Space: 1120 case Key_Space:
1119 qDebug("Play"); 1121 qDebug("Play");
1120// playSelected(); puh 1122// playSelected(); puh
1121 break; 1123 break;
1122 case Key_1: 1124 case Key_1:
1123 tabWidget->setCurrentPage(0); 1125 tabWidget->setCurrentPage(0);
1124 break; 1126 break;
1125 case Key_2: 1127 case Key_2:
1126 tabWidget->setCurrentPage(1); 1128 tabWidget->setCurrentPage(1);
1127 break; 1129 break;
1128 case Key_3: 1130 case Key_3:
1129 tabWidget->setCurrentPage(2); 1131 tabWidget->setCurrentPage(2);
1130 break; 1132 break;
1131 case Key_4: 1133 case Key_4:
1132 tabWidget->setCurrentPage(3); 1134 tabWidget->setCurrentPage(3);
1133 break; 1135 break;
1134 } 1136 }
1135} 1137}
1136 1138
1137void PlayListWidget::keyPressEvent( QKeyEvent *e) 1139void PlayListWidget::keyPressEvent( QKeyEvent *e)
1138{ 1140{
1139// qDebug("Key press"); 1141// qDebug("Key press");
1140// switch ( e->key() ) { 1142// switch ( e->key() ) {
1141// ////////////////////////////// Zaurus keys 1143// ////////////////////////////// Zaurus keys
1142// case Key_A: //add to playlist 1144// case Key_A: //add to playlist
1143// qDebug("Add"); 1145// qDebug("Add");
1144// addSelected(); 1146// addSelected();
1145// break; 1147// break;
1146// case Key_R: //remove from playlist 1148// case Key_R: //remove from playlist
1147// removeSelected(); 1149// removeSelected();
1148// break; 1150// break;
1149// case Key_P: //play 1151// case Key_P: //play
1150// qDebug("Play"); 1152// qDebug("Play");
1151// playSelected(); 1153// playSelected();
1152// break; 1154// break;
1153// case Key_Space: 1155// case Key_Space:
1154// qDebug("Play"); 1156// qDebug("Play");
1155// playSelected(); 1157// playSelected();
1156// break; 1158// break;
1157// } 1159// }
1158} 1160}
1159 1161
1160void PlayListWidget::doBlank() { 1162void PlayListWidget::doBlank() {
1161 qDebug("do blanking"); 1163 qDebug("do blanking");
1162 fd=open("/dev/fb0",O_RDWR); 1164 fd=open("/dev/fb0",O_RDWR);
1163 if (fd != -1) { 1165 if (fd != -1) {
1164 ioctl(fd,FBIOBLANK,1); 1166 ioctl(fd,FBIOBLANK,1);
1165// close(fd); 1167// close(fd);
1166 } 1168 }
1167} 1169}
1168 1170
1169void PlayListWidget::doUnblank() { 1171void PlayListWidget::doUnblank() {
1170 // this crashes opieplayer with a segfault 1172 // this crashes opieplayer with a segfault
1171// int fd; 1173// int fd;
1172// fd=open("/dev/fb0",O_RDWR); 1174// fd=open("/dev/fb0",O_RDWR);
1173 qDebug("do unblanking"); 1175 qDebug("do unblanking");
1174 if (fd != -1) { 1176 if (fd != -1) {
1175 ioctl(fd,FBIOBLANK,0); 1177 ioctl(fd,FBIOBLANK,0);
1176 close(fd); 1178 close(fd);
1177 } 1179 }
1178 QCopEnvelope h("QPE/System", "setBacklight(int)"); 1180 QCopEnvelope h("QPE/System", "setBacklight(int)");
1179 h <<-3;// v[1]; // -3 Force on 1181 h <<-3;// v[1]; // -3 Force on
1180} 1182}
1181 1183
1182void PlayListWidget::readm3u(const QString &filename) { 1184void PlayListWidget::readm3u(const QString &filename) {
1183 1185
1184 qDebug("m3u filename is "+filename); 1186 qDebug("m3u filename is "+filename);
1185 QFile f(filename); 1187 QFile f(filename);
1186 1188
1187 if(f.open(IO_ReadOnly)) { 1189 if(f.open(IO_ReadOnly)) {
1188 QTextStream t(&f); 1190 QTextStream t(&f);
1189 QString s;//, first, second; 1191 QString s;//, first, second;
1190 int i=0; 1192 int i=0;
1191 while ( !t.atEnd()) { 1193 while ( !t.atEnd()) {
1192// Lview->insertLine(t.readLine(),-1); 1194// Lview->insertLine(t.readLine(),-1);
1193 s=t.readLine(); 1195 s=t.readLine();
1194 if(s.find("#",0,TRUE) == -1) { 1196 if(s.find("#",0,TRUE) == -1) {
1195 if(s.find(" ",0,TRUE) == -1) { // not sure if this is neede since cf uses vfat 1197 if(s.find(" ",0,TRUE) == -1) { // not sure if this is neede since cf uses vfat
1196 if(s.left(2) == "E:" || s.left(2) == "P:") { 1198 if(s.left(2) == "E:" || s.left(2) == "P:") {
1197 s=s.right(s.length()-2); 1199 s=s.right(s.length()-2);
1198 DocLnk lnk( s ); 1200 DocLnk lnk( s );
1199 QFileInfo f(s); 1201 QFileInfo f(s);
1200 QString name = f.baseName(); 1202 QString name = f.baseName();
1201 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); 1203 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
1202 lnk.setName( name); 1204 lnk.setName( name);
1203 s=s.replace( QRegExp("\\"),"/"); 1205 s=s.replace( QRegExp("\\"),"/");
1204 lnk.setFile( s); 1206 lnk.setFile( s);
1205// lnk.setIcon(opieplayer/MPEGPlayer); 1207// lnk.setIcon(opieplayer/MPEGPlayer);
1206 qDebug("add "+name); 1208 qDebug("add "+name);
1207 d->selectedFiles->addToSelection( lnk); 1209 d->selectedFiles->addToSelection( lnk);
1208 } else { // is url 1210 } else { // is url
1211 s.replace(QRegExp("%20")," ");
1209 DocLnk lnk( s); 1212 DocLnk lnk( s);
1210 QString name = s.right( s.length() - 7); 1213 QString name = s.right( s.length() - 7);
1211// name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); 1214// name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
1212 lnk.setName(name); 1215 lnk.setName(name);
1213 lnk.setFile( s+"/"); 1216 lnk.setFile( s+"/");
1214// lnk.setFile( filename); 1217// lnk.setFile( filename);
1215// lnk.setComment( s+"/"); 1218// lnk.setComment( s+"/");
1216 lnk.setType("audio/x-mpegurl"); 1219 lnk.setType("audio/x-mpegurl");
1217// lnk.setIcon( "opieplayer/MPEGPlayer"); 1220// lnk.setIcon( "opieplayer/MPEGPlayer");
1218// qDebug("add "+s); 1221// qDebug("add "+s);
1219 d->selectedFiles->addToSelection( lnk); 1222 d->selectedFiles->addToSelection( lnk);
1220 } 1223 }
1221 i++; 1224 i++;
1222 } 1225 }
1223 } 1226 }
1224 } 1227 }
1225 } 1228 }
1226} 1229}
1227 1230
1228void PlayListWidget::writem3u(const QString &filename) { 1231void PlayListWidget::writem3u(const QString &filename) {
1229 1232
1230} 1233}
1231 1234
1232void PlayListWidget::readPls(const QString &filename) { 1235void PlayListWidget::readPls(const QString &filename) {
1233 1236
1234 qDebug("pls filename is "+filename); 1237 qDebug("pls filename is "+filename);
1235 QFile f(filename); 1238 QFile f(filename);
1236 1239
1237 if(f.open(IO_ReadOnly)) { 1240 if(f.open(IO_ReadOnly)) {
1238 QTextStream t(&f); 1241 QTextStream t(&f);
1239 QString s;//, first, second; 1242 QString s;//, first, second;
1240 int i=0; 1243 int i=0;
1241 while ( !t.atEnd()) { 1244 while ( !t.atEnd()) {
1242 s=t.readLine(); 1245 s=t.readLine();
1243 if(s.left(4) == "File") { 1246 if(s.left(4) == "File") {
1244 s=s.right(s.length() - 6); 1247 s=s.right(s.length() - 6);
1248 s.replace(QRegExp("%20")," ");
1245 qDebug("adding "+s+" to playlist"); 1249 qDebug("adding "+s+" to playlist");
1246// numberofentries=2 1250// numberofentries=2
1247// File1=http 1251// File1=http
1248 // Title 1252 // Title
1249// Length 1253// Length
1250// Version 1254// Version
1251// File2=http 1255// File2=http
1252 1256
1253 s=s.replace( QRegExp("\\"),"/"); 1257 s=s.replace( QRegExp("\\"),"/");
1254// Lview->insertLine(t.readLine(),-1); 1258// Lview->insertLine(t.readLine(),-1);
1255// s=t.readLine(); 1259// s=t.readLine();
1256// s=s.right(s.length()-2); 1260// s=s.right(s.length()-2);
1257 DocLnk lnk( s ); 1261 DocLnk lnk( s );
1258 QFileInfo f(s); 1262 QFileInfo f(s);
1259 QString name = f.baseName(); 1263 QString name = f.baseName();
1260 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); 1264 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
1261// QFileInfo f(s); 1265// QFileInfo f(s);
1262// QString name = f.baseName(); 1266// QString name = f.baseName();
1263// // name = name.left(name.length()-4); 1267// // name = name.left(name.length()-4);
1264// name = name.right(name.findRev("/",0,TRUE)); 1268// name = name.right(name.findRev("/",0,TRUE));
1265 lnk.setName( name); 1269 lnk.setName( name);
1266 lnk.setFile( s+"/"); 1270 lnk.setFile( s+"/");
1267 lnk.setType("audio/x-mpegurl"); 1271 lnk.setType("audio/x-mpegurl");
1268 1272
1269 qDebug("DocLnk add "+name); 1273 qDebug("DocLnk add "+name);
1270 d->selectedFiles->addToSelection( lnk); 1274 d->selectedFiles->addToSelection( lnk);
1271 } 1275 }
1272 } 1276 }
1273 i++; 1277 i++;
1274 } 1278 }
1275} 1279}
1276 1280