--- /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 <HbView>
+#include <HbMainWindow>
+
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <HbAction>
+#include <HbPushButton>
+#include <HbListWidget>
+#include <HbListWidgetItem>
+#include <HbDialog>
+#include <HbMenu>
+
+#include <QtGui>
+#include <QDir>
+#include <QFileInfo>
+#include <QProgressBar>
+
+
+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();
+}