diff -r 95243422089a -r 491b3ed49290 filemanager/src/filemanager/src/fmfindview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filemanager/src/filemanager/src/fmfindview.cpp Tue Aug 31 15:06:05 2010 +0300 @@ -0,0 +1,183 @@ +/* +* 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: +* Zhiqiang Yang +* +* Description: +* The source file of the file find view of file manager +* +*/ + +#include "fmfindview.h" +#include "fmfindwidget.h" +#include "fmviewmanager.h" + +#include +#include +#include + +FmFindView::FmFindView() : FmViewBase( EFindView ), + mWaitNote( 0 ), + mMenu( 0 ) +{ + initMenu(); + initMainWidget(); + initToolBar(); + + QMetaObject::connectSlotsByName( this ); +} + +FmFindView::~FmFindView() +{ + delete mWaitNote; + mWaitNote = 0; +} + +void FmFindView::activated( const QString& pathName ) +{ + FM_LOG( QString( "activate path from findview:" ) + pathName ); + FmViewManager::viewManager()->createFileView( pathName, true, true ); +} + +void FmFindView::find( const QString &keyword, const QString &path ) +{ + setTitle( keyword ); + mFindWidget->find( keyword, path ); + mWaitNote->open(); +} + +void FmFindView::stopFind() +{ + mFindWidget->stopFind(); +} + +void FmFindView::findFinished() +{ + if( mWaitNote ){ + mWaitNote->close(); + } +// mFindWidget->activeSearchPanel(); +} + +void FmFindView::initMenu() +{ + HbAction *findAction = new HbAction( this ); + findAction->setObjectName( "findAction" ); + findAction->setText( hbTrId( "Find" ) ); + menu()->addAction( findAction ); + + HbMenu *subMenu = new HbMenu( hbTrId( "Sort" ) ); + + HbAction *sortNameAction = new HbAction( subMenu ); + sortNameAction->setObjectName( "sortNameAction" ); + sortNameAction->setText( hbTrId( "Sort by name" ) ); + subMenu->addAction( sortNameAction ); + + HbAction *sortTimeAction = new HbAction( subMenu ); + sortTimeAction->setObjectName( "sortTimeAction" ); + sortTimeAction->setText( hbTrId( "Sort by time" ) ); + subMenu->addAction( sortTimeAction ); + + HbAction *sortSizeAction = new HbAction( subMenu ); + sortSizeAction->setObjectName( "sortSizeAction" ); + sortSizeAction->setText( hbTrId( "Sort by size" ) ); + subMenu->addAction( sortSizeAction ); + + HbAction *sortTypeAction = new HbAction( subMenu ); + sortTypeAction->setObjectName( "sortTypeAction" ); + sortTypeAction->setText( hbTrId( "Sort by type" ) ); + subMenu->addAction( sortTypeAction ); + + menu()->addMenu( subMenu ); + + connect( findAction, SIGNAL( triggered() ), + this, SLOT( on_findAction_triggered() ) ); + connect( sortNameAction, SIGNAL( triggered() ), + this, SLOT( on_sortNameAction_triggered() ) ); + connect( sortTimeAction, SIGNAL( triggered() ), + this, SLOT( on_sortTimeAction_triggered() ) ); + connect( sortSizeAction, SIGNAL( triggered() ), + this, SLOT( on_sortSizeAction_triggered() ) ); + connect( sortTypeAction, SIGNAL( triggered() ), + this, SLOT( on_sortTypeAction_triggered() ) ); + + mMenu = takeMenu(); +} + +void FmFindView::initMainWidget() +{ + mFindWidget = new FmFindWidget( this ); + connect( mFindWidget, SIGNAL(finished()), this, SLOT(findFinished()) ); + setWidget( mFindWidget ); + + if( !mWaitNote ){ + mWaitNote = new HbProgressDialog( HbProgressDialog::WaitDialog ); + mWaitNote->setText( hbTrId( "Finding..." ) ); + } + connect( mWaitNote, SIGNAL(cancelled()), this, SLOT(stopFind()) ); + connect( mFindWidget, SIGNAL(activated( const QString&)), this, SLOT( activated(const QString&)) ); + connect( mFindWidget, SIGNAL( startSearch( const QString&, const QString& ) ), + this, SLOT( startSearch( const QString&, const QString& ) ) ); + connect( mFindWidget, SIGNAL( setEmptyMenu( bool ) ), + this, SLOT( on_findWidget_setEmptyMenu( bool ) ) ); +} + +void FmFindView::initToolBar() +{ +} + +void FmFindView::on_sortNameAction_triggered() +{ + mFindWidget->sortFiles( FmFindResultModel::Name ); +} + +void FmFindView::on_sortTimeAction_triggered() +{ + mFindWidget->sortFiles( FmFindResultModel::Time ); +} + +void FmFindView::on_sortSizeAction_triggered() +{ + mFindWidget->sortFiles( FmFindResultModel::Size ); +} + +void FmFindView::on_sortTypeAction_triggered() +{ + mFindWidget->sortFiles( FmFindResultModel::Type ); +} + +void FmFindView::startSearch( const QString &targetPath, const QString &criteria ) +{ + if ( !criteria.isEmpty( ) ) { + find( criteria, targetPath ); + } +} + +void FmFindView::on_findAction_triggered() +{ + mFindWidget->activeSearchPanel(); +} + +void FmFindView::on_findWidget_setEmptyMenu( bool isMenuEmpty ) +{ + if( isMenuEmpty ){ + if( !mMenu ) { + mMenu = takeMenu(); + } + } + else{ + if( mMenu ) { + setMenu( mMenu ); + mMenu = 0; + } + } +}