detailspage.cpp
来自「Qtopia下的邮件处理程序」· C++ 代码 · 共 605 行 · 第 1/2 页
CPP
605 行
if( m_allowEmails ) { fields.append( PimContact::Emails ); } ContactFieldSelector picker( fields, "", true, this, "addressPicker", true ); QStringList curAddr = QStringList::split( ",", le->text() ); for( uint i = 0 ; i < curAddr.count() ; ++i ) curAddr[i] = curAddr[i].stripWhiteSpace(); picker.setSelectedFields( curAddr ); int r = QtopiaApplication::execDialog( &picker ); if ( r == QDialog::Accepted ) { QStringList unknownFieldData = picker.unknownFieldData(); QString userData; if (unknownFieldData.count()) userData = unknownFieldData.join( ", " ); QString selectedFields; QValueList<int> selectedIndices = picker.selected(); for( QValueList<int>::Iterator it = selectedIndices.begin() ; it != selectedIndices.end() ; ++it ) { if( !selectedFields.isEmpty() ) selectedFields += ", "; selectedFields += picker.fieldDataAt( *it ); } if( !userData.isEmpty() && !selectedFields.isEmpty() ) userData += ", "; le->setText( userData + selectedFields ); }#endif }void DetailsPage::setType( int t ){ int imHint = QtopiaApplication::Normal; if( m_type != t ) { m_allowPhoneNumbers = false; m_allowEmails = false; m_type = t; m_ccField->hide(); if (m_ccPicker) m_ccPicker->hide(); m_ccFieldLabel->hide(); m_bccField->hide(); if (m_bccPicker) m_bccPicker->hide(); m_bccFieldLabel->hide(); m_subjectField->hide(); m_subjectFieldLabel->hide(); m_fromField->hide(); m_fromFieldLabel->hide(); m_readReplyField->hide(); m_deliveryReportField->hide(); // composer interface can be mms OR ems OR sms AND/OR email if( t == MailMessage::MMS ) { m_allowPhoneNumbers = true; m_allowEmails = true; m_ccFieldLabel->show(); m_ccField->show(); if (m_ccPicker) m_ccPicker->show(); m_bccFieldLabel->show(); m_bccField->show(); if (m_bccPicker) m_bccPicker->show(); m_subjectField->show(); m_subjectFieldLabel->show(); m_readReplyField->show(); m_deliveryReportField->show(); } else if( t == MailMessage::EMS ) { m_allowPhoneNumbers = true; } else { if( t & MailMessage::SMS ) { m_allowPhoneNumbers = true; } if( t & MailMessage::Email ) { m_allowEmails = true; if( t == MailMessage::Email ) { // only allowed if explicitly email m_ccFieldLabel->show(); m_ccField->show(); if (m_ccPicker) m_ccPicker->show(); m_bccFieldLabel->show(); m_bccField->show(); if (m_bccPicker) m_bccPicker->show(); m_subjectField->show(); m_subjectFieldLabel->show(); m_fromField->show(); m_fromFieldLabel->show(); } } } if( m_allowPhoneNumbers ) imHint = QtopiaApplication::PhoneNumber; else if( m_allowEmails ) imHint = QtopiaApplication::Words; QtopiaApplication::setInputMethodHint( m_toField, (QtopiaApplication::InputMethodHint)imHint ); QtopiaApplication::setInputMethodHint( m_ccField, (QtopiaApplication::InputMethodHint)imHint ); QtopiaApplication::setInputMethodHint( m_bccField, (QtopiaApplication::InputMethodHint)imHint ); } m_toField->setFocus(); layout()->activate();}void DetailsPage::getDetails( MailMessage &mail ){ mail.setTo( QStringList( to() ) ); mail.setCc( QStringList( cc() ) ); mail.setBcc( QStringList( bcc() ) ); mail.setSubject( subject() ); if( mail.subject().isEmpty() ) { if ( (m_type & MailMessage::Email) || mail.plainTextBody().trimmed().isEmpty() ) mail.setSubject( tr("(no subject)") ); else mail.setSubject( mail.plainTextBody() ); } mail.setFrom( from() ); if( m_type == MailMessage::MMS ) { if ( m_deliveryReportField->isChecked() ) mail.setExtraHeader( "X-Mms-Delivery-Report", "Yes" ); if ( m_readReplyField->isChecked() ) mail.setExtraHeader( "X-Mms-Read-Reply", "Yes" ); } if( m_type & MailMessage::SMS ) { // For the time being limit sending SMS messages so that they can // only be sent to phone numbers and not email addresses QString number = to(); QString n; QStringList numbers; uint posn; uint ch; for ( posn = 0; posn < (uint)number.length(); ++posn ) { ch = number[posn].unicode(); if ( ch >= '0' && ch <= '9' ) { n += (QChar)ch; } else if ( ch == '+' || ch == '#' || ch == '*' ) { n += (QChar)ch; } else if ( ch == '-' || ch == '(' || ch == ')' ) { n += (QChar)ch; } else if ( ch == ' ' ) { n += (QChar)ch; } else if ( ch == ',' ) { if (!n.isEmpty()) numbers.append( n ); n = ""; } // else ignore } if (!n.isEmpty()) numbers.append( n ); mail.setTo( numbers ); }}void DetailsPage::setBcc( const QString &a_bcc ){ m_bccField->setText( a_bcc );}QString DetailsPage::bcc() const{ QString text; if( !m_bccField->isHidden() ) text = m_bccField->text(); return text;}void DetailsPage::setCc( const QString &a_cc ){ m_ccField->setText( a_cc );}QString DetailsPage::cc() const{ QString text; if( !m_ccField->isHidden() ) text = m_ccField->text(); return text;}void DetailsPage::setTo( const QString &a_to ){ m_toField->setText( a_to );}QString DetailsPage::to() const{ // TODO : only include addresses according to allow flags QStringList list = splitAddresses( m_toField->text() ); return m_toField->text();}QString DetailsPage::subject() const{ return m_subjectField->text();}void DetailsPage::setSubject( const QString &sub ){ m_subjectField->setText( sub );}QString DetailsPage::from() const{ return m_fromField->currentText();}void DetailsPage::setFrom( const QString &from ){ int i; for( i = 0 ; i < (int)m_fromField->count() ; ++i ) { if( m_fromField->itemText( i ) == from ) { m_fromField->setCurrentIndex( i ); break; } } if( i < m_fromField->count() ) { m_fromField->insertItem( 0, from ); m_fromField->setCurrentIndex( 0 ); }}void DetailsPage::setFromFields( const QStringList &from ){ m_fromField->clear(); m_fromField->addItems( from );}void DetailsPage::copy(){ QWidget *fw = focusWidget(); if( !fw ) return; if( fw->inherits( "QLineEdit" ) ) ((QLineEdit*)(fw))->copy(); else if( fw->inherits( "QTextEdit" ) ) ((QTextEdit*)(fw))->copy();}void DetailsPage::paste(){ QWidget *fw = focusWidget(); if( !fw ) return; if( fw->inherits( "QLineEdit" ) ) ((QLineEdit*)(fw))->paste(); else if( fw->inherits( "QTextEdit" )) ((QTextEdit*)(focusWidget()))->paste();}void DetailsPage::clear(){ m_toField->clear(); m_ccField->clear(); m_bccField->clear(); m_subjectField->clear(); m_readReplyField->setChecked( false ); // don't clear from fields}bool DetailsPage::eventFilter(QObject* obj, QEvent* event){ if (((obj == m_toField) || (obj == m_ccField) || (obj == m_bccField)) && (event->type() == QEvent::KeyPress) && (qobject_cast<QLineEdit *>(obj)->text().isEmpty())) { QKeyEvent *keyEvent = (QKeyEvent*)event; if (keyEvent->key() == Qt::Key_Select) { editRecipients(); return true; } return false; } else if (obj == m_toField) { if (event->type() == QEvent::EnterEditFocus && m_ignoreFocus) { if(!m_toField->text().isEmpty()) m_toField->setEditFocus(false); m_ignoreFocus = false; return true; } return false; } else { return QWidget::eventFilter(obj, event); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?