# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1277305391 -10800 # Node ID b3155376f2b4dd7bfd0779e11728ba66033b9ada # Parent 1d0c87b42e2e383f561283d1f76b71045ebaacfc Revision: 201023 Kit: 2010125 diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/filemanager.pri --- a/filemanager/src/filemanager/filemanager.pri Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/filemanager.pri Wed Jun 23 18:03:11 2010 +0300 @@ -59,7 +59,8 @@ src/components/fmviewdetailsitem.h \ src/components/fmdrivedetailstype.h \ src/components/fmmessagebox.h \ - src/components/fmdialog.h + src/components/fmdialog.h \ + src/components/fmdrivequery.h SOURCES += src/main.cpp \ src/fmdriverlistwidget.cpp \ @@ -101,7 +102,8 @@ src/components/fmviewdetailsitem.cpp \ src/components/fmdrivedetailstype.cpp \ src/components/fmmessagebox.cpp \ - src/components/fmdialog.cpp + src/components/fmdialog.cpp \ + src/components/fmdrivequery.cpp win32 { SOURCES += src/operationservice/fmoperationformat_win.cpp diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/backuprestore/fmbackupview.cpp --- a/filemanager/src/filemanager/src/backuprestore/fmbackupview.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/backuprestore/fmbackupview.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -138,7 +138,16 @@ toolBar()->removeAction( mToolBarAction ); } -void FmBackupView::refreshBackupView() +void FmBackupView::refreshBackupDate() { mMainWidget->updateBackupDate(); } + +void FmBackupView::refreshModel( const QString& path ) +{ + if( !path.isEmpty() ) { + // ignore non-empty refresh signal as it means change of folder/file, not drive. + return; + } + mMainWidget->refreshModel(); +} diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/backuprestore/fmbackupview.h --- a/filemanager/src/filemanager/src/backuprestore/fmbackupview.h Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/backuprestore/fmbackupview.h Wed Jun 23 18:03:11 2010 +0300 @@ -46,7 +46,9 @@ void removeToolBarAction(); public slots: - void refreshBackupView(); + void refreshBackupDate(); + void refreshModel( const QString& path ); + private slots: void on_leftAction_triggered(); diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp --- a/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -354,36 +354,10 @@ void FmBackupWidget::on_changeTargetDrive() { QString title = constFileManagerBackupSettingsTitleTargetDrive; - QStringList queryStringList; - QStringList driveStringList; - - QStringList driveList; - //FmUtils::getDriveList( driveList, true ); - FmViewManager::viewManager()->operationService()->backupRestoreHandler()->getBackupDriveList( driveList ); - QString targetDrive = mBackupSettings->targetDrive(); - int selectIndex = -1; - - int currentIndex = 0; - for( QStringList::const_iterator it = driveList.begin(); it != driveList.end(); ++it ) - { - QString drive = (*it); - drive = FmUtils::removePathSplash( drive ); - QString driveWithVolume = FmUtils::fillDriveVolume( drive, true ); - - driveStringList.push_back( drive ); - queryStringList.push_back( driveWithVolume ); - - if( drive == targetDrive ) - { - // adjust index offset against drive. - selectIndex = currentIndex; - } - ++currentIndex; - } - - if( FmDlgUtils::showSingleSettingQuery( title, queryStringList, selectIndex ) ) - { - mBackupSettings->setTargetDrive( driveStringList.at( selectIndex ) ); + QString drive = FmDlgUtils::showBackupDriveQuery( title ); + if( !drive.isEmpty() && + mBackupSettings->targetDrive().compare( drive, Qt::CaseInsensitive ) != 0 ) { + mBackupSettings->setTargetDrive( drive ); emit doModelRefresh(); } } diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/backuprestore/fmbackupwidget.h --- a/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.h Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.h Wed Jun 23 18:03:11 2010 +0300 @@ -45,12 +45,14 @@ void changeTime(); void changeTargetDrive(); +public slots: + // refresh whole model immediately. + void refreshModel(); + private slots: void on_list_released( const QModelIndex &index ); void on_list_pressed( const QModelIndex &index ); void on_list_scrollingStarted(); - - void refreshModel(); void on_changeContents(); void on_changeScheduling(); diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/components/fmdlgutils.cpp --- a/filemanager/src/filemanager/src/components/fmdlgutils.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/components/fmdlgutils.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -24,6 +24,7 @@ #include "fmutils.h" #include "fmviewmanager.h" #include "fmmessagebox.h" +#include "fmdrivequery.h" #include #include @@ -395,3 +396,22 @@ FmMessageBox msgBox; return msgBox.information( informationText ); } + +QString FmDlgUtils::showBackupDriveQuery( const QString& title ) +{ + QString ret; + + FmDriveQuery *cQuery = new FmDriveQuery(); + cQuery->setHeadingWidget( new HbLabel( title ) ); + + QString sk = ( hbTrId( "cancel" ) ); + + HbAction *primary = new HbAction( sk ); + cQuery->setPrimaryAction( primary ); + + executeDialog( cQuery, QString() ); + ret = cQuery->selectedDrive(); + + delete cQuery; + return ret; +} diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/components/fmdlgutils.h --- a/filemanager/src/filemanager/src/components/fmdlgutils.h Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/components/fmdlgutils.h Wed Jun 23 18:03:11 2010 +0300 @@ -90,6 +90,14 @@ const QString &secondaryButtonText = tr("No") ); static void information( const QString &informationText ); + + /** + * Query drive for backup + * + * @param title Title for query dialog + * @return selected drive name. empty for cancel. + */ + static QString showBackupDriveQuery( const QString& title ); ~FmDlgUtils(void); private: diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp --- a/filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/components/fmdrivedetailstype.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -82,11 +82,12 @@ typeFilters.append( QString( "*.3gp" ) ); typeFilters.append( QString( "*.mp4" ) ); typeFilters.append( QString( "*.nim" ) ); - typeFilters.append( QString( "*.rm" ) ); - typeFilters.append( QString( "*.rv" ) ); + typeFilters.append( QString( "*.rm" ) ); + typeFilters.append( QString( "*.rv" ) ); typeFilters.append( QString( "*.wmv" ) ); typeFilters.append( QString( "*.3g2" ) ); - typeFilters.append( QString( "*.rmvb" ) ); + typeFilters.append( QString( "*.rmvb") ); + typeFilters.append( QString( "*.mkv" ) ); dataGroupList.append( new FmDriveDetailsDataGroup( FmDriveDetailsDataGroup::EGroupVideos, typeFilters )); diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/components/fmdrivequery.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filemanager/src/filemanager/src/components/fmdrivequery.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * + * Description: + * The source file of backup drive query of file manager + */ + +#include "fmdrivequery.h" +#include "fmviewmanager.h" +#include "fmbackuprestorehandler.h" + +#include +#include "hblistview.h" + +FmDriveQuery::FmDriveQuery( QGraphicsItem *parent ) : FmDialog( parent ) +{ + mContentWidget = new QGraphicsWidget(); + setContentWidget(mContentWidget); + + QGraphicsLinearLayout *vLayout = new QGraphicsLinearLayout(); + vLayout->setOrientation( Qt::Vertical ); + + mListView = new HbListView(); + vLayout->addItem( mListView ); + + mListView->setFontSpec( HbFontSpec( HbFontSpec::Primary ) ); + + this->setTimeout( NoTimeout ); + mContentWidget->setLayout( vLayout ); + + connect( mListView, SIGNAL( activated ( const QModelIndex& ) ), this, SLOT( activated( const QModelIndex& ) ) ); + this->setDismissPolicy( NoDismiss ); + + + mDriveModel = new FmDriveModel( this, + FmDriveModel::FillWithVolume | FmDriveModel::FillWithDefaultVolume, this ); + mListView->setModel( mDriveModel ); + + // connect refreshModel signal of viewmanager for drive insert/remove event. + connect( FmViewManager::viewManager(), SIGNAL( refreshModel( QString ) ), + this, SLOT( refreshModel( QString ) ) ); +} + +FmDriveQuery::~FmDriveQuery(void) +{ + +} + +void FmDriveQuery::getDriveList( QStringList &driveList ) +{ + // provide drive list which is got from backup engine wrapper. + FmViewManager::viewManager()->operationService()->backupRestoreHandler()->getBackupDriveList( driveList ); +} + +void FmDriveQuery::activated( const QModelIndex &index ) +{ + QString driveName( mDriveModel->driveName( index ) ); + + // if drive is not available, ignore activate signal. + FmDriverInfo driveInfo = FmUtils::queryDriverInfo( driveName ); + if( !( driveInfo.driveState() & FmDriverInfo::EDriveAvailable ) ) { + return; + } + + mSelectedDrive = driveName; + close(); +} + +QString FmDriveQuery::selectedDrive() const +{ + return mSelectedDrive; +} + +void FmDriveQuery::refreshModel( QString path ) +{ + if( !path.isEmpty() ) { + // ignore non-empty refresh signal as it means change of folder/file, not drive. + return; + } + mDriveModel->refresh(); +} diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/components/fmdrivequery.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filemanager/src/filemanager/src/components/fmdrivequery.h Wed Jun 23 18:03:11 2010 +0300 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * + * Description: + * The header file of backup drive query of of file manager + */ +#ifndef FMDRIVEQUERY_H +#define FMDRIVEQUERY_H + +#include "fmcommon.h" +#include "fmdialog.h" +#include "fmdrivemodel.h" + +#include +#include +#include +#include + +class HbListView; +class QGraphicsWidget; + +// CLASS DECLARATION +/** + * This class is used for drive select query dialog + * + */ +class FmDriveQuery : public FmDialog, public FmDriveListProvider +{ + Q_OBJECT +public: + FmDriveQuery( QGraphicsItem *parent = 0 ); + ~FmDriveQuery(); + QString selectedDrive() const; + + // from FmDriveListProvider + virtual void getDriveList( QStringList &driveList ); + +public slots: + void activated(const QModelIndex &index); + void refreshModel( QString path ); +private: + QGraphicsWidget *mContentWidget; /// Content widget of popup dialog + HbListView *mListView; /// list view + FmDriveModel *mDriveModel; /// drive model + + QString mSelectedDrive; +}; + +#endif //FMDRIVEQUERY_H diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmdriverlistwidget.cpp --- a/filemanager/src/filemanager/src/fmdriverlistwidget.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmdriverlistwidget.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -424,6 +424,9 @@ FmUtils::getDriveList( driveList, true ); if(driveList.count() > 0 ) { mFindTargetPath = driveList.first(); + if( FmUtils::isDriveC( mFindTargetPath ) ) { + mFindTargetPath = QString( Folder_C_Data ); + } } else { mFindTargetPath.clear(); } diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmdriverview.cpp --- a/filemanager/src/filemanager/src/fmdriverview.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmdriverview.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -81,7 +81,7 @@ { mDriverList = new FmDriverListWidget( this ); connect( mDriverList, SIGNAL( activated( const QString& ) ), - this, SLOT( activated( const QString& ) ) ); + this, SLOT( activated( const QString& ) ), Qt::QueuedConnection ); connect( mDriverList, SIGNAL( startSearch( const QString&, const QString& ) ), this, SLOT( startSearch( const QString&, const QString& ) ) ); diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmfilebrowsewidget.cpp --- a/filemanager/src/filemanager/src/fmfilebrowsewidget.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmfilebrowsewidget.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -688,10 +688,12 @@ QString filePath = mModel->filePath( mCurrentItem->modelIndex() ); QFileInfo fileInfo = mModel->fileInfo( mCurrentItem->modelIndex() ); int maxFileNameLength = FmUtils::getMaxFileNameLength(); - + QString oldSuffix( fileInfo.suffix() ); QString newName( fileInfo.fileName() ); while( FmDlgUtils::showTextQuery( hbTrId( "Enter new name for %1" ).arg( newName ), newName, true, maxFileNameLength, QString() , true ) ){ + // remove whitespace from the start and the end. + newName = newName.trimmed(); QString newTargetPath = FmUtils::fillPathWithSplash( fileInfo.absolutePath() ) + newName; QFileInfo newFileInfo( newTargetPath ); @@ -711,6 +713,12 @@ if( !rename( fileInfo.absoluteFilePath(), newTargetPath ) ) { FmDlgUtils::information( hbTrId("Rename failed!") ); } + else { + QString newSuffix( newFileInfo.suffix() ); + if ( oldSuffix != newSuffix ) { + FmDlgUtils::information( hbTrId( "File may become unusable when file name extension is changed" ) ); + } + } break; - } + } } diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmfileview.cpp --- a/filemanager/src/filemanager/src/fmfileview.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmfileview.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -394,13 +394,15 @@ { int maxFileNameLength = FmUtils::getMaxFileNameLength(); QString associatedDrive = FmUtils::getDriveLetterFromPath( mWidget->currentPath().absoluteFilePath() ); + QString path = FmUtils::fillPathWithSplash( mWidget->currentPath().absoluteFilePath() ); + QString dirName = createDefaultFolderName( path ); - QString dirName( hbTrId( "New folder" ) ); - QString path = FmUtils::fillPathWithSplash( mWidget->currentPath().absoluteFilePath() ); - QDir dir( path ); + QDir dir( path ); if( dir.exists() ) { while( FmDlgUtils::showTextQuery( hbTrId( "Enter name for " ), dirName, true, maxFileNameLength, associatedDrive , false ) ){ + // remove whitespace from the start and the end. + dirName = dirName.trimmed(); QString newTargetPath = FmUtils::fillPathWithSplash( dir.absolutePath() ) + dirName; QFileInfo newFileInfo( newTargetPath ); @@ -510,3 +512,25 @@ { this->setTitle( title ); } + +QString FmFileView::createDefaultFolderName( const QString &path ) +{ + QString dirBaseName( hbTrId( "New folder" ) ); + QString dirName( dirBaseName ); + QString dirAbsolutePath( path + dirName ); + QFileInfo fileInfo( dirAbsolutePath ); + int i = 0; + while ( fileInfo.exists() ) { + ++i; + dirName = dirBaseName; + dirName.append( hbTrId("(") ); + if ( i < 10 ) { + dirName.append( hbTrId("0") ); + } + dirName.append( QString::number(i) ); + dirName.append( hbTrId(")") ); + dirAbsolutePath = path + dirName; + fileInfo.setFile( dirAbsolutePath ); + } + return dirName; +} diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmfileview.h --- a/filemanager/src/filemanager/src/fmfileview.h Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmfileview.h Wed Jun 23 18:03:11 2010 +0300 @@ -82,6 +82,14 @@ void infoNoFileSelected(); void removeToolBarAction(); + /** + * Create Default folder name while create folder. + * + * @param Current path. + * @return Default folder name for new folder. + */ + QString createDefaultFolderName( const QString &path ); + private: FmFileBrowseWidget *mWidget; HbPushButton *mUpButton; diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmfindresultmodel.cpp --- a/filemanager/src/filemanager/src/fmfindresultmodel.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmfindresultmodel.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -171,7 +171,6 @@ mFindThread->setLastResult( mFindResult ); } removeRows( 0, mFindResult.size() ); - emit modelCountChanged( mFindResult.size() ); mFindThread->start(); } @@ -188,8 +187,10 @@ void FmFindResultModel::on_findThread_found( int count ) { - int size = mFindResult.size(); - insertRows( mFindResult.size() - count, count ); + if( count > 0 ) { + int size = mFindResult.size(); + insertRows( mFindResult.size() - count, count ); + } emit modelCountChanged( mFindResult.size() ); } @@ -250,21 +251,30 @@ // emit layoutAboutToBeChanged(); + QStringList lst; + for (int i = 0; i < mFindResult.size(); ++i) + lst.append( mFindResult.at(i) ); + + removeRows( 0, mFindResult.size() ); + switch( ( SortFlag )column ) { case Name: - qSort( mFindResult.begin(), mFindResult.end(), caseNameLessThan ); + qSort( lst.begin(), lst.end(), caseNameLessThan ); break; case Time: - qSort( mFindResult.begin(), mFindResult.end(), caseTimeLessThan ); + qSort( lst.begin(), lst.end(), caseTimeLessThan ); break; case Size: - qSort( mFindResult.begin(), mFindResult.end(), caseSizeLessThan ); + qSort( lst.begin(), lst.end(), caseSizeLessThan ); break; case Type: - qSort( mFindResult.begin(), mFindResult.end(), caseTypeLessThan ); + qSort( lst.begin(), lst.end(), caseTypeLessThan ); break; - } -// emit layoutChanged(); - emit refresh(); + } + + for (int i = 0; i < lst.count(); ++i) + mFindResult.append( lst.at(i) ); + insertRows( 0, mFindResult.size() ); + emit modelCountChanged( mFindResult.size() ); } diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmfindresultmodel.h --- a/filemanager/src/filemanager/src/fmfindresultmodel.h Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmfindresultmodel.h Wed Jun 23 18:03:11 2010 +0300 @@ -79,7 +79,6 @@ // pass modelCountChanged signal to parent widget // so parent widget could change contentWiget between emptyTipsWidget and listWidget void modelCountChanged( int count ); - void refresh(); private slots: void on_findThread_found( int count ); diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmfindthread.cpp --- a/filemanager/src/filemanager/src/fmfindthread.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmfindthread.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -23,6 +23,7 @@ FmFindThread::FmFindThread( QStringList *r, QObject *parent ) : QThread( parent ) { + setPriority( LowPriority ); mResult = r; } @@ -58,7 +59,6 @@ void FmFindThread::run() { mStop = false; - setPriority( LowPriority ); if (findPattern.isEmpty() || !findPattern.isValid()) return; @@ -105,9 +105,7 @@ findDirs.removeFirst(); } - if( count > 0 ) { - emitFound(); - } + emitFound(); } void FmFindThread::emitFound() @@ -125,7 +123,7 @@ void FmFindThread::findInResult() { if( mFindPath.isEmpty() ){ - int count = mLastResult.count(); + int count = mResult->count(); for (QStringList::Iterator it = mLastResult.begin(); it != mLastResult.end(); ++it) { if (mStop){ return; @@ -144,4 +142,5 @@ } } } + emitFound(); } diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmfindwidget.cpp --- a/filemanager/src/filemanager/src/fmfindwidget.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmfindwidget.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -75,8 +75,6 @@ void FmFindWidget::on_resultModel_finished() { emit finished(); - //Since layout problem is found, refresh it - on_resultModel_refresh(); } void FmFindWidget::on_resultModel_modelCountChanged( int count ) @@ -140,9 +138,6 @@ connect( mModel, SIGNAL( modelCountChanged( int )), this, SLOT( on_resultModel_modelCountChanged( int )) ); - connect( mModel, SIGNAL( refresh()), - this, SLOT( on_resultModel_refresh()) ); - mListView = new HbListView( this ); mListView->setModel( mModel ); @@ -204,11 +199,5 @@ } -void FmFindWidget::on_resultModel_refresh() -{ - mListView->setModel( 0 ); - mListView->setModel( mModel ); -} - diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmfindwidget.h --- a/filemanager/src/filemanager/src/fmfindwidget.h Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmfindwidget.h Wed Jun 23 18:03:11 2010 +0300 @@ -65,8 +65,7 @@ void on_resultModel_finished(); void on_resultModel_modelCountChanged( int count ); - void on_resultModel_refresh(); - + private: void init(); void initSearchPanel(); diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmviewmanager.cpp --- a/filemanager/src/filemanager/src/fmviewmanager.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmviewmanager.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -155,7 +155,8 @@ { if( operationBase->operationType() == FmOperationService::EOperationTypeBackup ) { - emit refreshBackupView(); + // after finish backup, we need refresh backup date in backup view. + emit refreshBackupDate(); } } @@ -238,8 +239,10 @@ mMainWindow->addView( backupView ); mMainWindow->setCurrentView( backupView ); - connect( this, SIGNAL( refreshBackupView() ), backupView, SLOT( refreshBackupView() ) ); - + connect( this, SIGNAL( refreshModel( QString ) ), //emit when need refresh models + backupView, SLOT( refreshModel( QString ) ) ); + connect( this, SIGNAL( refreshBackupDate() ), //emit when need refresh backup date + backupView, SLOT( refreshBackupDate() ) ); } void FmViewManager::createRestoreView() diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/fmviewmanager.h --- a/filemanager/src/filemanager/src/fmviewmanager.h Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/fmviewmanager.h Wed Jun 23 18:03:11 2010 +0300 @@ -99,7 +99,7 @@ void on_operationService_notifyFinish( FmOperationBase *operationBase ); signals: void refreshModel( const QString &path ); - void refreshBackupView(); + void refreshBackupDate(); void refreshDeleteBackupView(); void refreshRestoreView(); diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.cpp --- a/filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/filemanager/src/operationservice/fmoperationresultprocesser.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -49,6 +49,8 @@ bool ret = FmDlgUtils::showTextQuery( questionText, value, true, maxFileNameLength, QString(), false ); while ( ret ) { bool checkResult = true; + // remove whitespace from the start and the end. + value = value.trimmed(); QString newTargetPath = FmUtils::fillPathWithSplash( fileInfo.absolutePath() ) + value; QFileInfo newFileInfo( newTargetPath ); diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/inc/fmcommon.h --- a/filemanager/src/inc/fmcommon.h Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/inc/fmcommon.h Wed Jun 23 18:03:11 2010 +0300 @@ -25,7 +25,7 @@ // MACRO for launch find view quickly from driver view and search "b" in "c:\ruby" //#define _DEBUG_SPEED_FINDVIEW_ -//#define _DEBUG_ENABLE_FORMATMENU_ +// #define _DEBUG_ENABLE_FORMATMENU_ // MARCO for hide d, z, folder except C:\data in windows for debug @@ -34,10 +34,10 @@ //#define _DEBUG_LOG_ENABLE_ //used to test drive hide which drive could be listed but not available -//#define _DEBUG_DISABLE_DRIVE_D_TEST_DRIVEHIDE_ +// #define _DEBUG_DISABLE_DRIVE_D_TEST_DRIVEHIDE_ //used to test locked drive -//#define _DEBUG_LOCKED_DRIVE_Z +// #define _DEBUG_LOCKED_DRIVE_Z #include "fmlogger.h" #include "fmdefine.h" diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/inc/fmdefine.h --- a/filemanager/src/inc/fmdefine.h Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/inc/fmdefine.h Wed Jun 23 18:03:11 2010 +0300 @@ -56,10 +56,10 @@ #define FmPlaceholderString " " // Placeholder for HbLabel because layout will be wrong when HbLabel is empty -#define Drive_C "C:/" -#define Drive_D "D:/" -#define Drive_Z "Z:/" -#define Folder_C_Data "C:/Data" +#define Drive_C QString( "C:" ) + QDir::separator() +#define Drive_D QString( "D:" ) + QDir::separator() +#define Drive_Z QString( "Z:" ) + QDir::separator() +#define Folder_C_Data QString( "C:" ) + QDir::separator() + QString( "Data" ) + QDir::separator() #define FmMaxLengthofDriveName 11 #define FmMaxLengthofDrivePassword 8 diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/inc/fmdrivemodel.cpp --- a/filemanager/src/inc/fmdrivemodel.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/inc/fmdrivemodel.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -22,8 +22,9 @@ #include #include -FmDriveModel::FmDriveModel( QObject *parent, Options options ) : - QAbstractListModel( parent ), mOptions( options ) +FmDriveModel::FmDriveModel( QObject *parent, Options options, + FmDriveListProvider *driveListProvider ) : + QAbstractListModel( parent ), mOptions( options ), mDriveListProvider( driveListProvider ) { mIconProvider = new FmFileIconProvider(); refresh(); @@ -36,17 +37,23 @@ void FmDriveModel::refresh() { - QFileInfoList infoList = QDir::drives(); - - emit layoutAboutToBeChanged(); + emit layoutAboutToBeChanged(); mDriveList.clear(); - if( mOptions & HideUnAvailableDrive ) { - FmLogger::log( QString( "FmDriveModel::refresh HideUnAvailableDrive_true" ) ); - FmUtils::getDriveList( mDriveList, true ); + + // if mDriveListProvider existed, use it to fetch drive list + // otherwise use FmUtils::getDriveList to fetch drive list. + if( mDriveListProvider ) { + mDriveListProvider->getDriveList( mDriveList ); } else { - FmLogger::log( QString( "FmDriveModel::refresh HideUnAvailableDrive_false" ) ); - FmUtils::getDriveList( mDriveList, false ); + if( mOptions & HideUnAvailableDrive ) { + FmLogger::log( QString( "FmDriveModel::refresh HideUnAvailableDrive_true" ) ); + FmUtils::getDriveList( mDriveList, true ); + } else { + FmLogger::log( QString( "FmDriveModel::refresh HideUnAvailableDrive_false" ) ); + FmUtils::getDriveList( mDriveList, false ); + } } + emit layoutChanged(); for( int i=0; i #include +/*! + \class FmDriveListProvider + \brief The class FmDriveListProvider provide drive list which is used in FmDriveModel + */ +class FmDriveListProvider +{ +public: + FmDriveListProvider() + { + } + + virtual ~FmDriveListProvider() + { + } + + /*! + implement this function to provide drive list. + */ + virtual void getDriveList( QStringList &driveList ) = 0; +}; + class FmDriveModel : public QAbstractListModel { Q_OBJECT @@ -35,7 +56,8 @@ }; Q_DECLARE_FLAGS(Options, Option) - explicit FmDriveModel( QObject *parent = 0, Options options = 0 ); + explicit FmDriveModel( QObject *parent = 0, Options options = 0, + FmDriveListProvider *driveListProvider = 0 ); virtual ~FmDriveModel(); void refresh(); @@ -52,6 +74,10 @@ QFileIconProvider *mIconProvider; QStringList mDriveList; Options mOptions; + + // DriveListProvider will ignore HideUnAvailableDrive option. + // DriveListProvide can be set by others to provide special drive list + FmDriveListProvider *mDriveListProvider; }; Q_DECLARE_OPERATORS_FOR_FLAGS(FmDriveModel::Options) diff -r 1d0c87b42e2e -r b3155376f2b4 filemanager/src/inc/fmutils_s60.cpp --- a/filemanager/src/inc/fmutils_s60.cpp Fri Jun 11 13:29:48 2010 +0300 +++ b/filemanager/src/inc/fmutils_s60.cpp Wed Jun 23 18:03:11 2010 +0300 @@ -571,24 +571,21 @@ QString FmUtils::fillPathWithSplash( const QString &filePath ) { - QString newFilePath = filePath ; + QString newFilePath; if( filePath.isEmpty() ) { return newFilePath; } - - QString tempString; - for( int i=0; i