From 70b1ff1a3f134d75d1539f269d52b34e6762684d Mon Sep 17 00:00:00 2001 From: llornkcor Date: Sun, 06 Apr 2003 17:45:00 +0000 Subject: move malit to head again, since it is working --- (limited to 'noncore/unsupported/mailit/readmail.cpp') diff --git a/noncore/unsupported/mailit/readmail.cpp b/noncore/unsupported/mailit/readmail.cpp new file mode 100644 index 0000000..4954f34 --- a/dev/null +++ b/noncore/unsupported/mailit/readmail.cpp @@ -0,0 +1,326 @@ +/********************************************************************** +** Copyright (C) 2001 Trolltech AS. All rights reserved. +** +** This file is part of Qt Palmtop Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#include "readmail.h" +#include +#include +#include +#include "resource.h" + +ReadMail::ReadMail( QWidget* parent, const char* name, WFlags fl ) + : QMainWindow(parent, name, fl) +{ + plainTxt = FALSE; + + init(); + viewAtt = new ViewAtt(0, "View Attatchments"); +} + +ReadMail::~ReadMail() +{ + delete emailView->mimeSourceFactory(); + delete viewAtt; +} + +void ReadMail::init() +{ + setToolBarsMovable(FALSE); + + bar = new QToolBar(this); + bar->setHorizontalStretchable( TRUE ); + + menu = new QMenuBar( bar ); + + viewMenu = new QPopupMenu(menu); + menu->insertItem( tr( "&View" ), viewMenu); + + mailMenu = new QPopupMenu(menu); + menu->insertItem( tr( "&Mail" ), mailMenu); + + bar = new QToolBar(this); + + //reply dependant on viewing inbox + replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "pass" ), + QString::null, 0, this, 0 ); + connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) ); + + previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 ); + connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); + previousButton->addTo(bar); + previousButton->addTo(viewMenu); + + nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 ); + connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) ); + nextButton->addTo(bar); + nextButton->addTo(viewMenu); + + attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "fileopen" ), QString::null, 0, this, 0 ); + connect( attatchmentsButton, SIGNAL( activated() ), this, + SLOT( viewAttatchments() ) ); + attatchmentsButton->addTo(bar); + attatchmentsButton->addTo(viewMenu); + + plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0, TRUE); + connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) ); + plainTextButton->addTo(bar); + plainTextButton->addTo(viewMenu); + + deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); + connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); + deleteButton->addTo(bar); + deleteButton->addTo(mailMenu); + + viewMenu->insertItem(Resource::loadPixmap("close"), "Close", this, SLOT(close())); + + emailView = new QTextView( this, "emailView" ); + setCentralWidget(emailView); + + mime = new QMimeSourceFactory(); + emailView->setMimeSourceFactory(mime); +} + +void ReadMail::updateView() +{ + Enclosure *ePtr; + QString mailStringSize; + QString text, temp; + + mail->read = TRUE; //mark as read + inbox = mail->received; + + replyButton->removeFrom(mailMenu); + replyButton->removeFrom(bar); + + if (inbox == TRUE) { + replyButton->addTo(bar); + replyButton->addTo(mailMenu); + + if (!mail->downloaded) { + //report currently viewed mail so that it will be + //placed first in the queue of new mails to download + emit viewingMail(mail); + + double mailSize = (double) mail->size; + if (mailSize < 1024) { + mailStringSize.setNum(mailSize); + mailStringSize += " Bytes"; + } else if (mailSize < 1024*1024) { + mailStringSize.setNum( (mailSize / 1024), 'g', 2 ); + mailStringSize += " Kb"; + } else { + mailStringSize.setNum( (mailSize / (1024*1024)), 'g', 3); + mailStringSize += " Mb"; + } + } + } + + QMimeSourceFactory *mime = emailView->mimeSourceFactory(); + + if (! plainTxt) { //use RichText, inline pics etc. + emailView->setTextFormat(QTextView::RichText); + text = "
" + mail->subject + +"

"; + text += "From: " + mail->from + " " + + mail->fromMail + "
"; + + text +="To: "; + for (QStringList::Iterator it = mail->recipients.begin(); + it != mail->recipients.end(); ++it ) { + text += *it + " "; + } + text += "
" + mail->date; + + if (mail->files.count() > 0) { + text += "
Attatchments: "; + + for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { + text += ePtr->originalName + " "; + } + text += "

" + mail->body; + + if (inbox) { + for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { + + text += "

Attatchment: " + + ePtr->originalName + "
"; + + if (ePtr->contentType == "TEXT") { + QFile f(ePtr->path + ePtr->name); + + if (f.open(IO_ReadOnly) ) { + QTextStream t(&f); + temp = t.read(); + text += temp + "
"; + f.close(); + } else { + text += "Could not locate file
"; + } + + } + if (ePtr->contentType == "IMAGE") { +// temp.setNum(emailView->width()); //get display width +// text += "originalName + """> "; + text += "originalName + """> "; + mime->setPixmap(ePtr->originalName, QPixmap( (ePtr->path + ePtr->name) )); + } + } + } + } else { + if (mail->downloaded || !inbox) { + text += "

" + mail->body; + } else { + text += "

Awaiting download
"; + text += "Size of mail: " + mailStringSize; + } + } + emailView->setText(text); + } else { // show plain txt mail + emailView->setTextFormat(QTextView::PlainText); + text = "Subject: " + mail->subject + "\n"; + text += "From: " + mail->from + " " + mail->fromMail + "\n"; + text += "To: "; + for (QStringList::Iterator it = mail->recipients.begin(); + it != mail->recipients.end(); ++it ) { + text += *it + " "; + } + text += "\nDate: " + mail->date + "\n"; + if (mail->files.count() > 0) { + text += "Attatchments: "; + for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { + text += ePtr->originalName + " "; + } + text += "\n\n"; + } else text += "\n"; + + if (!inbox) { + text += mail->body; + } else if (mail->downloaded) { + text += mail->bodyPlain; + } else { + text += "\nAwaiting download\n"; + text += "Size of mail: " + mailStringSize; + } + + emailView->setText(text); + } + + if (mail->files.count() == 0) + attatchmentsButton->setEnabled(FALSE); + else attatchmentsButton->setEnabled(TRUE); + + setCaption("Examining mail: " + mail->subject); +} + +//update view with current EmailListItem (item) +void ReadMail::update(QListView *thisView, Email *mailIn) +{ + view = thisView; + item = (EmailListItem *) view->selectedItem(); + mail = mailIn; + updateView(); + updateButtons(); +} + +void ReadMail::mailUpdated(Email *mailIn) +{ + if (mailIn == mail) { + updateView(); + } else { + updateButtons(); + } +} + +void ReadMail::close() +{ + emit cancelView(); +} + +//gets next item in listview, exits if there is no next +void ReadMail::next() +{ + item = (EmailListItem *) item->nextSibling(); + if (item != NULL) { + mail = item->getMail(); + updateView(); + } + updateButtons(); +} + +//gets previous item in listview, exits if there is no previous +void ReadMail::previous() +{ + item = (EmailListItem *) item->itemAbove(); + if (item != NULL) { + mail = item->getMail(); + updateView(); + } + updateButtons(); +} + +//deletes item, tries bringing up next or previous, exits if unsucessful +void ReadMail::deleteItem() +{ + EmailListItem *temp = item; + temp = (EmailListItem *) item->nextSibling(); //trybelow + if (temp == NULL) + temp = (EmailListItem *) item->itemAbove(); //try above + + emit removeItem(item, inbox); + + item = temp; + if (item != NULL) { //more items in list + mail = item->getMail(); + updateView(); + updateButtons(); + } else close(); //no more items to see +} + +void ReadMail::updateButtons() +{ + EmailListItem *temp; + + temp = item; + if ((EmailListItem *) temp->nextSibling() == NULL) + nextButton->setEnabled(FALSE); + else nextButton->setEnabled(TRUE); + + temp = item; + if ((EmailListItem *) temp->itemAbove() == NULL) + previousButton->setEnabled(FALSE); + else previousButton->setEnabled(TRUE); +} + +void ReadMail::shiftText() +{ + plainTxt = ! plainTxt; + updateView(); +} + +void ReadMail::viewAttatchments() +{ + viewAtt->update(mail, inbox); + viewAtt->showMaximized(); +} + +void ReadMail::reply() +{ + emit replyRequested(*mail); +} -- cgit v0.9.0.2