Revision: 201017
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 14 May 2010 15:42:43 +0300
changeset 18 edd66bde63a4
parent 16 ada7962b4308
child 21 15299bc55001
child 22 b9588eb601eb
Revision: 201017 Kit: 201019
filemanager/examples/demo_fmfiledialog/demo_fmfiledialog.iby
filemanager/examples/demo_fmfiledialog/demo_fmfiledialog.pro
filemanager/examples/demo_fmfiledialog/main.cpp
filemanager/examples/demo_fmfiledialog/mainwindow.cpp
filemanager/examples/demo_fmfiledialog/mainwindow.h
filemanager/examples/demo_fmfiledialog/rom.pri
filemanager/examples/examples.pro
filemanager/filemanager.pro
filemanager/filemanager_plat/inc/fmfiledialog.h
filemanager/src/bwins/fmbkupenginewrapperu.def
filemanager/src/bwins/fmfiledialogu.def
filemanager/src/eabi/fmbkupenginewrapperu.def
filemanager/src/eabi/fmfiledialogu.def
filemanager/src/filemanager/burconfig.xml
filemanager/src/filemanager/filemanager.pri
filemanager/src/filemanager/filemanager.pro
filemanager/src/filemanager/src/backuprestore/fmbackuprestorehandler.cpp
filemanager/src/filemanager/src/backuprestore/fmbackupview.cpp
filemanager/src/filemanager/src/backuprestore/fmbackupview.h
filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp
filemanager/src/filemanager/src/backuprestore/fmbackupwidget.h
filemanager/src/filemanager/src/backuprestore/fmdeletebackupview.cpp
filemanager/src/filemanager/src/components/fmcombinedquery.cpp
filemanager/src/filemanager/src/components/fmcombinedquery.h
filemanager/src/filemanager/src/components/fmdialog.cpp
filemanager/src/filemanager/src/components/fmdialog.h
filemanager/src/filemanager/src/components/fmdlgutils.cpp
filemanager/src/filemanager/src/components/fmdlgutils.h
filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp
filemanager/src/filemanager/src/components/fmmessagebox.cpp
filemanager/src/filemanager/src/components/fmmessagebox.h
filemanager/src/filemanager/src/components/fmmultitextquery.cpp
filemanager/src/filemanager/src/components/fmmultitextquery.h
filemanager/src/filemanager/src/components/fmsingletextquery.cpp
filemanager/src/filemanager/src/components/fmsingletextquery.h
filemanager/src/filemanager/src/components/fmtimequery.cpp
filemanager/src/filemanager/src/components/fmtimequery.h
filemanager/src/filemanager/src/components/fmviewdetailsdialog.cpp
filemanager/src/filemanager/src/components/fmviewdetailsdialog.h
filemanager/src/filemanager/src/fmdriverlistwidget.cpp
filemanager/src/filemanager/src/fmdriverlistwidget.h
filemanager/src/filemanager/src/fmdriverview.cpp
filemanager/src/filemanager/src/fmfilebrowsewidget.cpp
filemanager/src/filemanager/src/fmfilebrowsewidget.h
filemanager/src/filemanager/src/fmfileview.cpp
filemanager/src/filemanager/src/fmfindview.cpp
filemanager/src/filemanager/src/fmmainwindow.cpp
filemanager/src/filemanager/src/fmmainwindow.h
filemanager/src/filemanager/src/fmsplitview.cpp
filemanager/src/filemanager/src/fmviewmanager.cpp
filemanager/src/filemanager/src/fmviewmanager.h
filemanager/src/filemanager/src/listviewitems.cpp
filemanager/src/filemanager/src/listviewitems.h
filemanager/src/filemanager/src/main.cpp
filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.cpp
filemanager/src/fmbkupenginewrapper/inc/fmbackupsettings.h
filemanager/src/fmbkupenginewrapper/inc/fmbkupengine.h
filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp
filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.h
filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.cpp
filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.h
filemanager/src/fmbkupenginewrapper/src/fmbackupsettings.cpp
filemanager/src/fmbkupenginewrapper/src/fmbkupengine.cpp
filemanager/src/fmbkupenginewrapper/src/fmrestoresettings.cpp
filemanager/src/fmfiledialog/fmfiledialog.pro
filemanager/src/fmfiledialog/src/fmfiledialog.cpp
filemanager/src/fmfiledialog/src/fmfiledialog_p.cpp
filemanager/src/fmfiledialog/src/fmfiledialog_p.h
filemanager/src/fmfiledialog/src/fmfilewidget.cpp
filemanager/src/fmfiledialog/src/fmfilewidget.h
filemanager/src/inc/commonutils.pri
filemanager/src/inc/fmdefine.h
filemanager/src/inc/fmfileiconprovider.cpp
filemanager/src/inc/fmlogger.h
filemanager/src/inc/fmutils.h
filemanager/src/inc/fmutils_s60.cpp
filemanager/src/inc/fmutils_win.cpp
filemanager/tsrc/tsrc.pro
filemanager/tsrc/unit/unit_backuprestoresettings/runtest.bat
filemanager/tsrc/unit/unit_backuprestoresettings/src/unit_backuprestoresettings.cpp
filemanager/tsrc/unit/unit_backuprestoresettings/unit_backuprestoresettings.pro
layers.sysdef.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/examples/demo_fmfiledialog/demo_fmfiledialog.iby	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* 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: 
+*
+*/
+
+#ifndef __FMFILEDIALOG_IBY__
+#define __FMFILEDIALOG_IBY__
+
+#include <bldprivate.hrh>
+
+#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\demo_fmfiledialog.exe                   SHARED_LIB_DIR\demo_fmfiledialog.exe
+HB_UPGRADABLE_APP_REG_RSC(demo_fmfiledialog)
+S60_APP_RESOURCE(demo_fmfiledialog)
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/examples/demo_fmfiledialog/demo_fmfiledialog.pro	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,31 @@
+# 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:
+#     
+# 
+
+CONFIG      += hb
+TEMPLATE = app
+TARGET = 
+DEPENDPATH += .
+INCLUDEPATH += .
+symbian {
+    include(rom.pri)
+}
+
+# Input
+HEADERS += mainwindow.h
+SOURCES += main.cpp mainwindow.cpp
+
+LIBS += -lfmfiledialog
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/examples/demo_fmfiledialog/main.cpp	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* 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:
+*     
+*
+*/
+
+#include <hbapplication.h>
+#include <hbmainwindow.h>
+
+#include "mainwindow.h"
+int main( int argc, char *argv[] )
+{
+    HbApplication app( argc, argv );
+    app.setApplicationName( "filemanager" );
+
+    TestMainWindow *mainWindow = new TestMainWindow;
+    mainWindow->init();
+    mainWindow->show();
+    
+   
+    return app.exec();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/examples/demo_fmfiledialog/mainwindow.cpp	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,193 @@
+/*
+* 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:
+*     
+*
+*/
+
+#include "mainwindow.h"
+#include "fmfiledialog.h"
+#include "hbmessagebox.h"
+
+#define getDir "getExistingDirectory"
+#define getFile "getOpenFileName"
+#define saveFile "getSaveFileName"
+
+#define getDir_SetDir "getExistingDirectory_setDir"
+#define getFile_SetDir "getOpenFileName_setDir"
+#define saveFile_SetDir "getSaveFileName_setDir"
+
+#define getDir_SetFilter "getExistingDirectory_setFilter"
+#define getDir_SetFilter_AllDirs "getExistingDirectory_setFilter_AllDirs"
+#define getFile_SetFilter "getOpenFileName_setFilter"
+#define saveFile_SetFilter "getSaveFileName_setFilter"
+
+TestMainWindow::TestMainWindow()
+{
+}
+TestMainWindow::~TestMainWindow()
+{
+}
+
+void TestMainWindow::init()
+{
+    HbView *mainView = new HbView;
+    addView( mainView );
+
+    HbListWidget *listWidget = new HbListWidget( mainView );
+    mainView->setWidget( listWidget );
+
+    listWidget->addItem( getDir );
+    listWidget->addItem( getFile );
+    listWidget->addItem( saveFile );
+    listWidget->addItem( " " );
+    listWidget->addItem( getDir_SetDir );
+    listWidget->addItem( getFile_SetDir );
+    listWidget->addItem( saveFile_SetDir );
+    listWidget->addItem( " " );
+    listWidget->addItem( getDir_SetFilter );
+    listWidget->addItem( getDir_SetFilter_AllDirs );
+    listWidget->addItem( getFile_SetFilter );
+    listWidget->addItem( saveFile_SetFilter );
+    listWidget->addItem( " " );
+    listWidget->addItem( "placeHolderA" );
+    listWidget->addItem( "placeHolderB" );
+    listWidget->addItem( "placeHolderC" );
+    listWidget->addItem( "placeHolderD" );
+    listWidget->addItem( "placeHolderE" );
+    listWidget->addItem( "placeHolderF" );
+    listWidget->addItem( "placeHolderG" );
+    listWidget->addItem( "placeHolderH" );
+    listWidget->addItem( "placeHolderI" );
+    listWidget->addItem( "placeHolderJ" );
+    listWidget->addItem( "placeHolderK" );
+    listWidget->addItem( "placeHolderL" );
+    listWidget->addItem( "placeHolderM" );
+    listWidget->addItem( "placeHolderN" );
+    listWidget->addItem( "placeHolderO" );
+    listWidget->addItem( "placeHolderP" );
+    listWidget->addItem( "placeHolderQ" );
+    listWidget->addItem( "placeHolderR" );
+    listWidget->addItem( "placeHolderS" );
+    listWidget->addItem( "placeHolderT" );
+    listWidget->addItem( "placeHolderU" );
+    listWidget->addItem( "placeHolderV" );
+    listWidget->addItem( "placeHolderW" );
+    listWidget->addItem( "placeHolderX" );
+    listWidget->addItem( "placeHolderY" );
+    listWidget->addItem( "placeHolderZ" );
+
+    connect(listWidget, SIGNAL(activated(HbListWidgetItem*)), this,SLOT(activatedListItem(HbListWidgetItem*)) );
+}
+
+void TestMainWindow::activatedListItem(HbListWidgetItem *item)
+{
+    if( item->text().compare( getDir ) == 0 ) {
+        getExistingDirectory();
+    } else if( item->text().compare( getFile ) == 0 ) {
+        getOpenFileName();
+    } else if( item->text().compare( saveFile ) == 0 ) {
+       getSaveFileName();
+    } else if( item->text().compare( getDir_SetDir ) == 0 ) {
+        getExistingDirectory_SetDir();
+    } else if( item->text().compare( getFile_SetDir ) == 0 ) {
+       getOpenFileName_SetDir();
+    } else if( item->text().compare( saveFile_SetDir ) == 0 ) {
+        getSaveFileName_SetDir();
+    } else if( item->text().compare( getDir_SetFilter ) == 0 ) {
+        getExistingDirectory_SetFilter();
+    } else if( item->text().compare( getDir_SetFilter_AllDirs ) == 0 ) {
+        getExistingDirectory_SetFilter_AllDirs();
+    } else if( item->text().compare( getFile_SetFilter ) == 0 ) {
+        getOpenFileName_SetFilter();
+    } else if( item->text().compare( saveFile_SetFilter ) == 0 ) {
+       getSaveFileName_SetFilter();
+    }
+}
+
+void TestMainWindow::getExistingDirectory()
+{
+    // getExistingDirectory with default parameter.
+    QString path = FmFileDialog::getExistingDirectory();
+    HbMessageBox::information( path );
+}
+void TestMainWindow::getOpenFileName()
+{
+    // getOpenFileName with default parameter.
+    QString path = FmFileDialog::getOpenFileName();
+    HbMessageBox::information( path );
+}
+void TestMainWindow::getSaveFileName()
+{
+    // getSaveFileName with default parameter.
+    QString path = FmFileDialog::getSaveFileName();
+    HbMessageBox::information( path );
+}
+
+void TestMainWindow::getExistingDirectory_SetDir()
+{
+    // getExistingDirectory and set header & default Directory
+    QString path = FmFileDialog::getExistingDirectory( 0, "Look in:", "C:/Data/Images" );
+    HbMessageBox::information( path );
+}
+void TestMainWindow::getOpenFileName_SetDir()
+{
+    // getOpenFileName and set header & default Directory
+    QString path = FmFileDialog::getOpenFileName( 0, "Look in:", "C:/Data/Images" );
+    HbMessageBox::information( path );
+}
+void TestMainWindow::getSaveFileName_SetDir()
+{
+    // getSaveFileName and set header & default Directory
+    QString path = FmFileDialog::getSaveFileName( 0, "Look in:", "C:/Data/Images" );
+    HbMessageBox::information( path );
+}
+
+void TestMainWindow::getExistingDirectory_SetFilter()
+{
+    // getExistingDirectory and set folder&file filter
+    QStringList filterList;
+    filterList<<"*data*"<<"*image*"<<"*sound*";
+    QString path = FmFileDialog::getExistingDirectory( 0, "Look in:", "", filterList );
+    HbMessageBox::information( path );
+}
+
+void TestMainWindow::getExistingDirectory_SetFilter_AllDirs()
+{
+    // getExistingDirectory and set folder&file filter
+    QStringList filterList;
+    filterList<<"*data*"<<"*image*"<<"*sound*";
+    QString path = FmFileDialog::getExistingDirectory( 0, "Look in:", "", filterList, FmFileDialog::DisplayAllDirs );
+    HbMessageBox::information( path );
+}
+
+void TestMainWindow::getOpenFileName_SetFilter()
+{
+    // getOpenFileName and set file filter
+    //Set DisplayAllDirs to display all folders, otherwise folders will also be filted.
+    QStringList filterList;
+    filterList<<"*.jpg"<<"*.gif"<<"*.png";
+    QString path = FmFileDialog::getOpenFileName( 0, "Look in:", "", filterList, FmFileDialog::DisplayAllDirs );
+    HbMessageBox::information( path );
+}
+void TestMainWindow::getSaveFileName_SetFilter()
+{
+    // getSaveFileName and set file filter
+    //Set DisplayAllDirs to display all folders, otherwise folders will also be filted.
+    QStringList filterList;
+    filterList<<"*.jpg"<<"*.gif"<<"*.png";
+    QString path = FmFileDialog::getSaveFileName( 0, "Look in:", "", filterList, FmFileDialog::DisplayAllDirs );
+    HbMessageBox::information( path );
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/examples/demo_fmfiledialog/mainwindow.h	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* 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:
+*     
+*
+*/
+
+#include <hbdialog.h>
+#include <hblistwidget.h>
+
+#include <hbapplication.h>
+#include <hbmainwindow.h>
+#include <hbview.h>
+#include <hblabel.h>
+#include <hbaction.h>
+#include <hblistwidgetitem.h>
+
+#include <QGraphicsLinearLayout>
+
+
+class TestMainWindow : public HbMainWindow
+{
+    Q_OBJECT
+public:
+    TestMainWindow();
+    ~TestMainWindow();
+
+    void init();
+private slots:
+    void activatedListItem(HbListWidgetItem *item);
+
+private:
+    void getExistingDirectory();
+    void getOpenFileName();
+    void getSaveFileName();
+
+    void getExistingDirectory_SetDir();
+    void getOpenFileName_SetDir();
+    void getSaveFileName_SetDir();
+
+    void getExistingDirectory_SetFilter();
+    void getExistingDirectory_SetFilter_AllDirs();
+    void getOpenFileName_SetFilter();
+    void getSaveFileName_SetFilter();
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/examples/demo_fmfiledialog/rom.pri	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,28 @@
+# 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:
+#     Rom exports for demo_fmfiledialog
+# 
+
+symbian {
+    DEMO_FMFILEDIALOG_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 += "$$DEMO_FMFILEDIALOG_IBY_DIR/demo_fmfiledialog.iby CORE_APP_LAYER_IBY_EXPORT_PATH(demo_fmfiledialog.iby)"
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/examples/examples.pro	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,18 @@
+#
+# 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: 
+#
+
+TEMPLATE = subdirs
+SUBDIRS = demo_fmfiledialog
--- a/filemanager/filemanager.pro	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/filemanager.pro	Fri May 14 15:42:43 2010 +0300
@@ -21,5 +21,4 @@
 }
 
 SUBDIRS += src/fmbkupenginewrapper
-SUBDIRS += src/fmfiledialog
 SUBDIRS += src/filemanager
\ No newline at end of file
--- a/filemanager/filemanager_plat/inc/fmfiledialog.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/filemanager_plat/inc/fmfiledialog.h	Fri May 14 15:42:43 2010 +0300
@@ -96,7 +96,10 @@
                                     const QString &dir = QString(),
                                     const QStringList &nameFilters = QStringList(),
                                     Options options = 0 );
-                                   
+
+private slots:
+    void dialogClosed(HbAction *action);
+    
 private:
     explicit FmFileDialog( QGraphicsItem *parent );
     ~FmFileDialog();
--- a/filemanager/src/bwins/fmbkupenginewrapperu.def	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/bwins/fmbkupenginewrapperu.def	Fri May 14 15:42:43 2010 +0300
@@ -1,66 +1,69 @@
 EXPORTS
-	?cancelBackup@FmBkupEngine@@QAEXXZ @ 1 NONAME ; void FmBkupEngine::cancelBackup(void)
-	?notifyUpdate@FmBkupEngine@@IAEXH@Z @ 2 NONAME ; void FmBkupEngine::notifyUpdate(int)
-	?save@FmBackupSettings@@QAEXXZ @ 3 NONAME ; void FmBackupSettings::save(void)
-	??0FmRestoreSettings@@QAE@AAVFmBkupEngine@@@Z @ 4 NONAME ; FmRestoreSettings::FmRestoreSettings(class FmBkupEngine &)
-	?restoreEntryList@FmRestoreSettings@@QAE?AV?$QList@PAVFmRestoreEntry@@@@XZ @ 5 NONAME ; class QList<class FmRestoreEntry *> FmRestoreSettings::restoreEntryList(void)
-	??_EFmBkupEngine@@UAE@I@Z @ 6 NONAME ; FmBkupEngine::~FmBkupEngine(unsigned int)
-	?tr@FmBkupEngine@@SA?AVQString@@PBD0@Z @ 7 NONAME ; class QString FmBkupEngine::tr(char const *, char const *)
-	?getStaticMetaObject@FmBkupEngine@@SAABUQMetaObject@@XZ @ 8 NONAME ; struct QMetaObject const & FmBkupEngine::getStaticMetaObject(void)
-	?createTimeEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 9 NONAME ; class FmBackupEntry * FmBackupSettings::createTimeEntry(void)
-	?weekday@FmBackupSettings@@QBE?AW4TFileManagerBackupWeekday@1@XZ @ 10 NONAME ; enum FmBackupSettings::TFileManagerBackupWeekday FmBackupSettings::weekday(void) const
-	?trUtf8@FmBkupEngine@@SA?AVQString@@PBD0H@Z @ 11 NONAME ; class QString FmBkupEngine::trUtf8(char const *, char const *, int)
-	?deleteBackup@FmBkupEngine@@QAEHV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 12 NONAME ; int FmBkupEngine::deleteBackup(class QList<class FmBkupDrivesAndOperation *>)
-	??1FmBackupSettings@@QAE@XZ @ 13 NONAME ; FmBackupSettings::~FmBackupSettings(void)
-	?setTime@FmBackupSettings@@QAEXABVQTime@@@Z @ 14 NONAME ; void FmBackupSettings::setTime(class QTime const &)
-	?GetRestoreInfoArray@FmBkupEngine@@QAEXAAV?$QList@PAVFmBkupDrivesAndOperation@@@@AAV?$QList@VFmRestoreInfo@@@@H@Z @ 15 NONAME ; void FmBkupEngine::GetRestoreInfoArray(class QList<class FmBkupDrivesAndOperation *> &, class QList<class FmRestoreInfo> &, int)
-	?error@FmBkupEngine@@QBEHXZ @ 16 NONAME ; int FmBkupEngine::error(void) const
-	?backupEntryList@FmBackupSettings@@QAE?AV?$QList@PAVFmBackupEntry@@@@XZ @ 17 NONAME ; class QList<class FmBackupEntry *> FmBackupSettings::backupEntryList(void)
-	?trUtf8@FmBkupEngine@@SA?AVQString@@PBD0@Z @ 18 NONAME ; class QString FmBkupEngine::trUtf8(char const *, char const *)
-	?refreshList@FmBackupSettings@@AAEXXZ @ 19 NONAME ; void FmBackupSettings::refreshList(void)
-	?contentsSelected@FmBackupSettings@@ABEHXZ @ 20 NONAME ; int FmBackupSettings::contentsSelected(void) const
-	?GetSelectionL@FmRestoreSettings@@QBEXAAV?$QList@VFmRestoreInfo@@@@@Z @ 21 NONAME ; void FmRestoreSettings::GetSelectionL(class QList<class FmRestoreInfo> &) const
-	?CreateEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@ABVQString@@0W4TSettingType@2@@Z @ 22 NONAME ; class FmBackupEntry * FmBackupSettings::CreateEntry(class QString const &, class QString const &, enum FmBackupEntry::TSettingType)
-	?content@FmBackupSettings@@QBEIXZ @ 23 NONAME ; unsigned int FmBackupSettings::content(void) const
-	?targetDrive@FmBackupSettings@@QBE?AVQString@@XZ @ 24 NONAME ; class QString FmBackupSettings::targetDrive(void) const
-	?getBackupDriveList@FmBkupEngine@@QAEXAAVQStringList@@@Z @ 25 NONAME ; void FmBkupEngine::getBackupDriveList(class QStringList &)
-	??0FmBkupEngine@@QAE@PAVQObject@@@Z @ 26 NONAME ; FmBkupEngine::FmBkupEngine(class QObject *)
-	?notifyPreparing@FmBkupEngine@@IAEX_N@Z @ 27 NONAME ; void FmBkupEngine::notifyPreparing(bool)
-	?setWeekday@FmBackupSettings@@QAEXW4TFileManagerBackupWeekday@1@@Z @ 28 NONAME ; void FmBackupSettings::setWeekday(enum FmBackupSettings::TFileManagerBackupWeekday)
-	?load@FmRestoreSettings@@QAEXV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 29 NONAME ; void FmRestoreSettings::load(class QList<class FmBkupDrivesAndOperation *>)
-	?resetAndDestoryRestoreEntry@FmRestoreSettings@@AAEXXZ @ 30 NONAME ; void FmRestoreSettings::resetAndDestoryRestoreEntry(void)
-	?targetDriveToString@FmBackupSettings@@QAE?AVQString@@ABV2@@Z @ 31 NONAME ; class QString FmBackupSettings::targetDriveToString(class QString const &)
-	?setScheduling@FmBackupSettings@@QAEXW4TFileManagerBackupSchedule@1@@Z @ 32 NONAME ; void FmBackupSettings::setScheduling(enum FmBackupSettings::TFileManagerBackupSchedule)
-	??1FmRestoreSettings@@QAE@XZ @ 33 NONAME ; FmRestoreSettings::~FmRestoreSettings(void)
-	?notifyFinish@FmBkupEngine@@IAEXH@Z @ 34 NONAME ; void FmBkupEngine::notifyFinish(int)
-	?createContentsEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 35 NONAME ; class FmBackupEntry * FmBackupSettings::createContentsEntry(void)
-	?qt_metacast@FmBkupEngine@@UAEPAXPBD@Z @ 36 NONAME ; void * FmBkupEngine::qt_metacast(char const *)
-	??0FmBackupSettings@@QAE@PAVFmBkupEngine@@@Z @ 37 NONAME ; FmBackupSettings::FmBackupSettings(class FmBkupEngine *)
-	?SetSelection@FmRestoreSettings@@QAEXAB_K@Z @ 38 NONAME ; void FmRestoreSettings::SetSelection(unsigned long long const &)
-	?createSchedulingEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 39 NONAME ; class FmBackupEntry * FmBackupSettings::createSchedulingEntry(void)
-	?metaObject@FmBkupEngine@@UBEPBUQMetaObject@@XZ @ 40 NONAME ; struct QMetaObject const * FmBkupEngine::metaObject(void) const
-	?startBackup@FmBkupEngine@@QAE_NV?$QList@PAVFmBkupDrivesAndOperation@@@@V?$QList@PAVFmBkupBackupCategory@@@@VQString@@I@Z @ 41 NONAME ; bool FmBkupEngine::startBackup(class QList<class FmBkupDrivesAndOperation *>, class QList<class FmBkupBackupCategory *>, class QString, unsigned int)
-	?createTargetDriveEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 42 NONAME ; class FmBackupEntry * FmBackupSettings::createTargetDriveEntry(void)
-	?load@FmBackupSettings@@QAEXXZ @ 43 NONAME ; void FmBackupSettings::load(void)
-	?notifyMemoryLow@FmBkupEngine@@IAEXHAAH@Z @ 44 NONAME ; void FmBkupEngine::notifyMemoryLow(int, int &)
-	??1FmBkupEngine@@UAE@XZ @ 45 NONAME ; FmBkupEngine::~FmBkupEngine(void)
-	?CreateEntry@FmRestoreSettings@@AAEPAVFmRestoreEntry@@ABVFmRestoreInfo@@@Z @ 46 NONAME ; class FmRestoreEntry * FmRestoreSettings::CreateEntry(class FmRestoreInfo const &)
-	?startRestore@FmBkupEngine@@QAE_NV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 47 NONAME ; bool FmBkupEngine::startRestore(class QList<class FmBkupDrivesAndOperation *>)
-	?resetAndDestoryBackupEntry@FmBackupSettings@@AAEXXZ @ 48 NONAME ; void FmBackupSettings::resetAndDestoryBackupEntry(void)
-	?BackupSettingsL@FmBkupEngine@@QAEPAVFmBackupSettings@@XZ @ 49 NONAME ; class FmBackupSettings * FmBkupEngine::BackupSettingsL(void)
-	?setContent@FmBackupSettings@@QAEXI@Z @ 50 NONAME ; void FmBackupSettings::setContent(unsigned int)
-	?staticMetaObject@FmBkupEngine@@2UQMetaObject@@B @ 51 NONAME ; struct QMetaObject const FmBkupEngine::staticMetaObject
-	?setTargetDrive@FmBackupSettings@@QAEXABVQString@@@Z @ 52 NONAME ; void FmBackupSettings::setTargetDrive(class QString const &)
-	?schedulingToString@FmBackupSettings@@QAE?AVQString@@W4TFileManagerBackupSchedule@1@@Z @ 53 NONAME ; class QString FmBackupSettings::schedulingToString(enum FmBackupSettings::TFileManagerBackupSchedule)
-	?refreshList@FmRestoreSettings@@AAEXAAV?$QList@PAVFmBkupDrivesAndOperation@@@@@Z @ 54 NONAME ; void FmRestoreSettings::refreshList(class QList<class FmBkupDrivesAndOperation *> &)
-	?weekdayToString@FmBackupSettings@@SA?AVQString@@W4TFileManagerBackupWeekday@1@@Z @ 55 NONAME ; class QString FmBackupSettings::weekdayToString(enum FmBackupSettings::TFileManagerBackupWeekday)
-	?tr@FmBkupEngine@@SA?AVQString@@PBD0H@Z @ 56 NONAME ; class QString FmBkupEngine::tr(char const *, char const *, int)
-	?contentToString@FmBackupSettings@@SA?AVQString@@I@Z @ 57 NONAME ; class QString FmBackupSettings::contentToString(unsigned int)
-	?RestoreSettingsL@FmBkupEngine@@QAEPAVFmRestoreSettings@@XZ @ 58 NONAME ; class FmRestoreSettings * FmBkupEngine::RestoreSettingsL(void)
-	?time@FmBackupSettings@@QBEABVQTime@@XZ @ 59 NONAME ; class QTime const & FmBackupSettings::time(void) const
-	?notifyStart@FmBkupEngine@@IAEX_NH@Z @ 60 NONAME ; void FmBkupEngine::notifyStart(bool, int)
-	?scheduling@FmBackupSettings@@QBE?AW4TFileManagerBackupSchedule@1@XZ @ 61 NONAME ; enum FmBackupSettings::TFileManagerBackupSchedule FmBackupSettings::scheduling(void) const
-	?qt_metacall@FmBkupEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 62 NONAME ; int FmBkupEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?createWeekdayEntry@FmBackupSettings@@AAEPAVFmBackupEntry@@XZ @ 63 NONAME ; class FmBackupEntry * FmBackupSettings::createWeekdayEntry(void)
-	?notifyBackupFilesExist@FmBkupEngine@@IAEXAA_N@Z @ 64 NONAME ; void FmBkupEngine::notifyBackupFilesExist(bool &)
+	??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	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/bwins/fmfiledialogu.def	Fri May 14 15:42:43 2010 +0300
@@ -17,4 +17,5 @@
 	?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	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/eabi/fmbkupenginewrapperu.def	Fri May 14 15:42:43 2010 +0300
@@ -14,57 +14,60 @@
 	_ZN12FmBkupEngine16RestoreSettingsLEv @ 13 NONAME
 	_ZN12FmBkupEngine16staticMetaObjectE @ 14 NONAME DATA 16
 	_ZN12FmBkupEngine18getBackupDriveListER11QStringList @ 15 NONAME
-	_ZN12FmBkupEngine19GetRestoreInfoArrayER5QListIP24FmBkupDrivesAndOperationERS0_I13FmRestoreInfoEi @ 16 NONAME
+	_ZN12FmBkupEngine19GetRestoreInfoArrayER5QListIP24FmBkupDrivesAndOperationERS0_I13FmRestoreInfoERK7QString @ 16 NONAME
 	_ZN12FmBkupEngine19getStaticMetaObjectEv @ 17 NONAME
-	_ZN12FmBkupEngineC1EP7QObject @ 18 NONAME
-	_ZN12FmBkupEngineC2EP7QObject @ 19 NONAME
-	_ZN12FmBkupEngineD0Ev @ 20 NONAME
-	_ZN12FmBkupEngineD1Ev @ 21 NONAME
-	_ZN12FmBkupEngineD2Ev @ 22 NONAME
-	_ZN16FmBackupSettings10setContentEj @ 23 NONAME
-	_ZN16FmBackupSettings10setWeekdayENS_25TFileManagerBackupWeekdayE @ 24 NONAME
-	_ZN16FmBackupSettings11CreateEntryERK7QStringS2_N13FmBackupEntry12TSettingTypeE @ 25 NONAME
-	_ZN16FmBackupSettings11refreshListEv @ 26 NONAME
-	_ZN16FmBackupSettings13setSchedulingENS_26TFileManagerBackupScheduleE @ 27 NONAME
-	_ZN16FmBackupSettings14setTargetDriveERK7QString @ 28 NONAME
-	_ZN16FmBackupSettings15backupEntryListEv @ 29 NONAME
-	_ZN16FmBackupSettings15contentToStringEj @ 30 NONAME
-	_ZN16FmBackupSettings15createTimeEntryEv @ 31 NONAME
-	_ZN16FmBackupSettings15weekdayToStringENS_25TFileManagerBackupWeekdayE @ 32 NONAME
-	_ZN16FmBackupSettings18createWeekdayEntryEv @ 33 NONAME
-	_ZN16FmBackupSettings18schedulingToStringENS_26TFileManagerBackupScheduleE @ 34 NONAME
-	_ZN16FmBackupSettings19createContentsEntryEv @ 35 NONAME
-	_ZN16FmBackupSettings19targetDriveToStringERK7QString @ 36 NONAME
-	_ZN16FmBackupSettings21createSchedulingEntryEv @ 37 NONAME
-	_ZN16FmBackupSettings22createTargetDriveEntryEv @ 38 NONAME
-	_ZN16FmBackupSettings26resetAndDestoryBackupEntryEv @ 39 NONAME
-	_ZN16FmBackupSettings4loadEv @ 40 NONAME
-	_ZN16FmBackupSettings4saveEv @ 41 NONAME
-	_ZN16FmBackupSettings7setTimeERK5QTime @ 42 NONAME
-	_ZN16FmBackupSettingsC1EP12FmBkupEngine @ 43 NONAME
-	_ZN16FmBackupSettingsC2EP12FmBkupEngine @ 44 NONAME
-	_ZN16FmBackupSettingsD1Ev @ 45 NONAME
-	_ZN16FmBackupSettingsD2Ev @ 46 NONAME
-	_ZN17FmRestoreSettings11CreateEntryERK13FmRestoreInfo @ 47 NONAME
-	_ZN17FmRestoreSettings11refreshListER5QListIP24FmBkupDrivesAndOperationE @ 48 NONAME
-	_ZN17FmRestoreSettings12SetSelectionERKy @ 49 NONAME
-	_ZN17FmRestoreSettings16restoreEntryListEv @ 50 NONAME
-	_ZN17FmRestoreSettings27resetAndDestoryRestoreEntryEv @ 51 NONAME
-	_ZN17FmRestoreSettings4loadE5QListIP24FmBkupDrivesAndOperationE @ 52 NONAME
-	_ZN17FmRestoreSettingsC1ER12FmBkupEngine @ 53 NONAME
-	_ZN17FmRestoreSettingsC2ER12FmBkupEngine @ 54 NONAME
-	_ZN17FmRestoreSettingsD1Ev @ 55 NONAME
-	_ZN17FmRestoreSettingsD2Ev @ 56 NONAME
-	_ZNK12FmBkupEngine10metaObjectEv @ 57 NONAME
-	_ZNK12FmBkupEngine5errorEv @ 58 NONAME
-	_ZNK16FmBackupSettings10schedulingEv @ 59 NONAME
-	_ZNK16FmBackupSettings11targetDriveEv @ 60 NONAME
-	_ZNK16FmBackupSettings16contentsSelectedEv @ 61 NONAME
-	_ZNK16FmBackupSettings4timeEv @ 62 NONAME
-	_ZNK16FmBackupSettings7contentEv @ 63 NONAME
-	_ZNK16FmBackupSettings7weekdayEv @ 64 NONAME
-	_ZNK17FmRestoreSettings13GetSelectionLER5QListI13FmRestoreInfoE @ 65 NONAME
-	_ZTI12FmBkupEngine @ 66 NONAME
-	_ZTV12FmBkupEngine @ 67 NONAME
-	_ZN12FmBkupEngine22notifyBackupFilesExistERb @ 68 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	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/eabi/fmfiledialogu.def	Fri May 14 15:42:43 2010 +0300
@@ -19,4 +19,5 @@
 	_ZThn16_N12FmFileDialogD1Ev @ 18 NONAME
 	_ZThn8_N12FmFileDialogD0Ev @ 19 NONAME
 	_ZThn8_N12FmFileDialogD1Ev @ 20 NONAME
+	_ZN12FmFileDialog12dialogClosedEP8HbAction @ 21 NONAME
 
--- a/filemanager/src/filemanager/burconfig.xml	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/burconfig.xml	Fri May 14 15:42:43 2010 +0300
@@ -112,7 +112,7 @@
             <exclude_special_flags>EBUCatSpecNone</exclude_special_flags>                   
             <uids>0x101f401d</uids><!--Logs-->                                              
             <!-- removed MediaGallery <uids>0x101f8599</uids>MediaGallery, i.e. basically all user data-->    
-            <uids>0x101f84eb</uids><!--FileManager instead of MediaGallery backup c:/data/ -->              
+            <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-->                             
--- a/filemanager/src/filemanager/filemanager.pri	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/filemanager.pri	Fri May 14 15:42:43 2010 +0300
@@ -58,6 +58,8 @@
            src/components/fmviewdetailsdialog.h \
            src/components/fmviewdetailsitem.h \
            src/components/fmdrivedetailstype.h \
+           src/components/fmmessagebox.h \
+           src/components/fmdialog.h
 
 SOURCES += src/main.cpp \
            src/fmdriverlistwidget.cpp \
@@ -97,7 +99,9 @@
            src/components/fmmultitextquery.cpp \
            src/components/fmviewdetailsdialog.cpp \
            src/components/fmviewdetailsitem.cpp \
-           src/components/fmdrivedetailstype.cpp
+           src/components/fmdrivedetailstype.cpp \
+           src/components/fmmessagebox.cpp \
+           src/components/fmdialog.cpp
 
 win32 {
     SOURCES += src/operationservice/fmoperationformat_win.cpp
--- a/filemanager/src/filemanager/filemanager.pro	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/filemanager.pro	Fri May 14 15:42:43 2010 +0300
@@ -21,7 +21,7 @@
 RESOURCES += filemanager.qrc
 INCLUDEPATH += ../fmbkupenginewrapper/inc
 # remove this path when export plat header to app layer path
-INCLUDEPATH += ../../filemanager_plat/inc
+# INCLUDEPATH += ../../filemanager_plat/inc
 
 include ( ../common.pri )
 include ( ../inc/commoninc.pri )
--- a/filemanager/src/filemanager/src/backuprestore/fmbackuprestorehandler.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackuprestorehandler.cpp	Fri May 14 15:42:43 2010 +0300
@@ -24,6 +24,7 @@
 #include "fmbkupengine.h"
 #include "fmoperationbase.h"
 #include "fmcommon.h"
+#include "fmdlgutils.h"
 
 #include <hbmessagebox.h>
 
@@ -73,7 +74,7 @@
     mCurrentProcess = ProcessBackup;
     bool ret = mBkupEngine->startBackup( backupConfigLoader()->driversAndOperationList(),
         backupConfigLoader()->backupCategoryList(), 
-        mBkupEngine->BackupSettingsL()->targetDrive(),
+        mBkupEngine->BackupSettingsL()->availableTargetDrive(),
         mBkupEngine->BackupSettingsL()->content() );
 
     if( !ret ) {
@@ -109,14 +110,14 @@
     if( memoryValue < FmEstimateLowerLimit ) {
         userError = FmErrDiskFull;
     } else if( memoryValue < FmEstimateUpperLimit ) {
-        if ( !HbMessageBox::question( "memory low, continue?" ) ){
+        if ( !FmDlgUtils::question( "memory low, continue?" ) ){
             userError = FmErrCancel;
         }
     }
 }
 void FmBackupRestoreHandler::onNotifyBackupFilesExist( bool &isContinue )
     {
-    if ( HbMessageBox::question( "some bacup files exist, continue?" ) )
+    if ( FmDlgUtils::question( "some backup files exist, continue?" ) )
         {
         isContinue = true;
         }
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupview.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupview.cpp	Fri May 14 15:42:43 2010 +0300
@@ -91,6 +91,7 @@
 void FmBackupView::on_leftAction_triggered()
 {
     int ret = mOperationService->asyncBackup();
+    FmLogger::log( "FmBackupView_asyncBackup: ret= " + QString::number(ret) );
     switch( ret )
     {
     case FmErrNone:
@@ -102,7 +103,7 @@
         HbMessageBox::information( QString( hbTrId("Operation canceled because already started!") ) );
         break;
     case FmErrPathNotFound:
-        HbMessageBox::information( QString( hbTrId("Operation canceled because can not find target drive!") ) );
+        HbMessageBox::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") ) );
@@ -139,3 +140,7 @@
     toolBar()->removeAction( mToolBarAction );
 }
 
+void FmBackupView::refreshBackupView()
+{
+    mMainWidget->updateBackupDate();
+}
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupview.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupview.h	Fri May 14 15:42:43 2010 +0300
@@ -45,6 +45,8 @@
     
     void removeToolBarAction();
 
+public slots:
+    void refreshBackupView();
 private slots:
     void on_leftAction_triggered();
 
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp	Fri May 14 15:42:43 2010 +0300
@@ -35,9 +35,8 @@
 #include <hbdataformviewitem.h>
 
 
-
 FmBackupWidget::FmBackupWidget( QGraphicsItem *parent )
-: HbWidget( parent ), mLastPressedItem( 0 ), mScrolled( 0 )
+: HbWidget( parent ), mLastPressedItem( 0 ), mScrolled( 0 ), mListReleased( false )
 {
     init();
 }
@@ -50,9 +49,14 @@
 
 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;
@@ -68,6 +72,7 @@
     } else if( item == mTimeItem ){
         ChangeTime();
     }
+    mListReleased = false;
 }
 
 void FmBackupWidget::on_list_pressed( const QModelIndex &index )
@@ -93,6 +98,7 @@
     mDataForm->setModel( mModel );
     vLayout->addItem( mDataForm );
     
+    
     connect( mDataForm, SIGNAL( released( const QModelIndex & ) ),
              this, SLOT( on_list_released( const QModelIndex & ) ) );
 
@@ -165,9 +171,15 @@
     mTimeItem = mModel->appendDataFormItem(
         HbDataFormModelItem::TextItem, QString( "" ), mSchedulingGroup );
     mTimeItem->setContentWidgetData( QString("readOnly"), QString("true") );
+    
+    mLastBackupDateItem = mModel->appendDataFormItem(
+        HbDataFormModelItem::TextItem, QString( ( "" )), mModel->invisibleRootItem() );
+    mLastBackupDateItem->setContentWidgetData( QString("readOnly"), QString("true") );   
+    
 }
 
 
+
 void FmBackupWidget::refreshModel()
 {
     mDataForm->setModel( 0 );
@@ -246,6 +258,11 @@
             mTimeItem->setContentWidgetData( QString("text"), tips );
             break;
             }
+        case FmBackupEntry::EBackupdate:
+            {            
+            mLastBackupDateItem->setContentWidgetData( QString("text"), tips );
+            break;
+            }
         }
     }
 
@@ -347,7 +364,6 @@
     int selectIndex = -1;
 
     int currentIndex = 0;
-    QString associatedDrives;
     for( QStringList::const_iterator it = driveList.begin(); it != driveList.end(); ++it )
     {
         QString drive = (*it);
@@ -356,7 +372,6 @@
 
         driveStringList.push_back( drive );
         queryStringList.push_back( driveWithVolume );
-        associatedDrives += FmUtils::getDriveLetterFromPath(drive);
 
         if( drive == targetDrive )
         {
@@ -366,9 +381,15 @@
         ++currentIndex;
     }
     
-    if( FmDlgUtils::showSingleSettingQuery( title, queryStringList, selectIndex, associatedDrives ) )
+    if( FmDlgUtils::showSingleSettingQuery( title, queryStringList, selectIndex ) )
     {
         mBackupSettings->setTargetDrive( driveStringList.at( selectIndex ) );
         emit doModelRefresh();
     }
 }
+
+void FmBackupWidget::updateBackupDate()
+{
+    mBackupSettings->updateBackupDate();
+    emit doModelRefresh();
+}
--- a/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.h	Fri May 14 15:42:43 2010 +0300
@@ -35,6 +35,7 @@
 public:
 	FmBackupWidget( QGraphicsItem *parent = 0  );
 	~FmBackupWidget();
+	void updateBackupDate();
 
 signals:
     void doModelRefresh();
@@ -70,12 +71,13 @@
     HbDataFormModelItem *mSchedulingItem;
     HbDataFormModelItem *mWeekdayItem;
     HbDataFormModelItem *mTimeItem;
-
+    HbDataFormModelItem *mLastBackupDateItem;
 	FmBackupSettings        *mBackupSettings;
 	FmBackupConfigLoader    *mBackupConfigLoader;
     HbDataFormModelItem     *mLastPressedItem;
 
     bool mScrolled;
+    bool mListReleased;
 };
 
 #endif // FMBACKUPWIDGET_H
