filemanager/src/filemanager/src/fmfindview.cpp
branchRCL_3
changeset 21 65326cf895ed
parent 20 491b3ed49290
child 22 f5c50b8af68c
equal deleted inserted replaced
20:491b3ed49290 21:65326cf895ed
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *     Zhiqiang Yang <zhiqiang.yang@nokia.com>
       
    14 * 
       
    15 * Description:
       
    16 *     The source file of the file find view of file manager
       
    17 *
       
    18 */
       
    19 
       
    20 #include "fmfindview.h"
       
    21 #include "fmfindwidget.h"
       
    22 #include "fmviewmanager.h"
       
    23 
       
    24 #include <hbprogressdialog.h>
       
    25 #include <hbaction.h>
       
    26 #include <hbmenu.h>
       
    27 
       
    28 FmFindView::FmFindView() : FmViewBase( EFindView ),
       
    29                            mWaitNote( 0 ),
       
    30                            mMenu( 0 )
       
    31 {
       
    32     initMenu();
       
    33     initMainWidget();
       
    34     initToolBar();
       
    35 
       
    36     QMetaObject::connectSlotsByName( this );
       
    37 }
       
    38 
       
    39 FmFindView::~FmFindView()
       
    40 {
       
    41     delete mWaitNote;
       
    42     mWaitNote = 0;
       
    43 }
       
    44 
       
    45 void FmFindView::activated( const QString& pathName )
       
    46 {
       
    47     FM_LOG( QString( "activate path from findview:" ) + pathName );
       
    48     FmViewManager::viewManager()->createFileView( pathName, true, true );
       
    49 }
       
    50 
       
    51 void FmFindView::find( const QString &keyword, const QString &path )
       
    52 {
       
    53     setTitle( keyword );
       
    54     mFindWidget->find( keyword, path );
       
    55     mWaitNote->open();
       
    56 }
       
    57 
       
    58 void FmFindView::stopFind()
       
    59 {
       
    60     mFindWidget->stopFind();
       
    61 }
       
    62 
       
    63 void FmFindView::findFinished()
       
    64 {
       
    65     if( mWaitNote ){
       
    66         mWaitNote->close();
       
    67     }
       
    68 //    mFindWidget->activeSearchPanel();
       
    69 }
       
    70 
       
    71 void FmFindView::initMenu()
       
    72 {
       
    73     HbAction *findAction = new HbAction( this );
       
    74     findAction->setObjectName( "findAction" );
       
    75     findAction->setText( hbTrId( "Find" ) );
       
    76     menu()->addAction( findAction ); 
       
    77     
       
    78     HbMenu *subMenu = new HbMenu( hbTrId( "Sort" ) );
       
    79     
       
    80     HbAction *sortNameAction = new HbAction( subMenu );
       
    81     sortNameAction->setObjectName( "sortNameAction" );
       
    82     sortNameAction->setText( hbTrId( "Sort by name" ) );
       
    83     subMenu->addAction( sortNameAction );
       
    84     
       
    85     HbAction *sortTimeAction = new HbAction( subMenu );
       
    86     sortTimeAction->setObjectName( "sortTimeAction" );
       
    87     sortTimeAction->setText( hbTrId( "Sort by time" ) );
       
    88     subMenu->addAction( sortTimeAction );
       
    89     
       
    90     HbAction *sortSizeAction = new HbAction( subMenu );
       
    91     sortSizeAction->setObjectName( "sortSizeAction" );
       
    92     sortSizeAction->setText( hbTrId( "Sort by size" ) );
       
    93     subMenu->addAction( sortSizeAction );
       
    94     
       
    95     HbAction *sortTypeAction = new HbAction( subMenu );
       
    96     sortTypeAction->setObjectName( "sortTypeAction" );
       
    97     sortTypeAction->setText( hbTrId( "Sort by type" ) );
       
    98     subMenu->addAction( sortTypeAction );
       
    99     
       
   100     menu()->addMenu( subMenu );
       
   101     
       
   102     connect( findAction, SIGNAL( triggered() ),
       
   103              this, SLOT( on_findAction_triggered() ) );
       
   104     connect( sortNameAction, SIGNAL( triggered() ),
       
   105              this, SLOT( on_sortNameAction_triggered() ) );
       
   106     connect( sortTimeAction, SIGNAL( triggered() ),
       
   107              this, SLOT( on_sortTimeAction_triggered() ) );
       
   108     connect( sortSizeAction, SIGNAL( triggered() ),
       
   109              this, SLOT( on_sortSizeAction_triggered() ) );
       
   110     connect( sortTypeAction, SIGNAL( triggered() ),
       
   111              this, SLOT( on_sortTypeAction_triggered() ) );
       
   112     
       
   113     mMenu = takeMenu();
       
   114 }
       
   115 
       
   116 void FmFindView::initMainWidget()
       
   117 {
       
   118     mFindWidget = new FmFindWidget( this );
       
   119     connect( mFindWidget, SIGNAL(finished()), this, SLOT(findFinished()) );
       
   120     setWidget( mFindWidget );
       
   121 
       
   122     if( !mWaitNote ){
       
   123         mWaitNote = new HbProgressDialog( HbProgressDialog::WaitDialog );
       
   124         mWaitNote->setText( hbTrId( "Finding..." ) );
       
   125     }
       
   126     connect( mWaitNote, SIGNAL(cancelled()), this, SLOT(stopFind()) );
       
   127     connect( mFindWidget, SIGNAL(activated( const QString&)), this, SLOT( activated(const QString&)) );
       
   128     connect( mFindWidget, SIGNAL( startSearch( const QString&,  const QString& ) ),
       
   129              this, SLOT( startSearch( const QString&, const QString& ) ) );
       
   130     connect( mFindWidget, SIGNAL( setEmptyMenu( bool ) ),
       
   131              this, SLOT( on_findWidget_setEmptyMenu( bool ) ) );
       
   132 }
       
   133 
       
   134 void FmFindView::initToolBar()
       
   135 {
       
   136 }
       
   137 
       
   138 void FmFindView::on_sortNameAction_triggered()
       
   139 {
       
   140     mFindWidget->sortFiles( FmFindResultModel::Name  );
       
   141 }
       
   142 
       
   143 void FmFindView::on_sortTimeAction_triggered()
       
   144 {
       
   145     mFindWidget->sortFiles( FmFindResultModel::Time  );
       
   146 }
       
   147 
       
   148 void FmFindView::on_sortSizeAction_triggered()
       
   149 {
       
   150     mFindWidget->sortFiles( FmFindResultModel::Size  );
       
   151 }
       
   152 
       
   153 void FmFindView::on_sortTypeAction_triggered()
       
   154 {
       
   155     mFindWidget->sortFiles( FmFindResultModel::Type  );
       
   156 }
       
   157 
       
   158 void FmFindView::startSearch( const QString &targetPath, const QString &criteria )
       
   159 {  
       
   160     if ( !criteria.isEmpty( ) ) {
       
   161         find( criteria, targetPath );  
       
   162     }
       
   163 }
       
   164 
       
   165 void FmFindView::on_findAction_triggered()
       
   166 {
       
   167     mFindWidget->activeSearchPanel();
       
   168 }
       
   169 
       
   170 void FmFindView::on_findWidget_setEmptyMenu( bool isMenuEmpty )
       
   171 {
       
   172     if( isMenuEmpty ){
       
   173         if( !mMenu ) {
       
   174             mMenu = takeMenu();
       
   175         }
       
   176     }
       
   177     else{ 
       
   178         if( mMenu ) {
       
   179             setMenu( mMenu );
       
   180             mMenu = 0;
       
   181         }
       
   182     }
       
   183 }