summaryrefslogtreecommitdiff
authorgroucho <groucho>2003-04-11 14:48:19 (UTC)
committer groucho <groucho>2003-04-11 14:48:19 (UTC)
commitd37f3eac6b876285eb7a03ab01194ea261458ea5 (patch) (unidiff)
tree47420d872c6d298db7e26715c80cf3aebb055033
parentebf5bb083d47179918d47f083a3cc98a5ed5d2e0 (diff)
downloadopie-d37f3eac6b876285eb7a03ab01194ea261458ea5.zip
opie-d37f3eac6b876285eb7a03ab01194ea261458ea5.tar.gz
opie-d37f3eac6b876285eb7a03ab01194ea261458ea5.tar.bz2
Lots of improvements regarding usability and stability:
- Now uses ofileselector for sending attachments (reading follows, does not crash any more) - Uses DocLnks for attachments (when composing a message) - Beautified the attachments dialog with doc icons - removed a crash when sending attachments and no account was set - smaller fixes ToDo: - Attachment viewer should use doclnk too - get rid of teh save button in ofileselector - fix the bug with GMX mail provider sending mail (user encoding wrong) - replace the Attach and Remove buttons with a nice toolbar - Maybe integrate attview into the mail sending window on demand - get rid of crashes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mailit/addatt.cpp119
-rw-r--r--noncore/net/mailit/addatt.h24
-rw-r--r--noncore/net/mailit/emailclient.cpp10
-rw-r--r--noncore/net/mailit/emailhandler.cpp7
-rw-r--r--noncore/net/mailit/writemail.cpp6
-rw-r--r--noncore/unsupported/mailit/addatt.cpp119
-rw-r--r--noncore/unsupported/mailit/addatt.h24
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp10
-rw-r--r--noncore/unsupported/mailit/emailhandler.cpp7
-rw-r--r--noncore/unsupported/mailit/writemail.cpp6
10 files changed, 200 insertions, 132 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
@@ -10,200 +10,221 @@
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include <qlayout.h> 20#include <qlayout.h>
21#include <qdir.h> 21#include <qdir.h>
22#include <qstringlist.h> 22#include <qstringlist.h>
23#include "resource.h" 23#include "resource.h"
24#include "addatt.h" 24#include "addatt.h"
25 25
26FileItem::FileItem(QListView *parent, QFileInfo fileInfo, QString fileType) 26FileItem::FileItem(QListView *parent, DocLnk* dl)
27 : QListViewItem(parent) 27 : QListViewItem(parent)
28{ 28{
29 file = fileInfo; 29 /*file = fileInfo;
30 type = fileType; 30 type = fileType;*/
31
32 doclnk=dl;
31 33
32 setText(0, fileInfo.baseName()); 34 setText(0, doclnk->name());
33 35
34 if (fileType == "Picture") { 36 /*if (fileType == "Picture") {
35 setPixmap(0, Resource::loadPixmap("pixmap")); 37 setPixmap(0, Resource::loadPixmap("pixmap"));
36 } else if (fileType == "Document") { 38 } else if (fileType == "Document") {
37 setPixmap(0, Resource::loadPixmap("txt")); 39 setPixmap(0, Resource::loadPixmap("txt"));
38 } else if (fileType == "Sound") { 40 } else if (fileType == "Sound") {
39 setPixmap(0, Resource::loadPixmap("play")); 41 setPixmap(0, Resource::loadPixmap("play"));
40 } else if (fileType == "Movie") { 42 } else if (fileType == "Movie") {
41 setPixmap(0, Resource::loadPixmap("MPEGPlayer")); 43 setPixmap(0, Resource::loadPixmap("MPEGPlayer"));
42 } else if (fileType == "File") { 44 } else if (fileType == "File") {
43 setPixmap(0, Resource::loadPixmap("exec")); 45 setPixmap(0, Resource::loadPixmap("exec"));
44 } 46 }*/
45} 47}
46 48
47QFileInfo FileItem::getFileInfo() 49FileItem::~FileItem()
48{ 50{
49 return file; 51 if (doclnk!=NULL) delete doclnk;
50} 52 doclnk=NULL;
51
52QString FileItem::getFileType()
53{
54 return type;
55} 53}
56 54
57AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) 55AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
58 : QDialog(parent, name, f) 56 : QDialog(parent, name, f)
59{ 57{
60 setCaption("Adding attatchments"); 58 setCaption("Adding attatchments");
61 59
62 QGridLayout *top = new QGridLayout(this, 3, 2); 60 QGridLayout *top = new QGridLayout(this, 3,1 );
61
63 62
64 fileCategoryButton = new QPushButton(this); 63 /*fileCategoryButton = new QPushButton(this);*/
65 attatchButton = new QPushButton("Attatch ->", this); 64 attatchButton = new QPushButton("Attatch ->", this);
66 removeButton = new QPushButton("Remove", this); 65 removeButton = new QPushButton("Remove", this);
67 66
68 fileCategories = new QPopupMenu(fileCategoryButton); 67 /*fileCategories = new QPopupMenu(fileCategoryButton);
69 fileCategoryButton->setPopup(fileCategories); 68 fileCategoryButton->setPopup(fileCategories);
70 fileCategories->insertItem("Document"); 69 fileCategories->insertItem("Document");
71 fileCategories->insertItem("Picture"); 70 fileCategories->insertItem("Picture");
72 fileCategories->insertItem("Sound"); 71 fileCategories->insertItem("Sound");
73 fileCategories->insertItem("Movie"); 72 fileCategories->insertItem("Movie");
74 fileCategories->insertItem("File"); 73 fileCategories->insertItem("File");
75 74
76 fileCategoryButton->setText("Document"); 75 fileCategoryButton->setText("Document");
77 top->addWidget(fileCategoryButton, 0, 0); 76 top->addWidget(fileCategoryButton, 0, 0);*/
78 top->addWidget(attatchButton, 2, 0); 77
79 top->addWidget(removeButton, 2, 1); 78 //ofs=new OFileSelector(this,2,0,"/root/Documents");
79
80
81 top->addWidget(attatchButton,1,0);
82 top->addWidget(removeButton,2,0);
80 83
81 connect(fileCategories, SIGNAL(activated(int)), this, 84 /*connect(fileCategories, SIGNAL(activated(int)), this,
82 SLOT(fileCategorySelected(int)) ); 85 SLOT(fileCategorySelected(int)) );*/
83 connect(attatchButton, SIGNAL(clicked()), this, 86 connect(attatchButton, SIGNAL(clicked()), this,
84 SLOT(addAttatchment()) ); 87 SLOT(addAttatchment()) );
85 connect(removeButton, SIGNAL(clicked()), this, 88 connect(removeButton, SIGNAL(clicked()), this,
86 SLOT(removeAttatchment()) ); 89 SLOT(removeAttatchment()) );
87 90
88 listView = new QListView(this, "AttView"); 91 /*listView = new QListView(this, "AttView");
89 listView->addColumn("Documents"); 92 listView->addColumn("Documents");*
90 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this, 93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
91 SLOT(addAttatchment()) ); 94 SLOT(addAttatchment()) );*/
95
92 96
93 attView = new QListView(this, "Selected"); 97 attView = new QListView(this, "Selected");
94 attView->addColumn("Attatched"); 98 attView->addColumn(tr("Attached"));
99 attView->addColumn(tr("File type"));
95 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this, 100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
96 SLOT(removeAttatchment()) ); 101 SLOT(removeAttatchment()) );
97 102
98 top->addWidget(listView, 1,0); 103 //top->addWidget(ofs, 0,0);
99 top->addWidget(attView, 1,1); 104 top->addWidget(attView, 0,0);
105
106 clear();
100 107
101 clear(); 108
102} 109}
103 110
104void AddAtt::clear() 111void AddAtt::clear()
105{ 112{
106 attView->clear(); 113 attView->clear();
107 getFiles(); 114 //getFiles();
108 modified = FALSE; 115 modified = FALSE;
109} 116}
110 117
111void AddAtt::fileCategorySelected(int id) 118/*void AddAtt::fileCategorySelected(int id)
112{ 119{
113 fileCategoryButton->setText(fileCategories->text(id)); 120 fileCategoryButton->setText(fileCategories->text(id));
114 getFiles(); 121 getFiles();
115} 122}*/
116 123
117void AddAtt::addAttatchment() 124void AddAtt::addAttatchment()
118{ 125 {
119 QFileInfo info; 126 QDialog qd(this,tr("Select attachment"),true);
120 QString type; 127
128 QGridLayout top(&qd,1,1);
129
130 OFileSelector ofs(&qd,1,0,"/root/Documents");
131
132 top.addWidget(&ofs,0,0);
121 133
122 if (listView->selectedItem() != NULL) { 134 qd.showMaximized();
123 item = (FileItem *) listView->selectedItem(); 135
124 info = item->getFileInfo(); 136 if (qd.exec()==QDialog::Accepted)
125 type = item->getFileType(); 137 {
126 item = new FileItem(attView, info, type); 138 DocLnk* dl=new DocLnk(ofs.selectedDocument());
139 FileItem* fi=new FileItem(attView,dl);
140 fi->setPixmap(0,dl->pixmap());
141 fi->setText(1,dl->type());
142 attView->insertItem(fi);
143 modified = TRUE;
127 } 144 }
128 modified = TRUE;
129} 145}
130 146
131void AddAtt::removeAttatchment() 147void AddAtt::removeAttatchment()
132{ 148{
133 if (attView->selectedItem() != NULL) { 149 if (attView->selectedItem() != NULL)
150 {
134 attView->takeItem(attView->selectedItem()); 151 attView->takeItem(attView->selectedItem());
135 } 152 }
136 modified = TRUE; 153 modified = TRUE;
137} 154}
138 155
139void AddAtt::reject() 156void AddAtt::reject()
140{ 157{
141 if (modified) { 158 if (modified) {
142 attView->clear(); 159 attView->clear();
143 modified = FALSE; 160 modified = FALSE;
144 } 161 }
145} 162}
146 163
147void AddAtt::accept() 164void AddAtt::accept()
148{ 165{
149 modified = FALSE; 166 modified = FALSE;
150 hide(); 167 hide();
151} 168}
152 169
153void AddAtt::getFiles() 170void AddAtt::getFiles()
154{ 171{
155 QString path, selected; 172 QString path, selected;
156 QDir *dir;
157 173
158 listView->clear(); 174 /*listView->clear();
159 175
160 selected = fileCategoryButton->text(); 176 selected = fileCategoryButton->text();
161 if (selected == "Picture") { 177 if (selected == "Picture") {
162 path = "../pics/"; 178 path = "../pics/";
163 } else if (selected == "Document") { 179 } else if (selected == "Document") {
164 path = "" ; //sub-dirs not decided 180 path = "" ; //sub-dirs not decided
165 } else if (selected == "Sound") { 181 } else if (selected == "Sound") {
166 path = "../sounds/"; //sub-dirs not decided 182 path = "../sounds/"; //sub-dirs not decided
167 } else if (selected == "Movie") { 183 } else if (selected == "Movie") {
168 path = ""; //sub-dirs not decided 184 path = ""; //sub-dirs not decided
169 } else if (selected == "File") { 185 } else if (selected == "File") {
170 path = ""; //sub-dirs not decided 186 path = ""; //sub-dirs not decided
171 } 187 }
172 188
173 dir = new QDir(path); 189 dir = new QDir(path);
174 dir->setFilter(QDir::Files); 190 dir->setFilter(QDir::Files);
175 const QFileInfoList *dirInfoList = dir->entryInfoList(); 191 const QFileInfoList *dirInfoList = dir->entryInfoList();
176 192
177 QFileInfoListIterator it(*dirInfoList); // create list iterator 193 QFileInfoListIterator it(*dirInfoList); // create list iterator
178 194
179 while ( (fi=it.current()) ) { // for each file... 195 while ( (fi=it.current()) ) { // for each file...
180 item = new FileItem(listView, *fi, selected); 196 item = new FileItem(listView, *fi, selected);
181 ++it; // goto next list element 197 ++it; // goto next list element
182 } 198 }*/
183} 199}
184 200
185QStringList AddAtt::returnAttatchedFiles() 201QStringList AddAtt::returnAttatchedFiles()
186{ 202{
187 QFileInfo info; 203 QFileInfo info;
188 QStringList list; 204 QStringList list;
189 205
190 item = (FileItem *) attView->firstChild(); 206 item = (FileItem *) attView->firstChild();
207
208
191 while (item != NULL) { 209 while (item != NULL) {
192 info = item->getFileInfo(); 210 DocLnk* dl=item->getDocLnk();
193 list += info.filePath(); 211 list+=dl->file();
212 /*info = item->getFileInfo();
213 list += info.filePath();*/
194 item = (FileItem *) item->nextSibling(); 214 item = (FileItem *) item->nextSibling();
195 } 215 }
196 return list; 216 return list;
197} 217}
198 218
199QStringList AddAtt::returnFileTypes() 219QStringList AddAtt::returnFileTypes()
200{ 220{
201 QStringList list; 221 QStringList list;
202 222
203 item = (FileItem *) attView->firstChild(); 223 item = (FileItem *) attView->firstChild();
224
204 while (item != NULL) { 225 while (item != NULL) {
205 list += item->getFileType(); 226 list += item->getDocLnk()->type();
206 item = (FileItem *) item->nextSibling(); 227 item = (FileItem *) item->nextSibling();
207 } 228 }
208 return list; 229 return list;
209} 230}
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
@@ -14,57 +14,63 @@
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef ADDATT_H 20#ifndef ADDATT_H
21#define ADDATT_H 21#define ADDATT_H
22 22
23#include <qdialog.h> 23#include <qdialog.h>
24#include <qlistview.h> 24#include <qlistview.h>
25#include <qpushbutton.h> 25#include <qpushbutton.h>
26#include <qpopupmenu.h> 26#include <qpopupmenu.h>
27#include <qstring.h> 27#include <qstring.h>
28#include <qfileinfo.h> 28#include <qfileinfo.h>
29#include <qstringlist.h> 29#include <qstringlist.h>
30#include <opie/ofileselector.h>
31#include <qpe/applnk.h>
30 32
31class FileItem : public QListViewItem 33class FileItem : public QListViewItem
32{ 34{
33public: 35public:
34 FileItem(QListView *parent, QFileInfo fileInfo, QString fileType); 36 //FileItem(QListView *parent, QFileInfo fileInfo, QString fileType);
35 QFileInfo getFileInfo(); 37 FileItem(QListView*, DocLnk*);
36 QString getFileType(); 38 ~FileItem();
37 39 DocLnk* getDocLnk() {return doclnk;}
40
41
38private: 42private:
39 QFileInfo file; 43 DocLnk* doclnk;
40 QString type;
41}; 44};
42 45
43class AddAtt : public QDialog 46class AddAtt : public QDialog
44{ 47{
45 Q_OBJECT 48 Q_OBJECT
46 49
47public: 50public:
48 AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0); 51 AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
49 QStringList returnAttatchedFiles(); 52 QStringList returnAttatchedFiles();
50 QStringList returnFileTypes(); 53 QStringList returnFileTypes();
51 void getFiles(); 54 void getFiles();
52 void clear(); 55 void clear();
53 56
57
54public slots: 58public slots:
55 void fileCategorySelected(int); 59 //void fileCategorySelected(int);
56 void addAttatchment(); 60 void addAttatchment();
57 void removeAttatchment(); 61 void removeAttatchment();
58 void reject(); 62 void reject();
59 void accept(); 63 void accept();
60 64
61private: 65private:
62 FileItem *item; 66 FileItem* item;
63 QListView *listView, *attView; 67 QListView *attView;
64 QPushButton *fileCategoryButton, *attatchButton, *removeButton; 68 QPushButton *fileCategoryButton, *attatchButton, *removeButton;
65 QPopupMenu *fileCategories; 69 QPopupMenu *fileCategories;
66 bool modified; 70 bool modified;
67 QFileInfo *fi; 71 QFileInfo *fi;
72
73 OFileSelector* ofs;
68}; 74};
69 75
70#endif 76#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
@@ -148,32 +148,33 @@ void EmailClient::init()
148 getMailButton->addTo(bar); 148 getMailButton->addTo(bar);
149 getMailButton->addTo(mail); 149 getMailButton->addTo(mail);
150 150
151 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendmail"), QString::null, 0, this, 0); 151 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendmail"), QString::null, 0, this, 0);
152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); 152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
153 sendMailButton->addTo(bar); 153 sendMailButton->addTo(bar);
154 sendMailButton->addTo(mail); 154 sendMailButton->addTo(mail);
155 155
156 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 156 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
157 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) ); 157 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) );
158 composeButton->addTo(bar); 158 composeButton->addTo(bar);
159 composeButton->addTo(mail); 159 composeButton->addTo(mail);
160 160
161 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0); 161 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0);
162 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) ); 162 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) );
163 cancelButton->addTo(mail); 163 cancelButton->addTo(mail);
164 cancelButton->addTo(bar);
164 cancelButton->setEnabled(FALSE); 165 cancelButton->setEnabled(FALSE);
165 166
166 mailboxView = new OTabWidget( this, "mailboxView" ); 167 mailboxView = new OTabWidget( this, "mailboxView" );
167 168
168 QWidget* widget = new QWidget( mailboxView, "widget" ); 169 QWidget* widget = new QWidget( mailboxView, "widget" );
169 grid_2 = new QGridLayout( widget ); 170 grid_2 = new QGridLayout( widget );
170// grid_2->setSpacing(6); 171// grid_2->setSpacing(6);
171// grid_2->setMargin( 11 ); 172// grid_2->setMargin( 11 );
172 173
173 inboxView = new QListView( widget, "inboxView" ); 174 inboxView = new QListView( widget, "inboxView" );
174 inboxView->addColumn( tr( "From" ) ); 175 inboxView->addColumn( tr( "From" ) );
175 inboxView->addColumn( tr( "Subject" ) ); 176 inboxView->addColumn( tr( "Subject" ) );
176 inboxView->addColumn( tr( "Date" ) ); 177 inboxView->addColumn( tr( "Date" ) );
177 inboxView->setMinimumSize( QSize( 0, 0 ) ); 178 inboxView->setMinimumSize( QSize( 0, 0 ) );
178 inboxView->setAllColumnsShowFocus(TRUE); 179 inboxView->setAllColumnsShowFocus(TRUE);
179 180
@@ -201,52 +202,57 @@ void EmailClient::compose()
201 emit composeRequested(); 202 emit composeRequested();
202} 203}
203 204
204void EmailClient::cancel() 205void EmailClient::cancel()
205{ 206{
206 emailHandler->cancel(); 207 emailHandler->cancel();
207} 208}
208 209
209AddressList* EmailClient::getAdrListRef() 210AddressList* EmailClient::getAdrListRef()
210{ 211{
211 return addressList; 212 return addressList;
212} 213}
213 214
214//this needs to be rewritten to syncronize with outboxView 215//this needs to be rewritten to syncronize with outboxView
215void EmailClient::enqueMail(const Email &mail) 216void EmailClient::enqueMail(const Email &mail)
216{ 217{
218 if (accountList.count() == 0) {
219 QMessageBox::warning(qApp->activeWindow(),
220 tr("No account selected"), tr("You must create an account"), "OK\n");
221 return;
222 }
223
217 if (accountList.count() > 0) { 224 if (accountList.count() > 0) {
218 currentAccount = accountList.first(); 225 currentAccount = accountList.first();
219 qWarning("using account " + currentAccount->name); 226 qWarning("using account " + currentAccount->name);
220 } 227 }
221 228
222 Email addMail = mail; 229 Email addMail = mail;
223 addMail.from = currentAccount->name; 230 addMail.from = currentAccount->name;
224 addMail.fromMail = currentAccount->emailAddress; 231 addMail.fromMail = currentAccount->emailAddress;
225 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n"); 232 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
226 item = new EmailListItem(outboxView, addMail, false); 233 item = new EmailListItem(outboxView, addMail, false);
227 234
228} 235}
229 236
230void EmailClient::sendQuedMail() 237void EmailClient::sendQuedMail()
231{ 238{
232 int count = 0; 239 int count = 0;
233 240
234 if (accountList.count() == 0) { 241 if (accountList.count() == 0) {
235 QMessageBox::warning(qApp->activeWindow(), 242 QMessageBox::warning(qApp->activeWindow(), "No account selected", "You must create an account", "OK\n");
236 "No account selected", "You must create an account", "OK\n");
237 return; 243 return;
238 } 244 }
239 //traverse listview, find messages to send 245 //traverse listview, find messages to send
240 if (! sending) { 246 if (! sending) {
241 item = (EmailListItem *) outboxView->firstChild(); 247 item = (EmailListItem *) outboxView->firstChild();
242 if (item != NULL) { 248 if (item != NULL) {
243 while (item != NULL) { 249 while (item != NULL) {
244 quedMessages.append(item->getMail()); 250 quedMessages.append(item->getMail());
245 item = (EmailListItem *) item->nextSibling(); 251 item = (EmailListItem *) item->nextSibling();
246 count++; 252 count++;
247 } 253 }
248 setMailAccount(); 254 setMailAccount();
249 emailHandler->sendMail(&quedMessages); 255 emailHandler->sendMail(&quedMessages);
250 sending = TRUE; 256 sending = TRUE;
251 sendMailButton->setEnabled(FALSE); 257 sendMailButton->setEnabled(FALSE);
252 cancelButton->setEnabled(TRUE); 258 cancelButton->setEnabled(TRUE);
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
@@ -399,38 +399,41 @@ int EmailHandler::parse64base(char *src, char *bufOut) {
399 bufOut[1] <<= 4; 399 bufOut[1] <<= 4;
400 z = li[2] >> 2; 400 z = li[2] >> 2;
401 bufOut[1] = bufOut[1] | z; //second byte retrived 401 bufOut[1] = bufOut[1] | z; //second byte retrived
402 processed++; 402 processed++;
403 403
404 if (src[3] != '=') { 404 if (src[3] != '=') {
405 bufOut[2] = (char) li[2] & (2+1); //mask out top 6 bits 405 bufOut[2] = (char) li[2] & (2+1); //mask out top 6 bits
406 bufOut[2] <<= 6; 406 bufOut[2] <<= 6;
407 z = li[3]; 407 z = li[3];
408 bufOut[2] = bufOut[2] | z; //third byte retrieved 408 bufOut[2] = bufOut[2] | z; //third byte retrieved
409 processed++; 409 processed++;
410 } 410 }
411 } 411 }
412 return processed; 412 return processed;
413} 413}
414 414
415int EmailHandler::encodeMime(Email *mail) { 415int EmailHandler::encodeMime(Email *mail)
416{
417
416 QString fileName, fileType, contentType, newBody, boundary; 418 QString fileName, fileType, contentType, newBody, boundary;
417 Enclosure *ePtr; 419 Enclosure *ePtr;
418 420
419 QString userName = mailAccount.name; 421 QString userName = mailAccount.name;
420 userName += " <" + mailAccount.emailAddress + ">"; 422 if (userName.length()>0)//only embrace it if there is a user name
423 userName += " <" + mailAccount.emailAddress + ">";
421 424
422 //add standard headers 425 //add standard headers
423 newBody = "From: " + userName + "\r\nTo: "; 426 newBody = "From: " + userName + "\r\nTo: ";
424 for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) { 427 for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) {
425 newBody += *it + " "; 428 newBody += *it + " ";
426 } 429 }
427 newBody += "\r\nSubject: " + mail->subject + "\r\n"; 430 newBody += "\r\nSubject: " + mail->subject + "\r\n";
428 431
429 if (mail->files.count() == 0) { //just a simple mail 432 if (mail->files.count() == 0) { //just a simple mail
430 newBody += "\r\n" + mail->body; 433 newBody += "\r\n" + mail->body;
431 mail->rawMail = newBody; 434 mail->rawMail = newBody;
432 return 0; 435 return 0;
433 } 436 }
434 437
435 //Build mime encoded mail 438 //Build mime encoded mail
436 boundary = "-----4345=next_bound=0495----"; 439 boundary = "-----4345=next_bound=0495----";
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
@@ -51,33 +51,33 @@ void WriteMail::setAddressList(AddressList *list)
51 51
52void WriteMail::init() 52void WriteMail::init()
53{ 53{
54 setToolBarsMovable(FALSE); 54 setToolBarsMovable(FALSE);
55 55
56 bar = new QToolBar(this); 56 bar = new QToolBar(this);
57 bar->setHorizontalStretchable( TRUE ); 57 bar->setHorizontalStretchable( TRUE );
58 58
59 menu = new QMenuBar( bar ); 59 menu = new QMenuBar( bar );
60 60
61 mailMenu = new QPopupMenu(menu); 61 mailMenu = new QPopupMenu(menu);
62 menu->insertItem( tr( "&Mail" ), mailMenu); 62 menu->insertItem( tr( "&Mail" ), mailMenu);
63 addMenu = new QPopupMenu(menu); 63 addMenu = new QPopupMenu(menu);
64 menu->insertItem( tr( "&Add" ), addMenu); 64 menu->insertItem( tr( "&Add" ), addMenu);
65 65
66 bar = new QToolBar(this); 66 bar = new QToolBar(this);
67 attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("fileopen"), QString::null, 0, this, 0); 67 attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0);
68 attatchButton->addTo(bar); 68 attatchButton->addTo(bar);
69 attatchButton->addTo(addMenu); 69 attatchButton->addTo(addMenu);
70 connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) ); 70 connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) );
71 71
72 confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0); 72 confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0);
73 confirmButton->addTo(bar); 73 confirmButton->addTo(bar);
74 confirmButton->addTo(mailMenu); 74 confirmButton->addTo(mailMenu);
75 connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) ); 75 connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) );
76 76
77 newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 77 newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
78 newButton->addTo(mailMenu); 78 newButton->addTo(mailMenu);
79 connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) ); 79 connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) );
80 80
81 widget = new QWidget(this, "widget"); 81 widget = new QWidget(this, "widget");
82 grid = new QGridLayout( widget ); 82 grid = new QGridLayout( widget );
83 83
@@ -158,35 +158,33 @@ void WriteMail::accept()
158 158
159 mail.rawMail += (*it); 159 mail.rawMail += (*it);
160 mail.rawMail += ",\n"; 160 mail.rawMail += ",\n";
161 } 161 }
162 mail.rawMail.truncate(mail.rawMail.length()-2); 162 mail.rawMail.truncate(mail.rawMail.length()-2);
163 mail.rawMail += mail.from; 163 mail.rawMail += mail.from;
164 mail.rawMail += "\nSubject: "; 164 mail.rawMail += "\nSubject: ";
165 mail.rawMail += mail.subject; 165 mail.rawMail += mail.subject;
166 mail.rawMail += "\n\n"; 166 mail.rawMail += "\n\n";
167 167
168 attatchedFiles = addAtt->returnAttatchedFiles(); 168 attatchedFiles = addAtt->returnAttatchedFiles();
169 attatchmentsType = addAtt->returnFileTypes(); 169 attatchmentsType = addAtt->returnFileTypes();
170 170
171 QStringList::Iterator itType = attatchmentsType.begin(); 171 QStringList::Iterator itType = attatchmentsType.begin();
172 172
173 Enclosure e; 173 Enclosure e;
174 for ( QStringList::Iterator it = attatchedFiles.begin(); 174 for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) {
175 it != attatchedFiles.end(); ++it ) {
176
177 e.id = idCount; 175 e.id = idCount;
178 e.originalName = (*it).latin1(); 176 e.originalName = (*it).latin1();
179 e.contentType = (*itType).latin1(); 177 e.contentType = (*itType).latin1();
180 e.contentAttribute = (*itType).latin1(); 178 e.contentAttribute = (*itType).latin1();
181 e.saved = TRUE; 179 e.saved = TRUE;
182 mail.addEnclosure(&e); 180 mail.addEnclosure(&e);
183 181
184 itType++; 182 itType++;
185 idCount++; 183 idCount++;
186 } 184 }
187 mail.rawMail += mail.body; 185 mail.rawMail += mail.body;
188 mail.rawMail += "\n"; 186 mail.rawMail += "\n";
189 mail.rawMail += ".\n"; 187 mail.rawMail += ".\n";
190 emit sendMailRequested(mail); 188 emit sendMailRequested(mail);
191 addAtt->clear(); 189 addAtt->clear();
192} 190}
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
@@ -10,200 +10,221 @@
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include <qlayout.h> 20#include <qlayout.h>
21#include <qdir.h> 21#include <qdir.h>
22#include <qstringlist.h> 22#include <qstringlist.h>
23#include "resource.h" 23#include "resource.h"
24#include "addatt.h" 24#include "addatt.h"
25 25
26FileItem::FileItem(QListView *parent, QFileInfo fileInfo, QString fileType) 26FileItem::FileItem(QListView *parent, DocLnk* dl)
27 : QListViewItem(parent) 27 : QListViewItem(parent)
28{ 28{
29 file = fileInfo; 29 /*file = fileInfo;
30 type = fileType; 30 type = fileType;*/
31
32 doclnk=dl;
31 33
32 setText(0, fileInfo.baseName()); 34 setText(0, doclnk->name());
33 35
34 if (fileType == "Picture") { 36 /*if (fileType == "Picture") {
35 setPixmap(0, Resource::loadPixmap("pixmap")); 37 setPixmap(0, Resource::loadPixmap("pixmap"));
36 } else if (fileType == "Document") { 38 } else if (fileType == "Document") {
37 setPixmap(0, Resource::loadPixmap("txt")); 39 setPixmap(0, Resource::loadPixmap("txt"));
38 } else if (fileType == "Sound") { 40 } else if (fileType == "Sound") {
39 setPixmap(0, Resource::loadPixmap("play")); 41 setPixmap(0, Resource::loadPixmap("play"));
40 } else if (fileType == "Movie") { 42 } else if (fileType == "Movie") {
41 setPixmap(0, Resource::loadPixmap("MPEGPlayer")); 43 setPixmap(0, Resource::loadPixmap("MPEGPlayer"));
42 } else if (fileType == "File") { 44 } else if (fileType == "File") {
43 setPixmap(0, Resource::loadPixmap("exec")); 45 setPixmap(0, Resource::loadPixmap("exec"));
44 } 46 }*/
45} 47}
46 48
47QFileInfo FileItem::getFileInfo() 49FileItem::~FileItem()
48{ 50{
49 return file; 51 if (doclnk!=NULL) delete doclnk;
50} 52 doclnk=NULL;
51
52QString FileItem::getFileType()
53{
54 return type;
55} 53}
56 54
57AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) 55AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
58 : QDialog(parent, name, f) 56 : QDialog(parent, name, f)
59{ 57{
60 setCaption("Adding attatchments"); 58 setCaption("Adding attatchments");
61 59
62 QGridLayout *top = new QGridLayout(this, 3, 2); 60 QGridLayout *top = new QGridLayout(this, 3,1 );
61
63 62
64 fileCategoryButton = new QPushButton(this); 63 /*fileCategoryButton = new QPushButton(this);*/
65 attatchButton = new QPushButton("Attatch ->", this); 64 attatchButton = new QPushButton("Attatch ->", this);
66 removeButton = new QPushButton("Remove", this); 65 removeButton = new QPushButton("Remove", this);
67 66
68 fileCategories = new QPopupMenu(fileCategoryButton); 67 /*fileCategories = new QPopupMenu(fileCategoryButton);
69 fileCategoryButton->setPopup(fileCategories); 68 fileCategoryButton->setPopup(fileCategories);
70 fileCategories->insertItem("Document"); 69 fileCategories->insertItem("Document");
71 fileCategories->insertItem("Picture"); 70 fileCategories->insertItem("Picture");
72 fileCategories->insertItem("Sound"); 71 fileCategories->insertItem("Sound");
73 fileCategories->insertItem("Movie"); 72 fileCategories->insertItem("Movie");
74 fileCategories->insertItem("File"); 73 fileCategories->insertItem("File");
75 74
76 fileCategoryButton->setText("Document"); 75 fileCategoryButton->setText("Document");
77 top->addWidget(fileCategoryButton, 0, 0); 76 top->addWidget(fileCategoryButton, 0, 0);*/
78 top->addWidget(attatchButton, 2, 0); 77
79 top->addWidget(removeButton, 2, 1); 78 //ofs=new OFileSelector(this,2,0,"/root/Documents");
79
80
81 top->addWidget(attatchButton,1,0);
82 top->addWidget(removeButton,2,0);
80 83
81 connect(fileCategories, SIGNAL(activated(int)), this, 84 /*connect(fileCategories, SIGNAL(activated(int)), this,
82 SLOT(fileCategorySelected(int)) ); 85 SLOT(fileCategorySelected(int)) );*/
83 connect(attatchButton, SIGNAL(clicked()), this, 86 connect(attatchButton, SIGNAL(clicked()), this,
84 SLOT(addAttatchment()) ); 87 SLOT(addAttatchment()) );
85 connect(removeButton, SIGNAL(clicked()), this, 88 connect(removeButton, SIGNAL(clicked()), this,
86 SLOT(removeAttatchment()) ); 89 SLOT(removeAttatchment()) );
87 90
88 listView = new QListView(this, "AttView"); 91 /*listView = new QListView(this, "AttView");
89 listView->addColumn("Documents"); 92 listView->addColumn("Documents");*
90 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this, 93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
91 SLOT(addAttatchment()) ); 94 SLOT(addAttatchment()) );*/
95
92 96
93 attView = new QListView(this, "Selected"); 97 attView = new QListView(this, "Selected");
94 attView->addColumn("Attatched"); 98 attView->addColumn(tr("Attached"));
99 attView->addColumn(tr("File type"));
95 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this, 100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
96 SLOT(removeAttatchment()) ); 101 SLOT(removeAttatchment()) );
97 102
98 top->addWidget(listView, 1,0); 103 //top->addWidget(ofs, 0,0);
99 top->addWidget(attView, 1,1); 104 top->addWidget(attView, 0,0);
105
106 clear();
100 107
101 clear(); 108
102} 109}
103 110
104void AddAtt::clear() 111void AddAtt::clear()
105{ 112{
106 attView->clear(); 113 attView->clear();
107 getFiles(); 114 //getFiles();
108 modified = FALSE; 115 modified = FALSE;
109} 116}
110 117
111void AddAtt::fileCategorySelected(int id) 118/*void AddAtt::fileCategorySelected(int id)
112{ 119{
113 fileCategoryButton->setText(fileCategories->text(id)); 120 fileCategoryButton->setText(fileCategories->text(id));
114 getFiles(); 121 getFiles();
115} 122}*/
116 123
117void AddAtt::addAttatchment() 124void AddAtt::addAttatchment()
118{ 125 {
119 QFileInfo info; 126 QDialog qd(this,tr("Select attachment"),true);
120 QString type; 127
128 QGridLayout top(&qd,1,1);
129
130 OFileSelector ofs(&qd,1,0,"/root/Documents");
131
132 top.addWidget(&ofs,0,0);
121 133
122 if (listView->selectedItem() != NULL) { 134 qd.showMaximized();
123 item = (FileItem *) listView->selectedItem(); 135
124 info = item->getFileInfo(); 136 if (qd.exec()==QDialog::Accepted)
125 type = item->getFileType(); 137 {
126 item = new FileItem(attView, info, type); 138 DocLnk* dl=new DocLnk(ofs.selectedDocument());
139 FileItem* fi=new FileItem(attView,dl);
140 fi->setPixmap(0,dl->pixmap());
141 fi->setText(1,dl->type());
142 attView->insertItem(fi);
143 modified = TRUE;
127 } 144 }
128 modified = TRUE;
129} 145}
130 146
131void AddAtt::removeAttatchment() 147void AddAtt::removeAttatchment()
132{ 148{
133 if (attView->selectedItem() != NULL) { 149 if (attView->selectedItem() != NULL)
150 {
134 attView->takeItem(attView->selectedItem()); 151 attView->takeItem(attView->selectedItem());
135 } 152 }
136 modified = TRUE; 153 modified = TRUE;
137} 154}
138 155
139void AddAtt::reject() 156void AddAtt::reject()
140{ 157{
141 if (modified) { 158 if (modified) {
142 attView->clear(); 159 attView->clear();
143 modified = FALSE; 160 modified = FALSE;
144 } 161 }
145} 162}
146 163
147void AddAtt::accept() 164void AddAtt::accept()
148{ 165{
149 modified = FALSE; 166 modified = FALSE;
150 hide(); 167 hide();
151} 168}
152 169
153void AddAtt::getFiles() 170void AddAtt::getFiles()
154{ 171{
155 QString path, selected; 172 QString path, selected;
156 QDir *dir;
157 173
158 listView->clear(); 174 /*listView->clear();
159 175
160 selected = fileCategoryButton->text(); 176 selected = fileCategoryButton->text();
161 if (selected == "Picture") { 177 if (selected == "Picture") {
162 path = "../pics/"; 178 path = "../pics/";
163 } else if (selected == "Document") { 179 } else if (selected == "Document") {
164 path = "" ; //sub-dirs not decided 180 path = "" ; //sub-dirs not decided
165 } else if (selected == "Sound") { 181 } else if (selected == "Sound") {
166 path = "../sounds/"; //sub-dirs not decided 182 path = "../sounds/"; //sub-dirs not decided
167 } else if (selected == "Movie") { 183 } else if (selected == "Movie") {
168 path = ""; //sub-dirs not decided 184 path = ""; //sub-dirs not decided
169 } else if (selected == "File") { 185 } else if (selected == "File") {
170 path = ""; //sub-dirs not decided 186 path = ""; //sub-dirs not decided
171 } 187 }
172 188
173 dir = new QDir(path); 189 dir = new QDir(path);
174 dir->setFilter(QDir::Files); 190 dir->setFilter(QDir::Files);
175 const QFileInfoList *dirInfoList = dir->entryInfoList(); 191 const QFileInfoList *dirInfoList = dir->entryInfoList();
176 192
177 QFileInfoListIterator it(*dirInfoList); // create list iterator 193 QFileInfoListIterator it(*dirInfoList); // create list iterator
178 194
179 while ( (fi=it.current()) ) { // for each file... 195 while ( (fi=it.current()) ) { // for each file...
180 item = new FileItem(listView, *fi, selected); 196 item = new FileItem(listView, *fi, selected);
181 ++it; // goto next list element 197 ++it; // goto next list element
182 } 198 }*/
183} 199}
184 200
185QStringList AddAtt::returnAttatchedFiles() 201QStringList AddAtt::returnAttatchedFiles()
186{ 202{
187 QFileInfo info; 203 QFileInfo info;
188 QStringList list; 204 QStringList list;
189 205
190 item = (FileItem *) attView->firstChild(); 206 item = (FileItem *) attView->firstChild();
207
208
191 while (item != NULL) { 209 while (item != NULL) {
192 info = item->getFileInfo(); 210 DocLnk* dl=item->getDocLnk();
193 list += info.filePath(); 211 list+=dl->file();
212 /*info = item->getFileInfo();
213 list += info.filePath();*/
194 item = (FileItem *) item->nextSibling(); 214 item = (FileItem *) item->nextSibling();
195 } 215 }
196 return list; 216 return list;
197} 217}
198 218
199QStringList AddAtt::returnFileTypes() 219QStringList AddAtt::returnFileTypes()
200{ 220{
201 QStringList list; 221 QStringList list;
202 222
203 item = (FileItem *) attView->firstChild(); 223 item = (FileItem *) attView->firstChild();
224
204 while (item != NULL) { 225 while (item != NULL) {
205 list += item->getFileType(); 226 list += item->getDocLnk()->type();
206 item = (FileItem *) item->nextSibling(); 227 item = (FileItem *) item->nextSibling();
207 } 228 }
208 return list; 229 return list;
209} 230}
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
@@ -14,57 +14,63 @@
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef ADDATT_H 20#ifndef ADDATT_H
21#define ADDATT_H 21#define ADDATT_H
22 22
23#include <qdialog.h> 23#include <qdialog.h>
24#include <qlistview.h> 24#include <qlistview.h>
25#include <qpushbutton.h> 25#include <qpushbutton.h>
26#include <qpopupmenu.h> 26#include <qpopupmenu.h>
27#include <qstring.h> 27#include <qstring.h>
28#include <qfileinfo.h> 28#include <qfileinfo.h>
29#include <qstringlist.h> 29#include <qstringlist.h>
30#include <opie/ofileselector.h>
31#include <qpe/applnk.h>
30 32
31class FileItem : public QListViewItem 33class FileItem : public QListViewItem
32{ 34{
33public: 35public:
34 FileItem(QListView *parent, QFileInfo fileInfo, QString fileType); 36 //FileItem(QListView *parent, QFileInfo fileInfo, QString fileType);
35 QFileInfo getFileInfo(); 37 FileItem(QListView*, DocLnk*);
36 QString getFileType(); 38 ~FileItem();
37 39 DocLnk* getDocLnk() {return doclnk;}
40
41
38private: 42private:
39 QFileInfo file; 43 DocLnk* doclnk;
40 QString type;
41}; 44};
42 45
43class AddAtt : public QDialog 46class AddAtt : public QDialog
44{ 47{
45 Q_OBJECT 48 Q_OBJECT
46 49
47public: 50public:
48 AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0); 51 AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
49 QStringList returnAttatchedFiles(); 52 QStringList returnAttatchedFiles();
50 QStringList returnFileTypes(); 53 QStringList returnFileTypes();
51 void getFiles(); 54 void getFiles();
52 void clear(); 55 void clear();
53 56
57
54public slots: 58public slots:
55 void fileCategorySelected(int); 59 //void fileCategorySelected(int);
56 void addAttatchment(); 60 void addAttatchment();
57 void removeAttatchment(); 61 void removeAttatchment();
58 void reject(); 62 void reject();
59 void accept(); 63 void accept();
60 64
61private: 65private:
62 FileItem *item; 66 FileItem* item;
63 QListView *listView, *attView; 67 QListView *attView;
64 QPushButton *fileCategoryButton, *attatchButton, *removeButton; 68 QPushButton *fileCategoryButton, *attatchButton, *removeButton;
65 QPopupMenu *fileCategories; 69 QPopupMenu *fileCategories;
66 bool modified; 70 bool modified;
67 QFileInfo *fi; 71 QFileInfo *fi;
72
73 OFileSelector* ofs;
68}; 74};
69 75
70#endif 76#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
@@ -148,32 +148,33 @@ void EmailClient::init()
148 getMailButton->addTo(bar); 148 getMailButton->addTo(bar);
149 getMailButton->addTo(mail); 149 getMailButton->addTo(mail);
150 150
151 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendmail"), QString::null, 0, this, 0); 151 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendmail"), QString::null, 0, this, 0);
152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); 152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
153 sendMailButton->addTo(bar); 153 sendMailButton->addTo(bar);
154 sendMailButton->addTo(mail); 154 sendMailButton->addTo(mail);
155 155
156 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 156 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
157 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) ); 157 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) );
158 composeButton->addTo(bar); 158 composeButton->addTo(bar);
159 composeButton->addTo(mail); 159 composeButton->addTo(mail);
160 160
161 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0); 161 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0);
162 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) ); 162 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) );
163 cancelButton->addTo(mail); 163 cancelButton->addTo(mail);
164 cancelButton->addTo(bar);
164 cancelButton->setEnabled(FALSE); 165 cancelButton->setEnabled(FALSE);
165 166
166 mailboxView = new OTabWidget( this, "mailboxView" ); 167 mailboxView = new OTabWidget( this, "mailboxView" );
167 168
168 QWidget* widget = new QWidget( mailboxView, "widget" ); 169 QWidget* widget = new QWidget( mailboxView, "widget" );
169 grid_2 = new QGridLayout( widget ); 170 grid_2 = new QGridLayout( widget );
170// grid_2->setSpacing(6); 171// grid_2->setSpacing(6);
171// grid_2->setMargin( 11 ); 172// grid_2->setMargin( 11 );
172 173
173 inboxView = new QListView( widget, "inboxView" ); 174 inboxView = new QListView( widget, "inboxView" );
174 inboxView->addColumn( tr( "From" ) ); 175 inboxView->addColumn( tr( "From" ) );
175 inboxView->addColumn( tr( "Subject" ) ); 176 inboxView->addColumn( tr( "Subject" ) );
176 inboxView->addColumn( tr( "Date" ) ); 177 inboxView->addColumn( tr( "Date" ) );
177 inboxView->setMinimumSize( QSize( 0, 0 ) ); 178 inboxView->setMinimumSize( QSize( 0, 0 ) );
178 inboxView->setAllColumnsShowFocus(TRUE); 179 inboxView->setAllColumnsShowFocus(TRUE);
179 180
@@ -201,52 +202,57 @@ void EmailClient::compose()
201 emit composeRequested(); 202 emit composeRequested();
202} 203}
203 204
204void EmailClient::cancel() 205void EmailClient::cancel()
205{ 206{
206 emailHandler->cancel(); 207 emailHandler->cancel();
207} 208}
208 209
209AddressList* EmailClient::getAdrListRef() 210AddressList* EmailClient::getAdrListRef()
210{ 211{
211 return addressList; 212 return addressList;
212} 213}
213 214
214//this needs to be rewritten to syncronize with outboxView 215//this needs to be rewritten to syncronize with outboxView
215void EmailClient::enqueMail(const Email &mail) 216void EmailClient::enqueMail(const Email &mail)
216{ 217{
218 if (accountList.count() == 0) {
219 QMessageBox::warning(qApp->activeWindow(),
220 tr("No account selected"), tr("You must create an account"), "OK\n");
221 return;
222 }
223
217 if (accountList.count() > 0) { 224 if (accountList.count() > 0) {
218 currentAccount = accountList.first(); 225 currentAccount = accountList.first();
219 qWarning("using account " + currentAccount->name); 226 qWarning("using account " + currentAccount->name);
220 } 227 }
221 228
222 Email addMail = mail; 229 Email addMail = mail;
223 addMail.from = currentAccount->name; 230 addMail.from = currentAccount->name;
224 addMail.fromMail = currentAccount->emailAddress; 231 addMail.fromMail = currentAccount->emailAddress;
225 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n"); 232 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
226 item = new EmailListItem(outboxView, addMail, false); 233 item = new EmailListItem(outboxView, addMail, false);
227 234
228} 235}
229 236
230void EmailClient::sendQuedMail() 237void EmailClient::sendQuedMail()
231{ 238{
232 int count = 0; 239 int count = 0;
233 240
234 if (accountList.count() == 0) { 241 if (accountList.count() == 0) {
235 QMessageBox::warning(qApp->activeWindow(), 242 QMessageBox::warning(qApp->activeWindow(), "No account selected", "You must create an account", "OK\n");
236 "No account selected", "You must create an account", "OK\n");
237 return; 243 return;
238 } 244 }
239 //traverse listview, find messages to send 245 //traverse listview, find messages to send
240 if (! sending) { 246 if (! sending) {
241 item = (EmailListItem *) outboxView->firstChild(); 247 item = (EmailListItem *) outboxView->firstChild();
242 if (item != NULL) { 248 if (item != NULL) {
243 while (item != NULL) { 249 while (item != NULL) {
244 quedMessages.append(item->getMail()); 250 quedMessages.append(item->getMail());
245 item = (EmailListItem *) item->nextSibling(); 251 item = (EmailListItem *) item->nextSibling();
246 count++; 252 count++;
247 } 253 }
248 setMailAccount(); 254 setMailAccount();
249 emailHandler->sendMail(&quedMessages); 255 emailHandler->sendMail(&quedMessages);
250 sending = TRUE; 256 sending = TRUE;
251 sendMailButton->setEnabled(FALSE); 257 sendMailButton->setEnabled(FALSE);
252 cancelButton->setEnabled(TRUE); 258 cancelButton->setEnabled(TRUE);
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
@@ -399,38 +399,41 @@ int EmailHandler::parse64base(char *src, char *bufOut) {
399 bufOut[1] <<= 4; 399 bufOut[1] <<= 4;
400 z = li[2] >> 2; 400 z = li[2] >> 2;
401 bufOut[1] = bufOut[1] | z; //second byte retrived 401 bufOut[1] = bufOut[1] | z; //second byte retrived
402 processed++; 402 processed++;
403 403
404 if (src[3] != '=') { 404 if (src[3] != '=') {
405 bufOut[2] = (char) li[2] & (2+1); //mask out top 6 bits 405 bufOut[2] = (char) li[2] & (2+1); //mask out top 6 bits
406 bufOut[2] <<= 6; 406 bufOut[2] <<= 6;
407 z = li[3]; 407 z = li[3];
408 bufOut[2] = bufOut[2] | z; //third byte retrieved 408 bufOut[2] = bufOut[2] | z; //third byte retrieved
409 processed++; 409 processed++;
410 } 410 }
411 } 411 }
412 return processed; 412 return processed;
413} 413}
414 414
415int EmailHandler::encodeMime(Email *mail) { 415int EmailHandler::encodeMime(Email *mail)
416{
417
416 QString fileName, fileType, contentType, newBody, boundary; 418 QString fileName, fileType, contentType, newBody, boundary;
417 Enclosure *ePtr; 419 Enclosure *ePtr;
418 420
419 QString userName = mailAccount.name; 421 QString userName = mailAccount.name;
420 userName += " <" + mailAccount.emailAddress + ">"; 422 if (userName.length()>0)//only embrace it if there is a user name
423 userName += " <" + mailAccount.emailAddress + ">";
421 424
422 //add standard headers 425 //add standard headers
423 newBody = "From: " + userName + "\r\nTo: "; 426 newBody = "From: " + userName + "\r\nTo: ";
424 for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) { 427 for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) {
425 newBody += *it + " "; 428 newBody += *it + " ";
426 } 429 }
427 newBody += "\r\nSubject: " + mail->subject + "\r\n"; 430 newBody += "\r\nSubject: " + mail->subject + "\r\n";
428 431
429 if (mail->files.count() == 0) { //just a simple mail 432 if (mail->files.count() == 0) { //just a simple mail
430 newBody += "\r\n" + mail->body; 433 newBody += "\r\n" + mail->body;
431 mail->rawMail = newBody; 434 mail->rawMail = newBody;
432 return 0; 435 return 0;
433 } 436 }
434 437
435 //Build mime encoded mail 438 //Build mime encoded mail
436 boundary = "-----4345=next_bound=0495----"; 439 boundary = "-----4345=next_bound=0495----";
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
@@ -51,33 +51,33 @@ void WriteMail::setAddressList(AddressList *list)
51 51
52void WriteMail::init() 52void WriteMail::init()
53{ 53{
54 setToolBarsMovable(FALSE); 54 setToolBarsMovable(FALSE);
55 55
56 bar = new QToolBar(this); 56 bar = new QToolBar(this);
57 bar->setHorizontalStretchable( TRUE ); 57 bar->setHorizontalStretchable( TRUE );
58 58
59 menu = new QMenuBar( bar ); 59 menu = new QMenuBar( bar );
60 60
61 mailMenu = new QPopupMenu(menu); 61 mailMenu = new QPopupMenu(menu);
62 menu->insertItem( tr( "&Mail" ), mailMenu); 62 menu->insertItem( tr( "&Mail" ), mailMenu);
63 addMenu = new QPopupMenu(menu); 63 addMenu = new QPopupMenu(menu);
64 menu->insertItem( tr( "&Add" ), addMenu); 64 menu->insertItem( tr( "&Add" ), addMenu);
65 65
66 bar = new QToolBar(this); 66 bar = new QToolBar(this);
67 attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("fileopen"), QString::null, 0, this, 0); 67 attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0);
68 attatchButton->addTo(bar); 68 attatchButton->addTo(bar);
69 attatchButton->addTo(addMenu); 69 attatchButton->addTo(addMenu);
70 connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) ); 70 connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) );
71 71
72 confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0); 72 confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0);
73 confirmButton->addTo(bar); 73 confirmButton->addTo(bar);
74 confirmButton->addTo(mailMenu); 74 confirmButton->addTo(mailMenu);
75 connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) ); 75 connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) );
76 76
77 newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 77 newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
78 newButton->addTo(mailMenu); 78 newButton->addTo(mailMenu);
79 connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) ); 79 connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) );
80 80
81 widget = new QWidget(this, "widget"); 81 widget = new QWidget(this, "widget");
82 grid = new QGridLayout( widget ); 82 grid = new QGridLayout( widget );
83 83
@@ -158,35 +158,33 @@ void WriteMail::accept()
158 158
159 mail.rawMail += (*it); 159 mail.rawMail += (*it);
160 mail.rawMail += ",\n"; 160 mail.rawMail += ",\n";
161 } 161 }
162 mail.rawMail.truncate(mail.rawMail.length()-2); 162 mail.rawMail.truncate(mail.rawMail.length()-2);
163 mail.rawMail += mail.from; 163 mail.rawMail += mail.from;
164 mail.rawMail += "\nSubject: "; 164 mail.rawMail += "\nSubject: ";
165 mail.rawMail += mail.subject; 165 mail.rawMail += mail.subject;
166 mail.rawMail += "\n\n"; 166 mail.rawMail += "\n\n";
167 167
168 attatchedFiles = addAtt->returnAttatchedFiles(); 168 attatchedFiles = addAtt->returnAttatchedFiles();
169 attatchmentsType = addAtt->returnFileTypes(); 169 attatchmentsType = addAtt->returnFileTypes();
170 170
171 QStringList::Iterator itType = attatchmentsType.begin(); 171 QStringList::Iterator itType = attatchmentsType.begin();
172 172
173 Enclosure e; 173 Enclosure e;
174 for ( QStringList::Iterator it = attatchedFiles.begin(); 174 for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) {
175 it != attatchedFiles.end(); ++it ) {
176
177 e.id = idCount; 175 e.id = idCount;
178 e.originalName = (*it).latin1(); 176 e.originalName = (*it).latin1();
179 e.contentType = (*itType).latin1(); 177 e.contentType = (*itType).latin1();
180 e.contentAttribute = (*itType).latin1(); 178 e.contentAttribute = (*itType).latin1();
181 e.saved = TRUE; 179 e.saved = TRUE;
182 mail.addEnclosure(&e); 180 mail.addEnclosure(&e);
183 181
184 itType++; 182 itType++;
185 idCount++; 183 idCount++;
186 } 184 }
187 mail.rawMail += mail.body; 185 mail.rawMail += mail.body;
188 mail.rawMail += "\n"; 186 mail.rawMail += "\n";
189 mail.rawMail += ".\n"; 187 mail.rawMail += ".\n";
190 emit sendMailRequested(mail); 188 emit sendMailRequested(mail);
191 addAtt->clear(); 189 addAtt->clear();
192} 190}