Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

playlistfileview.cpp

Go to the documentation of this file.
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; // avoid a recursion :)
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, "" /*storage*/,
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 /* vim: et sw=4 ts=4
00107  */

Generated on Sat Nov 5 16:17:31 2005 for OPIE by  doxygen 1.4.2