📄 addatt.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 + -