--- 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 <QDir>
#include <QFileInfo>
-FmDriveModel::FmDriveModel( QObject *parent, Options options ) :
- QAbstractListModel( parent ), mOptions( options )
+#include <hbglobal.h>
+
+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<mDriveList.count(); i++ ) {
+ emit dataChanged(index( i, 0 ), index( i, 0 ));
+ }
}
@@ -71,10 +84,7 @@
if (role == Qt::DisplayRole ) {
return displayString( index );
- } else if (role == Qt::UserRole ) {
- return driveName( index );
- }
-
+ }
if (index.column() == 0) {
if (role == Qt::DecorationRole ) {
QString path = driveName( index );
@@ -97,10 +107,10 @@
return QVariant();
switch (section) {
- case 0: return tr("Name");
- case 1: return tr("Size");
- case 2: return tr("Type");
- case 3: return tr("Date Modified");
+ case 0: return hbTrId("Name");
+ case 1: return hbTrId("Size");
+ case 2: return hbTrId("Type");
+ case 3: return hbTrId("Date Modified");
default: return QVariant();
}
}
@@ -126,17 +136,39 @@
return data;
}
-QString FmDriveModel::displayString( const QModelIndex &index ) const
+QVariant FmDriveModel::displayString( const QModelIndex &index ) const
{
- QString data;
+ QStringList data;
if (index.row() >= 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;