⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addatt.cpp

📁 Qtopia下的邮件处理程序
💻 CPP
字号:
/******************************************************************************** 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 "addatt.h"#include <qtopia/qtopiaapplication.h>#include <qtopia/qtopiaglobal.h>#include <qtopia/qdocumentselector.h>#include <qtopia/qmimetype.h>#include <account.h>#include <QLayout>#include <QDir>#include <QStringList>#include <QMessageBox>#include <QFileInfo>#ifdef QTOPIA_PHONE#include <QAction>#endif#include <QToolTip>#include <QWhatsThis>#include <qtopia/qsoftmenubar.h>AttachmentItem::AttachmentItem(QListWidget *parent, const QContent& att)  : QListWidgetItem(parent), mattachment(att){  setText(att.name());  setIcon(att.icon());}AttachmentItem::AttachmentItem(QListWidget *parent, const QString &filename )  : QListWidgetItem(parent), mFileName(filename){  QFileInfo fi( filename );  setText(fi.baseName() );  QMimeType mt( filename );  setIcon(mt.icon() );}bool AttachmentItem::isDocument() const{  return mattachment.isValid();}const QContent& AttachmentItem::document() const{  return mattachment;}QString AttachmentItem::fileName() const{  return mFileName;}AttachmentItem::~AttachmentItem(){}AddAtt::AddAtt(QWidget *parent, const char *name, Qt::WFlags f)  : QWidget(parent,f){  setObjectName(name);  QGridLayout *top = new QGridLayout(this);  attView = new QListWidget(this);  //attView->addColumn(tr("Attachments"));  connect(attView, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),          this, SLOT(currentItemChanged(QListWidgetItem*,QListWidgetItem*)) );  top->addWidget(attView, 0,0);  clear();}AddAttBase::~AddAttBase(){}void AddAtt::resizeEvent(QResizeEvent *e){#ifdef QTOPIA_PHONE    //int styleSpecific = 6;    //attView->setColumnWidth( 0, e->size().width() - styleSpecific );    QWidget::resizeEvent( e );#else    Q_UNUSED(e)#endif}QStringList AddAttBase::mimeTypes(){  QString homedocs = Qtopia::documentDir();  QDir d( homedocs );  QStringList l = d.entryList( QDir::Dirs );  l.removeAll(".");  l.removeAll("..");  return l;}void AddAttBase::clear(){  attView->clear();  modified = false;  getFiles();}void AddAttBase::addAttachment( const QString &filename ){  attView->setCurrentItem(new AttachmentItem(attView, filename));}void AddAttBase::addAttachment(const QContent &dl){  attView->setCurrentItem(new AttachmentItem(attView, dl));} void AddAtt::removeAttachment(){  if (attView->currentItem() != NULL) {    attView->takeItem(attView->row(attView->currentItem()));  }  modified = true;}QList<AttachmentItem*> AddAttBase::attachedFiles() const{  QList<AttachmentItem*> list;  int i = 0;  AttachmentItem *iterItem = (AttachmentItem *) attView->item(i);  while (iterItem != NULL) {    list.append( iterItem );    iterItem = (AttachmentItem *) attView->item(++i);  }  return list;}void AddAttBase::setMailMessageParts(Email *mail){  for ( int i = 0; i < (int)mail->messagePartCount(); i++ ) {    MailMessagePart &part = mail->messagePartAt( i );    QContent d;    d.setName( part.name() );    d.setFile( part.storedFilename() );    d.setLinkFile( part.linkFile() );    d.setType( part.contentType() );    new AttachmentItem(attView, d );  }}void AddAtt::currentItemChanged(QListWidgetItem *item, QListWidgetItem*){  bool hasItem = item;  emit currentChanged( hasItem );}void AddAtt::removeCurrentAttachment(){  if (attView->currentItem()) {    attView->takeItem(attView->row(attView->currentItem()));  }  modified = true;}#ifndef QTOPIA_PHONE// pda versionAddAttDialog::AddAttDialog(QWidget *parent, const char *name, Qt::WFlags f)  : QDialog(parent,f){    setObjectName(name);    setModal(true);}void AddAttDialog::removeCurrentAttachment(){}void AddAttDialog::resizeEvent(QResizeEvent *e){}void AddAttDialog::fileCategorySelected(int id){}void AddAttDialog::reject(){}void AddAttDialog::accept(){  modified = false;  QDialog::accept();}void AddAttDialog::getFiles(){}void AddAttDialog::addCurAttachment(){}#else//phone version, wraps AddAttAddAttDialog::AddAttDialog(QWidget *parent, QString name, Qt::WFlags f)  : QDialog( parent,f){  setObjectName(name);  setModal(true);  QVBoxLayout *l = new QVBoxLayout( this );  addAtt = new AddAtt( this );  l->addWidget( addAtt );  setWindowTitle( tr("Attachments") );#ifdef QTOPIA_PHONE    QMenu *context = QSoftMenuBar::menuFor(this);    QAction *attachAction = context->addAction(QIcon(":icon/attach"),tr("Add Attachment"));    //attachAction->setVisible( false );    connect( attachAction, SIGNAL(triggered()), this, SLOT(selectAttachment()) );    attachAction->setWhatsThis( tr("Attach a document to this mail.") );    QAction *removeAction = context->addAction(QIcon(":icon/attach"), tr("Remove Attachment"));    connect( removeAction, SIGNAL(triggered()), addAtt, SLOT(removeCurrentAttachment()) );    removeAction->setVisible(false);    connect( addAtt, SIGNAL( currentChanged(bool) ), removeAction, SLOT( setVisible(bool) ) );#endif    fileSelectorDialog = new QDialog( this);    fileSelectorDialog->setObjectName("fileSelectorDialog");    fileSelectorDialog->setModal(true);#ifndef QTOPIA_DESKTOP    QtopiaApplication::setMenuLike( fileSelectorDialog, true );#endif    fileSelectorDialog->setWindowTitle( tr("Add Attachment") );    QVBoxLayout *fl = new QVBoxLayout( fileSelectorDialog );    QContentSet::QContentFilter filter;    filter.insert(QContentSet::QtopiaType, "Documents");    filter.insert(QContentSet::DRM, "include/redistributable");    fileSelector = new QDocumentSelector( filter, fileSelectorDialog );    fileSelector->setObjectName("fileselector");    fl->addWidget( fileSelector );   // connect( fileSelector, SIGNAL(closeMe()), fileSelectorDialog, SLOT(accept()) );    connect( fileSelector, SIGNAL(documentSelected(const QContent&)), this, SLOT(openFile(const QContent&)) );}QList<AttachmentItem*> AddAttDialog::attachedFiles() const{  return addAtt->attachedFiles();}void AddAttDialog::clear(){  addAtt->clear();}void AddAttDialog::setMailMessageParts(Email *mail){  addAtt->setMailMessageParts( mail );}void AddAttDialog::addAttachment(const QString &filename){  addAtt->addAttachment( filename );}void AddAttDialog::addAttachment(const QContent&lnk){  addAtt->addAttachment( lnk );}void AddAttDialog::removeAttachment(){  addAtt->removeAttachment();}void AddAttDialog::removeCurrentAttachment(){  addAtt->removeCurrentAttachment();}void AddAttDialog::attach( const QString &filename ){  addAtt->addAttachment( filename );}void AddAttDialog::attach( const QContent &doclnk ){  addAtt->addAttachment( doclnk );}void AddAttDialog::openFile(const QContent& dl){  addAtt->addAttachment( dl.file() );  fileSelectorDialog->accept();}void AddAttDialog::selectAttachment(){  int result =#ifdef QTOPIA_DESKTOP      fileSelectorDialog->exec()#else      QtopiaApplication::execDialog( fileSelectorDialog )#endif      ;  if( result == QDialog::Accepted )  {    // don't need to do anything, openFile slot called from signal  }}#endif

⌨️ 快捷键说明

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