searchview.cpp

来自「Qtopia下的邮件处理程序」· C++ 代码 · 共 299 行

CPP
299 行
字号
/******************************************************************************** Copyright (C) 2000-2006 TROLLTECH ASA. All rights reserved.**** This file is part of the Phone Edition of the Qtopia Toolkit.**** Licensees holding a valid license agreement from Trolltech or any of its** authorized distributors may use this file in accordance with** the License Agreement provided with the Licensed Software.**** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for**   information about Trolltech's Commercial License Agreements.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.********** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "searchview.h"#include "accountlist.h"#include "common.h"#include <qtopia/qtopiaapplication.h>#include <qtopia/qsoftmenubar.h>#include <QMenu>#include <QDesktopWidget>using namespace QtMail;SearchView::SearchView(bool query,  QWidget* parent, Qt::WFlags fl )    : QDialog(parent, fl){    setupUi( this );        delete layout();    QGridLayout *g = new QGridLayout(this);    sv = new QScrollArea(this);    sv->setFocusPolicy(Qt::NoFocus);    sv->setWidgetResizable( true );    sv->setFrameStyle(QFrame::NoFrame);    sv->setWidget(searchFrame);    sv->setFocusPolicy(Qt::NoFocus);    g->addWidget(sv, 0, 0);    #ifdef QTOPIA_PHONE    searchFrame->setMaximumWidth( qApp->desktop()->width() - qApp->style()->pixelMetric(QStyle::PM_SliderLength) + 4 );    sv->setMaximumWidth(qApp->desktop()->width() );#endif        queryType = query;    if ( queryType ) {	setWindowTitle( tr("Query") );	nameLabel->show();    nameLine->show();    } else {    setWindowTitle( tr("Search") );    nameLabel->hide();    nameLine->hide();    }    init();}SearchView::~SearchView(){}void SearchView::init(){        QIcon pm(":icon/addressbook/AddressBook");    fromPicker->setIcon( pm );    toPicker->setIcon( pm );    connect(fromPicker, SIGNAL(clicked() ), this, SLOT(addressPickerFrom()) );    connect(toPicker, SIGNAL(clicked() ), this, SLOT(addressPickerTo()) );    /*	Set up dateBookMonth popups */            dateAfter = QDate::currentDate();    dateAfterButton->setDate( dateAfter );    connect( dateAfterButton, SIGNAL( dateChanged(const QDate&) ),	    this, SLOT( dateAfterChanged(const QDate&) ) );            dateBefore = QDate::currentDate();    dateBeforeButton->setDate( dateBefore );    connect( dateBeforeButton, SIGNAL( dateChanged(const QDate&) ),	    this, SLOT( dateBeforeChanged(const QDate&) ) );        #ifdef QTOPIA_PHONE    fromPicker->hide();    toPicker->hide();        QMenu *contextTo = QSoftMenuBar::menuFor( toLine );    contextTo->addAction(pm, tr("Pick address"), 			  this, SLOT(addressPickerTo()) );    QMenu *contextFrom = QSoftMenuBar::menuFor( fromLine );    contextFrom->addAction(pm, tr("Pick address"), 			  this, SLOT(addressPickerFrom()) );#endif        /*	Fix tab order	*/    setTabOrder(mailbox, status);    setTabOrder(status, fromLine);    setTabOrder(fromLine, fromPicker);    setTabOrder(fromPicker, toLine);    setTabOrder(toLine, toPicker);    setTabOrder(toPicker, subjectLine);    setTabOrder(subjectLine, bodyLine);    setTabOrder(bodyLine, dateAfterBox);    setTabOrder(dateAfterBox, dateAfterButton);    setTabOrder(dateAfterButton, dateBeforeBox);    setTabOrder(dateBeforeBox, dateBeforeButton);    }void SearchView::setQueryBox(QString box){    box = mailboxTrName(box);    for (int i = 0; i < mailbox->count(); i++) {    	if (mailbox->itemText(i).toLower() == box.toLower() ) {	    mailbox->setCurrentIndex(i);	    break;	}    }    mailbox->setEnabled(false);}// this function is assumed call directly after the constructorvoid SearchView::setSearch(Search *in){    QString str = in->mailbox();    if ( str == InboxString )        mailbox->setCurrentIndex(0);    else if ( str == OutboxString )        mailbox->setCurrentIndex(1);    else if ( str == DraftsString )        mailbox->setCurrentIndex(2);    else if ( str == SentString )        mailbox->setCurrentIndex(3);    else if ( str == TrashString )        mailbox->setCurrentIndex(4);    switch( in->status() ) {	case Search::Read: {        status->setCurrentIndex( 1 );	    break;	}	case Search::Unread: {        status->setCurrentIndex( 2 );	    break;	}	case Search::Replied: {        status->setCurrentIndex( 3 );	    break;	}    }    fromLine->setText( in->getFrom() );    toLine->setText( in->getTo() );    subjectLine->setText( in->getSubject() );    bodyLine->setText( in->getBody() );    dateBefore = in->getBeforeDate();    dateAfter = in->getAfterDate();    if ( !dateAfter.isNull() ) {        dateAfterBox->setChecked(true);        dateAfterButton->setDate( dateAfter );            } else {        dateAfter = QDate::currentDate();    }    if ( !dateBefore.isNull() ) {	dateBeforeBox->setChecked(true);        dateBeforeButton->setDate( dateBefore );            } else {        dateBefore = QDate::currentDate();    }    nameLine->setText( in->name() );}// creates a new Search object, and returns.  Caller assumes// ownership of search objectSearch* SearchView::getSearch(){    Search *search = new Search();    int i = mailbox->currentIndex();    switch(i) {	case 0: search->setMailbox(InboxString); break;	case 1: search->setMailbox(OutboxString); break;	case 2: search->setMailbox(DraftsString); break;	case 3: search->setMailbox(SentString); break;	case 4: search->setMailbox(TrashString); break;    }    search->setMailFrom( fromLine->text() );    search->setMailTo( toLine->text() );    search->setMailSubject( subjectLine->text() );    search->setMailBody( bodyLine->text() );    int statusNum = status->currentIndex();    switch( statusNum ) {	case 1:	{	    search->setStatus( Search::Read );	    break;	}	case 2:	{	    search->setStatus( Search::Unread );	    break;	}	case 3:	{	    search->setStatus( Search::Replied );	    break;	}	default: search->setStatus( Search::Any );    }    if ( dateAfterBox->isChecked() ) {    	search->setAfterDate(dateAfter);    }    if ( dateBeforeBox->isChecked() ) {    	search->setBeforeDate(dateBefore);    }	    if ( !nameLine->text().isEmpty() ) {    	search->setName( nameLine->text() );    }	    return search;}void SearchView::dateAfterChanged(const QDate &ymd){    dateAfter = ymd;}void SearchView::dateBeforeChanged(const QDate &ymd){    dateBefore = ymd;}void SearchView::addressPickerFrom(){    AddressPicker picker(AddressPicker::Name, this);    picker.setModal(true);    if ( QtopiaApplication::execDialog(&picker) == QDialog::Accepted ) {	fromLine->setText( picker.addressesSelected().join(", ") );    }}void SearchView::addressPickerTo(){    AddressPicker picker(AddressPicker::Name, this);    picker.setModal(true);    if ( QtopiaApplication::execDialog(&picker) == QDialog::Accepted ) {	toLine->setText( picker.addressesSelected().join(",") );    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?