diff -r ada7962b4308 -r 15bc28c9dd51 filemanager/src/inc/fmdrivemodel.cpp --- a/filemanager/src/inc/fmdrivemodel.cpp Mon May 03 12:24:39 2010 +0300 +++ b/filemanager/src/inc/fmdrivemodel.cpp Tue Aug 24 10:24:14 2010 +0800 @@ -22,8 +22,11 @@ #include #include -FmDriveModel::FmDriveModel( QObject *parent, Options options ) : - QAbstractListModel( parent ), mOptions( options ) +#include + +FmDriveModel::FmDriveModel( QObject *parent, Options options, + FmDriveListProvider *driveListProvider ) : + QAbstractListModel( parent ), mOptions( options ), mDriveListProvider( driveListProvider ) { mIconProvider = new FmFileIconProvider(); refresh(); @@ -36,17 +39,27 @@ void FmDriveModel::refresh() { - QFileInfoList infoList = QDir::drives(); - + emit layoutAboutToBeChanged(); mDriveList.clear(); - if( mOptions & HideUnAvailableDrive ) { - FmLogger::log( QString( "FmDriveModel::refresh HideUnAvailableDrive_true" ) ); - FmUtils::getDriveList( mDriveList, true ); + + // if mDriveListProvider existed, use it to fetch drive list + // otherwise use FmUtils::getDriveList to fetch drive list. + if( mDriveListProvider ) { + mDriveListProvider->getDriveList( mDriveList ); } else { - FmLogger::log( QString( "FmDriveModel::refresh HideUnAvailableDrive_false" ) ); - FmUtils::getDriveList( mDriveList, false ); + if( mOptions & HideUnAvailableDrive ) { + FM_LOG( QString( "FmDriveModel::refresh HideUnAvailableDrive_true" ) ); + FmUtils::getDriveList( mDriveList, true ); + } else { + FM_LOG( QString( "FmDriveModel::refresh HideUnAvailableDrive_false" ) ); + FmUtils::getDriveList( mDriveList, false ); + } } - emit layoutChanged(); + + emit layoutChanged(); + for( int i=0; i= 0 && index.row() < mDriveList.size()) { int row = index.row(); QString diskName = mDriveList[ row ]; if( mOptions & FillWithVolume ) { - data = FmUtils::fillDriveVolume( diskName, mOptions & FillWithDefaultVolume ); + data << FmUtils::fillDriveVolume( diskName, mOptions & FillWithDefaultVolume ); } else { - data = FmUtils::removePathSplash( diskName ); + data << FmUtils::removePathSplash( diskName ); + } + diskName = FmUtils::fillPathWithSplash( diskName ); + FmDriverInfo driverInfo = FmUtils::queryDriverInfo( diskName ); + if ( mOptions & FillWithTotalSize ) { + if( driverInfo.driveState() & FmDriverInfo::EDriveAvailable ) { + data << QString( hbTrId ( "Size: " ) + FmUtils::formatStorageSize( driverInfo.size() ) ); + } else if( driverInfo.driveState() & FmDriverInfo::EDriveLocked ) { + data << QString( hbTrId ( "Locked" ) ); + } else if( driverInfo.driveState() & FmDriverInfo::EDriveCorrupted ) { + data << QString( hbTrId ( "Corrupted" ) ); + } else if( driverInfo.driveState() & FmDriverInfo::EDriveNotPresent ) { + data << QString( hbTrId ( "Not Ready" ) ); + } + } + if ( mOptions & FillWithFreeSize ) { + if( driverInfo.driveState() & FmDriverInfo::EDriveAvailable ) { + data << QString( hbTrId ( "Free: " ) + FmUtils::formatStorageSize( driverInfo.freeSize() ) ); + } else if( ( driverInfo.driveState() & FmDriverInfo::EDriveLocked ) || + ( driverInfo.driveState() & FmDriverInfo::EDriveCorrupted ) || + ( driverInfo.driveState() & FmDriverInfo::EDriveNotPresent )) { + data << QString( QString(" ") ); + } } } return data;