filemanager/src/inc/fmdrivemodel.cpp
changeset 29 b3155376f2b4
parent 24 1d0c87b42e2e
child 30 6e96d2143d46
--- a/filemanager/src/inc/fmdrivemodel.cpp	Fri Jun 11 13:29:48 2010 +0300
+++ b/filemanager/src/inc/fmdrivemodel.cpp	Wed Jun 23 18:03:11 2010 +0300
@@ -22,8 +22,9 @@
 #include <QDir>
 #include <QFileInfo>
 
-FmDriveModel::FmDriveModel( QObject *parent, Options options ) :
-    QAbstractListModel( parent ), mOptions( options )
+FmDriveModel::FmDriveModel( QObject *parent, Options options,
+        FmDriveListProvider *driveListProvider ) :
+    QAbstractListModel( parent ), mOptions( options ), mDriveListProvider( driveListProvider )
 {
     mIconProvider = new FmFileIconProvider();
     refresh();
@@ -36,17 +37,23 @@
 
 void FmDriveModel::refresh()
 {
-    QFileInfoList infoList = QDir::drives();
-
-	emit layoutAboutToBeChanged();
+    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 ) {
+            FmLogger::log( QString( "FmDriveModel::refresh HideUnAvailableDrive_true" ) );
+            FmUtils::getDriveList( mDriveList, true );
+        } else {
+            FmLogger::log( QString( "FmDriveModel::refresh HideUnAvailableDrive_false" ) );
+            FmUtils::getDriveList( mDriveList, false );
+        }
     }
+
 	emit layoutChanged();
 	for( int i=0; i<mDriveList.count(); i++ ) {
         emit dataChanged(index( i, 0 ), index( i, 0 ));