summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mailit/addatt.cpp113
-rw-r--r--noncore/net/mailit/addatt.h20
-rw-r--r--noncore/net/mailit/emailclient.cpp10
-rw-r--r--noncore/net/mailit/emailhandler.cpp5
-rw-r--r--noncore/net/mailit/writemail.cpp6
-rw-r--r--noncore/unsupported/mailit/addatt.cpp113
-rw-r--r--noncore/unsupported/mailit/addatt.h20
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp10
-rw-r--r--noncore/unsupported/mailit/emailhandler.cpp5
-rw-r--r--noncore/unsupported/mailit/writemail.cpp6
10 files changed, 188 insertions, 120 deletions
diff --git a/noncore/net/mailit/addatt.cpp b/noncore/net/mailit/addatt.cpp
index c030e36..f279f52 100644
--- a/noncore/net/mailit/addatt.cpp
+++ b/noncore/net/mailit/addatt.cpp
@@ -1,209 +1,230 @@
/**********************************************************************
** 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 <qlayout.h>
#include <qdir.h>
#include <qstringlist.h>
#include "resource.h"
#include "addatt.h"
-FileItem::FileItem(QListView *parent, QFileInfo fileInfo, QString fileType)
+FileItem::FileItem(QListView *parent, DocLnk* dl)
: QListViewItem(parent)
{
- file = fileInfo;
- type = fileType;
+ /*file = fileInfo;
+ type = fileType;*/
- setText(0, fileInfo.baseName());
+ doclnk=dl;
- if (fileType == "Picture") {
+ setText(0, doclnk->name());
+
+/* if (fileType == "Picture") {
setPixmap(0, Resource::loadPixmap("pixmap"));
} else if (fileType == "Document") {
setPixmap(0, Resource::loadPixmap("txt"));
} else if (fileType == "Sound") {
setPixmap(0, Resource::loadPixmap("play"));
} else if (fileType == "Movie") {
setPixmap(0, Resource::loadPixmap("MPEGPlayer"));
} else if (fileType == "File") {
setPixmap(0, Resource::loadPixmap("exec"));
- }
+ }*/
}
-QFileInfo FileItem::getFileInfo()
+FileItem::~FileItem()
{
- return file;
-}
-
-QString FileItem::getFileType()
-{
- return type;
+ if (doclnk!=NULL) delete doclnk;
+ doclnk=NULL;
}
AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
: QDialog(parent, name, f)
{
setCaption("Adding attatchments");
- QGridLayout *top = new QGridLayout(this, 3, 2);
+ QGridLayout *top = new QGridLayout(this, 3,1 );
+
- fileCategoryButton = new QPushButton(this);
+ /*fileCategoryButton = new QPushButton(this);*/
attatchButton = new QPushButton("Attatch ->", this);
removeButton = new QPushButton("Remove", this);
- fileCategories = new QPopupMenu(fileCategoryButton);
+ /*fileCategories = new QPopupMenu(fileCategoryButton);
fileCategoryButton->setPopup(fileCategories);
fileCategories->insertItem("Document");
fileCategories->insertItem("Picture");
fileCategories->insertItem("Sound");
fileCategories->insertItem("Movie");
fileCategories->insertItem("File");
fileCategoryButton->setText("Document");
- top->addWidget(fileCategoryButton, 0, 0);
- top->addWidget(attatchButton, 2, 0);
- top->addWidget(removeButton, 2, 1);
+ top->addWidget(fileCategoryButton, 0, 0);*/
+
+ //ofs=new OFileSelector(this,2,0,"/root/Documents");
- connect(fileCategories, SIGNAL(activated(int)), this,
- SLOT(fileCategorySelected(int)) );
+
+ top->addWidget(attatchButton,1,0);
+ top->addWidget(removeButton,2,0);
+
+ /*connect(fileCategories, SIGNAL(activated(int)), this,
+ SLOT(fileCategorySelected(int)) );*/
connect(attatchButton, SIGNAL(clicked()), this,
SLOT(addAttatchment()) );
connect(removeButton, SIGNAL(clicked()), this,
SLOT(removeAttatchment()) );
- listView = new QListView(this, "AttView");
- listView->addColumn("Documents");
+ /*listView = new QListView(this, "AttView");
+ listView->addColumn("Documents");*
connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
- SLOT(addAttatchment()) );
+ SLOT(addAttatchment()) );*/
+
attView = new QListView(this, "Selected");
- attView->addColumn("Attatched");
+ attView->addColumn(tr("Attached"));
+ attView->addColumn(tr("File type"));
connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
SLOT(removeAttatchment()) );
- top->addWidget(listView, 1,0);
- top->addWidget(attView, 1,1);
+ //top->addWidget(ofs, 0,0);
+ top->addWidget(attView, 0,0);
clear();
+
+
}
void AddAtt::clear()
{
attView->clear();
- getFiles();
+ //getFiles();
modified = FALSE;
}
-void AddAtt::fileCategorySelected(int id)
+/*void AddAtt::fileCategorySelected(int id)
{
fileCategoryButton->setText(fileCategories->text(id));
getFiles();
-}
+}*/
void AddAtt::addAttatchment()
{
- QFileInfo info;
- QString type;
+ QDialog qd(this,tr("Select attachment"),true);
- if (listView->selectedItem() != NULL) {
- item = (FileItem *) listView->selectedItem();
- info = item->getFileInfo();
- type = item->getFileType();
- item = new FileItem(attView, info, type);
- }
+ QGridLayout top(&qd,1,1);
+
+ OFileSelector ofs(&qd,1,0,"/root/Documents");
+
+ top.addWidget(&ofs,0,0);
+
+ qd.showMaximized();
+
+ if (qd.exec()==QDialog::Accepted)
+ {
+ DocLnk* dl=new DocLnk(ofs.selectedDocument());
+ FileItem* fi=new FileItem(attView,dl);
+ fi->setPixmap(0,dl->pixmap());
+ fi->setText(1,dl->type());
+ attView->insertItem(fi);
modified = TRUE;
}
+}
void AddAtt::removeAttatchment()
{
- if (attView->selectedItem() != NULL) {
+ if (attView->selectedItem() != NULL)
+ {
attView->takeItem(attView->selectedItem());
}
modified = TRUE;
}
void AddAtt::reject()
{
if (modified) {
attView->clear();
modified = FALSE;
}
}
void AddAtt::accept()
{
modified = FALSE;
hide();
}
void AddAtt::getFiles()
{
QString path, selected;
- QDir *dir;
- listView->clear();
+ /*listView->clear();
selected = fileCategoryButton->text();
if (selected == "Picture") {
path = "../pics/";
} else if (selected == "Document") {
path = "" ; //sub-dirs not decided
} else if (selected == "Sound") {
path = "../sounds/"; //sub-dirs not decided
} else if (selected == "Movie") {
path = ""; //sub-dirs not decided
} else if (selected == "File") {
path = ""; //sub-dirs not decided
}
dir = new QDir(path);
dir->setFilter(QDir::Files);
const QFileInfoList *dirInfoList = dir->entryInfoList();
QFileInfoListIterator it(*dirInfoList); // create list iterator
while ( (fi=it.current()) ) { // for each file...
- item = new FileItem(listView, *fi, selected);
+ item = new FileItem(lis+ütView, *fi, selected);
++it; // goto next list element
- }
+ }*/
}
QStringList AddAtt::returnAttatchedFiles()
{
QFileInfo info;
QStringList list;
item = (FileItem *) attView->firstChild();
+
+
while (item != NULL) {
- info = item->getFileInfo();
- list += info.filePath();
+ DocLnk* dl=item->getDocLnk();
+ list+=dl->file();
+ /*info = item->getFileInfo();
+ list += info.filePath();*/
item = (FileItem *) item->nextSibling();
}
return list;
}
QStringList AddAtt::returnFileTypes()
{
QStringList list;
item = (FileItem *) attView->firstChild();
+
while (item != NULL) {
- list += item->getFileType();
+ list += item->getDocLnk()->type();
item = (FileItem *) item->nextSibling();
}
return list;
}
diff --git a/noncore/net/mailit/addatt.h b/noncore/net/mailit/addatt.h
index 867c905..73062e2 100644
--- a/noncore/net/mailit/addatt.h
+++ b/noncore/net/mailit/addatt.h
@@ -1,70 +1,76 @@
/**********************************************************************
** 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.
**
**********************************************************************/
#ifndef ADDATT_H
#define ADDATT_H
#include <qdialog.h>
#include <qlistview.h>
#include <qpushbutton.h>
#include <qpopupmenu.h>
#include <qstring.h>
#include <qfileinfo.h>
#include <qstringlist.h>
+#include <opie/ofileselector.h>
+#include <qpe/applnk.h>
class FileItem : public QListViewItem
{
public:
- FileItem(QListView *parent, QFileInfo fileInfo, QString fileType);
- QFileInfo getFileInfo();
- QString getFileType();
+ //FileItem(QListView *parent, QFileInfo fileInfo, QString fileType);
+ FileItem(QListView*, DocLnk*);
+ ~FileItem();
+ DocLnk* getDocLnk() {return doclnk;}
+
private:
- QFileInfo file;
- QString type;
+ DocLnk* doclnk;
};
class AddAtt : public QDialog
{
Q_OBJECT
public:
AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
QStringList returnAttatchedFiles();
QStringList returnFileTypes();
void getFiles();
void clear();
+
public slots:
- void fileCategorySelected(int);
+ //void fileCategorySelected(int);
void addAttatchment();
void removeAttatchment();
void reject();
void accept();
private:
FileItem *item;
- QListView *listView, *attView;
+ QListView *attView;
QPushButton *fileCategoryButton, *attatchButton, *removeButton;
QPopupMenu *fileCategories;
bool modified;
QFileInfo *fi;
+
+ OFileSelector* ofs;
};
#endif
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index fc4276b..9258aac 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -100,201 +100,207 @@ void EmailClient::init()
{
statusBar = new QStatusBar(this);
statusBar->setSizeGripEnabled(FALSE);
status1Label = new QLabel( tr("Idle"), statusBar);
status2Label = new QLabel("", statusBar);
connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
status2Label, SLOT(setText(const QString &)) );
connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
status2Label, SLOT(setText(const QString &)) );
progressBar = new QProgressBar(statusBar);
connect(emailHandler, SIGNAL(mailboxSize(int)),
this, SLOT(setTotalSize(int)) );
connect(emailHandler, SIGNAL(currentMailSize(int)),
this, SLOT(setMailSize(int)) );
connect(emailHandler, SIGNAL(downloadedSize(int)),
this, SLOT(setDownloadedSize(int)) );
statusBar->addWidget(status1Label);
statusBar->addWidget(progressBar);
statusBar->addWidget(status2Label);
setToolBarsMovable(FALSE);
bar = new QToolBar(this);
bar->setHorizontalStretchable( TRUE );
mb = new QMenuBar( bar );
QPopupMenu *mail = new QPopupMenu(mb);
mb->insertItem( tr( "&Mail" ), mail);
QPopupMenu *configure = new QPopupMenu(mb);
mb->insertItem( tr( "Accounts" ), configure);
selectAccountMenu = new QPopupMenu(mb);
editAccountMenu = new QPopupMenu(mb);
deleteAccountMenu = new QPopupMenu(mb);
mail->insertItem(tr("Get Mail in"), selectAccountMenu);
configure->insertItem(tr("Edit account"), editAccountMenu);
configure->insertItem(tr("Delete account"), deleteAccountMenu);
bar = new QToolBar(this);
getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
getMailButton->addTo(bar);
getMailButton->addTo(mail);
sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendmail"), QString::null, 0, this, 0);
connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
sendMailButton->addTo(bar);
sendMailButton->addTo(mail);
composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) );
composeButton->addTo(bar);
composeButton->addTo(mail);
cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0);
connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) );
cancelButton->addTo(mail);
+ cancelButton->addTo(bar);
cancelButton->setEnabled(FALSE);
mailboxView = new OTabWidget( this, "mailboxView" );
QWidget* widget = new QWidget( mailboxView, "widget" );
grid_2 = new QGridLayout( widget );
// grid_2->setSpacing(6);
// grid_2->setMargin( 11 );
inboxView = new QListView( widget, "inboxView" );
inboxView->addColumn( tr( "From" ) );
inboxView->addColumn( tr( "Subject" ) );
inboxView->addColumn( tr( "Date" ) );
inboxView->setMinimumSize( QSize( 0, 0 ) );
inboxView->setAllColumnsShowFocus(TRUE);
grid_2->addWidget( inboxView, 2, 0 );
mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) );
QWidget* widget_2 = new QWidget( mailboxView, "widget_2" );
grid_3 = new QGridLayout( widget_2 );
// grid_3->setSpacing(6);
// grid_3->setMargin( 11 );
outboxView = new QListView( widget_2, "outboxView" );
outboxView->addColumn( tr( "To" ) );
outboxView->addColumn( tr( "Subject" ) );
outboxView->setAllColumnsShowFocus(TRUE);
grid_3->addWidget( outboxView, 0, 0 );
mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
setCentralWidget(mailboxView);
}
void EmailClient::compose()
{
emit composeRequested();
}
void EmailClient::cancel()
{
emailHandler->cancel();
}
AddressList* EmailClient::getAdrListRef()
{
return addressList;
}
//this needs to be rewritten to syncronize with outboxView
void EmailClient::enqueMail(const Email &mail)
{
+ if (accountList.count() == 0) {
+ QMessageBox::warning(qApp->activeWindow(),
+ tr("No account selected"), tr("You must create an account"), "OK\n");
+ return;
+ }
+
if (accountList.count() > 0) {
currentAccount = accountList.first();
qWarning("using account " + currentAccount->name);
}
Email addMail = mail;
addMail.from = currentAccount->name;
addMail.fromMail = currentAccount->emailAddress;
addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
item = new EmailListItem(outboxView, addMail, false);
}
void EmailClient::sendQuedMail()
{
int count = 0;
if (accountList.count() == 0) {
- QMessageBox::warning(qApp->activeWindow(),
- "No account selected", "You must create an account", "OK\n");
+ QMessageBox::warning(qApp->activeWindow(), "No account selected", "You must create an account", "OK\n");
return;
}
//traverse listview, find messages to send
if (! sending) {
item = (EmailListItem *) outboxView->firstChild();
if (item != NULL) {
while (item != NULL) {
quedMessages.append(item->getMail());
item = (EmailListItem *) item->nextSibling();
count++;
}
setMailAccount();
emailHandler->sendMail(&quedMessages);
sending = TRUE;
sendMailButton->setEnabled(FALSE);
cancelButton->setEnabled(TRUE);
} else {
qWarning("sendQuedMail(): no messages to send");
}
}
}
void EmailClient::setMailAccount()
{
emailHandler->setAccount(*currentAccount);
}
void EmailClient::mailSent()
{
sending = FALSE;
sendMailButton->setEnabled(TRUE);
quedMessages.clear();
outboxView->clear(); //should be moved to an sentBox
}
void EmailClient::getNewMail() {
if (accountList.count() == 0) {
QMessageBox::warning(qApp->activeWindow(),"No account selected",
"You must create an account", "OK\n");
return;
}
setMailAccount();
receiving = TRUE;
previewingMail = TRUE;
getMailButton->setEnabled(FALSE);
cancelButton->setEnabled(TRUE);
selectAccountMenu->setEnabled(FALSE);
status1Label->setText(currentAccount->accountName + " headers");
progressBar->reset();
//get any previous mails not downloaded and add to queue
mailDownloadList.clear();
Email *mailPtr;
item = (EmailListItem *) inboxView->firstChild();
while (item != NULL) {
mailPtr = item->getMail();
if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
}
diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp
index 2144899..1be16d4 100644
--- a/noncore/net/mailit/emailhandler.cpp
+++ b/noncore/net/mailit/emailhandler.cpp
@@ -351,133 +351,136 @@ bool EmailHandler::getEnclosure(Enclosure *ePtr)
x++;
}
if (x > 1) {
decodedCount = parse64base(src, destPtr);
destPtr += decodedCount;
bufCount += decodedCount;
}
}
buffer.resize(bufCount); //set correct length of file
f.writeBlock(buffer);
} else {
QTextStream t(&f);
t << ePtr->body;
}
return TRUE;
}
int EmailHandler::parse64base(char *src, char *bufOut) {
char c, z;
char li[4];
int processed;
//conversion table withouth table...
for (int x = 0; x < 4; x++) {
c = src[x];
if ( (int) c >= 'A' && (int) c <= 'Z')
li[x] = (int) c - (int) 'A';
if ( (int) c >= 'a' && (int) c <= 'z')
li[x] = (int) c - (int) 'a' + 26;
if ( (int) c >= '0' && (int) c <= '9')
li[x] = (int) c - (int) '0' + 52;
if (c == '+')
li[x] = 62;
if (c == '/')
li[x] = 63;
}
processed = 1;
bufOut[0] = (char) li[0] & (32+16+8+4+2+1); //mask out top 2 bits
bufOut[0] <<= 2;
z = li[1] >> 4;
bufOut[0] = bufOut[0] | z; //first byte retrived
if (src[2] != '=') {
bufOut[1] = (char) li[1] & (8+4+2+1); //mask out top 4 bits
bufOut[1] <<= 4;
z = li[2] >> 2;
bufOut[1] = bufOut[1] | z; //second byte retrived
processed++;
if (src[3] != '=') {
bufOut[2] = (char) li[2] & (2+1); //mask out top 6 bits
bufOut[2] <<= 6;
z = li[3];
bufOut[2] = bufOut[2] | z; //third byte retrieved
processed++;
}
}
return processed;
}
-int EmailHandler::encodeMime(Email *mail) {
+int EmailHandler::encodeMime(Email *mail)
+{
+
QString fileName, fileType, contentType, newBody, boundary;
Enclosure *ePtr;
QString userName = mailAccount.name;
+ if (userName.length()>0) //only embrace it if there is a user name
userName += " <" + mailAccount.emailAddress + ">";
//add standard headers
newBody = "From: " + userName + "\r\nTo: ";
for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) {
newBody += *it + " ";
}
newBody += "\r\nSubject: " + mail->subject + "\r\n";
if (mail->files.count() == 0) { //just a simple mail
newBody += "\r\n" + mail->body;
mail->rawMail = newBody;
return 0;
}
//Build mime encoded mail
boundary = "-----4345=next_bound=0495----";
newBody += "Mime-Version: 1.0\r\n";
newBody += "Content-Type: multipart/mixed; boundary=\"" +
boundary + "\"\r\n\r\n";
newBody += "This is a multipart message in Mime 1.0 format\r\n\r\n";
newBody += "--" + boundary + "\r\nContent-Type: text/plain\r\n\r\n";
newBody += mail->body;
for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) {
fileName = ePtr->originalName;
fileType = ePtr->contentType;
QFileInfo fi(fileName);
// This specification of contentType is temporary
contentType = "";
if (fileType == "Picture") {
contentType = "image/x-image";
} else if (fileType == "Document") {
contentType = "text/plain";
} else if (fileType == "Sound") {
contentType = "audio/x-wav";
} else if (fileType == "Movie") {
contentType = "video/mpeg";
} else {
contentType = "application/octet-stream";
}
newBody += "\r\n\r\n--" + boundary + "\r\n";
newBody += "Content-Type: " + contentType + "; name=\"" +
fi.fileName() + "\"\r\n";
newBody += "Content-Transfer-Encoding: base64\r\n";
newBody += "Content-Disposition: inline; filename=\"" +
fi.fileName() + "\"\r\n\r\n";
if (encodeFile(fileName, &newBody) == -1) //file not found?
return -1;
}
newBody += "\r\n\r\n--" + boundary + "--";
mail->rawMail = newBody;
return 0;
}
int EmailHandler::encodeFile(QString fileName, QString *toBody)
{
diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp
index 1a7185e..70332a9 100644
--- a/noncore/net/mailit/writemail.cpp
+++ b/noncore/net/mailit/writemail.cpp
@@ -3,238 +3,236 @@
**
** 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 <qmessagebox.h>
#include "writemail.h"
#include "resource.h"
WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl )
: QMainWindow( parent, name, fl )
{
showingAddressList = FALSE;
init();
addAtt = new AddAtt(0, "Add Attatchments");
}
WriteMail::~WriteMail()
{
delete addAtt;
}
void WriteMail::setAddressList(AddressList *list)
{
Contact *cPtr;
addressList = list;
addressView->clear();
QList<Contact> *cListPtr = addressList->getContactList();
QListViewItem *item;
for (cPtr = cListPtr->first(); cPtr != 0; cPtr = cListPtr->next() ) {
item = new QListViewItem(addressView, cPtr->email, cPtr->name);
}
}
void WriteMail::init()
{
setToolBarsMovable(FALSE);
bar = new QToolBar(this);
bar->setHorizontalStretchable( TRUE );
menu = new QMenuBar( bar );
mailMenu = new QPopupMenu(menu);
menu->insertItem( tr( "&Mail" ), mailMenu);
addMenu = new QPopupMenu(menu);
menu->insertItem( tr( "&Add" ), addMenu);
bar = new QToolBar(this);
- attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("fileopen"), QString::null, 0, this, 0);
+ attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0);
attatchButton->addTo(bar);
attatchButton->addTo(addMenu);
connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) );
confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0);
confirmButton->addTo(bar);
confirmButton->addTo(mailMenu);
connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) );
newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
newButton->addTo(mailMenu);
connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) );
widget = new QWidget(this, "widget");
grid = new QGridLayout( widget );
recipientsBox = new QComboBox( FALSE, widget, "toLabel" );
recipientsBox->insertItem( tr( "To:" ) );
recipientsBox->insertItem( tr( "CC:" ) );
recipientsBox->setCurrentItem(0);
grid->addWidget( recipientsBox, 0, 0 );
subjetLabel = new QLabel( widget, "subjetLabel" );
subjetLabel->setText( tr( "Subject:" ) );
grid->addWidget( subjetLabel, 1, 0 );
ToolButton13_2 = new QToolButton( widget, "ToolButton13_2" );
ToolButton13_2->setText( tr( "..." ) );
grid->addWidget( ToolButton13_2, 1, 2 );
subjectInput = new QLineEdit( widget, "subjectInput" );
grid->addWidget( subjectInput, 1, 1 );
toInput = new QLineEdit( widget, "toInput" );
grid->addWidget( toInput, 0, 1 );
addressButton = new QToolButton( widget, "addressButton" );
addressButton->setPixmap( Resource::loadPixmap("AddressBook") );
addressButton->setToggleButton(TRUE);
grid->addWidget( addressButton, 0, 2 );
connect(addressButton, SIGNAL(clicked()), this, SLOT(getAddress()) );
emailInput = new QMultiLineEdit( widget, "emailInput" );
grid->addMultiCellWidget( emailInput, 2, 2, 0, 2);
addressView = new QListView( widget, "addressView");
addressView->addColumn("Email");
addressView->addColumn("Name");
addressView->setAllColumnsShowFocus(TRUE);
addressView->setMultiSelection(TRUE);
addressView->hide();
grid->addMultiCellWidget( addressView, 3, 3, 0, 2);
okButton = new QToolButton(bar, "ok");
okButton->setPixmap( Resource::loadPixmap("enter") );
okButton->hide();
connect(okButton, SIGNAL(clicked()), this, SLOT(addRecipients()) );
setCentralWidget(widget);
}
void WriteMail::reject()
{
emit cancelMail();
}
// need to insert date
void WriteMail::accept()
{
QStringList attatchedFiles, attatchmentsType;
int idCount = 0;
if (toInput->text() == "") {
QMessageBox::warning(this,"No recipient", "Send mail to whom?", "OK\n");
return;
}
if (! getRecipients() ) {
QMessageBox::warning(this,"Incorrect recipient separator",
"Recipients must be separated by ;\nand be valid emailaddresses", "OK\n");
return;
}
mail.subject = subjectInput->text();
mail.body = emailInput->text();
mail.sent = false;
mail.received = false;
mail.rawMail = "To: ";
for (QStringList::Iterator it = mail.recipients.begin();
it != mail.recipients.end(); ++it) {
mail.rawMail += (*it);
mail.rawMail += ",\n";
}
mail.rawMail.truncate(mail.rawMail.length()-2);
mail.rawMail += mail.from;
mail.rawMail += "\nSubject: ";
mail.rawMail += mail.subject;
mail.rawMail += "\n\n";
attatchedFiles = addAtt->returnAttatchedFiles();
attatchmentsType = addAtt->returnFileTypes();
QStringList::Iterator itType = attatchmentsType.begin();
Enclosure e;
- for ( QStringList::Iterator it = attatchedFiles.begin();
- it != attatchedFiles.end(); ++it ) {
-
+ for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) {
e.id = idCount;
e.originalName = (*it).latin1();
e.contentType = (*itType).latin1();
e.contentAttribute = (*itType).latin1();
e.saved = TRUE;
mail.addEnclosure(&e);
itType++;
idCount++;
}
mail.rawMail += mail.body;
mail.rawMail += "\n";
mail.rawMail += ".\n";
emit sendMailRequested(mail);
addAtt->clear();
}
void WriteMail::getAddress()
{
showingAddressList = !showingAddressList;
if (showingAddressList) {
emailInput->hide();
addressView->show();
okButton->show();
} else {
addressView->hide();
okButton->hide();
emailInput->show();
}
}
void WriteMail::attatchFile()
{
addAtt->showMaximized();
}
void WriteMail::reply(Email replyMail)
{
int pos;
mail = replyMail;
mail.files.clear();
toInput->setText(mail.fromMail);
subjectInput->setText("Re: " + mail.subject);
pos = 0;
mail.body.insert(pos, ">>");
while (pos != -1) {
pos = mail.body.find('\n', pos);
if (pos != -1)
mail.body.insert(++pos, ">>");
}
emailInput->setText(mail.body);
}
bool WriteMail::getRecipients()
{
QString str, temp;
int pos = 0;
diff --git a/noncore/unsupported/mailit/addatt.cpp b/noncore/unsupported/mailit/addatt.cpp
index c030e36..f279f52 100644
--- a/noncore/unsupported/mailit/addatt.cpp
+++ b/noncore/unsupported/mailit/addatt.cpp
@@ -1,209 +1,230 @@
/**********************************************************************
** 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 <qlayout.h>
#include <qdir.h>
#include <qstringlist.h>
#include "resource.h"
#include "addatt.h"
-FileItem::FileItem(QListView *parent, QFileInfo fileInfo, QString fileType)
+FileItem::FileItem(QListView *parent, DocLnk* dl)
: QListViewItem(parent)
{
- file = fileInfo;
- type = fileType;
+ /*file = fileInfo;
+ type = fileType;*/
- setText(0, fileInfo.baseName());
+ doclnk=dl;
- if (fileType == "Picture") {
+ setText(0, doclnk->name());
+
+/* if (fileType == "Picture") {
setPixmap(0, Resource::loadPixmap("pixmap"));
} else if (fileType == "Document") {
setPixmap(0, Resource::loadPixmap("txt"));
} else if (fileType == "Sound") {
setPixmap(0, Resource::loadPixmap("play"));
} else if (fileType == "Movie") {
setPixmap(0, Resource::loadPixmap("MPEGPlayer"));
} else if (fileType == "File") {
setPixmap(0, Resource::loadPixmap("exec"));
- }
+ }*/
}
-QFileInfo FileItem::getFileInfo()
+FileItem::~FileItem()
{
- return file;
-}
-
-QString FileItem::getFileType()
-{
- return type;
+ if (doclnk!=NULL) delete doclnk;
+ doclnk=NULL;
}
AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
: QDialog(parent, name, f)
{
setCaption("Adding attatchments");
- QGridLayout *top = new QGridLayout(this, 3, 2);
+ QGridLayout *top = new QGridLayout(this, 3,1 );
+
- fileCategoryButton = new QPushButton(this);
+ /*fileCategoryButton = new QPushButton(this);*/
attatchButton = new QPushButton("Attatch ->", this);
removeButton = new QPushButton("Remove", this);
- fileCategories = new QPopupMenu(fileCategoryButton);
+ /*fileCategories = new QPopupMenu(fileCategoryButton);
fileCategoryButton->setPopup(fileCategories);
fileCategories->insertItem("Document");
fileCategories->insertItem("Picture");
fileCategories->insertItem("Sound");
fileCategories->insertItem("Movie");
fileCategories->insertItem("File");
fileCategoryButton->setText("Document");
- top->addWidget(fileCategoryButton, 0, 0);
- top->addWidget(attatchButton, 2, 0);
- top->addWidget(removeButton, 2, 1);
+ top->addWidget(fileCategoryButton, 0, 0);*/
+
+ //ofs=new OFileSelector(this,2,0,"/root/Documents");
- connect(fileCategories, SIGNAL(activated(int)), this,
- SLOT(fileCategorySelected(int)) );
+
+ top->addWidget(attatchButton,1,0);
+ top->addWidget(removeButton,2,0);
+
+ /*connect(fileCategories, SIGNAL(activated(int)), this,
+ SLOT(fileCategorySelected(int)) );*/
connect(attatchButton, SIGNAL(clicked()), this,
SLOT(addAttatchment()) );
connect(removeButton, SIGNAL(clicked()), this,
SLOT(removeAttatchment()) );
- listView = new QListView(this, "AttView");
- listView->addColumn("Documents");
+ /*listView = new QListView(this, "AttView");
+ listView->addColumn("Documents");*
connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
- SLOT(addAttatchment()) );
+ SLOT(addAttatchment()) );*/
+
attView = new QListView(this, "Selected");
- attView->addColumn("Attatched");
+ attView->addColumn(tr("Attached"));
+ attView->addColumn(tr("File type"));
connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
SLOT(removeAttatchment()) );
- top->addWidget(listView, 1,0);
- top->addWidget(attView, 1,1);
+ //top->addWidget(ofs, 0,0);
+ top->addWidget(attView, 0,0);
clear();
+
+
}
void AddAtt::clear()
{
attView->clear();
- getFiles();
+ //getFiles();
modified = FALSE;
}
-void AddAtt::fileCategorySelected(int id)
+/*void AddAtt::fileCategorySelected(int id)
{
fileCategoryButton->setText(fileCategories->text(id));
getFiles();
-}
+}*/
void AddAtt::addAttatchment()
{
- QFileInfo info;
- QString type;
+ QDialog qd(this,tr("Select attachment"),true);
- if (listView->selectedItem() != NULL) {
- item = (FileItem *) listView->selectedItem();
- info = item->getFileInfo();
- type = item->getFileType();
- item = new FileItem(attView, info, type);
- }
+ QGridLayout top(&qd,1,1);
+
+ OFileSelector ofs(&qd,1,0,"/root/Documents");
+
+ top.addWidget(&ofs,0,0);
+
+ qd.showMaximized();
+
+ if (qd.exec()==QDialog::Accepted)
+ {
+ DocLnk* dl=new DocLnk(ofs.selectedDocument());
+ FileItem* fi=new FileItem(attView,dl);
+ fi->setPixmap(0,dl->pixmap());
+ fi->setText(1,dl->type());
+ attView->insertItem(fi);
modified = TRUE;
}
+}
void AddAtt::removeAttatchment()
{
- if (attView->selectedItem() != NULL) {
+ if (attView->selectedItem() != NULL)
+ {
attView->takeItem(attView->selectedItem());
}
modified = TRUE;
}
void AddAtt::reject()
{
if (modified) {
attView->clear();
modified = FALSE;
}
}
void AddAtt::accept()
{
modified = FALSE;
hide();
}
void AddAtt::getFiles()
{
QString path, selected;
- QDir *dir;
- listView->clear();
+ /*listView->clear();
selected = fileCategoryButton->text();
if (selected == "Picture") {
path = "../pics/";
} else if (selected == "Document") {
path = "" ; //sub-dirs not decided
} else if (selected == "Sound") {
path = "../sounds/"; //sub-dirs not decided
} else if (selected == "Movie") {
path = ""; //sub-dirs not decided
} else if (selected == "File") {
path = ""; //sub-dirs not decided
}
dir = new QDir(path);
dir->setFilter(QDir::Files);
const QFileInfoList *dirInfoList = dir->entryInfoList();
QFileInfoListIterator it(*dirInfoList); // create list iterator
while ( (fi=it.current()) ) { // for each file...
- item = new FileItem(listView, *fi, selected);
+ item = new FileItem(lis+ütView, *fi, selected);
++it; // goto next list element
- }
+ }*/
}
QStringList AddAtt::returnAttatchedFiles()
{
QFileInfo info;
QStringList list;
item = (FileItem *) attView->firstChild();
+
+
while (item != NULL) {
- info = item->getFileInfo();
- list += info.filePath();
+ DocLnk* dl=item->getDocLnk();
+ list+=dl->file();
+ /*info = item->getFileInfo();
+ list += info.filePath();*/
item = (FileItem *) item->nextSibling();
}
return list;
}
QStringList AddAtt::returnFileTypes()
{
QStringList list;
item = (FileItem *) attView->firstChild();
+
while (item != NULL) {
- list += item->getFileType();
+ list += item->getDocLnk()->type();
item = (FileItem *) item->nextSibling();
}
return list;
}
diff --git a/noncore/unsupported/mailit/addatt.h b/noncore/unsupported/mailit/addatt.h
index 867c905..73062e2 100644
--- a/noncore/unsupported/mailit/addatt.h
+++ b/noncore/unsupported/mailit/addatt.h
@@ -1,70 +1,76 @@
/**********************************************************************
** 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.
**
**********************************************************************/
#ifndef ADDATT_H
#define ADDATT_H
#include <qdialog.h>
#include <qlistview.h>
#include <qpushbutton.h>
#include <qpopupmenu.h>
#include <qstring.h>
#include <qfileinfo.h>
#include <qstringlist.h>
+#include <opie/ofileselector.h>
+#include <qpe/applnk.h>
class FileItem : public QListViewItem
{
public:
- FileItem(QListView *parent, QFileInfo fileInfo, QString fileType);
- QFileInfo getFileInfo();
- QString getFileType();
+ //FileItem(QListView *parent, QFileInfo fileInfo, QString fileType);
+ FileItem(QListView*, DocLnk*);
+ ~FileItem();
+ DocLnk* getDocLnk() {return doclnk;}
+
private:
- QFileInfo file;
- QString type;
+ DocLnk* doclnk;
};
class AddAtt : public QDialog
{
Q_OBJECT
public:
AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
QStringList returnAttatchedFiles();
QStringList returnFileTypes();
void getFiles();
void clear();
+
public slots:
- void fileCategorySelected(int);
+ //void fileCategorySelected(int);
void addAttatchment();
void removeAttatchment();
void reject();
void accept();
private:
FileItem *item;
- QListView *listView, *attView;
+ QListView *attView;
QPushButton *fileCategoryButton, *attatchButton, *removeButton;
QPopupMenu *fileCategories;
bool modified;
QFileInfo *fi;
+
+ OFileSelector* ofs;
};
#endif
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index fc4276b..9258aac 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -100,201 +100,207 @@ void EmailClient::init()
{
statusBar = new QStatusBar(this);
statusBar->setSizeGripEnabled(FALSE);
status1Label = new QLabel( tr("Idle"), statusBar);
status2Label = new QLabel("", statusBar);
connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
status2Label, SLOT(setText(const QString &)) );
connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
status2Label, SLOT(setText(const QString &)) );
progressBar = new QProgressBar(statusBar);
connect(emailHandler, SIGNAL(mailboxSize(int)),
this, SLOT(setTotalSize(int)) );
connect(emailHandler, SIGNAL(currentMailSize(int)),
this, SLOT(setMailSize(int)) );
connect(emailHandler, SIGNAL(downloadedSize(int)),
this, SLOT(setDownloadedSize(int)) );
statusBar->addWidget(status1Label);
statusBar->addWidget(progressBar);
statusBar->addWidget(status2Label);
setToolBarsMovable(FALSE);
bar = new QToolBar(this);
bar->setHorizontalStretchable( TRUE );
mb = new QMenuBar( bar );
QPopupMenu *mail = new QPopupMenu(mb);
mb->insertItem( tr( "&Mail" ), mail);
QPopupMenu *configure = new QPopupMenu(mb);
mb->insertItem( tr( "Accounts" ), configure);
selectAccountMenu = new QPopupMenu(mb);
editAccountMenu = new QPopupMenu(mb);
deleteAccountMenu = new QPopupMenu(mb);
mail->insertItem(tr("Get Mail in"), selectAccountMenu);
configure->insertItem(tr("Edit account"), editAccountMenu);
configure->insertItem(tr("Delete account"), deleteAccountMenu);
bar = new QToolBar(this);
getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
getMailButton->addTo(bar);
getMailButton->addTo(mail);
sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendmail"), QString::null, 0, this, 0);
connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
sendMailButton->addTo(bar);
sendMailButton->addTo(mail);
composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) );
composeButton->addTo(bar);
composeButton->addTo(mail);
cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0);
connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) );
cancelButton->addTo(mail);
+ cancelButton->addTo(bar);
cancelButton->setEnabled(FALSE);
mailboxView = new OTabWidget( this, "mailboxView" );
QWidget* widget = new QWidget( mailboxView, "widget" );
grid_2 = new QGridLayout( widget );
// grid_2->setSpacing(6);
// grid_2->setMargin( 11 );
inboxView = new QListView( widget, "inboxView" );
inboxView->addColumn( tr( "From" ) );
inboxView->addColumn( tr( "Subject" ) );
inboxView->addColumn( tr( "Date" ) );
inboxView->setMinimumSize( QSize( 0, 0 ) );
inboxView->setAllColumnsShowFocus(TRUE);
grid_2->addWidget( inboxView, 2, 0 );
mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) );
QWidget* widget_2 = new QWidget( mailboxView, "widget_2" );
grid_3 = new QGridLayout( widget_2 );
// grid_3->setSpacing(6);
// grid_3->setMargin( 11 );
outboxView = new QListView( widget_2, "outboxView" );
outboxView->addColumn( tr( "To" ) );
outboxView->addColumn( tr( "Subject" ) );
outboxView->setAllColumnsShowFocus(TRUE);
grid_3->addWidget( outboxView, 0, 0 );
mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
setCentralWidget(mailboxView);
}
void EmailClient::compose()
{
emit composeRequested();
}
void EmailClient::cancel()
{
emailHandler->cancel();
}
AddressList* EmailClient::getAdrListRef()
{
return addressList;
}
//this needs to be rewritten to syncronize with outboxView
void EmailClient::enqueMail(const Email &mail)
{
+ if (accountList.count() == 0) {
+ QMessageBox::warning(qApp->activeWindow(),
+ tr("No account selected"), tr("You must create an account"), "OK\n");
+ return;
+ }
+
if (accountList.count() > 0) {
currentAccount = accountList.first();
qWarning("using account " + currentAccount->name);
}
Email addMail = mail;
addMail.from = currentAccount->name;
addMail.fromMail = currentAccount->emailAddress;
addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
item = new EmailListItem(outboxView, addMail, false);
}
void EmailClient::sendQuedMail()
{
int count = 0;
if (accountList.count() == 0) {
- QMessageBox::warning(qApp->activeWindow(),
- "No account selected", "You must create an account", "OK\n");
+ QMessageBox::warning(qApp->activeWindow(), "No account selected", "You must create an account", "OK\n");
return;
}
//traverse listview, find messages to send
if (! sending) {
item = (EmailListItem *) outboxView->firstChild();
if (item != NULL) {
while (item != NULL) {
quedMessages.append(item->getMail());
item = (EmailListItem *) item->nextSibling();
count++;
}
setMailAccount();
emailHandler->sendMail(&quedMessages);
sending = TRUE;
sendMailButton->setEnabled(FALSE);
cancelButton->setEnabled(TRUE);
} else {
qWarning("sendQuedMail(): no messages to send");
}
}
}
void EmailClient::setMailAccount()
{
emailHandler->setAccount(*currentAccount);
}
void EmailClient::mailSent()
{
sending = FALSE;
sendMailButton->setEnabled(TRUE);
quedMessages.clear();
outboxView->clear(); //should be moved to an sentBox
}
void EmailClient::getNewMail() {
if (accountList.count() == 0) {
QMessageBox::warning(qApp->activeWindow(),"No account selected",
"You must create an account", "OK\n");
return;
}
setMailAccount();
receiving = TRUE;
previewingMail = TRUE;
getMailButton->setEnabled(FALSE);
cancelButton->setEnabled(TRUE);
selectAccountMenu->setEnabled(FALSE);
status1Label->setText(currentAccount->accountName + " headers");
progressBar->reset();
//get any previous mails not downloaded and add to queue
mailDownloadList.clear();
Email *mailPtr;
item = (EmailListItem *) inboxView->firstChild();
while (item != NULL) {
mailPtr = item->getMail();
if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
}
diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp
index 2144899..1be16d4 100644
--- a/noncore/unsupported/mailit/emailhandler.cpp
+++ b/noncore/unsupported/mailit/emailhandler.cpp
@@ -351,133 +351,136 @@ bool EmailHandler::getEnclosure(Enclosure *ePtr)
x++;
}
if (x > 1) {
decodedCount = parse64base(src, destPtr);
destPtr += decodedCount;
bufCount += decodedCount;
}
}
buffer.resize(bufCount); //set correct length of file
f.writeBlock(buffer);
} else {
QTextStream t(&f);
t << ePtr->body;
}
return TRUE;
}
int EmailHandler::parse64base(char *src, char *bufOut) {
char c, z;
char li[4];
int processed;
//conversion table withouth table...
for (int x = 0; x < 4; x++) {
c = src[x];
if ( (int) c >= 'A' && (int) c <= 'Z')
li[x] = (int) c - (int) 'A';
if ( (int) c >= 'a' && (int) c <= 'z')
li[x] = (int) c - (int) 'a' + 26;
if ( (int) c >= '0' && (int) c <= '9')
li[x] = (int) c - (int) '0' + 52;
if (c == '+')
li[x] = 62;
if (c == '/')
li[x] = 63;
}
processed = 1;
bufOut[0] = (char) li[0] & (32+16+8+4+2+1); //mask out top 2 bits
bufOut[0] <<= 2;
z = li[1] >> 4;
bufOut[0] = bufOut[0] | z; //first byte retrived
if (src[2] != '=') {
bufOut[1] = (char) li[1] & (8+4+2+1); //mask out top 4 bits
bufOut[1] <<= 4;
z = li[2] >> 2;
bufOut[1] = bufOut[1] | z; //second byte retrived
processed++;
if (src[3] != '=') {
bufOut[2] = (char) li[2] & (2+1); //mask out top 6 bits
bufOut[2] <<= 6;
z = li[3];
bufOut[2] = bufOut[2] | z; //third byte retrieved
processed++;
}
}
return processed;
}
-int EmailHandler::encodeMime(Email *mail) {
+int EmailHandler::encodeMime(Email *mail)
+{
+
QString fileName, fileType, contentType, newBody, boundary;
Enclosure *ePtr;
QString userName = mailAccount.name;
+ if (userName.length()>0) //only embrace it if there is a user name
userName += " <" + mailAccount.emailAddress + ">";
//add standard headers
newBody = "From: " + userName + "\r\nTo: ";
for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) {
newBody += *it + " ";
}
newBody += "\r\nSubject: " + mail->subject + "\r\n";
if (mail->files.count() == 0) { //just a simple mail
newBody += "\r\n" + mail->body;
mail->rawMail = newBody;
return 0;
}
//Build mime encoded mail
boundary = "-----4345=next_bound=0495----";
newBody += "Mime-Version: 1.0\r\n";
newBody += "Content-Type: multipart/mixed; boundary=\"" +
boundary + "\"\r\n\r\n";
newBody += "This is a multipart message in Mime 1.0 format\r\n\r\n";
newBody += "--" + boundary + "\r\nContent-Type: text/plain\r\n\r\n";
newBody += mail->body;
for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) {
fileName = ePtr->originalName;
fileType = ePtr->contentType;
QFileInfo fi(fileName);
// This specification of contentType is temporary
contentType = "";
if (fileType == "Picture") {
contentType = "image/x-image";
} else if (fileType == "Document") {
contentType = "text/plain";
} else if (fileType == "Sound") {
contentType = "audio/x-wav";
} else if (fileType == "Movie") {
contentType = "video/mpeg";
} else {
contentType = "application/octet-stream";
}
newBody += "\r\n\r\n--" + boundary + "\r\n";
newBody += "Content-Type: " + contentType + "; name=\"" +
fi.fileName() + "\"\r\n";
newBody += "Content-Transfer-Encoding: base64\r\n";
newBody += "Content-Disposition: inline; filename=\"" +
fi.fileName() + "\"\r\n\r\n";
if (encodeFile(fileName, &newBody) == -1) //file not found?
return -1;
}
newBody += "\r\n\r\n--" + boundary + "--";
mail->rawMail = newBody;
return 0;
}
int EmailHandler::encodeFile(QString fileName, QString *toBody)
{
diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp
index 1a7185e..70332a9 100644
--- a/noncore/unsupported/mailit/writemail.cpp
+++ b/noncore/unsupported/mailit/writemail.cpp
@@ -3,238 +3,236 @@
**
** 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 <qmessagebox.h>
#include "writemail.h"
#include "resource.h"
WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl )
: QMainWindow( parent, name, fl )
{
showingAddressList = FALSE;
init();
addAtt = new AddAtt(0, "Add Attatchments");
}
WriteMail::~WriteMail()
{
delete addAtt;
}
void WriteMail::setAddressList(AddressList *list)
{
Contact *cPtr;
addressList = list;
addressView->clear();
QList<Contact> *cListPtr = addressList->getContactList();
QListViewItem *item;
for (cPtr = cListPtr->first(); cPtr != 0; cPtr = cListPtr->next() ) {
item = new QListViewItem(addressView, cPtr->email, cPtr->name);
}
}
void WriteMail::init()
{
setToolBarsMovable(FALSE);
bar = new QToolBar(this);
bar->setHorizontalStretchable( TRUE );
menu = new QMenuBar( bar );
mailMenu = new QPopupMenu(menu);
menu->insertItem( tr( "&Mail" ), mailMenu);
addMenu = new QPopupMenu(menu);
menu->insertItem( tr( "&Add" ), addMenu);
bar = new QToolBar(this);
- attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("fileopen"), QString::null, 0, this, 0);
+ attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0);
attatchButton->addTo(bar);
attatchButton->addTo(addMenu);
connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) );
confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0);
confirmButton->addTo(bar);
confirmButton->addTo(mailMenu);
connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) );
newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
newButton->addTo(mailMenu);
connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) );
widget = new QWidget(this, "widget");
grid = new QGridLayout( widget );
recipientsBox = new QComboBox( FALSE, widget, "toLabel" );
recipientsBox->insertItem( tr( "To:" ) );
recipientsBox->insertItem( tr( "CC:" ) );
recipientsBox->setCurrentItem(0);
grid->addWidget( recipientsBox, 0, 0 );
subjetLabel = new QLabel( widget, "subjetLabel" );
subjetLabel->setText( tr( "Subject:" ) );
grid->addWidget( subjetLabel, 1, 0 );
ToolButton13_2 = new QToolButton( widget, "ToolButton13_2" );
ToolButton13_2->setText( tr( "..." ) );
grid->addWidget( ToolButton13_2, 1, 2 );
subjectInput = new QLineEdit( widget, "subjectInput" );
grid->addWidget( subjectInput, 1, 1 );
toInput = new QLineEdit( widget, "toInput" );
grid->addWidget( toInput, 0, 1 );
addressButton = new QToolButton( widget, "addressButton" );
addressButton->setPixmap( Resource::loadPixmap("AddressBook") );
addressButton->setToggleButton(TRUE);
grid->addWidget( addressButton, 0, 2 );
connect(addressButton, SIGNAL(clicked()), this, SLOT(getAddress()) );
emailInput = new QMultiLineEdit( widget, "emailInput" );
grid->addMultiCellWidget( emailInput, 2, 2, 0, 2);
addressView = new QListView( widget, "addressView");
addressView->addColumn("Email");
addressView->addColumn("Name");
addressView->setAllColumnsShowFocus(TRUE);
addressView->setMultiSelection(TRUE);
addressView->hide();
grid->addMultiCellWidget( addressView, 3, 3, 0, 2);
okButton = new QToolButton(bar, "ok");
okButton->setPixmap( Resource::loadPixmap("enter") );
okButton->hide();
connect(okButton, SIGNAL(clicked()), this, SLOT(addRecipients()) );
setCentralWidget(widget);
}
void WriteMail::reject()
{
emit cancelMail();
}
// need to insert date
void WriteMail::accept()
{
QStringList attatchedFiles, attatchmentsType;
int idCount = 0;
if (toInput->text() == "") {
QMessageBox::warning(this,"No recipient", "Send mail to whom?", "OK\n");
return;
}
if (! getRecipients() ) {
QMessageBox::warning(this,"Incorrect recipient separator",
"Recipients must be separated by ;\nand be valid emailaddresses", "OK\n");
return;
}
mail.subject = subjectInput->text();
mail.body = emailInput->text();
mail.sent = false;
mail.received = false;
mail.rawMail = "To: ";
for (QStringList::Iterator it = mail.recipients.begin();
it != mail.recipients.end(); ++it) {
mail.rawMail += (*it);
mail.rawMail += ",\n";
}
mail.rawMail.truncate(mail.rawMail.length()-2);
mail.rawMail += mail.from;
mail.rawMail += "\nSubject: ";
mail.rawMail += mail.subject;
mail.rawMail += "\n\n";
attatchedFiles = addAtt->returnAttatchedFiles();
attatchmentsType = addAtt->returnFileTypes();
QStringList::Iterator itType = attatchmentsType.begin();
Enclosure e;
- for ( QStringList::Iterator it = attatchedFiles.begin();
- it != attatchedFiles.end(); ++it ) {
-
+ for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) {
e.id = idCount;
e.originalName = (*it).latin1();
e.contentType = (*itType).latin1();
e.contentAttribute = (*itType).latin1();
e.saved = TRUE;
mail.addEnclosure(&e);
itType++;
idCount++;
}
mail.rawMail += mail.body;
mail.rawMail += "\n";
mail.rawMail += ".\n";
emit sendMailRequested(mail);
addAtt->clear();
}
void WriteMail::getAddress()
{
showingAddressList = !showingAddressList;
if (showingAddressList) {
emailInput->hide();
addressView->show();
okButton->show();
} else {
addressView->hide();
okButton->hide();
emailInput->show();
}
}
void WriteMail::attatchFile()
{
addAtt->showMaximized();
}
void WriteMail::reply(Email replyMail)
{
int pos;
mail = replyMail;
mail.files.clear();
toInput->setText(mail.fromMail);
subjectInput->setText("Re: " + mail.subject);
pos = 0;
mail.body.insert(pos, ">>");
while (pos != -1) {
pos = mail.body.find('\n', pos);
if (pos != -1)
mail.body.insert(++pos, ">>");
}
emailInput->setText(mail.body);
}
bool WriteMail::getRecipients()
{
QString str, temp;
int pos = 0;