filebrowser/ui/src/searchview.cpp
changeset 19 4b22a598b890
parent 17 4f2773374eff
--- a/filebrowser/ui/src/searchview.cpp	Fri May 14 15:53:02 2010 +0300
+++ b/filebrowser/ui/src/searchview.cpp	Thu May 27 12:52:19 2010 +0300
@@ -17,62 +17,64 @@
 
 #include "searchview.h"
 #include "enginewrapper.h"
+#include "notifications.h"
 
 #include <HbView>
-#include <HbMainWindow>
-
 #include <HbDataForm>
 #include <HbDataFormModel>
 #include <HbDataFormModelItem>
 #include <HbAction>
-#include <HbPushButton>
 #include <HbListWidget>
 #include <HbListWidgetItem>
 #include <HbDialog>
-#include <HbMenu>
+#include <HbToolBar>
+#include <HbProgressDialog>
 
 #include <QtGui>
 #include <QDir>
 #include <QFileInfo>
-#include <QProgressBar>
-
 
 const QStringList RECURSEMODES = (QStringList() << "Non-recursive" << "Recursive");
+const QString acceptActionText = "Search";
+const QString rejectActionText = "Cancel";
 
-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(EngineWrapper &engineWrapper)
+    : mEngineWrapper(engineWrapper),
+    mAttributes(),
+    mResults(),
+    mForm(0),
+    mSearchFileNameItem(0),
+    mWildCardItem(0),
+    mHasString(0),
+    mRecurse(0),
+    mMinSize(0),
+    mMaxSize(0),
+    mMinDate(0),
+    mMaxDate(0),
+    mPath(),
+    mProgressDialog(0)
 {
+    // Set title and add this view to main window
+    setTitle("Search");
+
+    // Override back navigation action
+    HbAction *leaveViewAction = new HbAction(Hb::BackNaviAction, this);
+    connect(leaveViewAction, SIGNAL(triggered()), this, SLOT(reject()));
+    setNavigationAction(leaveViewAction);
+
+    initDataForm();
+    createToolbar();
 }
 
 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");
-	
+void SearchView::initDataForm() {
     mForm = new HbDataForm(/*HbFormView::ModeEdit,*/ this);
     HbDataFormModel *model = new HbDataFormModel();
-    mPath = path;
+
     mSearchFileNameItem = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
     mSearchFileNameItem->setLabel("Search dir: ");
 
@@ -81,28 +83,25 @@
 
     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);
@@ -114,82 +113,32 @@
     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);
+    layout->addItem(mForm);
     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()
+void SearchView::createToolbar()
 {
-    // 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);
+    HbToolBar *toolBar = new HbToolBar(this);
+    HbAction *acceptAction = new HbAction(acceptActionText);
+    connect(acceptAction, SIGNAL(triggered()), this, SLOT(accept()));
+    toolBar->addAction(acceptAction);
 
-    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();
+    HbAction *rejectAction = new HbAction(rejectActionText);
+    connect(rejectAction, SIGNAL(triggered()), this, SLOT(reject()));
+    toolBar->addAction(rejectAction);
 
-    // show results of file search:
-    mResults = mEngineWrapper.getSearchResults();
-    fileSearchResults();
+    setToolBar(toolBar);
 }
 
-
 void SearchView::loadAttributes()
 {
     // get settings from engine;
     mAttributes = mEngineWrapper.getFileSearchAttributes();
-    
+
     // set data:
     mSearchFileNameItem->setContentWidgetData("text", mPath);
-    mSearchFileNameItem->setContentWidgetData("text", mAttributes.mSearchDir);
+//    mSearchFileNameItem->setContentWidgetData("text", mAttributes.mSearchDir);
     mWildCardItem->setContentWidgetData("text",mAttributes.mWildCards);
     mHasString->setContentWidgetData("text", mAttributes.mTextInFile);
 
@@ -202,23 +151,6 @@
     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
  */
@@ -233,3 +165,40 @@
     mAttributes.mMaxDate    = mMaxDate->contentWidgetData("text").toDate();
     mAttributes.mRecurse    = mRecurse->contentWidgetData("selected").toBool();
 }
+
+void SearchView::open(const QString &path)
+{   
+    mPath = path;
+    // load file search attribute values from FB engine:
+    loadAttributes();
+}
+
+void SearchView::startFileSearch()
+{
+    // save form data values and set them as search attributes into FB engine. 
+    readFormItems();
+    mEngineWrapper.setFileSearchAttributes(mAttributes);
+    
+    bool err = mEngineWrapper.searchFiles();
+
+    // show results of file search:
+    mResults = mEngineWrapper.getSearchResults();
+    fileSearchResults();
+}
+
+void SearchView::fileSearchResults()
+{
+    QString noteMsg("%1 entries found");
+    Notifications::showInformationNote(noteMsg.arg(mEngineWrapper.itemCount()), QString(""));
+}
+
+void SearchView::accept()
+{
+    startFileSearch();
+    emit finished(true);
+}
+
+void SearchView::reject()
+{
+    emit finished(false);
+}