Catchup to latest Symbian^4 GCC_SURGE
authorWilliam Roberts <williamr@symbian.org>
Thu, 22 Jul 2010 16:30:56 +0100
branchGCC_SURGE
changeset 31 e28107efca85
parent 22 b9588eb601eb (current diff)
parent 30 6e96d2143d46 (diff)
Catchup to latest Symbian^4
filemanager/src/bwins/fmbkupenginewrapperu.def
filemanager/src/bwins/fmfiledialogu.def
filemanager/src/eabi/fmbkupenginewrapperu.def
filemanager/src/eabi/fmfiledialogu.def
filemanager/src/filemanager/src/backuprestore/fmbackupviewitem.cpp
filemanager/src/filemanager/src/backuprestore/fmbackupviewitem.h
filemanager/src/filemanager/src/components/fmdatalistmodel.cpp
filemanager/src/filemanager/src/components/fmdatalistmodel.h
--- a/filemanager/filemanager_plat/inc/fmfiledialog.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/filemanager_plat/inc/fmfiledialog.h	Thu Jul 22 16:30:56 2010 +0100
@@ -105,7 +105,12 @@
     ~FmFileDialog();
 
     bool exec();
+    HbAction *primaryAction() const;
+    void setPrimaryAction( HbAction *action );
 
+    HbAction *secondaryAction() const;
+    void setSecondaryAction( HbAction *action );
+    
     FmFileDialogPrivate *d_ptr;
     
     Q_DISABLE_COPY( FmFileDialog)
--- a/filemanager/rom/filemngr.iby	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/rom/filemngr.iby	Thu Jul 22 16:30:56 2010 +0100
@@ -23,8 +23,8 @@
 #define HB_UPGRADABLE_APP_REG_RSC(NAME) data=DATAZ_\PRIVATE\10003A3F\IMPORT\APPS\ ## NAME ## _reg.rsc        Private\10003a3f\import\apps\ ## NAME ## _reg.rsc
 
 file=ABI_DIR\BUILD_DIR\filemngr.exe                   SHARED_LIB_DIR\filemngr.exe
+data = ZRESOURCE\apps\filemngr.mif                    APP_RESOURCE_DIR\filemngr.mif
 HB_UPGRADABLE_APP_REG_RSC(filemngr)
-S60_APP_RESOURCE(filemngr)
 
 
 file=ABI_DIR\BUILD_DIR\fmbkupengine.dll               SHARED_LIB_DIR\fmbkupengine.dll
--- a/filemanager/rom/rom.pri	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/rom/rom.pri	Thu Jul 22 16:30:56 2010 +0100
@@ -18,12 +18,7 @@
 symbian {
     FILEMNGR_IBY_DIR = $$section(PWD, ":", 1)
 
-    exists(/epoc32/include/platform_paths.hrh) {
-        BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
-    } else {
-        BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <domain\osextensions\platform_paths.hrh>"
-    }
-
+    BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include<platform_paths.hrh>"
     BLD_INF_RULES.prj_exports += "$$FILEMNGR_IBY_DIR/filemngr.iby CORE_APP_LAYER_IBY_EXPORT_PATH(filemngr.iby)"
     BLD_INF_RULES.prj_exports += "$$FILEMNGR_IBY_DIR/filemngr_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(filemngr_resources.iby)"
 }
--- a/filemanager/src/bwins/fmbkupenginewrapperu.def	Fri Jun 11 16:23:39 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-EXPORTS
-	??0FmRestoreSettings@@QAE@AAVFmBkupEngine@@@Z @ 1 NONAME ; FmRestoreSettings::FmRestoreSettings(class FmBkupEngine &)
-	?tr@FmBkupEngine@@SA?AVQString@@PBD0@Z @ 2 NONAME ; class QString FmBkupEngine::tr(char const *, char const *)
-	?getStaticMetaObject@FmBkupEngine@@SAABUQMetaObject@@XZ @ 3 NONAME ; struct QMetaObject const & FmBkupEngine::getStaticMetaObject(void)
-	?trUtf8@FmBkupEngine@@SA?AVQString@@PBD0H@Z @ 4 NONAME ; class QString FmBkupEngine::trUtf8(char const *, char const *, int)
-	?error@FmBkupEngine@@QBEHXZ @ 5 NONAME ; int FmBkupEngine::error(void) const
-	?availableTargetDrive@FmBackupSettings@@QBE?AVQString@@XZ @ 6 NONAME ; class QString FmBackupSettings::availableTargetDrive(void) const
-	?GetSelectionL@FmRestoreSettings@@QBEXAAV?$QList@VFmRestoreInfo@@@@@Z @ 7 NONAME ; void FmRestoreSettings::GetSelectionL(class QList<class FmRestoreInfo> &) const
-	?content@FmBackupSettings@@QBEIXZ @ 8 NONAME ; unsigned int FmBackupSettings::content(void) const
-	?getBackupDriveList@FmBkupEngine@@QAEXAAVQStringList@@@Z @ 9 NONAME ; void FmBkupEngine::getBackupDriveList(class QStringList &)
-	?resetAndDestoryRestoreEntry@FmRestoreSettings@@AAEXXZ @ 10 NONAME ; void FmRestoreSettings::resetAndDestoryRestoreEntry(void)
-	?targetDriveToString@FmBackupSettings@@QAE?AVQString@@ABV2@@Z @ 11 NONAME ; class QString FmBackupSettings::targetDriveToString(class QString const &)
-	?setScheduling@FmBackupSettings@@QAEXW4TFileManagerBackupSchedule@1@@Z @ 12 NONAME ; void FmBackupSettings::setScheduling(enum FmBackupSettings::TFileManagerBackupSchedule)
-	?notifyFinish@FmBkupEngine@@IAEXH@Z @ 13 NONAME ; void FmBkupEngine::notifyFinish(int)
-	?qt_metacast@FmBkupEngine@@UAEPAXPBD@Z @ 14 NONAME ; void * FmBkupEngine::qt_metacast(char const *)
-	??0FmBackupSettings@@QAE@PAVFmBkupEngine@@@Z @ 15 NONAME ; FmBackupSettings::FmBackupSettings(class FmBkupEngine *)
-	?SetSelection@FmRestoreSettings@@QAEXAB_K@Z @ 16 NONAME ; void FmRestoreSettings::SetSelection(unsigned long long const &)
-	?startBackup@FmBkupEngine@@QAE_NV?$QList@PAVFmBkupDrivesAndOperation@@@@V?$QList@PAVFmBkupBackupCategory@@@@VQString@@I@Z @ 17 NONAME ; bool FmBkupEngine::startBackup(class QList<class FmBkupDrivesAndOperation *>, class QList<class FmBkupBackupCategory *>, class QString, unsigned int)
-	?notifyMemoryLow@FmBkupEngine@@IAEXHAAH@Z @ 18 NONAME ; void FmBkupEngine::notifyMemoryLow(int, int &)
-	?CreateEntry@FmRestoreSettings@@AAEPAVFmRestoreEntry@@ABVFmRestoreInfo@@@Z @ 19 NONAME ; class FmRestoreEntry * FmRestoreSettings::CreateEntry(class FmRestoreInfo const &)
-	?startRestore@FmBkupEngine@@QAE_NV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 20 NONAME ; bool FmBkupEngine::startRestore(class QList<class FmBkupDrivesAndOperation *>)
-	?resetAndDestoryBackupEntry@FmBackupSettings@@AAEXXZ @ 21 NONAME ; void FmBackupSettings::resetAndDestoryBackupEntry(void)
-	?weekdayToString@FmBackupSettings@@SA?AVQString@@W4TFileManagerBackupWeekday@1@@Z @ 22 NONAME ; class QString FmBackupSettings::weekdayToString(enum FmBackupSettings::TFileManagerBackupWeekday)
-	?tr@FmBkupEngine@@SA?AVQString@@PBD0H@Z @ 23 NONAME ; class QString FmBkupEngine::tr(char const *, char const *, int)
-	?contentToString@FmBackupSettings@@SA?AVQString@@I@Z @ 24 NONAME ; class QString FmBackupSettings::contentToString(unsigned int)
-	?RestoreSettingsL@FmBkupEngine@@QAEPAVFmRestoreSettings@@XZ @ 25 NONAME ; class FmRestoreSettings * FmBkupEngine::RestoreSettingsL(void)
-	?createBackupDateEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 26 NONAME ; class FmBackupEntry * FmBackupSettings::createBackupDateEntry(void)
-	?GetRestoreInfoArray@FmBkupEngine@@QAEXAAV?$QList@PAVFmBkupDrivesAndOperation@@@@AAV?$QList@VFmRestoreInfo@@@@ABVQString@@@Z @ 27 NONAME ; void FmBkupEngine::GetRestoreInfoArray(class QList<class FmBkupDrivesAndOperation *> &, class QList<class FmRestoreInfo> &, class QString const &)
-	?time@FmBackupSettings@@QBEABVQTime@@XZ @ 28 NONAME ; class QTime const & FmBackupSettings::time(void) const
-	?createWeekdayEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 29 NONAME ; class FmBackupEntry * FmBackupSettings::createWeekdayEntry(void)
-	?cancelBackup@FmBkupEngine@@QAEXXZ @ 30 NONAME ; void FmBkupEngine::cancelBackup(void)
-	?notifyUpdate@FmBkupEngine@@IAEXH@Z @ 31 NONAME ; void FmBkupEngine::notifyUpdate(int)
-	?save@FmBackupSettings@@QAEXXZ @ 32 NONAME ; void FmBackupSettings::save(void)
-	??_EFmBkupEngine@@UAE@I@Z @ 33 NONAME ; FmBkupEngine::~FmBkupEngine(unsigned int)
-	?restoreEntryList@FmRestoreSettings@@QAE?AV?$QList@PAVFmRestoreEntry@@@@XZ @ 34 NONAME ; class QList<class FmRestoreEntry *> FmRestoreSettings::restoreEntryList(void)
-	?createTimeEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 35 NONAME ; class FmBackupEntry * FmBackupSettings::createTimeEntry(void)
-	?weekday@FmBackupSettings@@QBE?AW4TFileManagerBackupWeekday@1@XZ @ 36 NONAME ; enum FmBackupSettings::TFileManagerBackupWeekday FmBackupSettings::weekday(void) const
-	?deleteBackup@FmBkupEngine@@QAEHV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 37 NONAME ; int FmBkupEngine::deleteBackup(class QList<class FmBkupDrivesAndOperation *>)
-	??1FmBackupSettings@@QAE@XZ @ 38 NONAME ; FmBackupSettings::~FmBackupSettings(void)
-	?setTime@FmBackupSettings@@QAEXABVQTime@@@Z @ 39 NONAME ; void FmBackupSettings::setTime(class QTime const &)
-	?backupEntryList@FmBackupSettings@@QAE?AV?$QList@PAVFmBackupEntry@@@@XZ @ 40 NONAME ; class QList<class FmBackupEntry *> FmBackupSettings::backupEntryList(void)
-	?contentsSelected@FmBackupSettings@@ABEHXZ @ 41 NONAME ; int FmBackupSettings::contentsSelected(void) const
-	?refreshList@FmBackupSettings@@AAEXXZ @ 42 NONAME ; void FmBackupSettings::refreshList(void)
-	?trUtf8@FmBkupEngine@@SA?AVQString@@PBD0@Z @ 43 NONAME ; class QString FmBkupEngine::trUtf8(char const *, char const *)
-	?CreateEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@ABVQString@@0W4TSettingType@2@@Z @ 44 NONAME ; class FmBackupEntry * FmBackupSettings::CreateEntry(class QString const &, class QString const &, enum FmBackupEntry::TSettingType)
-	?targetDrive@FmBackupSettings@@QBE?AVQString@@XZ @ 45 NONAME ; class QString FmBackupSettings::targetDrive(void) const
-	??0FmBkupEngine@@QAE@PAVQObject@@@Z @ 46 NONAME ; FmBkupEngine::FmBkupEngine(class QObject *)
-	?notifyPreparing@FmBkupEngine@@IAEX_N@Z @ 47 NONAME ; void FmBkupEngine::notifyPreparing(bool)
-	?load@FmRestoreSettings@@QAEXV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 48 NONAME ; void FmRestoreSettings::load(class QList<class FmBkupDrivesAndOperation *>)
-	?setWeekday@FmBackupSettings@@QAEXW4TFileManagerBackupWeekday@1@@Z @ 49 NONAME ; void FmBackupSettings::setWeekday(enum FmBackupSettings::TFileManagerBackupWeekday)
-	??1FmRestoreSettings@@QAE@XZ @ 50 NONAME ; FmRestoreSettings::~FmRestoreSettings(void)
-	?createContentsEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 51 NONAME ; class FmBackupEntry * FmBackupSettings::createContentsEntry(void)
-	?notifyBackupFilesExist@FmBkupEngine@@IAEXAA_N@Z @ 52 NONAME ; void FmBkupEngine::notifyBackupFilesExist(bool &)
-	?updateBackupDate@FmBackupSettings@@QAEXXZ @ 53 NONAME ; void FmBackupSettings::updateBackupDate(void)
-	?createSchedulingEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 54 NONAME ; class FmBackupEntry * FmBackupSettings::createSchedulingEntry(void)
-	?metaObject@FmBkupEngine@@UBEPBUQMetaObject@@XZ @ 55 NONAME ; struct QMetaObject const * FmBkupEngine::metaObject(void) const
-	?createTargetDriveEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 56 NONAME ; class FmBackupEntry * FmBackupSettings::createTargetDriveEntry(void)
-	?load@FmBackupSettings@@QAEXXZ @ 57 NONAME ; void FmBackupSettings::load(void)
-	??1FmBkupEngine@@UAE@XZ @ 58 NONAME ; FmBkupEngine::~FmBkupEngine(void)
-	?BackupSettingsL@FmBkupEngine@@QAEPAVFmBackupSettings@@XZ @ 59 NONAME ; class FmBackupSettings * FmBkupEngine::BackupSettingsL(void)
-	?setContent@FmBackupSettings@@QAEXI@Z @ 60 NONAME ; void FmBackupSettings::setContent(unsigned int)
-	?schedulingToString@FmBackupSettings@@QAE?AVQString@@W4TFileManagerBackupSchedule@1@@Z @ 61 NONAME ; class QString FmBackupSettings::schedulingToString(enum FmBackupSettings::TFileManagerBackupSchedule)
-	?setTargetDrive@FmBackupSettings@@QAEXABVQString@@@Z @ 62 NONAME ; void FmBackupSettings::setTargetDrive(class QString const &)
-	?staticMetaObject@FmBkupEngine@@2UQMetaObject@@B @ 63 NONAME ; struct QMetaObject const FmBkupEngine::staticMetaObject
-	?refreshList@FmRestoreSettings@@AAEXAAV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 64 NONAME ; void FmRestoreSettings::refreshList(class QList<class FmBkupDrivesAndOperation *> &)
-	?notifyStart@FmBkupEngine@@IAEX_NH@Z @ 65 NONAME ; void FmBkupEngine::notifyStart(bool, int)
-	?scheduling@FmBackupSettings@@QBE?AW4TFileManagerBackupSchedule@1@XZ @ 66 NONAME ; enum FmBackupSettings::TFileManagerBackupSchedule FmBackupSettings::scheduling(void) const
-	?qt_metacall@FmBkupEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 67 NONAME ; int FmBkupEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
-
--- a/filemanager/src/bwins/fmfiledialogu.def	Fri Jun 11 16:23:39 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-EXPORTS
-	??_EFmFileDialog@@UAE@I@Z @ 1 NONAME ; FmFileDialog::~FmFileDialog(unsigned int)
-	?qt_metacall@FmFileDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2 NONAME ; int FmFileDialog::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??1FmFileDialog@@EAE@XZ @ 3 NONAME ; FmFileDialog::~FmFileDialog(void)
-	?tr@FmFileDialog@@SA?AVQString@@PBD0H@Z @ 4 NONAME ; class QString FmFileDialog::tr(char const *, char const *, int)
-	?getOpenFileName@FmFileDialog@@SA?AVQString@@PAVHbWidget@@ABV2@1ABVQStringList@@V?$QFlags@W4Option@FmFileDialog@@@@@Z @ 5 NONAME ; class QString FmFileDialog::getOpenFileName(class HbWidget *, class QString const &, class QString const &, class QStringList const &, class QFlags<enum FmFileDialog::Option>)
-	??0FmFileDialog@@AAE@PAVQGraphicsItem@@@Z @ 6 NONAME ; FmFileDialog::FmFileDialog(class QGraphicsItem *)
-	?tr@FmFileDialog@@SA?AVQString@@PBD0@Z @ 7 NONAME ; class QString FmFileDialog::tr(char const *, char const *)
-	?getStaticMetaObject@FmFileDialog@@SAABUQMetaObject@@XZ @ 8 NONAME ; struct QMetaObject const & FmFileDialog::getStaticMetaObject(void)
-	?d_func@FmFileDialog@@ABEPBVFmFileDialogPrivate@@XZ @ 9 NONAME ; class FmFileDialogPrivate const * FmFileDialog::d_func(void) const
-	?exec@FmFileDialog@@AAE_NXZ @ 10 NONAME ; bool FmFileDialog::exec(void)
-	?trUtf8@FmFileDialog@@SA?AVQString@@PBD0@Z @ 11 NONAME ; class QString FmFileDialog::trUtf8(char const *, char const *)
-	?trUtf8@FmFileDialog@@SA?AVQString@@PBD0H@Z @ 12 NONAME ; class QString FmFileDialog::trUtf8(char const *, char const *, int)
-	?metaObject@FmFileDialog@@UBEPBUQMetaObject@@XZ @ 13 NONAME ; struct QMetaObject const * FmFileDialog::metaObject(void) const
-	?staticMetaObject@FmFileDialog@@2UQMetaObject@@B @ 14 NONAME ; struct QMetaObject const FmFileDialog::staticMetaObject
-	?getSaveFileName@FmFileDialog@@SA?AVQString@@PAVHbWidget@@ABV2@1ABVQStringList@@V?$QFlags@W4Option@FmFileDialog@@@@@Z @ 15 NONAME ; class QString FmFileDialog::getSaveFileName(class HbWidget *, class QString const &, class QString const &, class QStringList const &, class QFlags<enum FmFileDialog::Option>)
-	?d_func@FmFileDialog@@AAEPAVFmFileDialogPrivate@@XZ @ 16 NONAME ; class FmFileDialogPrivate * FmFileDialog::d_func(void)
-	?getExistingDirectory@FmFileDialog@@SA?AVQString@@PAVHbWidget@@ABV2@1ABVQStringList@@V?$QFlags@W4Option@FmFileDialog@@@@@Z @ 17 NONAME ; class QString FmFileDialog::getExistingDirectory(class HbWidget *, class QString const &, class QString const &, class QStringList const &, class QFlags<enum FmFileDialog::Option>)
-	?qt_metacast@FmFileDialog@@UAEPAXPBD@Z @ 18 NONAME ; void * FmFileDialog::qt_metacast(char const *)
-	?dialogClosed@FmFileDialog@@AAEXPAVHbAction@@@Z @ 19 NONAME ; void FmFileDialog::dialogClosed(class HbAction *)
-
--- a/filemanager/src/eabi/fmbkupenginewrapperu.def	Fri Jun 11 16:23:39 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-EXPORTS
-	_ZN12FmBkupEngine11notifyStartEbi @ 1 NONAME
-	_ZN12FmBkupEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
-	_ZN12FmBkupEngine11qt_metacastEPKc @ 3 NONAME
-	_ZN12FmBkupEngine11startBackupE5QListIP24FmBkupDrivesAndOperationES0_IP20FmBkupBackupCategoryE7QStringj @ 4 NONAME
-	_ZN12FmBkupEngine12cancelBackupEv @ 5 NONAME
-	_ZN12FmBkupEngine12deleteBackupE5QListIP24FmBkupDrivesAndOperationE @ 6 NONAME
-	_ZN12FmBkupEngine12notifyFinishEi @ 7 NONAME
-	_ZN12FmBkupEngine12notifyUpdateEi @ 8 NONAME
-	_ZN12FmBkupEngine12startRestoreE5QListIP24FmBkupDrivesAndOperationE @ 9 NONAME
-	_ZN12FmBkupEngine15BackupSettingsLEv @ 10 NONAME
-	_ZN12FmBkupEngine15notifyMemoryLowEiRi @ 11 NONAME
-	_ZN12FmBkupEngine15notifyPreparingEb @ 12 NONAME
-	_ZN12FmBkupEngine16RestoreSettingsLEv @ 13 NONAME
-	_ZN12FmBkupEngine16staticMetaObjectE @ 14 NONAME DATA 16
-	_ZN12FmBkupEngine18getBackupDriveListER11QStringList @ 15 NONAME
-	_ZN12FmBkupEngine19GetRestoreInfoArrayER5QListIP24FmBkupDrivesAndOperationERS0_I13FmRestoreInfoERK7QString @ 16 NONAME
-	_ZN12FmBkupEngine19getStaticMetaObjectEv @ 17 NONAME
-	_ZN12FmBkupEngine22notifyBackupFilesExistERb @ 18 NONAME
-	_ZN12FmBkupEngineC1EP7QObject @ 19 NONAME
-	_ZN12FmBkupEngineC2EP7QObject @ 20 NONAME
-	_ZN12FmBkupEngineD0Ev @ 21 NONAME
-	_ZN12FmBkupEngineD1Ev @ 22 NONAME
-	_ZN12FmBkupEngineD2Ev @ 23 NONAME
-	_ZN16FmBackupSettings10setContentEj @ 24 NONAME
-	_ZN16FmBackupSettings10setWeekdayENS_25TFileManagerBackupWeekdayE @ 25 NONAME
-	_ZN16FmBackupSettings11CreateEntryERK7QStringS2_N13FmBackupEntry12TSettingTypeE @ 26 NONAME
-	_ZN16FmBackupSettings11refreshListEv @ 27 NONAME
-	_ZN16FmBackupSettings13setSchedulingENS_26TFileManagerBackupScheduleE @ 28 NONAME
-	_ZN16FmBackupSettings14setTargetDriveERK7QString @ 29 NONAME
-	_ZN16FmBackupSettings15backupEntryListEv @ 30 NONAME
-	_ZN16FmBackupSettings15contentToStringEj @ 31 NONAME
-	_ZN16FmBackupSettings15createTimeEntryEv @ 32 NONAME
-	_ZN16FmBackupSettings15weekdayToStringENS_25TFileManagerBackupWeekdayE @ 33 NONAME
-	_ZN16FmBackupSettings16updateBackupDateEv @ 34 NONAME
-	_ZN16FmBackupSettings18createWeekdayEntryEv @ 35 NONAME
-	_ZN16FmBackupSettings18schedulingToStringENS_26TFileManagerBackupScheduleE @ 36 NONAME
-	_ZN16FmBackupSettings19createContentsEntryEv @ 37 NONAME
-	_ZN16FmBackupSettings19targetDriveToStringERK7QString @ 38 NONAME
-	_ZN16FmBackupSettings21createBackupDateEntryEv @ 39 NONAME
-	_ZN16FmBackupSettings21createSchedulingEntryEv @ 40 NONAME
-	_ZN16FmBackupSettings22createTargetDriveEntryEv @ 41 NONAME
-	_ZN16FmBackupSettings26resetAndDestoryBackupEntryEv @ 42 NONAME
-	_ZN16FmBackupSettings4loadEv @ 43 NONAME
-	_ZN16FmBackupSettings4saveEv @ 44 NONAME
-	_ZN16FmBackupSettings7setTimeERK5QTime @ 45 NONAME
-	_ZN16FmBackupSettingsC1EP12FmBkupEngine @ 46 NONAME
-	_ZN16FmBackupSettingsC2EP12FmBkupEngine @ 47 NONAME
-	_ZN16FmBackupSettingsD1Ev @ 48 NONAME
-	_ZN16FmBackupSettingsD2Ev @ 49 NONAME
-	_ZN17FmRestoreSettings11CreateEntryERK13FmRestoreInfo @ 50 NONAME
-	_ZN17FmRestoreSettings11refreshListER5QListIP24FmBkupDrivesAndOperationE @ 51 NONAME
-	_ZN17FmRestoreSettings12SetSelectionERKy @ 52 NONAME
-	_ZN17FmRestoreSettings16restoreEntryListEv @ 53 NONAME
-	_ZN17FmRestoreSettings27resetAndDestoryRestoreEntryEv @ 54 NONAME
-	_ZN17FmRestoreSettings4loadE5QListIP24FmBkupDrivesAndOperationE @ 55 NONAME
-	_ZN17FmRestoreSettingsC1ER12FmBkupEngine @ 56 NONAME
-	_ZN17FmRestoreSettingsC2ER12FmBkupEngine @ 57 NONAME
-	_ZN17FmRestoreSettingsD1Ev @ 58 NONAME
-	_ZN17FmRestoreSettingsD2Ev @ 59 NONAME
-	_ZNK12FmBkupEngine10metaObjectEv @ 60 NONAME
-	_ZNK12FmBkupEngine5errorEv @ 61 NONAME
-	_ZNK16FmBackupSettings10schedulingEv @ 62 NONAME
-	_ZNK16FmBackupSettings11targetDriveEv @ 63 NONAME
-	_ZNK16FmBackupSettings16contentsSelectedEv @ 64 NONAME
-	_ZNK16FmBackupSettings20availableTargetDriveEv @ 65 NONAME
-	_ZNK16FmBackupSettings4timeEv @ 66 NONAME
-	_ZNK16FmBackupSettings7contentEv @ 67 NONAME
-	_ZNK16FmBackupSettings7weekdayEv @ 68 NONAME
-	_ZNK17FmRestoreSettings13GetSelectionLER5QListI13FmRestoreInfoE @ 69 NONAME
-	_ZTI12FmBkupEngine @ 70 NONAME
-	_ZTV12FmBkupEngine @ 71 NONAME
-
--- a/filemanager/src/eabi/fmfiledialogu.def	Fri Jun 11 16:23:39 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-EXPORTS
-	_ZN12FmFileDialog11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
-	_ZN12FmFileDialog11qt_metacastEPKc @ 2 NONAME
-	_ZN12FmFileDialog15getOpenFileNameEP8HbWidgetRK7QStringS4_RK11QStringList6QFlagsINS_6OptionEE @ 3 NONAME
-	_ZN12FmFileDialog15getSaveFileNameEP8HbWidgetRK7QStringS4_RK11QStringList6QFlagsINS_6OptionEE @ 4 NONAME
-	_ZN12FmFileDialog16staticMetaObjectE @ 5 NONAME DATA 16
-	_ZN12FmFileDialog19getStaticMetaObjectEv @ 6 NONAME
-	_ZN12FmFileDialog20getExistingDirectoryEP8HbWidgetRK7QStringS4_RK11QStringList6QFlagsINS_6OptionEE @ 7 NONAME
-	_ZN12FmFileDialog4execEv @ 8 NONAME
-	_ZN12FmFileDialogC1EP13QGraphicsItem @ 9 NONAME
-	_ZN12FmFileDialogC2EP13QGraphicsItem @ 10 NONAME
-	_ZN12FmFileDialogD0Ev @ 11 NONAME
-	_ZN12FmFileDialogD1Ev @ 12 NONAME
-	_ZN12FmFileDialogD2Ev @ 13 NONAME
-	_ZNK12FmFileDialog10metaObjectEv @ 14 NONAME
-	_ZTI12FmFileDialog @ 15 NONAME
-	_ZTV12FmFileDialog @ 16 NONAME
-	_ZThn16_N12FmFileDialogD0Ev @ 17 NONAME
-	_ZThn16_N12FmFileDialogD1Ev @ 18 NONAME
-	_ZThn8_N12FmFileDialogD0Ev @ 19 NONAME
-	_ZThn8_N12FmFileDialogD1Ev @ 20 NONAME
-	_ZN12FmFileDialog12dialogClosedEP8HbAction @ 21 NONAME
-
--- a/filemanager/src/filemanager/burconfig.xml	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/burconfig.xml	Thu Jul 22 16:30:56 2010 +0100
@@ -51,6 +51,8 @@
             <exclude_uids>0x1000484b</exclude_uids> <!--Message store (EBUCatMessages)-->   
             <exclude_uids>0x100058db</exclude_uids> <!--MMS-settings (EBUCatMessages)-->    
             <exclude_uids>0x100058eb</exclude_uids> <!--E-mail-settings (EBUCatMessages)--> 
+            <exclude_uids>0x2001FE79</exclude_uids> <!--Messaging 101 (EBUCatMessages)-->   
+            <exclude_uids>0x2002A542</exclude_uids> <!--CsServer.exe (EBUCatMessages)-->    
             <exclude_uids>0x10003a73</exclude_uids> <!--Contacts model (EBUCatContacts)-->  
             <exclude_uids>0x101f4cce</exclude_uids> <!--Phonebook-app (EBUCatContacts)-->   
             <exclude_uids>0x10003a5b</exclude_uids> <!--Agenda model (EBUCatCalendar)-->    
@@ -73,6 +75,8 @@
             <uids>0x1000484b</uids><!--Message store-->                                     
             <uids>0x100058db</uids><!--MMS-settings-->                                      
             <uids>0x100058eb</uids><!--E-mail-settings-->                                   
+            <uids>0x2001FE79</uids><!--Messaging 101  -->                                   
+            <uids>0x2002A542</uids><!--CsServer.exe   -->                                   
             <exclude_uids></exclude_uids>                                                   
         </backupCategory>                                                                   
                                                                                             
@@ -115,7 +119,7 @@
             <uids>0x2002bcc0</uids><!--FileManager instead of MediaGallery backup c:/data/ -->              
             <uids>0x20029f80</uids><!--Notepad changed from 0x10005907-->                                           
             <uids>0x1028246F</uids><!--Java Backup process-->                               
-            <uids>0x10282475</uids><!--Java Registry process-->                             
+            <uids>0x200211DC</uids><!--Java Captain. And Java registry process removed-->                             
             <uids>0x102033E6</uids><!--MIDP2 Runtime process-->                             
             <exclude_uids></exclude_uids>                                                   
         </backupCategory>                                                                   
--- a/filemanager/src/filemanager/filemanager.pri	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/filemanager.pri	Thu Jul 22 16:30:56 2010 +0100
@@ -52,14 +52,14 @@
            src/components/fmcombinedquery.h \
            src/components/fmdlgutils.h \
            src/components/fmtimequery.h \
-           src/components/fmdatalistmodel.h \
            src/components/fmsingletextquery.h \
            src/components/fmmultitextquery.h \
            src/components/fmviewdetailsdialog.h \
            src/components/fmviewdetailsitem.h \
            src/components/fmdrivedetailstype.h \
            src/components/fmmessagebox.h \
-           src/components/fmdialog.h
+           src/components/fmdialog.h \
+           src/components/fmdrivequery.h
 
 SOURCES += src/main.cpp \
            src/fmdriverlistwidget.cpp \
@@ -94,14 +94,14 @@
            src/components/fmcombinedquery.cpp \
            src/components/fmdlgutils.cpp \
            src/components/fmtimequery.cpp \
-           src/components/fmdatalistmodel.cpp \
            src/components/fmsingletextquery.cpp \
            src/components/fmmultitextquery.cpp \
            src/components/fmviewdetailsdialog.cpp \
            src/components/fmviewdetailsitem.cpp \
            src/components/fmdrivedetailstype.cpp \
            src/components/fmmessagebox.cpp \
-           src/components/fmdialog.cpp
+           src/components/fmdialog.cpp \
+           src/components/fmdrivequery.cpp
 
 win32 {
     SOURCES += src/operationservice/fmoperationformat_win.cpp
--- a/filemanager/src/filemanager/filemanager.pro	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/filemanager.pro	Thu Jul 22 16:30:56 2010 +0100
@@ -18,6 +18,7 @@
 CONFIG      += hb
 TEMPLATE    = app
 TARGET = filemngr
+ICON = resources/qtg_large_filemgr.svg
 RESOURCES += filemanager.qrc
 INCLUDEPATH += ../fmbkupenginewrapper/inc
 # remove this path when export plat header to app layer path
@@ -32,7 +33,7 @@
 LIBS += -lfmfiledialog
 
 symbian {
-
+    SKINICON = qtg_large_filemgr
     LIBS += -lplatformenv \
             -lapmime \
             -lxqservice \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/resources/qtg_large_filemgr.svg	Thu Jul 22 16:30:56 2010 +0100
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<rect fill="none" height="60" width="60"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="30" x2="30" y1="2.9995" y2="57.1831">
+<stop offset="0" style="stop-color:#989C9E"/>
+<stop offset="0.8182" style="stop-color:#44454A"/>
+<stop offset="1" style="stop-color:#5D5F63"/>
+</linearGradient>
+<path d="M53.578,55.479c0,0.839-0.68,1.521-1.521,1.521H7.943c-0.84,0-1.521-0.681-1.521-1.521V4.521  C6.422,3.68,7.104,3,7.943,3h44.113c0.842,0,1.521,0.681,1.521,1.521V55.479z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="30" x2="30" y1="2.9995" y2="57.1831">
+<stop offset="0" style="stop-color:#D8DDE0"/>
+<stop offset="0.8182" style="stop-color:#5F6169"/>
+<stop offset="1" style="stop-color:#7D7F85"/>
+</linearGradient>
+<path d="M52.057,3H7.943C7.104,3,6.422,3.68,6.422,4.521v50.958C6.422,56.318,7.104,57,7.943,57h44.113  c0.842,0,1.521-0.681,1.521-1.521V4.521C53.578,3.68,52.898,3,52.057,3z M52.816,55.479c0,0.419-0.34,0.76-0.76,0.76H7.943  c-0.42,0-0.76-0.341-0.76-0.76V4.521c0-0.42,0.34-0.76,0.76-0.76h44.113c0.42,0,0.76,0.34,0.76,0.76V55.479z" fill="url(#SVGID_2_)"/>
+<path d="M49.773,26.578c0,0.839-0.68,1.521-1.52,1.521H11.746c-0.84,0-1.52-0.682-1.52-1.521V8.323  c0-0.84,0.68-1.521,1.52-1.521h36.508c0.84,0,1.52,0.68,1.52,1.521V26.578z" fill="url(#SVGID_3_)"/>
+<path d="M11.746,28.859c-1.258,0-2.281-1.023-2.281-2.281V8.323c0-1.258,1.023-2.281,2.281-2.281  h36.508c1.258,0,2.281,1.023,2.281,2.281v18.254c0,1.258-1.023,2.281-2.281,2.281H11.746z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M49.773,26.578c0,0.839-0.68,1.521-1.52,1.521H11.746c-0.84,0-1.52-0.682-1.52-1.521V8.323  c0-0.84,0.68-1.521,1.52-1.521h36.508c0.84,0,1.52,0.68,1.52,1.521V26.578z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="30" x2="30" y1="14.4082" y2="22.0395">
+<stop offset="0" style="stop-color:#5B5B5B"/>
+<stop offset="1" style="stop-color:#B0B0B0"/>
+</linearGradient>
+<rect fill="url(#SVGID_5_)" height="7.605" width="12.168" x="23.916" y="14.408"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="30" x2="30" y1="15.1685" y2="21.2736">
+<stop offset="0" style="stop-color:#E8E8E8"/>
+<stop offset="1" style="stop-color:#828282"/>
+</linearGradient>
+<rect fill="url(#SVGID_6_)" height="6.084" width="10.648" x="24.676" y="15.168"/>
+<path d="M48.254,6.803H11.746c-0.84,0-1.52,0.68-1.52,1.521v18.254c0,0.839,0.68,1.521,1.52,1.521  h36.508c0.84,0,1.52-0.682,1.52-1.521V8.323C49.773,7.483,49.094,6.803,48.254,6.803z M49.014,26.578c0,0.418-0.34,0.761-0.76,0.761  H11.746c-0.42,0-0.76-0.342-0.76-0.761V8.323c0-0.419,0.34-0.76,0.76-0.76h36.508c0.42,0,0.76,0.34,0.76,0.76V26.578z" fill="#FFFFFF" fill-opacity="0.5" stroke-opacity="0.5"/>
+<polygon fill="#FFFFFF" fill-opacity="0.6" points="23.916,22.014 36.084,22.014 35.324,21.253 23.916,21.253 " stroke-opacity="0.6"/>
+<path d="M10.227,36.464v-15.12c0-1.757,1.346-3.133,3.066-3.133h13.936  c2.424,0,2.928,2.088,3.094,2.775l-0.025,0.006c0.133,0.336,0.297,0.863,0.549,1.69c0.023,0.003,0.049,0.005,0.074,0.005  l15.703-0.001c1.738,0,3.15,1.404,3.15,3.131v10.647H10.227z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M10.986,35.704v-14.36c0-1.331,1.012-2.373,2.307-2.373h13.936  c1.824,0,2.182,1.479,2.354,2.193c0,0,0.408,1.323,0.633,2.06c0.1,0.144,0.43,0.223,0.705,0.223l15.703-0.002  c1.318,0,2.391,1.064,2.391,2.371v9.887H10.986z" fill="#020202" fill-opacity="0.3" stroke-opacity="0.3"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="30" x2="30" y1="18.1982" y2="34.3475">
+<stop offset="0" style="stop-color:#FEEFA7"/>
+<stop offset="0.3273" style="stop-color:#FEE570"/>
+<stop offset="0.6485" style="stop-color:#F0C12B"/>
+<stop offset="1" style="stop-color:#E6A501"/>
+</linearGradient>
+<path d="M46.623,23.446H30.992c0,0-1.135,0.069-1.484-0.693c-0.221-0.728-0.666-2.17-0.666-2.17  c-0.219-0.919-0.506-1.611-1.613-1.611H13.293c-0.881,0-1.547,0.722-1.547,1.611v13.6h36.508v-9.126  C48.254,24.168,47.502,23.446,46.623,23.446z" fill="url(#SVGID_7_)"/>
+<path d="M46.623,23.446H30.992c0,0-1.135,0.069-1.484-0.693c-0.221-0.728-0.666-2.17-0.666-2.17  c-0.219-0.919-0.506-1.611-1.613-1.611H13.293c-0.881,0-1.547,0.722-1.547,1.611v0.761c0-0.89,0.666-1.612,1.547-1.612h13.936  c1.107,0,1.395,0.693,1.613,1.612c0,0,0.445,1.44,0.666,2.17c0.35,0.76,1.484,0.692,1.484,0.692h15.631  c0.879,0,1.631,0.722,1.631,1.61v-0.761C48.254,24.168,47.502,23.446,46.623,23.446z" fill="#FCF3D0" fill-opacity="0.8" stroke-opacity="0.8"/>
+<path d="M50.535,52.436c0,0.839-0.682,1.521-1.521,1.521H10.986c-0.84,0-1.521-0.682-1.521-1.521V33.421  c0-0.84,0.682-1.52,1.521-1.52h38.027c0.84,0,1.521,0.68,1.521,1.52V52.436z" fill="url(#SVGID_8_)"/>
+<path d="M10.986,56.239c-1.678,0-3.043-1.365-3.043-3.042V34.183c0-1.678,1.365-3.042,3.043-3.042  h38.027c1.678,0,3.043,1.364,3.043,3.042v19.014c0,1.677-1.365,3.042-3.043,3.042H10.986z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M10.986,55.479c-1.26,0-2.283-1.023-2.283-2.282V34.183c0-1.258,1.023-2.281,2.283-2.281  h38.027c1.258,0,2.283,1.023,2.283,2.281v19.014c0,1.259-1.025,2.282-2.283,2.282H10.986z" fill="#020202" fill-opacity="0.3" stroke-opacity="0.3"/>
+<path d="M50.535,52.436c0,0.839-0.682,1.521-1.521,1.521H10.986c-0.84,0-1.521-0.682-1.521-1.521V33.421  c0-0.84,0.682-1.52,1.521-1.52h38.027c0.84,0,1.521,0.68,1.521,1.52V52.436z" fill="url(#SVGID_8_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="30" x2="30" y1="40.2671" y2="48.6622">
+<stop offset="0" style="stop-color:#5B5B5B"/>
+<stop offset="1" style="stop-color:#B0B0B0"/>
+</linearGradient>
+<rect fill="url(#SVGID_10_)" height="8.367" width="13.691" x="23.154" y="40.267"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="30" x2="30" y1="41.0278" y2="47.8963">
+<stop offset="0" style="stop-color:#E8E8E8"/>
+<stop offset="1" style="stop-color:#828282"/>
+</linearGradient>
+<rect fill="url(#SVGID_11_)" height="6.845" width="12.168" x="23.916" y="41.028"/>
+<path d="M49.014,31.901H10.986c-0.84,0-1.521,0.68-1.521,1.52v19.015c0,0.839,0.682,1.521,1.521,1.521  h38.027c0.84,0,1.521-0.682,1.521-1.521V33.421C50.535,32.581,49.854,31.901,49.014,31.901z M49.773,52.436  c0,0.419-0.34,0.761-0.76,0.761H10.986c-0.42,0-0.76-0.341-0.76-0.761V33.421c0-0.419,0.34-0.759,0.76-0.759h38.027  c0.42,0,0.76,0.34,0.76,0.759V52.436z" fill="#FFFFFF" fill-opacity="0.5" stroke-opacity="0.5"/>
+<polygon fill="#FFFFFF" points="20.814,31.901 22.639,37.226 37.359,37.226 39.184,31.901 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="30" x2="30" y1="31.9014" y2="36.4799">
+<stop offset="0" style="stop-color:#989C9E"/>
+<stop offset="0.8182" style="stop-color:#44454A"/>
+<stop offset="1" style="stop-color:#5D5F63"/>
+</linearGradient>
+<polygon fill="url(#SVGID_12_)" points="36.846,36.464 23.154,36.464 21.635,31.901 38.365,31.901 "/>
+<polygon fill="#FFFFFF" points="21.576,6.803 23.4,11.366 36.6,11.366 38.424,6.803 "/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="30" x2="30" y1="6.8027" y2="10.6184">
+<stop offset="0" style="stop-color:#989C9E"/>
+<stop offset="0.8182" style="stop-color:#44454A"/>
+<stop offset="1" style="stop-color:#5D5F63"/>
+</linearGradient>
+<polygon fill="url(#SVGID_13_)" points="36.084,10.605 23.916,10.605 22.395,6.803 37.605,6.803 "/>
+<rect fill="#020202" fill-opacity="0.2" height="1.522" stroke-opacity="0.2" width="36.508" x="11.746" y="30.379"/>
+<rect fill="#020202" fill-opacity="0.1" height="0.76" stroke-opacity="0.1" width="36.508" x="11.746" y="29.62"/>
+<rect fill="#020202" fill-opacity="0.05" height="0.761" stroke-opacity="0.05" width="36.508" x="11.746" y="28.859"/>
+<polygon fill="#FFFFFF" fill-opacity="0.8" points="36.846,48.634 23.154,48.634 23.916,47.873 36.084,47.873 " stroke-opacity="0.8"/>
+<rect fill="none" height="60" width="60"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="30" x2="30" y1="6.8027" y2="28.1705">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0.7879" style="stop-color:#A6A6A6"/>
+<stop offset="1" style="stop-color:#B1B1B1"/>
+</linearGradient>
+</defs>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="30" x2="30" y1="31.9014" y2="54.0325">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0.7879" style="stop-color:#A6A6A6"/>
+<stop offset="1" style="stop-color:#B1B1B1"/>
+</linearGradient>
+</defs>
+</g>
+</svg>
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupconfigloader.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupconfigloader.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -25,8 +25,6 @@
 #include <QByteArray>
 #include <QCoreApplication>
 
-#include <hbmessagebox.h>
-
 FmBackupConfigLoader::FmBackupConfigLoader(void)
 {
     
--- a/filemanager/src/filemanager/src/backuprestore/fmbackuprestorehandler.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackuprestorehandler.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -26,8 +26,6 @@
 #include "fmcommon.h"
 #include "fmdlgutils.h"
 
-#include <hbmessagebox.h>
-
 FmBackupRestoreHandler::FmBackupRestoreHandler( QObject *parent ) : QObject( parent ), mBackupConfigLoader( 0 )
 {
     mBkupEngine = new FmBkupEngine( this );
@@ -38,7 +36,7 @@
     connect( mBkupEngine, SIGNAL( notifyStart( bool, int) ), this, SLOT( onNotifyStart( bool, int ) ), Qt::QueuedConnection );
     connect( mBkupEngine, SIGNAL( notifyUpdate(int) ), this, SLOT( onNotifyUpdate(int) ), Qt::QueuedConnection );
     connect( mBkupEngine, SIGNAL( notifyFinish(int) ), 
-        this, SLOT( onNotifyFinish(int) ), Qt::QueuedConnection );
+        this, SLOT( onNotifyFinish(int) ), Qt::DirectConnection );
     connect( mBkupEngine, SIGNAL( notifyMemoryLow(int, int& ) ), 
         this, SLOT( onNotifyMemoryLow(int, int&) ) );
     connect( mBkupEngine, SIGNAL( notifyBackupFilesExist( bool& )), this, SLOT( onNotifyBackupFilesExist( bool& )));
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupview.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupview.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -20,7 +20,7 @@
 #include "fmbackupwidget.h"
 #include "fmviewmanager.h"
 #include "fmoperationbase.h"
-
+#include "fmdlgutils.h"
 
 #include <QApplication>
 
@@ -28,12 +28,10 @@
 #include <hbtoolbar.h>
 #include <hbmenu.h>
 #include <hbmainwindow.h>
-#include <hbmessagebox.h>
-
 
 FmBackupView::FmBackupView() : FmViewBase( EBackupView )
 {
-	setTitle( tr( "Backup" ) );
+	setTitle( hbTrId( "Backup" ) );
 
 	initToolBar();
 	initMainWidget();
@@ -97,19 +95,19 @@
     case FmErrNone:
         break;
     case FmErrWrongParam:
-        HbMessageBox::information( QString( hbTrId("Operation canceled with wrong param!") ) );
+        FmDlgUtils::information( QString( hbTrId("Operation canceled with wrong param!") ) );
         break;
     case FmErrAlreadyStarted:
-        HbMessageBox::information( QString( hbTrId("Operation canceled because already started!") ) );
+        FmDlgUtils::information( QString( hbTrId("Operation canceled because already started!") ) );
         break;
     case FmErrPathNotFound:
-        HbMessageBox::information( QString( hbTrId("Operation canceled because can not find target path or drive is not available!") ) );
+        FmDlgUtils::information( QString( hbTrId("Operation canceled because can not find target path or drive is not available!") ) );
         break;
     case FmErrAlreadyExists:
-        HbMessageBox::information( QString( hbTrId("backup canceled") ) );
+        FmDlgUtils::information( QString( hbTrId("backup canceled") ) );
         break;
     default:
-        HbMessageBox::information( QString( hbTrId("backup failed") ) );
+        FmDlgUtils::information( QString( hbTrId("backup failed") ) );
         break;
     }
 }
@@ -140,7 +138,16 @@
     toolBar()->removeAction( mToolBarAction );
 }
 
-void FmBackupView::refreshBackupView()
+void FmBackupView::refreshBackupDate()
 {
     mMainWidget->updateBackupDate();
 }
+
+void FmBackupView::refreshModel( const QString& path )
+{
+    if( !path.isEmpty() ) {
+        // ignore non-empty refresh signal as it means change of folder/file, not drive.
+        return;
+    }
+    mMainWidget->refreshModel();
+}
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupview.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupview.h	Thu Jul 22 16:30:56 2010 +0100
@@ -46,7 +46,9 @@
     void removeToolBarAction();
 
 public slots:
-    void refreshBackupView();
+    void refreshBackupDate();
+    void refreshModel( const QString& path );
+    
 private slots:
     void on_leftAction_triggered();
 
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupviewitem.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- * 
- * Contributors:
- *     
- * 
- * Description:
- *     The source file of the back up view list item of file manager
- */
-
-#include "fmbackupviewitem.h"
-
-#include <QGraphicsLinearLayout>
-
-#include <hblabel.h>
-#include <hbcheckbox.h>
-#include <hbwidget.h>
-#include <hblineedit.h>
-
-
-FmBackupViewItem::FmBackupViewItem( QGraphicsItem *parent )
-  : mTitleLabel( 0 ),
-    //mTipsLabel( 0 ),
-	mTipsLineEdit( 0 ),
-    HbListViewItem( parent )
-{
-	init();
-}
-
-FmBackupViewItem::~FmBackupViewItem()
-{
-}
-
-void FmBackupViewItem::polish(HbStyleParameters& params)
-{
-    Q_UNUSED(params);
-}
-
-HbAbstractViewItem *FmBackupViewItem::createItem()
-{
-	return new FmBackupViewItem( parentItem() );
-}
-
-void FmBackupViewItem::updateChildItems()
-{
-	QString string = modelIndex().data( Qt::DisplayRole ).toString();	
-
-	QStringList stringList = string.split( '\t' );
-
-	if( stringList.count() == 0 ){
-		return;
-	}
-
-	 mTitleLabel->setText( stringList.first() );
-
-	 if( stringList.first() != stringList.last() ){
-	     //mTipsLabel->setText( stringList.last() );
-		 mTipsLineEdit->setText( stringList.last() );
-	 }
-}
-
-
-void FmBackupViewItem::init()
-{
-	QGraphicsLinearLayout *vLayout = new QGraphicsLinearLayout();
-	vLayout->setOrientation( Qt::Vertical );
-
-	mTitleLabel = new HbLabel( "" );
-	mTitleLabel->setFontSpec( HbFontSpec( HbFontSpec::Primary ) );
-	vLayout->addItem( mTitleLabel );
-	vLayout->setAlignment( mTitleLabel, Qt::AlignLeft );
-
-	//mTipsLabel = new HbLabel( "" );
-	//mTipsLabel->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
-	//mTipsLabel->setAlignment( Qt::AlignHCenter );
-		
-	//vLayout->addItem( mTipsLabel );
-	//vLayout->setAlignment( mTipsLabel, Qt::AlignLeft );
-
-	mTipsLineEdit = new HbLineEdit( "" );
-	mTipsLineEdit->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
-	//mTipsLineEdit->setAlignment( Qt::AlignHCenter );
-	mTipsLineEdit->setReadOnly( true );
-
-	vLayout->addItem( mTipsLineEdit );
-	vLayout->setAlignment( mTipsLineEdit, Qt::AlignLeft );
-
-	setLayout( vLayout );
-}
-
-//FmRestoreViewItem
-FmRestoreViewItem::FmRestoreViewItem( QGraphicsItem *parent )
-  : mRestoreContentLabel( 0 ),
-    mDateTimeLabel( 0 ),
-	mCheckBox( 0 ),
-    HbListViewItem( parent )
-{
-	init();
-}
-
-FmRestoreViewItem::~FmRestoreViewItem()
-{
-}
-
-
-HbAbstractViewItem *FmRestoreViewItem::createItem()
-{
-	return new FmRestoreViewItem( parentItem() );
-}
-
-void FmRestoreViewItem::polish(HbStyleParameters& params)
-{
-    Q_UNUSED(params);
-}
-
-void FmRestoreViewItem::updateChildItems()
-{
-	QString string = modelIndex().data( Qt::DisplayRole ).toString();	
-
-	QStringList stringList = string.split( '\t' );
-
-	if( stringList.count() == 0 ){
-		return;
-	}
-
-	 mRestoreContentLabel->setText( stringList.first() );
-
-	 if( stringList.first() != stringList.last() ){
-	     mDateTimeLabel->setText( stringList.last() );
-	 }
-
-}
-
-
-void FmRestoreViewItem::init()
-{
-	QGraphicsLinearLayout *hLayout = new QGraphicsLinearLayout();
-	hLayout->setOrientation( Qt::Horizontal );
-
-	mCheckBox = new HbCheckBox( this );
-    hLayout->addItem( mCheckBox );
-	hLayout->setAlignment( mCheckBox, Qt::AlignVCenter );
-
-	QGraphicsLinearLayout *vLayout = new QGraphicsLinearLayout();
-	vLayout->setOrientation( Qt::Vertical );
-
-	mRestoreContentLabel = new HbLabel("");
-	mRestoreContentLabel->setFontSpec( HbFontSpec( HbFontSpec::Primary ) );
-	vLayout->addItem( mRestoreContentLabel );
-	vLayout->setAlignment( mRestoreContentLabel, Qt::AlignLeft );
-
-	mDateTimeLabel = new HbLabel("");
-	mDateTimeLabel->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
-	vLayout->addItem( mDateTimeLabel );
-	vLayout->setAlignment( mDateTimeLabel, Qt::AlignLeft );
-
-	HbWidget *textWidget = new HbWidget();
-	textWidget->setLayout(vLayout);
-
-	hLayout->addItem( textWidget );
-	hLayout->setAlignment( textWidget, Qt::AlignVCenter );
-
-	setLayout( hLayout );
-
-}
-
-void FmRestoreViewItem::setCheckBoxState()
-{
-	if ( mCheckBox->checkState() ==  Qt::Unchecked ){
-		mCheckBox->setCheckState( Qt::Checked );
-		setSelected( true );
-	}
-	else if( mCheckBox->checkState() ==  Qt::Checked ){
-		mCheckBox->setCheckState( Qt::Unchecked );
-		setSelected( false );
-	}
-}
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupviewitem.h	Fri Jun 11 16:23:39 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- * 
- * Contributors:
- *     
- * 
- * Description:
- *     The header file of the back up view list item of file manager
- */
-
-#ifndef FMBACKUPVIEWITEM_H
-#define FMBACKUPVIEWITEM_H
-
-#include <hblistviewitem.h>
-
-class HbLabel;
-class HbCheckBox;
-class HbLineEdit;
-
-class FmBackupViewItem : public HbListViewItem
-{
-	Q_OBJECT
-
-public:
-	FmBackupViewItem( QGraphicsItem *parent = 0  );
-	~FmBackupViewItem();
-
-public:
-	virtual HbAbstractViewItem *createItem();
-	virtual void updateChildItems();
-private:
-    virtual void polish(HbStyleParameters& params);
-
-private:
-    void init();
-
-private:
-    HbLabel *mTitleLabel;
-    //HbLabel *mTipsLabel;
-	HbLineEdit *mTipsLineEdit;
-};
-
-//FmRestoreViewItem
-class FmRestoreViewItem : public HbListViewItem
-{
-	Q_OBJECT
-
-public:
-    FmRestoreViewItem( QGraphicsItem *parent = 0  );
-	  ~FmRestoreViewItem();
-
-public:
-	virtual HbAbstractViewItem *createItem();
-	virtual void updateChildItems();
-	void setCheckBoxState();
-
-private:
-    virtual void polish(HbStyleParameters& params);
-
-private:
-    void init();
-
-private:
-    HbLabel *mRestoreContentLabel;
-    HbLabel *mDateTimeLabel;
-
-	HbCheckBox *mCheckBox;
-};
-
-#endif
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -49,30 +49,24 @@
 
 void FmBackupWidget::on_list_released( const QModelIndex &index )
 {
-    if( mListReleased == true ) {
-        return;
-    }
-    mListReleased = true;
     HbDataFormModelItem *item = mModel->itemFromIndex(index);
     if( item != mLastPressedItem || mDataForm->isScrolling() || mScrolled ) {
         mScrolled = false;
-        mListReleased = false;
         return;
     }
     mScrolled = false;
 
     if( item == mContentsItem ){
-        ChangeContents();
+        emit changeContents();
     } else if( item == mTargetItem ){
-        ChangeTargetDrive();
+        emit changeTargetDrive();
     } else if( item == mSchedulingItem ){
-        ChangeScheduling();
+        emit changeScheduling();
     } else if( item == mWeekdayItem ){
-        ChangeWeekday();
+        emit changeWeekday();
     } else if( item == mTimeItem ){
-        ChangeTime();
+        emit changeTime();
     }
-    mListReleased = false;
 }
 
 void FmBackupWidget::on_list_pressed( const QModelIndex &index )
@@ -110,7 +104,13 @@
 
     connect( this, SIGNAL( doModelRefresh() ),
              this, SLOT( refreshModel() ), Qt::QueuedConnection );
-
+    
+    connect( this, SIGNAL(changeContents()), this, SLOT(on_changeContents()), Qt::QueuedConnection);
+    connect( this, SIGNAL(changeScheduling()), this, SLOT(on_changeScheduling()), Qt::QueuedConnection);
+    connect( this, SIGNAL(changeWeekday()), this, SLOT(on_changeWeekday()), Qt::QueuedConnection);
+    connect( this, SIGNAL(changeTime()), this, SLOT(on_changeTime()), Qt::QueuedConnection);
+    connect( this, SIGNAL(changeTargetDrive()), this, SLOT(on_changeTargetDrive()), Qt::QueuedConnection);
+    
     //mBackupSettings = new FmBackupSettings();
     mBackupSettings = FmViewManager::viewManager()->operationService()->backupRestoreHandler()->bkupEngine()->BackupSettingsL();
     mBackupSettings->load();
@@ -147,7 +147,7 @@
 void FmBackupWidget::initModel()
 {
     mContentsGroup = mModel->appendDataFormGroup(
-        QString( tr( "Contents" ) ), mModel->invisibleRootItem());
+        QString( hbTrId( "Contents" ) ), mModel->invisibleRootItem());
 
     mContentsItem = mModel->appendDataFormItem(
         HbDataFormModelItem::TextItem, QString( "" ), mContentsGroup );
@@ -158,7 +158,7 @@
     mTargetItem->setContentWidgetData( QString("readOnly"), QString("true") );
 
     mSchedulingGroup = mModel->appendDataFormGroup(
-        QString( tr( "Scheduling" ) ), mModel->invisibleRootItem());
+        QString( hbTrId( "Scheduling" ) ), mModel->invisibleRootItem());
 
     mSchedulingItem = mModel->appendDataFormItem(
         HbDataFormModelItem::TextItem, QString( "" ), mSchedulingGroup );
@@ -271,12 +271,10 @@
     expandAllGroup();
 }
 
-
-
-void FmBackupWidget::ChangeContents()
+void FmBackupWidget::on_changeContents()
 {
     
-    QString title = constFileManagerBackupSettingsTitleContents;  
+    QString title = mContentsItem->label();  
     QStringList queryStringList;
     quint32 contentMask = FmBackupSettings::EFileManagerBackupContentAll;
     while ( contentMask <= FmBackupSettings::EFileManagerBackupContentLast)
@@ -294,9 +292,9 @@
 } 
 
 
-void FmBackupWidget::ChangeScheduling()
+void FmBackupWidget::on_changeScheduling()
 {
-    QString title = constFileManagerBackupSettingsTitleScheduling;  
+    QString title = mSchedulingItem->label();  
     QStringList queryStringList;
 
     FmBackupSettings::TFileManagerBackupSchedule schedule = FmBackupSettings::EFileManagerBackupScheduleNever;
@@ -316,9 +314,9 @@
     }
 }
 
-void FmBackupWidget::ChangeWeekday()
+void FmBackupWidget::on_changeWeekday()
 {
-    QString title = constFileManagerBackupSettingsTitleWeekday;  
+    QString title = mWeekdayItem->label();
     QStringList queryStringList;
 
     FmBackupSettings::TFileManagerBackupWeekday weekday = FmBackupSettings::EFileManagerBackupWeekdayMonday;
@@ -338,9 +336,9 @@
     }
 }
 
-void FmBackupWidget::ChangeTime()
+void FmBackupWidget::on_changeTime()
 {
-    QString title = constFileManagerBackupSettingsTitleTime;  
+    QString title = mTimeItem->label();  
     QTime queryTime = mBackupSettings->time();
 
     if( FmDlgUtils::showTimeSettingQuery( title, queryTime ) )
@@ -351,39 +349,13 @@
 }
 
 
-void FmBackupWidget::ChangeTargetDrive()
+void FmBackupWidget::on_changeTargetDrive()
 {
-    QString title = constFileManagerBackupSettingsTitleTargetDrive;  
-    QStringList queryStringList;
-    QStringList driveStringList;
-
-    QStringList driveList;
-    //FmUtils::getDriveList( driveList, true );
-    FmViewManager::viewManager()->operationService()->backupRestoreHandler()->getBackupDriveList( driveList );
-    QString targetDrive =  mBackupSettings->targetDrive();
-    int selectIndex = -1;
-
-    int currentIndex = 0;
-    for( QStringList::const_iterator it = driveList.begin(); it != driveList.end(); ++it )
-    {
-        QString drive = (*it);
-        drive = FmUtils::removePathSplash( drive );
-        QString driveWithVolume = FmUtils::fillDriveVolume( drive, true );
-
-        driveStringList.push_back( drive );
-        queryStringList.push_back( driveWithVolume );
-
-        if( drive == targetDrive )
-        {
-            // adjust index offset against drive.
-            selectIndex = currentIndex;
-        }
-        ++currentIndex;
-    }
-    
-    if( FmDlgUtils::showSingleSettingQuery( title, queryStringList, selectIndex ) )
-    {
-        mBackupSettings->setTargetDrive( driveStringList.at( selectIndex ) );
+    QString title = mTargetItem->label();  
+    QString drive = FmDlgUtils::showBackupDriveQuery( title );
+    if( ( !drive.isEmpty() ) && 
+            ( mBackupSettings->targetDrive().compare( drive, Qt::CaseInsensitive ) != 0 ) ) {
+        mBackupSettings->setTargetDrive( drive );
         emit doModelRefresh();
     }
 }
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.h	Thu Jul 22 16:30:56 2010 +0100
@@ -39,25 +39,32 @@
 
 signals:
     void doModelRefresh();
+    void changeContents();
+    void changeScheduling();
+    void changeWeekday();
+    void changeTime();
+    void changeTargetDrive();
 
+public slots:
+    // refresh whole model immediately.
+    void refreshModel();
+    
 private slots:
     void on_list_released( const QModelIndex &index );
     void on_list_pressed( const QModelIndex &index );
     void on_list_scrollingStarted();
-
-    void refreshModel();
+    
+    void on_changeContents();
+    void on_changeScheduling();
+    void on_changeWeekday();
+    void on_changeTime();
+    void on_changeTargetDrive();
 
 private:
 
     void initModel();
     void init();
     void expandAllGroup();
-	
-	void ChangeContents();
-    void ChangeScheduling();
-	void ChangeWeekday();
-    void ChangeTime();
-    void ChangeTargetDrive();
 
 private:
 
--- a/filemanager/src/filemanager/src/backuprestore/fmdeletebackupview.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmdeletebackupview.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -28,9 +28,6 @@
 #include <hbtoolbar.h>
 #include <hbmenu.h>
 #include <hbmainwindow.h>
-#include <hbmessagebox.h>
-
-
 
 FmDeleteBackupView::FmDeleteBackupView() : FmViewBase( EDeleteBackupView )
 {
@@ -38,8 +35,7 @@
 
 	initMainWidget();
 	initToolBar();
-	initMenu();
-    adjustActions();
+	initMenu();    
 	mOperationService = FmViewManager::viewManager()->operationService();
 
 	QMetaObject::connectSlotsByName( this );
@@ -64,6 +60,7 @@
     mDeleteAction->setObjectName( "deleteAction" );
     mDeleteAction->setText( hbTrId( "Delete backups" ) );
     menu()->addAction( mDeleteAction );
+    mDeleteAction->setEnabled(false);
 }
 
 void FmDeleteBackupView::initMainWidget()
@@ -71,22 +68,31 @@
 	mDeleteBackupWidget = new FmDeleteBackupWidget( this );
     mDeleteBackupWidget->setObjectName( "deleteBackupWidget" );
     setWidget( mDeleteBackupWidget );
+    connect(mDeleteBackupWidget, SIGNAL(stateChanged(int)), this, SLOT(on_deleteBackupWidget_stateChanged(int)));
 
 }
 
+void FmDeleteBackupView::on_deleteBackupWidget_stateChanged(int state)
+{
+    Q_UNUSED(state);
+    QList<int> items = mDeleteBackupWidget->selectionIndexes();
+    if (items.count() > 0) {
+        mLeftAction->setEnabled(true);
+        mDeleteAction->setEnabled(true);
+    } else {
+        mLeftAction->setEnabled(false);
+        mDeleteAction->setEnabled(false);
+    }
+}
+
 void FmDeleteBackupView::initToolBar()
 {
 	mLeftAction = new HbAction( this );
     mLeftAction->setObjectName( "leftAction" );
     mLeftAction->setText( hbTrId( "delete" ) );
     toolBar()->addAction( mLeftAction );
-    
+    mLeftAction->setEnabled(false);
     toolBar()->setOrientation( Qt::Horizontal );
-
-    //action = new HbAction( this );
-    //action->setObjectName( "rightAction" );
-    //action->setText( tr( "" ) );
-    //toolBar()->addAction( action );
 }
 
 void FmDeleteBackupView::on_leftAction_triggered()
@@ -109,7 +115,7 @@
 void FmDeleteBackupView::on_deleteAction_triggered()
 {
     QList<int > items = mDeleteBackupWidget->selectionIndexes();
-    if( items.count() <= 0 || !FmDlgUtils::question( tr("Confirm Deletion?" ) ) ){
+    if( items.count() <= 0 || !FmDlgUtils::question( hbTrId("Confirm Deletion?" ) ) ){
         return;
     }
 
@@ -121,18 +127,7 @@
                    
     mOperationService->syncDeleteBackup( selection );
     mDeleteBackupWidget->refresh();
-    adjustActions();
-}
-
-void FmDeleteBackupView::adjustActions()
-{
-    if( mDeleteBackupWidget->backupDataCount() > 0 ) {
-        mDeleteAction->setDisabled( false );
-        mLeftAction->setDisabled( false );
-    } else {
-        mDeleteAction->setDisabled( true );
-        mLeftAction->setDisabled( true );
-    }
+    on_deleteBackupWidget_stateChanged(0);
 }
 
 void FmDeleteBackupView::removeToolBarAction()
@@ -140,3 +135,7 @@
     toolBar()->removeAction( mLeftAction );
 }
 
+void FmDeleteBackupView::refreshDeleteBackupView()
+{
+    mDeleteBackupWidget->refresh();
+}
--- a/filemanager/src/filemanager/src/backuprestore/fmdeletebackupview.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmdeletebackupview.h	Thu Jul 22 16:30:56 2010 +0100
@@ -34,10 +34,12 @@
 public:
 	FmDeleteBackupView();
 	~FmDeleteBackupView();
-
+    
 private slots:
     void on_leftAction_triggered();
 	void on_deleteAction_triggered();
+	void on_deleteBackupWidget_stateChanged(int state);
+	void refreshDeleteBackupView();
 #ifdef FM_CHANGE_ORIENT_ENABLE
     void on_rotateAction_triggered();
 #endif
@@ -45,9 +47,7 @@
 private:
     void initMenu();
     void initMainWidget();
-    void initToolBar();
-    void adjustActions();
-    
+    void initToolBar();    
     void removeToolBarAction();
 
 private:
--- a/filemanager/src/filemanager/src/backuprestore/fmdeletebackupwidget.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmdeletebackupwidget.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -20,7 +20,6 @@
 #include "fmrestoreviewitem.h"
 #include "fmoperationservice.h"
 #include "fmviewmanager.h"
-
 #include "fmbackupconfigloader.h"
 #include "fmbkupengine.h"
 #include "fmbackuprestorehandler.h"
@@ -28,7 +27,6 @@
 #include <QGraphicsLinearLayout>
 #include <QStringListModel>
 #include <QDateTime>
-
 #include <hblistview.h>
 
 FmDeleteBackupWidget::FmDeleteBackupWidget(  HbWidget *parent )
@@ -47,8 +45,16 @@
 {
     mListView->setModel( 0 );
     loadData();
-    mListView->setModel( mModel );
+    mListView->setModel( mModel );    
+    for (int i = 0; i < mModel->rowCount(); ++i) {
+        QModelIndex index = mModel->index(i);
+        FmRestoreViewItem* restoreViewItem = static_cast< FmRestoreViewItem* >
+                                                 (mListView->itemByIndex(index));
+        connect(restoreViewItem, SIGNAL(stateChanged(int)), this, SIGNAL(stateChanged(int)));     
+    }
+    emit stateChanged(0);
 }
+
 QList<int> FmDeleteBackupWidget::selectionIndexes()
 {
     QList<int> selectionList;
@@ -84,19 +90,20 @@
          it != retoreEntryList.end(); ++it ){
              QString string = ( *it )->text();
              QDateTime datetime = ( *it )->restoreInfo().dateTime();
+             QString drive = ( *it )->restoreInfo().drive();
              string.append( '\t' );
              string.append( datetime.toString( "hh:mm ap dd/MM/yyyy") );
-             QVariant variant( string );
-
+             string.append( '\t' );
+             string.append( drive );
+             QVariant variant( string );             
              mModel->setData( mModel->index( index ), variant, Qt::DisplayRole );
-
              ++index;
     }
 
 }
 
 void FmDeleteBackupWidget::init()
-{
+{    
     QGraphicsLinearLayout *vLayout = new QGraphicsLinearLayout( this );
     vLayout->setOrientation( Qt::Vertical );
 
@@ -112,6 +119,7 @@
     mListView->setModel( mModel );
 
     mListView->setItemPrototype( new FmRestoreViewItem( this ) );
+   
 
 }
 
--- a/filemanager/src/filemanager/src/backuprestore/fmdeletebackupwidget.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmdeletebackupwidget.h	Thu Jul 22 16:30:56 2010 +0100
@@ -25,6 +25,7 @@
 class QStringListModel;
 class FmRestoreSettings;
 class FmBackupConfigLoader;
+class FmRestoreViewItem;
 
 class FmDeleteBackupWidget : public HbWidget
 {
@@ -37,6 +38,8 @@
     void refresh();
     QList<int> selectionIndexes();
     int backupDataCount();
+signals:
+    void stateChanged(int state);
 private:
     void loadData();
     void init();
@@ -50,7 +53,7 @@
     QStringListModel  *mModel;
 
     FmRestoreSettings *mRestoreSettings;
-    FmBackupConfigLoader *mBackupConfigLoader;
+    FmBackupConfigLoader *mBackupConfigLoader;    
 };
 
 #endif
--- a/filemanager/src/filemanager/src/backuprestore/fmrestoreview.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmrestoreview.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -20,6 +20,7 @@
 #include "fmrestorewidget.h"
 #include "fmviewmanager.h"
 #include "fmoperationbase.h"
+#include "fmdlgutils.h"
 
 #include <QApplication>
 
@@ -27,9 +28,6 @@
 #include <hbtoolbar.h>
 #include <hbmenu.h>
 #include <hbmainwindow.h>
-#include <hbmessagebox.h>
-
-
 
 FmRestoreView::FmRestoreView(): FmViewBase( ERestoreView )
 {
@@ -37,8 +35,7 @@
 
 	initMainWidget();
 	initToolBar();
-	initMenu();
-    adjustActions();
+	initMenu();  
 	mOperationService = FmViewManager::viewManager()->operationService();
 
 	QMetaObject::connectSlotsByName( this );
@@ -63,6 +60,7 @@
     mRestoreAction->setObjectName( "restoreAction" );
     mRestoreAction->setText( hbTrId( "Restore data" ) );
     menu()->addAction( mRestoreAction );
+    mRestoreAction->setEnabled(false);
 }
 
 void FmRestoreView::initMainWidget()
@@ -70,6 +68,7 @@
 	mRestoreWigdet = new FmRestoreWigdet( this );
 
     setWidget( mRestoreWigdet );
+    connect(mRestoreWigdet, SIGNAL(stateChanged(int)), this, SLOT(onCheckBoxStateChange()));
 
 }
 
@@ -79,7 +78,7 @@
     mLeftAction->setObjectName( "leftAction" );
     mLeftAction->setText( hbTrId( "Restore" ) );
     toolBar()->addAction( mLeftAction );
-    
+    mLeftAction->setEnabled(false);
     toolBar()->setOrientation( Qt::Horizontal );
 }
 
@@ -98,13 +97,13 @@
     case FmErrNone:
         break;
     case FmErrWrongParam:
-        HbMessageBox::information( QString( hbTrId("Operation canceled with wrong param!") ) );
+        FmDlgUtils::information( QString( hbTrId("Operation canceled with wrong param!") ) );
         break;
     case FmErrAlreadyStarted:
-        HbMessageBox::information( QString( hbTrId("Operation canceled because already started!") ) );
+        FmDlgUtils::information( QString( hbTrId("Operation canceled because already started!") ) );
         break;
     default:
-        HbMessageBox::information(tr("restore failed"));
+        FmDlgUtils::information(hbTrId("restore failed"));
         break;
     }
 }
@@ -126,19 +125,24 @@
     on_leftAction_triggered();
 }
 
-void FmRestoreView::adjustActions()
-{
-    if( mRestoreWigdet->backupDataCount() > 0 ) {
-        mRestoreAction->setDisabled( false );
-        mLeftAction->setDisabled( false );
-    } else {
-        mRestoreAction->setDisabled( true );
-        mLeftAction->setDisabled( true );
-    }
-}
-
 void FmRestoreView::removeToolBarAction()
 {
     toolBar()->removeAction( mLeftAction );
 }
 
+void FmRestoreView::onCheckBoxStateChange()
+{
+    QList<int> items = mRestoreWigdet->selectionIndexes();
+    if (items.count() > 0) {
+        mLeftAction->setEnabled(true);
+        mRestoreAction->setEnabled(true);
+    } else {
+        mLeftAction->setEnabled(false);
+        mRestoreAction->setEnabled(false);
+    }
+}
+
+void FmRestoreView::refreshRestoreView()
+{
+    mRestoreWigdet->refresh();
+}
--- a/filemanager/src/filemanager/src/backuprestore/fmrestoreview.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmrestoreview.h	Thu Jul 22 16:30:56 2010 +0100
@@ -37,6 +37,8 @@
 private slots:
     void on_leftAction_triggered();
 	void on_restoreAction_triggered();
+	void onCheckBoxStateChange();
+	void refreshRestoreView();
 #ifdef FM_CHANGE_ORIENT_ENABLE
     void on_rotateAction_triggered();
 #endif
@@ -44,9 +46,7 @@
 private:
     void initMenu();
     void initMainWidget();
-    void initToolBar();
-    void adjustActions();
-    
+    void initToolBar();    
     void removeToolBarAction();
     
 private:
--- a/filemanager/src/filemanager/src/backuprestore/fmrestoreviewitem.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmrestoreviewitem.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -16,9 +16,9 @@
  *     The source file of the restore view list item of file manager
  */
 #include "fmrestoreviewitem.h"
-
+#include "fmfileiconprovider.h"
 #include <QGraphicsLinearLayout>
-
+#include <QGraphicsGridLayout>
 #include <hblabel.h>
 #include <hbcheckbox.h>
 #include <hbwidget.h>
@@ -29,10 +29,11 @@
   : HbListViewItem( parent ),
     mRestoreContentLabel( 0 ),
     mDateTimeLabel( 0 ),
-    mCheckBox( 0 )
-
+    mCheckBox( 0 ),
+    hLayout( 0 ),
+    mParentWidget((HbWidget *)parent)
 {
-	init();
+	//init();
 }
 
 FmRestoreViewItem::~FmRestoreViewItem()
@@ -42,7 +43,7 @@
 
 HbAbstractViewItem *FmRestoreViewItem::createItem()
 {
-	return new FmRestoreViewItem( parentItem() );
+	return new FmRestoreViewItem( *this );
 }
 
 void FmRestoreViewItem::polish(HbStyleParameters& params)
@@ -52,6 +53,9 @@
 
 void FmRestoreViewItem::updateChildItems()
 {
+    if( !hLayout ) {
+       init();
+    }
 	QString string = modelIndex().data( Qt::DisplayRole ).toString();	
 
 	QStringList stringList = string.split( '\t' );
@@ -60,57 +64,70 @@
 		return;
 	}
 
-	 mRestoreContentLabel->setPlainText( stringList.first() );
+    mRestoreContentLabel->setPlainText(stringList.first());
 
-	 if( stringList.first() != stringList.last() ){
-	     mDateTimeLabel->setPlainText( stringList.last() );
-	 }
+    if (stringList.size() > 0)
+        {
+        mDateTimeLabel->setPlainText(stringList.at(1));
+        }
+    if (stringList.size() > 1)
+        {
+        QIcon icon = mIconProvider->icon(QFileInfo(stringList.at(2)));
+        // FmFileIconProvider already handle null icon issue
+        mIconLabel->setIcon(HbIcon(icon));
+        }
+    
+    connect(this, SIGNAL(stateChanged(int)), mParentWidget,
+            SIGNAL(stateChanged(int)));
 
 }
 
-
 void FmRestoreViewItem::init()
 {
-	QGraphicsLinearLayout *hLayout = new QGraphicsLinearLayout();
-	hLayout->setOrientation( Qt::Horizontal );
+    mIconProvider = new FmFileIconProvider(); 
+    hLayout = new QGraphicsLinearLayout();
+    hLayout->setOrientation(Qt::Horizontal);
+    hLayout->addItem(layout());
 
-	mCheckBox = new HbCheckBox( this );
-    hLayout->addItem( mCheckBox );
-	hLayout->setAlignment( mCheckBox, Qt::AlignVCenter );
+    mCheckBox = new HbCheckBox(this);
+    hLayout->addItem(mCheckBox);
+    hLayout->setAlignment(mCheckBox, Qt::AlignVCenter);
 
-	QGraphicsLinearLayout *vLayout = new QGraphicsLinearLayout();
-	vLayout->setOrientation( Qt::Vertical );
+    QGraphicsGridLayout *vLayout = new QGraphicsGridLayout();
+
+    mRestoreContentLabel = new HbLabel("");
+    mRestoreContentLabel->setFontSpec(HbFontSpec(HbFontSpec::Primary));
+    
+    mIconLabel = new HbLabel();    
 
-	mRestoreContentLabel = new HbLabel("");
-	mRestoreContentLabel->setFontSpec( HbFontSpec( HbFontSpec::Primary ) );
-	vLayout->addItem( mRestoreContentLabel );
-	vLayout->setAlignment( mRestoreContentLabel, Qt::AlignLeft );
+    mDateTimeLabel = new HbLabel("");
+    mDateTimeLabel->setFontSpec(HbFontSpec(HbFontSpec::Secondary));
+
+    vLayout->addItem(mRestoreContentLabel, 0, 0);
+    vLayout->addItem(mIconLabel, 0, 1);
+    vLayout->addItem(mDateTimeLabel, 1, 0);
 
-	mDateTimeLabel = new HbLabel("");
-	mDateTimeLabel->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
-	vLayout->addItem( mDateTimeLabel );
-	vLayout->setAlignment( mDateTimeLabel, Qt::AlignLeft );
+    HbWidget *textWidget = new HbWidget();
+    textWidget->setLayout(vLayout);
 
-	HbWidget *textWidget = new HbWidget();
-	textWidget->setLayout(vLayout);
-
-	hLayout->addItem( textWidget );
-	hLayout->setAlignment( textWidget, Qt::AlignVCenter );
-
-	setLayout( hLayout );
-
+    hLayout->addItem(textWidget);
+    hLayout->setAlignment(textWidget, Qt::AlignVCenter);
+    
+    connect(mCheckBox, SIGNAL(stateChanged(int)), this,
+            SIGNAL(stateChanged(int)));
+    setLayout(hLayout);
 }
 
 void FmRestoreViewItem::setCheckBoxState()
 {
 	if ( mCheckBox->checkState() ==  Qt::Unchecked ){
 		mCheckBox->setCheckState( Qt::Checked );
-		setSelected( true );
+		setSelected( true );		
 	}
 	else if( mCheckBox->checkState() ==  Qt::Checked ){
 		mCheckBox->setCheckState( Qt::Unchecked );
 		setSelected( false );
-	}
+	}	
 }
 
 bool FmRestoreViewItem::getCheckBoxState()
@@ -121,3 +138,4 @@
         return true;
     }
 }
+
--- a/filemanager/src/filemanager/src/backuprestore/fmrestoreviewitem.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmrestoreviewitem.h	Thu Jul 22 16:30:56 2010 +0100
@@ -24,7 +24,9 @@
 class HbLabel;
 class HbCheckBox;
 class HbLineEdit;
-
+class QGraphicsLinearLayout;
+class HbWidget;
+class FmFileIconProvider;
 //FmRestoreViewItem
 class FmRestoreViewItem : public HbListViewItem
 {
@@ -32,13 +34,16 @@
 
 public:
     FmRestoreViewItem( QGraphicsItem *parent = 0  );
-	  ~FmRestoreViewItem();
+	~FmRestoreViewItem();
 
 public:
 	virtual HbAbstractViewItem *createItem();
 	virtual void updateChildItems();
 	void setCheckBoxState();
 	bool getCheckBoxState();
+signals:
+    void stateChanged(int);
+	
 	
 private:
     virtual void polish(HbStyleParameters& params);
@@ -48,9 +53,13 @@
 
 private:
     HbLabel *mRestoreContentLabel;
-    HbLabel *mDateTimeLabel;
+    HbLabel *mDateTimeLabel;    
 
 	HbCheckBox *mCheckBox;
+	QGraphicsLinearLayout *hLayout;
+	HbWidget *mParentWidget;
+	HbLabel *mIconLabel;
+    FmFileIconProvider   *mIconProvider;
 };
 
 #endif
--- a/filemanager/src/filemanager/src/backuprestore/fmrestorewidget.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmrestorewidget.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -17,6 +17,7 @@
  */
 #include "fmrestorewidget.h"
 #include "fmrestoresettings.h"
+#include "fmbackupsettings.h"
 #include "fmrestoreviewitem.h"
 #include "fmoperationservice.h"
 #include "fmviewmanager.h"
@@ -72,10 +73,12 @@
     vLayout->addItem( mListView );
 
     mModel = new QStringListModel();
-    mListView->setModel( mModel );
-
+    mListView->setModel( mModel );    
     mRestoreSettings = FmViewManager::viewManager()->operationService()->backupRestoreHandler()->bkupEngine()->RestoreSettingsL();
     mBackupConfigLoader = FmViewManager::viewManager()->operationService()->backupRestoreHandler()->backupConfigLoader();
+    
+    // load backup settings to refresh default target drive
+    FmViewManager::viewManager()->operationService()->backupRestoreHandler()->bkupEngine()->BackupSettingsL()->load();
     mRestoreSettings->load( mBackupConfigLoader->driversAndOperationList() );
 
     int index = 0;
@@ -89,6 +92,9 @@
              QDateTime datetime = ( *it )->restoreInfo().dateTime();
              string.append( '\t' );
              string.append( datetime.toString( "hh:mm ap dd/MM/yyyy") );
+             QString drive = ( *it )->restoreInfo().drive();             
+             string.append( '\t' );
+             string.append( drive );
              QVariant variant( string );
 
              mModel->setData( mModel->index( index ), variant, Qt::DisplayRole );
@@ -96,8 +102,7 @@
              ++index;
     }
 
-    mListView->setItemPrototype( new FmRestoreViewItem( this ) );
-
+    mListView->setItemPrototype( new FmRestoreViewItem(this) );
 }
 
 void FmRestoreWigdet::on_list_activated( const QModelIndex &index )
@@ -105,11 +110,51 @@
     FmRestoreViewItem *restoreViewItem = static_cast< FmRestoreViewItem* >
                                          ( mListView->itemByIndex( index ) );
 
-    restoreViewItem->setCheckBoxState();
-    emit checkStatusChanged();
+    restoreViewItem->setCheckBoxState();    
 }
 
 int FmRestoreWigdet::backupDataCount()
 {
     return mModel->rowCount();
 }
+
+void FmRestoreWigdet::refresh()
+{
+    mListView->setModel( 0 );
+    if( !mModel ) {
+            mModel = new QStringListModel();
+        }
+    mModel->removeRows( 0, mModel->rowCount() );
+
+    mRestoreSettings = FmViewManager::viewManager()->operationService()->backupRestoreHandler()->bkupEngine()->RestoreSettingsL();
+    mBackupConfigLoader = FmViewManager::viewManager()->operationService()->backupRestoreHandler()->backupConfigLoader();
+    mRestoreSettings->load( mBackupConfigLoader->driversAndOperationList() );
+
+    int index = 0;
+    QList< FmRestoreEntry* > retoreEntryList = mRestoreSettings->restoreEntryList();
+    mModel->insertRows( 0, retoreEntryList.count() );
+    for ( QList< FmRestoreEntry* >::iterator it = retoreEntryList.begin(); 
+        it != retoreEntryList.end(); ++it ){
+            QString string = ( *it )->text();
+            QDateTime datetime = ( *it )->restoreInfo().dateTime();
+            QString drive = ( *it )->restoreInfo().drive();
+            string.append( '\t' );
+            string.append( datetime.toString( "hh:mm ap dd/MM/yyyy") );
+            string.append( '\t' );
+            string.append( drive );
+            QVariant variant( string );             
+            mModel->setData( mModel->index( index ), variant, Qt::DisplayRole );
+            ++index;
+        }   
+    mListView->setModel( mModel );   
+    mListView->setItemPrototype( new FmRestoreViewItem( this ) );
+      
+    for (int i = 0; i < mModel->rowCount(); ++i) {
+        QModelIndex index = mModel->index(i);
+        FmRestoreViewItem* restoreViewItem = static_cast< FmRestoreViewItem* >
+                                                 (mListView->itemByIndex(index));
+        connect(restoreViewItem, SIGNAL(stateChanged(int)), this, SIGNAL(stateChanged(int)));               
+    }
+    emit stateChanged(0);
+    
+}
--- a/filemanager/src/filemanager/src/backuprestore/fmrestorewidget.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/backuprestore/fmrestorewidget.h	Thu Jul 22 16:30:56 2010 +0100
@@ -36,11 +36,12 @@
 
     QList<int> selectionIndexes();
     int backupDataCount();
+    void refresh();
 private:
     void init();
 
-signals:
-    void checkStatusChanged();
+signals:    
+    void stateChanged(int state);
 
 private slots:
     void on_list_activated( const QModelIndex &index );
--- a/filemanager/src/filemanager/src/components/fmdatalistmodel.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- * 
- * Contributors:
- *
- * 
- * Description:
- *     The source file of the data list model of file manager
- */
-
-#include "fmdatalistmodel.h"
-
-
-FmDataListModel::FmDataListModel( QObject *parent )
-    : QAbstractListModel( parent )
-{
-}
-
-int FmDataListModel::rowCount( const QModelIndex &parent ) const
-{
-    if (parent.isValid())
-        return 0;
-
-    return mDisplayLst.count();
-}
-
-QVariant FmDataListModel::data( const QModelIndex &index, int role ) const
-{
-    if ( index.row() < 0 || index.row() >= mDisplayLst.size() )
-        return QVariant();
-
-    if ( role == Qt::DisplayRole || role == Qt::EditRole )
-        return mDisplayLst.at( index.row() );
-
-    if ( role == Qt::UserRole )
-        return mUserDataLst.at( index.row() );
-
-    return QVariant();
-}
-
-Qt::ItemFlags FmDataListModel::flags( const QModelIndex &index ) const
-{
-    if ( !index.isValid() )
-        return QAbstractItemModel::flags( index ) | Qt::ItemIsDropEnabled;
-
-    return QAbstractItemModel::flags( index ) | Qt::ItemIsEditable;
-}
-
-bool FmDataListModel::setData( const QModelIndex &index, const QVariant &value, int role )
-{
-    if ( index.row() >= 0 && index.row() < mDisplayLst.size()
-        && ( role == Qt::EditRole || role == Qt::DisplayRole ) ){
-        mDisplayLst.replace( index.row(), value.toString() );
-        emit dataChanged( index, index );
-        return true;
-    }
-
-    if ( index.row() >= 0 && index.row() < mUserDataLst.size()
-        && ( role == Qt::UserRole ) ) {
-        mUserDataLst.replace( index.row(), value.toString() );
-        emit dataChanged( index, index );
-        return true;
-    }
-    return false;
-}
-
-bool FmDataListModel::insertRows( int row, int count, const QModelIndex &parent )
-{
-    if ( count < 1 || row < 0 || row > rowCount( parent ) )
-        return false;
-
-    beginInsertRows( QModelIndex(), row, row + count - 1 );
-
-    for ( int r = 0; r < count; ++r )
-    {
-        mDisplayLst.insert( row, QString() );
-        mUserDataLst.insert( row, QString() );
-    }
-
-    endInsertRows();
-
-    return true;
-}
-
-bool FmDataListModel::removeRows( int row, int count, const QModelIndex &parent )
-{
-    if ( count <= 0 || row < 0 || ( row + count ) > rowCount( parent ) )
-        return false;
-
-    beginRemoveRows( QModelIndex(), row, row + count - 1 );
-
-    for ( int r = 0; r < count; ++r )
-    {
-        mDisplayLst.removeAt( row );
-        mUserDataLst.removeAt( row );
-    }
-
-    endRemoveRows();
-    return true;
-}
--- a/filemanager/src/filemanager/src/components/fmdatalistmodel.h	Fri Jun 11 16:23:39 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- * 
- * Contributors:
- *
- * 
- * Description:
- *     The header file of the data list model of file manager
- */
-
-#ifndef FMDATALISTMODEL_H
-#define FMDATALISTMODEL_H
-
-#include "fmcommon.h"
-
-#include <QStringList>
-#include <QAbstractItemView>
-
-class FmDataListModel : public QAbstractListModel
-{
-    Q_OBJECT
-public:
-    FmDataListModel(QObject *parent = 0);
-
-    /**
-     * Return row count
-     * @param parent ModelIndex
-     * @return row count
-     */
-    int rowCount(const QModelIndex &parent = QModelIndex()) const;
-
-    /**
-     * Return data of designated role
-     * @param index ModelIndex
-     * @param role role of data, DisplayRole for show and UserRole for data
-     * @return data
-     */
-    QVariant data(const QModelIndex &index, int role) const;
-
-    /**
-     * Set data of designated role
-     * @param index ModelIndex
-     * @param role role of data, DisplayRole for show and UserRole for data
-     * @return if operation succeed
-     */
-    bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::DisplayRole);
-
-    /**
-     * Get flags
-     * @param index ModelIndex
-     * @return flags
-     */
-    Qt::ItemFlags flags(const QModelIndex &index) const;
-
-    /**
-     * Insert count rows into the model before the given row.
-     * @param row the given row,
-     * @param count count of rows
-     * @param parent parent ModelIndex
-     * @return if operation succeed
-     */
-    bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
-
-    /**
-     * Remove count rows from the model at the given row.
-     * @param row the given row,
-     * @param count count of rows
-     * @param parent parent ModelIndex
-     * @return if operation succeed
-     */
-    bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
-
-private:
-    QStringList mDisplayLst;
-    QStringList mUserDataLst;
-};
-
-#endif // FMDATALISTMODEL_H
--- a/filemanager/src/filemanager/src/components/fmdialog.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmdialog.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -36,3 +36,52 @@
     mRetAction = action;
     mEventLoop.exit();
 }
+
+HbAction *FmDialog::primaryAction() const
+{
+    QList<QAction *> actionList = QGraphicsWidget::actions();
+    if (actionList.size() > 0) {
+        return (HbAction *)(actionList.at(0));
+    } else {
+        return 0;
+    }
+    
+}
+
+void FmDialog::setPrimaryAction( HbAction *action )
+{
+    QList<QAction *> actionList = QGraphicsWidget::actions();
+    if (actionList.size() == 0) {
+        QGraphicsWidget::addAction(action);
+    } else if (actionList.size() ==  1) {
+        actionList.clear();
+        QGraphicsWidget::addAction(action);
+    } else if (actionList.size() == 2) {
+        actionList.removeAt(0);
+        actionList.insert(0, action);
+    }   
+}
+
+HbAction *FmDialog::secondaryAction() const
+{
+    QList<QAction *> actionList = QGraphicsWidget::actions();
+    if (actionList.size() > 1) {
+        return (HbAction *)(actionList.at(1));
+    } else {
+        return 0;
+    }    
+}
+
+void FmDialog::setSecondaryAction( HbAction *action )
+{
+    QList<QAction *> actionList = QGraphicsWidget::actions();
+    if (actionList.size() == 0) {
+        QGraphicsWidget::addAction(new HbAction(hbTrId("Ok")));
+        QGraphicsWidget::addAction(action);          
+    } else if (actionList.size() == 1) {
+        QGraphicsWidget::addAction(action);
+    } else if (actionList.size() == 2) {
+        actionList.removeAt(1);
+        actionList.insert(1, action);
+    } 
+}
--- a/filemanager/src/filemanager/src/components/fmdialog.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmdialog.h	Thu Jul 22 16:30:56 2010 +0100
@@ -20,16 +20,21 @@
 #define FMDIALOG_H
 
 #include <QEventLoop>
-#include <hbmessagebox.h>
 #include <hbaction.h>
-
-#include "hbmenu.h"
+#include <hbdialog.h>
+#include <hbmenu.h>
 class FmDialog : public HbDialog
 {
 Q_OBJECT
 public:
     explicit FmDialog( QGraphicsItem *parent = 0 );
     HbAction *exec();
+    
+    HbAction *primaryAction() const;
+    void setPrimaryAction( HbAction *action );
+
+    HbAction *secondaryAction() const;
+    void setSecondaryAction( HbAction *action );
 public slots:
     void dialogClosed(HbAction *action);
 private:
--- a/filemanager/src/filemanager/src/components/fmdlgutils.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmdlgutils.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -24,6 +24,7 @@
 #include "fmutils.h"
 #include "fmviewmanager.h"
 #include "fmmessagebox.h"
+#include "fmdrivequery.h"
 
 #include <QString>
 #include <QStringList>
@@ -82,8 +83,8 @@
 	cQuery->setMarkedListItem( selectedIndex );
     }
 
-    QString sk1 ( tr ( "ok" ) );
-    QString sk2 ( tr ("cancel" ) );
+    QString sk1 ( hbTrId( "txt_common_button_ok" ) );
+    QString sk2 ( hbTrId("txt_common_button_cancel" ) );
 
     if( !sk1.isEmpty() ) {
         HbAction *primary = new HbAction( sk1 );
@@ -158,8 +159,8 @@
     }
 
 
-    QString sk1 ( hbTrId( "ok" ) );
-    QString sk2 ( hbTrId( "cancel" ) );
+    QString sk1 ( hbTrId( "txt_common_button_ok" ) );
+    QString sk2 ( hbTrId( "txt_common_button_cancel" ) );
 
     if( !sk1.isEmpty() ) {
         HbAction *primary = new HbAction( sk1 );
@@ -212,8 +213,8 @@
     cQuery->setHeadingWidget( new HbLabel( title ) );
     cQuery->setTime( time );
 
-    QString sk1 ( hbTrId( "ok" ) );
-    QString sk2 ( hbTrId( "cancel" ) );
+    QString sk1 ( hbTrId( "txt_common_button_ok" ) );
+    QString sk2 ( hbTrId( "txt_common_button_cancel" ) );
 
     if( !sk1.isEmpty() ) {
         HbAction *primary = new HbAction( sk1 );
@@ -261,8 +262,8 @@
     }
     cQuery->setHeadingWidget( new HbLabel( title ) );
 
-    QString sk1 ( hbTrId ( "ok" ) );
-    QString sk2 ( hbTrId ( "cancel" ) );
+    QString sk1 ( hbTrId ( "txt_common_button_ok" ) );
+    QString sk2 ( hbTrId ( "txt_common_button_cancel" ) );
 
     if( !sk1.isEmpty() ) {
         HbAction *primary = new HbAction( sk1 );
@@ -313,8 +314,8 @@
     }
     cQuery->setHeadingWidget( new HbLabel( title ) );
 
-    QString sk1 ( tr ("ok" ) );
-    QString sk2 ( tr ("cancel" ) );
+    QString sk1 ( hbTrId("txt_common_button_ok" ) );
+    QString sk2 ( hbTrId("txt_common_button_cancel" ) );
 
     if( !sk1.isEmpty() ) {
         HbAction *primary = new HbAction( sk1 );
@@ -352,8 +353,8 @@
     cQuery->setFirstLabelText( firstLabel );
     cQuery->setSecondLabelText( secondLabel );
 
-    QString sk1 = ( hbTrId( "ok" ) );
-    QString sk2 = ( hbTrId( "cancel" ) );
+    QString sk1 = ( hbTrId( "txt_common_button_ok" ) );
+    QString sk2 = ( hbTrId( "txt_common_button_cancel" ) );
 
     if( !sk1.isEmpty() ) {
         HbAction *primary = new HbAction( sk1 );
@@ -389,3 +390,28 @@
     FmMessageBox msgBox;
     return msgBox.question( questionText, primaryButtonText, secondaryButtonText );
 }
+
+void FmDlgUtils::information( const QString &informationText )
+{
+    FmMessageBox msgBox;
+    return msgBox.information( informationText );
+}
+
+QString FmDlgUtils::showBackupDriveQuery( const QString& title )
+{
+    QString ret;
+
+    FmDriveQuery *cQuery = new FmDriveQuery();
+    cQuery->setHeadingWidget( new HbLabel( title ) );
+    
+    QString sk = ( hbTrId( "txt_common_button_cancel" ) );
+    
+    HbAction *primary = new HbAction( sk );
+    cQuery->setPrimaryAction( primary );
+
+    executeDialog( cQuery, QString() );
+    ret = cQuery->selectedDrive();
+    
+    delete cQuery;
+    return ret;
+}
--- a/filemanager/src/filemanager/src/components/fmdlgutils.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmdlgutils.h	Thu Jul 22 16:30:56 2010 +0100
@@ -25,6 +25,8 @@
 #include <QStringList>
 #include <QTime>
 
+#include <hbglobal.h>
+
 class FmDialog;
 class HbAction;
 
@@ -86,8 +88,18 @@
        const QString &firstLabel, const QString &secondLabel, QString &pwd, int maxLength = -1,
 	   const QString &associatedDrives = QString() );
     
-    static bool question( const QString &questionText, const QString &primaryButtonText = tr("Yes"),
-            const QString &secondaryButtonText = tr("No") );
+    static bool question( const QString &questionText, const QString &primaryButtonText = QString( hbTrId("Yes") ),
+            const QString &secondaryButtonText = QString( hbTrId("No") )  );
+
+    static void information( const QString &informationText );
+    
+    /**
+     * Query drive for backup
+     *
+     * @param title Title for query dialog
+     * @return selected drive name. empty for cancel.
+     */
+    static QString showBackupDriveQuery( const QString& title );
 
     ~FmDlgUtils(void);
 private:
--- a/filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -44,7 +44,8 @@
     typeFilters.append( QString( "*.ico" ) );
     typeFilters.append( QString( "*.vcf" ) );
 
-    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupImages, typeFilters ));
+    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupImages,
+            typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
     
     typeFilters.clear();
     typeFilters.append( QString( "*.aac" ) );
@@ -64,31 +65,36 @@
     typeFilters.append( QString( "*.ott" ) );
     typeFilters.append( QString( "*.mxmf" ) );
 
-    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupSoundFiles, typeFilters ));
+    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupSoundFiles,
+            typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
     
     typeFilters.clear();
     typeFilters.append( QString( "*.jad" ) );
     typeFilters.append( QString( "*.jar" ) );
  
-    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupMidpJava, typeFilters ));
+    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupMidpJava,
+            typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
 
     typeFilters.clear();
     typeFilters.append( QString( "*.sis" ) );
     typeFilters.append( QString( "*.sisx" ) );
 
-    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupNativeApps, typeFilters ));
+    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupNativeApps,
+            typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
 
     typeFilters.clear();
     typeFilters.append( QString( "*.3gp" ) );
     typeFilters.append( QString( "*.mp4" ) );
     typeFilters.append( QString( "*.nim" ) );
-    typeFilters.append( QString( "*.rm" ) );
-    typeFilters.append( QString( "*.rv" ) );
+    typeFilters.append( QString( "*.rm"  ) );
+    typeFilters.append( QString( "*.rv"  ) );
     typeFilters.append( QString( "*.wmv" ) );
     typeFilters.append( QString( "*.3g2" ) );
-    typeFilters.append( QString( "*.rmvb" ) );
+    typeFilters.append( QString( "*.rmvb") );
+    typeFilters.append( QString( "*.mkv" ) );
  
-    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupVideos, typeFilters ));
+    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupVideos,
+            typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
  
     typeFilters.clear();
     typeFilters.append( QString( "*.doc" ) );
@@ -98,22 +104,63 @@
     typeFilters.append( QString( "*.txt" ) );
     typeFilters.append( QString( "*.xls" ) );
 
-    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupDocuments, typeFilters ));
+    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupDocuments,
+            typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName  ));
 
     typeFilters.clear();
     typeFilters.append( QString( "*.vcs" ) );
 
-    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupCalendar, typeFilters ));
+    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupCalendar,
+            typeFilters, FmDriveDetailsDataGroup::EDataRecognizeExtName ));
     
+    // Add absolute path and use EDataRecognizeAbsolutePath method for Contacts
+    typeFilters.clear();
+    typeFilters.append( QString( FmViewDetail_Contacts ) );    
+    dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupContacts,
+            typeFilters, FmDriveDetailsDataGroup::EDataRecognizeAbsolutePath ));
     return dataGroupList;
     
 }
 
 int FmDriveDetailsContent::querySizeofContent( const QString &driveName,
         QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
-{   
-    quint64 totalSize = 0;
-    
+{      
+    int err = FmErrNone;
+    QList< FmDriveDetailsDataGroup* > dataGroupList = queryDetailsContent();   
+    detailsSizeList.clear();
+    for( QList< FmDriveDetailsDataGroup* >::iterator it = dataGroupList.begin(); 
+            it!= dataGroupList.end(); ++it ) {
+        if ( *isStopped ){
+            return FmErrCancel;
+        }
+        FmDriveDetailsDataGroup* driveDetailsDataGroup = *it;
+        
+        switch( (*it)->dataRecognizeType() )
+            {
+            case FmDriveDetailsDataGroup::EDataRecognizeExtName:
+                err = getDataSizeByExtName(driveName, driveDetailsDataGroup, detailsSizeList, isStopped) ;
+                break;
+            case FmDriveDetailsDataGroup::EDataRecognizeAbsolutePath:
+                err = getDataSizeByAbsolutePath(driveName, driveDetailsDataGroup, detailsSizeList, isStopped);
+                break;
+            default:
+                Q_ASSERT_X( false, "querySizeofContent", "please handle all recognize methods ");
+                break;
+            }
+        
+        // return if error occur.
+        if( err != FmErrNone ) {
+            return err;
+        }
+    }
+    return FmErrNone;
+}
+
+int FmDriveDetailsContent::getDataSizeByExtName( const QString &driveName,
+        const FmDriveDetailsDataGroup* const dataGroup,
+        QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
+{
+    quint64 totalSize = 0;        
     QString path;
     path.clear();
     
@@ -122,54 +169,57 @@
     }
     else{
         path = driveName;
-    }
-    
-    QList< FmDriveDetailsDataGroup* > dataGroupList = queryDetailsContent();
+    }    
+    QStringList typeFilter = dataGroup->typeFilters();
+    QList<QDir> dirs;
+    dirs.append( QDir( path ) );
+    while (!dirs.isEmpty()) {
+       QFileInfoList infoList = dirs.first().entryInfoList( QDir::NoDotAndDotDot | QDir::AllEntries );
+       QFileInfoList filterInforList = dirs.first().entryInfoList( typeFilter, QDir::NoDotAndDotDot | QDir::Files );
+       
+       for ( QFileInfoList::Iterator it = filterInforList.begin(); it != filterInforList.end(); ++it ) {
+           if ( *isStopped ){
+               return FmErrCancel;
+           }           
+           if ( it->isFile() ) {
+               totalSize += it->size();
+           }
+       }       
+       for ( QFileInfoList::Iterator it = infoList.begin(); it != infoList.end(); ++it ) {
+           if ( *isStopped ){
+               return FmErrCancel;
+           }           
+           if ( it->isDir() ) {
+               dirs.append( QDir( it->absoluteFilePath() ) );
+           }
+       }       
+       dirs.removeFirst();
+   }
+   detailsSizeList.append( new FmDriveDetailsSize( dataGroup->dataGroups(), totalSize ) );
+   return FmErrNone;
+        
+}
+
+int FmDriveDetailsContent::getDataSizeByAbsolutePath( const QString &driveName,
+        const FmDriveDetailsDataGroup* const dataGroup,
+            QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped )
+{
+    quint64 totalSize = 0;
+    QStringList typeFilter = dataGroup->typeFilters();
     
-    QStringList typeFilter;
-    detailsSizeList.clear();
-    QDir dir( path );
-
-    for( QList< FmDriveDetailsDataGroup* >::iterator it = dataGroupList.begin(); 
-            it!= dataGroupList.end(); ++it ){  
+    for( QStringList::iterator it = typeFilter.begin(); 
+           it!= typeFilter.end(); ++it ) {
         if ( *isStopped ){
             return FmErrCancel;
+        }        
+        QString driver(FmUtils::removePathSplash(FmUtils::getDriveNameFromPath(driveName)));
+        QFileInfo fileInfo(QString(driver + (*it)));
+        if (fileInfo.exists()) {
+            totalSize += fileInfo.size();
         }
-        totalSize = 0;
-        typeFilter = ( *it )->typeFilters();
-        
-        QList<QDir> dirs;
-        dirs.append( QDir( path ) );
-                    
-        while (!dirs.isEmpty()) {
-            QFileInfoList infoList = dirs.first().entryInfoList( QDir::NoDotAndDotDot | QDir::AllEntries );
-            QFileInfoList filterInforList = dirs.first().entryInfoList( typeFilter, QDir::NoDotAndDotDot | QDir::Files );
-            
-            for ( QFileInfoList::Iterator it = filterInforList.begin(); it != filterInforList.end(); ++it ) {
-                if ( *isStopped ){
-                    return FmErrCancel;
-                }
-                
-                if ( it->isFile() ) {
-                    totalSize += it->size();
-                }
-            }
-            
-            for ( QFileInfoList::Iterator it = infoList.begin(); it != infoList.end(); ++it ) {
-                if ( *isStopped ){
-                    return FmErrCancel;
-                }
-                
-                if ( it->isDir() ) {
-                    dirs.append( QDir( it->absoluteFilePath() ) );
-                } 
-            }
-            
-            dirs.removeFirst();
-        }
-    
-        detailsSizeList.append( new FmDriveDetailsSize( ( *it )->dataGroups(), totalSize ) );
     }
+ 
+    detailsSizeList.append( new FmDriveDetailsSize( dataGroup->dataGroups(), totalSize ) );
     return FmErrNone;
 }
 
--- a/filemanager/src/filemanager/src/components/fmdrivedetailstype.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmdrivedetailstype.h	Thu Jul 22 16:30:56 2010 +0100
@@ -26,6 +26,12 @@
 class FmDriveDetailsDataGroup
 {
 public:
+    // used to identify recognize method
+    enum TDataRecognizeType{
+        EDataRecognizeExtName = 0,  // recognize data by extension of filename
+        EDataRecognizeAbsolutePath  // recognize data by ablsolute file path
+    };
+    
     enum TDataGroups{
         EGroupImages = 0,
         EGroupSoundFiles,
@@ -40,8 +46,13 @@
     };
     
 public:
-        FmDriveDetailsDataGroup( TDataGroups dataGroups, QStringList typeFilters ) 
-            : mDataGroups( dataGroups ), mTypeFilters( typeFilters ) {}
+       FmDriveDetailsDataGroup( TDataGroups dataGroups,
+                    QStringList typeFilters,
+                    TDataRecognizeType recognizeType ) 
+                   : mDataGroups( dataGroups ), mTypeFilters( typeFilters ),
+                     mDataRecognizeType( recognizeType )
+        {
+        }
         FmDriveDetailsDataGroup( const FmDriveDetailsDataGroup &other )
         {
             *this = other;
@@ -56,10 +67,12 @@
         
         TDataGroups dataGroups() const { return mDataGroups; }
         QStringList typeFilters() const { return mTypeFilters; }
+        TDataRecognizeType dataRecognizeType() const { return mDataRecognizeType; }
     
 private:
       TDataGroups mDataGroups;
       QStringList mTypeFilters;
+      TDataRecognizeType mDataRecognizeType;
 };
 
 class FmDriveDetailsSize
@@ -93,7 +106,27 @@
     static QList<FmDriveDetailsDataGroup*> queryDetailsContent(); 
     static int querySizeofContent(
             const QString &driveName, QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped );
-   
+    /**
+     * Gets data size for single FmDriveDetailsDataGroup, the method is scan files for extension.
+     * @param driveName which drive is searching
+     * @param dataGroup which dataGroup is searching, for example, EGroupImages, EGroupSoundFiles...
+     * @param detailsSizeList if got result, new FmDriveDetailsSize will be appended to detailsSizeList
+     * @param isStopped isStopped will be set as true if user cancel this operation
+     * @return Filemanage wide error. Please refer to fmdefine.h
+     */
+    static int getDataSizeByExtName( const QString &driveName, const FmDriveDetailsDataGroup* const dataGroup,
+               QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped );
+    
+    /**
+     * Gets data size for single FmDriveDetailsDataGroup, the method is find file of absolute path
+     * @param driveName which drive is searching
+     * @param dataGroup which dataGroup is searching, for example, EGroupContacts...
+     * @param detailsSizeList if got result, new FmDriveDetailsSize will be appended to detailsSizeList
+     * @param isStopped isStopped will be set as true if user cancel this operation
+     * @return Filemanage wide error. Please refer to fmdefine.h
+     */
+    static int getDataSizeByAbsolutePath( const QString &driveName, const FmDriveDetailsDataGroup* const dataGroup, 
+               QList<FmDriveDetailsSize*> &detailsSizeList, volatile bool *isStopped );
 };
 
 class FmFolderDetails
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/components/fmdrivequery.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ * 
+ * Contributors:
+ *
+ * 
+ * Description:
+ *     The source file of backup drive query of file manager
+ */
+
+#include "fmdrivequery.h"
+#include "fmviewmanager.h"
+#include "fmbackuprestorehandler.h"
+
+#include <QGraphicsLinearLayout>
+#include "hblistview.h"
+
+FmDriveQuery::FmDriveQuery( QGraphicsItem *parent ) : FmDialog( parent )
+{
+	mContentWidget = new QGraphicsWidget();
+	setContentWidget(mContentWidget);
+
+	QGraphicsLinearLayout *vLayout = new QGraphicsLinearLayout();
+    vLayout->setOrientation( Qt::Vertical );
+
+    mListView = new HbListView();
+	vLayout->addItem( mListView );
+
+	mListView->setFontSpec( HbFontSpec( HbFontSpec::Primary ) );
+
+	this->setTimeout( NoTimeout );
+	mContentWidget->setLayout( vLayout );
+
+	connect( mListView, SIGNAL( activated  ( const QModelIndex& ) ), this, SLOT( activated( const QModelIndex& ) ) );
+    this->setDismissPolicy( NoDismiss );
+
+    
+    mDriveModel = new FmDriveModel( this, 
+            FmDriveModel::FillWithVolume | FmDriveModel::FillWithDefaultVolume, this );
+    mListView->setModel( mDriveModel );
+    
+    // connect refreshModel signal of viewmanager  for drive insert/remove event.
+    connect( FmViewManager::viewManager(), SIGNAL( refreshModel( QString ) ), 
+            this, SLOT( refreshModel( QString ) ) );
+}
+
+FmDriveQuery::~FmDriveQuery(void)
+{
+    delete mDriveModel;
+    mDriveModel = 0;
+}
+
+void FmDriveQuery::getDriveList( QStringList &driveList )
+{
+    // provide drive list which is got from backup engine wrapper.
+    FmViewManager::viewManager()->operationService()->backupRestoreHandler()->getBackupDriveList( driveList );
+}
+
+void FmDriveQuery::activated( const QModelIndex &index )
+{
+    QString driveName( mDriveModel->driveName( index ) );
+    
+    // if drive is not available, ignore activate signal.
+    FmDriverInfo driveInfo = FmUtils::queryDriverInfo( driveName );
+    if( !( driveInfo.driveState() & FmDriverInfo::EDriveAvailable ) ) {
+        return;
+    }
+    
+    mSelectedDrive = driveName;
+    close();
+}
+
+QString FmDriveQuery::selectedDrive() const
+{
+    return mSelectedDrive;
+}
+
+void FmDriveQuery::refreshModel( QString path )
+{
+    if( !path.isEmpty() ) {
+        // ignore non-empty refresh signal as it means change of folder/file, not drive.
+        return;
+    }
+    mDriveModel->refresh();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/components/fmdrivequery.h	Thu Jul 22 16:30:56 2010 +0100
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ * 
+ * Contributors:
+ *
+ * 
+ * Description:
+ *     The header file of backup drive query of of file manager
+ */
+#ifndef FMDRIVEQUERY_H
+#define FMDRIVEQUERY_H
+
+#include "fmcommon.h"
+#include "fmdialog.h"
+#include "fmdrivemodel.h"
+
+#include <QString>
+#include <QMap>
+#include <QStringList>
+#include <QGraphicsItem>
+
+class HbListView;
+class QGraphicsWidget;
+
+// CLASS DECLARATION
+/**
+ *  This class is used for drive select query dialog
+ *
+ */
+class FmDriveQuery : public FmDialog, public FmDriveListProvider
+{
+    Q_OBJECT
+public:
+	FmDriveQuery( QGraphicsItem *parent = 0 );
+	~FmDriveQuery();
+	QString selectedDrive() const;
+	
+	// from FmDriveListProvider
+	virtual void getDriveList( QStringList &driveList );
+	
+public slots:
+	void activated(const QModelIndex &index); 
+    void refreshModel( QString path );
+private:
+	QGraphicsWidget *mContentWidget;   /// Content widget of popup dialog
+    HbListView      *mListView;        /// list view
+    FmDriveModel    *mDriveModel;      /// drive model
+    
+    QString mSelectedDrive;
+};
+
+#endif //FMDRIVEQUERY_H
--- a/filemanager/src/filemanager/src/components/fmmessagebox.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmmessagebox.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -19,6 +19,13 @@
 #include "fmmessagebox.h"
 #include <hbmessagebox.h>
 
+void FmMessageBox::information( const QString &informationText )
+{
+    HbMessageBox::information ( informationText,
+         this, SLOT(dialogClosed(HbAction*)) );
+    mEventLoop.exec();
+}
+
 bool FmMessageBox::question( const QString &questionText, const QString &primaryButtonText,
         const QString &secondaryButtonText )
 {
--- a/filemanager/src/filemanager/src/components/fmmessagebox.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmmessagebox.h	Thu Jul 22 16:30:56 2010 +0100
@@ -33,6 +33,8 @@
     ~FmMessageBox()
     {
     }
+    void information( const QString &informationText );
+
     bool question( const QString &questionText, const QString &primaryButtonText,
             const QString &secondaryButtonText );
 public slots:
--- a/filemanager/src/filemanager/src/components/fmviewdetailsdialog.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmviewdetailsdialog.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -19,13 +19,14 @@
 #include "fmviewdetailsdialog.h"
 #include "fmutils.h"
 #include "fmviewdetailsitem.h"
-#include "fmdatalistmodel.h"
 #include "fmdrivedetailstype.h"
 #include "fmviewmanager.h"
 
-#include <QDirModel>
 #include <QFileInfo>
 #include <QDateTime>
+#include <QStandardItemModel>
+#include <QStringList>
+#include <QFileInfo>
 
 #include <hblabel.h>
 #include <hblistview.h>
@@ -42,7 +43,8 @@
       mSizeofJava( 0 ),
       mSizeofNativeFiles( 0 ),
       mSizeofDocument( 0 ),
-      mSizeofCalendar( 0 )      
+      mSizeofCalendar( 0 ),
+      mSizeofContacts( 0 )
 {
     init();
     
@@ -55,11 +57,6 @@
         mListView->setModel( 0 );
         delete mListView;
     }
-    
-    if( mDirModel ){
-        delete mDirModel;
-    }
-
 }
 
 void FmViewDetailsDialog::init()
@@ -70,20 +67,20 @@
     mListView = new HbListView( this );
     setContentWidget( mListView );
     
-    mDataListModel = new FmDataListModel();
+    // init QStardardItemModel as 0 row and 1 column
+    mDataListModel = new QStandardItemModel( 0, 1 );
     mListView->setModel( mDataListModel ); 
-    mListView->setItemPrototype( new FmViewDetailsItem( this ) );
+    mListView->listItemPrototype()->setStretchingStyle(HbListViewItem::StretchLandscape);
 
     mOkAction = new HbAction( this );
-    mOkAction->setText( tr("ok") );
+    mOkAction->setText( hbTrId("txt_common_button_ok") );
     setPrimaryAction( mOkAction );
-    
-    mDirModel = new QDirModel();
 }
 
 void FmViewDetailsDialog::setDriveDetails( const QString &driverName )
 {
     const QString dataDir = "C:\\data";
+	QStringList dataList;
     mHeaderLabel->setPlainText( hbTrId( "txt_fmgr_title_memory_details" ) );
     
     quint64 sizeOfOthers = 0;
@@ -94,132 +91,85 @@
     mDataListModel->removeRows( 0, mDataListModel->rowCount() );
     mDataListModel->insertRows( 0, EDriveDetailEntryEnd );
     
-    detailString.append( hbTrId ( "txt_fmgr_dblist_memory_name" ) );
-    QVariant variant( detailString ); 
-    mDataListModel->setData(  mDataListModel->index( EMemoryName ), variant, Qt::DisplayRole );
-
-    detailString.clear();
-    detailString.append( FmUtils::fillDriveVolume( driverInfo.name(), true ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemoryName ), variant, Qt::UserRole );
+	dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_memory_name" );
+	dataList << FmUtils::fillDriveVolume( driverInfo.name(), true ) ; 
+    mDataListModel->setData(  mDataListModel->index( EMemoryName, 0 ), dataList, Qt::DisplayRole );  
     
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_size_memory" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemorySize ), variant, Qt::DisplayRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_size_memory" ); 
+    dataList << FmUtils::formatStorageSize( driverInfo.size() ) ;
+    mDataListModel->setData(  mDataListModel->index( EMemorySize, 0 ), dataList, Qt::DisplayRole );  
 
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( driverInfo.size() ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemorySize ), variant, Qt::UserRole );
-
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_free_memory" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemoryFree ), variant, Qt::DisplayRole );
-
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( driverInfo.freeSize() ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemoryFree ), variant, Qt::UserRole );  
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_free_memory" ); 
+    dataList << FmUtils::formatStorageSize( driverInfo.freeSize() );
+    mDataListModel->setData(  mDataListModel->index( EMemoryFree, 0 ), dataList, Qt::DisplayRole );    
     
     sizeOfOthers = driverInfo.size() - driverInfo.freeSize();
     
 //    getContentDetails( dataDir );
     
-    detailString.clear();
-    detailString.append( hbTrId ( "Images:" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemoryImages ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( mSizeofImage ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemoryImages ), variant, Qt::UserRole );  
+    dataList.clear();
+    dataList << hbTrId ( "Images:" ) ;
+    dataList << FmUtils::formatStorageSize( mSizeofImage );
+    mDataListModel->setData(  mDataListModel->index( EMemoryImages, 0 ), dataList, Qt::DisplayRole );  
     
     sizeOfOthers -= mSizeofImage;
     
-    detailString.clear();
-    detailString.append( hbTrId ( "Sounds:" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemorySounds ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( mSizeofSounds ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemorySounds ), variant, Qt::UserRole ); 
+    dataList.clear();
+    dataList << hbTrId ( "Sounds:" );
+	dataList << FmUtils::formatStorageSize( mSizeofSounds );
+    mDataListModel->setData(  mDataListModel->index( EMemorySounds, 0 ), dataList, Qt::DisplayRole );   
     
     sizeOfOthers -= mSizeofSounds;
     
-    detailString.clear();
-    detailString.append( hbTrId ( "Video:" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemoryVideos ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( mSizeofVideo ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemoryVideos ), variant, Qt::UserRole ); 
+    dataList.clear();
+    dataList << hbTrId ( "Video:" );
+    dataList << FmUtils::formatStorageSize( mSizeofVideo );
+    mDataListModel->setData(  mDataListModel->index( EMemoryVideos, 0 ), dataList, Qt::DisplayRole );   
     
     sizeOfOthers -= mSizeofVideo;
     
-    detailString.clear();
-    detailString.append( hbTrId ( "Java Files:" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemoryMidpJava ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( mSizeofJava ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemoryMidpJava ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "Java Files:" );
+    dataList << FmUtils::formatStorageSize( mSizeofJava );
+    mDataListModel->setData(  mDataListModel->index( EMemoryMidpJava, 0 ), dataList, Qt::DisplayRole );  
     
     sizeOfOthers -= mSizeofJava;
     
-    detailString.clear();
-    detailString.append( hbTrId ( "Sis files:" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemoryNativeApps ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( mSizeofNativeFiles ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemoryNativeApps ), variant, Qt::UserRole ); 
+    dataList.clear();
+    dataList << hbTrId ( "Sis files:" );
+    dataList << FmUtils::formatStorageSize( mSizeofNativeFiles );
+    mDataListModel->setData(  mDataListModel->index( EMemoryNativeApps, 0 ), dataList, Qt::DisplayRole );   
     
     sizeOfOthers -= mSizeofNativeFiles;
     
-    detailString.clear();
-    detailString.append( hbTrId ( "Documents:" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemoryDocuments ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( mSizeofDocument ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemoryDocuments ), variant, Qt::UserRole ); 
+    dataList.clear();
+    dataList << hbTrId ( "Documents:" );
+    dataList << FmUtils::formatStorageSize( mSizeofDocument );
+    mDataListModel->setData(  mDataListModel->index( EMemoryDocuments, 0 ), dataList, Qt::DisplayRole );   
     
     sizeOfOthers -= mSizeofDocument;
     
-    detailString.clear();
-    detailString.append( hbTrId ( "Calendars:" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemoryCalendar ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( mSizeofCalendar ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemoryCalendar ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "Calendars:" );
+    dataList << FmUtils::formatStorageSize( mSizeofCalendar );
+    mDataListModel->setData(  mDataListModel->index( EMemoryCalendar, 0 ), dataList, Qt::DisplayRole );  
     
     sizeOfOthers -= mSizeofCalendar;
     
-    detailString.clear();
-    detailString.append( hbTrId ( "Others:" ) ); 
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EMemoryOthers ), variant, Qt::DisplayRole );
+    dataList.clear();
+    dataList << hbTrId ( "Contacts:" );
+    dataList << FmUtils::formatStorageSize( mSizeofContacts );
+    mDataListModel->setData(  mDataListModel->index( EMemoryContacts, 0 ), dataList, Qt::DisplayRole );  
     
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( sizeOfOthers ) );
-    variant = QVariant( detailString );; 
-    mDataListModel->setData(  mDataListModel->index( EMemoryOthers ), variant, Qt::UserRole );   
+    sizeOfOthers -= mSizeofContacts;
+    
+    dataList.clear();
+    dataList << hbTrId ( "Others:" );
+    dataList << FmUtils::formatStorageSize( sizeOfOthers );
+    mDataListModel->setData(  mDataListModel->index( EMemoryOthers, 0 ), dataList, Qt::DisplayRole );     
 }
 
 void FmViewDetailsDialog::setFolderDetails( const QString &folderPath )
@@ -227,75 +177,44 @@
     mHeaderLabel->setPlainText( hbTrId( "txt_fmgr_title_folder_details" ) );
     
     QString detailString( "" );
-    
-    QModelIndex modelIndex = mDirModel->index( folderPath );
-    
+	QStringList dataList;
+	QFileInfo fileInfo( folderPath );
+	
     mDataListModel->removeRows( 0, mDataListModel->rowCount() );
     mDataListModel->insertRows( 0, EFolderDetailEntryEnd );
     
-    detailString.append( hbTrId ( "txt_fmgr_dblist_name_folder" ) );
-    QVariant variant( detailString ); 
-    mDataListModel->setData(  mDataListModel->index( EFolderName ), variant, Qt::DisplayRole );
+    dataList << hbTrId ( "txt_fmgr_dblist_name_folder" );
+    dataList << fileInfo.fileName();
+    mDataListModel->setData(  mDataListModel->index( EFolderName, 0 ), dataList, Qt::DisplayRole );  
     
-    detailString.clear();
-    detailString.append( mDirModel->fileName( modelIndex ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFolderName ), variant, Qt::UserRole );
-    
-    QFileInfo fileInfo = mDirModel->fileInfo( mDirModel->index( folderPath ) );
     QDateTime modifiedDateTime = fileInfo.lastModified ();
     QDate modifiedDate = modifiedDateTime.date();
     QTime modifiedTime = modifiedDateTime.time();
     
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_date_folder" ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EModifiedDate ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString.append( modifiedDate.toString() );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EModifiedDate ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_date_folder" );
+    dataList << modifiedDate.toString();
+    mDataListModel->setData(  mDataListModel->index( EModifiedDate, 0 ), dataList, Qt::DisplayRole );  
 
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_time_folder" ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EModifiedTime ), variant, Qt::DisplayRole );
-   
-    detailString.clear();
-    detailString.append( modifiedTime.toString() );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EModifiedTime ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_time_folder" );
+    dataList << modifiedTime.toString();
+    mDataListModel->setData(  mDataListModel->index( EModifiedTime, 0 ), dataList, Qt::DisplayRole );  
     
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_size_folder" ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFolderSize ), variant, Qt::DisplayRole );
-   
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( mSizeofFolder ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFolderSize ), variant, Qt::UserRole );
-
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_subfolders" ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( ENumofSubFolders ), variant, Qt::DisplayRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_size_folder" );
+    dataList << FmUtils::formatStorageSize( mSizeofFolder );
+    mDataListModel->setData(  mDataListModel->index( EFolderSize, 0 ), dataList, Qt::DisplayRole );  
 
-    detailString.clear();
-    detailString = QString::number( mNumofSubFolers );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( ENumofSubFolders ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_subfolders" );
+    dataList << QString::number( mNumofSubFolers );
+    mDataListModel->setData(  mDataListModel->index( ENumofSubFolders, 0 ), dataList, Qt::DisplayRole );  
 
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_files" ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( ENumofFiles ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString = QString::number( mNumofFiles );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( ENumofFiles ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_files" );
+    dataList << QString::number( mNumofFiles );
+    mDataListModel->setData(  mDataListModel->index( ENumofFiles, 0 ), dataList, Qt::DisplayRole );  
 }
 
 void FmViewDetailsDialog::setFileDetails( const QString &filePath )
@@ -303,70 +222,47 @@
     mHeaderLabel->setPlainText( hbTrId( "txt_fmgr_title_file_details") );
     
     QString detailString( "" );
-    
-    QModelIndex modelIndex = mDirModel->index( filePath );
+    QStringList dataList;
+
+    QFileInfo fileInfo( filePath );
     
     mDataListModel->removeRows( 0, mDataListModel->rowCount() );
     mDataListModel->insertRows( 0, EFileDetailEntryEnd );
     
-    detailString.append( hbTrId ( "txt_fmgr_dblist_name_file" ) );
-    QVariant variant( detailString ); 
-    mDataListModel->setData(  mDataListModel->index( EFileName ), variant, Qt::DisplayRole );
+    dataList << hbTrId ( "txt_fmgr_dblist_name_file" );
+    dataList << fileInfo.fileName();
+    mDataListModel->setData(  mDataListModel->index( EFileName, 0 ), dataList, Qt::DisplayRole );  
     
-    detailString.clear();
-    detailString.append( mDirModel->fileName( modelIndex ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFileName ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_type_file" );
     
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_type_file" ) );
-    variant = QVariant( detailString ); 
-    mDataListModel->setData(  mDataListModel->index( EFileType ), variant, Qt::DisplayRole );
     
-    QFileInfo fileInfo = mDirModel->fileInfo( mDirModel->index( filePath ) );
     
     QString fileType = FmUtils::getFileType( filePath );
     if( fileType.isEmpty() ){
         fileType.append( fileInfo.suffix() );
     }
-    detailString.clear();
-    detailString.append( fileType );
-    variant = QVariant( detailString ); 
-    mDataListModel->setData(  mDataListModel->index( EFileType ), variant, Qt::UserRole );
+    dataList << fileType;
+    mDataListModel->setData(  mDataListModel->index( EFileType, 0 ), dataList, Qt::DisplayRole );  
 
     QDateTime modifiedDateTime = fileInfo.lastModified ();
     QDate modifiedDate = modifiedDateTime.date();
     QTime modifiedTime = modifiedDateTime.time();
     
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_date_file" ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFileModifiedDate ), variant, Qt::DisplayRole );
-    
-    detailString.clear();
-    detailString.append( modifiedDate.toString() );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFileModifiedDate ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_date_file" );
+    dataList << modifiedDate.toString();
+    mDataListModel->setData(  mDataListModel->index( EFileModifiedDate, 0 ), dataList, Qt::DisplayRole );  
 
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_time_file" ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFileModifiedTime ), variant, Qt::DisplayRole );
-   
-    detailString.clear();
-    detailString.append( modifiedTime.toString() );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFileModifiedTime ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_time_file" );
+    dataList << modifiedTime.toString();
+    mDataListModel->setData(  mDataListModel->index( EFileModifiedTime, 0 ), dataList, Qt::DisplayRole );  
 
-    detailString.clear();
-    detailString.append( hbTrId ( "txt_fmgr_dblist_size_file" ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFileSize ), variant, Qt::DisplayRole );
-   
-    detailString.clear();
-    detailString.append( FmUtils::formatStorageSize( fileInfo.size() ) );
-    variant = QVariant( detailString );
-    mDataListModel->setData(  mDataListModel->index( EFileSize ), variant, Qt::UserRole );
+    dataList.clear();
+    dataList << hbTrId ( "txt_fmgr_dblist_size_file" );
+    dataList << FmUtils::formatStorageSize( fileInfo.size() );
+    mDataListModel->setData(  mDataListModel->index( EFileSize, 0 ), dataList, Qt::DisplayRole );  
 }
 
 void FmViewDetailsDialog::setNumofSubfolders(  int numofSubFolders, int numofFiles, quint64 sizeofFolder )
@@ -388,7 +284,8 @@
     mSizeofJava = 0;
     mSizeofNativeFiles = 0;
     mSizeofDocument = 0;
-    mSizeofCalendar = 0; 
+    mSizeofCalendar = 0;
+    mSizeofContacts = 0;
     
     for( QList< FmDriveDetailsSize* >::iterator it = detailsSizeList.begin(); 
             it!= detailsSizeList.end(); ++it ){
@@ -396,44 +293,47 @@
         switch( ( *it )->dataGroups() ){
             case FmDriveDetailsDataGroup::EGroupImages:
             {
-                mSizeofImage = ( *it )->size();             
+                mSizeofImage = ( *it )->size();
+                break;
             }
-                break;
             case FmDriveDetailsDataGroup::EGroupSoundFiles:
             {
-                mSizeofSounds = ( *it )->size();             
+                mSizeofSounds = ( *it )->size();
+                break;
             }
-                break;
             case FmDriveDetailsDataGroup::EGroupMidpJava:
             {
-                mSizeofJava = ( *it )->size();             
+                mSizeofJava = ( *it )->size();
+                break;
             }
-                break;
             case FmDriveDetailsDataGroup::EGroupNativeApps:
             {
-                mSizeofNativeFiles = ( *it )->size();             
+                mSizeofNativeFiles = ( *it )->size();
+                break;
             }
-                break;
             case FmDriveDetailsDataGroup::EGroupVideos:
             {
-                mSizeofVideo = ( *it )->size();             
+                mSizeofVideo = ( *it )->size();
+                break;
             }
-                break;
             case FmDriveDetailsDataGroup::EGroupDocuments:
             {
-                mSizeofDocument = ( *it )->size();             
+                mSizeofDocument = ( *it )->size();
+                break;
             }
-                break;
             case FmDriveDetailsDataGroup::EGroupCalendar:
             {
-                mSizeofCalendar = ( *it )->size();             
+                mSizeofCalendar = ( *it )->size();
+                break;
             }
+            case FmDriveDetailsDataGroup::EGroupContacts:
+            {
+                mSizeofContacts = ( *it )->size();
                 break;
+            }
             default:
                 break;
-            
         }
-
     }
 }
 
--- a/filemanager/src/filemanager/src/components/fmviewdetailsdialog.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmviewdetailsdialog.h	Thu Jul 22 16:30:56 2010 +0100
@@ -22,8 +22,7 @@
 #include "fmcommon.h"
 #include "fmdialog.h"
 
-class FmDataListModel;
-class QDirModel;
+class QStandardItemModel;
 class HbListView;
 class HbLabel;
 class HbAction;
@@ -45,6 +44,7 @@
         EMemoryNativeApps,
         EMemoryDocuments,
         EMemoryCalendar,
+        EMemoryContacts,
         EMemoryOthers,
         EDriveDetailEntryEnd
     };
@@ -95,20 +95,20 @@
     HbLabel *mHeaderLabel;  
     HbAction *mOkAction;
     
-    FmDataListModel *mDataListModel;
-    QDirModel *mDirModel;
+    QStandardItemModel *mDataListModel;
     QString     mDrive;
     
     int mNumofSubFolers;
     int mNumofFiles;
-    int mSizeofFolder;
-    int mSizeofImage;
-    int mSizeofSounds;
-    int mSizeofVideo;
-    int mSizeofJava;
-    int mSizeofNativeFiles;
-    int mSizeofDocument;
-    int mSizeofCalendar;
+    quint64 mSizeofFolder;
+    quint64 mSizeofImage;
+    quint64 mSizeofSounds;
+    quint64 mSizeofVideo;
+    quint64 mSizeofJava;
+    quint64 mSizeofNativeFiles;
+    quint64 mSizeofDocument;
+    quint64 mSizeofCalendar;
+    quint64 mSizeofContacts;
 };
 
 #endif /* FMVIEWDETAILSDIALOG_H_ */
--- a/filemanager/src/filemanager/src/components/fmviewdetailsitem.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmviewdetailsitem.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -26,10 +26,10 @@
 FmViewDetailsItem::FmViewDetailsItem( QGraphicsItem *parent )
     : HbListViewItem( parent ),
       mDetailsContentLabel( 0 ),
-      mDetailsLabel( 0 )
+      mDetailsLabel( 0 ),
+      mLayout( 0 )
 
 {
-    init();
 }
 
 FmViewDetailsItem::~FmViewDetailsItem()
@@ -38,7 +38,7 @@
 
 HbAbstractViewItem *FmViewDetailsItem::createItem()
 {
-    return new FmViewDetailsItem( parentItem() );
+    return new FmViewDetailsItem( *this );
 }
 
 bool FmViewDetailsItem::canSetModelIndex( const QModelIndex &index ) const
@@ -54,6 +54,9 @@
 
 void FmViewDetailsItem::updateChildItems()
 {
+    if( !mLayout ) {
+        init();
+    }
     QString string = modelIndex().data( Qt::DisplayRole ).toString();   
     
     mDetailsContentLabel->setPlainText( string );
@@ -66,25 +69,25 @@
 
 void FmViewDetailsItem::init()
 {
-    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout();
+    mLayout = new QGraphicsLinearLayout();
     
     if( FmViewManager::viewManager()->orientation() == Qt::Vertical ){
-        layout->setOrientation( Qt::Vertical );
+        mLayout->setOrientation( Qt::Vertical );
     }
     else{
-        layout->setOrientation( Qt::Horizontal );   
+        mLayout->setOrientation( Qt::Horizontal );   
     }
 
 
     mDetailsContentLabel = new HbLabel("");
     mDetailsContentLabel->setFontSpec( HbFontSpec( HbFontSpec::Primary ) );
-    layout->addItem( mDetailsContentLabel );
-    layout->setAlignment( mDetailsContentLabel, Qt::AlignLeft );
+    mLayout->addItem( mDetailsContentLabel );
+    mLayout->setAlignment( mDetailsContentLabel, Qt::AlignLeft );
 
     mDetailsLabel = new HbLabel("");
     mDetailsLabel->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
-    layout->addItem( mDetailsLabel );
-    layout->setAlignment( mDetailsLabel, Qt::AlignLeft );
+    mLayout->addItem( mDetailsLabel );
+    mLayout->setAlignment( mDetailsLabel, Qt::AlignLeft );
 
-    setLayout( layout );
+    setLayout( mLayout );
 }
--- a/filemanager/src/filemanager/src/components/fmviewdetailsitem.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/components/fmviewdetailsitem.h	Thu Jul 22 16:30:56 2010 +0100
@@ -22,6 +22,7 @@
 #include <hblistviewitem.h>
 
 class HbLabel;
+class QGraphicsLinearLayout;
 
 class FmViewDetailsItem : public HbListViewItem
 {
@@ -45,6 +46,8 @@
 private:
     HbLabel *mDetailsContentLabel;
     HbLabel *mDetailsLabel;   
+
+    QGraphicsLinearLayout *mLayout;
 };
 
 #endif /* FMVIEWDETAILSITEM_H */
--- a/filemanager/src/filemanager/src/fmdriverlistwidget.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmdriverlistwidget.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -25,20 +25,19 @@
 #include "fmdrivemodel.h"
 #include "fmfiledialog.h"
 
-#include <QDirModel>
+#include <QDir>
 #include <QGraphicsLinearLayout>
 #include <QFileSystemWatcher>
 
 #include <hblistview.h>
 #include <hbmenu.h>
 #include <hbaction.h>
-#include <hbmessagebox.h>
 #include <hbsearchpanel.h>
 
 FmDriverListWidget::FmDriverListWidget( QGraphicsItem *parent )
-: HbWidget( parent ),
-  mCurrentItem( 0 ),
-  mOperationService( 0 ), mListLongPressed( false )
+: HbWidget( parent ), mListView(0), mModel(0),
+  mCurrentItem(0), mSearchPanel(0),  mOperationService(0),
+  mFileSystemWatcher(0), mLayout(0), mContextMenu(0), mListLongPressed( false )
 {
 	init();
 	mOperationService = FmViewManager::viewManager()->operationService();
@@ -52,6 +51,9 @@
 
 FmDriverListWidget::~FmDriverListWidget()
 {
+	if (mContextMenu) {
+        mContextMenu->deleteLater();
+	}
 }
 
 void FmDriverListWidget::on_list_activated( const QModelIndex &index )
@@ -86,7 +88,7 @@
 	mSearchPanel->hide();
 //	mLayout->addItem( mSearchPanel );
     
-	mListView->setItemPrototype( new DiskListViewItem() );
+	mListView->setItemPrototype( new DiskListViewItem(this) );
 	connect( mListView, SIGNAL( activated( const QModelIndex & ) ),
 		     this, SLOT( on_list_activated( const QModelIndex & ) ) );
 	connect( mListView, SIGNAL( pressed( const QModelIndex & ) ),
@@ -96,7 +98,7 @@
         this, SLOT( on_list_longPressed( HbAbstractViewItem *, const QPointF & ) ) );
     
     connect( mSearchPanel, SIGNAL( searchOptionsClicked() ),
-        this, SLOT( on_searchPanel_searchOptionsClicked() ) );
+        this, SLOT( on_searchPanel_searchOptionsClicked() ), Qt::QueuedConnection );
     
     connect( mSearchPanel, SIGNAL( criteriaChanged( const QString & ) ),
         this, SLOT( on_searchPanel_criteriaChanged( const QString & ) ) );
@@ -119,22 +121,25 @@
     mListLongPressed = true;
     mCurrentItem = item;
     QString diskName = mModel->driveName( mCurrentItem->modelIndex() );
-    
-    FmDriverInfo driverInfo = FmUtils::queryDriverInfo( diskName );
+
+	if( !mContextMenu ) {
+		mContextMenu = new HbMenu();
+	} else {
+		mContextMenu->clearActions();
+	}
+	FmDriverInfo driverInfo = FmUtils::queryDriverInfo( diskName );
     FmDriverInfo::DriveState state = driverInfo.driveState();
     if( !( state & FmDriverInfo::EDriveNotPresent ) ) {
-        HbMenu *contextMenu = new HbMenu();
-        
         if( state & FmDriverInfo::EDriveAvailable ) {
             HbAction *viewAction = new HbAction();
             viewAction->setObjectName( "viewAction" );
             viewAction->setText( hbTrId( "txt_fmgr_menu_view_details_memory" ) );
-            contextMenu->addAction( viewAction );
+            mContextMenu->addAction( viewAction );
     
             //state = 0x210;
         
             connect( viewAction, SIGNAL( triggered() ),
-            this, SLOT( on_viewAction_triggered() ) );
+                this, SLOT( on_viewAction_triggered() ), Qt::QueuedConnection );
         }
     
         if( ( state & FmDriverInfo::EDriveAvailable ) && ( state & FmDriverInfo::EDriveRemovable ) && !( state & FmDriverInfo::EDriveMassStorage ) ){
@@ -143,45 +148,45 @@
                 HbAction *renameAction = new HbAction();
                 renameAction->setObjectName( "renameAction" );
                 renameAction->setText( hbTrId( "txt_fmgr_menu_rename" ) );
-                contextMenu->addAction( renameAction );
+                mContextMenu->addAction( renameAction );
     
                 connect( renameAction, SIGNAL( triggered() ),
-                 this, SLOT( on_renameAction_triggered() ) );
+                 this, SLOT( on_renameAction_triggered() ), Qt::QueuedConnection );
             }
             else{
                 HbAction *nameAction = new HbAction();
                 nameAction->setObjectName( "nameAction" );
                 nameAction->setText( hbTrId( "txt_fmgr_menu_name" ) );
-                contextMenu->addAction( nameAction );
+                mContextMenu->addAction( nameAction );
     
                 connect( nameAction, SIGNAL( triggered() ),
-                 this, SLOT( on_nameAction_triggered() ) );
+                 this, SLOT( on_nameAction_triggered() ), Qt::QueuedConnection );
             }
             if( !( state & FmDriverInfo::EDriveUsbMemory ) ) { // MMC
                 if( state & FmDriverInfo::EDrivePasswordProtected ){
                     HbAction *changePwdAction = new HbAction();
                     changePwdAction->setObjectName( "changePwdAction" );
                     changePwdAction->setText( hbTrId( "txt_fmgr_menu_change_password" ) );
-                    contextMenu->addAction( changePwdAction );
+                    mContextMenu->addAction( changePwdAction );
         
                     HbAction *removePwdAction = new HbAction();
                     removePwdAction->setObjectName( "removePwdAction" );
                     removePwdAction->setText( hbTrId( "txt_fmgr_menu_remove_password" ) );
-                    contextMenu->addAction( removePwdAction );
+                    mContextMenu->addAction( removePwdAction );
         
                     connect( changePwdAction, SIGNAL( triggered() ),
-                     this, SLOT( on_changePwdAction_triggered() ) );
+                     this, SLOT( on_changePwdAction_triggered() ), Qt::QueuedConnection );
                     connect( removePwdAction, SIGNAL( triggered() ),
-                     this, SLOT( on_removePwdAction_triggered() ) );
+                     this, SLOT( on_removePwdAction_triggered() ), Qt::QueuedConnection );
                 }
                 else{
                     HbAction *setPwdAction = new HbAction();
                     setPwdAction->setObjectName( "setPwdAction" );
                     setPwdAction->setText( hbTrId( "txt_fmgr_menu_set_password" ) );
-                    contextMenu->addAction( setPwdAction );
+                    mContextMenu->addAction( setPwdAction );
         
                     connect( setPwdAction, SIGNAL( triggered() ),
-                     this, SLOT( on_setPwdAction_triggered() ) );
+                     this, SLOT( on_setPwdAction_triggered() ), Qt::QueuedConnection );
                 }
             }
         }
@@ -190,10 +195,10 @@
             HbAction *ejectAction = new HbAction();
             ejectAction->setObjectName( "ejectAction" );
             ejectAction->setText( hbTrId( "txt_fmgr_menu_eject" ) );
-            contextMenu->addAction( ejectAction );
+            mContextMenu->addAction( ejectAction );
             
             connect( ejectAction, SIGNAL( triggered() ),
-            this, SLOT( on_ejectAction_triggered() ) );
+            this, SLOT( on_ejectAction_triggered() ), Qt::QueuedConnection );
         }  
         
     #ifndef _DEBUG_ENABLE_FORMATMENU_
@@ -203,10 +208,10 @@
                 HbAction *formatAction = new HbAction();
                 formatAction->setObjectName( "formatAction" );
                 formatAction->setText( hbTrId( "txt_fmgr_menu_format" ) );
-                contextMenu->addAction( formatAction );
+                mContextMenu->addAction( formatAction );
     
                 connect( formatAction, SIGNAL( triggered() ),
-                 this, SLOT( on_formatAction_triggered() ) );
+                    this, SLOT( on_formatAction_triggered() ), Qt::QueuedConnection );
     #ifndef _DEBUG_ENABLE_FORMATMENU_
         }
     #endif
@@ -215,15 +220,18 @@
             HbAction *unLockedAction = new HbAction();
             unLockedAction->setObjectName( "unLockedAction" );
             unLockedAction->setText( hbTrId( "Unlock" ) );
-            contextMenu->addAction( unLockedAction );
+            mContextMenu->addAction( unLockedAction );
     
             connect( unLockedAction, SIGNAL( triggered() ),
-             this, SLOT( on_unLockedAction_triggered() ) );
+             this, SLOT( on_unLockedAction_triggered() ), Qt::QueuedConnection );
         }
-        contextMenu->setPreferredPos( coords );
-        contextMenu->open();   
     }
-    
+	if( mContextMenu->actions().count() > 0 ) {
+		mContextMenu->setPreferredPos( coords );
+		mContextMenu->open();
+	} else {
+		emit activated( diskName );
+	}
 }
 
 void FmDriverListWidget::on_list_pressed( const QModelIndex &  index )
@@ -245,24 +253,24 @@
     FmDriverInfo driverInfo = FmUtils::queryDriverInfo( diskName );
 
     if ( state & FmDriverInfo::EDriveWriteProtected ){
-        HbMessageBox::information( hbTrId( "Unable to perform operation. Memory card is read only." ) );
+        FmDlgUtils::information( hbTrId( "Unable to perform operation. Memory card is read only." ) );
         return;
         }
 
-    QString title( tr( "Drive name ") );  
+    QString title( hbTrId( "Drive name ") );  
     QString volumeName = driverInfo.volumeName();
 
     QString associatedDrives( FmUtils::getDriveLetterFromPath( diskName ) );
     while( FmDlgUtils::showTextQuery( title, volumeName, false, FmMaxLengthofDriveName, associatedDrives ) ){
         int err = FmUtils::renameDrive( diskName, volumeName );
         if ( err == FmErrNone ){
-            HbMessageBox::information( hbTrId( "The name has been changed!" ) );
+            FmDlgUtils::information( hbTrId( "The name has been changed!" ) );
             mModel->refresh();
             break;
         } else if( err == FmErrBadName ) {
-            HbMessageBox::information( hbTrId( "Illegal characters! Use only letters and numbers." ) );
+            FmDlgUtils::information( hbTrId( "Illegal characters! Use only letters and numbers." ) );
         } else{
-            HbMessageBox::information( hbTrId( "Error occurred, operation cancelled!" ) );
+            FmDlgUtils::information( hbTrId( "Error occurred, operation cancelled!" ) );
             break;
         }                
     }
@@ -288,18 +296,18 @@
     QString associatedDrives( FmUtils::getDriveLetterFromPath( diskName ) );
     if( FmDlgUtils::showMultiPasswordQuery( firstLabel, secondLabel, newPwd, FmMaxLengthofDrivePassword, associatedDrives ) ) {
        if ( FmUtils::setDrivePwd( diskName, oldPwd, newPwd ) == 0 ){
-            HbMessageBox::information( hbTrId( "The password has been set!" ) );
+            FmDlgUtils::information( hbTrId( "The password has been set!" ) );
         }
         else{
-            HbMessageBox::information( hbTrId( "Error occurred, operation cancelled!" ) );
+            FmDlgUtils::information( hbTrId( "Error occurred, operation cancelled!" ) );
         }
     }
 }
 
 void FmDriverListWidget::on_changePwdAction_triggered()
 {
-    QString title( hbTrId( "Password: ")  );
-    QString firstLabel( hbTrId( "New Password: ") );
+    QString title( hbTrId( "txt_common_dialog_password")  );
+    QString firstLabel( hbTrId( "txt_common_dialog_new_password") );
     QString secondLabel( hbTrId( "Confirm new Password: ") );
 
     QString oldPwd;
@@ -312,9 +320,9 @@
        if ( FmUtils::checkDrivePwd( diskName, oldPwd ) == 0 ){
             if( FmDlgUtils::showMultiPasswordQuery( firstLabel, secondLabel, newPwd ) ){
                 if ( FmUtils::setDrivePwd( diskName, oldPwd, newPwd ) == 0 ){
-                    HbMessageBox::information( hbTrId( "The password has been changed!" ) );
+                    FmDlgUtils::information( hbTrId( "The password has been changed!" ) );
                 } else {
-                    HbMessageBox::information( hbTrId( "Error occurred, operation cancelled!" ) );
+                    FmDlgUtils::information( hbTrId( "Error occurred, operation cancelled!" ) );
                 }
                 break;
             } else {  
@@ -322,7 +330,7 @@
                 break;
             }
        } else {
-            HbMessageBox::information( hbTrId( "The password is incorrect, try again!" ) );
+            FmDlgUtils::information( hbTrId( "The password is incorrect, try again!" ) );
        }
          
     }
@@ -335,21 +343,20 @@
     QString oldPwd;
 
     QString diskName = mModel->driveName( mCurrentItem->modelIndex() );
-    //QString password( tr( "a ") );
-    if( FmDlgUtils::question( tr( "Do you want to remove the password? Memory card becomes unlocked." ) ) ){
+    if( FmDlgUtils::question( hbTrId( "Do you want to remove the password? Memory card becomes unlocked." ) ) ){
         QString associatedDrives( FmUtils::getDriveLetterFromPath( diskName ) );
         while( FmDlgUtils::showSinglePasswordQuery( title, oldPwd, FmMaxLengthofDrivePassword, associatedDrives ) ) {
             if ( FmUtils::checkDrivePwd( diskName, oldPwd ) == 0 ) {
                 if ( FmUtils::removeDrivePwd( diskName, oldPwd ) == 0 ){
-                    HbMessageBox::information( hbTrId( "The password has been removed!" ) );
+                    FmDlgUtils::information( hbTrId( "The password has been removed!" ) );
                 }
                 else{
-                    HbMessageBox::information( hbTrId( "Error occurred, operation cancelled!" ) );
+                    FmDlgUtils::information( hbTrId( "Error occurred, operation cancelled!" ) );
                 }
                 break;
             }
             else {
-                HbMessageBox::information( hbTrId( "The password is incorrect, try again!" ) );
+                FmDlgUtils::information( hbTrId( "The password is incorrect, try again!" ) );
             }
             
         }
@@ -368,18 +375,18 @@
     while( FmDlgUtils::showSinglePasswordQuery( title, oldPwd ) ) {
         int err = FmUtils::unlockDrive( diskName, oldPwd );
         if( err == FmErrNone ) {
-            HbMessageBox::information( hbTrId( "The memory is unlocked!" ) );
+            FmDlgUtils::information( hbTrId( "The memory is unlocked!" ) );
             break;
         } else if ( err == FmErrAccessDenied ) {
-            HbMessageBox::information( hbTrId( "The password is incorrect, try again!" ) );
+            FmDlgUtils::information( hbTrId( "The password is incorrect, try again!" ) );
         } else if (err == FmErrAlreadyExists ) {
-            HbMessageBox::information( hbTrId( "The disk has already been unlocked!" ) );
+            FmDlgUtils::information( hbTrId( "The disk has already been unlocked!" ) );
             break;
         } else if( err == FmErrNotSupported ) {
-            HbMessageBox::information( hbTrId( "The media does not support password locking!" ) );
+            FmDlgUtils::information( hbTrId( "The media does not support password locking!" ) );
             break;
         } else {
-            HbMessageBox::information( hbTrId( "Error occurred, operation cancelled!" ) );
+            FmDlgUtils::information( hbTrId( "Error occurred, operation cancelled!" ) );
             break;
         }
     }
@@ -391,7 +398,7 @@
     
     if( FmDlgUtils::question( hbTrId( "Format? Data will be deleted during formatting." ) ) ){
         if( FmErrNone != mOperationService->asyncFormat( diskName ) )
-            HbMessageBox::information( hbTrId( "Formatting failed." ) );
+            FmDlgUtils::information( hbTrId( "Formatting failed." ) );
         }
 }
 
@@ -416,6 +423,9 @@
     FmUtils::getDriveList( driveList, true );
     if(driveList.count() > 0 ) {
         mFindTargetPath =  driveList.first();
+        if( FmUtils::isDriveC( mFindTargetPath ) ) {
+            mFindTargetPath =  QString( Folder_C_Data );
+        }
     } else {
         mFindTargetPath.clear();
     }
@@ -425,8 +435,8 @@
 
 void FmDriverListWidget::on_searchPanel_searchOptionsClicked()
 {
-    mFindTargetPath = FmFileDialog::getExistingDirectory( 0, hbTrId( "Look in:" ),
-        QString(""), QStringList() );
+    mFindTargetPath = FmUtils::fillPathWithSplash( FmFileDialog::getExistingDirectory( 0, hbTrId( "Look in:" ),
+        QString(""), QStringList() ) );
 }
 
 void FmDriverListWidget::on_searchPanel_criteriaChanged( const QString &criteria )
--- a/filemanager/src/filemanager/src/fmdriverlistwidget.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmdriverlistwidget.h	Thu Jul 22 16:30:56 2010 +0100
@@ -23,11 +23,12 @@
 #include "fmoperationservice.h"
 #include <hbwidget.h>
 
-class QFileSystemWatcher;
+class FmDriveModel;
 class HbListView;
 class HbAbstractViewItem;
 class HbSearchPanel;
-class FmDriveModel;
+class HbMenu;
+class QFileSystemWatcher;
 
 class QGraphicsLinearLayout;
 
@@ -80,6 +81,7 @@
     
     QString mFindTargetPath;
     QGraphicsLinearLayout *mLayout;
+	HbMenu *mContextMenu;
     
     //used to avoid activate when long press list.
     bool mListLongPressed;
--- a/filemanager/src/filemanager/src/fmdriverview.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmdriverview.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -23,7 +23,6 @@
 
 #include <QApplication>
 
-#include <hbmessagebox.h>
 #include <hbmenu.h>
 #include <hbaction.h>
 #include <hbtoolbar.h>
@@ -82,7 +81,7 @@
 {
     mDriverList = new FmDriverListWidget( this );
     connect( mDriverList, SIGNAL( activated( const QString& ) ),
-             this, SLOT( activated( const QString& ) ) );
+             this, SLOT( activated( const QString& ) ), Qt::QueuedConnection );
     
     connect( mDriverList, SIGNAL( startSearch( const QString&,  const QString& ) ),
              this, SLOT( startSearch( const QString&, const QString& ) ) );
--- a/filemanager/src/filemanager/src/fmfilebrowsewidget.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmfilebrowsewidget.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -24,9 +24,10 @@
 #include "fmviewmanager.h"
 #include "fmfiledialog.h"
 #include "fmdlgutils.h"
+#include "fmfileiconprovider.h"
 
 #include <QFile>
-#include <QDirModel>
+#include <QFileSystemModel>
 #include <QSizePolicy>
 #include <QGraphicsLinearLayout>
 
@@ -36,9 +37,14 @@
 #include <hbabstractviewitem.h>
 #include <hbaction.h>
 #include <hbsearchpanel.h>
-#include <hbmessagebox.h>
 #include <hblabel.h>
 
+// These define comes from implementation of QFileSystemModel
+#define QFileSystemSortName 0
+#define QFileSystemSortSize 1 
+#define QFileSystemSortType 2
+#define QFileSystemSortTime 3
+
 FmFileBrowseWidget::FmFileBrowseWidget( HbWidget *parent, FmFileBrowseWidget::Style style )
     : HbWidget( parent ),
       mTreeView( 0 ),
@@ -71,19 +77,11 @@
     //since there is a thread running in background
     //if the model destroy later, the thread might not quit properly.
 
-    if( mStyle == ListStyle || mStyle == TreeStyle ) {
-        QFileInfo oldFileInfo = mModel->fileInfo( mListView->rootIndex() );
-        if( oldFileInfo.exists() ) {
-            FmViewManager *viewManager = FmViewManager::viewManager();
-            if( viewManager ) {
-                viewManager->removeWatchPath( oldFileInfo.absoluteFilePath() );
-            }   
-        }
-    }
-
     mTreeView->setModel( 0 );
     mListView->setModel( 0 );
     delete mModel;
+    
+    delete mFileIconProvider;
 }
 
 QFileInfo FmFileBrowseWidget::currentPath() const
@@ -124,18 +122,35 @@
     QString logString = "FmFileBrowseWidget::setRootPath(" + pathName + ')';
     FmLogger::log( logString );
 
-    if( checkPathAndSetStyle( pathName ) ) {
-        mListView->setModel(0);
-        mTreeView->setModel(0);
-        delete mModel;
-        mModel = new QDirModel(this);
-        mListView->setModel(mModel);
-        mTreeView->setModel(mModel);
-        
-        mListView->setRootIndex( mModel->index( pathName ) );
-        mTreeView->setRootIndex( mModel->index( pathName ) );
-        FmViewManager::viewManager()->addWatchPath( pathName );
-    }
+    int err = checkPathAndSetStyle( pathName );
+    switch( err )
+        {
+        case FmErrNone:
+            {
+            mListView->setRootIndex( mModel->setRootPath( pathName ) );
+            emit currentPathChanged( pathName );
+            break;
+            }
+        case FmErrPathNotExist:
+            {
+            FmDlgUtils::information( hbTrId( "Path is not exist" ) );
+            break;
+            }
+        case FmErrDriveNotAvailable:
+            {
+            // do not take any action as widget set note in label already. 
+            break;
+            }
+        case FmErrDriveDenied:
+        case FmErrPathDenied:
+            {
+            FmDlgUtils::information( hbTrId( "Can not access" ) );
+            break;
+            }
+        default:
+            Q_ASSERT_X( false, "setRootPath", "please handle all error from isPathAccessabel" );
+            break;
+        }
     mCurrentDrive = pathName.left( 3 );
 }
 
@@ -208,14 +223,6 @@
 bool FmFileBrowseWidget::rename( const QString &oldName, const QString &newName )
 {
     return QFile::rename( oldName, newName );
-    /*
-    if (QFile::rename( oldName, newName )) {
-    QModelIndex index = mModel->index( newName );
-    mModel->refresh( index );
-    index = mModel->index( oldName );
-    mModel->refresh( index );
-    }
-    */
 }
 
 
@@ -223,11 +230,11 @@
 
 bool FmFileBrowseWidget::cdUp()
 {
-    if (mStyle == ListStyle) {
-        QModelIndex index = mListView->rootIndex().parent();
-        mModel->refresh(index);
-        if (index.isValid()) {
-            changeRootIndex( index );
+	if (mStyle == ListStyle) {
+        QModelIndex parentIndex = mListView->rootIndex().parent();
+		// QFileSystemModel will auto refresh for file/folder change
+        if (parentIndex.isValid()) {
+			changeRootIndex( parentIndex );
             return true;
         }
     }
@@ -283,7 +290,7 @@
     contextMenu->addAction( viewAction );
 
     connect( viewAction, SIGNAL( triggered() ),
-    this, SLOT( on_viewAction_triggered() ) );
+        this, SLOT( on_viewAction_triggered() ), Qt::QueuedConnection );
 
     //copy
     HbAction *copyAction = new HbAction();
@@ -292,7 +299,7 @@
     contextMenu->addAction( copyAction );
 
     connect( copyAction, SIGNAL( triggered() ),
-    this, SLOT( on_copyAction_triggered() ) );
+    this, SLOT( on_copyAction_triggered() ), Qt::QueuedConnection );
 
     
     QString filePath( mModel->filePath( item->modelIndex() ) );
@@ -307,7 +314,7 @@
         contextMenu->addAction( moveAction );
     
         connect( moveAction, SIGNAL( triggered() ),
-        this, SLOT( on_moveAction_triggered() ) );
+        this, SLOT( on_moveAction_triggered() ), Qt::QueuedConnection );
     
         //Delete
         HbAction *deleteAction = new HbAction();
@@ -316,7 +323,7 @@
         contextMenu->addAction( deleteAction );
     
         connect( deleteAction, SIGNAL( triggered() ),
-        this, SLOT( on_deleteAction_triggered() ) );
+        this, SLOT( on_deleteAction_triggered() ), Qt::QueuedConnection );
     
         //rename
         HbAction *renameAction = new HbAction();
@@ -325,7 +332,7 @@
         contextMenu->addAction( renameAction );
     
         connect( renameAction, SIGNAL( triggered() ),
-        this, SLOT( on_renameAction_triggered() ) );
+        this, SLOT( on_renameAction_triggered() ), Qt::QueuedConnection );
     }
     
 //    if( fileInfo.isFile() ){
@@ -381,6 +388,8 @@
         this, SLOT( on_list_activated( const QModelIndex& ) ) );
     connect( this, SIGNAL( listActivated() ),
         this, SLOT( on_listActivated() ), Qt::QueuedConnection );
+    connect( mListView, SIGNAL( pressed( const QModelIndex & ) ),
+        this, SLOT( on_list_pressed( const QModelIndex & ) ) );
     connect( mListView, SIGNAL( longPressed( HbAbstractViewItem *, const QPointF & ) ),
         this, SLOT( on_list_longPressed( HbAbstractViewItem *, const QPointF & ) ) );
 }
@@ -399,9 +408,11 @@
 
 void FmFileBrowseWidget::initFileModel()
 {
-    mModel = new QDirModel( this );
+    mModel = new QFileSystemModel( this );
     mModel->setReadOnly( false );
-    disconnect( mModel, SIGNAL( rowsInserted( const QModelIndex &, int, int ) ), 0 ,0 );
+    
+    mFileIconProvider = new FmFileIconProvider();
+    mModel->setIconProvider( mFileIconProvider );
 }
 
 void FmFileBrowseWidget::initLayout()
@@ -421,7 +432,7 @@
     mSearchPanel->hide();
     
     connect( mSearchPanel, SIGNAL( searchOptionsClicked() ),
-        this, SLOT( on_searchPanel_searchOptionsClicked() ) );
+        this, SLOT( on_searchPanel_searchOptionsClicked() ), Qt::QueuedConnection );
     
     connect( mSearchPanel, SIGNAL( criteriaChanged( const QString & ) ),
         this, SLOT( on_searchPanel_criteriaChanged( const QString & ) ) );
@@ -440,19 +451,8 @@
 
 void FmFileBrowseWidget::changeRootIndex( const QModelIndex &index )
 {
-    QFileInfo oldFileInfo = mModel->fileInfo( mListView->rootIndex() );
-    FmViewManager::viewManager()->removeWatchPath( oldFileInfo.absoluteFilePath() );
-
-    mModel->refresh(index);
-    if ( mStyle == ListStyle ) {
-        mListView->setRootIndex( index );
-    } else if ( mStyle == TreeStyle ) {
-        mTreeView->setRootIndex( index );
-    }
-    QFileInfo fileInfo = mModel->fileInfo( mListView->rootIndex() );
-    QString string = fileInfo.absoluteFilePath();
-    emit currentPathChanged( string );
-    FmViewManager::viewManager()->addWatchPath( string );
+	QString filePath = mModel->fileInfo( index ).absoluteFilePath();
+	setRootPath( filePath );
 }
 
 bool FmFileBrowseWidget::isDriver(const QModelIndex &index) const
@@ -478,77 +478,90 @@
 void FmFileBrowseWidget::refreshModel( const QString& path )
 {
     FmLogger::log( "FmFileBrowseWidget::refreshModel start" );
+    // This slot will be triggered when drive inserted/ejected
+	// Because filemanger do not notify dir/files changed yet( QFileSystem will auto refresh.)
     QString currPath( currentPath().absoluteFilePath() );
-    QString refreshPath( path );
+    
+    if( currPath.isEmpty() ) {
+        // label style and no data shown( dirve is not present or locked, or corrupt )
     
-    if( !currPath.isEmpty() ) {
-        if( refreshPath.isEmpty() ) {
-            refreshPath = currPath;
-        }
-        if(  !FmUtils::isPathEqual( refreshPath, currPath ) ) {
-            // no need refresh other path
-            return;
+        //set path as drive root, cause refresh, so that data can be shown when insert MMC in device.
+        setRootPath( mCurrentDrive );
+        // update title
+    } else {
+        // display drive data normally
+        // ignore path refresh event as QFileSystemModel will auto refresh.
+    
+        // Handle drive refresh event as drive may be ejected.
+        if( path.isEmpty() ) { // path is empty means drive is changed.
+            checkPathAndSetStyle( currPath );
         }
-        if( checkPathAndSetStyle( refreshPath ) ) {               
-            mModel->refresh( mModel->index( refreshPath ) );
-        } else {
-            FmViewManager *viewManager = FmViewManager::viewManager();
-            if( viewManager ) {
-                viewManager->removeWatchPath( currentPath().absoluteFilePath() );
-            } 
-        }
-    } else {
-        // current path is empty, so change root path to Drive root.
-        refreshPath = mCurrentDrive;
-        setRootPath( refreshPath );
-        emit setTitle( FmUtils::fillDriveVolume( mCurrentDrive, true ) );
     }
+    emit setTitle( FmUtils::fillDriveVolume( mCurrentDrive, true ) );
     FmLogger::log( "FmFileBrowseWidget::refreshModel end" );
 }
 
-bool FmFileBrowseWidget::checkPathAndSetStyle( const QString& path )
+int FmFileBrowseWidget::checkPathAndSetStyle( const QString& path )
 {
-    if( !FmUtils::isPathAccessabel( path ) ){
-        QString driveName = FmUtils::getDriveNameFromPath( path );
-        FmDriverInfo::DriveState state = FmUtils::queryDriverInfo( driveName ).driveState();
-        
-        if( state & FmDriverInfo::EDriveLocked ) {
-            mEmptyTipLabel->setPlainText( hbTrId( "Drive is locked" ) );       
-        } else if( state & FmDriverInfo::EDriveNotPresent ) {
-            mEmptyTipLabel->setPlainText( hbTrId( "Drive is not present" ) );
-        } else if( state & FmDriverInfo::EDriveCorrupted ) {
-            mEmptyTipLabel->setPlainText( hbTrId( "Drive is Corrupted" ) );
-        } else {
-            mEmptyTipLabel->setPlainText( hbTrId( "Drive can not be opened " ) );
+    int err = FmUtils::isPathAccessabel( path );
+    switch( err )
+        {
+        case FmErrNone:
+            {
+            setStyle( mFileBrowseStyle );
+            emit setEmptyMenu( false );
+            break;
+            }
+        case FmErrDriveNotAvailable:
+            {
+            QString driveName = FmUtils::getDriveNameFromPath( path );
+            FmDriverInfo::DriveState state = FmUtils::queryDriverInfo( driveName ).driveState();
+            
+            if( state & FmDriverInfo::EDriveLocked ) {
+                mEmptyTipLabel->setPlainText( hbTrId( "Drive is locked" ) );       
+            } else if( state & FmDriverInfo::EDriveNotPresent ) {
+                mEmptyTipLabel->setPlainText( hbTrId( "Drive is not present" ) );
+            } else if( state & FmDriverInfo::EDriveCorrupted ) {
+                mEmptyTipLabel->setPlainText( hbTrId( "Drive is Corrupted" ) );
+            } else {
+                mEmptyTipLabel->setPlainText( hbTrId( "Drive can not be opened " ) );
+            }
+            setStyle( LabelStyle );
+            emit setEmptyMenu( true );
+            break;
+            }
+        case FmErrPathNotExist:
+        case FmErrDriveDenied:
+        case FmErrPathDenied:
+            {
+            // do not tack any action, error note shoule be shown by invoker.
+            // checkPathAndSetStyle just check path and set style.
+            break;
+            }
+        default:
+            Q_ASSERT_X( false, "checkPathAndSetStyle", "please handle all error from isPathAccessabel" );
+            break;
         }
-        setStyle( LabelStyle );
-        emit setEmptyMenu( true );
-        return false;
-    } else {
-        setStyle( mFileBrowseStyle );
-        emit setEmptyMenu( false );
-        return true;
-    }
-    
+    return err;
 }
 
 void FmFileBrowseWidget::sortFiles( TSortType sortType )
 {
     switch( sortType ){
         case ESortByName:{
-            mModel->setSorting( QDir::Name );
+			mModel->sort( QFileSystemSortName );
         }
             break;
         case ESortByTime:{
-            mModel->setSorting( QDir::Time );
+            mModel->sort( QFileSystemSortTime );
         }
             break;
         case ESortBySize:{
-            mModel->setSorting( QDir::Size );
+            mModel->sort( QFileSystemSortSize );
         }
             break;
         case ESortByType:{
-            mModel->setSorting( QDir::Type | QDir::DirsFirst );
+            mModel->sort( QFileSystemSortType );
         }
             break;
         default:
@@ -565,8 +578,8 @@
 
 void FmFileBrowseWidget::on_searchPanel_searchOptionsClicked()
 {
-    mFindTargetPath = FmFileDialog::getExistingDirectory( 0, hbTrId( "Look in:" ), QString(""),
-        QStringList() );
+    mFindTargetPath = FmUtils::fillPathWithSplash( FmFileDialog::getExistingDirectory( 0, hbTrId( "Look in:" ), QString(""),
+        QStringList() ) );
 }
 
 void FmFileBrowseWidget::on_searchPanel_criteriaChanged( const QString &criteria )
@@ -619,13 +632,13 @@
                 break;
             case FmErrAlreadyStarted:
                 // last operation have not finished
-                HbMessageBox::information( hbTrId( "Operatin already started!" ) );
+                FmDlgUtils::information( hbTrId( "Operatin already started!" ) );
                 break;
             case FmErrWrongParam:
-                HbMessageBox::information( hbTrId( "Wrong parameters!" ) );
+                FmDlgUtils::information( hbTrId( "Wrong parameters!" ) );
                 break;
             default:
-                HbMessageBox::information( hbTrId( "Operation fail to start!" ) );
+                FmDlgUtils::information( hbTrId( "Operation fail to start!" ) );
         }
     }
 }
@@ -648,13 +661,13 @@
                 break;
             case FmErrAlreadyStarted:
                 // last operation have not finished
-                HbMessageBox::information( hbTrId( "Operatin already started!" ) );
+                FmDlgUtils::information( hbTrId( "Operatin already started!" ) );
                 break;
             case FmErrWrongParam:
-                HbMessageBox::information( hbTrId( "Wrong parameters!" ) );
+                FmDlgUtils::information( hbTrId( "Wrong parameters!" ) );
                 break;
             default:
-                HbMessageBox::information( hbTrId( "Operation fail to start!" ) );
+                FmDlgUtils::information( hbTrId( "Operation fail to start!" ) );
         }
     }
 
@@ -665,7 +678,7 @@
     QStringList fileList;
     fileList.push_back( mModel->filePath( mCurrentItem->modelIndex() ) );
 
-    QString targetPathName = FmFileDialog::getExistingDirectory( 0, tr( "move to" ),
+    QString targetPathName = FmFileDialog::getExistingDirectory( 0, hbTrId( "move to" ),
             QString(""), QStringList() );
 
     if( !targetPathName.isEmpty() ) {
@@ -678,13 +691,13 @@
                 break;
             case FmErrAlreadyStarted:
                 // last operation have not finished
-                HbMessageBox::information( hbTrId( "Operatin already started!" ) );
+                FmDlgUtils::information( hbTrId( "Operatin already started!" ) );
                 break;
             case FmErrWrongParam:
-                HbMessageBox::information( hbTrId( "Wrong parameters!" ) );
+                FmDlgUtils::information( hbTrId( "Wrong parameters!" ) );
                 break;
             default:
-                HbMessageBox::information( hbTrId( "Operation fail to start!" ) );
+                FmDlgUtils::information( hbTrId( "Operation fail to start!" ) );
         }
     }
 }
@@ -694,21 +707,31 @@
 {
     QString filePath = mModel->filePath( mCurrentItem->modelIndex() );
     QFileInfo fileInfo = mModel->fileInfo( mCurrentItem->modelIndex() );
-
+    int maxFileNameLength = FmUtils::getMaxFileNameLength();
+    QString oldSuffix( fileInfo.suffix() );
     QString newName( fileInfo.fileName() );
-    
-    while( FmDlgUtils::showTextQuery( hbTrId( "Enter new name for %1" ).arg( newName ), newName, true ) ){
+    while( FmDlgUtils::showTextQuery( hbTrId( "Enter new name for %1" ).arg( newName ), newName, true,
+            maxFileNameLength, QString() , true ) ){
+        // remove whitespace from the start and the end.
+        newName = newName.trimmed();
         QString newTargetPath = FmUtils::fillPathWithSplash(
             fileInfo.absolutePath() ) + newName;
         QFileInfo newFileInfo( newTargetPath );
-        if( newFileInfo.exists() ) {
-            HbMessageBox::information( hbTrId( "%1 already exist!" ).arg( newName ) );
+        QString errString;
+        // check if name/path is available for use
+        if( !FmUtils::checkNewFolderOrFile( newTargetPath, errString ) ) {
+            FmDlgUtils::information( errString );
             continue;
         }
-
         if( !rename( fileInfo.absoluteFilePath(), newTargetPath ) ) {
-            HbMessageBox::information( hbTrId("Rename failed!") );
+            FmDlgUtils::information( hbTrId("Rename failed!") );
+        }
+        else {
+            if ( oldSuffix != newFileInfo.suffix() ) {
+                FmDlgUtils::information( hbTrId( "File may become unusable when file name extension is changed" ) );        
+            }   
         }
         break;
-    }   
+    }
 }
+
--- a/filemanager/src/filemanager/src/fmfilebrowsewidget.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmfilebrowsewidget.h	Thu Jul 22 16:30:56 2010 +0100
@@ -28,7 +28,7 @@
 #include <hbwidget.h>
 #include <QDir>
 
-class QDirModel;
+class QFileSystemModel;
 class QGraphicsLinearLayout;
 class HbListView;
 class HbTreeView;
@@ -36,6 +36,8 @@
 class HbSearchPanel;
 class HbLabel;
 
+class FmFileIconProvider;
+
 class FmFileBrowseWidget : public HbWidget
 {
     Q_OBJECT
@@ -69,7 +71,7 @@
     bool rename( const QString &oldName, const QString &newName );
     void setModelFilter( QDir::Filters filters );
     
-    bool checkPathAndSetStyle( const QString& path );
+    int checkPathAndSetStyle( const QString& path );
     void refreshModel( const QString& path );
     void sortFiles( TSortType sortType );
     void activeSearchPanel();
@@ -83,7 +85,7 @@
     void on_searchPanel_exitClicked();
 
 signals:
-    void currentPathChanged( QString& );
+    void currentPathChanged( const QString& );
     void startSearch( const QString &targetPath, const QString &criteria );
     void setEmptyMenu( bool isMenuEmpty );
     void setTitle( const QString &title );
@@ -119,7 +121,7 @@
 	HbTreeView *mTreeView;
     HbListView *mListView;
     QGraphicsLinearLayout *mLayout;
-    QDirModel *mModel;
+    QFileSystemModel *mModel;
     
     bool mSelectable;
     
@@ -140,6 +142,9 @@
     //used to avoid activate when long press list.
     bool mListLongPressed;
     QModelIndex mActivatedModelIndex;
+    
+    // provide iocn from filemanger
+    FmFileIconProvider *mFileIconProvider;
 };
 
 #endif
--- a/filemanager/src/filemanager/src/fmfileview.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmfileview.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -34,7 +34,6 @@
 #include <hbaction.h>
 #include <hbtoolbar.h>
 #include <hblineedit.h>
-#include <hbmessagebox.h>
 #include <hbpushbutton.h>
 #include <hbmainwindow.h>
 
@@ -109,33 +108,44 @@
 	menu()->addAction( action );
 #endif
 
-	mStyleAction = new HbAction( this );
-	mStyleAction->setObjectName( "switchStyle" );
+//	mStyleAction = new HbAction();
+//	mStyleAction->setObjectName( "switchStyle" );
 //	menu()->addAction( mStyleAction );
 
-	mSelectableAction = new HbAction( this );
+	mSelectableAction = new HbAction();
 	mSelectableAction->setObjectName( "setSelectable" );
 	menu()->addAction( mSelectableAction );
+    connect( mSelectableAction, SIGNAL( triggered() ),
+        this, SLOT( on_setSelectable_triggered() ), Qt::QueuedConnection );
 
-	action = new HbAction( this );
+
+	action = new HbAction();
 	action->setObjectName( "delete" );
 	action->setText( hbTrId( "txt_fmgr_menu_delete" ) );
 	menu()->addAction( action );
+    connect( action, SIGNAL( triggered() ),
+        this, SLOT( on_delete_triggered() ), Qt::QueuedConnection );
 
-    action = new HbAction( this );
+    action = new HbAction();
     action->setObjectName( "copy" );
     action->setText( hbTrId( "txt_fmgr_menu_copy" ) );
     menu()->addAction( action );
+    connect( action, SIGNAL( triggered() ),
+        this, SLOT( on_copy_triggered() ), Qt::QueuedConnection );
 
-    action = new HbAction( this );
+    action = new HbAction();
     action->setObjectName( "move" );
     action->setText( hbTrId( "txt_fmgr_menu_move" ) );
     menu()->addAction( action );
+    connect( action, SIGNAL( triggered() ),
+        this, SLOT( on_move_triggered() ), Qt::QueuedConnection );
     
-    action = new HbAction( this );
+    action = new HbAction();
     action->setObjectName( "newFolder" );
-    action->setText( hbTrId( "New Folder" ) );
+    action->setText( hbTrId( "txt_fmgr_opt_new_folder" ) );
     menu()->addAction( action );
+    connect( action, SIGNAL( triggered() ),
+        this, SLOT( on_newFolder_triggered() ), Qt::QueuedConnection );
     
     HbMenu *subMenu = new HbMenu( hbTrId( "Sort" ) );
     HbAction *sortNameAction = new HbAction( subMenu );
@@ -161,13 +171,13 @@
     menu()->addMenu( subMenu );
 	
     connect( sortNameAction, SIGNAL( triggered() ),
-             this, SLOT( on_sortNameAction_triggered() ) );
+             this, SLOT( on_sortNameAction_triggered() ), Qt::QueuedConnection );
     connect( sortTimeAction, SIGNAL( triggered() ),
-             this, SLOT( on_sortTimeAction_triggered() ) );
+             this, SLOT( on_sortTimeAction_triggered() ), Qt::QueuedConnection );
     connect( sortSizeAction, SIGNAL( triggered() ),
-             this, SLOT( on_sortSizeAction_triggered() ) );
+             this, SLOT( on_sortSizeAction_triggered() ), Qt::QueuedConnection );
     connect( sortTypeAction, SIGNAL( triggered() ),
-             this, SLOT( on_sortTypeAction_triggered() ) );
+             this, SLOT( on_sortTypeAction_triggered() ), Qt::QueuedConnection );
     
     mMenu = takeMenu();
 }
@@ -215,18 +225,19 @@
     connect( mFindAction, SIGNAL( triggered() ),
                  this, SLOT( on_leftAction_triggered() ) );
     connect( mToolBarRightAction, SIGNAL( triggered() ),
-             this, SLOT( on_rightAction_triggered() ) );
+             this, SLOT( on_rightAction_triggered() ), Qt::QueuedConnection );
     
 }
 
 void FmFileView::setStyle( FmFileBrowseWidget::Style style )
 {
+    /*
 	if ( style == FmFileBrowseWidget::ListStyle ) {
 		mStyleAction->setText( hbTrId("Tree") );
 	} else if ( style == FmFileBrowseWidget::TreeStyle ) {
 		mStyleAction->setText( hbTrId("List") );
 	}
-	
+	*/
 	mWidget->setStyle( style );
 }
 
@@ -243,7 +254,7 @@
 
 void FmFileView::infoNoFileSelected()
 {
-	HbMessageBox::information( tr("No File/Folder selected" ) );
+	FmDlgUtils::information( hbTrId("No File/Folder selected" ) );
 }
 
 #ifdef FM_CHANGE_ORIENT_ENABLE
@@ -278,7 +289,7 @@
     if (files.size() == 0) {
 		infoNoFileSelected();
     } else {
-        if (FmDlgUtils::question( tr("Confirm Deletion?" ) )) {
+        if (FmDlgUtils::question( hbTrId("Confirm Deletion?" ) )) {
             QStringList fileList;
             for (int i = 0; i < files.size(); ++i) {
                 fileList.push_back( files[i].absoluteFilePath() );
@@ -290,13 +301,13 @@
                     break;
                 case FmErrAlreadyStarted:
                     // last operation have not finished
-                    HbMessageBox::information( hbTrId( "Operatin already started!" ) );
+                    FmDlgUtils::information( hbTrId( "Operatin already started!" ) );
                     break;
                 case FmErrWrongParam:
-                    HbMessageBox::information( hbTrId( "Wrong parameters!" ) );
+                    FmDlgUtils::information( hbTrId( "Wrong parameters!" ) );
                     break;
                 default:
-                    HbMessageBox::information( hbTrId( "Operation fail to start!" ) );
+                    FmDlgUtils::information( hbTrId( "Operation fail to start!" ) );
             }
             setSelectable( false );
         }
@@ -328,13 +339,13 @@
                     break;
                 case FmErrAlreadyStarted:
                     // last operation have not finished
-                    HbMessageBox::information( hbTrId( "Operatin already started!" ) );
+                    FmDlgUtils::information( hbTrId( "Operatin already started!" ) );
                     break;
                 case FmErrWrongParam:
-                    HbMessageBox::information( hbTrId( "Wrong parameters!" ) );
+                    FmDlgUtils::information( hbTrId( "Wrong parameters!" ) );
                     break;
                 default:
-                    HbMessageBox::information( hbTrId( "Operation fail to start!" ) );
+                    FmDlgUtils::information( hbTrId( "Operation fail to start!" ) );
             }
             setSelectable( false );
         }
@@ -349,7 +360,7 @@
     if (files.size() == 0) {
         infoNoFileSelected();
     } else {
-        QString targetPathName = FmFileDialog::getExistingDirectory( 0, tr( "move to" ),
+        QString targetPathName = FmFileDialog::getExistingDirectory( 0, hbTrId( "move to" ),
             QString(""), QStringList() );
 
         if( !targetPathName.isEmpty() && files.size() > 0 ) {
@@ -366,13 +377,13 @@
                     break;
                 case FmErrAlreadyStarted:
                     // last operation have not finished
-                    HbMessageBox::information( tr( "Operatin already started!" ) );
+                    FmDlgUtils::information( hbTrId( "Operatin already started!" ) );
                     break;
                 case FmErrWrongParam:
-                    HbMessageBox::information( tr( "Wrong parameters!" ) );
+                    FmDlgUtils::information( hbTrId( "Wrong parameters!" ) );
                     break;
                 default:
-                    HbMessageBox::information( tr( "Operation fail to start!" ) );
+                    FmDlgUtils::information( hbTrId( "Operation fail to start!" ) );
             }
             setSelectable( false );
         }
@@ -383,35 +394,29 @@
 {
     int maxFileNameLength = FmUtils::getMaxFileNameLength();
     QString associatedDrive = FmUtils::getDriveLetterFromPath( mWidget->currentPath().absoluteFilePath() );
+    QString path = FmUtils::fillPathWithSplash( mWidget->currentPath().absoluteFilePath() );
+    QString dirName = createDefaultFolderName( path );
     
-    QString dirName( hbTrId( "New folder" ) );
-    QString path = FmUtils::fillPathWithSplash( mWidget->currentPath().absoluteFilePath() );
-    QDir dir( path );
+    QDir dir( path );  
     if( dir.exists() ) {
-        while( FmDlgUtils::showTextQuery( hbTrId( "Enter name for " ), dirName,
-                true, maxFileNameLength, associatedDrive , false ) ){
-                QString newTargetPath = FmUtils::fillPathWithSplash(
-                    dir.absolutePath() ) + dirName;
-                QFileInfo newFileInfo( newTargetPath );
-                if( !FmUtils::checkFolderFileName( dirName ) ) {
-                    HbMessageBox::information( hbTrId( "Invalid file or folder name!" ) );
-                    continue;
-                }
-                if( !FmUtils::checkMaxPathLength( newTargetPath ) ) {
-                    HbMessageBox::information( hbTrId( "the path you specified is too long!" ) );
-                    continue;
-                }
-                if( newFileInfo.exists() ) {
-                    HbMessageBox::information( hbTrId( "%1 already exist!" ).arg( dirName ) );
-                    continue;
-                }
-    
-                if( !dir.mkdir( dirName ) ) {
-                    HbMessageBox::information( hbTrId("Operation failed!") );
-                }
-                refreshModel( path );
-                break;
+        while( FmDlgUtils::showTextQuery( hbTrId( "txt_fmgr_title_new_folder" ), dirName,
+            true, maxFileNameLength, associatedDrive , false ) ){
+            // remove whitespace from the start and the end.
+            dirName = dirName.trimmed();
+            QString newTargetPath = FmUtils::fillPathWithSplash(
+                dir.absolutePath() ) + dirName;
+            QString errString;
+            // check if name/path is available for use
+            if( !FmUtils::checkNewFolderOrFile( newTargetPath, errString ) ) {
+                FmDlgUtils::information( errString );
+                continue;
             }
+            if( !dir.mkdir( dirName ) ) {
+                FmDlgUtils::information( hbTrId("Operation failed!") );
+            }
+            refreshModel( path );
+            break;
+        }
         
     }
 }
@@ -423,13 +428,6 @@
 
 void FmFileView::on_leftAction_triggered()
 {
-//    FmFindDialog findDialog;
-//    QString keyword;
-//    QString findFolder;
-//    bool ret = findDialog.exec( keyword, findFolder );
-//
-//    if ( ret && !keyword.isEmpty() && !findFolder.isEmpty() )
-//        FmViewManager::viewManager()->createFindView( keyword, findFolder );
     mWidget->activeSearchPanel();
 }
 
@@ -506,3 +504,26 @@
 {
     this->setTitle( title );
 }
+
+QString FmFileView::createDefaultFolderName( const QString &path )
+{
+    // create new folder name, for example, New folder(01), New folder(02)
+    QString checkedPath( FmUtils::fillPathWithSplash( path ) );
+    QString dirName( hbTrId( "txt_fmgr_dialog_entry_new_folder" ) );
+    QString dirAbsolutePath( checkedPath + dirName );
+    QFileInfo fileInfo( dirAbsolutePath );
+    int i = 0;    
+    while ( fileInfo.exists() ) {
+        ++i;
+		QString numName;
+        if ( i < 10 ) {
+            numName.append( QString::number(0) );                        
+        }
+        numName.append( QString::number(i) );
+        // txt_fmgr_dialog_entry_new_folder_l1 is not available now. use actual text instead of it.
+        dirName = hbTrId( "New folder (%L1)" ).arg( numName );
+        dirAbsolutePath = checkedPath + dirName;
+        fileInfo.setFile( dirAbsolutePath );
+    }
+    return dirName;
+}
--- a/filemanager/src/filemanager/src/fmfileview.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmfileview.h	Thu Jul 22 16:30:56 2010 +0100
@@ -82,6 +82,14 @@
 	void infoNoFileSelected();
 	void removeToolBarAction();
 	
+    /**
+     * Create  Default folder name while create folder.
+     *
+     * @param  path Current path.
+     * @return Default folder name for new folder.
+     */
+	QString createDefaultFolderName( const QString &path );
+	
 private:
     FmFileBrowseWidget *mWidget;
     HbPushButton *mUpButton;
--- a/filemanager/src/filemanager/src/fmfindresultmodel.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmfindresultmodel.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -18,9 +18,11 @@
 
 #include "fmfindresultmodel.h"
 #include "fmfindthread.h"
+#include "fmfileiconprovider.h"
 
 #include <QDateTime>
-#include <QFileIconProvider>
+
+#include <hbglobal.h>
 
 FmFindResultModel::FmFindResultModel( QObject *parent )
     : QAbstractListModel( parent )
@@ -93,10 +95,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();
         }
     }
@@ -171,7 +173,6 @@
         mFindThread->setLastResult( mFindResult );
     }
 	removeRows( 0, mFindResult.size() );
-    emit modelCountChanged( mFindResult.size() );
     mFindThread->start();
 }
 
@@ -188,8 +189,10 @@
 
 void FmFindResultModel::on_findThread_found( int count )
 {
-    int size = mFindResult.size();
-    insertRows( mFindResult.size() - count, count );
+    if( count > 0 ) {
+        int size = mFindResult.size();
+        insertRows( mFindResult.size() - count, count );
+    }
     emit modelCountChanged( mFindResult.size() );
 }
 
@@ -203,7 +206,7 @@
 {
     mFindThread = new FmFindThread( &mFindResult, this );
     mFindThread->setObjectName( "findThread" );
-    mIconProvider = new QFileIconProvider();
+    mIconProvider = new FmFileIconProvider();
 }
 
 bool FmFindResultModel::caseNameLessThan(const QString &s1, const QString &s2)
@@ -250,21 +253,26 @@
            
 //    emit  layoutAboutToBeChanged();
     
+    QStringList lst( mFindResult );
+    removeRows( 0, mFindResult.size() );
+    
     switch( ( SortFlag )column )
     {
     case Name:
-        qSort( mFindResult.begin(), mFindResult.end(), caseNameLessThan );
+        qSort( lst.begin(), lst.end(), caseNameLessThan );
         break;
     case Time:
-        qSort( mFindResult.begin(), mFindResult.end(), caseTimeLessThan );
+        qSort( lst.begin(), lst.end(), caseTimeLessThan );
         break;
     case Size:
-        qSort( mFindResult.begin(), mFindResult.end(), caseSizeLessThan );
+        qSort( lst.begin(), lst.end(), caseSizeLessThan );
         break;
     case Type:
-        qSort( mFindResult.begin(), mFindResult.end(), caseTypeLessThan );
+        qSort( lst.begin(), lst.end(), caseTypeLessThan );
         break;
-    }
-//    emit layoutChanged();
-    emit refresh();
+    }    
+    
+    mFindResult = lst;
+    insertRows( 0, mFindResult.size() );
+    emit modelCountChanged( mFindResult.size() );
 }
--- a/filemanager/src/filemanager/src/fmfindresultmodel.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmfindresultmodel.h	Thu Jul 22 16:30:56 2010 +0100
@@ -26,7 +26,7 @@
 #include <QAbstractListModel>
 
 class FmFindThread;
-class QFileIconProvider;
+class FmFileIconProvider;
 
 class FmFindResultModel : public QAbstractListModel
 {
@@ -79,7 +79,6 @@
     // pass modelCountChanged signal to parent widget
     // so parent widget could change contentWiget between emptyTipsWidget and listWidget
     void modelCountChanged( int count );
-    void refresh();
 
 private slots:
     void on_findThread_found( int count );
@@ -90,7 +89,7 @@
 
     FmFindThread *mFindThread;
     QStringList mFindResult;
-    QFileIconProvider *mIconProvider;
+    FmFileIconProvider *mIconProvider;
 };
 
 #endif
--- a/filemanager/src/filemanager/src/fmfindthread.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmfindthread.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -23,6 +23,7 @@
 FmFindThread::FmFindThread( QStringList *r, QObject *parent )
     : QThread( parent )
 {
+    setPriority( LowPriority );
     mResult = r;
 }
 
@@ -58,7 +59,6 @@
 void FmFindThread::run()
 {
     mStop = false;
-    setPriority( LowPriority );
     if (findPattern.isEmpty() || !findPattern.isValid())
         return;
 
@@ -105,9 +105,7 @@
         findDirs.removeFirst();
     }
     
-    if( count > 0 ) {
-        emitFound();
-    }
+    emitFound();
 }
 
 void FmFindThread::emitFound()
@@ -125,7 +123,7 @@
 void FmFindThread::findInResult()
 {
     if( mFindPath.isEmpty() ){
-        int count = mLastResult.count();
+        int count = mResult->count();
         for (QStringList::Iterator it = mLastResult.begin(); it != mLastResult.end(); ++it) { 
             if (mStop){
                 return;
@@ -144,4 +142,5 @@
             }
         }    
     }
+    emitFound();
 }
--- a/filemanager/src/filemanager/src/fmfindwidget.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmfindwidget.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -75,8 +75,6 @@
 void FmFindWidget::on_resultModel_finished()
 {
     emit finished();
-    //Since layout problem is found, refresh it
-    on_resultModel_refresh();  
 }
 
 void FmFindWidget::on_resultModel_modelCountChanged( int count )
@@ -140,9 +138,6 @@
     connect( mModel, SIGNAL( modelCountChanged( int )),
         this, SLOT( on_resultModel_modelCountChanged( int )) );
     
-    connect( mModel, SIGNAL( refresh()),
-        this, SLOT( on_resultModel_refresh()) );
-
     mListView = new HbListView( this );
     mListView->setModel( mModel );
 
@@ -204,11 +199,5 @@
 
 }
 
-void FmFindWidget::on_resultModel_refresh()
-{
-    mListView->setModel( 0 );
-    mListView->setModel( mModel );  
-}
 
 
-
--- a/filemanager/src/filemanager/src/fmfindwidget.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmfindwidget.h	Thu Jul 22 16:30:56 2010 +0100
@@ -65,8 +65,7 @@
 
     void on_resultModel_finished();
     void on_resultModel_modelCountChanged( int count );
-    void on_resultModel_refresh();
-        
+    
 private:
     void init();
     void initSearchPanel();
--- a/filemanager/src/filemanager/src/fmsplitview.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmsplitview.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -21,7 +21,6 @@
 #include "fmdriverlistwidget.h"
 #include <QGraphicsLinearLayout>
 
-#include <hbmessagebox.h>
 #include <hbmenu.h>
 #include <hbaction.h>
 #include <hbmainwindow.h>
--- a/filemanager/src/filemanager/src/fmviewmanager.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmviewmanager.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -29,9 +29,9 @@
 #include "fmoperationbase.h"
 #include "fmdrivewatcher.h"
 #include "fmdialog.h"
+#include "fmdlgutils.h"
 
 #include <hbview.h>
-#include <hbmessagebox.h>
 #include <QFileSystemWatcher>
 #include <QFileInfo>
 
@@ -153,11 +153,17 @@
 
 void FmViewManager::on_operationService_notifyFinish( FmOperationBase *operationBase )
 {
+    if( !operationBase ){
+        Q_ASSERT_X( false, "FmViewManager",
+                "NULL is not accepted in on_operationService_notifyFinish()" );
+        return;
+    }
+    
     if( operationBase->operationType() == FmOperationService::EOperationTypeBackup )
         {
-        emit refreshBackupView();
+        // after finish backup, we need refresh backup date in backup view.
+        emit refreshBackupDate();
         }
-
 }
 
 
@@ -186,13 +192,13 @@
 
     QString checkedPath = FmUtils::checkDriveToFolderFilter( absolutePath );
     if( FmUtils::isDriveAvailable( path ) ) {
-        if( !FmUtils::isPathAccessabel( checkedPath ) ) {
+        if( FmErrNone != FmUtils::isPathAccessabel( checkedPath )  ) {
             checkedPath.clear();
         }
     }
    
     if( checkedPath.isEmpty() ) {
-        HbMessageBox::information( QString( hbTrId("Path: %1 is unavailable!").arg( path )) );
+        FmDlgUtils::information( QString( hbTrId("Path: %1 is unavailable!").arg( path )) );
         return;
     }
 
@@ -238,8 +244,10 @@
 
     mMainWindow->addView( backupView );
     mMainWindow->setCurrentView( backupView );
-    connect( this, SIGNAL( refreshBackupView() ), backupView, SLOT( refreshBackupView() ) );
-
+    connect( this, SIGNAL( refreshModel( QString ) ), //emit when need refresh models
+            backupView, SLOT( refreshModel( QString ) ) );
+    connect( this, SIGNAL( refreshBackupDate() ),  //emit when need refresh backup date
+            backupView, SLOT( refreshBackupDate() ) );
 }
 
 void FmViewManager::createRestoreView()
@@ -248,6 +256,7 @@
 
     mMainWindow->addView( restoreView );
     mMainWindow->setCurrentView( restoreView );
+    connect( this, SIGNAL( refreshRestoreView() ), restoreView, SLOT( refreshRestoreView() ) );
 
 }
 
@@ -257,6 +266,7 @@
 
     mMainWindow->addView( deleteBackupView );
     mMainWindow->setCurrentView( deleteBackupView );
+    connect( this, SIGNAL( refreshDeleteBackupView() ), deleteBackupView, SLOT( refreshDeleteBackupView() ) );
 
 }
 
@@ -289,6 +299,8 @@
 {
     FmLogger::log( QString( "FmViewManager::on_driveWatcher_driveAddedOrChanged start" ) );
     emit refreshModel( QString("") );
+    emit refreshDeleteBackupView();
+    emit refreshRestoreView();
 	checkDlgCloseUnit();
     FmLogger::log( QString( "FmViewManager::on_driveWatcher_driveAddedOrChanged end" ) );
 
--- a/filemanager/src/filemanager/src/fmviewmanager.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/fmviewmanager.h	Thu Jul 22 16:30:56 2010 +0100
@@ -99,7 +99,9 @@
     void on_operationService_notifyFinish( FmOperationBase *operationBase );
 signals:
     void refreshModel( const QString &path  );
-    void refreshBackupView();
+    void refreshBackupDate();
+    void refreshDeleteBackupView();
+    void refreshRestoreView();
 
 private:
        /// create view will push current view to stack
--- a/filemanager/src/filemanager/src/listviewitems.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/listviewitems.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -20,7 +20,6 @@
 #include "listviewitems.h"
 #include "fmutils.h"
 
-#include <QFileIconProvider>
 #include <QGraphicsLinearLayout>
 
 #include <hblabel.h>
@@ -32,8 +31,8 @@
     : HbListViewItem( parent ),
       mIconLabel( 0 ),
       mDiskNameLabel( 0 ),
-      mSizeLabel( 0 ),
-      mFreeLabel( 0 ),
+      mFirstLabel( 0 ),
+      mSecondLabel( 0 ),
       mCheckBox( 0 ),
       hLayout( 0 )
 
@@ -70,10 +69,7 @@
     }
 	QVariant variant = modelIndex().data( Qt::DecorationRole );
 	QIcon icon = qvariant_cast<QIcon>( variant );
-    if( icon.isNull() ) {
-        QFileIconProvider fileIconProvider;
-        icon = fileIconProvider.icon( QFileIconProvider::Drive );
-    }
+    // FmFileIconProvider in FmDriveModel already handle null icon issue
     QString displayString = modelIndex().data( Qt::DisplayRole ).toString();
 	QString diskName = modelIndex().data( Qt::UserRole ).toString();
 
@@ -84,8 +80,19 @@
 	FmDriverInfo driverInfo = FmUtils::queryDriverInfo( diskName );
 
     mDiskNameLabel->setPlainText( displayString );
-    mSizeLabel->setPlainText( hbTrId ( "Size: " ) + FmUtils::formatStorageSize( driverInfo.size() ) );
-    mFreeLabel->setPlainText( hbTrId ( "Free: " ) + FmUtils::formatStorageSize( driverInfo.freeSize() ) );
+	if( driverInfo.driveState() & FmDriverInfo::EDriveAvailable ) {
+		mFirstLabel->setPlainText( hbTrId ( "Size: " ) + FmUtils::formatStorageSize( driverInfo.size() ) );
+		mSecondLabel->setPlainText( hbTrId ( "Free: " ) + FmUtils::formatStorageSize( driverInfo.freeSize() ) );
+	} else if( driverInfo.driveState() & FmDriverInfo::EDriveLocked ) {
+		mFirstLabel->setPlainText( hbTrId ( "Locked" ) );
+		mSecondLabel->setPlainText( QString(" ") );
+	} else if( driverInfo.driveState() & FmDriverInfo::EDriveCorrupted ) {
+		mFirstLabel->setPlainText( hbTrId ( "Corrupted" ) );
+		mSecondLabel->setPlainText( QString(" ") );
+	} else if( driverInfo.driveState() & FmDriverInfo::EDriveNotPresent ) {
+		mFirstLabel->setPlainText( hbTrId ( "Not Ready" ) );
+		mSecondLabel->setPlainText( QString(" ") );
+	}
 
 //    mCheckBox->setCheckState( checkState() );
 }
@@ -116,15 +123,15 @@
 	vLayout->addItem( mDiskNameLabel );
 	vLayout->setAlignment( mDiskNameLabel, Qt::AlignLeft );
 
-	mSizeLabel = new HbLabel();
-	mSizeLabel->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
-	vLayout->addItem( mSizeLabel );
-	vLayout->setAlignment( mSizeLabel, Qt::AlignLeft );
+	mFirstLabel = new HbLabel();
+	mFirstLabel->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
+	vLayout->addItem( mFirstLabel );
+	vLayout->setAlignment( mFirstLabel, Qt::AlignLeft );
 
-	mFreeLabel = new HbLabel();
-	mFreeLabel->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
-	vLayout->addItem( mFreeLabel );
-	vLayout->setAlignment( mFreeLabel, Qt::AlignLeft );
+	mSecondLabel = new HbLabel();
+	mSecondLabel->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) );
+	vLayout->addItem( mSecondLabel );
+	vLayout->setAlignment( mSecondLabel, Qt::AlignLeft );
 
 	HbWidget *labelsWidget = new HbWidget();
 	labelsWidget->setLayout(vLayout);
@@ -134,88 +141,3 @@
 
 	setLayout( hLayout );
 }
-
-//file list item, not used.
-/*
-FileListViewItem::FileListViewItem( QGraphicsItem *parent )
-    : HbListViewItem( parent ),
-      mIconLabel( 0 ),
-      mNameLabel( 0 ),
-      mCheckBox( 0 )
-{
-    init();
-}
-
-FileListViewItem::~FileListViewItem()
-{
-}
-
-void FileListViewItem::polish(HbStyleParameters& params)
-{
-    Q_UNUSED(params);
-}
-
-bool FileListViewItem::canSetModelIndex( const QModelIndex &index ) const
-{
-    Q_UNUSED( index );
-    return true;
-
-//  do not used
-//	const QFileSystemModel *model = dynamic_cast<const QFileSystemModel *>(index.model());
-//	QFileInfo info = model->fileInfo( index );
-//	QString path = info.path();
-
-//	return (path.right(1) != ":");
-   
-}
-
-
-HbAbstractViewItem *FileListViewItem::createItem()
-{
-	return new FileListViewItem( parentItem() );
-}
-
-void FileListViewItem::updateChildItems()
-{
-	QVariant variant = modelIndex().data( Qt::DecorationRole );
-	QIcon icon = qvariant_cast<QIcon>( variant );
-	QString diskName = modelIndex().data( Qt::DisplayRole ).toString();
-
-    QString debugString = "updateChindItems: diskName = " + diskName;
-    FmLogger::log(debugString);
-	mIconLabel->setIcon( HbIcon( icon ) );
-	mNameLabel->setPlainText( diskName );
-    mCheckBox->setCheckState( checkState() );
-}
-
-void FileListViewItem::setCheckedState( int state )
-{
-	HbAbstractViewItem::setCheckState( static_cast<Qt::CheckState>(state) );
-}
-
-void FileListViewItem::init()
-{
-	QGraphicsLinearLayout *hLayout = new QGraphicsLinearLayout();
-	hLayout->setOrientation( Qt::Horizontal );
-
-	mIconLabel = new HbLabel();
-	mIconLabel->setMinimumWidth(32);
-	hLayout->addItem( mIconLabel );
-	hLayout->setAlignment( mIconLabel, Qt::AlignTop );
-	hLayout->setStretchFactor( mIconLabel, 1 );
-
-	mNameLabel = new HbLabel();
-	mNameLabel->setFontSpec( HbFontSpec( HbFontSpec::Primary ) );
-	mNameLabel->setAlignment( Qt::AlignVCenter );
-	hLayout->addItem( mNameLabel );
-	hLayout->setAlignment( mNameLabel, Qt::AlignLeft );
-	hLayout->setStretchFactor( mNameLabel, 20 );
-
-    mCheckBox = new HbCheckBox( this );
-	connect( mCheckBox, SIGNAL(stateChanged(int)), this, SLOT(setCheckedState(int)) );
-    hLayout->addItem( mCheckBox );
-    hLayout->setAlignment( mCheckBox, Qt::AlignLeft );
-
-	setLayout( hLayout );
-}
-*/
--- a/filemanager/src/filemanager/src/listviewitems.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/listviewitems.h	Thu Jul 22 16:30:56 2010 +0100
@@ -50,8 +50,8 @@
 
     HbLabel *mIconLabel;
     HbLabel *mDiskNameLabel;
-    HbLabel *mSizeLabel;
-    HbLabel *mFreeLabel;
+    HbLabel *mFirstLabel;
+    HbLabel *mSecondLabel;
     HbCheckBox *mCheckBox;
     QGraphicsLinearLayout *hLayout;
 };
--- a/filemanager/src/filemanager/src/main.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/main.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -31,7 +31,6 @@
 {
     FmLogger::log( "main start" );
     HbApplication app( argc, argv );
-    app.setApplicationName( "filemanager" );
 
     QTranslator translator;
     QString lang = QLocale::system().name(); 
@@ -39,6 +38,8 @@
     translator.load( path + "filemanager_" + lang );
     app.installTranslator(&translator);
 
+    app.setApplicationName( hbTrId("txt_fmgr_title_file_manager") );
+    
     FmLogger::log( "main_createMainwindow start" );
     FmMainWindow mw;
     FmLogger::log( "main_createMainwindow end" );
--- a/filemanager/src/filemanager/src/operationservice/fmoperationbase.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationbase.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -17,6 +17,8 @@
 */
 
 #include "fmoperationbase.h"
+#include "fmdrivedetailstype.h"
+#include <QtAlgorithms>
 
 FmOperationBase::FmOperationBase( QObject *parent, FmOperationService::TOperationType operationType ) : 
     QObject( parent ), mOperationType( operationType )
@@ -56,6 +58,7 @@
 }
 FmOperationDriveDetails::~FmOperationDriveDetails()
 {
+    qDeleteAll(mDetailsSizeList);
 }
 
 QString FmOperationDriveDetails::driverName()
--- a/filemanager/src/filemanager/src/operationservice/fmoperationcopy.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationcopy.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -19,6 +19,7 @@
 #include "fmcommon.h"
 #include "fmoperationbase.h"
 #include "fmdrivedetailstype.h"
+#include "fmutils.h"
 
 #include <QDir>
 #include <QFileInfo>
@@ -96,7 +97,7 @@
                     }
                     destFi.setFile( destFi.absoluteFilePath() );
                 } else {
-                    emit askForRename( destFi.absoluteFilePath(), &newName );
+                    queryForRename( destFi.absoluteFilePath(), &newName );
                     if( newName.isEmpty() ) {
                         ret = FmErrCancel;
                         break;
@@ -106,7 +107,7 @@
                 }
             } else{
                 // destination is dir
-                emit askForRename( destFi.absoluteFilePath(), &newName );
+                queryForRename( destFi.absoluteFilePath(), &newName );
                 if( newName.isEmpty() ) {
                     ret = FmErrCancel;
                     break;
@@ -155,7 +156,7 @@
             *mErrString = source;
             ret = FmErrCannotCopy;
         } else {
-        IncreaseProgress( fileSize );
+        increaseProgress( fileSize );
         }
     } else if (fi.isDir()) {
         ret = copyDirInsideContent( source, newName );
@@ -171,18 +172,21 @@
 
 int FmOperationCopy::copyDirInsideContent( const QString &srcPath, const QString &destPath )
 {
-    if( destPath.contains( srcPath, Qt::CaseInsensitive ) ) {
+    QFileInfo srcInfo( srcPath );
+    QFileInfo destInfo( destPath );
+    
+    QString destUpPath = FmUtils::fillPathWithSplash( destInfo.absolutePath() );
+    if( destUpPath.contains( srcPath, Qt::CaseInsensitive ) ) {
         *mErrString = destPath;
         return FmErrCopyDestToSubFolderInSrc;
     }
 
-    QFileInfo srcInfo( srcPath );
+    
     if( !srcInfo.isDir() || !srcInfo.exists() ) {
         *mErrString = srcPath;
         return FmErrSrcPathDoNotExist;
     }
-
-    QFileInfo destInfo( destPath );
+    
     if( !destInfo.exists() ) {
         if( !destInfo.dir().mkdir( destInfo.absoluteFilePath() ) ) {
             *mErrString = destPath;
@@ -210,7 +214,7 @@
                 *mErrString = fileInfo.absoluteFilePath();
                 return FmErrCannotCopy;
             }
-            IncreaseProgress( fileInfo.size() );
+            increaseProgress( fileInfo.size() );
         } else if( fileInfo.isDir() ) {
             //makedir
             QString newDirPath = destPath + fileInfo.absoluteFilePath().mid( srcPath.length() );
@@ -235,7 +239,7 @@
     return FmErrNone;
 }
 
-void FmOperationCopy::IncreaseProgress( quint64 size )
+void FmOperationCopy::increaseProgress( quint64 size )
 {
     if( mTotalSize <=0 ) {
         return;
@@ -247,3 +251,8 @@
         emit notifyProgress( mCurrentStep );
     }
 }
+
+void FmOperationCopy::queryForRename( const QString &srcFile, QString *destFile )
+{
+    emit askForRename( srcFile, destFile );
+}
--- a/filemanager/src/filemanager/src/operationservice/fmoperationcopy.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationcopy.h	Thu Jul 22 16:30:56 2010 +0100
@@ -36,6 +36,7 @@
 signals:
     void askForRename( const QString &srcFile, QString *destFile );
     void askForReplace( const QString &srcFile, const QString &destFile, bool *isAccepted );
+    void showNote( const char *note );
     void notifyPreparing( bool cancelable );
     void notifyStart( bool cancelable, int maxSteps );
     void notifyProgress( int currentStep );
@@ -43,7 +44,8 @@
 private:
     int copy( const QString &source, const QString &targetPath, const QString &newTargetName = QString() );
     int copyDirInsideContent( const QString &srcPath, const QString &destPath );
-    void IncreaseProgress( quint64 size );
+    void increaseProgress( quint64 size );
+    void queryForRename( const QString &srcFile, QString *destFile );
 
 private:
     QStringList mSourceList;
--- a/filemanager/src/filemanager/src/operationservice/fmoperationmove.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationmove.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -95,7 +95,7 @@
                     }
                     destFi.setFile( destFi.absoluteFilePath() );
                 } else {
-                    emit askForRename( destFi.absoluteFilePath(), &newName );
+                    queryForRename( destFi.absoluteFilePath(), &newName );
                     if( newName.isEmpty() ) {
                         ret = FmErrCancel;
                         break;
@@ -105,7 +105,7 @@
                 }
             } else{
                 // destination is dir
-                emit askForRename( destFi.absoluteFilePath(), &newName );
+                queryForRename( destFi.absoluteFilePath(), &newName );
                 if( newName.isEmpty() ) {
                     ret = FmErrCancel;
                     break;
@@ -155,7 +155,7 @@
             *mErrString = source;
             ret = FmErrCannotRemove;
         }
-        IncreaseProgress( fileSize );
+        increaseProgress( fileSize );
     } else if (fi.isDir()) {
         if( FmUtils::isDefaultFolder( source ) ){
             ret = FmErrRemoveDefaultFolder;
@@ -180,18 +180,20 @@
 }
 int FmOperationMove::moveDirInsideContent( const QString &srcPath, const QString &destPath )
 {
-    if( destPath.contains( srcPath, Qt::CaseInsensitive ) ) {
+    QFileInfo srcInfo( srcPath );
+    QFileInfo destInfo( destPath );
+        
+    QString destUpPath = FmUtils::fillPathWithSplash( destInfo.absolutePath() );
+    if( destUpPath.contains( srcPath, Qt::CaseInsensitive ) ) {
         *mErrString = destPath;
         return FmErrMoveDestToSubFolderInSrc;
     }
-
-    QFileInfo srcInfo( srcPath );
+    
     if( !srcInfo.isDir() || !srcInfo.exists() ) {
         *mErrString = srcPath;
         return FmErrSrcPathDoNotExist;
     }
-
-    QFileInfo destInfo( destPath );
+    
     if( !destInfo.exists() ) {
         if( !destInfo.dir().mkdir( destInfo.absoluteFilePath() ) ) {
             *mErrString = destPath;
@@ -223,7 +225,7 @@
                 *mErrString = fileInfo.absoluteFilePath();
                 return FmErrCannotRemove;
             }
-            IncreaseProgress( fileSize );
+            increaseProgress( fileSize );
         } else if( fileInfo.isDir() ) {
             //makedir
             QString newDirPath = destPath + fileInfo.absoluteFilePath().mid( srcPath.length() );
@@ -256,7 +258,7 @@
     return FmErrNone;
 }
 
-void FmOperationMove::IncreaseProgress( quint64 size )
+void FmOperationMove::increaseProgress( quint64 size )
 {
     if( mTotalSize <=0 ) {
         return;
@@ -269,4 +271,7 @@
     }
 }
 
-
+void FmOperationMove::queryForRename( const QString &srcFile, QString *destFile )
+{
+    emit askForRename( srcFile, destFile );
+}
--- a/filemanager/src/filemanager/src/operationservice/fmoperationmove.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationmove.h	Thu Jul 22 16:30:56 2010 +0100
@@ -35,6 +35,7 @@
 signals:
     void askForRename( const QString &srcFile, QString *destFile );
     void askForReplace( const QString &srcFile, const QString &destFile, bool *isAccepted );
+    void showNote( const QString &noteString );
     void notifyPreparing( bool cancelable );
     void notifyStart( bool cancelable, int maxSteps );
     void notifyProgress( int currentStep );
@@ -42,7 +43,8 @@
 private:
     int move( const QString &source, const QString &targetPath, const QString &newTargetName = QString() );
     int moveDirInsideContent( const QString &srcPath, const QString &destPath );
-    void IncreaseProgress( quint64 size );
+    void increaseProgress( quint64 size );
+    void queryForRename( const QString &srcFile, QString *destFile );
      
 private:
     QStringList mSourceList;
--- a/filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -21,10 +21,11 @@
 #include "fmviewdetailsdialog.h"
 #include "fmdlgutils.h"
 #include "fmutils.h"
-
+#include <hbaction.h>
 #include <hbprogressdialog.h>
 #include <hbaction.h>
-#include <hbmessagebox.h>
+#include <hbglobal.h>
+#include <QFileInfo>
 
 FmOperationResultProcesser::FmOperationResultProcesser( FmOperationService *operationService )
     : mOperationService( operationService ), mNote( 0 )
@@ -39,12 +40,31 @@
     FmOperationBase* operationBase, const QString &srcFile, QString *destFile )
 {
     Q_UNUSED( operationBase );
+    int maxFileNameLength = FmUtils::getMaxFileNameLength();
     
     QString questionText = QString( "file " ) +
         srcFile + QString( " already exist, please rename:" );
-    QString value;
-    FmDlgUtils::showTextQuery( questionText, value, true );
-    *destFile = value;
+    QString value;   
+    QFileInfo fileInfo(srcFile);
+    bool ret = FmDlgUtils::showTextQuery( questionText, value, true, maxFileNameLength, QString(), false );
+    while ( ret ) {
+        // remove whitespace from the start and the end.
+        value = value.trimmed();
+        QString newTargetPath = FmUtils::fillPathWithSplash(
+                                fileInfo.absolutePath() ) + value;
+        QString errString;
+        // check if name/path is available for use.
+        if( !FmUtils::checkNewFolderOrFile( newTargetPath, errString ) ) {
+            FmDlgUtils::information( errString );
+            ret = FmDlgUtils::showTextQuery( questionText, value, true, maxFileNameLength, QString(), false );
+            continue;
+        } else {
+            break;
+        }
+    }   
+	if( ret ) {
+		*destFile = value;
+	}
 }
 
 void FmOperationResultProcesser::onAskForReplace(
@@ -62,9 +82,14 @@
     }
 }
 
+void FmOperationResultProcesser::onShowNote( FmOperationBase* operationBase, const char *noteString )
+{
+    FmDlgUtils::information(hbTrId(noteString));
+}
+
 void FmOperationResultProcesser::onNotifyWaiting( FmOperationBase* operationBase, bool cancelable )
 {
-    QString title = tr("Operation");
+    QString title = hbTrId("Operation");
     switch( operationBase->operationType() )
     {
     case FmOperationService::EOperationTypeBackup:
@@ -119,7 +144,7 @@
 
 void FmOperationResultProcesser::onNotifyStart( FmOperationBase* operationBase, bool cancelable, int maxSteps )
 {
-    QString title = tr("Operation");
+    QString title = hbTrId("Operation");
     switch( operationBase->operationType() )
     {
     case FmOperationService::EOperationTypeBackup:
@@ -179,9 +204,9 @@
         }
     case FmOperationService::EOperationTypeFormat:
         {
-            HbMessageBox::information( QString( hbTrId("Format succeed!")) );
+            FmDlgUtils::information( QString( hbTrId("Format succeed!")) );
             FmOperationFormat *paramFormat = static_cast<FmOperationFormat*>( operationBase );
-            QString title( tr( "Drive name ") );  
+            QString title( hbTrId( "Drive name ") );  
             QString driveName( paramFormat->driverName() );
             FmDriverInfo driverInfo = FmUtils::queryDriverInfo( driveName );
             FmDriverInfo::DriveState state = driverInfo.driveState();
@@ -192,13 +217,13 @@
                 while( FmDlgUtils::showTextQuery( title, volumeName, false, FmMaxLengthofDriveName ) ){
                     int err = FmUtils::renameDrive( driveName, volumeName );
                     if ( err == FmErrNone ){
-                        HbMessageBox::information( hbTrId( "The name has been changed!" ) );
+                        FmDlgUtils::information( hbTrId( "The name has been changed!" ) );
                         mOperationService->on_operationThread_refreshModel( driveName );
                         break;
                     } else if( err == FmErrBadName ) {
-                        HbMessageBox::information( hbTrId( "Illegal characters! Use only letters and numbers." ) );
+                        FmDlgUtils::information( hbTrId( "Illegal characters! Use only letters and numbers." ) );
                     } else{
-                        HbMessageBox::information( hbTrId( "Error occurred, operation cancelled!" ) );
+                        FmDlgUtils::information( hbTrId( "Error occurred, operation cancelled!" ) );
                         break;
                     }                
                 }
@@ -207,16 +232,16 @@
         }
     case FmOperationService::EOperationTypeBackup:
         {
-            HbMessageBox::information( QString( hbTrId("Backup succeed!")) );
+            FmDlgUtils::information( QString( hbTrId("Backup succeed!")) );
             break;
         }
     case FmOperationService::EOperationTypeRestore:
         {
-            HbMessageBox::information( QString( hbTrId("Restore succeed!")) );
+            FmDlgUtils::information( QString( hbTrId("Restore succeed!")) );
             break;
         }
     default:
-        HbMessageBox::information( QString( hbTrId("Operation finished")) );
+        FmDlgUtils::information( QString( hbTrId("Operation finished")) );
 
     }
 }
@@ -227,53 +252,56 @@
     switch( error )
     {
         case FmErrAlreadyStarted:
-            HbMessageBox::information( QString( hbTrId("Operation already started!")) );
+            FmDlgUtils::information( QString( hbTrId("Operation already started!")) );
             return;
         case FmErrLocked:
-            HbMessageBox::information( QString( hbTrId("Operation failed because drive is locked!")) );
+            FmDlgUtils::information( QString( hbTrId("Operation failed because drive is locked!")) );
             return;
         case FmErrPathNotFound:
-            HbMessageBox::information( QString( hbTrId("Operation failed because can not find target path or drive is not available!") ) );
+            FmDlgUtils::information( QString( hbTrId("Operation failed because can not find target path or drive is not available!") ) );
             return;
         case FmErrCorrupt:
-            HbMessageBox::information( QString( hbTrId("Operation failed because target media is corrupted!") ) );
+            FmDlgUtils::information( QString( hbTrId("Operation failed because target media is corrupted!") ) );
             return;
-        case FmErrNotReady:
-            HbMessageBox::information( QString( hbTrId("Operation failed because device is not ready!") ) );
+        case FmErrNotReady: // Caused when MMC & OTG is not inserted when start backup
+            FmDlgUtils::information( QString( hbTrId("Operation failed because device is not ready!") ) );
+            return;
+        case FmErrDisMounted: // Caused by eject MMC when preparing backup
+            FmDlgUtils::information( QString( hbTrId("Operation failed because device has been removed!") ) );
             return;
         case FmErrDiskFull:
-            HbMessageBox::information( QString( hbTrId("Not enough space. Operation cancelled.!")) );
+            FmDlgUtils::information( QString( hbTrId("Not enough space. Operation cancelled!")) );
             return;
         case FmErrCopyDestToSubFolderInSrc:
-            HbMessageBox::information( QString( hbTrId("Can not copy to sub folder!")) );
+            FmDlgUtils::information( QString( hbTrId("Can not copy to sub folder!")) );
             return;
         case FmErrMoveDestToSubFolderInSrc:
-            HbMessageBox::information( QString( hbTrId("Can not move to sub folder!")) );
+            FmDlgUtils::information( QString( hbTrId("Can not move to sub folder!")) );
             return;
         case FmErrCannotRemove:{
             if( operationBase->operationType() == FmOperationService::EOperationTypeCopy ) {
                 // when copy a file/dir to same name destination, and delete dest fail, this error will occur
-                HbMessageBox::information( QString( hbTrId( "Can not copy because %1 can not be deleted!" ).arg( errString ) ) );
+                FmDlgUtils::information( QString( hbTrId( "Can not copy because %1 can not be deleted!" ).arg( errString ) ) );
                 return;
             }
             else if( operationBase->operationType() == FmOperationService::EOperationTypeMove ) {
                 // when move a file/dir to same name destination, and delete dest fail, this error will occur
-                HbMessageBox::information( QString( hbTrId( "Can not move because %1 can not be deleted!" ).arg( errString ) ) );
+                FmDlgUtils::information( QString( hbTrId( "Can not move because %1 can not be deleted!" ).arg( errString ) ) );
                 return;
             }
             // when delete file/dir fail, this error will occur
-            HbMessageBox::information( QString( hbTrId( "Can not delete %1!" ).arg( errString ) ) );
+            FmDlgUtils::information( QString( hbTrId( "Can not delete %1!" ).arg( errString ) ) );
             return; 
         }      
         case FmErrRemoveDefaultFolder:{
             if( operationBase->operationType() == FmOperationService::EOperationTypeMove ) {
                 // when move a default folder
-                HbMessageBox::information( QString( hbTrId( "Could not move because the default folder %1 can not be deleted!" ).arg( errString ) ) );
+                FmDlgUtils::information( QString( hbTrId( "Could not move because the default folder %1 can not be deleted!" ).arg( errString ) ) );
                 return;
             }
             else {
                // when delete the default folder
-               HbMessageBox::information( QString( hbTrId( "Could not remove the default folder %1 " ).arg( errString ) ) );
+               FmDlgUtils::information( QString( hbTrId( "Could not remove the default folder %1 " ).arg( errString ) ) );
                return;
             }
         }
@@ -282,10 +310,10 @@
     switch( operationBase->operationType() )
     {
     case FmOperationService::EOperationTypeFormat:
-        HbMessageBox::information( QString( hbTrId("Format failed!")) );
+        FmDlgUtils::information( QString( hbTrId("Format failed!")) );
         break;
     default:
-        HbMessageBox::information( QString( hbTrId("Operation failed")) );
+        FmDlgUtils::information( QString( hbTrId("Operation failed")) );
     }
 
 }
@@ -294,7 +322,7 @@
 {
     Q_UNUSED( operationBase );
     cancelProgress();
-    HbMessageBox::information( QString( hbTrId("Operation Canceled!") ) );
+    FmDlgUtils::information( QString( hbTrId("Operation Canceled!") ) );
 }
 
 
@@ -322,10 +350,15 @@
 //        mNote->setProgressDialogType( HbProgressDialog::WaitNote );
 //    }
     mNote->setText( title );
-    if( !cancelable )
-        mNote->primaryAction()->setDisabled( true );
-    else
-        mNote->primaryAction()->setDisabled( false );
+    QList<QAction *> actionList = mNote->actions();
+    if (actionList.size() > 0) {        
+        QAction *cancelAction = actionList.at(0);
+        if (!cancelable) {
+            cancelAction->setDisabled( true );
+        } else {
+            cancelAction->setDisabled( false );
+        }        
+    } 
     mNote->open();
 
 }
@@ -351,12 +384,15 @@
     mNote->setMaximum( 65535 );
     mNote->setProgressValue( 0 );
     mNote->setText( title );
-    if( !cancelable ){
-        mNote->primaryAction()->setDisabled( true );  
-    }
-    else{
-        mNote->primaryAction()->setDisabled( false );       
-    }
+    QList<QAction *> actionList = mNote->actions();
+    if (actionList.size() > 0) {        
+        QAction *cancelAction = actionList.at(0);
+        if (!cancelable) {
+            cancelAction->setDisabled( true );
+        } else {
+            cancelAction->setDisabled( false );
+        }        
+    } 
     mNote->open();
 }
 
@@ -383,14 +419,15 @@
     mNote->setMaximum( maxValue );
 
     mNote->setProgressValue( 0 );
-
-    if( !cancelable ){
-        mNote->primaryAction()->setDisabled( true );
-    }
-    else{
-        mNote->primaryAction()->setDisabled( false );
-    }
-
+    QList<QAction *> actionList = mNote->actions();
+    if (actionList.size() > 0) {        
+        QAction *cancelAction = actionList.at(0);
+        if(!cancelable) {
+            cancelAction->setDisabled( true );
+        } else {
+            cancelAction->setDisabled( false );
+        }        
+    } 
     mNote->open();
 }
 
--- a/filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.h	Thu Jul 22 16:30:56 2010 +0100
@@ -33,6 +33,7 @@
 
     void onAskForRename( FmOperationBase* operationBase, const QString &srcFile, QString *destFile );
     void onAskForReplace( FmOperationBase* operationBase, const QString &srcFile, const QString &destFile, bool *isAccepted );
+    void onShowNote( FmOperationBase* operationBase, const char *noteString );
     void onNotifyWaiting( FmOperationBase* operationBase, bool cancelable );
     void onNotifyPreparing( FmOperationBase* operationBase, bool cancelable );
     void onNotifyStart( FmOperationBase* operationBase, bool cancelable, int maxSteps );
--- a/filemanager/src/filemanager/src/operationservice/fmoperationservice.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationservice.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -29,7 +29,6 @@
 #include "fmoperationformat.h"
 
 #include <hbaction.h>
-#include <hbmessagebox.h>
 
 FmOperationService::FmOperationService( QObject *parent ) : QObject( parent ),
         mCurrentOperation( 0 )
@@ -293,6 +292,10 @@
 {
     emit refreshModel( mCurrentOperation, path );
 }
+void FmOperationService::on_operationThread_showNote( const char *noteString )
+{
+    mOperationResultProcesser->onShowNote( mCurrentOperation, noteString );
+}
 void FmOperationService::on_operationThread_notifyWaiting( bool cancelable )
 {
     mOperationResultProcesser->onNotifyWaiting(
--- a/filemanager/src/filemanager/src/operationservice/fmoperationservice.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationservice.h	Thu Jul 22 16:30:56 2010 +0100
@@ -95,6 +95,7 @@
     void on_operationThread_askForRename( const QString &srcFile, QString *destFile );
     void on_operationThread_askForReplace( const QString &srcFile, const QString &destFile, bool *isAccepted );
     void on_operationThread_refreshModel( const QString &path );
+    void on_operationThread_showNote( const char *noteString );
     void on_operationThread_notifyWaiting( bool cancelable );
     void on_operationThread_notifyPreparing( bool cancelable );
     void on_operationThread_notifyStart( bool cancelable, int maxSteps );
--- a/filemanager/src/filemanager/src/operationservice/fmoperationthread.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationthread.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -51,6 +51,8 @@
         this, SLOT( onAskForRename( QString, QString* )), Qt::BlockingQueuedConnection );
     connect( mOperationBase, SIGNAL( askForReplace( QString, QString, bool* ) ),
         this, SLOT( onAskForReplace( QString, QString, bool* )), Qt::BlockingQueuedConnection );
+    connect( mOperationBase, SIGNAL( showNote( QString ) ),
+        this, SLOT( onShowNote( QString )), Qt::BlockingQueuedConnection );
 
     start();
     return FmErrNone;
@@ -69,6 +71,8 @@
         this, SLOT( onAskForRename( QString, QString* )), Qt::BlockingQueuedConnection );
     connect( mOperationBase, SIGNAL( askForReplace( QString, QString, bool* ) ),
         this, SLOT( onAskForReplace( QString, QString, bool* )), Qt::BlockingQueuedConnection );
+    connect( mOperationBase, SIGNAL( showNote( QString ) ),
+        this, SLOT( onShowNote( QString )), Qt::BlockingQueuedConnection );
 
 
     start();
@@ -144,6 +148,12 @@
 {
     emit askForReplace( srcFile, destFile, isAccepted );
 }
+
+void FmOperationThread::onShowNote( const char *noteString )
+{
+    emit showNote( noteString );
+}
+
 void FmOperationThread::on_operationElement_notifyPreparing( bool cancelable )
 {
     emit notifyPreparing( cancelable );
@@ -167,6 +177,7 @@
         {
         mErrString.clear();
         FmOperationCopy *operationCopy = static_cast<FmOperationCopy*>(mOperationBase);
+        QString refreshDestPath = QFileInfo( operationCopy->targetPath() ).dir().absolutePath();
         
         int ret = operationCopy->start( &mStop, &mErrString );
         switch( ret )
@@ -176,6 +187,7 @@
             break;
         case FmErrNone:
             emit notifyFinish();
+            emit refreshModel( refreshDestPath );
             break;
         default:
             emit notifyError( ret, mErrString );
--- a/filemanager/src/filemanager/src/operationservice/fmoperationthread.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationthread.h	Thu Jul 22 16:30:56 2010 +0100
@@ -55,6 +55,7 @@
     void askForReplace( const QString &srcFile, const QString &destFile, bool *isAccepted );
     void refreshModel( const QString &path );
 
+    void showNote(const char*);
     void notifyWaiting( bool cancelable );
     void notifyPreparing( bool cancelable );      // this step could not be used if not needed.
     void notifyStart( bool cancelable, int maxSteps );
@@ -67,6 +68,7 @@
 private slots:
     void onAskForRename( const QString &srcFile, QString *destFile );
     void onAskForReplace( const QString &srcFile, const QString &destFile, bool *isAccepted );
+    void onShowNote( const char *noteString );
     void on_operationElement_notifyPreparing( bool cancelable );
     void on_operationElement_notifyStart( bool cancelable, int maxSteps );
     void on_operationElement_notifyProgress( int currentStep );
--- a/filemanager/src/fmbkupengine/src/MMCScBkupSBEUtils.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmbkupengine/src/MMCScBkupSBEUtils.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -230,20 +230,19 @@
         {
         // Must first create a generic transfer type object... sigh...
         CSBGenericTransferType* transferType = CSBGenericTransferType::NewL( nonConstOriginal->Externalise() );
-        CleanupStack::PushL( transferType );
-        switch(type)
+        CleanupStack::PushL( transferType ); 
+        if ( ESIDTransferDerivedType == type )
             {
-        case ESIDTransferDerivedType:
             ret = CSBSIDTransferType::NewL( transferType );
-            break;
-        case EPackageTransferDerivedType:
+            }
+        else if ( EPackageTransferDerivedType == type )
+            {
             ret = CSBPackageTransferType::NewL( transferType );
-            break;
-        case EJavaTransferDerivedType:
+            }
+        // Type is EJavaTransferDerivedType
+        else
+            {
             ret = CSBJavaTransferType::NewL( transferType );
-            break;
-        default:
-            break;
             }
         CleanupStack::PopAndDestroy( transferType );
         }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/fmbkupenginewrapper/bwins/fmbkupenginewrapperu.def	Thu Jul 22 16:30:56 2010 +0100
@@ -0,0 +1,69 @@
+EXPORTS
+	??0FmRestoreSettings@@QAE@AAVFmBkupEngine@@@Z @ 1 NONAME ; FmRestoreSettings::FmRestoreSettings(class FmBkupEngine &)
+	?tr@FmBkupEngine@@SA?AVQString@@PBD0@Z @ 2 NONAME ; class QString FmBkupEngine::tr(char const *, char const *)
+	?getStaticMetaObject@FmBkupEngine@@SAABUQMetaObject@@XZ @ 3 NONAME ; struct QMetaObject const & FmBkupEngine::getStaticMetaObject(void)
+	?trUtf8@FmBkupEngine@@SA?AVQString@@PBD0H@Z @ 4 NONAME ; class QString FmBkupEngine::trUtf8(char const *, char const *, int)
+	?error@FmBkupEngine@@QBEHXZ @ 5 NONAME ; int FmBkupEngine::error(void) const
+	?availableTargetDrive@FmBackupSettings@@QBE?AVQString@@XZ @ 6 NONAME ; class QString FmBackupSettings::availableTargetDrive(void) const
+	?GetSelectionL@FmRestoreSettings@@QBEXAAV?$QList@VFmRestoreInfo@@@@@Z @ 7 NONAME ; void FmRestoreSettings::GetSelectionL(class QList<class FmRestoreInfo> &) const
+	?content@FmBackupSettings@@QBEIXZ @ 8 NONAME ; unsigned int FmBackupSettings::content(void) const
+	?getBackupDriveList@FmBkupEngine@@QAEXAAVQStringList@@@Z @ 9 NONAME ; void FmBkupEngine::getBackupDriveList(class QStringList &)
+	?resetAndDestoryRestoreEntry@FmRestoreSettings@@AAEXXZ @ 10 NONAME ; void FmRestoreSettings::resetAndDestoryRestoreEntry(void)
+	?targetDriveToString@FmBackupSettings@@QAE?AVQString@@ABV2@@Z @ 11 NONAME ; class QString FmBackupSettings::targetDriveToString(class QString const &)
+	?setScheduling@FmBackupSettings@@QAEXW4TFileManagerBackupSchedule@1@@Z @ 12 NONAME ; void FmBackupSettings::setScheduling(enum FmBackupSettings::TFileManagerBackupSchedule)
+	?notifyFinish@FmBkupEngine@@IAEXH@Z @ 13 NONAME ; void FmBkupEngine::notifyFinish(int)
+	?qt_metacast@FmBkupEngine@@UAEPAXPBD@Z @ 14 NONAME ; void * FmBkupEngine::qt_metacast(char const *)
+	??0FmBackupSettings@@QAE@PAVFmBkupEngine@@@Z @ 15 NONAME ; FmBackupSettings::FmBackupSettings(class FmBkupEngine *)
+	?SetSelection@FmRestoreSettings@@QAEXAB_K@Z @ 16 NONAME ; void FmRestoreSettings::SetSelection(unsigned long long const &)
+	?startBackup@FmBkupEngine@@QAE_NV?$QList@PAVFmBkupDrivesAndOperation@@@@V?$QList@PAVFmBkupBackupCategory@@@@VQString@@I@Z @ 17 NONAME ; bool FmBkupEngine::startBackup(class QList<class FmBkupDrivesAndOperation *>, class QList<class FmBkupBackupCategory *>, class QString, unsigned int)
+	?notifyMemoryLow@FmBkupEngine@@IAEXHAAH@Z @ 18 NONAME ; void FmBkupEngine::notifyMemoryLow(int, int &)
+	?CreateEntry@FmRestoreSettings@@AAEPAVFmRestoreEntry@@ABVFmRestoreInfo@@@Z @ 19 NONAME ; class FmRestoreEntry * FmRestoreSettings::CreateEntry(class FmRestoreInfo const &)
+	?startRestore@FmBkupEngine@@QAE_NV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 20 NONAME ; bool FmBkupEngine::startRestore(class QList<class FmBkupDrivesAndOperation *>)
+	?resetAndDestoryBackupEntry@FmBackupSettings@@AAEXXZ @ 21 NONAME ; void FmBackupSettings::resetAndDestoryBackupEntry(void)
+	?weekdayToString@FmBackupSettings@@SA?AVQString@@W4TFileManagerBackupWeekday@1@@Z @ 22 NONAME ; class QString FmBackupSettings::weekdayToString(enum FmBackupSettings::TFileManagerBackupWeekday)
+	?tr@FmBkupEngine@@SA?AVQString@@PBD0H@Z @ 23 NONAME ; class QString FmBkupEngine::tr(char const *, char const *, int)
+	?contentToString@FmBackupSettings@@SA?AVQString@@I@Z @ 24 NONAME ; class QString FmBackupSettings::contentToString(unsigned int)
+	?RestoreSettingsL@FmBkupEngine@@QAEPAVFmRestoreSettings@@XZ @ 25 NONAME ; class FmRestoreSettings * FmBkupEngine::RestoreSettingsL(void)
+	?createBackupDateEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 26 NONAME ; class FmBackupEntry * FmBackupSettings::createBackupDateEntry(void)
+	?GetRestoreInfoArray@FmBkupEngine@@QAEXAAV?$QList@PAVFmBkupDrivesAndOperation@@@@AAV?$QList@VFmRestoreInfo@@@@ABVQString@@@Z @ 27 NONAME ; void FmBkupEngine::GetRestoreInfoArray(class QList<class FmBkupDrivesAndOperation *> &, class QList<class FmRestoreInfo> &, class QString const &)
+	?time@FmBackupSettings@@QBEABVQTime@@XZ @ 28 NONAME ; class QTime const & FmBackupSettings::time(void) const
+	?createWeekdayEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 29 NONAME ; class FmBackupEntry * FmBackupSettings::createWeekdayEntry(void)
+	?cancelBackup@FmBkupEngine@@QAEXXZ @ 30 NONAME ; void FmBkupEngine::cancelBackup(void)
+	?notifyUpdate@FmBkupEngine@@IAEXH@Z @ 31 NONAME ; void FmBkupEngine::notifyUpdate(int)
+	?save@FmBackupSettings@@QAEXXZ @ 32 NONAME ; void FmBackupSettings::save(void)
+	??_EFmBkupEngine@@UAE@I@Z @ 33 NONAME ; FmBkupEngine::~FmBkupEngine(unsigned int)
+	?restoreEntryList@FmRestoreSettings@@QAE?AV?$QList@PAVFmRestoreEntry@@@@XZ @ 34 NONAME ; class QList<class FmRestoreEntry *> FmRestoreSettings::restoreEntryList(void)
+	?createTimeEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 35 NONAME ; class FmBackupEntry * FmBackupSettings::createTimeEntry(void)
+	?weekday@FmBackupSettings@@QBE?AW4TFileManagerBackupWeekday@1@XZ @ 36 NONAME ; enum FmBackupSettings::TFileManagerBackupWeekday FmBackupSettings::weekday(void) const
+	?deleteBackup@FmBkupEngine@@QAEHV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 37 NONAME ; int FmBkupEngine::deleteBackup(class QList<class FmBkupDrivesAndOperation *>)
+	??1FmBackupSettings@@QAE@XZ @ 38 NONAME ; FmBackupSettings::~FmBackupSettings(void)
+	?setTime@FmBackupSettings@@QAEXABVQTime@@@Z @ 39 NONAME ; void FmBackupSettings::setTime(class QTime const &)
+	?backupEntryList@FmBackupSettings@@QAE?AV?$QList@PAVFmBackupEntry@@@@XZ @ 40 NONAME ; class QList<class FmBackupEntry *> FmBackupSettings::backupEntryList(void)
+	?contentsSelected@FmBackupSettings@@ABEHXZ @ 41 NONAME ; int FmBackupSettings::contentsSelected(void) const
+	?refreshList@FmBackupSettings@@AAEXXZ @ 42 NONAME ; void FmBackupSettings::refreshList(void)
+	?trUtf8@FmBkupEngine@@SA?AVQString@@PBD0@Z @ 43 NONAME ; class QString FmBkupEngine::trUtf8(char const *, char const *)
+	?CreateEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@ABVQString@@0W4TSettingType@2@@Z @ 44 NONAME ; class FmBackupEntry * FmBackupSettings::CreateEntry(class QString const &, class QString const &, enum FmBackupEntry::TSettingType)
+	?targetDrive@FmBackupSettings@@QBE?AVQString@@XZ @ 45 NONAME ; class QString FmBackupSettings::targetDrive(void) const
+	??0FmBkupEngine@@QAE@PAVQObject@@@Z @ 46 NONAME ; FmBkupEngine::FmBkupEngine(class QObject *)
+	?notifyPreparing@FmBkupEngine@@IAEX_N@Z @ 47 NONAME ; void FmBkupEngine::notifyPreparing(bool)
+	?load@FmRestoreSettings@@QAEXV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 48 NONAME ; void FmRestoreSettings::load(class QList<class FmBkupDrivesAndOperation *>)
+	?setWeekday@FmBackupSettings@@QAEXW4TFileManagerBackupWeekday@1@@Z @ 49 NONAME ; void FmBackupSettings::setWeekday(enum FmBackupSettings::TFileManagerBackupWeekday)
+	??1FmRestoreSettings@@QAE@XZ @ 50 NONAME ; FmRestoreSettings::~FmRestoreSettings(void)
+	?createContentsEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 51 NONAME ; class FmBackupEntry * FmBackupSettings::createContentsEntry(void)
+	?notifyBackupFilesExist@FmBkupEngine@@IAEXAA_N@Z @ 52 NONAME ; void FmBkupEngine::notifyBackupFilesExist(bool &)
+	?updateBackupDate@FmBackupSettings@@QAEXXZ @ 53 NONAME ; void FmBackupSettings::updateBackupDate(void)
+	?createSchedulingEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 54 NONAME ; class FmBackupEntry * FmBackupSettings::createSchedulingEntry(void)
+	?metaObject@FmBkupEngine@@UBEPBUQMetaObject@@XZ @ 55 NONAME ; struct QMetaObject const * FmBkupEngine::metaObject(void) const
+	?createTargetDriveEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 56 NONAME ; class FmBackupEntry * FmBackupSettings::createTargetDriveEntry(void)
+	?load@FmBackupSettings@@QAEXXZ @ 57 NONAME ; void FmBackupSettings::load(void)
+	??1FmBkupEngine@@UAE@XZ @ 58 NONAME ; FmBkupEngine::~FmBkupEngine(void)
+	?BackupSettingsL@FmBkupEngine@@QAEPAVFmBackupSettings@@XZ @ 59 NONAME ; class FmBackupSettings * FmBkupEngine::BackupSettingsL(void)
+	?setContent@FmBackupSettings@@QAEXI@Z @ 60 NONAME ; void FmBackupSettings::setContent(unsigned int)
+	?schedulingToString@FmBackupSettings@@QAE?AVQString@@W4TFileManagerBackupSchedule@1@@Z @ 61 NONAME ; class QString FmBackupSettings::schedulingToString(enum FmBackupSettings::TFileManagerBackupSchedule)
+	?setTargetDrive@FmBackupSettings@@QAEXABVQString@@@Z @ 62 NONAME ; void FmBackupSettings::setTargetDrive(class QString const &)
+	?staticMetaObject@FmBkupEngine@@2UQMetaObject@@B @ 63 NONAME ; struct QMetaObject const FmBkupEngine::staticMetaObject
+	?refreshList@FmRestoreSettings@@AAEXAAV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 64 NONAME ; void FmRestoreSettings::refreshList(class QList<class FmBkupDrivesAndOperation *> &)
+	?notifyStart@FmBkupEngine@@IAEX_NH@Z @ 65 NONAME ; void FmBkupEngine::notifyStart(bool, int)
+	?scheduling@FmBackupSettings@@QBE?AW4TFileManagerBackupSchedule@1@XZ @ 66 NONAME ; enum FmBackupSettings::TFileManagerBackupSchedule FmBackupSettings::scheduling(void) const
+	?qt_metacall@FmBkupEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 67 NONAME ; int FmBkupEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/fmbkupenginewrapper/eabi/fmbkupenginewrapperu.def	Thu Jul 22 16:30:56 2010 +0100
@@ -0,0 +1,73 @@
+EXPORTS
+	_ZN12FmBkupEngine11notifyStartEbi @ 1 NONAME
+	_ZN12FmBkupEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
+	_ZN12FmBkupEngine11qt_metacastEPKc @ 3 NONAME
+	_ZN12FmBkupEngine11startBackupE5QListIP24FmBkupDrivesAndOperationES0_IP20FmBkupBackupCategoryE7QStringj @ 4 NONAME
+	_ZN12FmBkupEngine12cancelBackupEv @ 5 NONAME
+	_ZN12FmBkupEngine12deleteBackupE5QListIP24FmBkupDrivesAndOperationE @ 6 NONAME
+	_ZN12FmBkupEngine12notifyFinishEi @ 7 NONAME
+	_ZN12FmBkupEngine12notifyUpdateEi @ 8 NONAME
+	_ZN12FmBkupEngine12startRestoreE5QListIP24FmBkupDrivesAndOperationE @ 9 NONAME
+	_ZN12FmBkupEngine15BackupSettingsLEv @ 10 NONAME
+	_ZN12FmBkupEngine15notifyMemoryLowEiRi @ 11 NONAME
+	_ZN12FmBkupEngine15notifyPreparingEb @ 12 NONAME
+	_ZN12FmBkupEngine16RestoreSettingsLEv @ 13 NONAME
+	_ZN12FmBkupEngine16staticMetaObjectE @ 14 NONAME DATA 16
+	_ZN12FmBkupEngine18getBackupDriveListER11QStringList @ 15 NONAME
+	_ZN12FmBkupEngine19GetRestoreInfoArrayER5QListIP24FmBkupDrivesAndOperationERS0_I13FmRestoreInfoERK7QString @ 16 NONAME
+	_ZN12FmBkupEngine19getStaticMetaObjectEv @ 17 NONAME
+	_ZN12FmBkupEngine22notifyBackupFilesExistERb @ 18 NONAME
+	_ZN12FmBkupEngineC1EP7QObject @ 19 NONAME
+	_ZN12FmBkupEngineC2EP7QObject @ 20 NONAME
+	_ZN12FmBkupEngineD0Ev @ 21 NONAME
+	_ZN12FmBkupEngineD1Ev @ 22 NONAME
+	_ZN12FmBkupEngineD2Ev @ 23 NONAME
+	_ZN16FmBackupSettings10setContentEj @ 24 NONAME
+	_ZN16FmBackupSettings10setWeekdayENS_25TFileManagerBackupWeekdayE @ 25 NONAME
+	_ZN16FmBackupSettings11CreateEntryERK7QStringS2_N13FmBackupEntry12TSettingTypeE @ 26 NONAME
+	_ZN16FmBackupSettings11refreshListEv @ 27 NONAME
+	_ZN16FmBackupSettings13setSchedulingENS_26TFileManagerBackupScheduleE @ 28 NONAME
+	_ZN16FmBackupSettings14setTargetDriveERK7QString @ 29 NONAME
+	_ZN16FmBackupSettings15backupEntryListEv @ 30 NONAME
+	_ZN16FmBackupSettings15contentToStringEj @ 31 NONAME
+	_ZN16FmBackupSettings15createTimeEntryEv @ 32 NONAME
+	_ZN16FmBackupSettings15weekdayToStringENS_25TFileManagerBackupWeekdayE @ 33 NONAME
+	_ZN16FmBackupSettings16updateBackupDateEv @ 34 NONAME
+	_ZN16FmBackupSettings18createWeekdayEntryEv @ 35 NONAME
+	_ZN16FmBackupSettings18schedulingToStringENS_26TFileManagerBackupScheduleE @ 36 NONAME
+	_ZN16FmBackupSettings19createContentsEntryEv @ 37 NONAME
+	_ZN16FmBackupSettings19targetDriveToStringERK7QString @ 38 NONAME
+	_ZN16FmBackupSettings21createBackupDateEntryEv @ 39 NONAME
+	_ZN16FmBackupSettings21createSchedulingEntryEv @ 40 NONAME
+	_ZN16FmBackupSettings22createTargetDriveEntryEv @ 41 NONAME
+	_ZN16FmBackupSettings26resetAndDestoryBackupEntryEv @ 42 NONAME
+	_ZN16FmBackupSettings4loadEv @ 43 NONAME
+	_ZN16FmBackupSettings4saveEv @ 44 NONAME
+	_ZN16FmBackupSettings7setTimeERK5QTime @ 45 NONAME
+	_ZN16FmBackupSettingsC1EP12FmBkupEngine @ 46 NONAME
+	_ZN16FmBackupSettingsC2EP12FmBkupEngine @ 47 NONAME
+	_ZN16FmBackupSettingsD1Ev @ 48 NONAME
+	_ZN16FmBackupSettingsD2Ev @ 49 NONAME
+	_ZN17FmRestoreSettings11CreateEntryERK13FmRestoreInfo @ 50 NONAME
+	_ZN17FmRestoreSettings11refreshListER5QListIP24FmBkupDrivesAndOperationE @ 51 NONAME
+	_ZN17FmRestoreSettings12SetSelectionERKy @ 52 NONAME
+	_ZN17FmRestoreSettings16restoreEntryListEv @ 53 NONAME
+	_ZN17FmRestoreSettings27resetAndDestoryRestoreEntryEv @ 54 NONAME
+	_ZN17FmRestoreSettings4loadE5QListIP24FmBkupDrivesAndOperationE @ 55 NONAME
+	_ZN17FmRestoreSettingsC1ER12FmBkupEngine @ 56 NONAME
+	_ZN17FmRestoreSettingsC2ER12FmBkupEngine @ 57 NONAME
+	_ZN17FmRestoreSettingsD1Ev @ 58 NONAME
+	_ZN17FmRestoreSettingsD2Ev @ 59 NONAME
+	_ZNK12FmBkupEngine10metaObjectEv @ 60 NONAME
+	_ZNK12FmBkupEngine5errorEv @ 61 NONAME
+	_ZNK16FmBackupSettings10schedulingEv @ 62 NONAME
+	_ZNK16FmBackupSettings11targetDriveEv @ 63 NONAME
+	_ZNK16FmBackupSettings16contentsSelectedEv @ 64 NONAME
+	_ZNK16FmBackupSettings20availableTargetDriveEv @ 65 NONAME
+	_ZNK16FmBackupSettings4timeEv @ 66 NONAME
+	_ZNK16FmBackupSettings7contentEv @ 67 NONAME
+	_ZNK16FmBackupSettings7weekdayEv @ 68 NONAME
+	_ZNK17FmRestoreSettings13GetSelectionLER5QListI13FmRestoreInfoE @ 69 NONAME
+	_ZTI12FmBkupEngine @ 70 NONAME
+	_ZTV12FmBkupEngine @ 71 NONAME
+
--- a/filemanager/src/fmbkupenginewrapper/fmbkupenginewrapper.pro	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmbkupenginewrapper/fmbkupenginewrapper.pro	Thu Jul 22 16:30:56 2010 +0100
@@ -14,6 +14,7 @@
 # Description: The project file of FmBkupEngineWrapper
 #
 
+CONFIG += hb
 TARGET = 
 TEMPLATE = lib
 QT = core
--- a/filemanager/src/fmbkupenginewrapper/inc/fmbackupsettings.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmbkupenginewrapper/inc/fmbackupsettings.h	Thu Jul 22 16:30:56 2010 +0100
@@ -24,31 +24,7 @@
 #include <QString>
 #include <QList>
 
-const QString constFileManagerBackupWeekdayMonday = "Monday";
-const QString constFileManagerBackupWeekdayTuesday = "Tuesday";
-const QString constFileManagerBackupWeekdayWednesday = "Wednesday";
-const QString constFileManagerBackupWeekdayThursday = "Thursday";
-const QString constFileManagerBackupWeekdayFirday = "Friday";
-const QString constFileManagerBackupWeekdaySaturday = "Saturday";
-const QString constFileManagerBackupWeekdaySunday = "Sunday";
-
-const QString constFileManagerBackupScheduleNever = "Never";
-const QString constFileManagerBackupScheduleDaily = "Daily";
-const QString constFileManagerBackupScheduleWeekly = "Weekly";
-
-const QString constFileManagerBackupSettingsTitleContents = "Backup Contents";
-const QString constFileManagerBackupSettingsTitleScheduling = "Backup scheduling";
-const QString constFileManagerBackupSettingsTitleWeekday = "Weekday";
-const QString constFileManagerBackupSettingsTitleTime = "Time";
-const QString constFileManagerBackupSettingsTitleTargetDrive = "Backup destination";
-
-const QString constFileManagerBackupSettingsContentAll = "All";
-const QString constFileManagerBackupSettingsContentSettings = "Settings";
-const QString constFileManagerBackupSettingsContentMessages = "Messages";
-const QString constFileManagerBackupSettingsContentContacts = "Contacts";
-const QString constFileManagerBackupSettingsContentCalendar = "Calendar entries";
-const QString constFileManagerBackupSettingsContentBookmarks = "Bookmarks";
-const QString constFileManagerBackupSettingsContentUserFiles = "Files";
+#include <hbglobal.h>
 
 class FmBkupEngine;
 
--- a/filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -435,6 +435,8 @@
         return FmErrCorrupt;
     case KErrNotReady:
         return FmErrNotReady;
+    case KErrDisMounted:
+        return FmErrDisMounted;
     default: 
         return FmErrUnKnown;
     }    
@@ -722,7 +724,7 @@
         int s       = iDateTime.Second();
         int year    = iDateTime.Year();
         int month   = iDateTime.Month() + 1;
-        int day     = iDateTime.Day();
+        int day     = iDateTime.Day()+1;
         QTime time( h, m, s);
         QDate date( year, month, day );
         
--- a/filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -149,7 +149,7 @@
 
 void FmBkupEnginePrivate::GetRestoreInfoArray( QList<FmBkupDrivesAndOperation* > drivesAndOperationList,
         QList< FmRestoreInfo > &restoreInfoList,
-        const int aDrive )
+        const QString& aDrive )
 {
     restoreInfoList.clear();
     QString debugString;
@@ -162,7 +162,7 @@
     dateTime.setTime_t( settings.value( "dateTime" ).toUInt() );
     QString drive = settings.value( "drive" ).toString();
     settings.endGroup();
-    if( content != 0 && ( DriverNameToNumber(drive) == aDrive || aDrive < 0 ) )
+	if( content != 0 && ( drive.contains( aDrive, Qt::CaseInsensitive ) || aDrive.isEmpty() ) )
     {
         FmRestoreInfo restoreInfo( content, dateTime, drive );
         restoreInfoList.push_back( restoreInfo );
@@ -173,7 +173,7 @@
     dateTime.setTime_t( settings.value( "dateTime" ).toUInt() );
     drive = settings.value( "drive" ).toString();
     settings.endGroup();
-   if( content != 0 && ( DriverNameToNumber(drive) == aDrive || aDrive < 0 ) )
+   if( content != 0 && ( drive.contains( aDrive, Qt::CaseInsensitive ) || aDrive.isEmpty() ) )
     {
         FmRestoreInfo restoreInfo( content, dateTime, drive );
         restoreInfoList.push_back( restoreInfo );
@@ -184,7 +184,7 @@
     dateTime.setTime_t( settings.value( "dateTime" ).toUInt() );
     drive = settings.value( "drive" ).toString();
     settings.endGroup();
-    if( content != 0 && ( DriverNameToNumber(drive) == aDrive || aDrive < 0 ) )
+    if( content != 0 && ( drive.contains( aDrive, Qt::CaseInsensitive ) || aDrive.isEmpty() ) )
     {
         FmRestoreInfo restoreInfo( content, dateTime, drive );
         restoreInfoList.push_back( restoreInfo );
@@ -195,7 +195,7 @@
     dateTime.setTime_t( settings.value( "dateTime" ).toUInt() );
     drive = settings.value( "drive" ).toString();
     settings.endGroup();
-    if( content != 0 && ( DriverNameToNumber(drive) == aDrive || aDrive < 0 ) )
+    if( content != 0 && ( drive.contains( aDrive, Qt::CaseInsensitive ) || aDrive.isEmpty() ) )
     {
         FmRestoreInfo restoreInfo( content, dateTime, drive );
         restoreInfoList.push_back( restoreInfo );
@@ -206,7 +206,7 @@
     dateTime.setTime_t( settings.value( "dateTime" ).toUInt() );
     drive = settings.value( "drive" ).toString();
     settings.endGroup();
-    if( content != 0 && ( DriverNameToNumber(drive) == aDrive || aDrive < 0 ) )
+    if( content != 0 && ( drive.contains( aDrive, Qt::CaseInsensitive ) || aDrive.isEmpty() ) )
     {
         FmRestoreInfo restoreInfo( content, dateTime, drive );
         restoreInfoList.push_back( restoreInfo );
@@ -217,7 +217,7 @@
     dateTime.setTime_t( settings.value( "dateTime" ).toUInt() );
     drive = settings.value( "drive" ).toString();
     settings.endGroup();
-    if( content != 0 && ( DriverNameToNumber(drive) == aDrive || aDrive < 0 ) )
+    if( content != 0 && ( drive.contains( aDrive, Qt::CaseInsensitive ) || aDrive.isEmpty() ) )
     {
         FmRestoreInfo restoreInfo( content, dateTime, drive );
         restoreInfoList.push_back( restoreInfo );
--- a/filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.h	Thu Jul 22 16:30:56 2010 +0100
@@ -56,7 +56,7 @@
     bool StartRestoreL( QList<FmBkupDrivesAndOperation* > drivesAndOperationList );
     void GetRestoreInfoArray( QList<FmBkupDrivesAndOperation* > drivesAndOperationList,
             QList< FmRestoreInfo > &restoreInfoList,
-            const int aDrive = 0 );
+            const QString& aDrive );
     void getBackupDriveList( QStringList &driveList );
 private:
     int DriverNameToNumber( QString driverName );
@@ -66,10 +66,15 @@
 
 signals:
     void notifyPreparing( bool cancelable );
-	void notifyStart( bool cancelable, int totalCount );
-	void notifyUpdate( int count );
-	void notifyFinish( int err );
-	void notifyMemoryLow( int memoryValue, int &userError );
+    void notifyStart( bool cancelable, int totalCount );
+    void notifyUpdate( int count );
+    void notifyFinish( int err );
+    void notifyMemoryLow( int memoryValue, int &userError );
+
+    // win32 source code is used to simulator backup action.
+    // add this signal in win32 to avoid warning when run test case
+    // though it is not used in win32 source code currently
+    void notifyBackupFilesExist( bool &isContinue );
 	
 public slots:
     void onNotifyPreparing( bool cancelable );
--- a/filemanager/src/fmbkupenginewrapper/src/fmbackupsettings.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmbkupenginewrapper/src/fmbackupsettings.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -25,6 +25,8 @@
 #include <QTime>
 #include <QSettings>
 
+#include <hbglobal.h>
+
 FmBackupSettings::FmBackupSettings( FmBkupEngine *aFmBkupEngine ) : mBkupEngine( aFmBkupEngine )
 {
     
@@ -130,7 +132,7 @@
     QString title;
     QString tips;
 
-    title = constFileManagerBackupSettingsTitleContents;
+    title = hbTrId( "Backup Contents" );
 
     int selected( contentsSelected() );
     if ( !( mContent & EFileManagerBackupContentAll ) && selected > 1 ){
@@ -151,7 +153,7 @@
     QString title;
     QString tips;
 
-    title = constFileManagerBackupSettingsTitleScheduling;
+    title = hbTrId( "Backup scheduling" );
     tips  = schedulingToString( mScheduling );
 
     return CreateEntry( title, tips, FmBackupEntry::EScheduling );
@@ -162,7 +164,7 @@
     QString title;
     QString tips;
 
-    title = constFileManagerBackupSettingsTitleWeekday;
+    title = hbTrId( "Weekday" );
     tips  = weekdayToString( mWeekday );
 
     return CreateEntry( title, tips, FmBackupEntry::EWeekday );
@@ -173,7 +175,7 @@
     QString title;
     QString tips;
 
-    title = constFileManagerBackupSettingsTitleTime;
+    title = hbTrId( "Time" );
     tips  = mTime.toString( "hh:mm" );
 
     return CreateEntry( title, tips, FmBackupEntry::ETime );
@@ -184,7 +186,7 @@
     QString title;
     QString tips;
 
-    title = constFileManagerBackupSettingsTitleTargetDrive;
+    title = hbTrId( "Backup destination" );
     tips  = targetDriveToString( mTargetDrive );
 
     return CreateEntry( title, tips, FmBackupEntry::ETarget );
@@ -195,38 +197,38 @@
     QString tips;
     if( mDate.isNull() )
         {
-        tips =  "No previous backups created" ;
+        tips =  hbTrId( "No previous backups created");
         }
     else
         {
-        tips = QString( "Backup Created " + mDate.toString( "dd.MM.yyyy" ) );
+        tips = hbTrId( "Backup Created " ) + mDate.toString( "dd.MM.yyyy" );
         }    
     return CreateEntry( QString(""), tips, FmBackupEntry::EBackupdate);
 }
 QString FmBackupSettings::contentToString( const quint32 content )
 {
-    QString ret( constFileManagerBackupSettingsContentAll );
+    QString ret( hbTrId( "All" ) );
 
     if ( content & EFileManagerBackupContentAll ){
-        ret = constFileManagerBackupSettingsContentAll;
+        ret = hbTrId( "All" );
     }
     else if ( content & EFileManagerBackupContentSettings ){
-        ret = constFileManagerBackupSettingsContentSettings;
+        ret = hbTrId( "Settings" );
     }
     else if ( content & EFileManagerBackupContentMessages ){
-        ret = constFileManagerBackupSettingsContentMessages;
+        ret = hbTrId( "Messages" );
     }
     else if ( content & EFileManagerBackupContentContacts ){
-        ret = constFileManagerBackupSettingsContentContacts;
+        ret = hbTrId( "Contacts" );
     }
     else if ( content & EFileManagerBackupContentCalendar ){
-        ret = constFileManagerBackupSettingsContentCalendar;
+        ret = hbTrId( "Calendar" );
     }
     else if ( content & EFileManagerBackupContentBookmarks ){
-        ret = constFileManagerBackupSettingsContentBookmarks;
+        ret = hbTrId( "Bookmarks" );
     }
     else if ( content & EFileManagerBackupContentUserFiles ){
-        ret = constFileManagerBackupSettingsContentUserFiles;
+        ret = hbTrId( "Files" );
     }
     return ret;
 }
@@ -237,25 +239,25 @@
     switch (weekday)
     {
     case EFileManagerBackupWeekdayMonday:
-        ret = constFileManagerBackupWeekdayMonday;
+        ret = hbTrId( "Monday" );
         break;
     case EFileManagerBackupWeekdayTuesday:
-        ret = constFileManagerBackupWeekdayTuesday;
+        ret = hbTrId( "Tuesday" );
         break;
     case EFileManagerBackupWeekdayWednesday:
-        ret = constFileManagerBackupWeekdayWednesday;
+        ret = hbTrId( "Wednesday" );
         break;
     case EFileManagerBackupWeekdayThursday:
-        ret = constFileManagerBackupWeekdayThursday;
+        ret = hbTrId( "Thursday" );
         break;
     case EFileManagerBackupWeekdayFriday:
-        ret = constFileManagerBackupWeekdayFirday;
+        ret = hbTrId( "Friday" );
         break;
     case EFileManagerBackupWeekdaySaturday:
-        ret = constFileManagerBackupWeekdaySaturday;
+        ret = hbTrId( "Saturday" );
         break;
     case EFileManagerBackupWeekdaySunday:
-        ret = constFileManagerBackupWeekdaySunday;
+        ret = hbTrId( "Sunday" );
         break;
     }
     return ret;
@@ -268,13 +270,13 @@
     switch (scheduling)
     {
     case EFileManagerBackupScheduleNever:
-        ret = constFileManagerBackupScheduleNever;
+        ret = hbTrId( "Never" );
         break;
     case EFileManagerBackupScheduleDaily:
-        ret = constFileManagerBackupScheduleDaily;
+        ret = hbTrId ("Daily" );
         break;
     case EFileManagerBackupScheduleWeekly:
-        ret = constFileManagerBackupScheduleWeekly;
+        ret = hbTrId( "Weekly" );
         break;
     }
     return ret;
--- a/filemanager/src/fmbkupenginewrapper/src/fmbkupengine.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmbkupenginewrapper/src/fmbkupengine.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -30,7 +30,7 @@
 	connect( d, SIGNAL( notifyStart( bool, int ) ), this, SIGNAL( notifyStart( bool, int ) ) );
 	connect( d, SIGNAL( notifyUpdate(int) ), this, SIGNAL( notifyUpdate(int) ) );
 	connect( d, SIGNAL( notifyFinish(int) ), 
-			this, SIGNAL( notifyFinish(int) ) );
+			this, SIGNAL( notifyFinish(int) ), Qt::DirectConnection );
 	connect( d, SIGNAL( notifyMemoryLow(int, int& ) ), this, SIGNAL( notifyMemoryLow(int, int&) ) );
 	connect( d, SIGNAL( notifyBackupFilesExist( bool& )), this, SIGNAL( notifyBackupFilesExist( bool&) ) );
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/fmfiledialog/bwins/fmfiledialogu.def	Thu Jul 22 16:30:56 2010 +0100
@@ -0,0 +1,25 @@
+EXPORTS
+	??_EFmFileDialog@@UAE@I@Z @ 1 NONAME ; FmFileDialog::~FmFileDialog(unsigned int)
+	?qt_metacall@FmFileDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2 NONAME ; int FmFileDialog::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??1FmFileDialog@@EAE@XZ @ 3 NONAME ; FmFileDialog::~FmFileDialog(void)
+	?tr@FmFileDialog@@SA?AVQString@@PBD0H@Z @ 4 NONAME ; class QString FmFileDialog::tr(char const *, char const *, int)
+	?getOpenFileName@FmFileDialog@@SA?AVQString@@PAVHbWidget@@ABV2@1ABVQStringList@@V?$QFlags@W4Option@FmFileDialog@@@@@Z @ 5 NONAME ; class QString FmFileDialog::getOpenFileName(class HbWidget *, class QString const &, class QString const &, class QStringList const &, class QFlags<enum FmFileDialog::Option>)
+	??0FmFileDialog@@AAE@PAVQGraphicsItem@@@Z @ 6 NONAME ; FmFileDialog::FmFileDialog(class QGraphicsItem *)
+	?tr@FmFileDialog@@SA?AVQString@@PBD0@Z @ 7 NONAME ; class QString FmFileDialog::tr(char const *, char const *)
+	?getStaticMetaObject@FmFileDialog@@SAABUQMetaObject@@XZ @ 8 NONAME ; struct QMetaObject const & FmFileDialog::getStaticMetaObject(void)
+	?d_func@FmFileDialog@@ABEPBVFmFileDialogPrivate@@XZ @ 9 NONAME ; class FmFileDialogPrivate const * FmFileDialog::d_func(void) const
+	?exec@FmFileDialog@@AAE_NXZ @ 10 NONAME ; bool FmFileDialog::exec(void)
+	?trUtf8@FmFileDialog@@SA?AVQString@@PBD0@Z @ 11 NONAME ; class QString FmFileDialog::trUtf8(char const *, char const *)
+	?trUtf8@FmFileDialog@@SA?AVQString@@PBD0H@Z @ 12 NONAME ; class QString FmFileDialog::trUtf8(char const *, char const *, int)
+	?metaObject@FmFileDialog@@UBEPBUQMetaObject@@XZ @ 13 NONAME ; struct QMetaObject const * FmFileDialog::metaObject(void) const
+	?staticMetaObject@FmFileDialog@@2UQMetaObject@@B @ 14 NONAME ; struct QMetaObject const FmFileDialog::staticMetaObject
+	?getSaveFileName@FmFileDialog@@SA?AVQString@@PAVHbWidget@@ABV2@1ABVQStringList@@V?$QFlags@W4Option@FmFileDialog@@@@@Z @ 15 NONAME ; class QString FmFileDialog::getSaveFileName(class HbWidget *, class QString const &, class QString const &, class QStringList const &, class QFlags<enum FmFileDialog::Option>)
+	?d_func@FmFileDialog@@AAEPAVFmFileDialogPrivate@@XZ @ 16 NONAME ; class FmFileDialogPrivate * FmFileDialog::d_func(void)
+	?getExistingDirectory@FmFileDialog@@SA?AVQString@@PAVHbWidget@@ABV2@1ABVQStringList@@V?$QFlags@W4Option@FmFileDialog@@@@@Z @ 17 NONAME ; class QString FmFileDialog::getExistingDirectory(class HbWidget *, class QString const &, class QString const &, class QStringList const &, class QFlags<enum FmFileDialog::Option>)
+	?qt_metacast@FmFileDialog@@UAEPAXPBD@Z @ 18 NONAME ; void * FmFileDialog::qt_metacast(char const *)
+	?dialogClosed@FmFileDialog@@AAEXPAVHbAction@@@Z @ 19 NONAME ; void FmFileDialog::dialogClosed(class HbAction *)
+	?setSecondaryAction@FmFileDialog@@AAEXPAVHbAction@@@Z @ 20 NONAME ; void FmFileDialog::setSecondaryAction(class HbAction *)
+	?secondaryAction@FmFileDialog@@ABEPAVHbAction@@XZ @ 21 NONAME ; class HbAction * FmFileDialog::secondaryAction(void) const
+	?setPrimaryAction@FmFileDialog@@AAEXPAVHbAction@@@Z @ 22 NONAME ; void FmFileDialog::setPrimaryAction(class HbAction *)
+	?primaryAction@FmFileDialog@@ABEPAVHbAction@@XZ @ 23 NONAME ; class HbAction * FmFileDialog::primaryAction(void) const
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/fmfiledialog/eabi/fmfiledialogu.def	Thu Jul 22 16:30:56 2010 +0100
@@ -0,0 +1,27 @@
+EXPORTS
+	_ZN12FmFileDialog11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
+	_ZN12FmFileDialog11qt_metacastEPKc @ 2 NONAME
+	_ZN12FmFileDialog15getOpenFileNameEP8HbWidgetRK7QStringS4_RK11QStringList6QFlagsINS_6OptionEE @ 3 NONAME
+	_ZN12FmFileDialog15getSaveFileNameEP8HbWidgetRK7QStringS4_RK11QStringList6QFlagsINS_6OptionEE @ 4 NONAME
+	_ZN12FmFileDialog16staticMetaObjectE @ 5 NONAME DATA 16
+	_ZN12FmFileDialog19getStaticMetaObjectEv @ 6 NONAME
+	_ZN12FmFileDialog20getExistingDirectoryEP8HbWidgetRK7QStringS4_RK11QStringList6QFlagsINS_6OptionEE @ 7 NONAME
+	_ZN12FmFileDialog4execEv @ 8 NONAME
+	_ZN12FmFileDialogC1EP13QGraphicsItem @ 9 NONAME
+	_ZN12FmFileDialogC2EP13QGraphicsItem @ 10 NONAME
+	_ZN12FmFileDialogD0Ev @ 11 NONAME
+	_ZN12FmFileDialogD1Ev @ 12 NONAME
+	_ZN12FmFileDialogD2Ev @ 13 NONAME
+	_ZNK12FmFileDialog10metaObjectEv @ 14 NONAME
+	_ZTI12FmFileDialog @ 15 NONAME
+	_ZTV12FmFileDialog @ 16 NONAME
+	_ZThn16_N12FmFileDialogD0Ev @ 17 NONAME
+	_ZThn16_N12FmFileDialogD1Ev @ 18 NONAME
+	_ZThn8_N12FmFileDialogD0Ev @ 19 NONAME
+	_ZThn8_N12FmFileDialogD1Ev @ 20 NONAME
+	_ZN12FmFileDialog12dialogClosedEP8HbAction @ 21 NONAME
+	_ZN12FmFileDialog16setPrimaryActionEP8HbAction @ 22 NONAME
+	_ZN12FmFileDialog18setSecondaryActionEP8HbAction @ 23 NONAME
+	_ZNK12FmFileDialog13primaryActionEv @ 24 NONAME
+	_ZNK12FmFileDialog15secondaryActionEv @ 25 NONAME
+
--- a/filemanager/src/fmfiledialog/src/fmfiledialog.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmfiledialog/src/fmfiledialog.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -68,7 +68,7 @@
     FmFileDialog dialog( parent );
     dialog.d_ptr->init( args );
     if( dialog.exec() ) {
-        ret = FmUtils::fillPathWithSplash( dialog.d_ptr->currentPath() );
+        ret = FmUtils::formatPath( dialog.d_ptr->currentPath() );
     }
     return ret;
 }
@@ -97,7 +97,7 @@
     FmFileDialog dialog( parent );
     dialog.d_ptr->init( args );
     if( dialog.exec() ) {
-        ret = FmUtils::fillPathWithSplash( dialog.d_ptr->currentPath() )
+        ret = FmUtils::formatPath( dialog.d_ptr->currentPath() )
             + dialog.d_ptr->selectedFile();
     }
     return ret;
@@ -127,7 +127,7 @@
     FmFileDialog dialog( parent );
     dialog.d_ptr->init( args );
     if( dialog.exec() ) {
-        ret = FmUtils::fillPathWithSplash( dialog.d_ptr->currentPath() )
+        ret = FmUtils::formatPath( dialog.d_ptr->currentPath() )
             + dialog.d_ptr->selectedFile();
     }
     return ret;
@@ -152,3 +152,55 @@
     d_ptr->setRetAction( action );
     d_ptr->eventLoop().exit();
 }
+
+
+HbAction *FmFileDialog::primaryAction() const
+{
+    QList<QAction *> actionList = QGraphicsWidget::actions();
+    if (actionList.size() > 0) {
+        return (HbAction *)(actionList.at(0));
+    } else {
+        return 0;
+    }
+    
+}
+
+void FmFileDialog::setPrimaryAction( HbAction *action )
+{
+    QList<QAction *> actionList = QGraphicsWidget::actions();
+    if (actionList.size() == 0) {
+        QGraphicsWidget::addAction(action);
+    } else if (actionList.size() ==  1) {
+        actionList.clear();
+        QGraphicsWidget::addAction(action);
+    } else if (actionList.size() == 2) {
+        actionList.removeAt(0);
+        actionList.insert(0, action);
+    }    
+}
+
+HbAction *FmFileDialog::secondaryAction() const
+{
+    QList<QAction *> actionList = QGraphicsWidget::actions();
+    if (actionList.size() > 1) {
+        return (HbAction *)(actionList.at(1));
+    } else {
+        return 0;
+    }    
+}
+
+void FmFileDialog::setSecondaryAction( HbAction *action )
+{
+    QList<QAction *> actionList = QGraphicsWidget::actions();
+    if (actionList.size() == 0) {
+        QGraphicsWidget::addAction(new HbAction(hbTrId("Ok")));
+        QGraphicsWidget::addAction(action);          
+    } else if (actionList.size() == 1) {
+        QGraphicsWidget::addAction(action);
+    } else if (actionList.size() == 2) {
+        actionList.removeAt(1);
+        actionList.insert(1, action);
+    }
+        
+}
+
--- a/filemanager/src/fmfiledialog/src/fmfiledialog_p.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmfiledialog/src/fmfiledialog_p.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -90,11 +90,13 @@
 {
     // Create action for ok button and assign it to the primary action of popup
     mOkAction = new HbAction( primaryActionText, mFileDialog );
+    mOkAction->setObjectName( "okAction" );
     Q_ASSERT( mOkAction );
     mFileDialog->setPrimaryAction( mOkAction );
 
     // Create action for cancel button and assign it to the secondary action of popup
     mCancelAction = new HbAction( secondaryActionText, mFileDialog );
+    mCancelAction->setObjectName( "cancelAction" );
     Q_ASSERT( mCancelAction );
     mFileDialog->setSecondaryAction( mCancelAction );
 }
@@ -144,6 +146,7 @@
 void FmFileDialogPrivate::createHeadingWidget()
 {
     mHeadingWidget = new HbWidget( mFileDialog );
+    mHeadingWidget->setObjectName( "headingWidget" ); 
 
     QGraphicsLinearLayout *headingLayout = new QGraphicsLinearLayout;
     headingLayout->setOrientation(Qt::Horizontal);
@@ -154,6 +157,7 @@
     titleLayout->setOrientation(Qt::Vertical);    
 
     mTitleLabel = new HbLabel();
+    mTitleLabel->setObjectName( "titleLabel" );
     if( mArgs.mTitle.isEmpty() ){
         mTitleLabel->setPlainText( QString( FmPlaceholderString ) );
     } else {
@@ -161,9 +165,11 @@
     }
 
     mCurrentPathLabel = new HbLabel( QString( FmPlaceholderString ) );
+    mCurrentPathLabel->setObjectName( "currentPathLabel" );
     mCurrentPathLabel->setElideMode(Qt::ElideRight);
 
     mUpButton  = new HbPushButton;
+    mUpButton->setObjectName( "upButton" );
     mUpButton->setIcon(HbIcon(backButtonIcon));
 
     titleLayout->addItem( mTitleLabel );
@@ -187,6 +193,7 @@
 void FmFileDialogPrivate::createContentWidget()
 {
     mContentWidget = new HbWidget( mFileDialog );
+    mContentWidget->setObjectName( "contentWidget" );
 
     mContentLayout = new QGraphicsLinearLayout;
     mContentLayout->setOrientation(Qt::Vertical);
@@ -194,6 +201,7 @@
     mContentWidget->setLayout( mContentLayout );
 
     mFileWidget = new FmFileWidget( mContentWidget );
+    mFileWidget->setObjectName( "fileWidget" );
     mContentLayout->addItem( mFileWidget );
 
     mFileDialog->setContentWidget( mContentWidget );
@@ -210,15 +218,18 @@
         return;
     }
     HbWidget *bottomWidget = new HbWidget( mContentWidget );
+    bottomWidget->setObjectName( "bottomWidget" );
     mContentLayout->addItem( bottomWidget );
 
     QGraphicsLinearLayout *bottomLayout = new QGraphicsLinearLayout;
     bottomLayout->setOrientation( Qt::Horizontal );
 
     mFileNameTitleLabel = new HbLabel( mFileDialog->tr( "file name:" ), bottomWidget );
+    mFileNameTitleLabel->setObjectName( "fileNameTitleLabel" );
     bottomLayout->addItem( mFileNameTitleLabel );
 
     mFileNameLineEdit = new HbLineEdit( bottomWidget );
+    mFileNameLineEdit->setObjectName( "fileNameLineEdit" );
     bottomLayout->addItem( mFileNameLineEdit );    
 
     bottomWidget->setLayout( bottomLayout );
@@ -256,10 +267,12 @@
         }
         break;
     case SaveFileMode:
-        if( mFileWidget->currentPath().absoluteFilePath().isEmpty() ) {
-            mFileNameLineEdit->setReadOnly( true );
-        } else {
-            mFileNameLineEdit->setReadOnly( false );
+        if( mFileNameLineEdit ){
+            if( mFileWidget->currentPath().absoluteFilePath().isEmpty() ) {
+                mFileNameLineEdit->setReadOnly( true );
+            } else {
+                mFileNameLineEdit->setReadOnly( false );
+            }
         }
         break;
     }
--- a/filemanager/src/fmfiledialog/src/fmfilewidget.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmfiledialog/src/fmfilewidget.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -21,6 +21,7 @@
 #include "fmdrivemodel.h"
 #include "fmdrivewatcher.h"
 #include "fmcommon.h"
+#include "fmfileiconprovider.h"
 
 #include "hbstyle.h"
 #include "hbabstractitemview.h"
@@ -28,7 +29,7 @@
 
 #include <QModelIndex>
 #include <QGraphicsLinearLayout>
-#include <QDirModel>
+#include <QFileSystemModel>
 #include <QTime>
 #include <QFileInfo>
 
@@ -43,7 +44,8 @@
 FmFileWidget::~FmFileWidget()
 {
     setModel( 0 );
-    delete mDirModel;
+    delete mFileSystemModel;
+    delete mFileIconProvider;
     delete mDriveModel;
     
     mDriveWatcher->cancelWatch();
@@ -57,8 +59,8 @@
     if( !index.isValid() ) {
         return QFileInfo();
     }
-    if( mCurrentModel == mDirModel ) {
-        return mDirModel->fileInfo( index );
+    if( mCurrentModel == mFileSystemModel ) {
+        return mFileSystemModel->fileInfo( index );
     } else {
         return QFileInfo();
     }
@@ -67,16 +69,18 @@
 void FmFileWidget::setRootPath( const QString &pathName )
 {
     FmLogger::log( "FmFileWidget::setRootPath start" );
-    if( pathName.isEmpty() || !FmUtils::isPathAccessabel( pathName ) ) {
+	// If path is empty or can not access, set model as DriveModel
+	// Otherwise set model as FileSystemModel, means it will return to drive view if error occur.
+    if( ( pathName.isEmpty() ) || ( FmErrNone != FmUtils::isPathAccessabel( pathName ) ) ) {
         FmLogger::log( "FmFileWidget::setRootPath set drive model" );
         setModel( mDriveModel );
         FmLogger::log( "FmFileWidget::setRootPath set drive model end" );
         emit pathChanged( QString() );
     } else {
         FmLogger::log( "FmFileWidget::setRootPath set dir model end" );
-        setModel( mDirModel );
+        setModel( mFileSystemModel );
         FmLogger::log( "FmFileWidget::setRootPath set dir model end" );
-        mListView->setRootIndex( mDirModel->index( pathName ) );
+		mListView->setRootIndex( mFileSystemModel->setRootPath( pathName ) );
         FmLogger::log( "FmFileWidget::setRootPath set rootIndex" );
         emit pathChanged( pathName );
     }    
@@ -92,6 +96,7 @@
 {
     FmLogger::log("FmFileWidget::on_list_activated start" );
     if( mCurrentModel == mDriveModel ) {
+    //If currenty model is DriveModel, open drive and set path
         QString driveName = mDriveModel->driveName( mActivatedModelIndex );
         QString checkedPath = FmUtils::checkDriveToFolderFilter( driveName );
         if( checkedPath.isEmpty() ) {
@@ -100,21 +105,21 @@
         }
 
         FmLogger::log("FmFileWidget::on_list_activated setModel dir start" );
-        setModel( mDirModel );
+        setModel( mFileSystemModel );
         FmLogger::log("FmFileWidget::on_list_activated setModel dir end" );
-        mListView->setRootIndex( mDirModel->index( checkedPath ) );
+        setRootPath( checkedPath );
         FmLogger::log("FmFileWidget::on_list_activated setRootIndex" );
         emit pathChanged( checkedPath );
         FmLogger::log("FmFileWidget::on_list_activated finish emit pathChanged" );
     }
-    else if( mCurrentModel == mDirModel ) {
-        if ( mDirModel->isDir( mActivatedModelIndex ) ) {
+    else if( mCurrentModel == mFileSystemModel ) {
+    //If currenty model is FileSystemModel, open path or emit file activate signal.
+        if ( mFileSystemModel->isDir( mActivatedModelIndex ) ) {
             FmLogger::log("FmFileWidget::on_list_activated start changeRootIndex" );
             changeRootIndex( mActivatedModelIndex );
             FmLogger::log("FmFileWidget::on_list_activated finish changeRootIndex" );
-            FmLogger::log("FmFileWidget::on_list_activated finish emit fileActivated" );
         } else {
-            QFileInfo fileInfo( mDirModel->filePath( mActivatedModelIndex ) );
+            QFileInfo fileInfo( mFileSystemModel->filePath( mActivatedModelIndex ) );
             if( fileInfo.isFile() ) {
                 emit fileActivated( fileInfo.fileName() );
                 FmLogger::log("FmFileWidget::on_list_activated finish emit fileActivated" );
@@ -128,27 +133,26 @@
 
 void FmFileWidget::setModelFilter( QDir::Filters filters )
 {
-    mDirModel->setFilter( filters );
+    mFileSystemModel->setFilter( filters );
 }
 
 void FmFileWidget::setNameFilters( const QStringList &nameFilters )
 {
-    mDirModel->setNameFilters( nameFilters );
+    mFileSystemModel->setNameFilters( nameFilters );
 }
 
 void FmFileWidget::changeRootIndex( const QModelIndex &index )
 {
     FmLogger::log("FmFileWidget::changeRootIndex start" );
-    if( mCurrentModel != mDirModel ) {
-        FmLogger::log("FmFileWidget::changeRootIndex end because model not equal dirmodel" );
+    if( mCurrentModel != mFileSystemModel ) {
+        FmLogger::log("FmFileWidget::changeRootIndex end because model not equal mFileSystemModel" );
         return;
     }
 
-    mDirModel->fetchMore(index);
-    mListView->setRootIndex( index );
-    QFileInfo fileInfo = mDirModel->fileInfo( mListView->rootIndex() );
-    QString string = fileInfo.absoluteFilePath();
-    emit pathChanged( string );
+    mFileSystemModel->fetchMore(index);
+	QString filePath = mFileSystemModel->fileInfo( index ).absoluteFilePath();
+    // pathChanged signal will be emitted in setRootPath
+	setRootPath( filePath );
     FmLogger::log("FmFileWidget::changeRootIndex end" );
 }
 
@@ -164,10 +168,13 @@
 
     mDriveModel = new FmDriveModel( this, 
         FmDriveModel::FillWithVolume | FmDriveModel::FillWithDefaultVolume | FmDriveModel::HideUnAvailableDrive );
-    qDebug("constructed dirveModel");
+    
     qDebug( QTime::currentTime().toString().toUtf8().data() );
-    mDirModel = new QDirModel( this );
-    qDebug("constructed dirModel");
+    mFileSystemModel = new QFileSystemModel( this );
+    mFileIconProvider = new FmFileIconProvider();
+    mFileSystemModel->setIconProvider( mFileIconProvider );
+    qDebug("constructed mFileSystemModel");
+    
     qDebug( QTime::currentTime().toString().toUtf8().data() );
     setModel( mDriveModel );
     qDebug("setmodel");
@@ -200,7 +207,7 @@
     ViewType viewType = DriveView;
     if( mCurrentModel == mDriveModel ) {
         viewType = DriveView;
-    } else if( mCurrentModel == mDirModel ) {
+    } else if( mCurrentModel == mFileSystemModel ) {
         viewType = DirView;
     } else {
         Q_ASSERT( false );
@@ -214,6 +221,8 @@
     QString path( FmUtils::checkFolderToDriveFilter( currentPath().absoluteFilePath() ) );
     QFileInfo fileInfo( path );
     QString cdUpPath;
+    // path length>3 means currenty path is a sub folder, then get up level path and navigate to it
+    // Otherwise means current path is a top level drive path, Should navigate to drive view. So setRootPath with empty path string.
     if( path.length() > 3 ) {
         cdUpPath = fileInfo.dir().absolutePath();
     }
@@ -230,7 +239,7 @@
         setModel( mDriveModel );
         emit pathChanged( QString() );
     } else if( currentViewType() == DirView ) {
-        if( !FmUtils::isPathAccessabel( currentPath().absoluteFilePath() ) ) {
+        if( FmErrNone != FmUtils::isPathAccessabel( currentPath().absoluteFilePath() ) ) {
             // path not available, set model to drive
             FmLogger::log( QString( "FmFileDialog_FmFileWidget::on_driveWatcher_driveAddedOrChanged path not availeable, set drivemodel:"
                     + currentPath().absoluteFilePath() ) );
--- a/filemanager/src/fmfiledialog/src/fmfilewidget.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/fmfiledialog/src/fmfilewidget.h	Thu Jul 22 16:30:56 2010 +0100
@@ -24,12 +24,14 @@
 #include <QDir>
 #include <QString>
 
-class QDirModel;
+class QFileSystemModel;
 class FmDriveModel;
 class FmDriveWatcher;
 class HbListView;
 class QGraphicsLinearLayout;
 
+class FmFileIconProvider;
+
 class FmFileWidget : public HbWidget
 {
 Q_OBJECT
@@ -68,13 +70,15 @@
 private:
     HbListView *mListView;
     QGraphicsLinearLayout *mLayout;
-    QDirModel       *mDirModel;
-    FmDriveModel    *mDriveModel;
+    QFileSystemModel	*mFileSystemModel;
+    FmDriveModel		*mDriveModel;
 
     QAbstractItemModel *mCurrentModel;
     FmDriveWatcher  *mDriveWatcher;
     
     QModelIndex mActivatedModelIndex;
+    
+    FmFileIconProvider *mFileIconProvider;
 
 };
 
--- a/filemanager/src/inc/commonutils.pri	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/commonutils.pri	Thu Jul 22 16:30:56 2010 +0100
@@ -17,11 +17,13 @@
 INTERNAL_HEADERS += $$PWD/fmutils.h \
                     $$PWD/fmdrivemodel.h \
                     $$PWD/fmfileiconprovider.h \
-                    $$PWD/fmdrivewatcher/fmdrivewatcher.h
+                    $$PWD/fmdrivewatcher/fmdrivewatcher.h \
+                    $$PWD/fmfiletyperecognizer.h
                     
 INTERNAL_SOURCES += $$PWD/fmdrivemodel.cpp \
                     $$PWD/fmfileiconprovider.cpp \
-                    $$PWD/fmdrivewatcher/fmdrivewatcher.cpp
+                    $$PWD/fmdrivewatcher/fmdrivewatcher.cpp \
+                    $$PWD/fmfiletyperecognizer.cpp
 
 symbian {
     INTERNAL_HEADERS += $$PWD/fms60utils.h \
--- a/filemanager/src/inc/fmcommon.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/fmcommon.h	Thu Jul 22 16:30:56 2010 +0100
@@ -25,7 +25,7 @@
 // MACRO for launch find view quickly from driver view and search "b" in "c:\ruby"
 //#define _DEBUG_SPEED_FINDVIEW_
 
-//#define _DEBUG_ENABLE_FORMATMENU_
+// #define _DEBUG_ENABLE_FORMATMENU_
 
 
 // MARCO for hide d, z, folder except C:\data in windows for debug
@@ -34,8 +34,10 @@
 //#define _DEBUG_LOG_ENABLE_
 
 //used to test drive hide which drive could be listed but not available
-//#define _DEBUG_DISABLE_DRIVE_D_TEST_DRIVEHIDE_
+// #define _DEBUG_DISABLE_DRIVE_D_TEST_DRIVEHIDE_
 
+//used to test locked drive
+// #define _DEBUG_LOCKED_DRIVE_Z
 
 #include "fmlogger.h"
 #include "fmdefine.h"
--- a/filemanager/src/inc/fmdefine.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/fmdefine.h	Thu Jul 22 16:30:56 2010 +0100
@@ -18,47 +18,55 @@
 #define FMDEFINE_H
 
 // define for filemanager error
-#define  FmErrNone                       0
-#define  FmErrNotFound                  -1
-#define  FmErrGeneral                   -2
-#define  FmErrAlreadyExists             -3
-#define  FmErrAccessDenied              -4
-#define  FmErrCannotRemove              -5
-#define  FmErrCannotCopy                -6
-#define  FmErrDiskFull                  -7
-#define  FmErrFileUsed                  -8
-#define  FmErrFolderUsed                -9
-#define  FmErrTypeFormatFailed          -10
-#define  FmErrTypeFormatFailedUsed      -11
-#define  FmErrAlreadyStarted            -12
-#define  FmErrCancel                    -13
-#define  FmErrWrongParam                -14
-#define  FmErrUnKnown                   -15
-#define  FmErrIsNotFileOrFolder         -16
-#define  FmErrCannotMakeDir             -17
-#define  FmErrSrcPathDoNotExist         -18
-#define  FmErrDestPathDoNotExist        -19
-#define  FmErrCopyDestToSubFolderInSrc  -20
-#define  FmErrMoveDestToSubFolderInSrc  -21
-#define  FmErrNotSupported              -22
-#define  FmErrNotReady                  -23
-#define  FmErrInUse                     -24
-#define  FmErrPermissionDenied          -25
-#define  FmErrBadName                   -26
-#define  FmErrPathNotFound              -27
-#define  FmErrRemoveDefaultFolder       -28
-#define  FmErrLocked                    -29
-#define  FmErrCorrupt                   -30
+#define  FmErrNone                       0  // No Error
+#define  FmErrNotFound                  -1  // General error for things requested is not found 
+#define  FmErrGeneral                   -2  // General error
+#define  FmErrAlreadyExists             -3  // General for already existed. for example if unlock a drive but it has already been unlocked
+#define  FmErrAccessDenied              -4  // General for Access is denied, for example, format a drive but access is denied.
+#define  FmErrCannotRemove              -5  // General error for can not performance remove
+#define  FmErrCannotCopy                -6  // General error for can not performance copy
+#define  FmErrDiskFull                  -7  // Error for disk is full
+#define  FmErrFileUsed                  -8  // Error for file is in use
+#define  FmErrFolderUsed                -9  // Error for folder is in use
+#define  FmErrTypeFormatFailed          -10 // Error reported when format failed
+#define  FmErrTypeFormatFailedUsed      -11 // Error reported when user try to format a drive but it is in use 
+#define  FmErrAlreadyStarted            -12 // General error for operation is already started
+#define  FmErrCancel                    -13 // General error for operation canceled
+#define  FmErrWrongParam                -14 // General error for wrong parameter
+#define  FmErrUnKnown                   -15 // Unknown error
+#define  FmErrIsNotFileOrFolder         -16 // Error for a path which is not a fild or folder.
+#define  FmErrCannotMakeDir             -17 // Error for can not create directory.
+#define  FmErrSrcPathDoNotExist         -18 // Error for source path is not exist.
+#define  FmErrDestPathDoNotExist        -19 // Error for destination path is not exist.
+#define  FmErrCopyDestToSubFolderInSrc  -20 // If user try to copy a folder to its sub folder, error will occur
+#define  FmErrMoveDestToSubFolderInSrc  -21 // If user try to move a folder to its sub folder, error will occur
+#define  FmErrNotSupported              -22 // feature not supported, for example, lock an drive which can not be locked
+#define  FmErrNotReady                  -23 // Error when drive is not ready( means drive is not present )
+#define  FmErrInUse                     -24 // Error for drive is in use.
+#define  FmErrPermissionDenied          -25 // Permission Denied 
+#define  FmErrBadName                   -26 // Bad Drive or file/folder name, currently used when rename drive
+#define  FmErrPathNotFound              -27 // Error for path is not found
+#define  FmErrRemoveDefaultFolder       -28 // Error when user try to remove default folder, such as C:/data/images...
+#define  FmErrLocked                    -29 // Disk is locked
+#define  FmErrCorrupt                   -30 // Disk is corrupt
+#define  FmErrDisMounted                -31 // e.g. If disk dis mounted while backuping.
+#define  FmErrDriveNotAvailable         -32 // e.g. if user want to access MMC but it is not available
+#define  FmErrPathDenied                -33 // if user want to access path but it is denied, e.g c:/private
+#define  FmErrDriveDenied               -34 // if user want to access drive but it is denied, e.g D:/
+#define  FmErrPathNotExist              -35 // path not existed.
 
 #define FmEstimateUpperLimit 90 // available mem/backup size*100%=90%, User selectable continuation
 #define FmEstimateLowerLimit 10 // available mem/backup size*100%=10%, Backup will be interrupted
 
 #define FmPlaceholderString " " // Placeholder for HbLabel because layout will be wrong when HbLabel is empty
 
-#define Drive_C "C:/"
-#define Drive_D "D:/"
-#define Drive_Z "Z:/"
-#define Folder_C_Data "C:/Data"
+#define Drive_C ( QString( "C:" ) + QDir::separator() ) 
+#define Drive_D ( QString( "D:" ) + QDir::separator() )
+#define Drive_Z ( QString( "Z:" ) + QDir::separator() )
+#define Folder_C_Data ( QString( "C:" ) + QDir::separator() + QString( "Data" ) + QDir::separator() )
+
+// define  contact data path for view details.
+#define FmViewDetail_Contacts ( "\\private\\10003a73\\SQLite__Contacts.cdb" )
 
 #define FmMaxLengthofDriveName           11
 #define FmMaxLengthofDrivePassword       8
--- a/filemanager/src/inc/fmdrivemodel.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/fmdrivemodel.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -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 ) {
+            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();
+
+	emit layoutChanged();
+	for( int i=0; i<mDriveList.count(); i++ ) {
+        emit dataChanged(index( i, 0 ), index( i, 0 ));
+	}
 }
 
 
@@ -97,10 +110,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();
         }
     }
--- a/filemanager/src/inc/fmdrivemodel.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/fmdrivemodel.h	Thu Jul 22 16:30:56 2010 +0100
@@ -20,9 +20,31 @@
 
 #include <QAbstractItemModel>
 #include <QStringList>
-#include <QFileIconProvider>
 #include <QModelIndex>
 
+class FmFileIconProvider;
+
+/*!
+    \class FmDriveListProvider
+    \brief The class FmDriveListProvider provide drive list which is used in FmDriveModel
+ */
+class FmDriveListProvider
+{
+public:
+    FmDriveListProvider()
+    {
+    }
+    
+    virtual ~FmDriveListProvider()
+    {
+    }
+    
+    /*!
+     implement this function to provide drive list.
+     */
+    virtual void getDriveList( QStringList &driveList ) = 0;
+};
+
 class FmDriveModel : public QAbstractListModel
 {
 Q_OBJECT
@@ -35,7 +57,8 @@
     };
     Q_DECLARE_FLAGS(Options, Option)
 
-    explicit FmDriveModel( QObject *parent = 0, Options options = 0 );
+    explicit FmDriveModel( QObject *parent = 0, Options options = 0,
+            FmDriveListProvider *driveListProvider = 0 );
     virtual ~FmDriveModel();
 
     void refresh();
@@ -49,9 +72,13 @@
     
 private:
     QStringList         mFindResult;
-    QFileIconProvider   *mIconProvider;
+    FmFileIconProvider  *mIconProvider;
     QStringList         mDriveList;
     Options             mOptions;
+    
+    // DriveListProvider will ignore HideUnAvailableDrive option.
+    // DriveListProvide can be set by others to provide special drive list
+    FmDriveListProvider *mDriveListProvider;
 };
 
 Q_DECLARE_OPERATORS_FOR_FLAGS(FmDriveModel::Options)
--- a/filemanager/src/inc/fmfileiconprovider.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/fmfileiconprovider.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -16,58 +16,171 @@
 */
 
 #include "fmfileiconprovider.h"
+#include "fmfiletyperecognizer.h"
 #include "fmutils.h"
 
 #include <QDir>
 #include <QFileInfo>
 
-#define mmcIcon         ":image/qgn_prop_mmc_memc.svg"
-#define mmcNoneIcon     ":image/qgn_prop_fmgr_mmc_no_sub.svg"
+#include "hbicon.h"
+
+//#define mmcIcon         ":image/qgn_prop_mmc_memc.svg"
+//#define mmcNoneIcon     ":image/qgn_prop_fmgr_mmc_no_sub.svg"
+//#define mmcLockedIcon   ":image/qgn_prop_mmc_locked.svg"
+//#define phoneMemoryIcon ":image/qgn_prop_phone_memc.svg"
+//#define usbMemoryIcon   ":image/qgn_prop_usb_memc.svg"
+//#define massMemoryIcon  ":image/qgn_prop_fmgr_ms.svg"
+
+#define phoneMemoryIcon "qtg_large_mobile"
+#define massMemoryIcon  "qtg_large_mass_storage"
+#define mmcIcon         "qtg_large_mmc"
+#define mmcNoneIcon     "qtg_large_mmc_removed"
+#define usbMemoryIcon   "qtg_large_usb_memory"
+
+//TODO: UI_Update: mmcl locked icon have not provided in icon spec
+// Just use orignal custom-defined icon
 #define mmcLockedIcon   ":image/qgn_prop_mmc_locked.svg"
-#define phoneMemoryIcon ":image/qgn_prop_phone_memc.svg"
-#define usbMemoryIcon   ":image/qgn_prop_usb_memc.svg"
-#define massMemoryIcon  ":image/qgn_prop_fmgr_ms.svg"
+
+
+#define folderIcon      "qtg_large_folder"
+
+#define imageIcon       "qtg_large_photos" 
+#define videoIcon       "qtg_large_video" 
+#define toneIcon        "qtg_large_tone"
+#define playlistIcon    "qtg_large_playlist" 
+#define textIcon        "qtg_large_text" 
+#define sisxIcon        "qtg_large_sisx" 
+#define javaIcon        "qtg_large_java" 
+#define flashIcon       "qtg_large_flash" 
+#define widgetIcon      "qtg_large_widget" 
+#define weblinkIcon     "qtg_large_web_link" 
+#define queryIcon       "qtg_large_query"
 
 FmFileIconProvider::FmFileIconProvider()
 {
-
+    mFileTypeRecognizer = new FmFileTypeRecognizer();
 }
 
 FmFileIconProvider::~FmFileIconProvider()
 {
+    delete mFileTypeRecognizer;
 }
-
+        
 QIcon FmFileIconProvider::icon(const QFileInfo &info) const
 {
-    QString filePath( info.path() );
-    if( FmUtils::isDrive( filePath ) ) {
-        FmDriverInfo::DriveState driveState = FmUtils::queryDriverInfo( filePath ).driveState();
-        if( driveState & FmDriverInfo::EDriveAvailable ){
-            if( driveState & FmDriverInfo::EDriveRemovable ) {
-                if( driveState & FmDriverInfo::EDriveMassStorage ) {
-                    // Mass Storage
-                    return QIcon( massMemoryIcon );
-                } else if( driveState & FmDriverInfo::EDriveUsbMemory ) {
-                    // Usb Memory
-                    return QIcon( usbMemoryIcon );
+    QIcon retIcon;
+    
+    QString filePath( info.absoluteFilePath() );
+    FmFileTypeRecognizer::FileType fileType = mFileTypeRecognizer->getType( filePath );
+    switch( fileType )
+        {
+        case FmFileTypeRecognizer::FileTypeDrive:
+            {
+            FmDriverInfo::DriveState driveState = FmUtils::queryDriverInfo( filePath ).driveState();
+            if( driveState & FmDriverInfo::EDriveAvailable ){
+                if( driveState & FmDriverInfo::EDriveRemovable ) {
+                    if( driveState & FmDriverInfo::EDriveMassStorage ) {
+                        // Mass Storage
+                        retIcon = HbIcon( massMemoryIcon ).qicon();
+                        break;
+                    } else if( driveState & FmDriverInfo::EDriveUsbMemory ) {
+                        // Usb Memory
+                        retIcon = HbIcon( usbMemoryIcon ).qicon();
+                        break;
+                    } else{
+                        //Memory Card
+                        retIcon = HbIcon( mmcIcon ).qicon();
+                        break;
+                    }
                 } else{
-                    //Memory Card
-                    return QIcon( mmcIcon );
+                    //Phone Memory
+                    retIcon = HbIcon( phoneMemoryIcon ).qicon();
+                    break;
                 }
-            } else{
-                //Phone Memory
-                return QIcon( phoneMemoryIcon );
+            } else if( driveState & FmDriverInfo::EDriveLocked ) {
+                retIcon = HbIcon( mmcLockedIcon ).qicon();
+                break;
+            } else if( driveState & FmDriverInfo::EDriveCorrupted ) {
+                retIcon = HbIcon( mmcNoneIcon ).qicon();
+                break;
+            } else if( driveState & FmDriverInfo::EDriveNotPresent ){
+                retIcon = HbIcon( mmcNoneIcon ).qicon();
+                break;
+            } else {
+                retIcon = HbIcon( mmcNoneIcon ).qicon();
+                break;
+            }
+            }
+        case FmFileTypeRecognizer::FileTypeFolder:
+            {
+            retIcon = HbIcon( folderIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeImage:
+            {
+            retIcon = HbIcon( imageIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeVideo:
+            {
+            retIcon = HbIcon( videoIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeTone:
+            {
+            retIcon = HbIcon( toneIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypePlaylist:
+            {
+            retIcon = HbIcon( playlistIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeText:
+            {
+            retIcon = HbIcon( textIcon ).qicon();
+            break;
             }
-        } else if( driveState & FmDriverInfo::EDriveLocked ) {
-            return QIcon( mmcLockedIcon );
-        } else if( driveState & FmDriverInfo::EDriveCorrupted ) {
-            return QIcon( mmcNoneIcon );
-        } else if( driveState & FmDriverInfo::EDriveNotPresent ){
-            return QIcon( mmcNoneIcon );
-        } else {
-            return QIcon( mmcNoneIcon );
+        case FmFileTypeRecognizer::FileTypeSisx:
+            {
+            retIcon = HbIcon( sisxIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeJava:
+            {
+            retIcon = HbIcon( javaIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeFlash:
+            {
+            retIcon = HbIcon( flashIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeWidget:
+            {
+            retIcon = HbIcon( widgetIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeWebLink:
+            {
+            retIcon = HbIcon( weblinkIcon ).qicon();
+            break;
+            }
+        case FmFileTypeRecognizer::FileTypeUnKnown:
+            {
+            // currently filemanger icon doc is not unified with icon name.
+            // for example, qtg_small_unknown  qtg_large_query both means for unknown type
+			// but the two icon name is not the same.
+            retIcon = HbIcon( queryIcon ).qicon();
+            break;
+            }
         }
-    } else {
-        return QFileIconProvider::icon( info );
+    
+    // if cannot get icon, return icon from QFileIconProvider
+    // this will be mostly used in win32 platform,
+    // because path for HbIcon only existed in hb theme of symbian 
+    if( retIcon.isNull() ) {
+        retIcon = QFileIconProvider::icon( info );
     }
+    return retIcon;
 }
--- a/filemanager/src/inc/fmfileiconprovider.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/fmfileiconprovider.h	Thu Jul 22 16:30:56 2010 +0100
@@ -20,16 +20,21 @@
 
 #include <QFileIconProvider>
 
+class FmFileTypeRecognizer;
+
 class FmFileIconProvider : public QFileIconProvider
 {
 public:
     FmFileIconProvider();
     virtual ~FmFileIconProvider();
 
+    // from QFileIconProvider
     virtual QIcon icon(const QFileInfo &info) const;
     
 private:
 
+    FmFileTypeRecognizer *mFileTypeRecognizer;
+
 };
 
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/inc/fmfiletyperecognizer.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ * 
+ * Contributors:
+ *     
+ * 
+ * Description:
+ *      The source file of the file type recognizer
+ */
+
+#include "fmfiletyperecognizer.h"
+#include "fmutils.h"
+#include <QFileInfo>
+#include <QStringList>
+
+FmFileTypeRecognizer::FmFileTypeRecognizer()
+{
+    QStringList fileExtensionList;
+    
+    fileExtensionList.append( QString( "bmp" ) );
+    fileExtensionList.append( QString( "gif" ) );
+    fileExtensionList.append( QString( "jpe" ) );
+    fileExtensionList.append( QString( "jpeg" ) );
+    fileExtensionList.append( QString( "jpg" ) );
+    fileExtensionList.append( QString( "ota" ) );
+    fileExtensionList.append( QString( "png" ) );
+    fileExtensionList.append( QString( "tif" ) );
+    fileExtensionList.append( QString( "tiff" ) );
+    fileExtensionList.append( QString( "wbmp" ) );
+    fileExtensionList.append( QString( "wmf" ) );
+    fileExtensionList.append( QString( "jp2" ) );
+    fileExtensionList.append( QString( "jpg2" ) );
+    fileExtensionList.append( QString( "jp3" ) );
+    fileExtensionList.append( QString( "ico" ) );
+    fileExtensionList.append( QString( "vcf" ) );
+    mFileTypeMap.insert( FileTypeImage, fileExtensionList );
+   
+    fileExtensionList.clear();
+    fileExtensionList.append( QString( "3gp" ) );
+    fileExtensionList.append( QString( "mp4" ) );
+    fileExtensionList.append( QString( "nim" ) );
+    fileExtensionList.append( QString( "rm"  ) );
+    fileExtensionList.append( QString( "rv"  ) );
+    fileExtensionList.append( QString( "wmv" ) );
+    fileExtensionList.append( QString( "3g2" ) );
+    fileExtensionList.append( QString( "rmvb") );
+    fileExtensionList.append( QString( "mkv" ) );
+    mFileTypeMap.insert( FileTypeVideo, fileExtensionList );
+    
+    fileExtensionList.clear();
+    fileExtensionList.append( QString( "aac" ) );
+    fileExtensionList.append( QString( "amr" ) );
+    fileExtensionList.append( QString( "au" ) );
+    fileExtensionList.append( QString( "awb" ) );
+    fileExtensionList.append( QString( "mid" ) );
+    fileExtensionList.append( QString( "mp3" ) );
+    fileExtensionList.append( QString( "ra" ) );
+    fileExtensionList.append( QString( "rmf" ) );
+    fileExtensionList.append( QString( "rng" ) );
+    fileExtensionList.append( QString( "snd" ) );
+    fileExtensionList.append( QString( "wav" ) );
+    fileExtensionList.append( QString( "wve" ) );
+    fileExtensionList.append( QString( "wma" ) );
+    fileExtensionList.append( QString( "m4a" ) );
+    fileExtensionList.append( QString( "ott" ) );
+    fileExtensionList.append( QString( "mxmf" ) );
+    mFileTypeMap.insert( FileTypeTone, fileExtensionList );
+
+    fileExtensionList.clear();
+    fileExtensionList.append( QString( "doc" ) );
+    fileExtensionList.append( QString( "pdf" ) );
+    fileExtensionList.append( QString( "pps" ) );
+    fileExtensionList.append( QString( "ppt" ) );
+    fileExtensionList.append( QString( "txt" ) );
+    fileExtensionList.append( QString( "xls" ) );
+    mFileTypeMap.insert( FileTypeText, fileExtensionList );
+            
+    fileExtensionList.clear();
+    fileExtensionList.append( QString( "sis" ) );
+    fileExtensionList.append( QString( "sisx" ) );
+    mFileTypeMap.insert( FileTypeSisx, fileExtensionList );
+    
+    fileExtensionList.clear();
+    fileExtensionList.append( QString( "jad" ) );
+    fileExtensionList.append( QString( "jar" ) );
+    mFileTypeMap.insert( FileTypeJava, fileExtensionList );
+    
+    fileExtensionList.clear();
+    fileExtensionList.append( QString( "swf" ) );
+    mFileTypeMap.insert( FileTypeFlash, fileExtensionList );
+
+    // have not handle FileTypePlaylist
+    // have not handle FileTypeWidget
+    // have not handle FileTypeWebLink 
+    
+    // make mFileExtensionMap( data map for extenstion ) from mFileTypeMap
+    // this map is used to speed up recognize    
+    QMapIterator<FileType, QStringList> i( mFileTypeMap );
+    while (i.hasNext()) {
+        i.next();
+        foreach( const QString extension, i.value() ) {
+            mFileExtensionMap.insert( extension, i.key() );
+        }
+    }
+    
+
+}
+
+FmFileTypeRecognizer::~FmFileTypeRecognizer()
+{
+    
+}
+
+FmFileTypeRecognizer::FileType FmFileTypeRecognizer::getType( const QString& path ) const
+{
+    if( FmUtils::isDrive( path ) ) {
+        return FileTypeDrive;
+    }
+    
+    QFileInfo fileInfo(path);
+    if( fileInfo.isDir() ) {
+        return FileTypeFolder;
+    }
+    
+    //if can not find key, return default value: FileTypeUnKnown
+    return mFileExtensionMap.value( fileInfo.suffix().toLower(), FileTypeUnKnown );
+}
+
+const QStringList FmFileTypeRecognizer::getFileListFromFileType( const FmFileTypeRecognizer::FileType fileType ) const
+{
+    return mFileTypeMap.value( fileType, QStringList() );
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/inc/fmfiletyperecognizer.h	Thu Jul 22 16:30:56 2010 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ * 
+ * Contributors:
+ *     
+ * 
+ * Description:
+ *      The header file of the file type recognizer
+ */
+
+#ifndef FMFILERECOGNIZER_H
+#define FMFILERECOGNIZER_H
+
+#include <QString>
+#include <QList>
+#include <QStringList>
+#include <QMap>
+
+/*!
+    \class FmFileTypeRecognizer
+    \brief The class FmFileTypeRecognizer used to recognize file type by path.
+ */
+class FmFileTypeRecognizer
+{
+public:
+    enum FileType{
+        FileTypeDrive,
+        FileTypeFolder,
+        FileTypeImage,
+        FileTypeVideo,
+        FileTypeTone,
+        FileTypePlaylist, 
+        FileTypeText,
+        FileTypeSisx,
+        FileTypeJava, 
+        FileTypeFlash, 
+        FileTypeWidget, 
+        FileTypeWebLink, 
+        FileTypeUnKnown
+    };
+
+
+public:
+    FmFileTypeRecognizer();
+    virtual ~FmFileTypeRecognizer();
+    
+    /*!
+     Recognize file type, currently only judge file by its extension name.
+     */
+    FmFileTypeRecognizer::FileType getType( const QString& path ) const ;
+    
+    /*!
+     Profide a list of extension name by designate the FileType.
+     */
+    const QStringList getFileListFromFileType( const FmFileTypeRecognizer::FileType fileType ) const;
+    
+private:    
+    // used to store FileType, extension name list pare.
+    QMap<FileType, QStringList> mFileTypeMap;
+    
+    // used to store single extension name, FileType pare.
+    // this map comes from mFileTypeMap
+    QMap<QString, FileType>     mFileExtensionMap;
+};
+
+#endif /* FMDRIVEDETAILSTYPE_H */
+
--- a/filemanager/src/inc/fmutils.h	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/fmutils.h	Thu Jul 22 16:30:56 2010 +0100
@@ -94,7 +94,7 @@
     static int setDrivePwd( const QString &driverName, const QString &oldPwd, const QString &newPwd);
     static void emptyPwd( QString &pwd );
     static int renameDrive( const QString &driverName, const QString &newVolumeName);
-    static void ejectDrive( const QString &driverName );
+    static int ejectDrive( const QString &driverName );
     static QString getFileType( const QString &filePath  );
     static quint64 getDriveDetailsResult( const QString &folderPath, const QString &extension );
     static bool isDriveC( const QString &driverName );
@@ -103,10 +103,10 @@
     static QString fillPathWithSplash( const QString &filePath );
     static QString removePathSplash( const QString &filePath );
     static QString formatPath( const QString &path  );
-    static bool checkDriveFilter( const QString &driveName );
+    static bool checkDriveAccessFilter( const QString &driveName );
     static QString checkDriveToFolderFilter( const QString &path );
     static QString checkFolderToDriveFilter( const QString &path );
-    static bool isPathAccessabel( const QString &path );
+    static int isPathAccessabel( const QString &path );
     static bool isDriveAvailable( const QString &path );
     static bool isPathEqual( const QString &pathFst, const QString &pathLast );
 
@@ -123,6 +123,15 @@
     static int getMaxFileNameLength();
     static bool checkMaxPathLength( const QString& path );
     static bool checkFolderFileName( const QString& name );
+    
+    /**
+     * check file or folder path is illegal or not.
+     *
+     * @param  path file/folder path.
+     * @param  errString if return false, errString will be set for error note.
+     * @return true for not illegal and false for illegal path.
+     */
+    static bool checkNewFolderOrFile( const QString &path, QString &errString );
 
 };
 
--- a/filemanager/src/inc/fmutils_s60.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/fmutils_s60.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -37,6 +37,8 @@
 #include <QDir>
 #include <QFile>
 
+#include <hbglobal.h>
+
 #include <xqaiwrequest.h>
 #include <xqappmgr.h>
 
@@ -46,10 +48,12 @@
 
 QString FmUtils::getDriveNameFromPath( const QString &path )
 {
-    if( path.length() <3 ) {
+    // fillPathWithSplash make sure path length will be at least 3 if it is not empty.
+    QString checkedPath( fillPathWithSplash( path ) );
+    if( checkedPath.length() < 3 ) {
         return QString();
     }
-    return path.left( 3 );
+    return checkedPath.left( 3 );
 }
 
 QString FmUtils::getDriveLetterFromPath( const QString &path )
@@ -62,6 +66,9 @@
 
 FmDriverInfo FmUtils::queryDriverInfo( const QString &driverName )
 {
+    if( driverName.isEmpty() ) {
+        return FmDriverInfo( 0, 0, driverName, QString(), FmDriverInfo::EDriveNotPresent );
+    }
     CCoeEnv *env = CCoeEnv::Static();
     RFs& fs = env->FsSession();
 
@@ -207,6 +214,9 @@
 
 int FmUtils::removeDrivePwd( const QString &driverName,  const QString &Pwd )
 {
+    if( driverName.isEmpty() ) {
+        return FmErrWrongParam;
+    }
     QString logString = "Drive name:" + driverName;
     FmLogger::log( logString );
     logString = "Password:" + Pwd;
@@ -245,6 +255,9 @@
 
 int FmUtils::unlockDrive( const QString &driverName,  const QString &Pwd )
 {
+    if( driverName.isEmpty() ) {
+        return FmErrWrongParam;
+    }
     QString logString = "Drive name:" + driverName;
     FmLogger::log( logString );
     logString = "Password:" + Pwd;
@@ -287,6 +300,9 @@
 
 int FmUtils::checkDrivePwd( const QString &driverName, const QString &pwd )
 {
+    if( driverName.isEmpty() ) {
+        return FmErrWrongParam;
+    }
     QString logString = "checkDrivePwd Drive name:" + driverName;
     logString += " password:" + pwd;
     FmLogger::log( logString );
@@ -296,6 +312,9 @@
 
 int FmUtils::setDrivePwd( const QString &driverName, const QString &oldPwd, const QString &newPwd)
 {
+    if( driverName.isEmpty() ) {
+        return FmErrWrongParam;
+    }
     QString logString = "setDrivePwd Drive name:" + driverName ;
     logString += " Old password:" + oldPwd;
     logString += " New password:" + newPwd;
@@ -347,6 +366,9 @@
 
 int FmUtils::renameDrive( const QString &driverName, const QString &newVolumeName)
 {
+    if( driverName.isEmpty() ) {
+        return FmErrWrongParam;
+    }
     foreach( const QChar &ch, newVolumeName )
     {
         bool a = ch.isSpace();
@@ -382,8 +404,11 @@
     }
 }
 
-void FmUtils::ejectDrive( const QString &driverName )
+int FmUtils::ejectDrive( const QString &driverName )
 {
+    if( driverName.isEmpty() ) {
+        return FmErrWrongParam;
+    }
     QString logString = "FmUtils::ejectDrive start";
     FmLogger::log( logString );
 
@@ -398,6 +423,7 @@
         KCoreAppUIsMmcRemovedWithoutEject,
         ECoreAppUIsEjectCommandUsedToDrive | ( drive << KDriveShift )
         );
+    return FmErrNone;
 }
 
 QString FmUtils::getFileType( const QString &filePath  )
@@ -480,6 +506,9 @@
 
 bool FmUtils::isDriveC( const QString &driverName )
 {
+    if( driverName.isEmpty() ) {
+        return false;
+    }
     TInt drive = 0;
     drive = driverName[0].toUpper().toAscii() - 'A' + EDriveA;
     if( drive == EDriveC ){
@@ -503,6 +532,9 @@
 
 void FmUtils::createDefaultFolders( const QString &driverName )
 {
+    if( driverName.isEmpty() ) {
+        return;
+    }
     int err;
     
     TInt drive = 0;
@@ -571,14 +603,23 @@
 
 QString FmUtils::fillPathWithSplash( const QString &filePath )
 {
-    QString newFilePath( filePath );
+	QString newFilePath;
     if( filePath.isEmpty() ) {
         return newFilePath;
     }
 
-    if( filePath.at( filePath.length()-1 ) != QChar( '/' ) ){
-        newFilePath.append( QChar( '/' ) );
+    foreach( QChar ch, filePath ) {
+        if( ch == QChar('\\') || ch == QChar('/') ) {
+			newFilePath.append( QDir::separator() );
+        } else {
+            newFilePath.append( ch );
+        }
     }
+    
+    if( newFilePath.right( 1 )!= QDir::separator() ){
+        newFilePath.append( QDir::separator() );
+    }
+    
     return newFilePath;
 }
 
@@ -591,10 +632,15 @@
     return newFilePath;
 }
 
-// used to filter drive which need be hide.
-bool FmUtils::checkDriveFilter( const QString &driveName )
+// filter un-accessable drive
+bool FmUtils::checkDriveAccessFilter( const QString &driveName )
 {
-    if( driveName.contains( "D:" ) || driveName.contains( "Z:" ) ) {
+    if( driveName.isEmpty() ) {
+        return false;
+    }
+    FmDriverInfo driveInfo = queryDriverInfo( driveName );
+    if( ( driveInfo.driveState()& FmDriverInfo::EDriveRam ) ||
+        ( driveInfo.driveState()& FmDriverInfo::EDriveRom ) ) {
         return false;
     }
     return true;
@@ -609,8 +655,8 @@
         }
     */
     QString checkedPath = fillPathWithSplash( path );
-    if( checkedPath.compare( QString( "C:/"), Qt::CaseInsensitive ) == 0 ) {
-        checkedPath += QString( "data/" );
+    if( checkedPath.compare( Drive_C, Qt::CaseInsensitive ) == 0 ) {
+        checkedPath += QString( "data" ) + QDir::separator();
         return checkedPath;
     }
     return path;
@@ -627,47 +673,50 @@
     logString = QString( "checkFolderToDriveFilter_fillPathWithSplash: " ) + checkedPath;
     FmLogger::log( logString );
     
-    if( checkedPath.compare( QString( "C:/data/"), Qt::CaseInsensitive ) == 0 ) {
+    if( checkedPath.compare( Folder_C_Data, Qt::CaseInsensitive ) == 0 ) {
         FmLogger::log( QString( " change from c:/data/ to C:/" ) );
-        return QString( "C:/" );
+        return Drive_C;
     }
     return path;
 
 }
 
-bool FmUtils::isPathAccessabel( const QString &path )
+int FmUtils::isPathAccessabel( const QString &path )
 {
+    // Used to check if path is accessable, very important feature
+	// and will return filemanager error.
     FmLogger::log( QString( "isPathAccessabel:" ) + path );
+    if( path.isEmpty() ) {
+        return FmErrPathNotExist;
+    }
     if( path.length() <= 3 && !isDriveAvailable( path ) ) { //used to filter locked drive
         FmLogger::log( QString( "isPathAccessabel false: path is drive and not available" ) );
-        return false;
+        return FmErrDriveNotAvailable;
     }
     QFileInfo fileInfo( path );
-    if( fileInfo.absoluteFilePath().contains( QString( Drive_C ), Qt::CaseInsensitive ) &&
-        !fileInfo.absoluteFilePath().contains( QString( Folder_C_Data ), Qt::CaseInsensitive ) ) {
+    if( fileInfo.absoluteFilePath().contains( Drive_C, Qt::CaseInsensitive ) &&
+        !fileInfo.absoluteFilePath().contains( Folder_C_Data, Qt::CaseInsensitive ) ) {
         FmLogger::log( QString( "isPathAccessabel false: path contain C and not in data folder" ) );
-        return false;
+        return FmErrPathDenied;
     }
-    if( fileInfo.absoluteFilePath().contains( QString( Drive_D ), Qt::CaseInsensitive ) ) {
-        FmLogger::log( QString( "isPathAccessabel false: path contain D" ) );
-        return false;
-    }
-    if( fileInfo.absoluteFilePath().contains( QString( Drive_Z ), Qt::CaseInsensitive ) ) {
-        FmLogger::log( QString( "isPathAccessabel false: path contain Z" ) );
-        return false;
+    if( !checkDriveAccessFilter( FmUtils::getDriveNameFromPath( fileInfo.absoluteFilePath() ) ) ){
+        return FmErrDriveDenied;
     }
     if( !fileInfo.exists() ) {
         FmLogger::log( QString( "isPathAccessabel false: path not exist" ) );
-        return false;
+        return FmErrPathNotExist;
     }
-    FmLogger::log( QString( "isPathAccessabel true" ) );
-    return true;
+    FmLogger::log( QString( "isPathAccessabel FmErrNone" ) );
+    return FmErrNone;
 }
 
 // only used to check drive, when MMC is not inserted, also return false
 bool FmUtils::isDriveAvailable( const QString &path )
 {
     FmLogger::log( QString( "isDriveAvailable:" ) + path );
+    if( path.isEmpty() ) {
+        return false;
+    }
     FmDriverInfo::DriveState driveState = queryDriverInfo( path ).driveState();
     if( ( driveState & FmDriverInfo::EDriveAvailable ) ) {
         FmLogger::log( QString( "isDriveAvailable true" ) );
@@ -688,7 +737,7 @@
 
     foreach( QFileInfo fileInfo, infoList ) {
         QString driveName = fileInfo.absolutePath();
-        if( checkDriveFilter( driveName ) ) {
+        if( checkDriveAccessFilter( driveName ) ) {
             if( !isHideUnAvailableDrive ) {
                 driveList.append( driveName );
             }
@@ -703,9 +752,12 @@
 QString FmUtils::fillDriveVolume( QString driveName, bool isFillWithDefaultVolume )
 {
     QString ret;
+    if( driveName.isEmpty() ) {
+        return ret;
+    }
     QString tempDriveName = fillPathWithSplash( driveName );
 
-    ret = removePathSplash( driveName );
+    QString checkedDriveName( removePathSplash( driveName ) );
     
     FmDriverInfo driverInfo = FmUtils::queryDriverInfo( tempDriveName );
     QString volumeName = driverInfo.volumeName();
@@ -715,25 +767,37 @@
         if( driveState & FmDriverInfo::EDriveAvailable ){
             if( driveState & FmDriverInfo::EDriveRemovable ) {
                 if( driveState & FmDriverInfo::EDriveMassStorage ) {
-                    volumeName.append( QObject::tr( "Mass Storage" ) );  
+                    // Mass Storage
+                    ret = hbTrId( "txt_fmgr_dblist_1_mass_storage" ).arg( checkedDriveName );  
                 } else if( driveState & FmDriverInfo::EDriveUsbMemory ) {
-                    volumeName.append( QObject::tr( "Usb Memory" ) );
+                    // USB Memory
+                    ret = hbTrId( "txt_fmgr_dblist_1_usb_memory" ).arg( checkedDriveName );
                 } else{
-                    volumeName.append( QObject::tr( "Memory Card" ) );
+                    // Memory Card
+                    ret = hbTrId( "txt_fmgr_dblist_1_memory_card" ).arg( checkedDriveName );
                 }
             } else{
-                volumeName.append( QObject::tr( "Phone Memory" ) );
+                // phone memory
+                ret = hbTrId( "txt_fmgr_dblist_1_device_memory" ).arg( checkedDriveName );
             }
-        }
+        }  
     }
-
-    ret += QString( " " ) + volumeName;
+    
+    if( ret.isEmpty() ) {
+        // set ret as volumeName
+        // txt_fmgr_dblist_1_2 is not correct, can not use.
+        ret = hbTrId( "%1 %2" ).arg( checkedDriveName ).arg( volumeName );
+    }
     return ret;
 }
 
 int FmUtils::launchFile( const QString &filePath )
 {
     QFile file( filePath );
+    if( !file.exists() ) {
+        return false;
+    }
+        
     XQApplicationManager mAiwMgr;
     XQAiwRequest *request = mAiwMgr.create(file);
     if ( request == 0 ) {
@@ -826,28 +890,33 @@
 
 QString FmUtils::formatPath( const QString &path  )
 {
-    QString formatPath = path;
-    QRegExp regExp( "/" );
-    formatPath.replace( regExp, "\\" );
-    
-    if( path.right( 1 )!= "\\"){
-        formatPath.append( "\\" );
+    QString formatPath;
+	foreach( QChar ch, path ) {
+		if( ch == QChar('\\') || ch == QChar('/') ) {
+			formatPath.append( QDir::separator() );
+		} else {
+			formatPath.append( ch );
+		}
+    }
+
+    if( formatPath.right( 1 ) != QDir::separator() ){
+        formatPath.append( QDir::separator() );
     }
     return formatPath;
 }
 
 int FmUtils::getMaxFileNameLength()
-    {
+{
     return KMaxFileName;
-    }
+}
 
 bool FmUtils::checkMaxPathLength( const QString& path )
-    {
+{
     if( path.length() > KMaxPath ) {
         return false;
     }
     return true;
-    }
+}
 bool FmUtils::checkFolderFileName( const QString& name )
 {
     if( name.endsWith( QChar('.'),  Qt::CaseInsensitive ) ) {
@@ -869,3 +938,20 @@
     }
     return true;
 }
+
+bool FmUtils::checkNewFolderOrFile( const QString &path, QString &errString )
+{
+    QFileInfo fileInfo( path );
+    bool ret( true );   
+    if (!FmUtils::checkFolderFileName( fileInfo.fileName() ) ) {
+        errString = hbTrId( "Invalid file or folder name!" );
+        ret = false;
+    } else if( !FmUtils::checkMaxPathLength( path ) ) {
+        errString = hbTrId( "the path you specified is too long!" );
+        ret = false;
+    } else if (fileInfo.exists()) {
+        errString = hbTrId( "%1 already exist!" ).arg( fileInfo.fileName() );
+        ret = false;
+    }
+    return ret;
+}
--- a/filemanager/src/inc/fmutils_win.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/src/inc/fmutils_win.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -25,7 +25,11 @@
 #include <QUrl>
 #include <QVariant>
 
+#include <hbglobal.h>
+
 #define BURCONFIGFILE  "burconfig.xml"
+const int KMaxFileName=0x100;
+const int KMaxPath=0x100;
 
 QString FmUtils::getDriveNameFromPath( const QString &path )
 {
@@ -73,6 +77,21 @@
     if ( drvStatus == DRIVE_REMOVABLE  ) {
         state |= FmDriverInfo::EDriveRemovable;
     }
+#ifdef _DEBUG_DISABLE_DRIVE_D_TEST_DRIVEHIDE_
+	if ( driverName.contains( Drive_D, Qt::CaseInsensitive )  ) {
+		state |= FmDriverInfo::EDriveNotPresent;
+    }
+#endif
+
+#ifdef _DEBUG_LOCKED_DRIVE_Z
+	if ( driverName.contains( Drive_Z, Qt::CaseInsensitive )  ) {
+		state |= FmDriverInfo::EDriveLocked;
+    }
+#endif
+	if( !(state&FmDriverInfo::EDriveNotPresent) && !(state&FmDriverInfo::EDriveLocked) &&
+		!(state&FmDriverInfo::EDriveCorrupted) ) {
+		state |= FmDriverInfo::EDriveAvailable;
+	}
     return FmDriverInfo( size, freeSize, driverName, QString::fromWCharArray( &volumeName[0] ), state );
 }
 
@@ -88,6 +107,7 @@
 	    return QString::number( size / ( 1024.0 * 1024.0 * 1024.0 ), 'f', 1 ) + " GB";	    
 	}
 }
+
 /*
 quint32 FmUtils::getDriverState( const QString &driverName )
 {
@@ -158,9 +178,10 @@
     return 0;
 }
 
-void FmUtils::ejectDrive( const QString &driverName )
+int FmUtils::ejectDrive( const QString &driverName )
 {
     Q_UNUSED( driverName );
+	return FmErrNone; 
 }
 
 QString FmUtils::getFileType( const QString &filePath  )
@@ -178,8 +199,12 @@
 
 bool FmUtils::isDriveC( const QString &driverName )
 {
-    Q_UNUSED( driverName );
-    return false;
+	if( driverName.contains(Drive_C,Qt::CaseInsensitive) ){
+        return true;
+    }
+    else{
+        return false;
+    }
 }
 
 bool FmUtils::isDrive( const QString &path )
@@ -199,14 +224,23 @@
 
 QString FmUtils::fillPathWithSplash( const QString &filePath )
 {
-    QString newFilePath( filePath );
+	QString newFilePath;
     if( filePath.isEmpty() ) {
         return newFilePath;
     }
 
-    if( filePath.at( filePath.length()-1 ) != QChar( '/' ) ){
-        newFilePath.append( QChar( '/' ) );
+    foreach( QChar ch, filePath ) {
+        if( ch == QChar('\\') || ch == QChar('/') ) {
+			newFilePath.append( QDir::separator() );
+        } else {
+            newFilePath.append( ch );
+        }
     }
+    
+    if( newFilePath.right( 1 )!= QDir::separator() ){
+        newFilePath.append( QDir::separator() );
+    }
+    
     return newFilePath;
 }
 
@@ -219,10 +253,10 @@
     return newFilePath;
 }
 
-bool FmUtils::checkDriveFilter( const QString &driveName )
+bool FmUtils::checkDriveAccessFilter( const QString &driveName )
 {
 #ifdef _DEBUG_HIDE_VIEWFOLDER_WINDOWS_
-    if( driveName.contains( "D:" ) || driveName.contains( "Z:" ) ) {
+    if( driveName.contains( Drive_D, Qt::CaseInsensitive ) || driveName.contains( Drive_Z, Qt::CaseInsensitive ) ) {
         return false;
     }
 #endif
@@ -271,12 +305,12 @@
 
 }
 
-bool FmUtils::isPathAccessabel( const QString &path )
+int FmUtils::isPathAccessabel( const QString &path )
 {
-#ifdef _DEBUG_DISABLE_DRIVE_D_TEST_DRIVEHIDE_
-    if(path.contains("D:"))
-        return false;
-#endif
+    if(!isDriveAvailable( path ) ) { //used to filter locked drive
+        return FmErrDriveNotAvailable;
+    }
+
     QFileInfo fileInfo( path );
 
 #ifdef _DEBUG_HIDE_VIEWFOLDER_WINDOWS_
@@ -292,18 +326,22 @@
     }
 #endif
     if( !fileInfo.exists() ) {
-        return false;
+        return FmErrPathNotExist;
     }
-    return true;
+    return FmErrNone;
 }
 
 bool FmUtils::isDriveAvailable( const QString &path )
 {
-    QFileInfo fileInfo( path );
-    if( !fileInfo.exists() ) {
-        return false;
-    }
-    return true;
+#ifdef _DEBUG_DISABLE_DRIVE_D_TEST_DRIVEHIDE_
+	if(path.contains(Drive_D, Qt::CaseInsensitive))
+		return false;
+#endif
+#ifdef _DEBUG_LOCKED_DRIVE_Z
+	if(path.contains(Drive_Z, Qt::CaseInsensitive))
+		return false;
+#endif
+	return true;
 }
 
 void FmUtils::getDriveList( QStringList &driveList, bool isHideUnAvailableDrive )
@@ -312,7 +350,7 @@
 
     foreach( QFileInfo fileInfo, infoList ) {
         QString driveName = fileInfo.absolutePath();
-        if( checkDriveFilter( driveName ) ) {
+        if( checkDriveAccessFilter( driveName ) ) {
             if( !isHideUnAvailableDrive ) {
                 driveList.append( driveName );
             }
@@ -329,29 +367,33 @@
     QString ret;
     QString tempDriveName = fillPathWithSplash( driveName );
 
-    ret = removePathSplash( driveName );
+    QString checkedDriveName( removePathSplash( driveName ) );
     
     FmDriverInfo driverInfo = FmUtils::queryDriverInfo( tempDriveName );
     QString volumeName = driverInfo.volumeName();
 
     if( volumeName.isEmpty() && isFillWithDefaultVolume ){
-        FmDriverInfo::DriveState driveState = FmUtils::queryDriverInfo( tempDriveName ).FmDriverInfo::driveState();
-        if( !( driveState & FmDriverInfo::EDriveNotPresent ) ){
+    FmDriverInfo::DriveState driveState = queryDriverInfo( tempDriveName ).driveState();
+        if( driveState & FmDriverInfo::EDriveAvailable ){
             if( driveState & FmDriverInfo::EDriveRemovable ) {
                 if( driveState & FmDriverInfo::EDriveMassStorage ) {
-                    volumeName.append( QObject::tr( "Mass Storage" ) );  
+                    // Mass Storage
+                    ret = hbTrId( "txt_fmgr_dblist_1_mass_storage" ).arg( checkedDriveName );  
+                } else if( driveState & FmDriverInfo::EDriveUsbMemory ) {
+                    // USB Memory
+                    ret = hbTrId( "txt_fmgr_dblist_1_usb_memory" ).arg( checkedDriveName );
+                } else{
+                    // Memory Card
+                    ret = hbTrId( "txt_fmgr_dblist_1_memory_card" ).arg( checkedDriveName );
                 }
-                else{
-                    volumeName.append( QObject::tr( "Memory Card" ) );
-                }
-            }
-            else{
-                volumeName.append( QObject::tr( "Phone Memory" ) );
+            } else{
+				// phone memory
+				ret = hbTrId( "txt_fmgr_dblist_1_device_memory" ).arg( checkedDriveName );
             }
         }
+    } else {
+        ret = hbTrId( "txt_fmgr_dblist_1_2" ).arg( checkedDriveName ).arg( volumeName );
     }
-
-    ret += QString( " " ) + volumeName;
     return ret;
 }
 
@@ -397,6 +439,68 @@
 
 QString FmUtils::formatPath( const QString &path  )
 {
-    Q_UNUSED( path );
-    return false;
+    QString formatPath;
+	foreach( QChar ch, path ) {
+		if( ch == QChar('\\') || ch == QChar('/') ) {
+			formatPath.append( QDir::separator() );
+		} else {
+			formatPath.append( ch );
+		}
+    }
+
+    if( formatPath.right( 1 ) != QDir::separator() ){
+        formatPath.append( QDir::separator() );
+    }
+    return formatPath;
+}
+
+int FmUtils::getMaxFileNameLength()
+{
+	return KMaxFileName;
+}
+
+bool FmUtils::checkMaxPathLength( const QString& path )
+{
+	if( path.length() > KMaxPath ) {
+		return false;
+	}
+	return true;
 }
+bool FmUtils::checkFolderFileName( const QString& name )
+{
+    if( name.endsWith( QChar('.'),  Qt::CaseInsensitive ) ) {
+        return false;
+    }
+    if( name.contains( QChar('\\'), Qt::CaseInsensitive ) ||
+        name.contains( QChar('/'),  Qt::CaseInsensitive ) ||
+        name.contains( QChar(':'),  Qt::CaseInsensitive ) ||
+        name.contains( QChar('*'),  Qt::CaseInsensitive ) ||
+        name.contains( QChar('?'),  Qt::CaseInsensitive ) ||
+        name.contains( QChar('\"'), Qt::CaseInsensitive ) ||
+        name.contains( QChar('<'),  Qt::CaseInsensitive ) ||
+        name.contains( QChar('>'),  Qt::CaseInsensitive ) ||
+        name.contains( QChar('|'),  Qt::CaseInsensitive ) ){
+        return false;
+    }
+    if( name.length() > KMaxFileName ) {
+        return false;
+    }
+    return true;
+}
+
+bool FmUtils::checkNewFolderOrFile( const QString &path, QString &errString )
+{
+    QFileInfo fileInfo( path );
+    bool ret( true );   
+    if (!FmUtils::checkFolderFileName( fileInfo.fileName() ) ) {
+        errString = hbTrId( "Invalid file or folder name, try again!" );
+        ret = false;
+    } else if( !FmUtils::checkMaxPathLength( path ) ) {
+        errString = hbTrId( "the path you specified is too long, try again!" );
+        ret = false;
+    } else if (fileInfo.exists()) {
+        errString = hbTrId( "%1 already exist!" ).arg( fileInfo.fileName() );
+        ret = false;
+    }
+    return ret;
+}
--- a/filemanager/tsrc/unit/unit_backuprestoresettings/src/unit_backuprestoresettings.cpp	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/tsrc/unit/unit_backuprestoresettings/src/unit_backuprestoresettings.cpp	Thu Jul 22 16:30:56 2010 +0100
@@ -22,11 +22,18 @@
 #include "fmbkupengine.h"
 #include <QStringList>
 
+#include <hbglobal.h>
+#include <QTranslator>
+#include <QLocale>
+
 class TestSettings: public QObject
 {
     Q_OBJECT
 
 private slots:
+	// init test strings those are used to verify string fetch feature of FmBackupSettings.
+	void initTestCase();
+
     void testTestSettingsContentAll();
     void testTestSettingsContentOne();
     void testTestSettingsContentTwo();
@@ -48,9 +55,71 @@
     void cleanupTestCase();       // Finalize test data
 
 private:
-      FmBackupSettings *settings;
+    FmBackupSettings *settings;
+	QString mFileManagerBackupWeekdayMonday;
+	QString mFileManagerBackupWeekdayTuesday;
+	QString mFileManagerBackupWeekdayWednesday;
+	QString mFileManagerBackupWeekdayThursday;
+	QString mFileManagerBackupWeekdayFirday;
+	QString mFileManagerBackupWeekdaySaturday;
+	QString mFileManagerBackupWeekdaySunday;
+
+	QString mFileManagerBackupScheduleNever;
+	QString mFileManagerBackupScheduleDaily;
+	QString mFileManagerBackupScheduleWeekly;
+
+	QString mFileManagerBackupSettingsTitleContents;
+	QString mFileManagerBackupSettingsTitleScheduling;
+	QString mFileManagerBackupSettingsTitleWeekday;
+	QString mFileManagerBackupSettingsTitleTime;
+	QString mFileManagerBackupSettingsTitleTargetDrive;
+
+	QString mFileManagerBackupSettingsContentAll;
+	QString mFileManagerBackupSettingsContentSettings;
+	QString mFileManagerBackupSettingsContentMessages;
+	QString mFileManagerBackupSettingsContentContacts;
+	QString mFileManagerBackupSettingsContentCalendar;
+	QString mFileManagerBackupSettingsContentBookmarks;
+	QString mFileManagerBackupSettingsContentUserFiles;
 };
 
+void TestSettings::initTestCase()
+{
+	// install translator
+	QTranslator translator;
+    QString lang = QLocale::system().name(); 
+    QString path = "z:/resource/qt/translations/"; 
+    translator.load( path + "filemanager_" + lang );
+    QCoreApplication::installTranslator(&translator);
+
+	// init localized string
+	mFileManagerBackupWeekdayMonday = hbTrId( "Monday" );
+	mFileManagerBackupWeekdayTuesday = hbTrId( "Tuesday" );
+	mFileManagerBackupWeekdayWednesday = hbTrId( "Wednesday" );
+	mFileManagerBackupWeekdayThursday = hbTrId( "Thursday" );
+	mFileManagerBackupWeekdayFirday = hbTrId( "Friday" );
+	mFileManagerBackupWeekdaySaturday = hbTrId( "Saturday" );
+	mFileManagerBackupWeekdaySunday = hbTrId( "Sunday" );
+
+	mFileManagerBackupScheduleNever = hbTrId( "Never" );
+	mFileManagerBackupScheduleDaily = hbTrId( "Daily" );
+	mFileManagerBackupScheduleWeekly = hbTrId( "Weekly" );
+
+	mFileManagerBackupSettingsTitleContents = hbTrId( "Backup Contents" );
+	mFileManagerBackupSettingsTitleScheduling = hbTrId( "Backup scheduling" );
+	mFileManagerBackupSettingsTitleWeekday = hbTrId( "Weekday" );
+	mFileManagerBackupSettingsTitleTime = hbTrId( "Time" );
+	mFileManagerBackupSettingsTitleTargetDrive = hbTrId( "Backup destination" );
+
+	mFileManagerBackupSettingsContentAll = hbTrId( "All" );
+	mFileManagerBackupSettingsContentSettings = hbTrId( "Settings" );
+	mFileManagerBackupSettingsContentMessages = hbTrId( "Messages" );
+	mFileManagerBackupSettingsContentContacts = hbTrId( "Contacts" );
+	mFileManagerBackupSettingsContentCalendar = hbTrId( "Calendar" );
+	mFileManagerBackupSettingsContentBookmarks = hbTrId( "Bookmarks" );
+	mFileManagerBackupSettingsContentUserFiles = hbTrId( "Files" );
+}
+
 void TestSettings::cleanupTestCase()
 {
     QCoreApplication::processEvents();
@@ -89,27 +158,27 @@
         {
         case FmBackupEntry::EContents:
             {
-            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleContents );
+            QVERIFY( entry->title() == mFileManagerBackupSettingsTitleContents );
             break;
             }
         case FmBackupEntry::EScheduling:
             {
-            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleScheduling );
+            QVERIFY( entry->title() == mFileManagerBackupSettingsTitleScheduling );
             break;
             }
         case FmBackupEntry::EWeekday:
             {
-            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleWeekday );
+            QVERIFY( entry->title() == mFileManagerBackupSettingsTitleWeekday );
             break;
             }
         case FmBackupEntry::ETime:
             {
-            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleTime );
+            QVERIFY( entry->title() == mFileManagerBackupSettingsTitleTime );
             break;
             }
         case FmBackupEntry::ETarget:
             {
-            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleTargetDrive );
+            QVERIFY( entry->title() == mFileManagerBackupSettingsTitleTargetDrive );
             break;
             }
 
@@ -188,13 +257,13 @@
     QTest::addColumn<quint32>("param");
     QTest::addColumn<QString>("value");
 
-    QTest::newRow("contentToString_0") << (quint32)FmBackupSettings::EFileManagerBackupContentAll << constFileManagerBackupSettingsContentAll;
-    QTest::newRow("contentToString_1") << (quint32)FmBackupSettings::EFileManagerBackupContentSettings << constFileManagerBackupSettingsContentSettings;
-    QTest::newRow("contentToString_2") << (quint32)FmBackupSettings::EFileManagerBackupContentMessages << constFileManagerBackupSettingsContentMessages;
-    QTest::newRow("contentToString_3") << (quint32)FmBackupSettings::EFileManagerBackupContentContacts << constFileManagerBackupSettingsContentContacts;
-    QTest::newRow("contentToString_4") << (quint32)FmBackupSettings::EFileManagerBackupContentCalendar << constFileManagerBackupSettingsContentCalendar;
-    QTest::newRow("contentToString_5") << (quint32)FmBackupSettings::EFileManagerBackupContentBookmarks << constFileManagerBackupSettingsContentBookmarks;
-    QTest::newRow("contentToString_6") << (quint32)FmBackupSettings::EFileManagerBackupContentUserFiles << constFileManagerBackupSettingsContentUserFiles;
+    QTest::newRow("contentToString_0") << (quint32)FmBackupSettings::EFileManagerBackupContentAll << mFileManagerBackupSettingsContentAll;
+    QTest::newRow("contentToString_1") << (quint32)FmBackupSettings::EFileManagerBackupContentSettings << mFileManagerBackupSettingsContentSettings;
+    QTest::newRow("contentToString_2") << (quint32)FmBackupSettings::EFileManagerBackupContentMessages << mFileManagerBackupSettingsContentMessages;
+    QTest::newRow("contentToString_3") << (quint32)FmBackupSettings::EFileManagerBackupContentContacts << mFileManagerBackupSettingsContentContacts;
+    QTest::newRow("contentToString_4") << (quint32)FmBackupSettings::EFileManagerBackupContentCalendar << mFileManagerBackupSettingsContentCalendar;
+    QTest::newRow("contentToString_5") << (quint32)FmBackupSettings::EFileManagerBackupContentBookmarks << mFileManagerBackupSettingsContentBookmarks;
+    QTest::newRow("contentToString_6") << (quint32)FmBackupSettings::EFileManagerBackupContentUserFiles << mFileManagerBackupSettingsContentUserFiles;
 }
 
 void TestSettings::testSchedulingToString()
@@ -211,9 +280,9 @@
     QTest::addColumn<int>("param");
     QTest::addColumn<QString>("value");
 
-    QTest::newRow("schedulingToString_0") << (int)FmBackupSettings::EFileManagerBackupScheduleNever << constFileManagerBackupScheduleNever;
-    QTest::newRow("schedulingToString_1") << (int)FmBackupSettings::EFileManagerBackupScheduleDaily << constFileManagerBackupScheduleDaily;
-    QTest::newRow("schedulingToString_2") << (int)FmBackupSettings::EFileManagerBackupScheduleWeekly << constFileManagerBackupScheduleWeekly;
+    QTest::newRow("schedulingToString_0") << (int)FmBackupSettings::EFileManagerBackupScheduleNever << mFileManagerBackupScheduleNever;
+    QTest::newRow("schedulingToString_1") << (int)FmBackupSettings::EFileManagerBackupScheduleDaily << mFileManagerBackupScheduleDaily;
+    QTest::newRow("schedulingToString_2") << (int)FmBackupSettings::EFileManagerBackupScheduleWeekly << mFileManagerBackupScheduleWeekly;
 }
 
 void TestSettings::testWeekdayToString()
@@ -230,13 +299,13 @@
     QTest::addColumn<int>("param");
     QTest::addColumn<QString>("value");
 
-    QTest::newRow("weekdayToString_0") << (int)FmBackupSettings::EFileManagerBackupWeekdayMonday << constFileManagerBackupWeekdayMonday;
-    QTest::newRow("weekdayToString_1") << (int)FmBackupSettings::EFileManagerBackupWeekdayTuesday << constFileManagerBackupWeekdayTuesday;
-    QTest::newRow("weekdayToString_2") << (int)FmBackupSettings::EFileManagerBackupWeekdayWednesday << constFileManagerBackupWeekdayWednesday;
-    QTest::newRow("weekdayToString_3") << (int)FmBackupSettings::EFileManagerBackupWeekdayThursday << constFileManagerBackupWeekdayThursday;
-    QTest::newRow("weekdayToString_4") << (int)FmBackupSettings::EFileManagerBackupWeekdayFriday << constFileManagerBackupWeekdayFirday;
-    QTest::newRow("weekdayToString_5") << (int)FmBackupSettings::EFileManagerBackupWeekdaySaturday << constFileManagerBackupWeekdaySaturday;
-    QTest::newRow("weekdayToString_6") << (int)FmBackupSettings::EFileManagerBackupWeekdaySunday << constFileManagerBackupWeekdaySunday;
+    QTest::newRow("weekdayToString_0") << (int)FmBackupSettings::EFileManagerBackupWeekdayMonday << mFileManagerBackupWeekdayMonday;
+    QTest::newRow("weekdayToString_1") << (int)FmBackupSettings::EFileManagerBackupWeekdayTuesday << mFileManagerBackupWeekdayTuesday;
+    QTest::newRow("weekdayToString_2") << (int)FmBackupSettings::EFileManagerBackupWeekdayWednesday << mFileManagerBackupWeekdayWednesday;
+    QTest::newRow("weekdayToString_3") << (int)FmBackupSettings::EFileManagerBackupWeekdayThursday << mFileManagerBackupWeekdayThursday;
+    QTest::newRow("weekdayToString_4") << (int)FmBackupSettings::EFileManagerBackupWeekdayFriday << mFileManagerBackupWeekdayFirday;
+    QTest::newRow("weekdayToString_5") << (int)FmBackupSettings::EFileManagerBackupWeekdaySaturday << mFileManagerBackupWeekdaySaturday;
+    QTest::newRow("weekdayToString_6") << (int)FmBackupSettings::EFileManagerBackupWeekdaySunday << mFileManagerBackupWeekdaySunday;
 }
 
 
--- a/filemanager/tsrc/unit/unit_backuprestoresettings/unit_backuprestoresettings.pro	Fri Jun 11 16:23:39 2010 +0100
+++ b/filemanager/tsrc/unit/unit_backuprestoresettings/unit_backuprestoresettings.pro	Thu Jul 22 16:30:56 2010 +0100
@@ -16,12 +16,16 @@
 
 QT += testlib
 CONFIG += qtestlib
+CONFIG += symbian_test
+CONFIG += hb
 TEMPLATE = app
 TARGET = 
 include ( ../../../src/inc/commoninc.pri )
+include ( ../../../src/common.pri )
 DEPENDPATH += .
 INCLUDEPATH += .
 INCLUDEPATH += ../../../src/fmbkupenginewrapper/inc
+INCLUDEPATH += ../../../src/inc
 TARGET.CAPABILITY = ALL -TCB
 # Input
 SOURCES += src/unit_backuprestoresettings.cpp