--- a/filemanager/src/filemanager/src/backuprestore/fmdeletebackupview.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/backuprestore/fmdeletebackupview.cpp	Fri May 14 15:42:43 2010 +0300
@@ -20,6 +20,7 @@
 #include "fmdeletebackupwidget.h"
 #include "fmviewmanager.h"
 #include "fmoperationbase.h"
+#include "fmdlgutils.h"
 
 #include <QApplication>
 
@@ -108,7 +109,7 @@
 void FmDeleteBackupView::on_deleteAction_triggered()
 {
     QList<int > items = mDeleteBackupWidget->selectionIndexes();
-    if( items.count() <= 0 || !HbMessageBox::question( tr("Confirm Deletion?" ) ) ){
+    if( items.count() <= 0 || !FmDlgUtils::question( tr("Confirm Deletion?" ) ) ){
         return;
     }
 
--- a/filemanager/src/filemanager/src/components/fmcombinedquery.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmcombinedquery.cpp	Fri May 14 15:42:43 2010 +0300
@@ -25,7 +25,7 @@
 #include <hblistwidgetitem.h>
 #include <hbabstractviewitem.h>
 
-FmCombinedQuery::FmCombinedQuery( QGraphicsItem *parent ) : HbDialog( parent ), 
+FmCombinedQuery::FmCombinedQuery( QGraphicsItem *parent ) : FmDialog( parent ), 
     mSelectMode ( MultiSelectMode ), mDominantIndex ( -1 )
 {
 	mContentWidget = new QGraphicsWidget();
@@ -110,7 +110,7 @@
 
 void FmCombinedQuery::activated( const QModelIndex &index )
 {
-	int selectedRow = mListWidget->indexPosition( index );
+	int selectedRow = index.row();
 	if( selectedRow == mDominantIndex ){
 		QModelIndexList modelIndexList = mListWidget->selectionModel()->selectedIndexes();
 		for( QModelIndexList::const_iterator it = modelIndexList.begin(); it != modelIndexList.end(); ++it ){
--- a/filemanager/src/filemanager/src/components/fmcombinedquery.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmcombinedquery.h	Fri May 14 15:42:43 2010 +0300
@@ -19,14 +19,13 @@
 #define FMCOMBINEDQUERY_H
 
 #include "fmcommon.h"
+#include "fmdialog.h"
 
 #include <QString>
 #include <QMap>
 #include <QStringList>
 #include <QGraphicsItem>
 
-#include <hbdialog.h>
-
 class HbListWidget;
 class QGraphicsWidget;
 
@@ -36,7 +35,7 @@
  *  Support multi, single select
  *
  */
-class FmCombinedQuery : public HbDialog
+class FmCombinedQuery : public FmDialog
 {
     Q_OBJECT
 public:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/components/fmdialog.cpp	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,38 @@
+/*
+ * 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 filemanager base dialog class
+ */
+
+#include "fmdialog.h"
+#include <hbdialog.h>
+
+FmDialog::FmDialog( QGraphicsItem *parent) : HbDialog( parent ), mRetAction( 0 )
+{
+
+}
+
+HbAction *FmDialog::exec()
+{
+    HbDialog::open( this, SLOT(dialogClosed(HbAction*)) );
+    mEventLoop.exec();
+    return mRetAction;
+}
+
+void FmDialog::dialogClosed(HbAction *action)
+{
+    mRetAction = action;
+    mEventLoop.exit();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/components/fmdialog.h	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,40 @@
+/*
+ * 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 filemanager base dialog class
+ */
+
+#ifndef FMDIALOG_H
+#define FMDIALOG_H
+
+#include <QEventLoop>
+#include <hbmessagebox.h>
+#include <hbaction.h>
+
+#include "hbmenu.h"
+class FmDialog : public HbDialog
+{
+Q_OBJECT
+public:
+    explicit FmDialog( QGraphicsItem *parent = 0 );
+    HbAction *exec();
+public slots:
+    void dialogClosed(HbAction *action);
+private:
+    QEventLoop mEventLoop;
+    HbAction   *mRetAction; 
+};
+
+#endif
--- a/filemanager/src/filemanager/src/components/fmdlgutils.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmdlgutils.cpp	Fri May 14 15:42:43 2010 +0300
@@ -23,6 +23,7 @@
 #include "fmmultitextquery.h"
 #include "fmutils.h"
 #include "fmviewmanager.h"
+#include "fmmessagebox.h"
 
 #include <QString>
 #include <QStringList>
@@ -30,8 +31,7 @@
 
 #include <hblabel.h>
 #include <hbaction.h>
-#include <hbmessagebox.h>
-
+    
 FmDlgUtils::FmDlgUtils( void )
 {
 }
@@ -39,7 +39,7 @@
 FmDlgUtils::~FmDlgUtils( void )
 {
 }
-HbAction *FmDlgUtils::executeDialog( HbDialog *dialog, const QString &associatedDrives )
+HbAction *FmDlgUtils::executeDialog( FmDialog *dialog, const QString &associatedDrives )
 {
     for( int i = 0; i < associatedDrives.length(); i++ ) {
         QString drive( associatedDrives[i] + QString( ":/" ) );
@@ -246,7 +246,7 @@
 
 bool FmDlgUtils::showTextQuery(
         const QString& title, QString& text, bool isDimPrimaryActionWhenEmpty, int maxLength,
-		const QString &associatedDrives )
+		const QString &associatedDrives, bool isReturnFalseWhenNoTextChanged )
 {
     bool ret( false );
     bool ok ( true );                // SK return (out parameter)
@@ -286,7 +286,14 @@
 
     if( ok ){
         QString newName = cQuery->getLineEditText();
-        if ( newName != text ){
+        if ( newName == text ){
+            if( isReturnFalseWhenNoTextChanged ) {
+                ret = false;
+            }
+            else {
+                ret = true;
+            }
+        } else {
             text = newName;
             ret = true;
         }
@@ -295,12 +302,15 @@
     return ret;
 }
 
-bool FmDlgUtils::showSinglePasswordQuery( const QString &title, QString &pwd, const QString &associatedDrives )
+bool FmDlgUtils::showSinglePasswordQuery( const QString &title, QString &pwd, int maxLength, const QString &associatedDrives )
 {
     bool ret( false );
 
     FmSingleTextQuery *cQuery = new FmSingleTextQuery( FmSingleTextQuery::DimPrimereActionWhenEmpty,
             HbLineEdit::Password );
+    if( maxLength != -1 ){
+        cQuery->setLineEditMaxLength( maxLength );
+    }
     cQuery->setHeadingWidget( new HbLabel( title ) );
 
     QString sk1 ( tr ("ok" ) );
@@ -331,11 +341,14 @@
 }
 
 bool FmDlgUtils::showMultiPasswordQuery(     
-   const QString &firstLabel, const QString &secondLabel, QString &pwd, const QString &associatedDrives )
+   const QString &firstLabel, const QString &secondLabel, QString &pwd, int maxLength, const QString &associatedDrives )
 {
     bool ret( false );
 
     FmMultiTextQuery *cQuery = new FmMultiTextQuery( HbLineEdit::Password );
+    if( maxLength != -1 ){
+        cQuery->setLineEditMaxLength( maxLength );
+    }
     cQuery->setFirstLabelText( firstLabel );
     cQuery->setSecondLabelText( secondLabel );
 
@@ -369,3 +382,10 @@
     delete cQuery;
     return ret;
 }
+
+bool FmDlgUtils::question( const QString &questionText, const QString &primaryButtonText,
+        const QString &secondaryButtonText )
+{
+    FmMessageBox msgBox;
+    return msgBox.question( questionText, primaryButtonText, secondaryButtonText );
+}
--- a/filemanager/src/filemanager/src/components/fmdlgutils.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmdlgutils.h	Fri May 14 15:42:43 2010 +0300
@@ -25,7 +25,7 @@
 #include <QStringList>
 #include <QTime>
 
-class HbDialog;
+class FmDialog;
 class HbAction;
 
 class FmDlgUtils : public QObject
@@ -76,20 +76,23 @@
 
     static bool showTextQuery(     
        const QString &title, QString &driveName, bool isDimPrimaryActionWhenEmpty, int maxLength = -1,
-	   const QString &associatedDrives = QString() );
+	   const QString &associatedDrives = QString(), bool isReturnFalseWhenNoTextChanged = true );
 
     static bool showSinglePasswordQuery(     
-       const QString &title, QString &pwd,
+       const QString &title, QString &pwd, int maxLength = -1,
 	   const QString &associatedDrives = QString() );
 
     static bool showMultiPasswordQuery(     
-       const QString &firstLabel, const QString &secondLabel, QString &pwd,
+       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") );
 
     ~FmDlgUtils(void);
 private:
     FmDlgUtils(void);
-	static HbAction *executeDialog( HbDialog *dialog, const QString &associatedDrives );
+	static HbAction *executeDialog( FmDialog *dialog, const QString &associatedDrives );
 };
 
 
--- a/filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp	Fri May 14 15:42:43 2010 +0300
@@ -86,6 +86,7 @@
     typeFilters.append( QString( "*.rv" ) );
     typeFilters.append( QString( "*.wmv" ) );
     typeFilters.append( QString( "*.3g2" ) );
+    typeFilters.append( QString( "*.rmvb" ) );
  
     dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupVideos, typeFilters ));
  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/components/fmmessagebox.cpp	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,43 @@
+/*
+ * 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 filemanager messagebox
+ */
+
+#include "fmmessagebox.h"
+#include <hbmessagebox.h>
+
+bool FmMessageBox::question( const QString &questionText, const QString &primaryButtonText,
+        const QString &secondaryButtonText )
+{
+    HbMessageBox::question ( questionText,
+            this, SLOT(dialogClosed(HbAction*)), primaryButtonText, secondaryButtonText );
+    mEventLoop.exec();
+    return mRet;
+}
+
+void FmMessageBox::dialogClosed(HbAction *action)
+{
+    HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
+    if(action == dlg->actions().at(0)) 
+    {
+        mRet = true;
+    }
+    else
+    {
+        mRet = false;
+    }
+    mEventLoop.exit();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/components/fmmessagebox.h	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,45 @@
+/*
+ * 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 filemanager messagebox
+ */
+
+#ifndef FMMESSAGEBOX_H
+#define FMMESSAGEBOX_H
+
+#include <QEventLoop>
+#include <hbmessagebox.h>
+#include <hbaction.h>
+
+class FmMessageBox : public QObject
+{
+Q_OBJECT
+public:
+    FmMessageBox()
+    {
+    }
+    ~FmMessageBox()
+    {
+    }
+    bool question( const QString &questionText, const QString &primaryButtonText,
+            const QString &secondaryButtonText );
+public slots:
+    void dialogClosed(HbAction *action);
+private:
+    QEventLoop mEventLoop;
+    bool mRet;
+};
+
+#endif
--- a/filemanager/src/filemanager/src/components/fmmultitextquery.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmmultitextquery.cpp	Fri May 14 15:42:43 2010 +0300
@@ -26,7 +26,7 @@
 #include <hbaction.h>
 
 FmMultiTextQuery::FmMultiTextQuery( HbLineEdit::EchoMode echoMode, QGraphicsItem *parent ) :
-    HbDialog( parent ), mEchoMode( echoMode )
+    FmDialog( parent ), mEchoMode( echoMode )
 {
     init();
 }
@@ -70,6 +70,12 @@
         
 }
 
+void FmMultiTextQuery::setLineEditMaxLength( int length )
+{
+    mFirstEdit->setMaxLength( length );
+    mSecondEdit->setMaxLength( length );
+}
+
 void FmMultiTextQuery::setFirstEditText( const QString &text )
 {
     mFirstEdit->setText( text );
--- a/filemanager/src/filemanager/src/components/fmmultitextquery.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmmultitextquery.h	Fri May 14 15:42:43 2010 +0300
@@ -20,21 +20,22 @@
 #define FMMULTITEXTQUERY_H
 
 #include "fmcommon.h"
+#include "fmdialog.h"
 
-#include <hbdialog.h>
 #include <hblineedit.h>
 
 class HbWidget;
 class HbLabel;
 
-class FmMultiTextQuery : public HbDialog
+class FmMultiTextQuery : public FmDialog
 {
 Q_OBJECT
 public:
-    FmMultiTextQuery( HbLineEdit::EchoMode echoMode = HbLineEdit::Normal, QGraphicsItem *parent = 0 );
+    explicit FmMultiTextQuery( HbLineEdit::EchoMode echoMode = HbLineEdit::Normal, QGraphicsItem *parent = 0 );
     ~FmMultiTextQuery();
 
 public:
+    void setLineEditMaxLength( int length );
     void setFirstEditText( const QString &text );
     void setSecondEditText( const QString &text );
     void setFirstLabelText( const QString &text );
--- a/filemanager/src/filemanager/src/components/fmsingletextquery.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmsingletextquery.cpp	Fri May 14 15:42:43 2010 +0300
@@ -26,7 +26,7 @@
 
 FmSingleTextQuery::FmSingleTextQuery( Options options,
     HbLineEdit::EchoMode echoMode, QGraphicsItem *parent  ) :
-    HbDialog( parent ), mOptions( options ), mEchoMode( echoMode )
+    FmDialog( parent ), mOptions( options ), mEchoMode( echoMode )
 {
     init();
 }
--- a/filemanager/src/filemanager/src/components/fmsingletextquery.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmsingletextquery.h	Fri May 14 15:42:43 2010 +0300
@@ -19,12 +19,12 @@
 #ifndef FMSINGLETEXTQUERY_H
 #define FMSINGLETEXTQUERY_H
 
-#include <hbdialog.h>
+#include "fmdialog.h"
 #include <hblineedit.h>
 
 class HbWidget;
 
-class FmSingleTextQuery : public HbDialog
+class FmSingleTextQuery : public FmDialog
 {
 Q_OBJECT
 public:
--- a/filemanager/src/filemanager/src/components/fmtimequery.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmtimequery.cpp	Fri May 14 15:42:43 2010 +0300
@@ -24,7 +24,7 @@
 #include <hbdatetimeedit.h>
 
 
-FmTimeQuery::FmTimeQuery( QGraphicsItem *parent ) : HbDialog( parent )
+FmTimeQuery::FmTimeQuery( QGraphicsItem *parent ) : FmDialog( parent )
 {
 
     mContentWidget = new QGraphicsWidget();
--- a/filemanager/src/filemanager/src/components/fmtimequery.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmtimequery.h	Fri May 14 15:42:43 2010 +0300
@@ -20,14 +20,13 @@
 #define FMTIMEQUERY_H
 
 #include "fmcommon.h"
+#include "fmdialog.h"
 
 #include <QTime>
 
-#include <hbdialog.h>
-
 class QGraphicsWidget;
 class HbDateTimeEdit;
-class FmTimeQuery : public HbDialog
+class FmTimeQuery : public FmDialog
 {
 public:
     FmTimeQuery(QGraphicsItem *parent=0);
--- a/filemanager/src/filemanager/src/components/fmviewdetailsdialog.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmviewdetailsdialog.cpp	Fri May 14 15:42:43 2010 +0300
@@ -32,7 +32,7 @@
 #include <hbaction.h>
 
 FmViewDetailsDialog::FmViewDetailsDialog( QGraphicsItem *parent ) 
-    : HbDialog( parent ),
+    : FmDialog( parent ),
       mNumofSubFolers( 0 ),
       mNumofFiles( 0 ),
       mSizeofFolder( 0 ),
@@ -437,7 +437,7 @@
     }
 }
 
-HbAction *FmViewDetailsDialog::executeDialog( HbDialog *dialog, const QString &associatedDrives )
+HbAction *FmViewDetailsDialog::executeDialog( FmDialog *dialog, const QString &associatedDrives )
 {
     for( int i = 0; i < associatedDrives.length(); i++ ) {
         QString drive( associatedDrives[i] + QString( ":/" ) );
--- a/filemanager/src/filemanager/src/components/fmviewdetailsdialog.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/components/fmviewdetailsdialog.h	Fri May 14 15:42:43 2010 +0300
@@ -20,8 +20,7 @@
 #define FMVIEWDETAILSDIALOG_H
 
 #include "fmcommon.h"
-
-#include <hbdialog.h>
+#include "fmdialog.h"
 
 class FmDataListModel;
 class QDirModel;
@@ -30,7 +29,7 @@
 class HbAction;
 class FmDriveDetailsSize;
 
-class FmViewDetailsDialog : public HbDialog
+class FmViewDetailsDialog : public FmDialog
 {
     Q_OBJECT
   
@@ -90,7 +89,7 @@
     void setNumofSubfolders( int numofSubFolders, int numofFiles, quint64 sizeofFolder );
     void setSizeofContent( QList<FmDriveDetailsSize*> detailsSizeList );
     
-	static HbAction *executeDialog( HbDialog *dialog, const QString &associatedDrives );
+	static HbAction *executeDialog( FmDialog *dialog, const QString &associatedDrives );
 private:
     HbListView *mListView;
     HbLabel *mHeaderLabel;  
--- a/filemanager/src/filemanager/src/fmdriverlistwidget.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmdriverlistwidget.cpp	Fri May 14 15:42:43 2010 +0300
@@ -38,7 +38,7 @@
 FmDriverListWidget::FmDriverListWidget( QGraphicsItem *parent )
 : HbWidget( parent ),
   mCurrentItem( 0 ),
-  mOperationService( 0 )
+  mOperationService( 0 ), mListLongPressed( false )
 {
 	init();
 	mOperationService = FmViewManager::viewManager()->operationService();
@@ -56,7 +56,13 @@
 
 void FmDriverListWidget::on_list_activated( const QModelIndex &index )
 {
-	emit activated( mModel->driveName( index ) );
+    FmLogger::log("FmDriverListWidget::on_list_activated");
+    if( mListLongPressed ) {
+        FmLogger::log("FmDriverListWidget::on_list_activated return because long pressed");
+        return;
+    }
+    FmLogger::log("FmDriverListWidget::on_list_activated emit activate to open drive");
+    emit activated( mModel->driveName( index ) );
 }
 
 void FmDriverListWidget::init()
@@ -80,9 +86,11 @@
 	mSearchPanel->hide();
 //	mLayout->addItem( mSearchPanel );
     
-	mListView->setItemPrototype( new DiskListViewItem( mListView ) );
+	mListView->setItemPrototype( new DiskListViewItem() );
 	connect( mListView, SIGNAL( activated( const QModelIndex & ) ),
 		     this, SLOT( on_list_activated( const QModelIndex & ) ) );
+	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 & ) ) );
@@ -107,73 +115,77 @@
 
 void FmDriverListWidget::on_list_longPressed( HbAbstractViewItem *item, const QPointF &coords )
 {   
-    HbMenu *contextMenu = new HbMenu();
-
+    FmLogger::log("FmDriverListWidget::on_list_longPressed");
+    mListLongPressed = true;
     mCurrentItem = item;
     QString diskName = mModel->driveName( mCurrentItem->modelIndex() );
     
     FmDriverInfo driverInfo = FmUtils::queryDriverInfo( diskName );
     FmDriverInfo::DriveState state = driverInfo.driveState();
-
-    if( !( state & FmDriverInfo::EDriveNotPresent ) && !( state & FmDriverInfo::EDriveLocked ) &&
-            !( state & FmDriverInfo::EDriveCorrupted ) ) {
-        HbAction *viewAction = new HbAction();
-        viewAction->setObjectName( "viewAction" );
-        viewAction->setText( hbTrId( "txt_fmgr_menu_view_details_memory" ) );
-        contextMenu->addAction( viewAction );
-
-        //state = 0x210;
+    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 );
     
-        connect( viewAction, SIGNAL( triggered() ),
-        this, SLOT( on_viewAction_triggered() ) );
-    }
-
-    if( ( state & FmDriverInfo::EDriveRemovable ) && !( state & FmDriverInfo::EDriveMassStorage ) ){
-        if ( driverInfo.volumeName().length() ){
-            HbAction *renameAction = new HbAction();
-            renameAction->setObjectName( "renameAction" );
-            renameAction->setText( hbTrId( "txt_fmgr_menu_rename" ) );
-            contextMenu->addAction( renameAction );
-
-            connect( renameAction, SIGNAL( triggered() ),
-		     this, SLOT( on_renameAction_triggered() ) );
+            //state = 0x210;
+        
+            connect( viewAction, SIGNAL( triggered() ),
+            this, SLOT( on_viewAction_triggered() ) );
         }
-        else{
-            HbAction *nameAction = new HbAction();
-            nameAction->setObjectName( "nameAction" );
-            nameAction->setText( hbTrId( "txt_fmgr_menu_name" ) );
-            contextMenu->addAction( nameAction );
-
-            connect( nameAction, SIGNAL( triggered() ),
-		     this, SLOT( on_nameAction_triggered() ) );
+    
+        if( ( state & FmDriverInfo::EDriveAvailable ) && ( state & FmDriverInfo::EDriveRemovable ) && !( state & FmDriverInfo::EDriveMassStorage ) ){
+            // MMC or Usb memory
+            if ( driverInfo.volumeName().length() ){
+                HbAction *renameAction = new HbAction();
+                renameAction->setObjectName( "renameAction" );
+                renameAction->setText( hbTrId( "txt_fmgr_menu_rename" ) );
+                contextMenu->addAction( renameAction );
+    
+                connect( renameAction, SIGNAL( triggered() ),
+                 this, SLOT( on_renameAction_triggered() ) );
+            }
+            else{
+                HbAction *nameAction = new HbAction();
+                nameAction->setObjectName( "nameAction" );
+                nameAction->setText( hbTrId( "txt_fmgr_menu_name" ) );
+                contextMenu->addAction( nameAction );
+    
+                connect( nameAction, SIGNAL( triggered() ),
+                 this, SLOT( on_nameAction_triggered() ) );
+            }
+            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 );
+        
+                    HbAction *removePwdAction = new HbAction();
+                    removePwdAction->setObjectName( "removePwdAction" );
+                    removePwdAction->setText( hbTrId( "txt_fmgr_menu_remove_password" ) );
+                    contextMenu->addAction( removePwdAction );
+        
+                    connect( changePwdAction, SIGNAL( triggered() ),
+                     this, SLOT( on_changePwdAction_triggered() ) );
+                    connect( removePwdAction, SIGNAL( triggered() ),
+                     this, SLOT( on_removePwdAction_triggered() ) );
+                }
+                else{
+                    HbAction *setPwdAction = new HbAction();
+                    setPwdAction->setObjectName( "setPwdAction" );
+                    setPwdAction->setText( hbTrId( "txt_fmgr_menu_set_password" ) );
+                    contextMenu->addAction( setPwdAction );
+        
+                    connect( setPwdAction, SIGNAL( triggered() ),
+                     this, SLOT( on_setPwdAction_triggered() ) );
+                }
+            }
         }
-
-        if( state & FmDriverInfo::EDrivePasswordProtected ){
-            HbAction *changePwdAction = new HbAction();
-            changePwdAction->setObjectName( "changePwdAction" );
-            changePwdAction->setText( hbTrId( "txt_fmgr_menu_change_password" ) );
-            contextMenu->addAction( changePwdAction );
-
-            HbAction *removePwdAction = new HbAction();
-            removePwdAction->setObjectName( "removePwdAction" );
-            removePwdAction->setText( hbTrId( "txt_fmgr_menu_remove_password" ) );
-            contextMenu->addAction( removePwdAction );
-
-            connect( changePwdAction, SIGNAL( triggered() ),
-		     this, SLOT( on_changePwdAction_triggered() ) );
-            connect( removePwdAction, SIGNAL( triggered() ),
-		     this, SLOT( on_removePwdAction_triggered() ) );
-        }
-        else{
-            HbAction *setPwdAction = new HbAction();
-            setPwdAction->setObjectName( "setPwdAction" );
-            setPwdAction->setText( hbTrId( "txt_fmgr_menu_set_password" ) );
-            contextMenu->addAction( setPwdAction );
-
-            connect( setPwdAction, SIGNAL( triggered() ),
-		     this, SLOT( on_setPwdAction_triggered() ) );
-        }
-         
+        
         if( state & FmDriverInfo::EDriveEjectable ){
             HbAction *ejectAction = new HbAction();
             ejectAction->setObjectName( "ejectAction" );
@@ -182,36 +194,41 @@
             
             connect( ejectAction, SIGNAL( triggered() ),
             this, SLOT( on_ejectAction_triggered() ) );
-        }         
+        }  
+        
+    #ifndef _DEBUG_ENABLE_FORMATMENU_
+    if ( ( state & FmDriverInfo::EDriveRemovable ) || ( state & FmDriverInfo::EDriveCorrupted )
+             || ( state & FmDriverInfo::EDriveLocked ) ){
+    #endif
+                HbAction *formatAction = new HbAction();
+                formatAction->setObjectName( "formatAction" );
+                formatAction->setText( hbTrId( "txt_fmgr_menu_format" ) );
+                contextMenu->addAction( formatAction );
+    
+                connect( formatAction, SIGNAL( triggered() ),
+                 this, SLOT( on_formatAction_triggered() ) );
+    #ifndef _DEBUG_ENABLE_FORMATMENU_
+        }
+    #endif
+        
+        if( state & FmDriverInfo::EDriveLocked ){
+            HbAction *unLockedAction = new HbAction();
+            unLockedAction->setObjectName( "unLockedAction" );
+            unLockedAction->setText( hbTrId( "Unlock" ) );
+            contextMenu->addAction( unLockedAction );
+    
+            connect( unLockedAction, SIGNAL( triggered() ),
+             this, SLOT( on_unLockedAction_triggered() ) );
+        }
+        contextMenu->setPreferredPos( coords );
+        contextMenu->open();   
     }
-#ifndef _DEBUG_ENABLE_FORMATMENU_
-if ( ( state & FmDriverInfo::EDriveRemovable ) || ( state & FmDriverInfo::EDriveCorrupted )
-         || ( state & FmDriverInfo::EDriveLocked ) ){
-        if( !( state & FmDriverInfo::EDriveNotPresent ) ){
-#endif
-            HbAction *formatAction = new HbAction();
-            formatAction->setObjectName( "formatAction" );
-            formatAction->setText( hbTrId( "txt_fmgr_menu_format" ) );
-            contextMenu->addAction( formatAction );
+    
+}
 
-            connect( formatAction, SIGNAL( triggered() ),
-             this, SLOT( on_formatAction_triggered() ) );
-#ifndef _DEBUG_ENABLE_FORMATMENU_
-        }
-    }
-#endif
-    
-    if( state & FmDriverInfo::EDriveLocked ){
-        HbAction *unLockedAction = new HbAction();
-        unLockedAction->setObjectName( "unLockedAction" );
-        unLockedAction->setText( hbTrId( "Unlock" ) );
-        contextMenu->addAction( unLockedAction );
-
-        connect( unLockedAction, SIGNAL( triggered() ),
-         this, SLOT( on_unLockedAction_triggered() ) );
-    } 
-
-    contextMenu->exec( coords );   
+void FmDriverListWidget::on_list_pressed( const QModelIndex &  index )
+{
+    mListLongPressed = false;
 }
 
 void FmDriverListWidget::on_viewAction_triggered()
@@ -269,7 +286,7 @@
     QString diskName = mModel->driveName( mCurrentItem->modelIndex() );
 
     QString associatedDrives( FmUtils::getDriveLetterFromPath( diskName ) );
-    if( FmDlgUtils::showMultiPasswordQuery( firstLabel, secondLabel, newPwd, associatedDrives ) ) {
+    if( FmDlgUtils::showMultiPasswordQuery( firstLabel, secondLabel, newPwd, FmMaxLengthofDrivePassword, associatedDrives ) ) {
        if ( FmUtils::setDrivePwd( diskName, oldPwd, newPwd ) == 0 ){
             HbMessageBox::information( hbTrId( "The password has been set!" ) );
         }
@@ -291,7 +308,7 @@
     QString diskName = mModel->driveName( mCurrentItem->modelIndex() );
     
     QString associatedDrives( FmUtils::getDriveLetterFromPath( diskName ) );
-    while( FmDlgUtils::showSinglePasswordQuery( title, oldPwd, associatedDrives ) ) {
+    while( FmDlgUtils::showSinglePasswordQuery( title, oldPwd, FmMaxLengthofDrivePassword, associatedDrives ) ) {
        if ( FmUtils::checkDrivePwd( diskName, oldPwd ) == 0 ){
             if( FmDlgUtils::showMultiPasswordQuery( firstLabel, secondLabel, newPwd ) ){
                 if ( FmUtils::setDrivePwd( diskName, oldPwd, newPwd ) == 0 ){
@@ -319,9 +336,9 @@
 
     QString diskName = mModel->driveName( mCurrentItem->modelIndex() );
     //QString password( tr( "a ") );
-    if( HbMessageBox::question( tr( "Do you want to remove the password? Memory card becomes unlocked." ) ) ){
+    if( FmDlgUtils::question( tr( "Do you want to remove the password? Memory card becomes unlocked." ) ) ){
         QString associatedDrives( FmUtils::getDriveLetterFromPath( diskName ) );
-        while( FmDlgUtils::showSinglePasswordQuery( title, oldPwd, associatedDrives ) ) {
+        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!" ) );
@@ -372,7 +389,7 @@
 {
     QString diskName = mModel->driveName( mCurrentItem->modelIndex() );
     
-    if( HbMessageBox::question( hbTrId( "Format? Data will be deleted during formatting." ) ) ){
+    if( FmDlgUtils::question( hbTrId( "Format? Data will be deleted during formatting." ) ) ){
         if( FmErrNone != mOperationService->asyncFormat( diskName ) )
             HbMessageBox::information( hbTrId( "Formatting failed." ) );
         }
@@ -382,7 +399,7 @@
 {
     QString diskName = mModel->driveName( mCurrentItem->modelIndex() );
     
-    if( HbMessageBox::question( hbTrId( "Eject memory card? Some applications will be closed." ) ) ){
+    if( FmDlgUtils::question( hbTrId( "Eject memory card? Some applications will be closed." ) ) ){
         FmUtils::ejectDrive( diskName );
     }
 }
@@ -395,7 +412,13 @@
 
 void FmDriverListWidget::activeSearchPanel()
 {
-    mFindTargetPath.clear();
+    QStringList driveList;
+    FmUtils::getDriveList( driveList, true );
+    if(driveList.count() > 0 ) {
+        mFindTargetPath =  driveList.first();
+    } else {
+        mFindTargetPath.clear();
+    }
     mLayout->addItem( mSearchPanel );
     mSearchPanel->show();
 }
--- a/filemanager/src/filemanager/src/fmdriverlistwidget.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmdriverlistwidget.h	Fri May 14 15:42:43 2010 +0300
@@ -50,6 +50,7 @@
 private slots:
 	void on_list_activated( const QModelIndex &index );
     void on_list_longPressed( HbAbstractViewItem *item, const QPointF &coords );
+    void on_list_pressed( const QModelIndex &  index ) ;
 
     void on_viewAction_triggered();
     void on_renameAction_triggered();
@@ -79,6 +80,9 @@
     
     QString mFindTargetPath;
     QGraphicsLinearLayout *mLayout;
+    
+    //used to avoid activate when long press list.
+    bool mListLongPressed;
 };
 
 #endif
--- a/filemanager/src/filemanager/src/fmdriverview.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmdriverview.cpp	Fri May 14 15:42:43 2010 +0300
@@ -32,6 +32,7 @@
 
 FmDriverView::FmDriverView() : FmViewBase( EDriverView )
 {
+    FmLogger::log( "FmDriverView::FmDriverView" );
     initMenu(); 
     initToolBar();
     initDiskListWidget();
--- a/filemanager/src/filemanager/src/fmfilebrowsewidget.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmfilebrowsewidget.cpp	Fri May 14 15:42:43 2010 +0300
@@ -50,7 +50,8 @@
       mFileBrowseStyle( style ),
       mCurrentItem( 0 ),
       mOperationService( 0 ),
-      mSearchPanel( 0 )
+      mSearchPanel( 0 ),
+      mListLongPressed( false )
 {
     initFileModel();
     initListView();
@@ -236,17 +237,31 @@
 
 void FmFileBrowseWidget::on_list_activated( const QModelIndex &index )
 {
+    mActivatedModelIndex = index;
+    emit listActivated();
+}
+
+void FmFileBrowseWidget::on_listActivated()
+{
+    FmLogger::log("FmFileBrowseWidget::on_listActivated start");
+    if( mListLongPressed ) {
+        FmLogger::log("FmFileBrowseWidget::on_list_activated end because longPressed");
+        return;
+    }
     if (!mSelectable) {
-        if (mModel->isDir(index) ) {
-            changeRootIndex( index );
+        if (mModel->isDir(mActivatedModelIndex) ) {
+            FmLogger::log("FmFileBrowseWidget::on_list_activated changeRootIndex>>");
+            changeRootIndex( mActivatedModelIndex );
+            FmLogger::log("FmFileBrowseWidget::on_list_activated changeRootIndex<<");
         } else {
-            QString filePath( mModel->filePath( index ) );
+            QString filePath( mModel->filePath( mActivatedModelIndex ) );
             QFileInfo fileInfo( filePath );
             if ( fileInfo.isFile() ) {
                 mOperationService->syncLaunchFileOpen( filePath );
             }
         }
     }
+    FmLogger::log("FmFileBrowseWidget::on_listActivated end");
 }
 
 void FmFileBrowseWidget::on_tree_activated( const QModelIndex &index )
@@ -258,6 +273,7 @@
 
 void FmFileBrowseWidget::on_list_longPressed( HbAbstractViewItem *item, const QPointF &coords )
 {
+    mListLongPressed = true;
     HbMenu *contextMenu = new HbMenu();
     mCurrentItem = item;
     
@@ -322,7 +338,13 @@
 //        this, SLOT( on_sendAction_triggered() ) );
 //    }
     
-    contextMenu->exec( coords );     
+    contextMenu->setPreferredPos( coords );
+    contextMenu->open();
+}
+
+void FmFileBrowseWidget::on_list_pressed( const QModelIndex &  index )
+{
+    mListLongPressed = false;
 }
 
 void FmFileBrowseWidget::on_tree_longPressed( HbAbstractViewItem *item, const QPointF &coords )
@@ -357,6 +379,8 @@
 
     connect( mListView, SIGNAL( activated( const QModelIndex& ) ),
         this, SLOT( on_list_activated( const QModelIndex& ) ) );
+    connect( this, SIGNAL( listActivated() ),
+        this, SLOT( on_listActivated() ), Qt::QueuedConnection );
     connect( mListView, SIGNAL( longPressed( HbAbstractViewItem *, const QPointF & ) ),
         this, SLOT( on_list_longPressed( HbAbstractViewItem *, const QPointF & ) ) );
 }
@@ -453,6 +477,7 @@
 
 void FmFileBrowseWidget::refreshModel( const QString& path )
 {
+    FmLogger::log( "FmFileBrowseWidget::refreshModel start" );
     QString currPath( currentPath().absoluteFilePath() );
     QString refreshPath( path );
     
@@ -478,6 +503,7 @@
         setRootPath( refreshPath );
         emit setTitle( FmUtils::fillDriveVolume( mCurrentDrive, true ) );
     }
+    FmLogger::log( "FmFileBrowseWidget::refreshModel end" );
 }
 
 bool FmFileBrowseWidget::checkPathAndSetStyle( const QString& path )
@@ -487,9 +513,9 @@
         FmDriverInfo::DriveState state = FmUtils::queryDriverInfo( driveName ).driveState();
         
         if( state & FmDriverInfo::EDriveLocked ) {
-            mEmptyTipLabel->setPlainText( hbTrId( "Memory Card is locked" ) );       
+            mEmptyTipLabel->setPlainText( hbTrId( "Drive is locked" ) );       
         } else if( state & FmDriverInfo::EDriveNotPresent ) {
-            mEmptyTipLabel->setPlainText( hbTrId( "Memory Card is not present" ) );
+            mEmptyTipLabel->setPlainText( hbTrId( "Drive is not present" ) );
         } else if( state & FmDriverInfo::EDriveCorrupted ) {
             mEmptyTipLabel->setPlainText( hbTrId( "Drive is Corrupted" ) );
         } else {
@@ -585,7 +611,7 @@
 {
     QStringList fileList;
     fileList.push_back( mModel->filePath( mCurrentItem->modelIndex() ) );
-    if ( HbMessageBox::question( hbTrId("Confirm Deletion?" ) )) {
+    if ( FmDlgUtils::question( hbTrId("Confirm Deletion?" ) )) {
         int ret = mOperationService->asyncRemove( fileList );
         switch( ret ) {
             case FmErrNone:
--- a/filemanager/src/filemanager/src/fmfilebrowsewidget.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmfilebrowsewidget.h	Fri May 14 15:42:43 2010 +0300
@@ -87,12 +87,15 @@
     void startSearch( const QString &targetPath, const QString &criteria );
     void setEmptyMenu( bool isMenuEmpty );
     void setTitle( const QString &title );
+    void listActivated();
 
 private slots:
     void on_list_activated( const QModelIndex &index );
+    void on_listActivated();
     void on_tree_activated( const QModelIndex &index );
 	void on_list_longPressed( HbAbstractViewItem *item, const QPointF &coords );
-    void on_tree_longPressed( HbAbstractViewItem *item, const QPointF &coords );
+	void on_list_pressed( const QModelIndex &  index ) ;
+    void on_tree_longPressed( HbAbstractViewItem *item, const QPointF &coords );    
     
     void on_viewAction_triggered();
     void on_copyAction_triggered();
@@ -122,7 +125,7 @@
     
     //currentStyle
     Style mStyle;
-    //used to store orignal tree/list style
+    //used to store original tree/list style
     Style mFileBrowseStyle;
 
 	HbAbstractViewItem* mCurrentItem;	
@@ -133,6 +136,10 @@
     HbLabel *mEmptyTipLabel;
     
     QString mCurrentDrive;
+    
+    //used to avoid activate when long press list.
+    bool mListLongPressed;
+    QModelIndex mActivatedModelIndex;
 };
 
 #endif
--- a/filemanager/src/filemanager/src/fmfileview.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmfileview.cpp	Fri May 14 15:42:43 2010 +0300
@@ -278,7 +278,7 @@
     if (files.size() == 0) {
 		infoNoFileSelected();
     } else {
-        if (HbMessageBox::question( tr("Confirm Deletion?" ) )) {
+        if (FmDlgUtils::question( tr("Confirm Deletion?" ) )) {
             QStringList fileList;
             for (int i = 0; i < files.size(); ++i) {
                 fileList.push_back( files[i].absoluteFilePath() );
@@ -381,14 +381,26 @@
 
 void FmFileView::on_newFolder_triggered()
 {
-    QString dirName;
+    int maxFileNameLength = FmUtils::getMaxFileNameLength();
+    QString associatedDrive = FmUtils::getDriveLetterFromPath( mWidget->currentPath().absoluteFilePath() );
+    
+    QString dirName( hbTrId( "New folder" ) );
     QString path = FmUtils::fillPathWithSplash( mWidget->currentPath().absoluteFilePath() );
     QDir dir( path );
     if( dir.exists() ) {
-        while( FmDlgUtils::showTextQuery( hbTrId( "Enter name for " ), dirName, true ) ){
+        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;
@@ -403,6 +415,7 @@
         
     }
 }
+
 void FmFileView::on_upAction_triggered()
 {
 	mWidget->cdUp();
--- a/filemanager/src/filemanager/src/fmfindview.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmfindview.cpp	Fri May 14 15:42:43 2010 +0300
@@ -52,7 +52,7 @@
 {
     setTitle( keyword );
     mFindWidget->find( keyword, path );
-    mWaitNote->exec();
+    mWaitNote->open();
 }
 
 void FmFindView::stopFind()
--- a/filemanager/src/filemanager/src/fmmainwindow.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmmainwindow.cpp	Fri May 14 15:42:43 2010 +0300
@@ -20,10 +20,9 @@
 
 #include <hbaction.h>
 
-FmMainWindow::FmMainWindow()
+FmMainWindow::FmMainWindow() : mViewManager( 0 ), mFirstViewLoaded( false )
 {
-    init();
-	QMetaObject::connectSlotsByName( this );
+    connect(this, SIGNAL(viewReady()), this, SLOT(delayedLoading()));
 }
 
 FmMainWindow::~FmMainWindow()
@@ -45,13 +44,13 @@
 
 void FmMainWindow::init()
 {
+    FmLogger::log("FmMainWindow::init start");
     mViewManager = FmViewManager::CreateViewManager( this );
-    
     mViewManager->createDriverView();
-    
     connect( this, SIGNAL( orientationChanged( Qt::Orientation ) ),
              this, SLOT( onOrientationChanged( Qt::Orientation ) ) );
     
+    FmLogger::log("FmMainWindow::init end");
 //    if ( orientation() == Qt::Vertical ) {
 //        createDriverView();
 //    } else {
@@ -59,3 +58,14 @@
 //    }
 }
 
+void FmMainWindow::delayedLoading()
+{
+    FmLogger::log("FmMainWindow::delayedLoading start");
+    if( mFirstViewLoaded ) {
+        return;
+    }
+    init();
+    mFirstViewLoaded = true;
+    FmLogger::log("FmMainWindow::delayedLoading end");
+}
+
--- a/filemanager/src/filemanager/src/fmmainwindow.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmmainwindow.h	Fri May 14 15:42:43 2010 +0300
@@ -35,11 +35,12 @@
 
 private slots:
     void onOrientationChanged( Qt::Orientation orientation );
-
+    void delayedLoading();
 private:
     void init();
 
     FmViewManager *mViewManager;
+    bool mFirstViewLoaded;
 };
 
 #endif
--- a/filemanager/src/filemanager/src/fmsplitview.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmsplitview.cpp	Fri May 14 15:42:43 2010 +0300
@@ -50,7 +50,7 @@
 
 void FmSplitView::on_normalViewAction_triggered()
 {
-	mainWindow()->setCurrentView( mainWindow()->viewAt(0) );
+	mainWindow()->setCurrentView( mainWindow()->views().first() );
 }
 
 void FmSplitView::initMenu()
--- a/filemanager/src/filemanager/src/fmviewmanager.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmviewmanager.cpp	Fri May 14 15:42:43 2010 +0300
@@ -28,17 +28,18 @@
 #include "fmoperationservice.h"
 #include "fmoperationbase.h"
 #include "fmdrivewatcher.h"
+#include "fmdialog.h"
 
 #include <hbview.h>
 #include <hbmessagebox.h>
 #include <QFileSystemWatcher>
 #include <QFileInfo>
-#include <hbdialog.h>
+
 
 FmViewManager *FmViewManager::mViewManager = 0;
 
 
-FmDlgCloseUnit::FmDlgCloseUnit( HbDialog *dialog ) : mDialog( dialog )
+FmDlgCloseUnit::FmDlgCloseUnit( FmDialog *dialog ) : mDialog( dialog )
 {
 }
 FmDlgCloseUnit::~FmDlgCloseUnit()
@@ -64,7 +65,7 @@
 	return mAssociatedDrives;
 }
 
-HbDialog *FmDlgCloseUnit::dialog()
+FmDialog *FmDlgCloseUnit::dialog()
 {
 	return mDialog;
 }
@@ -150,10 +151,19 @@
     emit refreshModel( path );
 }
 
+void FmViewManager::on_operationService_notifyFinish( FmOperationBase *operationBase )
+{
+    if( operationBase->operationType() == FmOperationService::EOperationTypeBackup )
+        {
+        emit refreshBackupView();
+        }
+
+}
+
 
 int FmViewManager::viewCount()
 {
-    return mMainWindow->viewCount();
+    return mMainWindow->views().count();
 }
 
 
@@ -175,8 +185,7 @@
     QString absolutePath = fileInfo.absoluteFilePath();
 
     QString checkedPath = FmUtils::checkDriveToFolderFilter( absolutePath );
-    FmDriverInfo::DriveState driveState = FmUtils::queryDriverInfo( path ).driveState();
-    if( driveState & FmDriverInfo::EDriveAvailable ) {
+    if( FmUtils::isDriveAvailable( path ) ) {
         if( !FmUtils::isPathAccessabel( checkedPath ) ) {
             checkedPath.clear();
         }
@@ -229,6 +238,7 @@
 
     mMainWindow->addView( backupView );
     mMainWindow->setCurrentView( backupView );
+    connect( this, SIGNAL( refreshBackupView() ), backupView, SLOT( refreshBackupView() ) );
 
 }
 
--- a/filemanager/src/filemanager/src/fmviewmanager.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/fmviewmanager.h	Fri May 14 15:42:43 2010 +0300
@@ -30,21 +30,21 @@
 class FmOperationBase;
 class QFileSystemWatcher;
 class FmDriveWatcher;
-class HbDialog;
+class FmDialog;
 
 class FmDlgCloseUnit
 {
 public:
-	FmDlgCloseUnit( HbDialog *dialog );
+	FmDlgCloseUnit( FmDialog *dialog );
 	~FmDlgCloseUnit();
 
 	void addAssociatedDrives( QString drives );
 	void removeAssociatedDrives( QString drives );
 	QString associatedDrives();
-	HbDialog *dialog();
+	FmDialog *dialog();
 
 private:
-	HbDialog *mDialog;
+	FmDialog *mDialog;
 	QString mAssociatedDrives;
 };
 
@@ -96,8 +96,10 @@
     void on_fsWatcher_fileChanged(const QString &path);
     void on_fsWatcher_directoryChanged(const QString &path);
     void on_driveWatcher_driveAddedOrChanged();
+    void on_operationService_notifyFinish( FmOperationBase *operationBase );
 signals:
     void refreshModel( const QString &path  );
+    void refreshBackupView();
 
 private:
        /// create view will push current view to stack
--- a/filemanager/src/filemanager/src/listviewitems.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/listviewitems.cpp	Fri May 14 15:42:43 2010 +0300
@@ -34,10 +34,11 @@
       mDiskNameLabel( 0 ),
       mSizeLabel( 0 ),
       mFreeLabel( 0 ),
-      mCheckBox( 0 )
+      mCheckBox( 0 ),
+      hLayout( 0 )
 
 {
-    init();
+    //init();
 }
 
 DiskListViewItem::~DiskListViewItem()
@@ -58,11 +59,15 @@
 
 HbAbstractViewItem *DiskListViewItem::createItem()
 {
-	return new DiskListViewItem( parentItem() );
+	return new DiskListViewItem( *this );
 }
 
 void DiskListViewItem::updateChildItems()
 {
+    //HbListViewItem::updateChildItems();
+    if( !hLayout ) {
+        init();
+    }
 	QVariant variant = modelIndex().data( Qt::DecorationRole );
 	QIcon icon = qvariant_cast<QIcon>( variant );
     if( icon.isNull() ) {
@@ -92,9 +97,11 @@
 
 void DiskListViewItem::init()
 {
-	QGraphicsLinearLayout *hLayout = new QGraphicsLinearLayout();
+    hLayout = new QGraphicsLinearLayout();
+
 	hLayout->setOrientation( Qt::Horizontal );
-
+	hLayout->addItem(layout());
+	
 	mIconLabel = new HbLabel();
 	mIconLabel->setMinimumWidth(32);
 	hLayout->addItem( mIconLabel );
--- a/filemanager/src/filemanager/src/listviewitems.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/listviewitems.h	Fri May 14 15:42:43 2010 +0300
@@ -26,6 +26,7 @@
 
 class HbCheckBox;
 class HbLabel;
+class QGraphicsLinearLayout;
 
 class DiskListViewItem : public HbListViewItem
 {
@@ -38,7 +39,6 @@
     virtual bool canSetModelIndex( const QModelIndex &index ) const;
     virtual HbAbstractViewItem *createItem();
     virtual void updateChildItems();
-
 private slots:
 	void setCheckedState( int state );
 
@@ -53,6 +53,7 @@
     HbLabel *mSizeLabel;
     HbLabel *mFreeLabel;
     HbCheckBox *mCheckBox;
+    QGraphicsLinearLayout *hLayout;
 };
 
 /* not used
--- a/filemanager/src/filemanager/src/main.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/main.cpp	Fri May 14 15:42:43 2010 +0300
@@ -29,18 +29,21 @@
 
 int main( int argc, char *argv[] )
 {
+    FmLogger::log( "main start" );
     HbApplication app( argc, argv );
     app.setApplicationName( "filemanager" );
 
     QTranslator translator;
     QString lang = QLocale::system().name(); 
     QString path = "z:/resource/qt/translations/"; 
-    translator.load( path + "filemanager_" + lang ); 
+    translator.load( path + "filemanager_" + lang );
     app.installTranslator(&translator);
 
+    FmLogger::log( "main_createMainwindow start" );
     FmMainWindow mw;
+    FmLogger::log( "main_createMainwindow end" );
 
     mw.show(); 
-
+    FmLogger::log( "main end" );
     return app.exec();
 }
--- a/filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.cpp	Fri May 14 15:42:43 2010 +0300
@@ -55,7 +55,7 @@
     
     QString questionText = QString( "file " ) +
         srcFile + QString( " already exist, replace it?" );
-    if( HbMessageBox::question( questionText ) ) {
+    if( FmDlgUtils::question( questionText ) ) {
         *isAccepted = true;
     } else {
         *isAccepted = false;
@@ -183,8 +183,13 @@
             FmOperationFormat *paramFormat = static_cast<FmOperationFormat*>( operationBase );
             QString title( tr( "Drive name ") );  
             QString driveName( paramFormat->driverName() );
-            QString volumeName;
-            while( FmDlgUtils::showTextQuery( title, volumeName, false, FmMaxLengthofDriveName ) ){
+            FmDriverInfo driverInfo = FmUtils::queryDriverInfo( driveName );
+            FmDriverInfo::DriveState state = driverInfo.driveState();
+            if( ( state & FmDriverInfo::EDriveAvailable ) &&
+                ( state & FmDriverInfo::EDriveRemovable ) &&
+                !( state & FmDriverInfo::EDriveMassStorage ) ) { 
+                QString volumeName;
+                while( FmDlgUtils::showTextQuery( title, volumeName, false, FmMaxLengthofDriveName ) ){
                     int err = FmUtils::renameDrive( driveName, volumeName );
                     if ( err == FmErrNone ){
                         HbMessageBox::information( hbTrId( "The name has been changed!" ) );
@@ -197,6 +202,7 @@
                         break;
                     }                
                 }
+            }
             break;
         }
     case FmOperationService::EOperationTypeBackup:
@@ -223,6 +229,18 @@
         case FmErrAlreadyStarted:
             HbMessageBox::information( QString( hbTrId("Operation already started!")) );
             return;
+        case FmErrLocked:
+            HbMessageBox::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!") ) );
+            return;
+        case FmErrCorrupt:
+            HbMessageBox::information( QString( hbTrId("Operation failed because target media is corrupted!") ) );
+            return;
+        case FmErrNotReady:
+            HbMessageBox::information( QString( hbTrId("Operation failed because device is not ready!") ) );
+            return;
         case FmErrDiskFull:
             HbMessageBox::information( QString( hbTrId("Not enough space. Operation cancelled.!")) );
             return;
@@ -308,7 +326,7 @@
         mNote->primaryAction()->setDisabled( true );
     else
         mNote->primaryAction()->setDisabled( false );
-    mNote->exec();
+    mNote->open();
 
 }
 
@@ -339,7 +357,7 @@
     else{
         mNote->primaryAction()->setDisabled( false );       
     }
-    mNote->exec();
+    mNote->open();
 }
 
 void FmOperationResultProcesser::showProgress( QString title, bool cancelable, int maxValue )
@@ -373,7 +391,7 @@
         mNote->primaryAction()->setDisabled( false );
     }
 
-    mNote->exec();
+    mNote->open();
 }
 
 void FmOperationResultProcesser::setProgress( int value )
--- a/filemanager/src/fmbkupenginewrapper/inc/fmbackupsettings.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmbkupenginewrapper/inc/fmbackupsettings.h	Fri May 14 15:42:43 2010 +0300
@@ -69,7 +69,8 @@
         EScheduling,
         EWeekday,
         ETime,
-        ETarget
+        ETarget,
+        EBackupdate
     };
 
 public:
@@ -241,6 +242,14 @@
     QString targetDrive() const;
 
     /**
+     * Gets available backup target drive
+     * if targetDrive exist, return targetDrive
+     * otherwise return other first available backup drive
+     * @return Available backup target drive, empty QString for null
+     */
+    QString availableTargetDrive() const;
+    
+    /**
      * Loads saved backup settings
      */
     void load();
@@ -284,6 +293,10 @@
      */
     QString targetDriveToString( const QString& targetDrive );
     
+    /**
+     * Updates the backup date
+     */
+    void updateBackupDate();
 private:
     /**
      * Gets the count of contents selected
@@ -318,6 +331,11 @@
      */
     FmBackupEntry* createTargetDriveEntry();
 
+    /**
+     * Creates backup date entry
+     */
+    FmBackupEntry* createBackupDateEntry();
+    
     void refreshList();
     void resetAndDestoryBackupEntry();
 private:
@@ -348,10 +366,16 @@
     QString mTargetDrive;
 
     /**
+     * Backup date
+     */
+    QDate mDate;
+    
+    /**
      * Backup setting list items
      */
     QList< FmBackupEntry* > mBackupEntryList;
     
+    
     FmBkupEngine *mBkupEngine;
 };
 
--- a/filemanager/src/fmbkupenginewrapper/inc/fmbkupengine.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmbkupenginewrapper/inc/fmbkupengine.h	Fri May 14 15:42:43 2010 +0300
@@ -84,7 +84,7 @@
     
     void GetRestoreInfoArray( QList<FmBkupDrivesAndOperation* > &drivesAndOperationList,
             QList< FmRestoreInfo > &restoreInfoList,
-            const int aDrive = FmErrNotFound );
+            const QString& aDrive );
     
     void getBackupDriveList( QStringList &driveList );
     
--- a/filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.cpp	Fri May 14 15:42:43 2010 +0300
@@ -98,8 +98,18 @@
 	    QList<FmBkupBackupCategory*> backupCategoryList,
 	    QString drive, quint32 content)
 {
+    FmLogger::log( "FmBkupEnginePrivate::startBackup_with drive: " + drive +
+            "_number:" + QString::number(DriverNameToNumber( drive )));
     if( drive.isEmpty() ) {
         iError = KErrPathNotFound;
+        FmLogger::log( "FmBkupEnginePrivate::startBackup_with return with KErrPathNotFound because drive is empty" );
+        return false;
+    }
+    QStringList backupableDriveList;
+    getBackupDriveList( backupableDriveList );
+    if( !backupableDriveList.contains( drive, Qt::CaseInsensitive ) ) {
+        iError = KErrPathNotFound;
+        FmLogger::log( "FmBkupEnginePrivate::startBackup_with return with KErrPathNotFound because drive is not available" );
         return false;
     }
     QString logString;
@@ -183,10 +193,9 @@
     FmLogger::log( logString );
 
     QList< FmRestoreInfo > restoreInfoList;
-    TInt driveNumber = DriverNameToNumber( drive );
-    GetRestoreInfoArray( drivesAndOperationList, restoreInfoList, driveNumber );
+    GetRestoreInfoArray( drivesAndOperationList, restoreInfoList, drive );
     
-    for ( TInt i( 0 ); i < restoreInfoList.count(); i++ )
+    for ( TInt i( 0 ); i < restoreInfoList.count(); ++i )
         {        
         bool toContinue = false;
         FmRestoreInfo &info = restoreInfoList[ i ];
@@ -405,6 +414,7 @@
 
 int FmBkupEnginePrivate::error()
 {
+    FmLogger::log( "FmBkupEnginePrivate::error:" + QString::number( iError ) );
     switch (iError) 
     {
     case KErrNone: 
@@ -419,6 +429,12 @@
         return FmErrCancel;
     case KErrPathNotFound:
         return FmErrPathNotFound;
+    case KErrLocked:
+        return FmErrLocked;
+    case KErrCorrupt:
+        return FmErrCorrupt;
+    case KErrNotReady:
+        return FmErrNotReady;
     default: 
         return FmErrUnKnown;
     }    
@@ -650,8 +666,9 @@
 
 void FmBkupEnginePrivate::GetRestoreInfoArray( QList<FmBkupDrivesAndOperation* > drivesAndOperationList,
         QList< FmRestoreInfo > &restoreInfoList,
-        const TInt aDrive )
+        const QString& aDrive )
     {
+    int targetDrive = DriverNameToNumber( aDrive );
     FmBackupSettings& settings( *( q->BackupSettingsL() ) );
 
     restoreInfoList.clear();
@@ -684,7 +701,7 @@
         archives,
         params,
         AllowedDriveAttMatchMask(),
-        aDrive );
+        targetDrive );
 
     // Fill restore info
     TInt count( archives.Count() );
@@ -750,6 +767,9 @@
 
 TInt FmBkupEnginePrivate::DriverNameToNumber( QString driverName )
     {
+        if( driverName.isEmpty() ) {
+            return KErrNotFound;
+        }
         TInt drive = 0;
         drive = driverName[0].toUpper().toAscii() - 'A' + EDriveA;
         return drive;
@@ -784,7 +804,6 @@
                 }
             }
         }
-    
     fs.Close();
     }
 
--- a/filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmbkupenginewrapper/private/symbian/fmbkupengine_p.h	Fri May 14 15:42:43 2010 +0300
@@ -77,7 +77,7 @@
     bool StartRestoreL( QList<FmBkupDrivesAndOperation* > drivesAndOperationList );
     void GetRestoreInfoArray( QList<FmBkupDrivesAndOperation* > drivesAndOperationList,
             QList< FmRestoreInfo > &restoreInfoList,
-            const TInt aDrive = KErrNotFound );
+            const QString& aDrive );
     
     void getBackupDriveList( QStringList &driveList );
 
--- a/filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.cpp	Fri May 14 15:42:43 2010 +0300
@@ -425,3 +425,9 @@
     return driverName;
 }
 
+void FmBkupEnginePrivate::getBackupDriveList( QStringList &driveList )
+    {
+    driveList.append("E:/");
+    driveList.append("F:/");
+    }
+
--- a/filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmbkupenginewrapper/private/win32/fmbkupengine_p.h	Fri May 14 15:42:43 2010 +0300
@@ -57,11 +57,12 @@
     void GetRestoreInfoArray( QList<FmBkupDrivesAndOperation* > drivesAndOperationList,
             QList< FmRestoreInfo > &restoreInfoList,
             const int aDrive = 0 );
+    void getBackupDriveList( QStringList &driveList );
 private:
     int DriverNameToNumber( QString driverName );
     QString NumberToDriverName( int driver );
     
-    TBool HasMultipleBackupTargets();
+//    TBool HasMultipleBackupTargets();
 
 signals:
     void notifyPreparing( bool cancelable );
--- a/filemanager/src/fmbkupenginewrapper/src/fmbackupsettings.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmbkupenginewrapper/src/fmbackupsettings.cpp	Fri May 14 15:42:43 2010 +0300
@@ -90,6 +90,21 @@
     return mTargetDrive;
 }
 
+QString FmBackupSettings::availableTargetDrive() const
+{
+    QString targetDrive;
+    QStringList driveList;
+    mBkupEngine->getBackupDriveList( driveList );
+    if( !driveList.isEmpty() ) {
+        if( driveList.contains( mTargetDrive ) ) {
+            targetDrive =  mTargetDrive;
+        } else {
+            targetDrive = driveList.first();
+        }
+    }
+    return targetDrive;
+}
+
 int FmBackupSettings::contentsSelected() const
 {
     int ret( 0 );
@@ -175,6 +190,19 @@
     return CreateEntry( title, tips, FmBackupEntry::ETarget );
 }
 
+FmBackupEntry* FmBackupSettings::createBackupDateEntry()
+{
+    QString tips;
+    if( mDate.isNull() )
+        {
+        tips =  "No previous backups created" ;
+        }
+    else
+        {
+        tips = QString( "Backup Created " + mDate.toString( "dd.MM.yyyy" ) );
+        }    
+    return CreateEntry( QString(""), tips, FmBackupEntry::EBackupdate);
+}
 QString FmBackupSettings::contentToString( const quint32 content )
 {
     QString ret( constFileManagerBackupSettingsContentAll );
@@ -294,6 +322,9 @@
         entry = createTargetDriveEntry();
         mBackupEntryList.push_back( entry );
     }
+    
+    entry = createBackupDateEntry();
+    mBackupEntryList.push_back( entry );
 }
 
 void FmBackupSettings::resetAndDestoryBackupEntry()
@@ -316,7 +347,7 @@
     mBkupEngine->getBackupDriveList( driveList );
     QString defaultDrive( driveList.first() );
    
-    
+    QDate date;
     QSettings settings("Nokia", "FileManager");
 
     settings.beginGroup("BackupConfigure");
@@ -326,7 +357,7 @@
     mWeekday = (TFileManagerBackupWeekday)(settings.value("weekday", EFileManagerBackupWeekdayMonday ).toInt()); // monday for default value
     mTime = (settings.value("time", QTime::currentTime() ).toTime()); // empty for default
     mTargetDrive = (settings.value("targetDrive", defaultDrive ) ).toString();  // C for default
-
+    mDate = (settings.value("backupDate", date)).toDate();
     settings.endGroup();
     refreshList();
 }
@@ -343,8 +374,14 @@
     settings.setValue( "weekday", mWeekday );
     settings.setValue( "time", mTime.toString() );
     settings.setValue( "targetDrive", mTargetDrive );
-
+    settings.setValue( "backupDate", mDate.toString( Qt::ISODate ) );
     settings.endGroup();
 
     refreshList();
 }
+
+void FmBackupSettings::updateBackupDate()
+{
+    mDate.setDate( QDate::currentDate().year(), QDate::currentDate().month(), QDate::currentDate().day() );
+    save();
+}
--- a/filemanager/src/fmbkupenginewrapper/src/fmbkupengine.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmbkupenginewrapper/src/fmbkupengine.cpp	Fri May 14 15:42:43 2010 +0300
@@ -88,7 +88,7 @@
     
 void FmBkupEngine::GetRestoreInfoArray( QList<FmBkupDrivesAndOperation* > &drivesAndOperationList,
         QList< FmRestoreInfo > &restoreInfoList,
-        const int aDrive )
+        const QString& aDrive )
 {
     d->GetRestoreInfoArray( drivesAndOperationList, restoreInfoList, aDrive );
 }
--- a/filemanager/src/fmbkupenginewrapper/src/fmrestoresettings.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmbkupenginewrapper/src/fmrestoresettings.cpp	Fri May 14 15:42:43 2010 +0300
@@ -60,7 +60,8 @@
 
     QList< FmRestoreInfo > restoreInfoList;
     
-    mEngine.GetRestoreInfoArray( drivesAndOperationList, restoreInfoList );
+    QString targetDrive = mEngine.BackupSettingsL()->availableTargetDrive();
+    mEngine.GetRestoreInfoArray( drivesAndOperationList, restoreInfoList, targetDrive );
     
 
     // fetch info list from engine, and then init the entry list for display
--- a/filemanager/src/fmfiledialog/fmfiledialog.pro	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmfiledialog/fmfiledialog.pro	Fri May 14 15:42:43 2010 +0300
@@ -31,13 +31,13 @@
 	    -lcone \
             -ldirectorylocalizer
             
-    TARGET.UID3 = 0x2002BCC2
+    TARGET.UID3 = 0x2002BCC3
 
     # export headers to app
-#    EXPORT_PLATFORM_HEADERS += \
-#                             ../../filemanager_plat/inc/fmglobal.h \
-#                             ../../filemanager_plat/inc/fmfiledialog.h
-#    
-#    headers.sources = $$EXPORT_PLATFORM_HEADERS
-#    for(header, headers.sources):BLD_INF_RULES.prj_exports += "./$$header $$APP_LAYER_PLATFORM_EXPORT_PATH($$basename(header))"
+    EXPORT_PLATFORM_HEADERS += \
+                             ../../filemanager_plat/inc/fmglobal.h \
+                             ../../filemanager_plat/inc/fmfiledialog.h
+    
+    headers.sources = $$EXPORT_PLATFORM_HEADERS
+    for(header, headers.sources):BLD_INF_RULES.prj_exports += "./$$header $$APP_LAYER_PLATFORM_EXPORT_PATH($$basename(header))"
 }
--- a/filemanager/src/fmfiledialog/src/fmfiledialog.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmfiledialog/src/fmfiledialog.cpp	Fri May 14 15:42:43 2010 +0300
@@ -32,6 +32,7 @@
 #include "hblineedit.h"
 
 #include <QGraphicsLinearLayout>
+#include <QEventLoop>
 
 FmFileDialog::FmFileDialog( QGraphicsItem *parent ) : 
     HbDialog( parent ), d_ptr( new FmFileDialogPrivate( this ) )
@@ -136,13 +137,18 @@
 
 bool FmFileDialog::exec()
 {
-    if ( d_ptr->isOkAction( HbDialog::exec() ) ) {
+    HbDialog::open( this, SLOT(dialogClosed(HbAction*)) );
+    d_ptr->eventLoop().exec();
+    
+    if ( d_ptr->isOkAction( d_ptr->retAction() ) ) {
         return true;
     } else {
         return false ;
     }
 }
 
-
-
-
+void FmFileDialog::dialogClosed(HbAction *action)
+{
+    d_ptr->setRetAction( action );
+    d_ptr->eventLoop().exit();
+}
--- a/filemanager/src/fmfiledialog/src/fmfiledialog_p.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmfiledialog/src/fmfiledialog_p.cpp	Fri May 14 15:42:43 2010 +0300
@@ -357,4 +357,19 @@
     return false;
 }
 
+void FmFileDialogPrivate::setRetAction( HbAction *action )
+{
+    mRetAction = action;
+}
+
+HbAction *FmFileDialogPrivate::retAction()
+{
+    return mRetAction;
+}
+
+QEventLoop &FmFileDialogPrivate::eventLoop()
+{
+    return mEventLoop;
+}
+    
 #include "moc_fmfiledialog.cpp"
--- a/filemanager/src/fmfiledialog/src/fmfiledialog_p.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmfiledialog/src/fmfiledialog_p.h	Fri May 14 15:42:43 2010 +0300
@@ -20,8 +20,10 @@
 #ifndef FMFILEDIALOG_P_H
 #define FMFILEDIALOG_P_H
 
+#include "fmfiledialog.h"
+
 #include <QDir>
-#include "fmfiledialog.h"
+#include <QEventLoop>
 
 class HbPushButton;
 class FmFileWidget;
@@ -64,7 +66,11 @@
     QString currentPath() const;
     QString selectedFile() const;
     bool isOkAction( HbAction *action );
-
+    
+    void setRetAction( HbAction *action );
+    HbAction *retAction();
+    QEventLoop &eventLoop();
+        
 protected:
     void createAndSetActions(const QString & primaryActionText,const QString & secondaryActionText);
     void createContentWidget();
@@ -81,7 +87,7 @@
 
     void setTitle( const QString &str );        
     void setRootPath( const QString &pathName );
-
+    
 public:
     void _q_handleUpButton();
     void _q_handleTextChanged(const QString &text);
@@ -111,6 +117,9 @@
 
     QString mCaptionHead;
     FmFileDialogArgs          mArgs;
+    
+    HbAction *mRetAction;
+    QEventLoop mEventLoop;
 };
 
 #endif // FMFILEDIALOG_P_H
--- a/filemanager/src/fmfiledialog/src/fmfilewidget.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmfiledialog/src/fmfilewidget.cpp	Fri May 14 15:42:43 2010 +0300
@@ -20,6 +20,7 @@
 #include "fmutils.h"
 #include "fmdrivemodel.h"
 #include "fmdrivewatcher.h"
+#include "fmcommon.h"
 
 #include "hbstyle.h"
 #include "hbabstractitemview.h"
@@ -65,42 +66,64 @@
 
 void FmFileWidget::setRootPath( const QString &pathName )
 {
+    FmLogger::log( "FmFileWidget::setRootPath start" );
     if( pathName.isEmpty() || !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 );
+        FmLogger::log( "FmFileWidget::setRootPath set dir model end" );
         mListView->setRootIndex( mDirModel->index( pathName ) );
+        FmLogger::log( "FmFileWidget::setRootPath set rootIndex" );
         emit pathChanged( pathName );
     }    
+    FmLogger::log( "FmFileWidget::setRootPath end" );
 }
-
-
 void FmFileWidget::on_list_activated( const QModelIndex &index )
+    {
+    mActivatedModelIndex = index;
+    emit listActivated();
+    }
+
+void FmFileWidget::on_listActivated()
 {
+    FmLogger::log("FmFileWidget::on_list_activated start" );
     if( mCurrentModel == mDriveModel ) {
-        QString driveName = mDriveModel->driveName( index );
+        QString driveName = mDriveModel->driveName( mActivatedModelIndex );
         QString checkedPath = FmUtils::checkDriveToFolderFilter( driveName );
         if( checkedPath.isEmpty() ) {
+            FmLogger::log("FmFileWidget::on_list_activated end becaise checkedpath empty" );
             return;
         }
 
+        FmLogger::log("FmFileWidget::on_list_activated setModel dir start" );
         setModel( mDirModel );
+        FmLogger::log("FmFileWidget::on_list_activated setModel dir end" );
         mListView->setRootIndex( mDirModel->index( 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(index) ) {
-            changeRootIndex( index );
+        if ( mDirModel->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( index ) );
+            QFileInfo fileInfo( mDirModel->filePath( mActivatedModelIndex ) );
             if( fileInfo.isFile() ) {
                 emit fileActivated( fileInfo.fileName() );
+                FmLogger::log("FmFileWidget::on_list_activated finish emit fileActivated" );
             }
         }
     } else {
         Q_ASSERT( false );
     }
+    FmLogger::log("FmFileWidget::on_list_activated end" );
 }
 
 void FmFileWidget::setModelFilter( QDir::Filters filters )
@@ -115,7 +138,9 @@
 
 void FmFileWidget::changeRootIndex( const QModelIndex &index )
 {
+    FmLogger::log("FmFileWidget::changeRootIndex start" );
     if( mCurrentModel != mDirModel ) {
+        FmLogger::log("FmFileWidget::changeRootIndex end because model not equal dirmodel" );
         return;
     }
 
@@ -124,6 +149,7 @@
     QFileInfo fileInfo = mDirModel->fileInfo( mListView->rootIndex() );
     QString string = fileInfo.absoluteFilePath();
     emit pathChanged( string );
+    FmLogger::log("FmFileWidget::changeRootIndex end" );
 }
 
 void FmFileWidget::init()
@@ -154,7 +180,9 @@
 //    QMetaObject::connectSlotsByName( this );
     connect( mListView, SIGNAL( activated( QModelIndex ) ),
         this, SLOT( on_list_activated( QModelIndex ) ) );
-    
+    connect( this, SIGNAL( listActivated() ),
+        this, SLOT( on_listActivated() ), Qt::QueuedConnection );
+        
     connect( mDriveWatcher, SIGNAL( driveAddedOrChanged() ),
             this, SLOT( on_driveWatcher_driveAddedOrChanged() ) );
     
--- a/filemanager/src/fmfiledialog/src/fmfilewidget.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/fmfiledialog/src/fmfilewidget.h	Fri May 14 15:42:43 2010 +0300
@@ -53,9 +53,11 @@
 signals:
     void pathChanged( const QString &path );
     void fileActivated( const QString &path );
+    void listActivated();
 
 private slots:
     void on_list_activated( const QModelIndex &index );
+    void on_listActivated();
     void on_driveWatcher_driveAddedOrChanged();
 
 private:
@@ -71,6 +73,8 @@
 
     QAbstractItemModel *mCurrentModel;
     FmDriveWatcher  *mDriveWatcher;
+    
+    QModelIndex mActivatedModelIndex;
 
 };
 
--- a/filemanager/src/inc/commonutils.pri	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/inc/commonutils.pri	Fri May 14 15:42:43 2010 +0300
@@ -34,6 +34,9 @@
                         $$PWD/fmdrivewatcher/private/symbian/fmdriveevent.cpp
 }
 win32 {
+    INCLUDEPATH += $$PWD/fmdrivewatcher/
+    INCLUDEPATH += $$PWD/fmdrivewatcher/private/win32/
+
     INTERNAL_HEADERS += $$PWD/fmdrivewatcher/private/win32/fmdrivewatcherprivate.h
 
     INTERNAL_SOURCES += $$PWD/fmutils_win.cpp \
--- a/filemanager/src/inc/fmdefine.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/inc/fmdefine.h	Fri May 14 15:42:43 2010 +0300
@@ -47,6 +47,8 @@
 #define  FmErrBadName                   -26
 #define  FmErrPathNotFound              -27
 #define  FmErrRemoveDefaultFolder       -28
+#define  FmErrLocked                    -29
+#define  FmErrCorrupt                   -30
 
 #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
@@ -59,5 +61,6 @@
 #define Folder_C_Data "C:/Data"
 
 #define FmMaxLengthofDriveName           11
+#define FmMaxLengthofDrivePassword       8
 
 #endif 
--- a/filemanager/src/inc/fmfileiconprovider.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/inc/fmfileiconprovider.cpp	Fri May 14 15:42:43 2010 +0300
@@ -47,8 +47,10 @@
                 if( driveState & FmDriverInfo::EDriveMassStorage ) {
                     // Mass Storage
                     return QIcon( massMemoryIcon );
-                }
-                else{
+                } else if( driveState & FmDriverInfo::EDriveUsbMemory ) {
+                    // Usb Memory
+                    return QIcon( usbMemoryIcon );
+                } else{
                     //Memory Card
                     return QIcon( mmcIcon );
                 }
--- a/filemanager/src/inc/fmlogger.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/inc/fmlogger.h	Fri May 14 15:42:43 2010 +0300
@@ -24,7 +24,7 @@
 #include <QString>
 #include <QFile>
 #include <QTextStream>
-
+#include <QDateTime>
 class FmLogger
 {
 public:
@@ -32,14 +32,14 @@
     static bool log( const QString &log )
     {
 #ifdef _DEBUG_LOG_ENABLE_
+        QString logStr( QDateTime::currentDateTime().toString("hh:mm:ss:zzz") + " " + log + "\r\n" );    
         QFile file( FMLOG_PATH );
         if ( !file.open( QIODevice::WriteOnly | QIODevice::Append ) )
         {
             return false;
         }
         QTextStream out( &file );
-        out << log;
-        out << "\r\n";
+        out << logStr;
 #else
         Q_UNUSED( log );
 #endif
--- a/filemanager/src/inc/fmutils.h	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/inc/fmutils.h	Fri May 14 15:42:43 2010 +0300
@@ -28,23 +28,24 @@
 public:
     enum driveState
     {
-        EDriveNotPresent = 0x1,
-        EDriveLocked = 0x2,
-        EDriveCorrupted = 0x4,
-        EDriveWriteProtected = 0x8,
-        EDriveRemovable = 0x10,
-        EDriveRom = 0x20,
-        EDriveFormattable = 0x40,
-        EDriveFormatted = 0x80,
-        EDriveLockable = 0x100,
-        EDrivePasswordProtected = 0x200,
-        EDriveBackupped = 0x400,
-        EDriveConnected = 0x800,
-        EDriveEjectable = 0x1000,
-        EDriveInUse = 0x2000,
-        EDriveMassStorage = 0x4000,
-        EDriveRam = 0x8000,
-        EDriveAvailable = 0x10000
+        EDriveNotPresent = 0x1, // true when Drive have not inserted, for example, MMC Card
+        EDriveAvailable = 0x2,  // false when drive is locked or corrupted, for example MMC Card
+        EDriveLocked = 0x4,
+        EDriveCorrupted = 0x8,
+        EDriveWriteProtected = 0x10,
+        EDriveRemovable = 0x20,
+        EDriveRom = 0x40,
+        EDriveFormattable = 0x80,
+        EDriveFormatted = 0x100,
+        EDriveLockable = 0x200,
+        EDrivePasswordProtected = 0x400,
+        EDriveBackupped = 0x800,
+        EDriveConnected = 0x1000,
+        EDriveEjectable = 0x2000,
+        EDriveInUse = 0x4000,
+        EDriveMassStorage = 0x8000,
+        EDriveRam = 0x10000,
+        EDriveUsbMemory = 0x20000,
      };
     Q_DECLARE_FLAGS( DriveState, driveState )
     
@@ -87,7 +88,6 @@
 	static QString getDriveLetterFromPath( const QString &path );
     static FmDriverInfo queryDriverInfo( const QString &driverName );
     static QString formatStorageSize( quint64 size );
-    //static quint32 getDriverState( const QString &driverName );
     static int removeDrivePwd( const QString &driverName, const QString &Pwd );
     static int unlockDrive( const QString &driverName, const QString &Pwd );
     static int checkDrivePwd( const QString &driverName, const QString &pwd);
@@ -119,6 +119,10 @@
     static QString getBurConfigPath( QString appPath );
     static bool isDefaultFolder( const QString &folderPath  );
     static QString Localize( const QString &path );
+    
+    static int getMaxFileNameLength();
+    static bool checkMaxPathLength( const QString& path );
+    static bool checkFolderFileName( const QString& name );
 
 };
 
--- a/filemanager/src/inc/fmutils_s60.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/inc/fmutils_s60.cpp	Fri May 14 15:42:43 2010 +0300
@@ -40,7 +40,7 @@
 #include <xqaiwrequest.h>
 #include <xqappmgr.h>
 
-#include <shareuidialog.h>
+#include <shareui.h>
 
 #define BURCONFIGFILE  "z:/private/2002BCC0/burconfig.xml"
 
@@ -70,17 +70,29 @@
     drive = driverName[0].toUpper().toAscii() - 'A' + EDriveA;
 
     quint32 state( 0 );
-    int err = fs.Volume( volumeInfo, drive );
+    int volumeInfoErr( KErrNone );
+    int driveInfoErr( KErrNone );
+    int errorCode( KErrNone );
+    volumeInfoErr = fs.Volume( volumeInfo, drive );
+    errorCode = volumeInfoErr;
     QString volumeName( (QChar*)( volumeInfo.iName.Des().Ptr() ), volumeInfo.iName.Length() );
-
-    if( err == KErrNone ) {
-        TDriveInfo driveInfo = volumeInfo.iDrive;
+    
+    TDriveInfo driveInfo;
+    if( volumeInfoErr == KErrNone ) {
+        driveInfo = volumeInfo.iDrive;
+    } else {
+        driveInfoErr = fs.Drive( driveInfo, drive );
+        if( driveInfoErr != KErrNone ) {
+            errorCode = driveInfoErr;
+        }
+    }
+    
+    if( volumeName == KErrNone || driveInfoErr == KErrNone ) {
+        //TDriveInfo driveInfo = volumeInfo.iDrive;
     
         quint32 drvStatus( 0 );
-        err = DriveInfo::GetDriveStatus( fs, drive, drvStatus );
+        int err = DriveInfo::GetDriveStatus( fs, drive, drvStatus );
         if( err == KErrNone ) {
-            QString logString = driverName +':'+ QString::number( drvStatus);
-            FmLogger::log(logString);
             
             if ( ( drvStatus & DriveInfo::EDriveInternal ) &&
                  ( drvStatus & DriveInfo::EDriveExternallyMountable ) ){
@@ -89,7 +101,11 @@
                 state |= FmDriverInfo::EDriveMassStorage | FmDriverInfo::EDriveRemovable;
             }
         
-            
+            if ( drvStatus & DriveInfo::EDriveUsbMemory )
+                {
+                state |= FmDriverInfo::EDriveUsbMemory;
+                }
+
             if ( drvStatus & DriveInfo::EDriveRom ){
                 state |= FmDriverInfo::EDriveRom;  
             }
@@ -123,12 +139,36 @@
                 state |= FmDriverInfo::EDriveNotPresent;    
             }
         }
+        // If memory card is not ready but type is present,
+        // then check if it is reserved.
+        if( err == KErrNone && volumeInfoErr == KErrNotReady &&
+            driveInfo.iType != EMediaNotPresent )
+            {
+            // Check USB file transfer state
+            TInt prop( ECoreAppUIsUSBFileTransferUninitialized );
+            RProperty::Get(
+                KPSUidCoreApplicationUIs,
+                KCoreAppUIsUSBFileTransfer, prop );
+            if ( prop == ECoreAppUIsUSBFileTransferActive )
+                {
+                errorCode = KErrInUse; // Reserved for file transfer
+                }
+            }
+        if( err!= KErrNone )
+            {
+            errorCode = err;
+            }
     }
-    //handle error code
-    switch( err )
+
+    // handle error code
+    // volumeInfoErr will occur while drive is lock,corrupted...
+    // driveInfoErr can not be promoted for locked, corrupted drive.
+    // so we can not use driveInfoErr to justify EDriveAvailable
+    switch( errorCode )
     {
     case KErrNone:
-        state |= FmDriverInfo::EDriveAvailable;
+        // this drive could be used as it is not be locked, or corrupt.
+        state |= FmDriverInfo::EDriveAvailable; 
         break;
     case KErrLocked:
         state |= FmDriverInfo::EDriveLocked;
@@ -136,10 +176,19 @@
     case KErrCorrupt:
         state |= FmDriverInfo::EDriveCorrupted;
         break;
+    case KErrInUse:
+        state |= FmDriverInfo::EDriveInUse;
+        break;
     default: // other errors
         state |= FmDriverInfo::EDriveNotPresent;
         break;
     }
+    QString logString ( "FmUtils::queryDriverInfo_" + driverName + 
+            "_volumeInfoErr:" + QString::number( volumeInfoErr ) +
+            "_driveInfoErr:" + QString::number( driveInfoErr ) +
+            "_errorCode:" + QString::number( errorCode ) + 
+            "_driveSatus:" + QString::number( state ) );
+    FmLogger::log( logString );
     return FmDriverInfo( volumeInfo.iSize, volumeInfo.iFree, driverName, volumeName, state );
 }
 
@@ -155,81 +204,6 @@
 	    return QString::number( size / ( 1024.0 * 1024.0 * 1024.0 ), 'f', 1 ) + " GB";	    
 	}
 }
-/*
-quint32 FmUtils::getDriverState( const QString &driverName )
-{    
-    CCoeEnv *env = CCoeEnv::Static();
-    RFs& fs = env->FsSession();
-
-    TVolumeInfo volumeInfo;
-    TInt drive = 0;
-    drive = driverName[0].toUpper().toAscii() - 'A' + EDriveA;
-
-    quint32 state( 0 );
-    int err = fs.Volume( volumeInfo, drive );
-    QString volumeName( (QChar*)( volumeInfo.iName.Des().Ptr() ), volumeInfo.iName.Length() );
-
-    //handle error code
-	if( err != KErrNone ) {
-            state |= FmDriverInfo::EDriveNotPresent;
-	}
-	if ( err == KErrLocked ) {
-            state |= FmDriverInfo::EDriveLocked;
-	}
-	
-    TDriveInfo driveInfo = volumeInfo.iDrive;
-
-    quint32 drvStatus( 0 );
-    DriveInfo::GetDriveStatus( fs, drive, drvStatus );
-
-    QString logString = driverName +':'+ QString::number( drvStatus);
-    FmLogger::log(logString);
-    
-    if ( ( drvStatus & DriveInfo::EDriveInternal ) &&
-         ( drvStatus & DriveInfo::EDriveExternallyMountable ) ){
-        // Handle mass storage bits here
-
-        state |= FmDriverInfo::EDriveMassStorage | FmDriverInfo::EDriveRemovable;
-    }
-
-    
-    if ( drvStatus & DriveInfo::EDriveRom ){
-        state |= FmDriverInfo::EDriveRom;  
-    }
-    
-    if ( drvStatus & DriveInfo::EDriveRam ){
-        state |= FmDriverInfo::EDriveRam;  
-    }
-
-    if ( driveInfo.iMediaAtt & KMediaAttFormattable ){
-        state |= FmDriverInfo::EDriveFormattable;
-    }
-    if ( driveInfo.iMediaAtt & KMediaAttWriteProtected ){
-        state |= FmDriverInfo::EDriveWriteProtected;
-    }
-    if ( driveInfo.iMediaAtt & KMediaAttHasPassword ){
-        state |= FmDriverInfo::EDrivePasswordProtected;
-    }    
-    if ( driveInfo.iMediaAtt & KMediaAttLocked ){
-        state |= FmDriverInfo::EDriveLocked;
-    }
-
-    if ( driveInfo.iDriveAtt & KDriveAttRemovable ){
-        state |= FmDriverInfo::EDriveRemovable;
-
-        if ( drvStatus & DriveInfo::EDriveSwEjectable ){
-            state |= FmDriverInfo::EDriveEjectable;
-        }
-    }
-    
-    if( driveInfo.iType == EMediaNotPresent ){
-        state |= FmDriverInfo::EDriveNotPresent;    
-    }
-    
-    return state;
-
-}
-*/
 
 int FmUtils::removeDrivePwd( const QString &driverName,  const QString &Pwd )
 {
@@ -373,7 +347,7 @@
 
 int FmUtils::renameDrive( const QString &driverName, const QString &newVolumeName)
 {
-    foreach( QChar ch, newVolumeName )
+    foreach( const QChar &ch, newVolumeName )
     {
         bool a = ch.isSpace();
         bool b = ch.isLetterOrNumber();
@@ -742,12 +716,12 @@
             if( driveState & FmDriverInfo::EDriveRemovable ) {
                 if( driveState & FmDriverInfo::EDriveMassStorage ) {
                     volumeName.append( QObject::tr( "Mass Storage" ) );  
-                }
-                else{
+                } else if( driveState & FmDriverInfo::EDriveUsbMemory ) {
+                    volumeName.append( QObject::tr( "Usb Memory" ) );
+                } else{
                     volumeName.append( QObject::tr( "Memory Card" ) );
                 }
-            }
-            else{
+            } else{
                 volumeName.append( QObject::tr( "Phone Memory" ) );
             }
         }
@@ -861,3 +835,37 @@
     }
     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;
+}
--- a/filemanager/src/inc/fmutils_win.cpp	Mon May 03 12:24:39 2010 +0300
+++ b/filemanager/src/inc/fmutils_win.cpp	Fri May 14 15:42:43 2010 +0300
@@ -147,7 +147,7 @@
 int FmUtils::renameDrive( const QString &driverName, const QString &newVolumeName)
 {
     Q_UNUSED( driverName );
-    foreach( QChar ch, newVolumeName )
+    foreach( const QChar &ch, newVolumeName )
     {
         // If not alphadigit or space, return error
         if( !ch.isLetterOrNumber() && !ch.isSpace() )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/tsrc/tsrc.pro	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,26 @@
+#
+# 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: 
+#
+
+TEMPLATE = subdirs
+SUBDIRS = unit/unit_backuprestoresettings
+
+CONFIG += ordered
+#CONFIG += symbian_test
+test.depends = first
+test.CONFIG += recursive
+autotest.depends = first
+autotest.CONFIG += recursive
+QMAKE_EXTRA_TARGETS += test autotest
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/tsrc/unit/unit_backuprestoresettings/runtest.bat	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,19 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+\epoc32\RELEASE\WINSCW\udeb\unit_backuprestoresettings.exe -xml -o c:\unit_backuprestoresettings.xml
+copy \epoc32\winscw\c\unit_backuprestoresettings.xml
+del \epoc32\winscw\c\unit_backuprestoresettings.xml
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/tsrc/unit/unit_backuprestoresettings/src/unit_backuprestoresettings.cpp	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,289 @@
+/*
+* 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: This class is test case for backupsettings and restoresettings
+*
+*/
+
+#include <QtTest/QtTest>
+
+#include "fmbackupsettings.h"
+#include "fmrestoresettings.h"
+#include "fmbkupengine.h"
+#include <QStringList>
+
+class TestSettings: public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void testTestSettingsContentAll();
+    void testTestSettingsContentOne();
+    void testTestSettingsContentTwo();
+
+    void testContentToString();
+    void testContentToString_data();
+
+    void testSchedulingToString();
+    void testSchedulingToString_data();
+
+    void testWeekdayToString();
+    void testWeekdayToString_data();
+
+    void testFmBackupEntry();
+
+    void testFmRestoreInfo();
+    void testFmRestoreEntry();
+
+    void cleanupTestCase();       // Finalize test data
+
+private:
+      FmBackupSettings *settings;
+};
+
+void TestSettings::cleanupTestCase()
+{
+    QCoreApplication::processEvents();
+}
+
+void TestSettings::testTestSettingsContentAll()
+{
+    FmBkupEngine *backupEngine = new FmBkupEngine( this );
+    settings = new FmBackupSettings( backupEngine );
+    QTime time = QTime::currentTime();
+    settings->setContent(FmBackupSettings::EFileManagerBackupContentAll);
+    settings->setScheduling(FmBackupSettings::EFileManagerBackupScheduleWeekly);
+    settings->setWeekday(FmBackupSettings::EFileManagerBackupWeekdayMonday);
+    settings->setTime(time);
+    settings->setTargetDrive("C:");
+
+    settings->save();
+    delete settings;
+    
+
+    settings = new FmBackupSettings( backupEngine );
+    settings->load();
+
+    QVERIFY(settings->content() == FmBackupSettings::EFileManagerBackupContentAll);
+    QVERIFY(settings->scheduling() == FmBackupSettings::EFileManagerBackupScheduleWeekly);
+    QVERIFY(settings->weekday() == FmBackupSettings::EFileManagerBackupWeekdayMonday);
+    QVERIFY( settings->time().toString() == time.toString() );
+    QVERIFY(settings->targetDrive() == "C:");
+
+    QList< FmBackupEntry* > backupEntryList = settings->backupEntryList();
+    
+    for( int i = 0; i< backupEntryList.count(); i++ )
+    {
+        FmBackupEntry* entry = backupEntryList[i];
+        switch( entry->type() )
+        {
+        case FmBackupEntry::EContents:
+            {
+            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleContents );
+            break;
+            }
+        case FmBackupEntry::EScheduling:
+            {
+            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleScheduling );
+            break;
+            }
+        case FmBackupEntry::EWeekday:
+            {
+            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleWeekday );
+            break;
+            }
+        case FmBackupEntry::ETime:
+            {
+            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleTime );
+            break;
+            }
+        case FmBackupEntry::ETarget:
+            {
+            QVERIFY( entry->title() == constFileManagerBackupSettingsTitleTargetDrive );
+            break;
+            }
+
+        }
+        qDebug( entry->title().toUtf8().data() );
+        qDebug( entry->tips().toUtf8().data() );
+    }
+    delete backupEngine;
+}
+
+
+void TestSettings::testTestSettingsContentOne()
+{
+    FmBkupEngine *backupEngine = new FmBkupEngine( this );
+    settings = new FmBackupSettings( backupEngine );
+    QTime time = QTime::currentTime();
+    settings->setContent(FmBackupSettings::EFileManagerBackupContentSettings | 
+        FmBackupSettings::EFileManagerBackupContentMessages);
+    settings->setScheduling(FmBackupSettings::EFileManagerBackupScheduleWeekly);
+    settings->setWeekday(FmBackupSettings::EFileManagerBackupWeekdayWednesday);
+    settings->setTime(time);
+    settings->setTargetDrive("E:");
+
+    settings->save();
+    delete settings;
+
+    settings = new FmBackupSettings( backupEngine );
+    settings->load();
+
+    QVERIFY(settings->content() == quint32(FmBackupSettings::EFileManagerBackupContentSettings |
+        FmBackupSettings::EFileManagerBackupContentMessages));
+    QVERIFY(settings->scheduling() == FmBackupSettings::EFileManagerBackupScheduleWeekly);
+    QVERIFY(settings->weekday() == FmBackupSettings::EFileManagerBackupWeekdayWednesday);
+    QVERIFY( settings->time().toString() == time.toString() );
+    QVERIFY(settings->targetDrive() == "E:");
+    delete backupEngine;
+}
+
+void TestSettings::testTestSettingsContentTwo()
+{
+    FmBkupEngine *backupEngine = new FmBkupEngine( this );
+    settings = new FmBackupSettings( backupEngine );
+    QTime time = QTime::currentTime();
+    settings->setContent(FmBackupSettings::EFileManagerBackupContentSettings | 
+        FmBackupSettings::EFileManagerBackupContentMessages);
+    settings->setScheduling(FmBackupSettings::EFileManagerBackupScheduleWeekly);
+    settings->setWeekday(FmBackupSettings::EFileManagerBackupWeekdayWednesday);
+    settings->setTime(time);
+    settings->setTargetDrive("E:");
+
+    settings->save();
+    delete settings;
+
+    settings = new FmBackupSettings( backupEngine );
+    settings->load();
+
+    QVERIFY(settings->content() == quint32( FmBackupSettings::EFileManagerBackupContentSettings |
+        FmBackupSettings::EFileManagerBackupContentMessages ) );
+    QVERIFY(settings->scheduling() == FmBackupSettings::EFileManagerBackupScheduleWeekly);
+    QVERIFY(settings->weekday() == FmBackupSettings::EFileManagerBackupWeekdayWednesday);
+    QVERIFY( settings->time().toString() == time.toString() );
+    QVERIFY(settings->targetDrive() == "E:");
+    delete backupEngine;
+}
+
+void TestSettings::testContentToString()
+{
+    QFETCH(quint32, param);
+    QFETCH(QString, value);
+
+    QCOMPARE(FmBackupSettings::contentToString( param ), value);
+}
+
+void TestSettings::testContentToString_data()
+{
+    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;
+}
+
+void TestSettings::testSchedulingToString()
+{
+    QFETCH(int, param);
+    QFETCH(QString, value);
+    FmBkupEngine *backupEngine = new FmBkupEngine( this );
+    settings = new FmBackupSettings( backupEngine );
+    QCOMPARE(settings->schedulingToString( (FmBackupSettings::TFileManagerBackupSchedule)param ), value);
+}
+
+void TestSettings::testSchedulingToString_data()
+{
+    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;
+}
+
+void TestSettings::testWeekdayToString()
+{
+    QFETCH(int, param);
+    QFETCH(QString, value);
+
+    QCOMPARE(FmBackupSettings::weekdayToString( (FmBackupSettings::TFileManagerBackupWeekday)param ), value);
+}
+
+void TestSettings::testWeekdayToString_data()
+{
+
+    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;
+}
+
+
+void TestSettings::testFmBackupEntry()
+{
+    FmBackupEntry backupEntry( "title","tips", FmBackupEntry::EContents );
+    QVERIFY( backupEntry.title() == "title" );
+    QVERIFY( backupEntry.tips() == "tips" );
+    QVERIFY( backupEntry.type() == FmBackupEntry::EContents );
+
+    FmBackupEntry backupEntryCopy( backupEntry );
+    QVERIFY( backupEntryCopy.title() == "title" );
+    QVERIFY( backupEntryCopy.tips() == "tips" );
+    QVERIFY( backupEntryCopy.type() == FmBackupEntry::EContents );
+
+}
+
+void TestSettings::testFmRestoreInfo()
+{
+    QDateTime dateTime = QDateTime::currentDateTime();
+    FmRestoreInfo restoreInfo((quint32)FmBackupSettings::EFileManagerBackupContentSettings, dateTime, "E:" );
+    QVERIFY( restoreInfo.content() == (quint32)FmBackupSettings::EFileManagerBackupContentSettings );
+    QVERIFY( restoreInfo.dateTime().toString() == dateTime.toString() );
+    QVERIFY( restoreInfo.drive() == "E:" );
+
+    FmRestoreInfo restoreInfoCopy( restoreInfo );
+    QVERIFY( restoreInfoCopy.content() == restoreInfo.content() );
+    QVERIFY( restoreInfoCopy.dateTime().toString() == restoreInfo.dateTime().toString() );
+    QVERIFY( restoreInfoCopy.drive() == restoreInfo.drive() );
+
+    FmRestoreInfo restoreInfoNext = restoreInfo;
+    QVERIFY( restoreInfoNext.content() == restoreInfo.content() );
+    QVERIFY( restoreInfoNext.dateTime().toString() == restoreInfo.dateTime().toString() );
+    QVERIFY( restoreInfoNext.drive() == restoreInfo.drive() );
+}
+
+void TestSettings::testFmRestoreEntry()
+{
+    QDateTime dateTime = QDateTime::currentDateTime();
+    FmRestoreInfo restoreInfo((quint32)FmBackupSettings::EFileManagerBackupContentSettings, dateTime, "E:" );
+
+    FmRestoreEntry restoreEntry( "displayText", restoreInfo );
+    QVERIFY( restoreEntry.text() == "displayText");
+    QVERIFY( restoreEntry.restoreInfo().content() == (quint32)FmBackupSettings::EFileManagerBackupContentSettings );
+    QVERIFY( restoreEntry.restoreInfo().dateTime().toString() == dateTime.toString() );
+    QVERIFY( restoreEntry.restoreInfo().drive() == "E:" );
+}
+
+QTEST_MAIN(TestSettings)
+#include "unit_backuprestoresettings.moc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/tsrc/unit/unit_backuprestoresettings/unit_backuprestoresettings.pro	Fri May 14 15:42:43 2010 +0300
@@ -0,0 +1,41 @@
+#
+# 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: 
+#
+
+QT += testlib
+CONFIG += qtestlib
+TEMPLATE = app
+TARGET = 
+include ( ../../../src/inc/commoninc.pri )
+DEPENDPATH += .
+INCLUDEPATH += .
+INCLUDEPATH += ../../../src/fmbkupenginewrapper/inc
+TARGET.CAPABILITY = ALL -TCB
+# Input
+SOURCES += src/unit_backuprestoresettings.cpp
+LIBS += -lfmbkupenginewrapper
+
+unix {
+    test.commands = /epoc32/RELEASE/WINSCW/udeb/unit_backuprestoresettings.exe
+    autotest.commands = /epoc32/RELEASE/WINSCW/udeb/unit_backuprestoresettings.exe -xml -o c:/unit_backuprestoresettings.xml
+} else:win32 {
+    test.CONFIG += recursive
+    autotest.CONFIG += recursive
+    build_pass {
+        test.commands =/epoc32/RELEASE/WINSCW/udeb/unit_backuprestoresettings.exe
+        autotest.commands =/epoc32/RELEASE/WINSCW/udeb/unit_backuprestoresettings -xml -o c:/unit_backuprestoresettings.xml
+        }
+}
+QMAKE_EXTRA_TARGETS += test autotest
\ No newline at end of file
--- a/layers.sysdef.xml	Mon May 03 12:24:39 2010 +0300
+++ b/layers.sysdef.xml	Fri May 14 15:42:43 2010 +0300
@@ -6,8 +6,9 @@
 <SystemDefinition name="files" schema="1.5.1">
   <systemModel>
     <layer name="bldfirst_app_layer">
-      <module name="fmbkupengine">
+      <module name="filemanager_components">
         <unit name="fmbkupengine" unitID="presdo.fmbkupengine" bldFile="&layer_real_source_path;/filemanager/src/fmbkupengine/group" mrp="" />
+        <unit name="fmfiledialog" unitID="presdo.fmfiledialog" mrp="" bldFile="&layer_real_source_path;/filemanager/src/fmfiledialog" proFile="fmfiledialog.pro" qmakeArgs="-r -config rom"/>
       </module>
     </layer>
     <layer name="app_layer">
@@ -15,5 +16,10 @@
         <unit unitID="filemanager" mrp="" bldFile="&layer_real_source_path;/filemanager" name="filemanager" proFile="filemanager.pro" qmakeArgs="-r -config rom"/>
       </module>
     </layer>
+    <layer name="qt_unit_test_layer">
+      <module name="filemanager_tests">
+        <unit unitID="presdoe.filemanager_tests" mrp="" bldFile="&layer_real_source_path;/filemanager/tsrc" proFile="tsrc.pro" name="filemanager_tests" qmakeArgs="-r"/>
+      </module>
+    </layer>
   </systemModel>
 </SystemDefinition>
\ No newline at end of file