filterdialog.cpp Example File
incomingcalls/filterdialog.cpp
#include "filterdialog.h"
#include "qtcontacts.h"
#include <QtGui>
FilterDialog::FilterDialog(QWidget* parent)
: QWidget(parent)
{
vertLayout = new QVBoxLayout;
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setMinimumSize(320,320);
state = -1;
noFiltersYet = true;
expressionSoFar = "";
setWindowTitle(tr("Contact Search"));
value = new QLineEdit;
field = new QComboBox;
match = new QComboBox;
join = new QComboBox;
expression = new QLabel(tr("Cumulative Expression:"));
expression->setWordWrap(true);
cancel = new QPushButton(tr("Cancel"));
add = new QPushButton(tr("Add Filter"));
done = new QPushButton(tr("Done"));
connect(cancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
connect(add, SIGNAL(clicked()), this, SLOT(addClicked()));
connect(done, SIGNAL(clicked()), this, SLOT(doneClicked()));
field->addItem(tr("Name"));
field->addItem(tr("Phone Number"));
field->addItem(tr("Email Address"));
match->addItem(tr("Exact Match"));
match->addItem(tr("Starts With"));
match->addItem(tr("Contains"));
match->addItem(tr("Ends With"));
join->addItem(tr("AND"));
join->addItem(tr("OR"));
formLayout = new QFormLayout;
formLayout->addRow("Search String:", value);
formLayout->addRow("In Field:", field);
formLayout->addRow("With Criteria:", match);
formLayout->addRow("Join Method:", join);
btnLayout = new QHBoxLayout;
btnLayout->addWidget(cancel);
btnLayout->addWidget(add);
btnLayout->addWidget(done);
vertLayout->addLayout(formLayout);
vertLayout->addWidget(expression);
formLayout->addRow(btnLayout);
setLayout(vertLayout);
}
FilterDialog::~FilterDialog()
{
}
QContactFilter FilterDialog::filter() const
{
return total;
}
int FilterDialog::status() const
{
return state;
}
void FilterDialog::cancelClicked()
{
total = QContactIntersectionFilter();
noFiltersYet = true;
state = -1;
hide();
emit hidden();
}
void FilterDialog::addClicked()
{
state = 0;
QString exprName;
QString exprMatch;
QString exprJoin;
QContactDetailFilter fil;
QString defName;
QString fieldName;
switch (field->currentIndex()) {
case 0:
{
defName = QString(QLatin1String(QContactDisplayLabel::DefinitionName));
fieldName = QString(QLatin1String(QContactDisplayLabel::FieldLabel));
exprName = "NAME";
}
break;
case 1:
{
defName = QString(QLatin1String(QContactPhoneNumber::DefinitionName));
fieldName = QString(QLatin1String(QContactPhoneNumber::FieldNumber));
exprName = "PHONENUMBER";
}
break;
default:
{
defName = QString(QLatin1String(QContactEmailAddress::DefinitionName));
fieldName = QString(QLatin1String(QContactEmailAddress::FieldEmailAddress));
exprName = "EMAILADDRESS";
}
break;
}
fil.setDetailDefinitionName(defName, fieldName);
fil.setValue(value->text());
QContactFilter::MatchFlags matchFlags;
switch (match->currentIndex()) {
case 0:
{
matchFlags |= QContactFilter::MatchExactly;
exprMatch = "EQUALS";
}
break;
case 1:
{
matchFlags |= QContactFilter::MatchStartsWith;
exprMatch = "STARTSWITH";
}
break;
case 2:
{
matchFlags |= QContactFilter::MatchContains;
exprMatch = "CONTAINS";
}
break;
default:
{
matchFlags |= QContactFilter::MatchEndsWith;
exprMatch = "ENDSWITH";
}
break;
}
fil.setMatchFlags(matchFlags);
noFiltersYet = false;
if (join->currentIndex() == 1) {
QContactUnionFilter ufil;
ufil << total << fil;
QContactIntersectionFilter ifil;
ifil << ufil;
total = ifil;
exprJoin = "OR";
} else {
total << fil;
exprJoin = "AND";
}
if (!expressionSoFar.isEmpty())
expressionSoFar += " " + exprJoin + " ";
expressionSoFar += exprName + " " + exprMatch + " \"" + value->text() + "\"";
expression->setText(tr("Cumulative Expression:") + expressionSoFar);
value->setText("");
field->setCurrentIndex(0);
match->setCurrentIndex(0);
join->setCurrentIndex(0);
}
void FilterDialog::doneClicked()
{
state = 1;
hide();
emit hidden();
}
void FilterDialog::showDialog()
{
total = QContactIntersectionFilter();
noFiltersYet = true;
state = 0;
expressionSoFar = "";
value->setText("");
field->setCurrentIndex(0);
match->setCurrentIndex(0);
join->setCurrentIndex(0);
expression->setText(tr("Cumulative Expression:"));
show();
}
Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) |
Trademarks |
Qt Mobility Project 1.0.0 (Technology Preview) |