diff -r e11368ed4880 -r 4f2773374eff filebrowser/ui/src/searchview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filebrowser/ui/src/searchview.cpp Fri May 14 15:53:02 2010 +0300 @@ -0,0 +1,235 @@ +/* +* Copyright (c) 2010 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 "searchview.h" +#include "enginewrapper.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + +const QStringList RECURSEMODES = (QStringList() << "Non-recursive" << "Recursive"); + +SearchView::SearchView(HbView &mainView, HbMainWindow &mainWindow, EngineWrapper &engineWrapper) +: mMainWindow(mainWindow), + mMainView(mainView), + mEngineWrapper(engineWrapper), + mAttributes(), + mResults(), + mForm(0), + mSearchFileNameItem(0), + mWildCardItem(0), + mHasString(0), + mRecurse(0), + mMinSize(0), + mMaxSize(0), + mMinDate(0), + mMaxDate(0), + mPath() +{ +} + +SearchView::~SearchView() +{ +} + +void SearchView::open(const QString &path) +{ + // Remove main view from main window + mMainWindow.removeView(&mMainView); + mMainWindow.addView(this); + // Set title and add this view to main window + setTitle("Search"); + + mForm = new HbDataForm(/*HbFormView::ModeEdit,*/ this); + HbDataFormModel *model = new HbDataFormModel(); + mPath = path; + mSearchFileNameItem = new HbDataFormModelItem(HbDataFormModelItem::TextItem); + mSearchFileNameItem->setLabel("Search dir: "); + + mWildCardItem = new HbDataFormModelItem(HbDataFormModelItem::TextItem); + mWildCardItem->setLabel("Wildcards: "); + + mHasString = new HbDataFormModelItem(HbDataFormModelItem::TextItem); + mHasString->setLabel("Has string: "); + + mRecurse = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem); + mRecurse->setLabel("Recurse: "); + mRecurse->setContentWidgetData("items", RECURSEMODES); + + mMinSize = new HbDataFormModelItem(HbDataFormModelItem::TextItem); + mMinSize->setLabel("Min size: "); + + mMaxSize = new HbDataFormModelItem(HbDataFormModelItem::TextItem); + mMaxSize->setLabel("Max size: "); + + mMinDate = new HbDataFormModelItem(HbDataFormModelItem::TextItem); + mMinDate->setLabel("Min date: "); + mMinDate->setContentWidgetData("text", "01/01/1980"); + + mMaxDate = new HbDataFormModelItem(HbDataFormModelItem::TextItem); + mMaxDate->setLabel("Max date: "); + mMaxDate->setContentWidgetData("text", "31/12/2060"); + + // load file search attribute values from FB engine: + loadAttributes(); + + model->appendDataFormItem(mSearchFileNameItem); + model->appendDataFormItem(mWildCardItem); + model->appendDataFormItem(mHasString); + model->appendDataFormItem(mRecurse); + model->appendDataFormItem(mMinSize); + model->appendDataFormItem(mMaxSize); + model->appendDataFormItem(mMinDate); + model->appendDataFormItem(mMaxDate); + mForm->setModel(model); + + QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical,this); + + HbPushButton* buttonSearch = new HbPushButton("Search"); + buttonSearch->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed); + connect(buttonSearch, SIGNAL(clicked()), this, SLOT(startFileSearch())); + + HbPushButton* buttonCancel = new HbPushButton("Cancel"); + buttonCancel->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed); + connect(buttonCancel, SIGNAL(clicked()), this, SLOT(backButtonClicked())); + + // Create widget and layout for buttons + QGraphicsWidget *buttonsWidget = new QGraphicsWidget(this); + QGraphicsGridLayout *gridLayout = new QGraphicsGridLayout(buttonsWidget); + + // add buttons to layout + gridLayout->addItem(buttonSearch, 0, 0); + gridLayout->addItem(buttonCancel, 0, 1); + buttonsWidget->setLayout(gridLayout); + // add form and buttons widget to list layout + layout->addItem(mForm); + layout->addItem(buttonsWidget); + setLayout(layout); + // about to close connect to go back to file browser view + connect(this, SIGNAL(aboutToClose()), this, SLOT(backButtonClicked())); +} + +void SearchView::backButtonClicked() +{ + mMainWindow.removeView(this); + mForm->deleteLater(); + mForm = 0; + mMainWindow.addView(&mMainView); +} + +void SearchView::startFileSearch() +{ + // save form data values and set them as search attributes into FB engine. + readFormItems(); + mEngineWrapper.setFileSearchAttributes(mAttributes); + + // Create busy indicator widget with label **Searching**. Launch it to screen when + // FB Utils engine started for file search. Hide busy indicator when search completed. + QProgressBar *progressBar = new QProgressBar(); + progressBar->setMaximumHeight(16); + progressBar->setMaximumWidth(200); + progressBar->setTextVisible(false); + progressBar->setMaximum(0); + progressBar->setMinimum(0); + progressBar->setValue(1); + + QWidget *busyIndWidget = new QWidget(); + busyIndWidget->setGeometry(12, 50, 120, 60); + QVBoxLayout *vbl = new QVBoxLayout(busyIndWidget); + QLabel *label = new QLabel("**Searching**"); + vbl->addWidget(label); + vbl->addWidget(progressBar); + QHBoxLayout *hbl1 = new QHBoxLayout(); + vbl->addLayout(hbl1); + busyIndWidget->show(); + qApp->processEvents(); + bool err = mEngineWrapper.searchFiles(); + busyIndWidget->hide(); + + // show results of file search: + mResults = mEngineWrapper.getSearchResults(); + fileSearchResults(); +} + + +void SearchView::loadAttributes() +{ + // get settings from engine; + mAttributes = mEngineWrapper.getFileSearchAttributes(); + + // set data: + mSearchFileNameItem->setContentWidgetData("text", mPath); + mSearchFileNameItem->setContentWidgetData("text", mAttributes.mSearchDir); + mWildCardItem->setContentWidgetData("text",mAttributes.mWildCards); + mHasString->setContentWidgetData("text", mAttributes.mTextInFile); + + mRecurse->setContentWidgetData("selected",mAttributes.mRecurse); + + mMinSize->setContentWidgetData("text",mAttributes.mMinSize); + mMaxSize->setContentWidgetData("text", mAttributes.mMaxSize); + + mMinDate->setContentWidgetData("text", mAttributes.mMinDate); + mMaxDate->setContentWidgetData("text", mAttributes.mMaxDate); +} + + +void SearchView::fileSearchResults() +{ + HbDialog *dialog = new HbDialog(); + dialog->setDismissPolicy(HbPopup::TapOutside); + dialog->setTimeout(HbPopup::NoTimeout); + + // Create a list and some simple content for it + HbListWidget *resultsList = new HbListWidget(); + resultsList->addItem(QString("%1 entries found").arg(mResults.mNumberOfFoundFiles)); + for (int i = 0; i < mResults.mFoundFilesList->size(); i++) { + resultsList->addItem(QString("%1").arg(mResults.mFoundFilesList->at(i))); + } + dialog->setContentWidget(resultsList); + dialog->open(); +} + +/** + * Reads form items and saves values of them into member variable mAttributes + */ +void SearchView::readFormItems() +{ + mAttributes.mSearchDir = mSearchFileNameItem->contentWidgetData("text").toString(); + mAttributes.mWildCards = mWildCardItem->contentWidgetData("text").toString(); + mAttributes.mTextInFile = mHasString->contentWidgetData("text").toString(); + mAttributes.mMinSize = mMinSize->contentWidgetData("text").toInt(); + mAttributes.mMaxSize = mMaxSize->contentWidgetData("text").toInt(); + mAttributes.mMinDate = mMinDate->contentWidgetData("text").toDate(); + mAttributes.mMaxDate = mMaxDate->contentWidgetData("text").toDate(); + mAttributes.mRecurse = mRecurse->contentWidgetData("selected").toBool(); +}