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