summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp12
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.h3
2 files changed, 15 insertions, 0 deletions
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp
index d1506db..9918eeb 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp
@@ -7,96 +7,97 @@
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU General Public 12:`=1 )Y*s>-.--   : the terms of the GNU General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; General Public License for more 22..}^=.=       =       ; General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = General Public License along with 26  -_. . .   )=.  = General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#include <qpe/qpetoolbar.h> 34#include <qpe/qpetoolbar.h>
35#include <qpe/qpeapplication.h> 35#include <qpe/qpeapplication.h>
36#include <qpe/storage.h> 36#include <qpe/storage.h>
37#include <qpe/mimetype.h> 37#include <qpe/mimetype.h>
38#include <qpe/global.h> 38#include <qpe/global.h>
39#include <qpe/resource.h> 39#include <qpe/resource.h>
40 40
41#include <qdatetime.h> 41#include <qdatetime.h>
42#include <qdir.h> 42#include <qdir.h>
43#include <qmessagebox.h> 43#include <qmessagebox.h>
44#include <qregexp.h> 44#include <qregexp.h>
45#include <qtextstream.h> 45#include <qtextstream.h>
46 46
47#include "playlistselection.h" 47#include "playlistselection.h"
48#include "playlistwidget.h" 48#include "playlistwidget.h"
49#include "mediaplayerstate.h" 49#include "mediaplayerstate.h"
50#include "inputDialog.h" 50#include "inputDialog.h"
51#include "om3u.h" 51#include "om3u.h"
52 52
53//only needed for the random play 53//only needed for the random play
54#include <stdlib.h> 54#include <stdlib.h>
55#include <assert.h>
55 56
56#include "audiowidget.h" 57#include "audiowidget.h"
57#include "videowidget.h" 58#include "videowidget.h"
58 59
59extern MediaPlayerState *mediaPlayerState; 60extern MediaPlayerState *mediaPlayerState;
60// extern AudioWidget *audioUI; 61// extern AudioWidget *audioUI;
61// extern VideoWidget *videoUI; 62// extern VideoWidget *videoUI;
62 63
63QString audioMimes ="audio/mpeg;audio/x-wav;audio/x-ogg"; 64QString audioMimes ="audio/mpeg;audio/x-wav;audio/x-ogg";
64// no m3u's here please 65// no m3u's here please
65 66
66PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) 67PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
67 : PlayListWidgetGui( parent, name, fl ) { 68 : PlayListWidgetGui( parent, name, fl ) {
68 69
69 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), 70 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ),
70 "opieplayer2/add_to_playlist", 71 "opieplayer2/add_to_playlist",
71 this , SLOT(addSelected() ) ); 72 this , SLOT(addSelected() ) );
72 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), 73 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ),
73 "opieplayer2/remove_from_playlist", 74 "opieplayer2/remove_from_playlist",
74 this , SLOT(removeSelected() ) ); 75 this , SLOT(removeSelected() ) );
75 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play", 76 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play",
76 this , SLOT( btnPlay( bool) ), TRUE ); 77 this , SLOT( btnPlay( bool) ), TRUE );
77 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle", 78 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle",
78 mediaPlayerState, SLOT( setShuffled( bool ) ), TRUE ); 79 mediaPlayerState, SLOT( setShuffled( bool ) ), TRUE );
79 d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop", 80 d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop",
80 mediaPlayerState, SLOT( setLooping( bool ) ), TRUE ); 81 mediaPlayerState, SLOT( setLooping( bool ) ), TRUE );
81 82
82 (void)new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); 83 (void)new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) );
83 (void)new MenuItem( pmPlayList, tr( "Add all audio files" ), 84 (void)new MenuItem( pmPlayList, tr( "Add all audio files" ),
84 this, SLOT( addAllMusicToList() ) ); 85 this, SLOT( addAllMusicToList() ) );
85 (void)new MenuItem( pmPlayList, tr( "Add all video files" ), 86 (void)new MenuItem( pmPlayList, tr( "Add all video files" ),
86 this, SLOT( addAllVideoToList() ) ); 87 this, SLOT( addAllVideoToList() ) );
87 (void)new MenuItem( pmPlayList, tr( "Add all files" ), 88 (void)new MenuItem( pmPlayList, tr( "Add all files" ),
88 this, SLOT( addAllToList() ) ); 89 this, SLOT( addAllToList() ) );
89 pmPlayList->insertSeparator(-1); 90 pmPlayList->insertSeparator(-1);
90// (void)new MenuItem( pmPlayList, tr( "Save PlayList" ), 91// (void)new MenuItem( pmPlayList, tr( "Save PlayList" ),
91// this, SLOT( saveList() ) ); 92// this, SLOT( saveList() ) );
92 (void)new MenuItem( pmPlayList, tr( "Save Playlist" ), 93 (void)new MenuItem( pmPlayList, tr( "Save Playlist" ),
93 this, SLOT(writem3u() ) ); 94 this, SLOT(writem3u() ) );
94 pmPlayList->insertSeparator(-1); 95 pmPlayList->insertSeparator(-1);
95 (void)new MenuItem( pmPlayList, tr( "Open File or URL" ), 96 (void)new MenuItem( pmPlayList, tr( "Open File or URL" ),
96 this,SLOT( openFile() ) ); 97 this,SLOT( openFile() ) );
97 pmPlayList->insertSeparator(-1); 98 pmPlayList->insertSeparator(-1);
98 (void)new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), 99 (void)new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ),
99 this,SLOT( scanForAudio() ) ); 100 this,SLOT( scanForAudio() ) );
100 (void)new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), 101 (void)new MenuItem( pmPlayList, tr( "Rescan for Video Files" ),
101 this,SLOT( scanForVideo() ) ); 102 this,SLOT( scanForVideo() ) );
102 103
@@ -1100,59 +1101,70 @@ void PlayListWidget::pmViewActivated(int index) {
1100 1101
1101void PlayListWidget::populateSkinsMenu() { 1102void PlayListWidget::populateSkinsMenu() {
1102 int item = 0; 1103 int item = 0;
1103 defaultSkinIndex = 0; 1104 defaultSkinIndex = 0;
1104 QString skinName; 1105 QString skinName;
1105 Config cfg( "OpiePlayer" ); 1106 Config cfg( "OpiePlayer" );
1106 cfg.setGroup("Options" ); 1107 cfg.setGroup("Options" );
1107 QString skin = cfg.readEntry( "Skin", "default" ); 1108 QString skin = cfg.readEntry( "Skin", "default" );
1108 1109
1109 QDir skinsDir( QPEApplication::qpeDir() + "/pics/opieplayer2/skins" ); 1110 QDir skinsDir( QPEApplication::qpeDir() + "/pics/opieplayer2/skins" );
1110 skinsDir.setFilter( QDir::Dirs ); 1111 skinsDir.setFilter( QDir::Dirs );
1111 skinsDir.setSorting(QDir::Name ); 1112 skinsDir.setSorting(QDir::Name );
1112 const QFileInfoList *skinslist = skinsDir.entryInfoList(); 1113 const QFileInfoList *skinslist = skinsDir.entryInfoList();
1113 QFileInfoListIterator it( *skinslist ); 1114 QFileInfoListIterator it( *skinslist );
1114 QFileInfo *fi; 1115 QFileInfo *fi;
1115 while ( ( fi = it.current() ) ) { 1116 while ( ( fi = it.current() ) ) {
1116 skinName = fi->fileName(); 1117 skinName = fi->fileName();
1117// qDebug( fi->fileName() ); 1118// qDebug( fi->fileName() );
1118 if( skinName != "." && skinName != ".." && skinName !="CVS" ) { 1119 if( skinName != "." && skinName != ".." && skinName !="CVS" ) {
1119 item = skinsMenu->insertItem( fi->fileName() ) ; 1120 item = skinsMenu->insertItem( fi->fileName() ) ;
1120 } 1121 }
1121 if( skinName == "default" ) { 1122 if( skinName == "default" ) {
1122 defaultSkinIndex = item; 1123 defaultSkinIndex = item;
1123 } 1124 }
1124 if( skinName == skin ) { 1125 if( skinName == skin ) {
1125 skinsMenu->setItemChecked( item, TRUE ); 1126 skinsMenu->setItemChecked( item, TRUE );
1126 } 1127 }
1127 ++it; 1128 ++it;
1128 } 1129 }
1129} 1130}
1130 1131
1131void PlayListWidget::skinsMenuActivated( int item ) { 1132void PlayListWidget::skinsMenuActivated( int item ) {
1132 for(unsigned int i = defaultSkinIndex; i > defaultSkinIndex - skinsMenu->count(); i-- ) { 1133 for(unsigned int i = defaultSkinIndex; i > defaultSkinIndex - skinsMenu->count(); i-- ) {
1133 skinsMenu->setItemChecked( i, FALSE ); 1134 skinsMenu->setItemChecked( i, FALSE );
1134 } 1135 }
1135 skinsMenu->setItemChecked( item, TRUE ); 1136 skinsMenu->setItemChecked( item, TRUE );
1136 1137
1137 Config cfg( "OpiePlayer" ); 1138 Config cfg( "OpiePlayer" );
1138 cfg.setGroup("Options"); 1139 cfg.setGroup("Options");
1139 cfg.writeEntry("Skin", skinsMenu->text( item ) ); 1140 cfg.writeEntry("Skin", skinsMenu->text( item ) );
1140 QMessageBox::warning( this, tr( "OpiePlayer" ), 1141 QMessageBox::warning( this, tr( "OpiePlayer" ),
1141 tr( "You must <b>restart</b> Opieplayer<br>to see your changes." ) ); 1142 tr( "You must <b>restart</b> Opieplayer<br>to see your changes." ) );
1142} 1143}
1143 1144
1144int PlayListWidget::whichList() { 1145int PlayListWidget::whichList() {
1145 return tabWidget->currentPageIndex(); 1146 return tabWidget->currentPageIndex();
1146} 1147}
1147 1148
1149PlayListWidget::TabType PlayListWidget::currentTab() const
1150{
1151 static const TabType indexToTabType[ NumTabTypes ] =
1152 { CurrentPlaylist, AudioFiles, VideoFiles, PlayLists };
1153
1154 int index = tabWidget->currentPageIndex();
1155 assert( index < NumTabTypes && index >= 0 );
1156
1157 return indexToTabType[ index ];
1158}
1159
1148QString PlayListWidget::currentFileListPathName() { 1160QString PlayListWidget::currentFileListPathName() {
1149 switch (whichList()) { 1161 switch (whichList()) {
1150 case 1: 1162 case 1:
1151 return audioView->currentItem()->text(3); 1163 return audioView->currentItem()->text(3);
1152 break; 1164 break;
1153 case 2: 1165 case 2:
1154 return videoView->currentItem()->text(3); 1166 return videoView->currentItem()->text(3);
1155 break; 1167 break;
1156 }; 1168 };
1157 return ""; 1169 return "";
1158} 1170}
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.h b/noncore/multimedia/opieplayer2/playlistwidget.h
index b2c389e..05d53a4 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.h
+++ b/noncore/multimedia/opieplayer2/playlistwidget.h
@@ -10,108 +10,111 @@
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU General Public 12:`=1 )Y*s>-.--   : the terms of the GNU General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; General Public License for more 22..}^=.=       =       ; General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = General Public License along with 26  -_. . .   )=.  = General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#ifndef PLAY_LIST_WIDGET_H 34#ifndef PLAY_LIST_WIDGET_H
35#define PLAY_LIST_WIDGET_H 35#define PLAY_LIST_WIDGET_H
36 36
37#include <qmainwindow.h> 37#include <qmainwindow.h>
38#include <qpe/applnk.h> 38#include <qpe/applnk.h>
39#include <qtabwidget.h> 39#include <qtabwidget.h>
40#include <qpe/fileselector.h> 40#include <qpe/fileselector.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qpopupmenu.h> 42#include <qpopupmenu.h>
43 43
44#include "playlistwidgetgui.h" 44#include "playlistwidgetgui.h"
45 45
46 46
47//class PlayListWidgetPrivate; 47//class PlayListWidgetPrivate;
48class Config; 48class Config;
49class QListViewItem; 49class QListViewItem;
50class QListView; 50class QListView;
51class QPoint; 51class QPoint;
52class QAction; 52class QAction;
53class QLabel; 53class QLabel;
54 54
55class PlayListWidget : public PlayListWidgetGui { 55class PlayListWidget : public PlayListWidgetGui {
56 Q_OBJECT 56 Q_OBJECT
57public: 57public:
58 enum TabType { CurrentPlayList, AudioFiles, VideoFiles, PlayLists, NumTabTypes = 4 };
59
58 PlayListWidget( QWidget* parent=0, const char* name=0, WFlags fl=0 ); 60 PlayListWidget( QWidget* parent=0, const char* name=0, WFlags fl=0 );
59 ~PlayListWidget(); 61 ~PlayListWidget();
60 DocLnkSet files; 62 DocLnkSet files;
61 DocLnkSet vFiles; 63 DocLnkSet vFiles;
62 bool fromSetDocument; 64 bool fromSetDocument;
63 bool insanityBool; 65 bool insanityBool;
64 QString setDocFileRef, currentPlayList; 66 QString setDocFileRef, currentPlayList;
65 // retrieve the current playlist entry (media file link) 67 // retrieve the current playlist entry (media file link)
66 const DocLnk *current(); 68 const DocLnk *current();
67 void useSelectedDocument(); 69 void useSelectedDocument();
68 int selected; 70 int selected;
69 int whichList(); 71 int whichList();
72 TabType currentTab() const;
70 73
71public slots: 74public slots:
72 bool first(); 75 bool first();
73 bool last(); 76 bool last();
74 bool next(); 77 bool next();
75 bool prev(); 78 bool prev();
76 void writeDefaultPlaylist( ); 79 void writeDefaultPlaylist( );
77 QString currentFileListPathName(); 80 QString currentFileListPathName();
78protected: 81protected:
79 void keyReleaseEvent( QKeyEvent *e); 82 void keyReleaseEvent( QKeyEvent *e);
80 83
81private: 84private:
82 int defaultSkinIndex; 85 int defaultSkinIndex;
83 bool audioScan, videoScan, audioPopulated, videoPopulated; 86 bool audioScan, videoScan, audioPopulated, videoPopulated;
84 void readm3u(const QString &); 87 void readm3u(const QString &);
85 void readPls(const QString &); 88 void readPls(const QString &);
86 void initializeStates(); 89 void initializeStates();
87 void populateAudioView(); 90 void populateAudioView();
88 void populateVideoView(); 91 void populateVideoView();
89 92
90private slots: 93private slots:
91 void populateSkinsMenu(); 94 void populateSkinsMenu();
92 void skinsMenuActivated(int); 95 void skinsMenuActivated(int);
93 void pmViewActivated(int); 96 void pmViewActivated(int);
94 void writem3u(); 97 void writem3u();
95 void writeCurrentM3u(); 98 void writeCurrentM3u();
96 void scanForAudio(); 99 void scanForAudio();
97 void scanForVideo(); 100 void scanForVideo();
98 void openFile(); 101 void openFile();
99 void setDocument( const QString& fileref ); 102 void setDocument( const QString& fileref );
100 void addToSelection( const DocLnk& ); // Add a media file to the playlist 103 void addToSelection( const DocLnk& ); // Add a media file to the playlist
101 void addToSelection( QListViewItem* ); // Add a media file to the playlist 104 void addToSelection( QListViewItem* ); // Add a media file to the playlist
102 void setPlaylist( bool ); // Show/Hide the playlist 105 void setPlaylist( bool ); // Show/Hide the playlist
103 void clearList(); 106 void clearList();
104 void addAllToList(); 107 void addAllToList();
105 void addAllMusicToList(); 108 void addAllMusicToList();
106 void addAllVideoToList(); 109 void addAllVideoToList();
107 void saveList(); // Save the playlist 110 void saveList(); // Save the playlist
108 void loadList( const DocLnk &); // Load a playlist 111 void loadList( const DocLnk &); // Load a playlist
109 void playIt( QListViewItem *); 112 void playIt( QListViewItem *);
110 void btnPlay(bool); 113 void btnPlay(bool);
111 void deletePlaylist(); 114 void deletePlaylist();
112 void addSelected(); 115 void addSelected();
113 void removeSelected(); 116 void removeSelected();
114 void tabChanged(QWidget*); 117 void tabChanged(QWidget*);
115 void viewPressed( int, QListViewItem *, const QPoint&, int); 118 void viewPressed( int, QListViewItem *, const QPoint&, int);
116 void playlistViewPressed( int, QListViewItem *, const QPoint&, int); 119 void playlistViewPressed( int, QListViewItem *, const QPoint&, int);
117 void playSelected(); 120 void playSelected();