summaryrefslogtreecommitdiff
path: root/noncore
authorharlekin <harlekin>2002-08-21 20:42:09 (UTC)
committer harlekin <harlekin>2002-08-21 20:42:09 (UTC)
commit462117a0f60287d5309932937c24da3ab1292476 (patch) (side-by-side diff)
tree1877224879c5d953b257712171637de87a2966dc /noncore
parent10739e8b7d203e56ef30011770f6d12d8b0bb270 (diff)
downloadopie-462117a0f60287d5309932937c24da3ab1292476.zip
opie-462117a0f60287d5309932937c24da3ab1292476.tar.gz
opie-462117a0f60287d5309932937c24da3ab1292476.tar.bz2
started taking playlistwidget apart, also made gui a bit more beautiful
Diffstat (limited to 'noncore') (more/less context) (show whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/opieplayer2.pro11
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp455
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.h69
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidgetgui.cpp207
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidgetgui.h126
5 files changed, 507 insertions, 361 deletions
diff --git a/noncore/multimedia/opieplayer2/opieplayer2.pro b/noncore/multimedia/opieplayer2/opieplayer2.pro
index 3a47c06..a83a624 100644
--- a/noncore/multimedia/opieplayer2/opieplayer2.pro
+++ b/noncore/multimedia/opieplayer2/opieplayer2.pro
@@ -1,15 +1,16 @@
TEMPLATE = app
-CONFIG = qt warn_on release
-#CONFIG = qt warn_on debug
+#CONFIG = qt warn_on release
+CONFIG = qt warn_on debug
DESTDIR = $(OPIEDIR)/bin
HEADERS = playlistselection.h mediaplayerstate.h xinecontrol.h mediadetect.h\
videowidget.h audiowidget.h playlistwidget.h mediaplayer.h inputDialog.h \
- frame.h lib.h xinevideowidget.h volumecontrol.h\
+ frame.h lib.h xinevideowidget.h volumecontrol.h playlistwidgetgui.h\
alphablend.h yuv2rgb.h
SOURCES = main.cpp \
playlistselection.cpp mediaplayerstate.cpp xinecontrol.cpp mediadetect.cpp\
videowidget.cpp audiowidget.cpp playlistwidget.cpp mediaplayer.cpp inputDialog.cpp \
frame.cpp lib.cpp nullvideo.c xinevideowidget.cpp volumecontrol.cpp\
+ playlistwidgetgui.cpp\
alphablend.c yuv2rgb.c yuv2rgb_arm.c yuv2rgb_arm4l.S
TARGET = opieplayer2
INCLUDEPATH += $(OPIEDIR)/include
@@ -18,6 +19,6 @@ LIBS += -lqpe -lpthread -lopie -lxine -lxineutils
MOC_DIR=qpeobj
OBJECTS_DIR=qpeobj
-INCLUDEPATH += $(OPIEDIR)/include
-DEPENDPATH += $(OPIEDIR)/include
+#INCLUDEPATH += $(OPIEDIR)/include
+#DEPENDPATH += $(OPIEDIR)/include
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp
index 098322b..6c7f6ba 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp
@@ -1,124 +1,64 @@
+/*
+                This file is part of the Opie Project
+
+              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
+ Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
+ Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
+ =.
+ .=l.
+           .>+-=
+ _;:,     .>    :=|. This program is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This program is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .`     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-=` this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
-#define QTOPIA_INTERNAL_FSLP
-#include <qpe/qpemenubar.h>
#include <qpe/qpetoolbar.h>
-#include <qpe/fileselector.h>
#include <qpe/qpeapplication.h>
-#include <qpe/lnkproperties.h>
#include <qpe/storage.h>
#include <qpe/mimetype.h>
-
-#include <qpe/applnk.h>
-#include <qpopupmenu.h>
-#include <qpe/config.h>
#include <qpe/global.h>
#include <qpe/resource.h>
-#include <qaction.h>
-#include <qcursor.h>
-#include <qimage.h>
-#include <qfile.h>
+
#include <qdir.h>
-#include <qlayout.h>
-#include <qlabel.h>
-#include <qlist.h>
-#include <qlistbox.h>
-#include <qmainwindow.h>
#include <qmessagebox.h>
-#include <qtoolbutton.h>
-#include <qtabwidget.h>
-#include <qlistview.h>
-#include <qpoint.h>
-#include <qlineedit.h>
-#include <qpushbutton.h>
#include <qregexp.h>
#include <qtextstream.h>
-
#include "playlistselection.h"
#include "playlistwidget.h"
#include "mediaplayerstate.h"
-
#include "inputDialog.h"
+//only needed for the random play
#include <stdlib.h>
+
#include "audiowidget.h"
#include "videowidget.h"
-#define BUTTONS_ON_TOOLBAR
-#define SIDE_BUTTONS
-#define CAN_SAVE_LOAD_PLAYLISTS
-
extern MediaPlayerState *mediaPlayerState;
-class PlayListWidgetPrivate {
-public:
- QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove;
- QFrame *playListFrame;
- FileSelector *files;
- PlayListSelection *selectedFiles;
- bool setDocumentUsed;
- DocLnk *current;
-};
-
-
-class ToolButton : public QToolButton {
-public:
- ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE )
- : QToolButton( parent, name ) {
- setTextLabel( name );
- setPixmap( Resource::loadPixmap( icon ) );
- setAutoRaise( TRUE );
- setFocusPolicy( QWidget::NoFocus );
- setToggleButton( t );
- connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot );
- QPEMenuToolFocusManager::manager()->addWidget( this );
- }
-};
-
-
-class MenuItem : public QAction {
-public:
- MenuItem( QWidget *parent, const QString& text, QObject *handler, const QString& slot )
- : QAction( text, QString::null, 0, 0 ) {
- connect( this, SIGNAL( activated() ), handler, slot );
- addTo( parent );
- }
-};
-
-
PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
- : QMainWindow( parent, name, fl ) {
-
- d = new PlayListWidgetPrivate;
- d->setDocumentUsed = FALSE;
- d->current = NULL;
- fromSetDocument = FALSE;
- insanityBool=FALSE;
- audioScan = FALSE;
- videoScan = FALSE;
-
- setBackgroundMode( PaletteButton );
-
-// setCaption( tr("OpiePlayer") );
-// setIcon( Resource::loadPixmap( "opieplayer2/MPEGPlayer" ) );
-
- setToolBarsMovable( FALSE );
-
- // Create Toolbar
- QPEToolBar *toolbar = new QPEToolBar( this );
- toolbar->setHorizontalStretchable( TRUE );
-
- // Create Menubar
- QPEMenuBar *menu = new QPEMenuBar( toolbar );
- menu->setMargin( 0 );
-
- QPEToolBar *bar = new QPEToolBar( this );
- bar->setLabel( tr( "Play Operations" ) );
-
- tbDeletePlaylist = new QPushButton( Resource::loadIconSet("trash"),"",bar,"close");
- tbDeletePlaylist->setFlat(TRUE);
- tbDeletePlaylist->setFixedSize(20,20);
+ : PlayListWidgetGui( parent, name, fl ) {
d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer2/add_to_playlist",
this , SLOT(addSelected()) );
@@ -130,10 +70,7 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
mediaPlayerState, SLOT(setShuffled(bool)), TRUE );
d->tbLoop = new ToolButton( bar, tr( "Loop" ),"opieplayer2/loop",
mediaPlayerState, SLOT(setLooping(bool)), TRUE );
- tbDeletePlaylist->hide();
- QPopupMenu *pmPlayList = new QPopupMenu( this );
- menu->insertItem( tr( "File" ), pmPlayList );
(void)new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) );
(void)new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) );
(void)new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) );
@@ -147,10 +84,6 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
(void)new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), this,SLOT( scanForAudio() ) );
(void)new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), this,SLOT( scanForVideo() ) );
- pmView = new QPopupMenu( this );
- menu->insertItem( tr( "View" ), pmView );
- pmView->isCheckable();
-
pmView->insertItem( Resource::loadPixmap("fullscreen") , tr( "Full Screen"), mediaPlayerState, SLOT( toggleFullscreen() ) );
Config cfg( "OpiePlayer" );
@@ -158,124 +91,14 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
mediaPlayerState->setFullscreen( b );
pmView->setItemChecked( -16, b );
- // pmView->insertItem( Resource::loadPixmap("opieplayer/scale") , tr( "Scale"), mediaPlayerState, SLOT(toggleScaled() ) );
-
- pmView->insertSeparator(-1);
-
- skinsMenu = new QPopupMenu( this );
- pmView->insertItem( tr( "Skins" ), skinsMenu );
- skinsMenu->isCheckable();
- populateSkinsMenu();
-
- QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton );
- QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton );
-
- QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton );
-
- tabWidget = new QTabWidget( hbox6, "tabWidget" );
- // tabWidget->setTabShape(QTabWidget::Triangular);
-
- QWidget *pTab;
- pTab = new QWidget( tabWidget, "pTab" );
- tabWidget->insertTab( pTab,"Playlist");
-
-
- QGridLayout *Playout = new QGridLayout( pTab );
- Playout->setSpacing( 2);
- Playout->setMargin( 2);
-
- // Add the playlist area
-
- QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton );
- d->playListFrame = vbox3;
-
- QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton );
-
- d->selectedFiles = new PlayListSelection( hbox2);
- QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton );
-
- QPEApplication::setStylusOperation( d->selectedFiles->viewport(),QPEApplication::RightOnHold);
-
- QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch
(void)new ToolButton( vbox1, tr( "Move Up" ), "opieplayer2/up", d->selectedFiles, SLOT(moveSelectedUp()) );
(void)new ToolButton( vbox1, tr( "Remove" ), "opieplayer2/cut", d->selectedFiles, SLOT(removeSelected()) );
(void)new ToolButton( vbox1, tr( "Move Down" ), "opieplayer2/down", d->selectedFiles, SLOT(moveSelectedDown()) );
- QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch
-
-
- Playout->addMultiCellWidget( vbox3, 0, 0, 0, 1 );
-
- QWidget *aTab;
- aTab = new QWidget( tabWidget, "aTab" );
-
- QGridLayout *Alayout = new QGridLayout( aTab );
- Alayout->setSpacing( 2);
- Alayout->setMargin( 2);
-
- audioView = new QListView( aTab, "Audioview" );
- audioView->addColumn( tr("Title"),140);
- audioView->addColumn(tr("Size"), -1);
- audioView->addColumn(tr("Media"),-1);
- audioView->setColumnAlignment(1, Qt::AlignRight);
- audioView->setColumnAlignment(2, Qt::AlignRight);
- audioView->setAllColumnsShowFocus(TRUE);
- audioView->setSorting(0,TRUE);
-
- audioView->setMultiSelection( TRUE );
- audioView->setSelectionMode( QListView::Extended);
-
- Alayout->addMultiCellWidget( audioView, 0, 0, 0, 1 );
-
- tabWidget->insertTab(aTab,tr("Audio"));
-
- QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold);
-
- QWidget *vTab;
- vTab = new QWidget( tabWidget, "vTab" );
-
- QGridLayout *Vlayout = new QGridLayout( vTab );
- Vlayout->setSpacing( 2);
- Vlayout->setMargin( 2);
-
- videoView = new QListView( vTab, "Videoview" );
-
- videoView->addColumn(tr("Title"),140);
- videoView->addColumn(tr("Size"),-1);
- videoView->addColumn(tr("Media"),-1);
- videoView->setColumnAlignment(1, Qt::AlignRight);
- videoView->setColumnAlignment(2, Qt::AlignRight);
- videoView->setAllColumnsShowFocus(TRUE);
- videoView->setSorting(0,TRUE);
-
- videoView->setMultiSelection( TRUE );
- videoView->setSelectionMode( QListView::Extended);
-
- Vlayout->addMultiCellWidget( videoView, 0, 0, 0, 1 );
-
- QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold);
-
- tabWidget->insertTab( vTab,tr("Video"));
-
- //playlists list
- QWidget *LTab;
- LTab = new QWidget( tabWidget, "LTab" );
- QGridLayout *Llayout = new QGridLayout( LTab );
- Llayout->setSpacing( 2);
- Llayout->setMargin( 2);
-
- playLists = new FileSelector( "playlist/plain", LTab, "fileselector" , FALSE, FALSE); //buggy
- Llayout->addMultiCellWidget( playLists, 0, 0, 0, 1 );
-
- tabWidget->insertTab(LTab,tr("Lists"));
+ QVBox *stretch2 = new QVBox( vbox1 );
connect(tbDeletePlaylist,(SIGNAL(released())),SLOT( deletePlaylist()));
-
connect( pmView, SIGNAL( activated(int)), this, SLOT( pmViewActivated(int) ) );
-
connect( skinsMenu, SIGNAL( activated(int)), this, SLOT(skinsMenuActivated(int) ) );
-
- // connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled() ) );
-
connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
this,SLOT( playlistViewPressed(int, QListViewItem *, const QPoint&, int)) );
connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
@@ -296,13 +119,13 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) );
connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) );
- setCentralWidget( vbox5 );
-
readConfig( cfg );
QString currentPlaylist = cfg.readEntry("CurrentPlaylist","");
loadList(DocLnk( currentPlaylist));
setCaption(tr("OpiePlayer: ")+ currentPlaylist );
+ // see which skins are installed
+ populateSkinsMenu();
initializeStates();
}
@@ -311,7 +134,6 @@ PlayListWidget::~PlayListWidget() {
/* fixing symptoms and not sources is entirely stupid - zecke */
// Config cfg( "OpiePlayer" );
// writeConfig( cfg );
-
if ( d->current ) {
delete d->current;
}
@@ -320,7 +142,6 @@ PlayListWidget::~PlayListWidget() {
void PlayListWidget::initializeStates() {
-
d->tbPlay->setOn( mediaPlayerState->playing() );
d->tbLoop->setOn( mediaPlayerState->looping() );
d->tbShuffle->setOn( mediaPlayerState->shuffled() );
@@ -348,7 +169,6 @@ void PlayListWidget::readConfig( Config& cfg ) {
void PlayListWidget::writeConfig( Config& cfg ) const {
-
d->selectedFiles->writeCurrent( cfg);
cfg.setGroup("PlayList");
int noOfFiles = 0;
@@ -400,6 +220,38 @@ void PlayListWidget::clearList() {
}
+void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) {
+ switch (mouse) {
+ case 1:
+ break;
+ case 2:
+ {
+ QPopupMenu m;
+ m.insertItem( tr( "Play" ), this, SLOT( playSelected() ));
+ m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() ));
+ m.exec( QCursor::pos() );
+ }
+ break;
+ }
+}
+
+
+void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint& , int ) {
+ switch (mouse) {
+ case 1:
+ break;
+ case 2:
+ {
+ QPopupMenu m;
+ m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() ));
+ m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() ));
+ m.exec( QCursor::pos() );
+ }
+ break;
+ }
+}
+
+
void PlayListWidget::addAllToList() {
DocLnkSet filesAll;
Global::findDocuments(&filesAll, "video/*;audio/*");
@@ -424,14 +276,16 @@ void PlayListWidget::addAllMusicToList() {
void PlayListWidget::addAllVideoToList() {
QListIterator<DocLnk> dit( vFiles.children() );
- for ( ; dit.current(); ++dit )
- if(QFileInfo( dit.current()->file()).exists())
+ for ( ; dit.current(); ++dit ) {
+ if( QFileInfo( dit.current()->file() ).exists() ) {
d->selectedFiles->addToSelection( **dit );
}
+ }
+}
void PlayListWidget::setDocument(const QString& fileref) {
- qDebug(fileref);
+ //qDebug( fileref );
fromSetDocument = TRUE;
if ( fileref.isNull() ) {
QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) );
@@ -459,22 +313,12 @@ void PlayListWidget::setDocument(const QString& fileref) {
}
-void PlayListWidget::setActiveWindow() {
-// qDebug("SETTING active window");
- // When we get raised we need to ensure that it switches views
- char origView = mediaPlayerState->view();
- mediaPlayerState->setView( 'l' ); // invalidate
- mediaPlayerState->setView( origView ); // now switch back
-}
-
-
void PlayListWidget::useSelectedDocument() {
d->setDocumentUsed = FALSE;
}
const DocLnk *PlayListWidget::current() { // this is fugly
-
switch (tabWidget->currentPageIndex()) {
case 0: //playlist
{
@@ -516,6 +360,7 @@ const DocLnk *PlayListWidget::current() { // this is fugly
return 0;
}
+
bool PlayListWidget::prev() {
if ( mediaPlayerState->playlist() ) {
if ( mediaPlayerState->shuffled() ) {
@@ -526,8 +371,9 @@ bool PlayListWidget::prev() {
d->selectedFiles->first();
}
if ( cur == current() )
- if ( !d->selectedFiles->next() )
+ if ( !d->selectedFiles->next() ) {
d->selectedFiles->first();
+ }
return TRUE;
} else {
if ( !d->selectedFiles->prev() ) {
@@ -630,9 +476,9 @@ void PlayListWidget::loadList( const DocLnk & lnk) {
config.writeEntry("CurrentPlaylist", name);
// d->selectedFiles->first();
}
-
}
+
void PlayListWidget::setPlaylist( bool shown ) {
if ( shown ) {
d->playListFrame->show();
@@ -641,12 +487,6 @@ void PlayListWidget::setPlaylist( bool shown ) {
}
}
-void PlayListWidget::setView( char view ) {
- if ( view == 'l' )
- showMaximized();
- else
- hide();
-}
void PlayListWidget::addSelected() {
@@ -697,10 +537,12 @@ void PlayListWidget::addSelected() {
};
}
+
void PlayListWidget::removeSelected() {
d->selectedFiles->removeSelected( );
}
+
void PlayListWidget::playIt( QListViewItem *it) {
if(!it) return;
mediaPlayerState->setPlaying(FALSE);
@@ -708,6 +550,7 @@ void PlayListWidget::playIt( QListViewItem *it) {
d->selectedFiles->unSelect();
}
+
void PlayListWidget::addToSelection( QListViewItem *it) {
d->setDocumentUsed = FALSE;
@@ -740,13 +583,15 @@ void PlayListWidget::addToSelection( QListViewItem *it) {
}
}
+
void PlayListWidget::tabChanged(QWidget *) {
switch ( tabWidget->currentPageIndex()) {
case 0:
{
- if( !tbDeletePlaylist->isHidden())
+ if( !tbDeletePlaylist->isHidden() ) {
tbDeletePlaylist->hide();
+ }
d->tbRemoveFromList->setEnabled(TRUE);
d->tbAddToList->setEnabled(FALSE);
}
@@ -756,8 +601,9 @@ void PlayListWidget::tabChanged(QWidget *) {
audioView->clear();
populateAudioView();
- if( !tbDeletePlaylist->isHidden())
+ if( !tbDeletePlaylist->isHidden() ) {
tbDeletePlaylist->hide();
+ }
d->tbRemoveFromList->setEnabled(FALSE);
d->tbAddToList->setEnabled(TRUE);
}
@@ -766,24 +612,26 @@ void PlayListWidget::tabChanged(QWidget *) {
{
videoView->clear();
populateVideoView();
- if( !tbDeletePlaylist->isHidden())
+ if( !tbDeletePlaylist->isHidden() ) {
tbDeletePlaylist->hide();
+ }
d->tbRemoveFromList->setEnabled(FALSE);
d->tbAddToList->setEnabled(TRUE);
}
break;
case 3:
{
- if( tbDeletePlaylist->isHidden())
+ if( tbDeletePlaylist->isHidden() ) {
tbDeletePlaylist->show();
+ }
playLists->reread();
}
break;
};
}
-void PlayListWidget::btnPlay(bool b) {
+void PlayListWidget::btnPlay(bool b) {
// mediaPlayerState->setPlaying(b);
switch ( tabWidget->currentPageIndex()) {
case 0:
@@ -830,40 +678,11 @@ void PlayListWidget::deletePlaylist() {
};
}
-void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) {
- switch (mouse) {
- case 1:
- break;
- case 2:{
- QPopupMenu m;
- m.insertItem( tr( "Play" ), this, SLOT( playSelected() ));
- m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() ));
- m.exec( QCursor::pos() );
- }
- break;
- };
-}
void PlayListWidget::playSelected() {
btnPlay( TRUE);
}
-void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint& , int ) {
- switch (mouse) {
- case 1:
-
- break;
- case 2:
- {
- QPopupMenu m;
- m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() ));
- m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() ));
- m.exec( QCursor::pos() );
- }
- break;
- };
-}
-
void PlayListWidget::scanForAudio() {
// qDebug("scan for audio");
@@ -888,11 +707,12 @@ void PlayListWidget::scanForVideo() {
}
void PlayListWidget::populateAudioView() {
-
audioView->clear();
StorageInfo storageInfo;
const QList<FileSystem> &fs = storageInfo.fileSystems();
- if(!audioScan) scanForAudio();
+ if(!audioScan) {
+ scanForAudio();
+ }
QListIterator<DocLnk> dit( files.children() );
QListIterator<FileSystem> it ( fs );
@@ -902,7 +722,9 @@ void PlayListWidget::populateAudioView() {
for( ; it.current(); ++it ){
const QString name = (*it)->name();
const QString path = (*it)->path();
- if(dit.current()->file().find(path) != -1 ) storage=name;
+ if(dit.current()->file().find(path) != -1 ) {
+ storage = name;
+ }
}
QListViewItem * newItem;
@@ -913,15 +735,17 @@ void PlayListWidget::populateAudioView() {
newItem->setPixmap(0, Resource::loadPixmap( "opieplayer2/musicfile" ));
}
}
-
}
+
void PlayListWidget::populateVideoView() {
videoView->clear();
StorageInfo storageInfo;
const QList<FileSystem> &fs = storageInfo.fileSystems();
- if(!videoScan ) scanForVideo();
+ if(!videoScan ) {
+ scanForVideo();
+ }
QListIterator<DocLnk> Vdit( vFiles.children() );
QListIterator<FileSystem> it ( fs );
@@ -931,7 +755,9 @@ void PlayListWidget::populateVideoView() {
for( ; it.current(); ++it ){
const QString name = (*it)->name();
const QString path = (*it)->path();
- if( Vdit.current()->file().find(path) != -1 ) storage=name;
+ if( Vdit.current()->file().find(path) != -1 ) {
+ storage=name;
+ }
}
QListViewItem * newItem;
@@ -943,6 +769,7 @@ void PlayListWidget::populateVideoView() {
}
}
+
void PlayListWidget::openFile() {
QString filename, name;
InputDialog *fileDlg;
@@ -959,7 +786,6 @@ void PlayListWidget::openFile() {
} else {
/* FIXME ....... AUDIO/X-MPEGURL is bad*/
DocLnk lnk;
-
lnk.setName(filename); //sets file name
lnk.setFile(filename); //sets File property
//qWarning( "Mimetype: " + MimeType( QFile::encodeName(filename) ).id() );
@@ -978,8 +804,7 @@ void PlayListWidget::openFile() {
}
}
-void PlayListWidget::keyReleaseEvent( QKeyEvent *e)
-{
+void PlayListWidget::keyReleaseEvent( QKeyEvent *e ) {
switch ( e->key() ) {
////////////////////////////// Zaurus keys
case Key_F9: //activity
@@ -1037,33 +862,7 @@ void PlayListWidget::keyReleaseEvent( QKeyEvent *e)
}
}
-void PlayListWidget::keyPressEvent( QKeyEvent *)
-{
- // qDebug("Key press");
- // switch ( e->key() ) {
- // ////////////////////////////// Zaurus keys
- // case Key_A: //add to playlist
- // qDebug("Add");
- // addSelected();
- // break;
- // case Key_R: //remove from playlist
- // removeSelected();
- // break;
- // case Key_P: //play
- // qDebug("Play");
- // playSelected();
- // break;
- // case Key_Space:
- // qDebug("Play");
- // playSelected();
- // break;
- // }
-}
-
-
-
void PlayListWidget::readm3u(const QString &filename) {
-
qDebug("m3u filename is "+filename);
QFile f(filename);
@@ -1078,7 +877,6 @@ void PlayListWidget::readm3u(const QString &filename) {
if(s.find(" ",0,TRUE) == -1) { // not sure if this is neede since cf uses vfat
if(s.left(2) == "E:" || s.left(2) == "P:") {
s=s.right(s.length()-2);
- // if(QFile(s).exists()) {
DocLnk lnk( s );
QFileInfo f(s);
QString name = f.baseName();
@@ -1089,7 +887,6 @@ void PlayListWidget::readm3u(const QString &filename) {
lnk.writeLink();
qDebug("add "+name);
d->selectedFiles->addToSelection( lnk);
- // }
} else { // is url
s.replace(QRegExp("%20")," ");
DocLnk lnk( s );
@@ -1118,7 +915,6 @@ void PlayListWidget::readm3u(const QString &filename) {
}
void PlayListWidget::writem3u() {
-
InputDialog *fileDlg;
fileDlg = new InputDialog(this,tr("Save m3u Playlist "),TRUE, 0);
fileDlg->exec();
@@ -1131,22 +927,27 @@ void PlayListWidget::writem3u() {
do {
// we dont check for existance because of url's
// qDebug(d->selectedFiles->current()->file());
+
+ // so maybe we should do some net checking to ,-)
list += d->selectedFiles->current()->file()+"\n";
noOfFiles++;
}
while ( d->selectedFiles->next() );
qDebug(list);
- if(filename.left(1) != "/")
+ if( filename.left( 1) != "/" ) {
filename=QPEApplication::documentDir()+"/"+filename;
- if(filename.right(3) != "m3u")
+ }
+ if( filename.right( 3 ) != "m3u" ) {
filename=filename+".m3u";
-
+ }
QFile f(filename);
f.open(IO_WriteOnly);
f.writeBlock(list, list.length());
f.close();
}
- if(fileDlg) delete fileDlg;
+ if( fileDlg ) {
+ delete fileDlg;
+ }
}
void PlayListWidget::readPls(const QString &filename) {
@@ -1174,22 +975,24 @@ void PlayListWidget::readPls(const QString &filename) {
DocLnk lnk( s );
QFileInfo f(s);
QString name = f.baseName();
- if(name.left(4)=="http")
+ if( name.left( 4 ) == "http" ) {
name = s.right( s.length() - 7);
- else
+ } else {
name=s;
+ }
name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
lnk.setName( name);
if(s.at(s.length()-4) == '.') // if this is probably a file
lnk.setFile( s);
else { //if its a url
- if( name.right(1).find('/') == -1)
+ if( name.right( 1 ).find( '/' ) == -1) {
s+="/";
+ }
lnk.setFile( s);
}
lnk.setType("audio/x-mpegurl");
- qDebug("DocLnk add "+name);
+ //qDebug("DocLnk add "+name);
d->selectedFiles->addToSelection( lnk);
}
}
@@ -1202,13 +1005,11 @@ void PlayListWidget::pmViewActivated(int index) {
switch(index) {
case -16:
{
-
mediaPlayerState->toggleFullscreen();
bool b=mediaPlayerState->fullscreen();
pmView->setItemChecked( index,b);
Config cfg( "OpiePlayer" );
cfg.writeEntry("FullScreen", b);
-
}
break;
};
@@ -1231,13 +1032,15 @@ void PlayListWidget::populateSkinsMenu() {
while ( (fi=it.current()) ) {
skinName = fi->fileName();
qDebug( fi->fileName());
- if( skinName != "." && skinName != ".." && skinName !="CVS")
+ if( skinName != "." && skinName != ".." && skinName !="CVS" ) {
item = skinsMenu->insertItem( fi->fileName());
- if( skinName == "default")
+ }
+ if( skinName == "default" ) {
defaultSkinIndex = item;
- if( skinName == skin)
+ }
+ if( skinName == skin ) {
skinsMenu->setItemChecked( item, TRUE);
-
+ }
++it;
}
}
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.h b/noncore/multimedia/opieplayer2/playlistwidget.h
index 8710a99..2742252 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.h
+++ b/noncore/multimedia/opieplayer2/playlistwidget.h
@@ -1,3 +1,35 @@
+/*
+                This file is part of the Opie Project
+
+              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
+ Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
+ Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
+ =.
+ .=l.
+           .>+-=
+ _;:,     .>    :=|. This program is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This program is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .`     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-=` this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
#ifndef PLAY_LIST_WIDGET_H
#define PLAY_LIST_WIDGET_H
@@ -9,10 +41,10 @@
#include <qpushbutton.h>
#include <qpopupmenu.h>
-/* #include <qtimer.h> */
+#include "playlistwidgetgui.h"
-class PlayListWidgetPrivate;
+//class PlayListWidgetPrivate;
class Config;
class QListViewItem;
class QListView;
@@ -20,54 +52,41 @@ class QPoint;
class QAction;
class QLabel;
-class PlayListWidget : public QMainWindow {
+class PlayListWidget : public PlayListWidgetGui {
Q_OBJECT
public:
PlayListWidget( QWidget* parent=0, const char* name=0, WFlags fl=0 );
~PlayListWidget();
- QTabWidget * tabWidget;
-// MenuItem *fullScreenButton, *scaleButton;
-// QAction *fullScreenButton, *scaleButton;
DocLnkSet files;
DocLnkSet vFiles;
- QListView *audioView, *videoView, *playlistView;
- QLabel *libString;
- QPopupMenu *pmView ;
bool fromSetDocument;
bool insanityBool;
QString setDocFileRef;
// retrieve the current playlist entry (media file link)
const DocLnk *current();
void useSelectedDocument();
-/* QTimer * menuTimer; */
- FileSelector* playLists;
- QPushButton *tbDeletePlaylist;
int selected;
+
public slots:
bool first();
bool last();
bool next();
bool prev();
void writeConfig( Config& cfg ) const;
-/* void setFullScreen(); */
-/* void setScaled(); */
+
protected:
-/* void contentsMousePressEvent( QMouseEvent * e ); */
-/* void contentsMouseReleaseEvent( QMouseEvent * e ); */
void keyReleaseEvent( QKeyEvent *e);
-void keyPressEvent( QKeyEvent *e);
+
private:
int defaultSkinIndex;
- QPopupMenu *skinsMenu;
bool audioScan, videoScan;
void readm3u(const QString &);
void readPls(const QString &);
-
void initializeStates();
void readConfig( Config& cfg );
- PlayListWidgetPrivate *d; // Private implementation data
void populateAudioView();
void populateVideoView();
+
private slots:
void populateSkinsMenu();
void skinsMenuActivated(int);
@@ -79,9 +98,7 @@ private slots:
void setDocument( const QString& fileref );
void addToSelection( const DocLnk& ); // Add a media file to the playlist
void addToSelection( QListViewItem* ); // Add a media file to the playlist
- void setActiveWindow(); // need to handle this to show the right view
void setPlaylist( bool ); // Show/Hide the playlist
- void setView( char );
void clearList();
void addAllToList();
void addAllMusicToList();
@@ -89,7 +106,6 @@ private slots:
void saveList(); // Save the playlist
void loadList( const DocLnk &); // Load a playlist
void playIt( QListViewItem *);
-
void btnPlay(bool);
void deletePlaylist();
void addSelected();
@@ -98,14 +114,7 @@ private slots:
void viewPressed( int, QListViewItem *, const QPoint&, int);
void playlistViewPressed( int, QListViewItem *, const QPoint&, int);
void playSelected();
-
-protected slots:
-/* void cancelMenuTimer(); */
-/* void showFileMenu(); */
-
-
};
-
#endif // PLAY_LIST_WIDGET_H
diff --git a/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp b/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp
new file mode 100644
index 0000000..6ecd016
--- a/dev/null
+++ b/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp
@@ -0,0 +1,207 @@
+/*
+                This file is part of the Opie Project
+
+              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
+ Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
+ Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
+ =.
+ .=l.
+           .>+-=
+ _;:,     .>    :=|. This program is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This program is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .`     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-=` this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
+
+#include <qpe/qpemenubar.h>
+#include <qpe/qpetoolbar.h>
+#include <qpe/fileselector.h>
+#include <qpe/qpeapplication.h>
+#include <qpe/storage.h>
+#include <qpe/mimetype.h>
+#include <qpe/config.h>
+#include <qpe/global.h>
+#include <qpe/resource.h>
+
+#include <qpopupmenu.h>
+#include <qaction.h>
+#include <qcursor.h>
+#include <qdir.h>
+#include <qlayout.h>
+
+#include "playlistselection.h"
+#include "playlistwidget.h"
+#include "mediaplayerstate.h"
+#include "inputDialog.h"
+
+//only needed for the random play
+#include <stdlib.h>
+
+#include "audiowidget.h"
+#include "videowidget.h"
+#include "mediaplayerstate.h"
+
+extern MediaPlayerState *mediaPlayerState;
+
+PlayListWidgetGui::PlayListWidgetGui( QWidget* parent, const char* name, WFlags fl )
+ : QMainWindow( parent, name, fl ) {
+
+ d = new PlayListWidgetPrivate;
+ d->setDocumentUsed = FALSE;
+ d->current = NULL;
+
+ setBackgroundMode( PaletteButton );
+ setToolBarsMovable( FALSE );
+
+ // Create Toolbar
+ QPEToolBar *toolbar = new QPEToolBar( this );
+ toolbar->setHorizontalStretchable( TRUE );
+
+ // Create Menubar
+ QPEMenuBar *menu = new QPEMenuBar( toolbar );
+ menu->setMargin( 0 );
+
+ bar = new QPEToolBar( this );
+ bar->setLabel( tr( "Play Operations" ) );
+
+ tbDeletePlaylist = new QPushButton( Resource::loadIconSet( "trash" ), "", bar, "close" );
+ tbDeletePlaylist->setFlat( TRUE );
+ tbDeletePlaylist->setFixedSize( 20, 20 );
+
+ tbDeletePlaylist->hide();
+
+ pmPlayList = new QPopupMenu( this );
+ menu->insertItem( tr( "File" ), pmPlayList );
+
+ pmView = new QPopupMenu( this );
+ menu->insertItem( tr( "View" ), pmView );
+ pmView->isCheckable();
+
+ skinsMenu = new QPopupMenu( this );
+ pmView->insertItem( tr( "Skins" ), skinsMenu );
+ skinsMenu->isCheckable();
+
+ vbox5 = new QVBox( this );
+ QVBox *vbox4 = new QVBox( vbox5 );
+ QHBox *hbox6 = new QHBox( vbox4 );
+
+ tabWidget = new QTabWidget( hbox6, "tabWidget" );
+
+ QWidget *pTab;
+ pTab = new QWidget( tabWidget, "pTab" );
+ tabWidget->insertTab( pTab,"Playlist");
+
+ QGridLayout *Playout = new QGridLayout( pTab );
+ Playout->setSpacing( 2);
+ Playout->setMargin( 2);
+
+ // Add the playlist area
+ QVBox *vbox3 = new QVBox( pTab );
+ d->playListFrame = vbox3;
+
+ QHBox *hbox2 = new QHBox( vbox3 );
+ d->selectedFiles = new PlayListSelection( hbox2 );
+
+ vbox1 = new QVBox( hbox2 );
+ QPEApplication::setStylusOperation( d->selectedFiles->viewport(), QPEApplication::RightOnHold );
+ QVBox *stretch1 = new QVBox( vbox1 ); // add stretch
+
+ Playout->addMultiCellWidget( vbox3, 0, 0, 0, 1 );
+
+ QWidget *aTab;
+ aTab = new QWidget( tabWidget, "aTab" );
+
+ QGridLayout *Alayout = new QGridLayout( aTab );
+ Alayout->setSpacing( 2 );
+ Alayout->setMargin( 2 );
+ audioView = new QListView( aTab, "Audioview" );
+ audioView->addColumn( tr( "Title" ), 140 );
+ audioView->addColumn( tr( "Size" ), -1 );
+ audioView->addColumn( tr( "Media" ), -1 );
+ audioView->setColumnAlignment( 1, Qt::AlignRight );
+ audioView->setColumnAlignment( 2, Qt::AlignRight );
+ audioView->setAllColumnsShowFocus( TRUE );
+ audioView->setSorting( 0, TRUE );
+ audioView->setMultiSelection( TRUE );
+ audioView->setSelectionMode( QListView::Extended );
+ Alayout->addMultiCellWidget( audioView, 0, 0, 0, 1 );
+ tabWidget->insertTab( aTab, tr( "Audio" ) );
+
+ QPEApplication::setStylusOperation( audioView->viewport(), QPEApplication::RightOnHold );
+
+ QWidget *vTab;
+ vTab = new QWidget( tabWidget, "vTab" );
+
+ QGridLayout *Vlayout = new QGridLayout( vTab );
+ Vlayout->setSpacing( 2 );
+ Vlayout->setMargin( 2 );
+ videoView = new QListView( vTab, "Videoview" );
+ videoView->addColumn( tr( "Title" ), 140);
+ videoView->addColumn( tr( "Size" ), -1 );
+ videoView->addColumn(tr( "Media" ), -1 );
+ videoView->setColumnAlignment( 1, Qt::AlignRight );
+ videoView->setColumnAlignment( 2, Qt::AlignRight );
+ videoView->setAllColumnsShowFocus( TRUE );
+ videoView->setSorting( 0, TRUE );
+ videoView->setMultiSelection( TRUE );
+ videoView->setSelectionMode( QListView::Extended );
+ Vlayout->addMultiCellWidget( videoView, 0, 0, 0, 1 );
+
+ QPEApplication::setStylusOperation( videoView->viewport(), QPEApplication::RightOnHold );
+
+ tabWidget->insertTab( vTab, tr( "Video" ) );
+
+ //playlists list
+ QWidget *LTab;
+ LTab = new QWidget( tabWidget, "LTab" );
+ QGridLayout *Llayout = new QGridLayout( LTab );
+ Llayout->setSpacing( 2 );
+ Llayout->setMargin( 2 );
+
+ playLists = new FileSelector( "playlist/plain", LTab, "fileselector" , FALSE, FALSE ); //buggy
+ Llayout->addMultiCellWidget( playLists, 0, 0, 0, 1 );
+
+ tabWidget->insertTab( LTab, tr( "Lists" ) );
+
+ setCentralWidget( vbox5 );
+}
+
+
+
+PlayListWidgetGui::~PlayListWidgetGui() {
+}
+
+void PlayListWidgetGui::setView( char view ) {
+ if ( view == 'l' )
+ showMaximized();
+ else
+ hide();
+}
+
+
+void PlayListWidgetGui::setActiveWindow() {
+ // qDebug("SETTING active window");
+ // When we get raised we need to ensure that it switches views
+ char origView = mediaPlayerState->view();
+ mediaPlayerState->setView( 'l' ); // invalidate
+ mediaPlayerState->setView( origView ); // now switch back
+}
+
diff --git a/noncore/multimedia/opieplayer2/playlistwidgetgui.h b/noncore/multimedia/opieplayer2/playlistwidgetgui.h
new file mode 100644
index 0000000..4c8d737
--- a/dev/null
+++ b/noncore/multimedia/opieplayer2/playlistwidgetgui.h
@@ -0,0 +1,126 @@
+/*
+                This file is part of the Opie Project
+
+              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
+ Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
+ Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
+ =.
+ .=l.
+           .>+-=
+ _;:,     .>    :=|. This program is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This program is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .`     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-=` this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
+
+#ifndef PLAY_LIST_WIDGET_GUI_H
+#define PLAY_LIST_WIDGET_GUI_H
+
+#include <qmainwindow.h>
+#include <qpe/applnk.h>
+#include <qpe/resource.h>
+#include <qpe/qpemenubar.h>
+
+#include <qtabwidget.h>
+#include <qpe/fileselector.h>
+#include <qpushbutton.h>
+#include <qpopupmenu.h>
+#include <qaction.h>
+
+
+class PlayListWidgetPrivate;
+class PlayListSelection;
+
+class Config;
+class QPEToolBar;
+class QListViewItem;
+class QListView;
+class QPoint;
+class QAction;
+class QLabel;
+
+class PlayListWidgetPrivate {
+public:
+ QToolButton *tbPlay, *tbFull, *tbLoop, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove;
+ QFrame *playListFrame;
+ FileSelector *files;
+ PlayListSelection *selectedFiles;
+ bool setDocumentUsed;
+ DocLnk *current;
+};
+
+
+class ToolButton : public QToolButton {
+public:
+ ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE )
+ : QToolButton( parent, name ) {
+ setTextLabel( name );
+ setPixmap( Resource::loadPixmap( icon ) );
+ setAutoRaise( TRUE );
+ setFocusPolicy( QWidget::NoFocus );
+ setToggleButton( t );
+ connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot );
+ QPEMenuToolFocusManager::manager()->addWidget( this );
+ }
+};
+
+
+class MenuItem : public QAction {
+
+public:
+ MenuItem( QWidget *parent, const QString& text, QObject *handler, const QString& slot )
+ : QAction( text, QString::null, 0, 0 ) {
+ connect( this, SIGNAL( activated() ), handler, slot );
+ addTo( parent );
+ }
+};
+
+class PlayListWidgetGui : public QMainWindow {
+ Q_OBJECT
+public:
+ PlayListWidgetGui( QWidget* parent=0, const char* name=0, WFlags fl=0 );
+ ~PlayListWidgetGui();
+
+protected:
+ QTabWidget * tabWidget;
+ QListView *audioView, *videoView, *playlistView;
+ QLabel *libString;
+ QPopupMenu *pmView ;
+ bool fromSetDocument;
+ bool insanityBool;
+ QString setDocFileRef;
+ // retrieve the current playlist entry (media file link)
+ QPushButton *tbDeletePlaylist;
+ int selected;
+ QPopupMenu *pmPlayList;
+ FileSelector* playLists;
+ QPopupMenu *skinsMenu;
+ PlayListWidgetPrivate *d; // Private implementation data
+ QVBox *vbox1;
+ QVBox *vbox5;
+ QPEToolBar *bar;
+ void setActiveWindow(); // need to handle this to show the right view
+ void setView( char );
+
+};
+
+#endif
+