filebrowser/ui/src/fbsearchview.cpp
changeset 51 b048e15729d6
equal deleted inserted replaced
44:5db69f4c3d06 51:b048e15729d6
       
     1 /*
       
     2 * Copyright (c) 2010 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 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "fbsearchview.h"
       
    19 #include "enginewrapper.h"
       
    20 #include "notifications.h"
       
    21 
       
    22 #include <HbView>
       
    23 #include <HbDataForm>
       
    24 #include <HbDataFormModel>
       
    25 #include <HbDataFormModelItem>
       
    26 #include <HbAction>
       
    27 #include <HbListWidget>
       
    28 #include <HbListWidgetItem>
       
    29 #include <HbDialog>
       
    30 #include <HbToolBar>
       
    31 #include <HbProgressDialog>
       
    32 
       
    33 #include <QtGui>
       
    34 #include <QDir>
       
    35 #include <QFileInfo>
       
    36 
       
    37 const QStringList RECURSEMODES = (QStringList() << "Non-recursive" << "Recursive");
       
    38 const QString acceptActionText = "Search";
       
    39 const QString rejectActionText = "Cancel";
       
    40 
       
    41 
       
    42 FbSearchView::FbSearchView(EngineWrapper &engineWrapper)
       
    43     : mEngineWrapper(engineWrapper),
       
    44     mAttributes(),
       
    45     mResults(),
       
    46     mForm(0),
       
    47     mSearchFileNameItem(0),
       
    48     mWildCardItem(0),
       
    49     mHasString(0),
       
    50     mRecurse(0),
       
    51     mMinSize(0),
       
    52     mMaxSize(0),
       
    53     mMinDate(0),
       
    54     mMaxDate(0),
       
    55     mPath(),
       
    56     mProgressDialog(0)
       
    57 {
       
    58     // Set title and add this view to main window
       
    59     setTitle("Search");
       
    60 
       
    61     // Override back navigation action
       
    62     HbAction *leaveViewAction = new HbAction(Hb::BackNaviAction, this);
       
    63     connect(leaveViewAction, SIGNAL(triggered()), this, SLOT(reject()));
       
    64     setNavigationAction(leaveViewAction);
       
    65 
       
    66     initDataForm();
       
    67     createToolbar();
       
    68 }
       
    69 
       
    70 FbSearchView::~FbSearchView()
       
    71 {
       
    72 }
       
    73 
       
    74 void FbSearchView::initDataForm() {
       
    75     mForm = new HbDataForm(/*HbFormView::ModeEdit,*/ this);
       
    76     HbDataFormModel *model = new HbDataFormModel();
       
    77 
       
    78     mSearchFileNameItem = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
       
    79     mSearchFileNameItem->setLabel("Search dir: ");
       
    80 
       
    81     mWildCardItem = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
       
    82     mWildCardItem->setLabel("Wildcards: ");
       
    83 
       
    84     mHasString = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
       
    85     mHasString->setLabel("Has string: ");
       
    86 
       
    87     mRecurse = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem);
       
    88     mRecurse->setLabel("Recurse: ");
       
    89     mRecurse->setContentWidgetData("items", RECURSEMODES);
       
    90 
       
    91     mMinSize = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
       
    92     mMinSize->setLabel("Min size: ");
       
    93 
       
    94     mMaxSize = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
       
    95     mMaxSize->setLabel("Max size: ");
       
    96 
       
    97     mMinDate = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
       
    98     mMinDate->setLabel("Min date: ");
       
    99     mMinDate->setContentWidgetData("text", "01/01/1980");
       
   100 
       
   101     mMaxDate = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
       
   102     mMaxDate->setLabel("Max date: ");
       
   103     mMaxDate->setContentWidgetData("text", "31/12/2060");
       
   104 
       
   105     model->appendDataFormItem(mSearchFileNameItem);
       
   106     model->appendDataFormItem(mWildCardItem);
       
   107     model->appendDataFormItem(mHasString);
       
   108     model->appendDataFormItem(mRecurse);
       
   109     model->appendDataFormItem(mMinSize);
       
   110     model->appendDataFormItem(mMaxSize);
       
   111     model->appendDataFormItem(mMinDate);
       
   112     model->appendDataFormItem(mMaxDate);
       
   113     mForm->setModel(model);
       
   114 
       
   115     QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical,this);
       
   116     layout->addItem(mForm);
       
   117     setLayout(layout);
       
   118 }
       
   119 
       
   120 void FbSearchView::createToolbar()
       
   121 {
       
   122     HbToolBar *toolBar = new HbToolBar(this);
       
   123     HbAction *acceptAction = new HbAction(acceptActionText);
       
   124     connect(acceptAction, SIGNAL(triggered()), this, SLOT(accept()));
       
   125     toolBar->addAction(acceptAction);
       
   126 
       
   127     HbAction *rejectAction = new HbAction(rejectActionText);
       
   128     connect(rejectAction, SIGNAL(triggered()), this, SLOT(reject()));
       
   129     toolBar->addAction(rejectAction);
       
   130 
       
   131     setToolBar(toolBar);
       
   132 }
       
   133 
       
   134 void FbSearchView::loadAttributes()
       
   135 {
       
   136     // get settings from engine;
       
   137     mAttributes = mEngineWrapper.getFileSearchAttributes();
       
   138 
       
   139     // set data:
       
   140     mSearchFileNameItem->setContentWidgetData("text", mPath);
       
   141 //    mSearchFileNameItem->setContentWidgetData("text", mAttributes.mSearchDir);
       
   142     if (!mAttributes.mDefaultWildCard) {
       
   143         mWildCardItem->setContentWidgetData("text", mAttributes.mWildCards);
       
   144     }
       
   145     mHasString->setContentWidgetData("text", mAttributes.mTextInFile);
       
   146 
       
   147     mRecurse->setContentWidgetData("selected", mAttributes.mRecurse);
       
   148 
       
   149     mMinSize->setContentWidgetData("text", mAttributes.mMinSize);
       
   150     mMaxSize->setContentWidgetData("text", mAttributes.mMaxSize);
       
   151 
       
   152     mMinDate->setContentWidgetData("text", mAttributes.mMinDate);
       
   153     mMaxDate->setContentWidgetData("text", mAttributes.mMaxDate);
       
   154 }
       
   155 
       
   156 /**
       
   157  * Reads form items and saves values of them into member variable mAttributes
       
   158  */
       
   159 void FbSearchView::readFormItems()
       
   160 {
       
   161     mAttributes.mSearchDir  = mSearchFileNameItem->contentWidgetData("text").toString();
       
   162 
       
   163     mAttributes.mDefaultWildCard = false;
       
   164     QString wildCard = mWildCardItem->contentWidgetData("text").toString();
       
   165     if (wildCard.trimmed().isEmpty()) {
       
   166         wildCard = QString("*");
       
   167         mAttributes.mDefaultWildCard = true;
       
   168     }
       
   169     mAttributes.mWildCards  = wildCard;
       
   170     mAttributes.mTextInFile = mHasString->contentWidgetData("text").toString();
       
   171     mAttributes.mMinSize    = mMinSize->contentWidgetData("text").toInt();
       
   172     mAttributes.mMaxSize    = mMaxSize->contentWidgetData("text").toInt();
       
   173     mAttributes.mMinDate    = mMinDate->contentWidgetData("text").toDate();
       
   174     mAttributes.mMaxDate    = mMaxDate->contentWidgetData("text").toDate();
       
   175     mAttributes.mRecurse    = mRecurse->contentWidgetData("selected").toBool();
       
   176 }
       
   177 
       
   178 void FbSearchView::open(const QString &path)
       
   179 {   
       
   180     mPath = path;
       
   181     // load file search attribute values from FB engine:
       
   182     loadAttributes();
       
   183 }
       
   184 
       
   185 void FbSearchView::startFileSearch()
       
   186 {
       
   187     // save form data values and set them as search attributes into FB engine. 
       
   188     readFormItems();
       
   189     mEngineWrapper.setFileSearchAttributes(mAttributes);
       
   190     
       
   191     bool err = mEngineWrapper.searchFiles();
       
   192 
       
   193     // show results of file search:
       
   194     mResults = mEngineWrapper.getSearchResults();
       
   195     fileSearchResults();
       
   196 }
       
   197 
       
   198 void FbSearchView::fileSearchResults()
       
   199 {
       
   200     QString noteMsg("%1 entries found");
       
   201     Notifications::showInformationNote(noteMsg.arg(mEngineWrapper.itemCount()), QString(""));
       
   202 }
       
   203 
       
   204 void FbSearchView::accept()
       
   205 {
       
   206     startFileSearch();
       
   207     emit finished(true);
       
   208 }
       
   209 
       
   210 void FbSearchView::reject()
       
   211 {
       
   212     emit finished(false);
       
   213 }