00001
00002 #include "playlistfileview.h"
00003
00004 #include <opie2/oresource.h>
00005
00006 #include <qfile.h>
00007 #include <qpe/global.h>
00008
00009 PlayListFileView::PlayListFileView( const QString &mimeTypePattern, const QString &itemPixmapName, QWidget *parent, const char *name )
00010 : PlayListView( parent, name ), m_mimeTypePattern( mimeTypePattern ), m_itemPixmapName( itemPixmapName ), m_scannedFiles( false ),
00011 m_viewPopulated( false )
00012 {
00013 addColumn( tr( "Title" ), 140);
00014 addColumn( tr( "Size" ), -1 );
00015 addColumn(tr( "Media" ), 0 );
00016 addColumn(tr( "Path" ), -1 );
00017 setColumnAlignment( 1, Qt::AlignRight );
00018 setColumnAlignment( 2, Qt::AlignRight );
00019 setAllColumnsShowFocus( TRUE );
00020 setSorting( 3, TRUE );
00021 setMultiSelection( TRUE );
00022 setSelectionMode( QListView::Extended );
00023
00024 connect( this, SIGNAL( selectionChanged() ),
00025 this, SLOT( checkSelection() ) );
00026 }
00027
00028 PlayListFileView::~PlayListFileView()
00029 {
00030 }
00031
00032 bool PlayListFileView::hasSelection() const
00033 {
00034 for ( QListViewItemIterator it( const_cast<PlayListFileView *>( this ) ); it.current(); ++it )
00035 if ( it.current()->isSelected() )
00036 return true;
00037
00038 return false;
00039 }
00040
00041 void PlayListFileView::scanFiles()
00042 {
00043 m_files.detachChildren();
00044 QListIterator<DocLnk> sdit( m_files.children() );
00045 for ( ; sdit.current(); ++sdit )
00046 delete sdit.current();
00047
00048 Global::findDocuments( &m_files, m_mimeTypePattern );
00049
00050 if ( m_viewPopulated ) {
00051 m_viewPopulated = false;
00052 populateView();
00053 }
00054 }
00055
00056 void PlayListFileView::populateView()
00057 {
00058 if ( m_viewPopulated )
00059 return;
00060
00061 clear();
00062
00063 if( !m_scannedFiles ) {
00064 m_viewPopulated = false;
00065 scanFiles();
00066 m_scannedFiles = true;
00067 }
00068
00069 m_viewPopulated = true;
00070
00071 QString storage;
00072 QListIterator<DocLnk> dit( m_files.children() );
00073 for ( ; dit.current(); ++dit ) {
00074
00075 QListViewItem *newItem;
00076
00077 if ( QFile::exists( dit.current()->file() ) ||
00078 dit.current()->file().left( 4 ) == "http" ) {
00079
00080 unsigned long size = QFile( dit.current()->file() ).size();
00081 QString sizestr;
00082 fileSize(size, sizestr);
00083
00084 newItem = new QListViewItem( this, dit.current()->name(),
00085 sizestr, "" ,
00086 dit.current()->file() );
00087 newItem->setPixmap( 0, Opie::Core::OResource::loadPixmap( m_itemPixmapName, Opie::Core::OResource::SmallIcon ) );
00088 }
00089 }
00090 }
00091
00092 void PlayListFileView::checkSelection()
00093 {
00094 emit itemsSelected( hasSelection() );
00095 }
00096
00097 void PlayListFileView::fileSize(unsigned long size, QString &str) {
00098 if( size > 1048576 )
00099 str.sprintf( "%.0fM", size / 1048576.0 );
00100 else if( size > 1024 )
00101 str.sprintf( "%.0fK", size / 1024.0 );
00102 else
00103 str.sprintf( "%d", size );
00104 }
00105
00106
00107