summaryrefslogtreecommitdiff
authorgroucho <groucho>2003-04-14 08:22:55 (UTC)
committer groucho <groucho>2003-04-14 08:22:55 (UTC)
commit4624a73cd100f860371fb01facea442737e9336e (patch) (unidiff)
treeae06cfd24013ca39816a5ca035605988f4033dcd
parent6d737040698a9c7ebc6492ba4234b64bf4db6c0b (diff)
downloadopie-4624a73cd100f860371fb01facea442737e9336e.zip
opie-4624a73cd100f860371fb01facea442737e9336e.tar.gz
opie-4624a73cd100f860371fb01facea442737e9336e.tar.bz2
- Buttonlayout changed in attach dialog
- Removed file access for address list (reduces size) - Added header size sping box for accounts - mailit shows an icon in the message list if attachments are present - Added translations in pro file - Removed resource.* references in header files, uses qpe/resource.h instead
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mailit/addatt.cpp6
-rw-r--r--noncore/net/mailit/addresslist.cpp22
-rw-r--r--noncore/net/mailit/addresslist.h3
-rw-r--r--noncore/net/mailit/editaccount.cpp27
-rw-r--r--noncore/net/mailit/editaccount.h5
-rw-r--r--noncore/net/mailit/emailclient.cpp12
-rw-r--r--noncore/net/mailit/emailhandler.cpp19
-rw-r--r--noncore/net/mailit/emailhandler.h1
-rw-r--r--noncore/net/mailit/emaillistitem.cpp5
-rw-r--r--noncore/net/mailit/mailit.pro17
-rw-r--r--noncore/net/mailit/readmail.cpp2
-rw-r--r--noncore/net/mailit/writemail.cpp2
-rw-r--r--noncore/unsupported/mailit/addatt.cpp6
-rw-r--r--noncore/unsupported/mailit/addresslist.cpp22
-rw-r--r--noncore/unsupported/mailit/addresslist.h3
-rw-r--r--noncore/unsupported/mailit/editaccount.cpp27
-rw-r--r--noncore/unsupported/mailit/editaccount.h5
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp12
-rw-r--r--noncore/unsupported/mailit/emailhandler.cpp19
-rw-r--r--noncore/unsupported/mailit/emailhandler.h1
-rw-r--r--noncore/unsupported/mailit/emaillistitem.cpp5
-rw-r--r--noncore/unsupported/mailit/mailit.pro17
-rw-r--r--noncore/unsupported/mailit/readmail.cpp2
-rw-r--r--noncore/unsupported/mailit/writemail.cpp2
24 files changed, 156 insertions, 86 deletions
diff --git a/noncore/net/mailit/addatt.cpp b/noncore/net/mailit/addatt.cpp
index c8be865..d268f1f 100644
--- a/noncore/net/mailit/addatt.cpp
+++ b/noncore/net/mailit/addatt.cpp
@@ -1,130 +1,130 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qhbox.h> 21#include <qhbox.h>
22#include <qdir.h> 22#include <qdir.h>
23#include <qstringlist.h> 23#include <qstringlist.h>
24#include "resource.h" 24#include <qpe/resource.h>
25#include "addatt.h" 25#include "addatt.h"
26 26
27FileItem::FileItem(QListView *parent, DocLnk* dl) 27FileItem::FileItem(QListView *parent, DocLnk* dl)
28 : QListViewItem(parent) 28 : QListViewItem(parent)
29{ 29{
30 /*file = fileInfo; 30 /*file = fileInfo;
31 type = fileType;*/ 31 type = fileType;*/
32 32
33 doclnk=dl; 33 doclnk=dl;
34 34
35 setText(0, doclnk->name()); 35 setText(0, doclnk->name());
36 36
37 /*if (fileType == "Picture") { 37 /*if (fileType == "Picture") {
38 setPixmap(0, Resource::loadPixmap("pixmap")); 38 setPixmap(0, Resource::loadPixmap("pixmap"));
39 } else if (fileType == "Document") { 39 } else if (fileType == "Document") {
40 setPixmap(0, Resource::loadPixmap("txt")); 40 setPixmap(0, Resource::loadPixmap("txt"));
41 } else if (fileType == "Sound") { 41 } else if (fileType == "Sound") {
42 setPixmap(0, Resource::loadPixmap("play")); 42 setPixmap(0, Resource::loadPixmap("play"));
43 } else if (fileType == "Movie") { 43 } else if (fileType == "Movie") {
44 setPixmap(0, Resource::loadPixmap("MPEGPlayer")); 44 setPixmap(0, Resource::loadPixmap("MPEGPlayer"));
45 } else if (fileType == "File") { 45 } else if (fileType == "File") {
46 setPixmap(0, Resource::loadPixmap("exec")); 46 setPixmap(0, Resource::loadPixmap("exec"));
47 }*/ 47 }*/
48} 48}
49 49
50FileItem::~FileItem() 50FileItem::~FileItem()
51{ 51{
52 if (doclnk!=NULL) delete doclnk; 52 if (doclnk!=NULL) delete doclnk;
53 doclnk=NULL; 53 doclnk=NULL;
54} 54}
55 55
56AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) 56AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
57 : QDialog(parent, name, f) 57 : QDialog(parent, name, f)
58{ 58{
59 setCaption("Adding attatchments"); 59 setCaption("Adding attatchments");
60 60
61 QGridLayout *top = new QGridLayout(this, 1,1 ); 61 QGridLayout *top = new QGridLayout(this, 1,1 );
62 62
63 QHBox *buttons=new QHBox(this); 63 QHBox *buttons=new QHBox(this);
64 /*fileCategoryButton = new QPushButton(this);*/ 64 /*fileCategoryButton = new QPushButton(this);*/
65 attatchButton = new QPushButton("Attatch ->", buttons); 65 attatchButton = new QPushButton(tr("Attatch..."), buttons);
66 removeButton = new QPushButton("Remove", buttons); 66 removeButton = new QPushButton(tr("Remove"), buttons);
67 67
68 /*fileCategories = new QPopupMenu(fileCategoryButton); 68 /*fileCategories = new QPopupMenu(fileCategoryButton);
69 fileCategoryButton->setPopup(fileCategories); 69 fileCategoryButton->setPopup(fileCategories);
70 fileCategories->insertItem("Document"); 70 fileCategories->insertItem("Document");
71 fileCategories->insertItem("Picture"); 71 fileCategories->insertItem("Picture");
72 fileCategories->insertItem("Sound"); 72 fileCategories->insertItem("Sound");
73 fileCategories->insertItem("Movie"); 73 fileCategories->insertItem("Movie");
74 fileCategories->insertItem("File"); 74 fileCategories->insertItem("File");
75 75
76 fileCategoryButton->setText("Document"); 76 fileCategoryButton->setText("Document");
77 top->addWidget(fileCategoryButton, 0, 0);*/ 77 top->addWidget(fileCategoryButton, 0, 0);*/
78 78
79 79
80 top->addWidget(buttons,1,0); 80 top->addWidget(buttons,1,0);
81 //buttons->addWidget(attatchButton,0,0); 81 //buttons->addWidget(attatchButton,0,0);
82 //buttons->addWidget(removeButton,0,1); 82 //buttons->addWidget(removeButton,0,1);
83 83
84 //connect(fileCategories, SIGNAL(activated(int)), this, 84 //connect(fileCategories, SIGNAL(activated(int)), this,
85 //SLOT(fileCategorySelected(int)) );*/ 85 //SLOT(fileCategorySelected(int)) );*/
86 connect(attatchButton, SIGNAL(clicked()), this, 86 connect(attatchButton, SIGNAL(clicked()), this,
87 SLOT(addAttatchment()) ); 87 SLOT(addAttatchment()) );
88 connect(removeButton, SIGNAL(clicked()), this, 88 connect(removeButton, SIGNAL(clicked()), this,
89 SLOT(removeAttatchment()) ); 89 SLOT(removeAttatchment()) );
90 90
91 /*listView = new QListView(this, "AttView"); 91 /*listView = new QListView(this, "AttView");
92 listView->addColumn("Documents");* 92 listView->addColumn("Documents");*
93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this, 93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
94 SLOT(addAttatchment()) );*/ 94 SLOT(addAttatchment()) );*/
95 95
96 96
97 attView = new QListView(this, "Selected"); 97 attView = new QListView(this, "Selected");
98 attView->addColumn(tr("Attached")); 98 attView->addColumn(tr("Attached"));
99 attView->addColumn(tr("File type")); 99 attView->addColumn(tr("File type"));
100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this, 100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
101 SLOT(removeAttatchment()) ); 101 SLOT(removeAttatchment()) );
102 102
103 //top->addWidget(ofs, 0,0); 103 //top->addWidget(ofs, 0,0);
104 top->addWidget(attView, 0,0); 104 top->addWidget(attView, 0,0);
105 105
106 clear(); 106 clear();
107 107
108 108
109} 109}
110 110
111void AddAtt::clear() 111void AddAtt::clear()
112{ 112{
113 attView->clear(); 113 attView->clear();
114 //getFiles(); 114 //getFiles();
115 modified = FALSE; 115 modified = FALSE;
116} 116}
117 117
118/*void AddAtt::fileCategorySelected(int id) 118/*void AddAtt::fileCategorySelected(int id)
119{ 119{
120 fileCategoryButton->setText(fileCategories->text(id)); 120 fileCategoryButton->setText(fileCategories->text(id));
121 getFiles(); 121 getFiles();
122}*/ 122}*/
123 123
124void AddAtt::addAttatchment() 124void AddAtt::addAttatchment()
125 { 125 {
126 OFileDialog ofs("Attachments",this,0,0,"/root/Documents"); 126 OFileDialog ofs("Attachments",this,0,0,"/root/Documents");
127 127
128 ofs.showMaximized(); 128 ofs.showMaximized();
129 129
130 if (ofs.exec()==QDialog::Accepted) 130 if (ofs.exec()==QDialog::Accepted)
diff --git a/noncore/net/mailit/addresslist.cpp b/noncore/net/mailit/addresslist.cpp
index 43e3830..9fe558a 100644
--- a/noncore/net/mailit/addresslist.cpp
+++ b/noncore/net/mailit/addresslist.cpp
@@ -1,181 +1,161 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qfile.h> 20#include <qfile.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#include <opie/ocontactaccess.h> 22#include <opie/ocontactaccess.h>
23#include <opie/ocontact.h> 23#include <opie/ocontact.h>
24 24
25#include "addresslist.h" 25#include "addresslist.h"
26 26
27AddressList::AddressList(QString file) 27AddressList::AddressList()
28{ 28{
29 addresses.setAutoDelete(TRUE); 29 addresses.setAutoDelete(TRUE);
30 filename = file;
31 read(); 30 read();
32 dirty = FALSE; 31 dirty = FALSE;
33} 32}
34 33
35AddressList::~AddressList() 34AddressList::~AddressList()
36{ 35{
37 write();
38 addresses.clear(); 36 addresses.clear();
39} 37}
40 38
41void AddressList::addContact(QString email, QString name) 39void AddressList::addContact(QString email, QString name)
42{ 40{
43 //skip if not a valid email address, 41 //skip if not a valid email address,
44 if (email.find( '@') == -1) 42 if (email.find( '@') == -1)
45 return; 43 return;
46 44
47 if ( ! containsEmail(email) ) { 45 if ( ! containsEmail(email) ) {
48 Contact *in = new Contact; 46 Contact *in = new Contact;
49 in->email = email; 47 in->email = email;
50 in->name = name; 48 in->name = name;
51 addresses.append(in); 49 addresses.append(in);
52 dirty = TRUE; 50 dirty = TRUE;
53 } 51 }
54} 52}
55 53
56bool AddressList::containsEmail(QString email) 54bool AddressList::containsEmail(QString email)
57{ 55{
58 return ( getEmailRef(email) != -1 ); 56 return ( getEmailRef(email) != -1 );
59} 57}
60 58
61bool AddressList::containsName(QString name) 59bool AddressList::containsName(QString name)
62{ 60{
63 return ( getNameRef(name) != -1 ); 61 return ( getNameRef(name) != -1 );
64} 62}
65 63
66QString AddressList::getNameByEmail(QString email) 64QString AddressList::getNameByEmail(QString email)
67{ 65{
68 int pos = getEmailRef(email); 66 int pos = getEmailRef(email);
69 if (pos != -1) { 67 if (pos != -1) {
70 Contact *ptr = addresses.at(pos); 68 Contact *ptr = addresses.at(pos);
71 return ptr->name; 69 return ptr->name;
72 } 70 }
73 71
74 return NULL; 72 return NULL;
75} 73}
76 74
77QString AddressList::getEmailByName(QString name) 75QString AddressList::getEmailByName(QString name)
78{ 76{
79 int pos = getNameRef(name); 77 int pos = getNameRef(name);
80 if (pos != -1) { 78 if (pos != -1) {
81 Contact *ptr = addresses.at(pos); 79 Contact *ptr = addresses.at(pos);
82 return ptr->email; 80 return ptr->email;
83 } 81 }
84 82
85 return NULL; 83 return NULL;
86} 84}
87 85
88int AddressList::getEmailRef(QString email) 86int AddressList::getEmailRef(QString email)
89{ 87{
90 int pos = 0; 88 int pos = 0;
91 Contact *ptr; 89 Contact *ptr;
92 90
93 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { 91 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
94 if (ptr->email == email) 92 if (ptr->email == email)
95 return pos; 93 return pos;
96 pos++; 94 pos++;
97 } 95 }
98 return -1; 96 return -1;
99} 97}
100 98
101int AddressList::getNameRef(QString name) 99int AddressList::getNameRef(QString name)
102{ 100{
103 int pos = 0; 101 int pos = 0;
104 Contact *ptr; 102 Contact *ptr;
105 103
106 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { 104 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
107 if (ptr->name == name) 105 if (ptr->name == name)
108 return pos; 106 return pos;
109 pos++; 107 pos++;
110 } 108 }
111 return -1; 109 return -1;
112} 110}
113 111
114QList<Contact>* AddressList::getContactList() 112QList<Contact>* AddressList::getContactList()
115{ 113{
116 return &addresses; 114 return &addresses;
117} 115}
118 116
119void AddressList::read() 117void AddressList::read()
120{ 118{
121 OContactAccess::List::Iterator it; 119 OContactAccess::List::Iterator it;
122 120
123 //QFile f(filename);
124 QString lineEmail, lineName, email, name; 121 QString lineEmail, lineName, email, name;
125 OContactAccess m_contactdb("mailit"); 122 OContactAccess m_contactdb("mailit");
126 OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); 123 OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
127 //OContact* oc; 124 //OContact* oc;
128 125
129 for ( it = m_list.begin(); it != m_list.end(); ++it ) 126 for ( it = m_list.begin(); it != m_list.end(); ++it )
130 { 127 {
131 //oc=(OContact*) it; 128 //oc=(OContact*) it;
132 if ((*it).defaultEmail().length()!=0) 129 if ((*it).defaultEmail().length()!=0)
133 addContact((*it).defaultEmail(),(*it).fullName()); 130 addContact((*it).defaultEmail(),(*it).fullName());
134 } 131 }
135 132
136 /*if (! f.open(IO_ReadOnly) ) 133 /*if (! f.open(IO_ReadOnly) )
137 return; 134 return;
138 135
139 QTextStream stream(&f); 136 QTextStream stream(&f);
140 137
141 while (! stream.atEnd() ) { 138 while (! stream.atEnd() ) {
142 lineEmail = stream.readLine(); 139 lineEmail = stream.readLine();
143 if (! stream.atEnd() ) 140 if (! stream.atEnd() )
144 lineName = stream.readLine(); 141 lineName = stream.readLine();
145 else return; 142 else return;
146 143
147 email = getRightString(lineEmail); 144 email = getRightString(lineEmail);
148 name = getRightString(lineName); 145 name = getRightString(lineName);
149 addContact(email, name); 146 addContact(email, name);
150 } 147 }
151 f.close();*/ 148 f.close();*/
152} 149}
153 150
154QString AddressList::getRightString(QString in) 151QString AddressList::getRightString(QString in)
155{ 152{
156 QString out = ""; 153 QString out = "";
157 154
158 int pos = in.find('='); 155 int pos = in.find('=');
159 if (pos != -1) { 156 if (pos != -1) {
160 out = in.mid(pos+1).stripWhiteSpace(); 157 out = in.mid(pos+1).stripWhiteSpace();
161 } 158 }
162 return out; 159 return out;
163} 160}
164 161
165void AddressList::write()
166{
167 if ( (addresses.count() == 0) || (!dirty) )
168 return;
169
170 QFile f(filename);
171 if (! f.open(IO_WriteOnly) )
172 return;
173
174 QTextStream stream(&f);
175 Contact *ptr;
176 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
177 stream << "email = " + ptr->email + "\n";
178 stream << "name = " + ptr->name + "\n";
179 }
180 f.close();
181}
diff --git a/noncore/net/mailit/addresslist.h b/noncore/net/mailit/addresslist.h
index e87d6f1..99cef9a 100644
--- a/noncore/net/mailit/addresslist.h
+++ b/noncore/net/mailit/addresslist.h
@@ -1,59 +1,58 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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#ifndef ADDRESSLIST_H 20#ifndef ADDRESSLIST_H
21#define ADDRESSLIST_H 21#define ADDRESSLIST_H
22 22
23#include <qobject.h> 23#include <qobject.h>
24#include <qlist.h> 24#include <qlist.h>
25 25
26struct Contact 26struct Contact
27{ 27{
28 QString email; 28 QString email;
29 QString name; 29 QString name;
30}; 30};
31 31
32class AddressList : public QObject 32class AddressList : public QObject
33{ 33{
34 Q_OBJECT 34 Q_OBJECT
35 35
36public: 36public:
37 AddressList(QString file); 37 AddressList();
38 ~AddressList(); 38 ~AddressList();
39 void addContact(QString email, QString name); 39 void addContact(QString email, QString name);
40 bool containsEmail(QString email); 40 bool containsEmail(QString email);
41 bool containsName(QString name); 41 bool containsName(QString name);
42 QString getNameByEmail(QString email); 42 QString getNameByEmail(QString email);
43 QString getEmailByName(QString name); 43 QString getEmailByName(QString name);
44 QList<Contact>* getContactList(); 44 QList<Contact>* getContactList();
45 void write();
46 45
47private: 46private:
48 int getEmailRef(QString email); 47 int getEmailRef(QString email);
49 int getNameRef(QString name); 48 int getNameRef(QString name);
50 QString getRightString(QString in); 49 QString getRightString(QString in);
51 void read(); 50 void read();
52 51
53private: 52private:
54 QList<Contact> addresses; 53 QList<Contact> addresses;
55 QString filename; 54 QString filename;
56 bool dirty; 55 bool dirty;
57}; 56};
58 57
59#endif 58#endif
diff --git a/noncore/net/mailit/editaccount.cpp b/noncore/net/mailit/editaccount.cpp
index c4f95ea..c0afbb2 100644
--- a/noncore/net/mailit/editaccount.cpp
+++ b/noncore/net/mailit/editaccount.cpp
@@ -1,120 +1,133 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 20
21#include <qhbox.h>
21#include "editaccount.h" 22#include "editaccount.h"
22 23
23EditAccount::EditAccount( QWidget* parent, const char* name, WFlags fl ) 24EditAccount::EditAccount( QWidget* parent, const char* name, WFlags fl )
24 : QDialog(parent, name, fl) 25 : QDialog(parent, name, fl)
25{ 26{
26 setCaption( tr("Edit Account") ); 27 setCaption( tr("Edit Account") );
27 init(); 28 init();
28 popPasswInput->setEchoMode(QLineEdit::Password); 29 popPasswInput->setEchoMode(QLineEdit::Password);
29} 30}
30 31
31void EditAccount::setAccount(MailAccount *in, bool newOne) 32void EditAccount::setAccount(MailAccount *in, bool newOne)
32{ 33{
33 account = in; 34 account = in;
34 if (newOne) { 35 if (newOne) {
35 accountNameInput->setText(""); 36 accountNameInput->setText("");
36 nameInput->setText(""); 37 nameInput->setText("");
37 emailInput->setText(""); 38 emailInput->setText("");
38 popUserInput->setText(""); 39 popUserInput->setText("");
39 popPasswInput->setText(""); 40 popPasswInput->setText("");
40 popServerInput->setText(""); 41 popServerInput->setText("");
41 smtpServerInput->setText(""); 42 smtpServerInput->setText("");
42 syncCheckBox->setChecked(TRUE); 43 syncCheckBox->setChecked(TRUE);
44 syncLimitInput->setValue(2);
43 45
44 setCaption( tr("Create new Account") ); 46 setCaption( tr("Create new Account") );
45 } else { 47 } else {
46 accountNameInput->setText(account->accountName); 48 accountNameInput->setText(account->accountName);
47 nameInput->setText(account->name); 49 nameInput->setText(account->name);
48 emailInput->setText(account->emailAddress); 50 emailInput->setText(account->emailAddress);
49 popUserInput->setText(account->popUserName); 51 popUserInput->setText(account->popUserName);
50 popPasswInput->setText(account->popPasswd); 52 popPasswInput->setText(account->popPasswd);
51 popServerInput->setText(account->popServer); 53 popServerInput->setText(account->popServer);
52 smtpServerInput->setText(account->smtpServer); 54 smtpServerInput->setText(account->smtpServer);
53 syncCheckBox->setChecked(account->synchronize); 55 syncCheckBox->setChecked(account->synchronize);
56 syncLimitInput->setValue(account->syncLimit/1000);
54 } 57 }
55} 58}
56 59
57void EditAccount::init() 60void EditAccount::init()
58{ 61{
59 grid = new QGridLayout(this); 62 grid = new QGridLayout(this);
60 grid->setSpacing( 6 ); 63 grid->setSpacing( 6 );
61 grid->setMargin( 11 ); 64 grid->setMargin( 11 );
62 65
63 accountNameInputLabel = new QLabel(tr("Account name"), this); 66 accountNameInputLabel = new QLabel(tr("Account name"), this);
64 grid->addWidget( accountNameInputLabel, 0, 0 ); 67 grid->addWidget( accountNameInputLabel, 0, 0 );
65 accountNameInput = new QLineEdit( this, "account nameInput" ); 68 accountNameInput = new QLineEdit( this, "account nameInput" );
66 grid->addWidget( accountNameInput, 0, 1 ); 69 grid->addWidget( accountNameInput, 0, 1 );
67 70
68 nameInputLabel = new QLabel(tr("Your name"), this); 71 nameInputLabel = new QLabel(tr("Your name"), this);
69 grid->addWidget( nameInputLabel, 1, 0 ); 72 grid->addWidget( nameInputLabel, 1, 0 );
70 nameInput = new QLineEdit( this, "nameInput" ); 73 nameInput = new QLineEdit( this, "nameInput" );
71 grid->addWidget( nameInput, 1, 1 ); 74 grid->addWidget( nameInput, 1, 1 );
72 75
73 emailInputLabel = new QLabel("Email", this); 76 emailInputLabel = new QLabel(tr("Email"), this);
74 grid->addWidget(emailInputLabel, 2, 0 ); 77 grid->addWidget(emailInputLabel, 2, 0 );
75 emailInput = new QLineEdit( this, "emailInput" ); 78 emailInput = new QLineEdit( this, "emailInput" );
76 grid->addWidget( emailInput, 2, 1 ); 79 grid->addWidget( emailInput, 2, 1 );
77 80
78 popUserInputLabel = new QLabel("POP username", this); 81 popUserInputLabel = new QLabel(tr("POP username"), this);
79 grid->addWidget( popUserInputLabel, 3, 0 ); 82 grid->addWidget( popUserInputLabel, 3, 0 );
80 popUserInput = new QLineEdit( this, "popUserInput" ); 83 popUserInput = new QLineEdit( this, "popUserInput" );
81 grid->addWidget( popUserInput, 3, 1 ); 84 grid->addWidget( popUserInput, 3, 1 );
82 85
83 popPasswInputLabel = new QLabel( "POP password", this); 86 popPasswInputLabel = new QLabel( tr("POP password"), this);
84 grid->addWidget( popPasswInputLabel, 4, 0 ); 87 grid->addWidget( popPasswInputLabel, 4, 0 );
85 popPasswInput = new QLineEdit( this, "popPasswInput" ); 88 popPasswInput = new QLineEdit( this, "popPasswInput" );
86 grid->addWidget( popPasswInput, 4, 1 ); 89 grid->addWidget( popPasswInput, 4, 1 );
87 90
88 popServerInputLabel = new QLabel("POP server", this); 91 popServerInputLabel = new QLabel(tr("POP server"), this);
89 grid->addWidget( popServerInputLabel, 5, 0 ); 92 grid->addWidget( popServerInputLabel, 5, 0 );
90 popServerInput = new QLineEdit( this, "popServerInput" ); 93 popServerInput = new QLineEdit( this, "popServerInput" );
91 grid->addWidget( popServerInput, 5, 1 ); 94 grid->addWidget( popServerInput, 5, 1 );
92 95
93 smtpServerInputLabel = new QLabel("SMTP server", this ); 96 smtpServerInputLabel = new QLabel(tr("SMTP server"), this );
94 grid->addWidget( smtpServerInputLabel, 6, 0 ); 97 grid->addWidget( smtpServerInputLabel, 6, 0 );
95 smtpServerInput = new QLineEdit( this, "smtpServerInput" ); 98 smtpServerInput = new QLineEdit( this, "smtpServerInput" );
96 grid->addWidget( smtpServerInput, 6, 1 ); 99 grid->addWidget( smtpServerInput, 6, 1 );
97 100
98 syncCheckBox = new QCheckBox( tr( "Synchronize with server" ), this); 101 QHBox* syncBox=new QHBox(this);
102 grid->addWidget( syncBox, 7, 1 );
103
104 syncCheckBox = new QCheckBox( tr( "Synchronize" ), this);
99 syncCheckBox->setChecked( TRUE ); 105 syncCheckBox->setChecked( TRUE );
100 grid->addMultiCellWidget( syncCheckBox, 7, 7, 0, 1 ); 106 grid->addWidget( syncCheckBox,7,0);
107
108 syncLimitInputLabel = new QLabel(tr("Mail Size (k)"), syncBox);
109 //syncBox->addWidget( syncLimitInputLabel);
110 syncLimitInput = new QSpinBox( syncBox, "syncSize" );
111 //syncBox->addWidget(syncLimitInput);
112
101} 113}
102 114
103 115
104void EditAccount::accept() 116void EditAccount::accept()
105{ 117{
106 account->accountName = accountNameInput->text(); 118 account->accountName = accountNameInput->text();
107 account->name = nameInput->text(); 119 account->name = nameInput->text();
108 account->emailAddress = emailInput->text(); 120 account->emailAddress = emailInput->text();
109 account->popUserName = popUserInput->text(); 121 account->popUserName = popUserInput->text();
110 account->popPasswd = popPasswInput->text(); 122 account->popPasswd = popPasswInput->text();
111 account->popServer = popServerInput->text(); 123 account->popServer = popServerInput->text();
112 account->smtpServer = smtpServerInput->text(); 124 account->smtpServer = smtpServerInput->text();
113 account->synchronize = syncCheckBox->isChecked(); 125 account->synchronize = syncCheckBox->isChecked();
126 account->syncLimit = syncLimitInput->value()*1000;//Display in kB
114 127
115 QDialog::accept(); 128 QDialog::accept();
116} 129}
117 130
118void EditAccount::reject() 131void EditAccount::reject()
119{ 132{
120} 133}
diff --git a/noncore/net/mailit/editaccount.h b/noncore/net/mailit/editaccount.h
index 7a90e50..1e15047 100644
--- a/noncore/net/mailit/editaccount.h
+++ b/noncore/net/mailit/editaccount.h
@@ -1,66 +1,69 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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#ifndef EDITACCOUNT_H 20#ifndef EDITACCOUNT_H
21#define EDITACCOUNT_H 21#define EDITACCOUNT_H
22 22
23#include <qdialog.h> 23#include <qdialog.h>
24#include <qlabel.h> 24#include <qlabel.h>
25#include <qlineedit.h> 25#include <qlineedit.h>
26#include <qcheckbox.h> 26#include <qcheckbox.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qspinbox.h>
28#include "emailhandler.h" 29#include "emailhandler.h"
29 30
30class EditAccount : public QDialog 31class EditAccount : public QDialog
31{ 32{
32 Q_OBJECT 33 Q_OBJECT
33 34
34public: 35public:
35 EditAccount( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 36 EditAccount( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
36 void setAccount(MailAccount *in, bool newOne = TRUE); 37 void setAccount(MailAccount *in, bool newOne = TRUE);
37 void init(); 38 void init();
38 39
39public slots: 40public slots:
40 void accept(); 41 void accept();
41 void reject(); 42 void reject();
42 43
43private: 44private:
44 MailAccount thisAccount, *account; 45 MailAccount thisAccount, *account;
45 46
46 QLabel *accountNameInputLabel; 47 QLabel *accountNameInputLabel;
47 QLabel *nameInputLabel; 48 QLabel *nameInputLabel;
48 QLabel *emailInputLabel; 49 QLabel *emailInputLabel;
49 QLabel *popUserInputLabel; 50 QLabel *popUserInputLabel;
50 QLabel *popPasswInputLabel; 51 QLabel *popPasswInputLabel;
51 QLabel *popServerInputLabel; 52 QLabel *popServerInputLabel;
52 QLabel *smtpServerInputLabel; 53 QLabel *smtpServerInputLabel;
53 54 QLabel *syncLimitInputLabel;
55
54 QLineEdit *accountNameInput; 56 QLineEdit *accountNameInput;
55 QLineEdit *nameInput; 57 QLineEdit *nameInput;
56 QLineEdit *emailInput; 58 QLineEdit *emailInput;
57 QLineEdit *popUserInput; 59 QLineEdit *popUserInput;
58 QLineEdit *popPasswInput; 60 QLineEdit *popPasswInput;
59 QLineEdit *popServerInput; 61 QLineEdit *popServerInput;
60 QLineEdit *smtpServerInput; 62 QLineEdit *smtpServerInput;
63 QSpinBox *syncLimitInput;
61 QCheckBox *syncCheckBox; 64 QCheckBox *syncCheckBox;
62 65
63 QGridLayout *grid; 66 QGridLayout *grid;
64}; 67};
65 68
66#endif 69#endif
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index 2943986..6612541 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -1,108 +1,108 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qapplication.h> 20#include <qapplication.h>
21#include <qmessagebox.h> 21#include <qmessagebox.h>
22#include <qfile.h> 22#include <qfile.h>
23#include <qcheckbox.h> 23#include <qcheckbox.h>
24#include <qmenubar.h> 24#include <qmenubar.h>
25#include <qaction.h> 25#include <qaction.h>
26#include "resource.h" 26#include <qpe/resource.h>
27#include "emailclient.h" 27#include "emailclient.h"
28 28
29QCollection::Item AccountList::newItem(QCollection::Item d) 29QCollection::Item AccountList::newItem(QCollection::Item d)
30{ 30{
31 return dupl( (MailAccount *) d); 31 return dupl( (MailAccount *) d);
32} 32}
33 33
34MailAccount* AccountList::dupl(MailAccount *in) 34MailAccount* AccountList::dupl(MailAccount *in)
35{ 35{
36 ac = new MailAccount(*in); 36 ac = new MailAccount(*in);
37 return ac; 37 return ac;
38} 38}
39 39
40EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl ) 40EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
41 : QMainWindow( parent, name, fl ) 41 : QMainWindow( parent, name, fl )
42{ 42{
43 emailHandler = new EmailHandler(); 43 emailHandler = new EmailHandler();
44 addressList = new AddressList( getPath(FALSE) + "mail_adr"); 44 addressList = new AddressList();
45 45
46 sending = FALSE; 46 sending = FALSE;
47 receiving = FALSE; 47 receiving = FALSE;
48 previewingMail = FALSE; 48 previewingMail = FALSE;
49 mailIdCount = 1; 49 mailIdCount = 1;
50 accountIdCount = 1; 50 accountIdCount = 1;
51 allAccounts = FALSE; 51 allAccounts = FALSE;
52 52
53 init(); 53 init();
54 54
55 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) ); 55 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) );
56 56
57 connect(emailHandler, SIGNAL(smtpError(int)), this, 57 connect(emailHandler, SIGNAL(smtpError(int)), this,
58 SLOT(smtpError(int)) ); 58 SLOT(smtpError(int)) );
59 connect(emailHandler, SIGNAL(popError(int)), this, 59 connect(emailHandler, SIGNAL(popError(int)), this,
60 SLOT(popError(int)) ); 60 SLOT(popError(int)) );
61 61
62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) ); 62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) );
63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) ); 63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) );
64 64
65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, 65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this,
66 SLOT(mailArrived(const Email &, bool)) ); 66 SLOT(mailArrived(const Email &, bool)) );
67 connect(emailHandler, SIGNAL(mailTransfered(int)), this, 67 connect(emailHandler, SIGNAL(mailTransfered(int)), this,
68 SLOT(allMailArrived(int)) ); 68 SLOT(allMailArrived(int)) );
69 69
70 mailconf = new Config("mailit"); 70 mailconf = new Config("mailit");
71 //In case Synchronize is not defined in settings.txt 71 //In case Synchronize is not defined in settings.txt
72 72
73 readSettings(); 73 readSettings();
74 74
75 updateAccounts(); 75 updateAccounts();
76 76
77 lineShift = "\n"; 77 lineShift = "\n";
78 readMail(); 78 readMail();
79 lineShift = "\r\n"; 79 lineShift = "\r\n";
80 80
81} 81}
82 82
83 83
84EmailClient::~EmailClient() 84EmailClient::~EmailClient()
85{ 85{
86 //needs to be moved from destructor to closewindow event 86 //needs to be moved from destructor to closewindow event
87 saveMail(getPath(FALSE) + "inbox.txt", inboxView); 87 saveMail(getPath(FALSE) + "inbox.txt", inboxView);
88 //does not currently work. Defining outbox in the same 88 //does not currently work. Defining outbox in the same
89 //format as inbox is not a good solution as they have 89 //format as inbox is not a good solution as they have
90 //different properties 90 //different properties
91 saveMail(getPath(FALSE) + "outbox.txt", outboxView); 91 saveMail(getPath(FALSE) + "outbox.txt", outboxView);
92 saveSettings(); 92 saveSettings();
93 93
94 mailconf->write(); 94 mailconf->write();
95 delete mailconf; 95 delete mailconf;
96 96
97} 97}
98 98
99void EmailClient::init() 99void EmailClient::init()
100{ 100{
101 statusBar = new QStatusBar(this); 101 statusBar = new QStatusBar(this);
102 statusBar->setSizeGripEnabled(FALSE); 102 statusBar->setSizeGripEnabled(FALSE);
103 103
104 status1Label = new QLabel( tr("Idle"), statusBar); 104 status1Label = new QLabel( tr("Idle"), statusBar);
105 status2Label = new QLabel("", statusBar); 105 status2Label = new QLabel("", statusBar);
106 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)), 106 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
107 status2Label, SLOT(setText(const QString &)) ); 107 status2Label, SLOT(setText(const QString &)) );
108 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)), 108 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
@@ -610,173 +610,181 @@ QString EmailClient::getPath(bool enclosurePath)
610 610
611 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath); 611 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath);
612 if ( !dir.exists() ) 612 if ( !dir.exists() )
613 dir.mkdir( dir.path() ); 613 dir.mkdir( dir.path() );
614 614
615 if (enclosurePath) { 615 if (enclosurePath) {
616 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures); 616 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures);
617 617
618 if ( !dir.exists() ) 618 if ( !dir.exists() )
619 dir.mkdir( dir.path() ); 619 dir.mkdir( dir.path() );
620 620
621 return (dir.path() + "/"); 621 return (dir.path() + "/");
622 622
623 } 623 }
624 return (dir.path() + "/"); 624 return (dir.path() + "/");
625} 625}
626 626
627void EmailClient::readSettings() 627void EmailClient::readSettings()
628{ 628{
629 TextParser *p; 629 TextParser *p;
630 QString s; 630 QString s;
631 int pos, accountPos, y; 631 int pos, accountPos, y;
632 QFile f( getPath(FALSE) + "settings.txt"); 632 QFile f( getPath(FALSE) + "settings.txt");
633 633
634 if ( f.open(IO_ReadOnly) ) { // file opened successfully 634 if ( f.open(IO_ReadOnly) ) { // file opened successfully
635 QTextStream t( &f ); // use a text stream 635 QTextStream t( &f ); // use a text stream
636 s = t.read(); 636 s = t.read();
637 f.close(); 637 f.close();
638 638
639 p = new TextParser(s, "\n"); 639 p = new TextParser(s, "\n");
640 640
641 accountPos = 0; 641 accountPos = 0;
642 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) { 642 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) {
643 accountPos++; 643 accountPos++;
644 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 ) 644 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 )
645 account.accountName = p->getString(& ++pos, 'z', TRUE); 645 account.accountName = p->getString(& ++pos, 'z', TRUE);
646 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1) 646 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1)
647 account.name = p->getString(& ++pos, 'z', TRUE); 647 account.name = p->getString(& ++pos, 'z', TRUE);
648 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1) 648 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1)
649 account.emailAddress = p->getString(& ++pos, 'z', TRUE); 649 account.emailAddress = p->getString(& ++pos, 'z', TRUE);
650 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1) 650 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1)
651 account.popUserName = p->getString(& ++pos, 'z', TRUE); 651 account.popUserName = p->getString(& ++pos, 'z', TRUE);
652 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1) 652 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1)
653 account.popPasswd = p->getString(& ++pos, 'z', TRUE); 653 account.popPasswd = p->getString(& ++pos, 'z', TRUE);
654 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1) 654 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1)
655 account.popServer = p->getString(& ++pos, 'z', TRUE); 655 account.popServer = p->getString(& ++pos, 'z', TRUE);
656 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1) 656 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1)
657 account.smtpServer = p->getString(& ++pos, 'z', TRUE); 657 account.smtpServer = p->getString(& ++pos, 'z', TRUE);
658 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) { 658 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) {
659 s = p->getString(& ++pos, 'z', TRUE); 659 s = p->getString(& ++pos, 'z', TRUE);
660 account.id = s.toInt(); 660 account.id = s.toInt();
661 } 661 }
662 662
663 account.lastServerMailCount = 0; 663 account.lastServerMailCount = 0;
664 account.synchronize = FALSE; 664 account.synchronize = FALSE;
665 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { 665 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) {
666 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { 666 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") {
667 account.synchronize = TRUE; 667 account.synchronize = TRUE;
668 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { 668 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) {
669 s = p->getString(& ++pos, 'z', TRUE); 669 s = p->getString(& ++pos, 'z', TRUE);
670 account.lastServerMailCount = s.toInt(); 670 account.lastServerMailCount = s.toInt();
671 } 671 }
672 } 672 }
673 } 673 }
674
675 if ( (pos = p->find("SYNCLIMIT",':', accountPos, TRUE)) != -1) {
676 account.syncLimit = p->getString(& ++pos, 'z', TRUE).toInt();
677 }
678
679
674 accountList.append(&account); 680 accountList.append(&account);
675 } 681 }
676 delete p; 682 delete p;
677 } 683 }
678 mailconf->setGroup("mailitglobal"); 684 mailconf->setGroup("mailitglobal");
679 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { 685 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) {
680 mailIdCount = y; 686 mailIdCount = y;
681 } 687 }
682 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { 688 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) {
683 accountIdCount = y; 689 accountIdCount = y;
684 } 690 }
685} 691}
686 692
687void EmailClient::saveSettings() 693void EmailClient::saveSettings()
688{ 694{
689 QString temp; 695 QString temp;
690 QFile f( getPath(FALSE) + "settings.txt"); 696 QFile f( getPath(FALSE) + "settings.txt");
691 MailAccount *accountPtr; 697 MailAccount *accountPtr;
692 698
693 if (! f.open(IO_WriteOnly) ) { 699 if (! f.open(IO_WriteOnly) ) {
694 qWarning("could not save settings file"); 700 qWarning("could not save settings file");
695 return; 701 return;
696 } 702 }
697 QTextStream t(&f); 703 QTextStream t(&f);
698 t << "#Settings for QPE Mailit program\n"; 704 t << "#Settings for QPE Mailit program\n";
699 705
700 for (accountPtr = accountList.first(); accountPtr != 0; 706 for (accountPtr = accountList.first(); accountPtr != 0;
701 accountPtr = accountList.next()) { 707 accountPtr = accountList.next()) {
702 708
703 t << "accountStart;\n"; 709 t << "accountStart;\n";
704 t << "AccountName: " + accountPtr->accountName + "\n"; 710 t << "AccountName: " + accountPtr->accountName + "\n";
705 t << "Name: " + accountPtr->name + "\n"; 711 t << "Name: " + accountPtr->name + "\n";
706 t << "Email: " + accountPtr->emailAddress + "\n"; 712 t << "Email: " + accountPtr->emailAddress + "\n";
707 t << "POPUser: " + accountPtr->popUserName + "\n"; 713 t << "POPUser: " + accountPtr->popUserName + "\n";
708 t << "POPPAssword: " + accountPtr->popPasswd + "\n"; 714 t << "POPPAssword: " + accountPtr->popPasswd + "\n";
709 t << "POPServer: " + accountPtr->popServer + "\n"; 715 t << "POPServer: " + accountPtr->popServer + "\n";
710 t << "SMTPServer: " + accountPtr->smtpServer + "\n"; 716 t << "SMTPServer: " + accountPtr->smtpServer + "\n";
711 t << "AccountId: " << accountPtr->id << "\n"; 717 t << "AccountId: " << accountPtr->id << "\n";
712 if (accountPtr->synchronize) { 718 if (accountPtr->synchronize) {
713 t << "Synchronize: Yes\n"; 719 t << "Synchronize: Yes\n";
714 t << "LastServerMailCount: "; 720 t << "LastServerMailCount: ";
715 t << accountPtr->lastServerMailCount << "\n"; 721 t << accountPtr->lastServerMailCount << "\n";
716 } else { 722 } else {
717 t << "Synchronize: No\n"; 723 t << "Synchronize: No\n";
718 } 724 }
725 t << "SyncLimit: ";
726 t << accountPtr->syncLimit << "\n";
719 t << "accountEnd;\n"; 727 t << "accountEnd;\n";
720 } 728 }
721 f.close(); 729 f.close();
722 730
723 mailconf->setGroup("mailitglobal"); 731 mailconf->setGroup("mailitglobal");
724 mailconf->writeEntry("mailidcount", mailIdCount); 732 mailconf->writeEntry("mailidcount", mailIdCount);
725 mailconf->writeEntry("accountidcount", accountIdCount); 733 mailconf->writeEntry("accountidcount", accountIdCount);
726} 734}
727 735
728void EmailClient::selectAccount(int id) 736void EmailClient::selectAccount(int id)
729{ 737{
730 if (accountList.count() > 0) { 738 if (accountList.count() > 0) {
731 currentAccount = accountList.at(id); 739 currentAccount = accountList.at(id);
732 emit newCaption("Mailit - " + currentAccount->accountName); 740 emit newCaption("Mailit - " + currentAccount->accountName);
733 getNewMail(); 741 getNewMail();
734 } else { 742 } else {
735 emit newCaption("Mailit ! No account defined"); 743 emit newCaption("Mailit ! No account defined");
736 } 744 }
737} 745}
738 746
739void EmailClient::editAccount(int id) 747void EmailClient::editAccount(int id)
740{ 748{
741 MailAccount *newAccount; 749 MailAccount *newAccount;
742 750
743 editAccountView = new EditAccount(this, "account", TRUE); 751 editAccountView = new EditAccount(this, "account", TRUE);
744 if (id == newAccountId) { //new account 752 if (id == newAccountId) { //new account
745 newAccount = new MailAccount; 753 newAccount = new MailAccount;
746 editAccountView->setAccount(newAccount); 754 editAccountView->setAccount(newAccount);
747 } else { 755 } else {
748 newAccount = accountList.at(id); 756 newAccount = accountList.at(id);
749 editAccountView->setAccount(newAccount, FALSE); 757 editAccountView->setAccount(newAccount, FALSE);
750 } 758 }
751 759
752 editAccountView->showMaximized(); 760 editAccountView->showMaximized();
753 editAccountView->exec(); 761 editAccountView->exec();
754 762
755 if (editAccountView->result() == QDialog::Accepted) { 763 if (editAccountView->result() == QDialog::Accepted) {
756 if (id == newAccountId) { 764 if (id == newAccountId) {
757 newAccount->id = accountIdCount; 765 newAccount->id = accountIdCount;
758 accountIdCount++; 766 accountIdCount++;
759 accountList.append(newAccount); 767 accountList.append(newAccount);
760 updateAccounts(); 768 updateAccounts();
761 } else { 769 } else {
762 updateAccounts(); 770 updateAccounts();
763 } 771 }
764 } 772 }
765 773
766 delete editAccountView; 774 delete editAccountView;
767} 775}
768 776
769void EmailClient::deleteAccount(int id) 777void EmailClient::deleteAccount(int id)
770{ 778{
771 MailAccount *newAccount; 779 MailAccount *newAccount;
772 QString message; 780 QString message;
773 781
774 newAccount = accountList.at(id); 782 newAccount = accountList.at(id);
775 message = "Delete account:\n" + newAccount->accountName; 783 message = "Delete account:\n" + newAccount->accountName;
776 switch( QMessageBox::warning( this, "Mailit", message, 784 switch( QMessageBox::warning( this, "Mailit", message,
777 "Yes", "No", 0, 0, 1 ) ) { 785 "Yes", "No", 0, 0, 1 ) ) {
778 786
779 case 0: accountList.remove(id); 787 case 0: accountList.remove(id);
780 updateAccounts(); 788 updateAccounts();
781 break; 789 break;
782 case 1: 790 case 1:
diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp
index 1be16d4..9c1c814 100644
--- a/noncore/net/mailit/emailhandler.cpp
+++ b/noncore/net/mailit/emailhandler.cpp
@@ -57,222 +57,231 @@ EmailHandler::EmailHandler()
57 connect(popClient, SIGNAL(mailTransfered(int)), this, 57 connect(popClient, SIGNAL(mailTransfered(int)), this,
58 SIGNAL(mailTransfered(int)) ); 58 SIGNAL(mailTransfered(int)) );
59 59
60 60
61 //relaying size information 61 //relaying size information
62 connect(popClient, SIGNAL(currentMailSize(int)), 62 connect(popClient, SIGNAL(currentMailSize(int)),
63 this, SIGNAL(currentMailSize(int)) ); 63 this, SIGNAL(currentMailSize(int)) );
64 connect(popClient, SIGNAL(downloadedSize(int)), 64 connect(popClient, SIGNAL(downloadedSize(int)),
65 this, SIGNAL(downloadedSize(int)) ); 65 this, SIGNAL(downloadedSize(int)) );
66} 66}
67 67
68void EmailHandler::sendMail(QList<Email> *mailList) 68void EmailHandler::sendMail(QList<Email> *mailList)
69{ 69{
70 Email *currentMail; 70 Email *currentMail;
71 QString temp; 71 QString temp;
72 QString userName = mailAccount.name; 72 QString userName = mailAccount.name;
73 userName += " <" + mailAccount.emailAddress + ">"; 73 userName += " <" + mailAccount.emailAddress + ">";
74 74
75 for (currentMail = mailList->first(); currentMail != 0; 75 for (currentMail = mailList->first(); currentMail != 0;
76 currentMail = mailList->next()) { 76 currentMail = mailList->next()) {
77 77
78 if (encodeMime(currentMail) == 0) { 78 if (encodeMime(currentMail) == 0) {
79 smtpClient->addMail(userName, currentMail->subject, 79 smtpClient->addMail(userName, currentMail->subject,
80 currentMail->recipients, currentMail->rawMail); 80 currentMail->recipients, currentMail->rawMail);
81 } else { //error 81 } else { //error
82 temp = tr("Could not locate all files in \nmail with subject: ") + 82 temp = tr("Could not locate all files in \nmail with subject: ") +
83 currentMail->subject; 83 currentMail->subject;
84 temp += tr("\nMail has NOT been sent"); 84 temp += tr("\nMail has NOT been sent");
85 QMessageBox::warning(qApp->activeWindow(), tr("Attachment error"), temp, tr("OK\n")); 85 QMessageBox::warning(qApp->activeWindow(), tr("Attachment error"), temp, tr("OK\n"));
86 86
87 } 87 }
88 } 88 }
89 smtpClient->newConnection(mailAccount.smtpServer, 25); 89 smtpClient->newConnection(mailAccount.smtpServer, 25);
90} 90}
91 91
92void EmailHandler::setAccount(MailAccount account) 92void EmailHandler::setAccount(MailAccount account)
93{ 93{
94 mailAccount = account; 94 mailAccount = account;
95} 95}
96 96
97void EmailHandler::getMail() 97void EmailHandler::getMail()
98{ 98{
99 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd); 99 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
100 if (mailAccount.synchronize) { 100 if (mailAccount.synchronize) {
101 popClient->setSynchronize(mailAccount.lastServerMailCount); 101 popClient->setSynchronize(mailAccount.lastServerMailCount);
102 } else { 102 } else {
103 popClient->removeSynchronize(); 103 popClient->removeSynchronize();
104 } 104 }
105 105
106 headers = FALSE; 106 headers = FALSE;
107 popClient->headersOnly(headers, 0); 107 popClient->headersOnly(headers, 0);
108 popClient->newConnection(mailAccount.popServer, 110); 108 popClient->newConnection(mailAccount.popServer, 110);
109} 109}
110 110
111void EmailHandler::getMailHeaders() 111void EmailHandler::getMailHeaders()
112{ 112{
113 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd); 113 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
114 if (mailAccount.synchronize) { 114 if (mailAccount.synchronize) {
115 popClient->setSynchronize(mailAccount.lastServerMailCount); 115 popClient->setSynchronize(mailAccount.lastServerMailCount);
116 } else { 116 } else {
117 popClient->removeSynchronize(); 117 popClient->removeSynchronize();
118 } 118 }
119 119
120 headers = TRUE; 120 headers = TRUE;
121 popClient->headersOnly(headers, 2000); //less than 2000, download all 121 popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all
122 popClient->newConnection(mailAccount.popServer, 110); 122 popClient->newConnection(mailAccount.popServer, 110);
123} 123}
124 124
125void EmailHandler::getMailByList(MailList *mailList) 125void EmailHandler::getMailByList(MailList *mailList)
126{ 126{
127 if (mailList->count() == 0) { //should not occur though 127 if (mailList->count() == 0) { //should not occur though
128 emit mailTransfered(0); 128 emit mailTransfered(0);
129 return; 129 return;
130 } 130 }
131 131
132 headers = FALSE; 132 headers = FALSE;
133 popClient->headersOnly(FALSE, 0); 133 popClient->headersOnly(FALSE, 0);
134 popClient->newConnection(mailAccount.popServer, 110); 134 popClient->newConnection(mailAccount.popServer, 110);
135 popClient->setSelectedMails(mailList); 135 popClient->setSelectedMails(mailList);
136} 136}
137 137
138void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete) 138void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete)
139{ 139{
140 Email mail; 140 Email mail;
141 141
142 mail.rawMail = message; 142 mail.rawMail = message;
143 mail.serverId = id; 143 mail.serverId = id;
144 mail.size = size; 144 mail.size = size;
145 mail.downloaded = complete; 145 mail.downloaded = complete;
146 146
147 emit mailArrived(mail, FALSE); 147 emit mailArrived(mail, FALSE);
148} 148}
149 149
150bool EmailHandler::parse(QString in, QString lineShift, Email *mail) 150bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
151{ 151{
152 QString temp, boundary; 152 QString temp, boundary;
153 int pos; 153 int pos;
154 QString delimiter, header, body, mimeHeader, mimeBody; 154 QString delimiter, header, body, mimeHeader, mimeBody;
155 QString content, contentType, contentAttribute, id, encoding; 155 QString content, contentType, contentAttribute, id, encoding;
156 QString fileName, storedName; 156 QString fileName, storedName;
157 int enclosureId = 0; 157 int enclosureId = 0;
158 158
159 mail->rawMail = in; 159 mail->rawMail = in;
160 mail->received = TRUE; 160 mail->received = TRUE;
161 mail->files.setAutoDelete(TRUE); 161 mail->files.setAutoDelete(TRUE);
162 162
163 temp = lineShift + "." + lineShift; 163 temp = lineShift + "." + lineShift;
164 164
165 if (in.right(temp.length()) != temp) { 165 if (in.right(temp.length()) != temp) {
166 qWarning(in.right(temp.length())); 166 qWarning(in.right(temp.length()));
167 qWarning(" . added at end of email as separator"); 167 qWarning(" . added at end of email as separator");
168 mail->rawMail += temp; 168 mail->rawMail += temp;
169 } 169 }
170 170
171 171
172 delimiter = lineShift + lineShift; // "\n\n" or "\r\n\r\n" 172 delimiter = lineShift + lineShift; // "\n\n" or "\r\n\r\n"
173 pos = in.find(delimiter, 0, FALSE); 173 pos = in.find(delimiter, 0, FALSE);
174 header = in.left(pos); 174 header = in.left(pos);
175 body = in.right(in.length() - pos - delimiter.length()); 175 body = in.right(in.length() - pos - delimiter.length());
176 if ((body.at(body.length()-2) == '.') && (body.at(body.length()-3) == '\n')) 176 if ((body.at(body.length()-2) == '.') && (body.at(body.length()-3) == '\n'))
177 body.truncate(body.length()-2); 177 body.truncate(body.length()-2);
178 178
179 TextParser p(header, lineShift); 179 TextParser p(header, lineShift);
180 180
181 if ((pos = p.find("FROM",':', 0, TRUE)) != -1) { 181 if ((pos = p.find("FROM",':', 0, TRUE)) != -1) {
182 pos++; 182 pos++;
183 if (p.separatorAt(pos) == ' ') { 183 if (p.separatorAt(pos) == ' ') {
184 mail->from = p.getString(&pos, '<', false); 184 mail->from = p.getString(&pos, '<', false);
185 mail->from = mail->from.stripWhiteSpace(); 185 mail->from = mail->from.stripWhiteSpace();
186 if ( (mail->from.length() > 2) && (mail->from[0] == '"') ) { 186 if ( (mail->from.length() > 2) && (mail->from[0] == '"') ) {
187 mail->from = mail->from.left(mail->from.length() - 1); 187 mail->from = mail->from.left(mail->from.length() - 1);
188 mail->from = mail->from.right(mail->from.length() - 1); 188 mail->from = mail->from.right(mail->from.length() - 1);
189 } 189 }
190 pos++; 190 pos++;
191 mail->fromMail = p.getString(&pos, '>', false); 191 mail->fromMail = p.getString(&pos, '>', false);
192 } else { 192 } else {
193 if ((p.separatorAt(pos) == '<') 193 if ((p.separatorAt(pos) == '<')
194 || (p.separatorAt(pos) == ' ')) //No name.. nasty 194 || (p.separatorAt(pos) == ' ')) //No name.. nasty
195 pos++; 195 pos++;
196 pos++; 196 pos++;
197 mail->fromMail = p.getString(&pos, 'z', TRUE); 197 mail->fromMail = p.getString(&pos, 'z', TRUE);
198 if (mail->fromMail.at(mail->fromMail.length()-1) == '>') 198 if (mail->fromMail.at(mail->fromMail.length()-1) == '>')
199 mail->fromMail.truncate(mail->fromMail.length() - 1); 199 mail->fromMail.truncate(mail->fromMail.length() - 1);
200 mail->from=mail->fromMail; 200 mail->from=mail->fromMail;
201 } 201 }
202 } 202 }
203
204 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
205 if (pos = p.find("TO",':', pos, TRUE) != -1)
206 {
207 pos++;
208 mail->recipients.append (p.getString(&pos, 'z', TRUE) );
209 }
210
211
212
203 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) { 213 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) {
204 pos++; 214 pos++;
205 mail->subject = p.getString(&pos, 'z', TRUE); 215 mail->subject = p.getString(&pos, 'z', TRUE);
206 } 216 }
207 if ((pos = p.find("DATE",':', 0, TRUE)) != -1) { 217 if ((pos = p.find("DATE",':', 0, TRUE)) != -1) {
208 pos++; 218 pos++;
209 mail->date = p.getString(&pos, 'z', true); 219 mail->date = p.getString(&pos, 'z', true);
210 } 220 }
211 if ((pos = p.find("TO",':', 0, TRUE)) != -1) { 221
212 pos++; 222
213 mail->recipients.append (p.getString(&pos, 'z', TRUE) ); 223
214 }
215 if ((pos = p.find("MESSAGE",'-', 0, TRUE)) != -1) { 224 if ((pos = p.find("MESSAGE",'-', 0, TRUE)) != -1) {
216 pos++; 225 pos++;
217 if ( (p.wordAt(pos).upper() == "ID") && 226 if ( (p.wordAt(pos).upper() == "ID") &&
218 (p.separatorAt(pos) == ':') ) { 227 (p.separatorAt(pos) == ':') ) {
219 228
220 id = p.getString(&pos, 'z', TRUE); 229 id = p.getString(&pos, 'z', TRUE);
221 mail->id = id; 230 mail->id = id;
222 } 231 }
223 } 232 }
224 233
225 pos = 0; 234 pos = 0;
226 while ( ((pos = p.find("MIME",'-', pos, TRUE)) != -1) ) { 235 while ( ((pos = p.find("MIME",'-', pos, TRUE)) != -1) ) {
227 pos++; 236 pos++;
228 if ( (p.wordAt(pos).upper() == "VERSION") && 237 if ( (p.wordAt(pos).upper() == "VERSION") &&
229 (p.separatorAt(pos) == ':') ) { 238 (p.separatorAt(pos) == ':') ) {
230 pos++; 239 pos++;
231 if (p.getString(&pos, 'z', true) == "1.0") { 240 if (p.getString(&pos, 'z', true) == "1.0") {
232 mail->mimeType = 1; 241 mail->mimeType = 1;
233 } 242 }
234 } 243 }
235 } 244 }
236 245
237 if (mail->mimeType == 1) { 246 if (mail->mimeType == 1) {
238 boundary = ""; 247 boundary = "";
239 if ((pos = p.find("BOUNDARY", '=', 0, TRUE)) != -1) { 248 if ((pos = p.find("BOUNDARY", '=', 0, TRUE)) != -1) {
240 pos++; 249 pos++;
241 boundary = p.getString(&pos, 'z', true); 250 boundary = p.getString(&pos, 'z', true);
242 if (boundary[0] == '"') { 251 if (boundary[0] == '"') {
243 boundary = boundary.left(boundary.length() - 1); //strip " 252 boundary = boundary.left(boundary.length() - 1); //strip "
244 boundary = boundary.right(boundary.length() - 1); //strip " 253 boundary = boundary.right(boundary.length() - 1); //strip "
245 } 254 }
246 boundary = "--" + boundary; //create boundary field 255 boundary = "--" + boundary; //create boundary field
247 } 256 }
248 257
249 if (boundary == "") { //fooled by Mime-Version 258 if (boundary == "") { //fooled by Mime-Version
250 mail->body = body; 259 mail->body = body;
251 mail->bodyPlain = body; 260 mail->bodyPlain = body;
252 return mail; 261 return mail;
253 } 262 }
254 263
255 while (body.length() > 0) { 264 while (body.length() > 0) {
256 pos = body.find(boundary, 0, FALSE); 265 pos = body.find(boundary, 0, FALSE);
257 pos = body.find(delimiter, pos, FALSE); 266 pos = body.find(delimiter, pos, FALSE);
258 mimeHeader = body.left(pos); 267 mimeHeader = body.left(pos);
259 mimeBody = body.right(body.length() - pos - delimiter.length()); 268 mimeBody = body.right(body.length() - pos - delimiter.length());
260 TextParser bp(mimeHeader, lineShift); 269 TextParser bp(mimeHeader, lineShift);
261 270
262 contentType = ""; 271 contentType = "";
263 contentAttribute = ""; 272 contentAttribute = "";
264 fileName = ""; 273 fileName = "";
265 if ((pos = bp.find("CONTENT",'-', 0, TRUE)) != -1) { 274 if ((pos = bp.find("CONTENT",'-', 0, TRUE)) != -1) {
266 pos++; 275 pos++;
267 if ( (bp.wordAt(pos).upper() == "TYPE") && 276 if ( (bp.wordAt(pos).upper() == "TYPE") &&
268 (bp.separatorAt(pos) == ':') ) { 277 (bp.separatorAt(pos) == ':') ) {
269 contentType = bp.nextWord().upper(); 278 contentType = bp.nextWord().upper();
270 if (bp.nextSeparator() == '/') 279 if (bp.nextSeparator() == '/')
271 contentAttribute = bp.nextWord().upper(); 280 contentAttribute = bp.nextWord().upper();
272 content = contentType + "/" + contentAttribute; 281 content = contentType + "/" + contentAttribute;
273 } 282 }
274 if ((pos = bp.find("ENCODING",':', 0, TRUE)) != -1) { 283 if ((pos = bp.find("ENCODING",':', 0, TRUE)) != -1) {
275 pos++; 284 pos++;
276 encoding = bp.getString(&pos, 'z', TRUE); 285 encoding = bp.getString(&pos, 'z', TRUE);
277 } 286 }
278 287
diff --git a/noncore/net/mailit/emailhandler.h b/noncore/net/mailit/emailhandler.h
index 17c4414..e47fd9a 100644
--- a/noncore/net/mailit/emailhandler.h
+++ b/noncore/net/mailit/emailhandler.h
@@ -33,115 +33,116 @@
33#include "popclient.h" 33#include "popclient.h"
34#include "textparser.h" 34#include "textparser.h"
35#include "maillist.h" 35#include "maillist.h"
36 36
37struct Enclosure 37struct Enclosure
38{ 38{
39 int id; 39 int id;
40 QString originalName; 40 QString originalName;
41 QString name; 41 QString name;
42 QString path; 42 QString path;
43 QString contentType; 43 QString contentType;
44 QString contentAttribute; 44 QString contentAttribute;
45 QString encoding; 45 QString encoding;
46 QString body; //might use to much mem. check!! 46 QString body; //might use to much mem. check!!
47 bool saved, installed; 47 bool saved, installed;
48}; 48};
49 49
50class EnclosureList : public QList<Enclosure> 50class EnclosureList : public QList<Enclosure>
51{ 51{
52public: 52public:
53 Item newItem(Item d); 53 Item newItem(Item d);
54private: 54private:
55 Enclosure* dupl(Enclosure *in); 55 Enclosure* dupl(Enclosure *in);
56 Enclosure *ac; 56 Enclosure *ac;
57}; 57};
58 58
59struct Email 59struct Email
60{ 60{
61 QString id; 61 QString id;
62 QString from; 62 QString from;
63 QString fromMail; 63 QString fromMail;
64 QStringList recipients; 64 QStringList recipients;
65 QStringList carbonCopies; 65 QStringList carbonCopies;
66 QString date; 66 QString date;
67 QString subject; 67 QString subject;
68 QString body; 68 QString body;
69 QString bodyPlain; 69 QString bodyPlain;
70 bool sent, received, read, downloaded; 70 bool sent, received, read, downloaded;
71 QString rawMail; 71 QString rawMail;
72 int mimeType; //1 = Mime 1.0 72 int mimeType; //1 = Mime 1.0
73 int serverId; 73 int serverId;
74 int internalId; 74 int internalId;
75 int fromAccountId; 75 int fromAccountId;
76 QString contentType; //0 = text 76 QString contentType; //0 = text
77 QString contentAttribute; //0 = plain, 1 = html 77 QString contentAttribute; //0 = plain, 1 = html
78 EnclosureList files; 78 EnclosureList files;
79 uint size; 79 uint size;
80 80
81 void addEnclosure(Enclosure *e) 81 void addEnclosure(Enclosure *e)
82 { 82 {
83 files.append(e); 83 files.append(e);
84 } 84 }
85}; 85};
86 86
87struct MailAccount 87struct MailAccount
88{ 88{
89 QString accountName; 89 QString accountName;
90 QString name; 90 QString name;
91 QString emailAddress; 91 QString emailAddress;
92 QString popUserName; 92 QString popUserName;
93 QString popPasswd; 93 QString popPasswd;
94 QString popServer; 94 QString popServer;
95 QString smtpServer; 95 QString smtpServer;
96 bool synchronize; 96 bool synchronize;
97 int syncLimit;
97 int lastServerMailCount; 98 int lastServerMailCount;
98 int id; 99 int id;
99}; 100};
100 101
101 const int ErrUnknownResponse = 1001; 102 const int ErrUnknownResponse = 1001;
102 const int ErrLoginFailed = 1002; 103 const int ErrLoginFailed = 1002;
103 const int ErrCancel = 1003; 104 const int ErrCancel = 1003;
104 105
105 106
106class EmailHandler : public QObject 107class EmailHandler : public QObject
107{ 108{
108 Q_OBJECT 109 Q_OBJECT
109 110
110public: 111public:
111 EmailHandler(); 112 EmailHandler();
112 void setAccount(MailAccount account); 113 void setAccount(MailAccount account);
113 void sendMail(QList<Email> *mailList); 114 void sendMail(QList<Email> *mailList);
114 void getMail(); 115 void getMail();
115 void getMailHeaders(); 116 void getMailHeaders();
116 void getMailByList(MailList *mailList); 117 void getMailByList(MailList *mailList);
117 bool parse(QString in, QString lineShift, Email *mail); 118 bool parse(QString in, QString lineShift, Email *mail);
118 bool getEnclosure(Enclosure *ePtr); 119 bool getEnclosure(Enclosure *ePtr);
119 int parse64base(char *src, char *dest); 120 int parse64base(char *src, char *dest);
120 int encodeMime(Email *mail); 121 int encodeMime(Email *mail);
121 int encodeFile(QString fileName, QString *toBody); 122 int encodeFile(QString fileName, QString *toBody);
122 void encode64base(char *src, QString *dest, int len); 123 void encode64base(char *src, QString *dest, int len);
123 void cancel(); 124 void cancel();
124 125
125signals: 126signals:
126 void mailSent(); 127 void mailSent();
127 void smtpError(int); 128 void smtpError(int);
128 void popError(int); 129 void popError(int);
129 void mailArrived(const Email &, bool); 130 void mailArrived(const Email &, bool);
130 void updatePopStatus(const QString &); 131 void updatePopStatus(const QString &);
131 void updateSmtpStatus(const QString &); 132 void updateSmtpStatus(const QString &);
132 void mailTransfered(int); 133 void mailTransfered(int);
133 void mailboxSize(int); 134 void mailboxSize(int);
134 void currentMailSize(int); 135 void currentMailSize(int);
135 void downloadedSize(int); 136 void downloadedSize(int);
136 137
137public slots: 138public slots:
138 void messageArrived(const QString &, int id, uint size, bool complete); 139 void messageArrived(const QString &, int id, uint size, bool complete);
139 140
140private: 141private:
141 MailAccount mailAccount; 142 MailAccount mailAccount;
142 SmtpClient *smtpClient; 143 SmtpClient *smtpClient;
143 PopClient *popClient; 144 PopClient *popClient;
144 bool headers; 145 bool headers;
145}; 146};
146 147
147#endif 148#endif
diff --git a/noncore/net/mailit/emaillistitem.cpp b/noncore/net/mailit/emaillistitem.cpp
index d47b0b7..a325766 100644
--- a/noncore/net/mailit/emaillistitem.cpp
+++ b/noncore/net/mailit/emaillistitem.cpp
@@ -1,92 +1,97 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qstring.h> 20#include <qstring.h>
21#include <qpe/resource.h>
21#include "emaillistitem.h" 22#include "emaillistitem.h"
22 23
23EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox) 24EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox)
24 : QListViewItem(parent) 25 : QListViewItem(parent)
25{ 26{
26 QString temp; 27 QString temp;
27 28
28 mail = mailIn; 29 mail = mailIn;
29 30
30 if (inbox) { 31 if (inbox) {
31 setText(0, mail.from); 32 setText(0, mail.from);
32 } else { 33 } else {
33 QStringList::Iterator it = mail.recipients.begin(); 34 QStringList::Iterator it = mail.recipients.begin();
34 temp = *it; 35 temp = *it;
35 if (mail.recipients.count() > 1) 36 if (mail.recipients.count() > 1)
36 temp += "..."; 37 temp += "...";
37 setText(0, temp); 38 setText(0, temp);
38 } 39 }
39 setText(1, mail.subject); 40 setText(1, mail.subject);
40 41
42 if (mailIn.files.count()>0)
43 {
44 setPixmap(0, Resource::loadPixmap("mailit/attach"));
45 }
41 selected = FALSE; 46 selected = FALSE;
42} 47}
43 48
44Email* EmailListItem::getMail() 49Email* EmailListItem::getMail()
45{ 50{
46 return &mail; 51 return &mail;
47} 52}
48 53
49void EmailListItem::setMail(Email newMail) 54void EmailListItem::setMail(Email newMail)
50{ 55{
51 mail = newMail; 56 mail = newMail;
52 repaint(); 57 repaint();
53} 58}
54 59
55void EmailListItem::setItemSelected(bool enable) 60void EmailListItem::setItemSelected(bool enable)
56{ 61{
57 selected = enable; 62 selected = enable;
58 setSelected(enable); 63 setSelected(enable);
59 repaint(); 64 repaint();
60} 65}
61 66
62bool EmailListItem::isItemSelected() 67bool EmailListItem::isItemSelected()
63{ 68{
64 return selected; 69 return selected;
65} 70}
66 71
67void EmailListItem::paintCell( QPainter *p, const QColorGroup &cg, 72void EmailListItem::paintCell( QPainter *p, const QColorGroup &cg,
68 int column, int width, int alignment ) 73 int column, int width, int alignment )
69{ 74{
70 75
71 QColorGroup _cg( cg ); 76 QColorGroup _cg( cg );
72 QColor c = _cg.text(); 77 QColor c = _cg.text();
73 78
74 if ( (! mail.read) && (mail.received) ) 79 if ( (! mail.read) && (mail.received) )
75 _cg.setColor( QColorGroup::Text, Qt::blue); 80 _cg.setColor( QColorGroup::Text, Qt::blue);
76 if (!mail.downloaded) 81 if (!mail.downloaded)
77 _cg.setColor( QColorGroup::Text, Qt::red); 82 _cg.setColor( QColorGroup::Text, Qt::red);
78 83
79 /*if (selected) { 84 /*if (selected) {
80 _cg.setColor(QColorGroup::Base, Qt::blue); 85 _cg.setColor(QColorGroup::Base, Qt::blue);
81 _cg.setColor(QColorGroup::Text, Qt::yellow); 86 _cg.setColor(QColorGroup::Text, Qt::yellow);
82 if (isSelected()) { 87 if (isSelected()) {
83 _cg.setColor(QColorGroup::HighlightedText, Qt::yellow); 88 _cg.setColor(QColorGroup::HighlightedText, Qt::yellow);
84 } else { 89 } else {
85 _cg.setColor(QColorGroup::Highlight, Qt::blue); 90 _cg.setColor(QColorGroup::Highlight, Qt::blue);
86 } 91 }
87 } 92 }
88 */ 93 */
89 QListViewItem::paintCell( p, _cg, column, width, alignment ); 94 QListViewItem::paintCell( p, _cg, column, width, alignment );
90 95
91 _cg.setColor( QColorGroup::Text, c ); 96 _cg.setColor( QColorGroup::Text, c );
92} 97}
diff --git a/noncore/net/mailit/mailit.pro b/noncore/net/mailit/mailit.pro
index a404884..b262f9a 100644
--- a/noncore/net/mailit/mailit.pro
+++ b/noncore/net/mailit/mailit.pro
@@ -1,43 +1,60 @@
1TEMPLATE = app 1TEMPLATE = app
2CONFIG = qt warn_on release 2CONFIG = qt warn_on release
3HEADERS = emailclient.h \ 3HEADERS = emailclient.h \
4 emailhandler.h \ 4 emailhandler.h \
5 emaillistitem.h \ 5 emaillistitem.h \
6 mailitwindow.h \ 6 mailitwindow.h \
7 md5.h \ 7 md5.h \
8 popclient.h \ 8 popclient.h \
9 readmail.h \ 9 readmail.h \
10 smtpclient.h \ 10 smtpclient.h \
11 writemail.h \ 11 writemail.h \
12 textparser.h \ 12 textparser.h \
13 viewatt.h \ 13 viewatt.h \
14 addatt.h \ 14 addatt.h \
15 editaccount.h \ 15 editaccount.h \
16 maillist.h \ 16 maillist.h \
17 addresslist.h 17 addresslist.h
18SOURCES = emailclient.cpp \ 18SOURCES = emailclient.cpp \
19 emailhandler.cpp \ 19 emailhandler.cpp \
20 emaillistitem.cpp \ 20 emaillistitem.cpp \
21 mailitwindow.cpp \ 21 mailitwindow.cpp \
22 main.cpp \ 22 main.cpp \
23 md5.c \ 23 md5.c \
24 popclient.cpp \ 24 popclient.cpp \
25 readmail.cpp \ 25 readmail.cpp \
26 smtpclient.cpp \ 26 smtpclient.cpp \
27 writemail.cpp \ 27 writemail.cpp \
28 textparser.cpp \ 28 textparser.cpp \
29 viewatt.cpp \ 29 viewatt.cpp \
30 addatt.cpp \ 30 addatt.cpp \
31 editaccount.cpp \ 31 editaccount.cpp \
32 maillist.cpp \ 32 maillist.cpp \
33 addresslist.cpp 33 addresslist.cpp
34 34
35INCLUDEPATH += $(OPIEDIR)/include 35INCLUDEPATH += $(OPIEDIR)/include
36DEPENDPATH += $(OPIEDIR)/include 36DEPENDPATH += $(OPIEDIR)/include
37LIBS += -lqpe -lopie 37LIBS += -lqpe -lopie
38# -lssl 38# -lssl
39MOC_DIR=qpeobj 39MOC_DIR=qpeobj
40OBJECTS_DIR=qpeobj 40OBJECTS_DIR=qpeobj
41DESTDIR=$(OPIEDIR)/bin 41DESTDIR=$(OPIEDIR)/bin
42 42
43TRANSLATIONS = ../../../i18n/de/mailit.ts \
44 ../../../i18n/da/mailit.ts \
45 ../../../i18n/xx/mailit.ts \
46 ../../../i18n/en/mailit.ts \
47 ../../../i18n/es/mailit.ts \
48 ../../../i18n/fr/mailit.ts \
49 ../../../i18n/hu/mailit.ts \
50 ../../../i18n/ja/mailit.ts \
51 ../../../i18n/ko/mailit.ts \
52 ../../../i18n/no/mailit.ts \
53 ../../../i18n/pl/mailit.ts \
54 ../../../i18n/pt/mailit.ts \
55 ../../../i18n/pt_BR/mailit.ts \
56 ../../../i18n/sl/mailit.ts \
57 ../../../i18n/zh_CN/mailit.ts \
58 ../../../i18n/zh_TW/mailit.ts
59
43include ( $(OPIEDIR)/include.pro ) 60include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/net/mailit/readmail.cpp b/noncore/net/mailit/readmail.cpp
index 2011ecf..a5e7147 100644
--- a/noncore/net/mailit/readmail.cpp
+++ b/noncore/net/mailit/readmail.cpp
@@ -1,88 +1,88 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 "readmail.h" 20#include "readmail.h"
21#include <qimage.h> 21#include <qimage.h>
22#include <qmime.h> 22#include <qmime.h>
23#include <qaction.h> 23#include <qaction.h>
24#include "resource.h" 24#include <qpe/resource.h>
25 25
26ReadMail::ReadMail( QWidget* parent, const char* name, WFlags fl ) 26ReadMail::ReadMail( QWidget* parent, const char* name, WFlags fl )
27 : QMainWindow(parent, name, fl) 27 : QMainWindow(parent, name, fl)
28{ 28{
29 plainTxt = FALSE; 29 plainTxt = FALSE;
30 30
31 init(); 31 init();
32 viewAtt = new ViewAtt(0, "View Attatchments"); 32 viewAtt = new ViewAtt(0, "View Attatchments");
33} 33}
34 34
35ReadMail::~ReadMail() 35ReadMail::~ReadMail()
36{ 36{
37 delete emailView->mimeSourceFactory(); 37 delete emailView->mimeSourceFactory();
38 delete viewAtt; 38 delete viewAtt;
39} 39}
40 40
41void ReadMail::init() 41void ReadMail::init()
42{ 42{
43 setToolBarsMovable(FALSE); 43 setToolBarsMovable(FALSE);
44 44
45 bar = new QToolBar(this); 45 bar = new QToolBar(this);
46 bar->setHorizontalStretchable( TRUE ); 46 bar->setHorizontalStretchable( TRUE );
47 47
48 menu = new QMenuBar( bar ); 48 menu = new QMenuBar( bar );
49 49
50 viewMenu = new QPopupMenu(menu); 50 viewMenu = new QPopupMenu(menu);
51 menu->insertItem( tr( "&View" ), viewMenu); 51 menu->insertItem( tr( "&View" ), viewMenu);
52 52
53 mailMenu = new QPopupMenu(menu); 53 mailMenu = new QPopupMenu(menu);
54 menu->insertItem( tr( "&Mail" ), mailMenu); 54 menu->insertItem( tr( "&Mail" ), mailMenu);
55 55
56 bar = new QToolBar(this); 56 bar = new QToolBar(this);
57 57
58 //reply dependant on viewing inbox 58 //reply dependant on viewing inbox
59 replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ), 59 replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ),
60 QString::null, 0, this, 0 ); 60 QString::null, 0, this, 0 );
61 connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) ); 61 connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) );
62 62
63 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 ); 63 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
64 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); 64 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
65 previousButton->addTo(bar); 65 previousButton->addTo(bar);
66 previousButton->addTo(viewMenu); 66 previousButton->addTo(viewMenu);
67 67
68 nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 ); 68 nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 );
69 connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) ); 69 connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) );
70 nextButton->addTo(bar); 70 nextButton->addTo(bar);
71 nextButton->addTo(viewMenu); 71 nextButton->addTo(viewMenu);
72 72
73 attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 ); 73 attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 );
74 connect( attatchmentsButton, SIGNAL( activated() ), this, 74 connect( attatchmentsButton, SIGNAL( activated() ), this,
75 SLOT( viewAttatchments() ) ); 75 SLOT( viewAttatchments() ) );
76 attatchmentsButton->addTo(bar); 76 attatchmentsButton->addTo(bar);
77 attatchmentsButton->addTo(viewMenu); 77 attatchmentsButton->addTo(viewMenu);
78 78
79 plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE); 79 plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE);
80 connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) ); 80 connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) );
81 plainTextButton->addTo(bar); 81 plainTextButton->addTo(bar);
82 plainTextButton->addTo(viewMenu); 82 plainTextButton->addTo(viewMenu);
83 83
84 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); 84 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
85 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); 85 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
86 deleteButton->addTo(bar); 86 deleteButton->addTo(bar);
87 deleteButton->addTo(mailMenu); 87 deleteButton->addTo(mailMenu);
88 88
diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp
index a45cfd2..38a2596 100644
--- a/noncore/net/mailit/writemail.cpp
+++ b/noncore/net/mailit/writemail.cpp
@@ -1,86 +1,86 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qmessagebox.h> 20#include <qmessagebox.h>
21#include "writemail.h" 21#include "writemail.h"
22#include "resource.h" 22#include <qpe/resource.h>
23 23
24WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ) 24WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl )
25 : QMainWindow( parent, name, fl ) 25 : QMainWindow( parent, name, fl )
26{ 26{
27 showingAddressList = FALSE; 27 showingAddressList = FALSE;
28 init(); 28 init();
29 29
30 addAtt = new AddAtt(0, "Add Attatchments"); 30 addAtt = new AddAtt(0, "Add Attatchments");
31} 31}
32 32
33WriteMail::~WriteMail() 33WriteMail::~WriteMail()
34{ 34{
35 delete addAtt; 35 delete addAtt;
36} 36}
37 37
38void WriteMail::setAddressList(AddressList *list) 38void WriteMail::setAddressList(AddressList *list)
39{ 39{
40 Contact *cPtr; 40 Contact *cPtr;
41 41
42 addressList = list; 42 addressList = list;
43 43
44 addressView->clear(); 44 addressView->clear();
45 QList<Contact> *cListPtr = addressList->getContactList(); 45 QList<Contact> *cListPtr = addressList->getContactList();
46 QListViewItem *item; 46 QListViewItem *item;
47 for (cPtr = cListPtr->first(); cPtr != 0; cPtr = cListPtr->next() ) { 47 for (cPtr = cListPtr->first(); cPtr != 0; cPtr = cListPtr->next() ) {
48 item = new QListViewItem(addressView, cPtr->name, cPtr->email); 48 item = new QListViewItem(addressView, cPtr->name, cPtr->email);
49 } 49 }
50} 50}
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("mailit/attach"), 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
84 recipientsBox = new QComboBox( FALSE, widget, "toLabel" ); 84 recipientsBox = new QComboBox( FALSE, widget, "toLabel" );
85 recipientsBox->insertItem( tr( "To:" ) ); 85 recipientsBox->insertItem( tr( "To:" ) );
86 recipientsBox->insertItem( tr( "CC:" ) ); 86 recipientsBox->insertItem( tr( "CC:" ) );
diff --git a/noncore/unsupported/mailit/addatt.cpp b/noncore/unsupported/mailit/addatt.cpp
index c8be865..d268f1f 100644
--- a/noncore/unsupported/mailit/addatt.cpp
+++ b/noncore/unsupported/mailit/addatt.cpp
@@ -1,130 +1,130 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qhbox.h> 21#include <qhbox.h>
22#include <qdir.h> 22#include <qdir.h>
23#include <qstringlist.h> 23#include <qstringlist.h>
24#include "resource.h" 24#include <qpe/resource.h>
25#include "addatt.h" 25#include "addatt.h"
26 26
27FileItem::FileItem(QListView *parent, DocLnk* dl) 27FileItem::FileItem(QListView *parent, DocLnk* dl)
28 : QListViewItem(parent) 28 : QListViewItem(parent)
29{ 29{
30 /*file = fileInfo; 30 /*file = fileInfo;
31 type = fileType;*/ 31 type = fileType;*/
32 32
33 doclnk=dl; 33 doclnk=dl;
34 34
35 setText(0, doclnk->name()); 35 setText(0, doclnk->name());
36 36
37 /*if (fileType == "Picture") { 37 /*if (fileType == "Picture") {
38 setPixmap(0, Resource::loadPixmap("pixmap")); 38 setPixmap(0, Resource::loadPixmap("pixmap"));
39 } else if (fileType == "Document") { 39 } else if (fileType == "Document") {
40 setPixmap(0, Resource::loadPixmap("txt")); 40 setPixmap(0, Resource::loadPixmap("txt"));
41 } else if (fileType == "Sound") { 41 } else if (fileType == "Sound") {
42 setPixmap(0, Resource::loadPixmap("play")); 42 setPixmap(0, Resource::loadPixmap("play"));
43 } else if (fileType == "Movie") { 43 } else if (fileType == "Movie") {
44 setPixmap(0, Resource::loadPixmap("MPEGPlayer")); 44 setPixmap(0, Resource::loadPixmap("MPEGPlayer"));
45 } else if (fileType == "File") { 45 } else if (fileType == "File") {
46 setPixmap(0, Resource::loadPixmap("exec")); 46 setPixmap(0, Resource::loadPixmap("exec"));
47 }*/ 47 }*/
48} 48}
49 49
50FileItem::~FileItem() 50FileItem::~FileItem()
51{ 51{
52 if (doclnk!=NULL) delete doclnk; 52 if (doclnk!=NULL) delete doclnk;
53 doclnk=NULL; 53 doclnk=NULL;
54} 54}
55 55
56AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) 56AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
57 : QDialog(parent, name, f) 57 : QDialog(parent, name, f)
58{ 58{
59 setCaption("Adding attatchments"); 59 setCaption("Adding attatchments");
60 60
61 QGridLayout *top = new QGridLayout(this, 1,1 ); 61 QGridLayout *top = new QGridLayout(this, 1,1 );
62 62
63 QHBox *buttons=new QHBox(this); 63 QHBox *buttons=new QHBox(this);
64 /*fileCategoryButton = new QPushButton(this);*/ 64 /*fileCategoryButton = new QPushButton(this);*/
65 attatchButton = new QPushButton("Attatch ->", buttons); 65 attatchButton = new QPushButton(tr("Attatch..."), buttons);
66 removeButton = new QPushButton("Remove", buttons); 66 removeButton = new QPushButton(tr("Remove"), buttons);
67 67
68 /*fileCategories = new QPopupMenu(fileCategoryButton); 68 /*fileCategories = new QPopupMenu(fileCategoryButton);
69 fileCategoryButton->setPopup(fileCategories); 69 fileCategoryButton->setPopup(fileCategories);
70 fileCategories->insertItem("Document"); 70 fileCategories->insertItem("Document");
71 fileCategories->insertItem("Picture"); 71 fileCategories->insertItem("Picture");
72 fileCategories->insertItem("Sound"); 72 fileCategories->insertItem("Sound");
73 fileCategories->insertItem("Movie"); 73 fileCategories->insertItem("Movie");
74 fileCategories->insertItem("File"); 74 fileCategories->insertItem("File");
75 75
76 fileCategoryButton->setText("Document"); 76 fileCategoryButton->setText("Document");
77 top->addWidget(fileCategoryButton, 0, 0);*/ 77 top->addWidget(fileCategoryButton, 0, 0);*/
78 78
79 79
80 top->addWidget(buttons,1,0); 80 top->addWidget(buttons,1,0);
81 //buttons->addWidget(attatchButton,0,0); 81 //buttons->addWidget(attatchButton,0,0);
82 //buttons->addWidget(removeButton,0,1); 82 //buttons->addWidget(removeButton,0,1);
83 83
84 //connect(fileCategories, SIGNAL(activated(int)), this, 84 //connect(fileCategories, SIGNAL(activated(int)), this,
85 //SLOT(fileCategorySelected(int)) );*/ 85 //SLOT(fileCategorySelected(int)) );*/
86 connect(attatchButton, SIGNAL(clicked()), this, 86 connect(attatchButton, SIGNAL(clicked()), this,
87 SLOT(addAttatchment()) ); 87 SLOT(addAttatchment()) );
88 connect(removeButton, SIGNAL(clicked()), this, 88 connect(removeButton, SIGNAL(clicked()), this,
89 SLOT(removeAttatchment()) ); 89 SLOT(removeAttatchment()) );
90 90
91 /*listView = new QListView(this, "AttView"); 91 /*listView = new QListView(this, "AttView");
92 listView->addColumn("Documents");* 92 listView->addColumn("Documents");*
93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this, 93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
94 SLOT(addAttatchment()) );*/ 94 SLOT(addAttatchment()) );*/
95 95
96 96
97 attView = new QListView(this, "Selected"); 97 attView = new QListView(this, "Selected");
98 attView->addColumn(tr("Attached")); 98 attView->addColumn(tr("Attached"));
99 attView->addColumn(tr("File type")); 99 attView->addColumn(tr("File type"));
100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this, 100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
101 SLOT(removeAttatchment()) ); 101 SLOT(removeAttatchment()) );
102 102
103 //top->addWidget(ofs, 0,0); 103 //top->addWidget(ofs, 0,0);
104 top->addWidget(attView, 0,0); 104 top->addWidget(attView, 0,0);
105 105
106 clear(); 106 clear();
107 107
108 108
109} 109}
110 110
111void AddAtt::clear() 111void AddAtt::clear()
112{ 112{
113 attView->clear(); 113 attView->clear();
114 //getFiles(); 114 //getFiles();
115 modified = FALSE; 115 modified = FALSE;
116} 116}
117 117
118/*void AddAtt::fileCategorySelected(int id) 118/*void AddAtt::fileCategorySelected(int id)
119{ 119{
120 fileCategoryButton->setText(fileCategories->text(id)); 120 fileCategoryButton->setText(fileCategories->text(id));
121 getFiles(); 121 getFiles();
122}*/ 122}*/
123 123
124void AddAtt::addAttatchment() 124void AddAtt::addAttatchment()
125 { 125 {
126 OFileDialog ofs("Attachments",this,0,0,"/root/Documents"); 126 OFileDialog ofs("Attachments",this,0,0,"/root/Documents");
127 127
128 ofs.showMaximized(); 128 ofs.showMaximized();
129 129
130 if (ofs.exec()==QDialog::Accepted) 130 if (ofs.exec()==QDialog::Accepted)
diff --git a/noncore/unsupported/mailit/addresslist.cpp b/noncore/unsupported/mailit/addresslist.cpp
index 43e3830..9fe558a 100644
--- a/noncore/unsupported/mailit/addresslist.cpp
+++ b/noncore/unsupported/mailit/addresslist.cpp
@@ -1,181 +1,161 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qfile.h> 20#include <qfile.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#include <opie/ocontactaccess.h> 22#include <opie/ocontactaccess.h>
23#include <opie/ocontact.h> 23#include <opie/ocontact.h>
24 24
25#include "addresslist.h" 25#include "addresslist.h"
26 26
27AddressList::AddressList(QString file) 27AddressList::AddressList()
28{ 28{
29 addresses.setAutoDelete(TRUE); 29 addresses.setAutoDelete(TRUE);
30 filename = file;
31 read(); 30 read();
32 dirty = FALSE; 31 dirty = FALSE;
33} 32}
34 33
35AddressList::~AddressList() 34AddressList::~AddressList()
36{ 35{
37 write();
38 addresses.clear(); 36 addresses.clear();
39} 37}
40 38
41void AddressList::addContact(QString email, QString name) 39void AddressList::addContact(QString email, QString name)
42{ 40{
43 //skip if not a valid email address, 41 //skip if not a valid email address,
44 if (email.find( '@') == -1) 42 if (email.find( '@') == -1)
45 return; 43 return;
46 44
47 if ( ! containsEmail(email) ) { 45 if ( ! containsEmail(email) ) {
48 Contact *in = new Contact; 46 Contact *in = new Contact;
49 in->email = email; 47 in->email = email;
50 in->name = name; 48 in->name = name;
51 addresses.append(in); 49 addresses.append(in);
52 dirty = TRUE; 50 dirty = TRUE;
53 } 51 }
54} 52}
55 53
56bool AddressList::containsEmail(QString email) 54bool AddressList::containsEmail(QString email)
57{ 55{
58 return ( getEmailRef(email) != -1 ); 56 return ( getEmailRef(email) != -1 );
59} 57}
60 58
61bool AddressList::containsName(QString name) 59bool AddressList::containsName(QString name)
62{ 60{
63 return ( getNameRef(name) != -1 ); 61 return ( getNameRef(name) != -1 );
64} 62}
65 63
66QString AddressList::getNameByEmail(QString email) 64QString AddressList::getNameByEmail(QString email)
67{ 65{
68 int pos = getEmailRef(email); 66 int pos = getEmailRef(email);
69 if (pos != -1) { 67 if (pos != -1) {
70 Contact *ptr = addresses.at(pos); 68 Contact *ptr = addresses.at(pos);
71 return ptr->name; 69 return ptr->name;
72 } 70 }
73 71
74 return NULL; 72 return NULL;
75} 73}
76 74
77QString AddressList::getEmailByName(QString name) 75QString AddressList::getEmailByName(QString name)
78{ 76{
79 int pos = getNameRef(name); 77 int pos = getNameRef(name);
80 if (pos != -1) { 78 if (pos != -1) {
81 Contact *ptr = addresses.at(pos); 79 Contact *ptr = addresses.at(pos);
82 return ptr->email; 80 return ptr->email;
83 } 81 }
84 82
85 return NULL; 83 return NULL;
86} 84}
87 85
88int AddressList::getEmailRef(QString email) 86int AddressList::getEmailRef(QString email)
89{ 87{
90 int pos = 0; 88 int pos = 0;
91 Contact *ptr; 89 Contact *ptr;
92 90
93 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { 91 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
94 if (ptr->email == email) 92 if (ptr->email == email)
95 return pos; 93 return pos;
96 pos++; 94 pos++;
97 } 95 }
98 return -1; 96 return -1;
99} 97}
100 98
101int AddressList::getNameRef(QString name) 99int AddressList::getNameRef(QString name)
102{ 100{
103 int pos = 0; 101 int pos = 0;
104 Contact *ptr; 102 Contact *ptr;
105 103
106 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { 104 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
107 if (ptr->name == name) 105 if (ptr->name == name)
108 return pos; 106 return pos;
109 pos++; 107 pos++;
110 } 108 }
111 return -1; 109 return -1;
112} 110}
113 111
114QList<Contact>* AddressList::getContactList() 112QList<Contact>* AddressList::getContactList()
115{ 113{
116 return &addresses; 114 return &addresses;
117} 115}
118 116
119void AddressList::read() 117void AddressList::read()
120{ 118{
121 OContactAccess::List::Iterator it; 119 OContactAccess::List::Iterator it;
122 120
123 //QFile f(filename);
124 QString lineEmail, lineName, email, name; 121 QString lineEmail, lineName, email, name;
125 OContactAccess m_contactdb("mailit"); 122 OContactAccess m_contactdb("mailit");
126 OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); 123 OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
127 //OContact* oc; 124 //OContact* oc;
128 125
129 for ( it = m_list.begin(); it != m_list.end(); ++it ) 126 for ( it = m_list.begin(); it != m_list.end(); ++it )
130 { 127 {
131 //oc=(OContact*) it; 128 //oc=(OContact*) it;
132 if ((*it).defaultEmail().length()!=0) 129 if ((*it).defaultEmail().length()!=0)
133 addContact((*it).defaultEmail(),(*it).fullName()); 130 addContact((*it).defaultEmail(),(*it).fullName());
134 } 131 }
135 132
136 /*if (! f.open(IO_ReadOnly) ) 133 /*if (! f.open(IO_ReadOnly) )
137 return; 134 return;
138 135
139 QTextStream stream(&f); 136 QTextStream stream(&f);
140 137
141 while (! stream.atEnd() ) { 138 while (! stream.atEnd() ) {
142 lineEmail = stream.readLine(); 139 lineEmail = stream.readLine();
143 if (! stream.atEnd() ) 140 if (! stream.atEnd() )
144 lineName = stream.readLine(); 141 lineName = stream.readLine();
145 else return; 142 else return;
146 143
147 email = getRightString(lineEmail); 144 email = getRightString(lineEmail);
148 name = getRightString(lineName); 145 name = getRightString(lineName);
149 addContact(email, name); 146 addContact(email, name);
150 } 147 }
151 f.close();*/ 148 f.close();*/
152} 149}
153 150
154QString AddressList::getRightString(QString in) 151QString AddressList::getRightString(QString in)
155{ 152{
156 QString out = ""; 153 QString out = "";
157 154
158 int pos = in.find('='); 155 int pos = in.find('=');
159 if (pos != -1) { 156 if (pos != -1) {
160 out = in.mid(pos+1).stripWhiteSpace(); 157 out = in.mid(pos+1).stripWhiteSpace();
161 } 158 }
162 return out; 159 return out;
163} 160}
164 161
165void AddressList::write()
166{
167 if ( (addresses.count() == 0) || (!dirty) )
168 return;
169
170 QFile f(filename);
171 if (! f.open(IO_WriteOnly) )
172 return;
173
174 QTextStream stream(&f);
175 Contact *ptr;
176 for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
177 stream << "email = " + ptr->email + "\n";
178 stream << "name = " + ptr->name + "\n";
179 }
180 f.close();
181}
diff --git a/noncore/unsupported/mailit/addresslist.h b/noncore/unsupported/mailit/addresslist.h
index e87d6f1..99cef9a 100644
--- a/noncore/unsupported/mailit/addresslist.h
+++ b/noncore/unsupported/mailit/addresslist.h
@@ -1,59 +1,58 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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#ifndef ADDRESSLIST_H 20#ifndef ADDRESSLIST_H
21#define ADDRESSLIST_H 21#define ADDRESSLIST_H
22 22
23#include <qobject.h> 23#include <qobject.h>
24#include <qlist.h> 24#include <qlist.h>
25 25
26struct Contact 26struct Contact
27{ 27{
28 QString email; 28 QString email;
29 QString name; 29 QString name;
30}; 30};
31 31
32class AddressList : public QObject 32class AddressList : public QObject
33{ 33{
34 Q_OBJECT 34 Q_OBJECT
35 35
36public: 36public:
37 AddressList(QString file); 37 AddressList();
38 ~AddressList(); 38 ~AddressList();
39 void addContact(QString email, QString name); 39 void addContact(QString email, QString name);
40 bool containsEmail(QString email); 40 bool containsEmail(QString email);
41 bool containsName(QString name); 41 bool containsName(QString name);
42 QString getNameByEmail(QString email); 42 QString getNameByEmail(QString email);
43 QString getEmailByName(QString name); 43 QString getEmailByName(QString name);
44 QList<Contact>* getContactList(); 44 QList<Contact>* getContactList();
45 void write();
46 45
47private: 46private:
48 int getEmailRef(QString email); 47 int getEmailRef(QString email);
49 int getNameRef(QString name); 48 int getNameRef(QString name);
50 QString getRightString(QString in); 49 QString getRightString(QString in);
51 void read(); 50 void read();
52 51
53private: 52private:
54 QList<Contact> addresses; 53 QList<Contact> addresses;
55 QString filename; 54 QString filename;
56 bool dirty; 55 bool dirty;
57}; 56};
58 57
59#endif 58#endif
diff --git a/noncore/unsupported/mailit/editaccount.cpp b/noncore/unsupported/mailit/editaccount.cpp
index c4f95ea..c0afbb2 100644
--- a/noncore/unsupported/mailit/editaccount.cpp
+++ b/noncore/unsupported/mailit/editaccount.cpp
@@ -1,120 +1,133 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 20
21#include <qhbox.h>
21#include "editaccount.h" 22#include "editaccount.h"
22 23
23EditAccount::EditAccount( QWidget* parent, const char* name, WFlags fl ) 24EditAccount::EditAccount( QWidget* parent, const char* name, WFlags fl )
24 : QDialog(parent, name, fl) 25 : QDialog(parent, name, fl)
25{ 26{
26 setCaption( tr("Edit Account") ); 27 setCaption( tr("Edit Account") );
27 init(); 28 init();
28 popPasswInput->setEchoMode(QLineEdit::Password); 29 popPasswInput->setEchoMode(QLineEdit::Password);
29} 30}
30 31
31void EditAccount::setAccount(MailAccount *in, bool newOne) 32void EditAccount::setAccount(MailAccount *in, bool newOne)
32{ 33{
33 account = in; 34 account = in;
34 if (newOne) { 35 if (newOne) {
35 accountNameInput->setText(""); 36 accountNameInput->setText("");
36 nameInput->setText(""); 37 nameInput->setText("");
37 emailInput->setText(""); 38 emailInput->setText("");
38 popUserInput->setText(""); 39 popUserInput->setText("");
39 popPasswInput->setText(""); 40 popPasswInput->setText("");
40 popServerInput->setText(""); 41 popServerInput->setText("");
41 smtpServerInput->setText(""); 42 smtpServerInput->setText("");
42 syncCheckBox->setChecked(TRUE); 43 syncCheckBox->setChecked(TRUE);
44 syncLimitInput->setValue(2);
43 45
44 setCaption( tr("Create new Account") ); 46 setCaption( tr("Create new Account") );
45 } else { 47 } else {
46 accountNameInput->setText(account->accountName); 48 accountNameInput->setText(account->accountName);
47 nameInput->setText(account->name); 49 nameInput->setText(account->name);
48 emailInput->setText(account->emailAddress); 50 emailInput->setText(account->emailAddress);
49 popUserInput->setText(account->popUserName); 51 popUserInput->setText(account->popUserName);
50 popPasswInput->setText(account->popPasswd); 52 popPasswInput->setText(account->popPasswd);
51 popServerInput->setText(account->popServer); 53 popServerInput->setText(account->popServer);
52 smtpServerInput->setText(account->smtpServer); 54 smtpServerInput->setText(account->smtpServer);
53 syncCheckBox->setChecked(account->synchronize); 55 syncCheckBox->setChecked(account->synchronize);
56 syncLimitInput->setValue(account->syncLimit/1000);
54 } 57 }
55} 58}
56 59
57void EditAccount::init() 60void EditAccount::init()
58{ 61{
59 grid = new QGridLayout(this); 62 grid = new QGridLayout(this);
60 grid->setSpacing( 6 ); 63 grid->setSpacing( 6 );
61 grid->setMargin( 11 ); 64 grid->setMargin( 11 );
62 65
63 accountNameInputLabel = new QLabel(tr("Account name"), this); 66 accountNameInputLabel = new QLabel(tr("Account name"), this);
64 grid->addWidget( accountNameInputLabel, 0, 0 ); 67 grid->addWidget( accountNameInputLabel, 0, 0 );
65 accountNameInput = new QLineEdit( this, "account nameInput" ); 68 accountNameInput = new QLineEdit( this, "account nameInput" );
66 grid->addWidget( accountNameInput, 0, 1 ); 69 grid->addWidget( accountNameInput, 0, 1 );
67 70
68 nameInputLabel = new QLabel(tr("Your name"), this); 71 nameInputLabel = new QLabel(tr("Your name"), this);
69 grid->addWidget( nameInputLabel, 1, 0 ); 72 grid->addWidget( nameInputLabel, 1, 0 );
70 nameInput = new QLineEdit( this, "nameInput" ); 73 nameInput = new QLineEdit( this, "nameInput" );
71 grid->addWidget( nameInput, 1, 1 ); 74 grid->addWidget( nameInput, 1, 1 );
72 75
73 emailInputLabel = new QLabel("Email", this); 76 emailInputLabel = new QLabel(tr("Email"), this);
74 grid->addWidget(emailInputLabel, 2, 0 ); 77 grid->addWidget(emailInputLabel, 2, 0 );
75 emailInput = new QLineEdit( this, "emailInput" ); 78 emailInput = new QLineEdit( this, "emailInput" );
76 grid->addWidget( emailInput, 2, 1 ); 79 grid->addWidget( emailInput, 2, 1 );
77 80
78 popUserInputLabel = new QLabel("POP username", this); 81 popUserInputLabel = new QLabel(tr("POP username"), this);
79 grid->addWidget( popUserInputLabel, 3, 0 ); 82 grid->addWidget( popUserInputLabel, 3, 0 );
80 popUserInput = new QLineEdit( this, "popUserInput" ); 83 popUserInput = new QLineEdit( this, "popUserInput" );
81 grid->addWidget( popUserInput, 3, 1 ); 84 grid->addWidget( popUserInput, 3, 1 );
82 85
83 popPasswInputLabel = new QLabel( "POP password", this); 86 popPasswInputLabel = new QLabel( tr("POP password"), this);
84 grid->addWidget( popPasswInputLabel, 4, 0 ); 87 grid->addWidget( popPasswInputLabel, 4, 0 );
85 popPasswInput = new QLineEdit( this, "popPasswInput" ); 88 popPasswInput = new QLineEdit( this, "popPasswInput" );
86 grid->addWidget( popPasswInput, 4, 1 ); 89 grid->addWidget( popPasswInput, 4, 1 );
87 90
88 popServerInputLabel = new QLabel("POP server", this); 91 popServerInputLabel = new QLabel(tr("POP server"), this);
89 grid->addWidget( popServerInputLabel, 5, 0 ); 92 grid->addWidget( popServerInputLabel, 5, 0 );
90 popServerInput = new QLineEdit( this, "popServerInput" ); 93 popServerInput = new QLineEdit( this, "popServerInput" );
91 grid->addWidget( popServerInput, 5, 1 ); 94 grid->addWidget( popServerInput, 5, 1 );
92 95
93 smtpServerInputLabel = new QLabel("SMTP server", this ); 96 smtpServerInputLabel = new QLabel(tr("SMTP server"), this );
94 grid->addWidget( smtpServerInputLabel, 6, 0 ); 97 grid->addWidget( smtpServerInputLabel, 6, 0 );
95 smtpServerInput = new QLineEdit( this, "smtpServerInput" ); 98 smtpServerInput = new QLineEdit( this, "smtpServerInput" );
96 grid->addWidget( smtpServerInput, 6, 1 ); 99 grid->addWidget( smtpServerInput, 6, 1 );
97 100
98 syncCheckBox = new QCheckBox( tr( "Synchronize with server" ), this); 101 QHBox* syncBox=new QHBox(this);
102 grid->addWidget( syncBox, 7, 1 );
103
104 syncCheckBox = new QCheckBox( tr( "Synchronize" ), this);
99 syncCheckBox->setChecked( TRUE ); 105 syncCheckBox->setChecked( TRUE );
100 grid->addMultiCellWidget( syncCheckBox, 7, 7, 0, 1 ); 106 grid->addWidget( syncCheckBox,7,0);
107
108 syncLimitInputLabel = new QLabel(tr("Mail Size (k)"), syncBox);
109 //syncBox->addWidget( syncLimitInputLabel);
110 syncLimitInput = new QSpinBox( syncBox, "syncSize" );
111 //syncBox->addWidget(syncLimitInput);
112
101} 113}
102 114
103 115
104void EditAccount::accept() 116void EditAccount::accept()
105{ 117{
106 account->accountName = accountNameInput->text(); 118 account->accountName = accountNameInput->text();
107 account->name = nameInput->text(); 119 account->name = nameInput->text();
108 account->emailAddress = emailInput->text(); 120 account->emailAddress = emailInput->text();
109 account->popUserName = popUserInput->text(); 121 account->popUserName = popUserInput->text();
110 account->popPasswd = popPasswInput->text(); 122 account->popPasswd = popPasswInput->text();
111 account->popServer = popServerInput->text(); 123 account->popServer = popServerInput->text();
112 account->smtpServer = smtpServerInput->text(); 124 account->smtpServer = smtpServerInput->text();
113 account->synchronize = syncCheckBox->isChecked(); 125 account->synchronize = syncCheckBox->isChecked();
126 account->syncLimit = syncLimitInput->value()*1000;//Display in kB
114 127
115 QDialog::accept(); 128 QDialog::accept();
116} 129}
117 130
118void EditAccount::reject() 131void EditAccount::reject()
119{ 132{
120} 133}
diff --git a/noncore/unsupported/mailit/editaccount.h b/noncore/unsupported/mailit/editaccount.h
index 7a90e50..1e15047 100644
--- a/noncore/unsupported/mailit/editaccount.h
+++ b/noncore/unsupported/mailit/editaccount.h
@@ -1,66 +1,69 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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#ifndef EDITACCOUNT_H 20#ifndef EDITACCOUNT_H
21#define EDITACCOUNT_H 21#define EDITACCOUNT_H
22 22
23#include <qdialog.h> 23#include <qdialog.h>
24#include <qlabel.h> 24#include <qlabel.h>
25#include <qlineedit.h> 25#include <qlineedit.h>
26#include <qcheckbox.h> 26#include <qcheckbox.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qspinbox.h>
28#include "emailhandler.h" 29#include "emailhandler.h"
29 30
30class EditAccount : public QDialog 31class EditAccount : public QDialog
31{ 32{
32 Q_OBJECT 33 Q_OBJECT
33 34
34public: 35public:
35 EditAccount( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 36 EditAccount( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
36 void setAccount(MailAccount *in, bool newOne = TRUE); 37 void setAccount(MailAccount *in, bool newOne = TRUE);
37 void init(); 38 void init();
38 39
39public slots: 40public slots:
40 void accept(); 41 void accept();
41 void reject(); 42 void reject();
42 43
43private: 44private:
44 MailAccount thisAccount, *account; 45 MailAccount thisAccount, *account;
45 46
46 QLabel *accountNameInputLabel; 47 QLabel *accountNameInputLabel;
47 QLabel *nameInputLabel; 48 QLabel *nameInputLabel;
48 QLabel *emailInputLabel; 49 QLabel *emailInputLabel;
49 QLabel *popUserInputLabel; 50 QLabel *popUserInputLabel;
50 QLabel *popPasswInputLabel; 51 QLabel *popPasswInputLabel;
51 QLabel *popServerInputLabel; 52 QLabel *popServerInputLabel;
52 QLabel *smtpServerInputLabel; 53 QLabel *smtpServerInputLabel;
53 54 QLabel *syncLimitInputLabel;
55
54 QLineEdit *accountNameInput; 56 QLineEdit *accountNameInput;
55 QLineEdit *nameInput; 57 QLineEdit *nameInput;
56 QLineEdit *emailInput; 58 QLineEdit *emailInput;
57 QLineEdit *popUserInput; 59 QLineEdit *popUserInput;
58 QLineEdit *popPasswInput; 60 QLineEdit *popPasswInput;
59 QLineEdit *popServerInput; 61 QLineEdit *popServerInput;
60 QLineEdit *smtpServerInput; 62 QLineEdit *smtpServerInput;
63 QSpinBox *syncLimitInput;
61 QCheckBox *syncCheckBox; 64 QCheckBox *syncCheckBox;
62 65
63 QGridLayout *grid; 66 QGridLayout *grid;
64}; 67};
65 68
66#endif 69#endif
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index 2943986..6612541 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -1,108 +1,108 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qapplication.h> 20#include <qapplication.h>
21#include <qmessagebox.h> 21#include <qmessagebox.h>
22#include <qfile.h> 22#include <qfile.h>
23#include <qcheckbox.h> 23#include <qcheckbox.h>
24#include <qmenubar.h> 24#include <qmenubar.h>
25#include <qaction.h> 25#include <qaction.h>
26#include "resource.h" 26#include <qpe/resource.h>
27#include "emailclient.h" 27#include "emailclient.h"
28 28
29QCollection::Item AccountList::newItem(QCollection::Item d) 29QCollection::Item AccountList::newItem(QCollection::Item d)
30{ 30{
31 return dupl( (MailAccount *) d); 31 return dupl( (MailAccount *) d);
32} 32}
33 33
34MailAccount* AccountList::dupl(MailAccount *in) 34MailAccount* AccountList::dupl(MailAccount *in)
35{ 35{
36 ac = new MailAccount(*in); 36 ac = new MailAccount(*in);
37 return ac; 37 return ac;
38} 38}
39 39
40EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl ) 40EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
41 : QMainWindow( parent, name, fl ) 41 : QMainWindow( parent, name, fl )
42{ 42{
43 emailHandler = new EmailHandler(); 43 emailHandler = new EmailHandler();
44 addressList = new AddressList( getPath(FALSE) + "mail_adr"); 44 addressList = new AddressList();
45 45
46 sending = FALSE; 46 sending = FALSE;
47 receiving = FALSE; 47 receiving = FALSE;
48 previewingMail = FALSE; 48 previewingMail = FALSE;
49 mailIdCount = 1; 49 mailIdCount = 1;
50 accountIdCount = 1; 50 accountIdCount = 1;
51 allAccounts = FALSE; 51 allAccounts = FALSE;
52 52
53 init(); 53 init();
54 54
55 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) ); 55 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) );
56 56
57 connect(emailHandler, SIGNAL(smtpError(int)), this, 57 connect(emailHandler, SIGNAL(smtpError(int)), this,
58 SLOT(smtpError(int)) ); 58 SLOT(smtpError(int)) );
59 connect(emailHandler, SIGNAL(popError(int)), this, 59 connect(emailHandler, SIGNAL(popError(int)), this,
60 SLOT(popError(int)) ); 60 SLOT(popError(int)) );
61 61
62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) ); 62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) );
63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) ); 63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) );
64 64
65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, 65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this,
66 SLOT(mailArrived(const Email &, bool)) ); 66 SLOT(mailArrived(const Email &, bool)) );
67 connect(emailHandler, SIGNAL(mailTransfered(int)), this, 67 connect(emailHandler, SIGNAL(mailTransfered(int)), this,
68 SLOT(allMailArrived(int)) ); 68 SLOT(allMailArrived(int)) );
69 69
70 mailconf = new Config("mailit"); 70 mailconf = new Config("mailit");
71 //In case Synchronize is not defined in settings.txt 71 //In case Synchronize is not defined in settings.txt
72 72
73 readSettings(); 73 readSettings();
74 74
75 updateAccounts(); 75 updateAccounts();
76 76
77 lineShift = "\n"; 77 lineShift = "\n";
78 readMail(); 78 readMail();
79 lineShift = "\r\n"; 79 lineShift = "\r\n";
80 80
81} 81}
82 82
83 83
84EmailClient::~EmailClient() 84EmailClient::~EmailClient()
85{ 85{
86 //needs to be moved from destructor to closewindow event 86 //needs to be moved from destructor to closewindow event
87 saveMail(getPath(FALSE) + "inbox.txt", inboxView); 87 saveMail(getPath(FALSE) + "inbox.txt", inboxView);
88 //does not currently work. Defining outbox in the same 88 //does not currently work. Defining outbox in the same
89 //format as inbox is not a good solution as they have 89 //format as inbox is not a good solution as they have
90 //different properties 90 //different properties
91 saveMail(getPath(FALSE) + "outbox.txt", outboxView); 91 saveMail(getPath(FALSE) + "outbox.txt", outboxView);
92 saveSettings(); 92 saveSettings();
93 93
94 mailconf->write(); 94 mailconf->write();
95 delete mailconf; 95 delete mailconf;
96 96
97} 97}
98 98
99void EmailClient::init() 99void EmailClient::init()
100{ 100{
101 statusBar = new QStatusBar(this); 101 statusBar = new QStatusBar(this);
102 statusBar->setSizeGripEnabled(FALSE); 102 statusBar->setSizeGripEnabled(FALSE);
103 103
104 status1Label = new QLabel( tr("Idle"), statusBar); 104 status1Label = new QLabel( tr("Idle"), statusBar);
105 status2Label = new QLabel("", statusBar); 105 status2Label = new QLabel("", statusBar);
106 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)), 106 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
107 status2Label, SLOT(setText(const QString &)) ); 107 status2Label, SLOT(setText(const QString &)) );
108 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)), 108 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
@@ -610,173 +610,181 @@ QString EmailClient::getPath(bool enclosurePath)
610 610
611 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath); 611 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath);
612 if ( !dir.exists() ) 612 if ( !dir.exists() )
613 dir.mkdir( dir.path() ); 613 dir.mkdir( dir.path() );
614 614
615 if (enclosurePath) { 615 if (enclosurePath) {
616 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures); 616 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures);
617 617
618 if ( !dir.exists() ) 618 if ( !dir.exists() )
619 dir.mkdir( dir.path() ); 619 dir.mkdir( dir.path() );
620 620
621 return (dir.path() + "/"); 621 return (dir.path() + "/");
622 622
623 } 623 }
624 return (dir.path() + "/"); 624 return (dir.path() + "/");
625} 625}
626 626
627void EmailClient::readSettings() 627void EmailClient::readSettings()
628{ 628{
629 TextParser *p; 629 TextParser *p;
630 QString s; 630 QString s;
631 int pos, accountPos, y; 631 int pos, accountPos, y;
632 QFile f( getPath(FALSE) + "settings.txt"); 632 QFile f( getPath(FALSE) + "settings.txt");
633 633
634 if ( f.open(IO_ReadOnly) ) { // file opened successfully 634 if ( f.open(IO_ReadOnly) ) { // file opened successfully
635 QTextStream t( &f ); // use a text stream 635 QTextStream t( &f ); // use a text stream
636 s = t.read(); 636 s = t.read();
637 f.close(); 637 f.close();
638 638
639 p = new TextParser(s, "\n"); 639 p = new TextParser(s, "\n");
640 640
641 accountPos = 0; 641 accountPos = 0;
642 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) { 642 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) {
643 accountPos++; 643 accountPos++;
644 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 ) 644 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 )
645 account.accountName = p->getString(& ++pos, 'z', TRUE); 645 account.accountName = p->getString(& ++pos, 'z', TRUE);
646 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1) 646 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1)
647 account.name = p->getString(& ++pos, 'z', TRUE); 647 account.name = p->getString(& ++pos, 'z', TRUE);
648 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1) 648 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1)
649 account.emailAddress = p->getString(& ++pos, 'z', TRUE); 649 account.emailAddress = p->getString(& ++pos, 'z', TRUE);
650 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1) 650 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1)
651 account.popUserName = p->getString(& ++pos, 'z', TRUE); 651 account.popUserName = p->getString(& ++pos, 'z', TRUE);
652 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1) 652 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1)
653 account.popPasswd = p->getString(& ++pos, 'z', TRUE); 653 account.popPasswd = p->getString(& ++pos, 'z', TRUE);
654 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1) 654 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1)
655 account.popServer = p->getString(& ++pos, 'z', TRUE); 655 account.popServer = p->getString(& ++pos, 'z', TRUE);
656 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1) 656 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1)
657 account.smtpServer = p->getString(& ++pos, 'z', TRUE); 657 account.smtpServer = p->getString(& ++pos, 'z', TRUE);
658 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) { 658 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) {
659 s = p->getString(& ++pos, 'z', TRUE); 659 s = p->getString(& ++pos, 'z', TRUE);
660 account.id = s.toInt(); 660 account.id = s.toInt();
661 } 661 }
662 662
663 account.lastServerMailCount = 0; 663 account.lastServerMailCount = 0;
664 account.synchronize = FALSE; 664 account.synchronize = FALSE;
665 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { 665 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) {
666 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { 666 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") {
667 account.synchronize = TRUE; 667 account.synchronize = TRUE;
668 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { 668 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) {
669 s = p->getString(& ++pos, 'z', TRUE); 669 s = p->getString(& ++pos, 'z', TRUE);
670 account.lastServerMailCount = s.toInt(); 670 account.lastServerMailCount = s.toInt();
671 } 671 }
672 } 672 }
673 } 673 }
674
675 if ( (pos = p->find("SYNCLIMIT",':', accountPos, TRUE)) != -1) {
676 account.syncLimit = p->getString(& ++pos, 'z', TRUE).toInt();
677 }
678
679
674 accountList.append(&account); 680 accountList.append(&account);
675 } 681 }
676 delete p; 682 delete p;
677 } 683 }
678 mailconf->setGroup("mailitglobal"); 684 mailconf->setGroup("mailitglobal");
679 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { 685 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) {
680 mailIdCount = y; 686 mailIdCount = y;
681 } 687 }
682 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { 688 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) {
683 accountIdCount = y; 689 accountIdCount = y;
684 } 690 }
685} 691}
686 692
687void EmailClient::saveSettings() 693void EmailClient::saveSettings()
688{ 694{
689 QString temp; 695 QString temp;
690 QFile f( getPath(FALSE) + "settings.txt"); 696 QFile f( getPath(FALSE) + "settings.txt");
691 MailAccount *accountPtr; 697 MailAccount *accountPtr;
692 698
693 if (! f.open(IO_WriteOnly) ) { 699 if (! f.open(IO_WriteOnly) ) {
694 qWarning("could not save settings file"); 700 qWarning("could not save settings file");
695 return; 701 return;
696 } 702 }
697 QTextStream t(&f); 703 QTextStream t(&f);
698 t << "#Settings for QPE Mailit program\n"; 704 t << "#Settings for QPE Mailit program\n";
699 705
700 for (accountPtr = accountList.first(); accountPtr != 0; 706 for (accountPtr = accountList.first(); accountPtr != 0;
701 accountPtr = accountList.next()) { 707 accountPtr = accountList.next()) {
702 708
703 t << "accountStart;\n"; 709 t << "accountStart;\n";
704 t << "AccountName: " + accountPtr->accountName + "\n"; 710 t << "AccountName: " + accountPtr->accountName + "\n";
705 t << "Name: " + accountPtr->name + "\n"; 711 t << "Name: " + accountPtr->name + "\n";
706 t << "Email: " + accountPtr->emailAddress + "\n"; 712 t << "Email: " + accountPtr->emailAddress + "\n";
707 t << "POPUser: " + accountPtr->popUserName + "\n"; 713 t << "POPUser: " + accountPtr->popUserName + "\n";
708 t << "POPPAssword: " + accountPtr->popPasswd + "\n"; 714 t << "POPPAssword: " + accountPtr->popPasswd + "\n";
709 t << "POPServer: " + accountPtr->popServer + "\n"; 715 t << "POPServer: " + accountPtr->popServer + "\n";
710 t << "SMTPServer: " + accountPtr->smtpServer + "\n"; 716 t << "SMTPServer: " + accountPtr->smtpServer + "\n";
711 t << "AccountId: " << accountPtr->id << "\n"; 717 t << "AccountId: " << accountPtr->id << "\n";
712 if (accountPtr->synchronize) { 718 if (accountPtr->synchronize) {
713 t << "Synchronize: Yes\n"; 719 t << "Synchronize: Yes\n";
714 t << "LastServerMailCount: "; 720 t << "LastServerMailCount: ";
715 t << accountPtr->lastServerMailCount << "\n"; 721 t << accountPtr->lastServerMailCount << "\n";
716 } else { 722 } else {
717 t << "Synchronize: No\n"; 723 t << "Synchronize: No\n";
718 } 724 }
725 t << "SyncLimit: ";
726 t << accountPtr->syncLimit << "\n";
719 t << "accountEnd;\n"; 727 t << "accountEnd;\n";
720 } 728 }
721 f.close(); 729 f.close();
722 730
723 mailconf->setGroup("mailitglobal"); 731 mailconf->setGroup("mailitglobal");
724 mailconf->writeEntry("mailidcount", mailIdCount); 732 mailconf->writeEntry("mailidcount", mailIdCount);
725 mailconf->writeEntry("accountidcount", accountIdCount); 733 mailconf->writeEntry("accountidcount", accountIdCount);
726} 734}
727 735
728void EmailClient::selectAccount(int id) 736void EmailClient::selectAccount(int id)
729{ 737{
730 if (accountList.count() > 0) { 738 if (accountList.count() > 0) {
731 currentAccount = accountList.at(id); 739 currentAccount = accountList.at(id);
732 emit newCaption("Mailit - " + currentAccount->accountName); 740 emit newCaption("Mailit - " + currentAccount->accountName);
733 getNewMail(); 741 getNewMail();
734 } else { 742 } else {
735 emit newCaption("Mailit ! No account defined"); 743 emit newCaption("Mailit ! No account defined");
736 } 744 }
737} 745}
738 746
739void EmailClient::editAccount(int id) 747void EmailClient::editAccount(int id)
740{ 748{
741 MailAccount *newAccount; 749 MailAccount *newAccount;
742 750
743 editAccountView = new EditAccount(this, "account", TRUE); 751 editAccountView = new EditAccount(this, "account", TRUE);
744 if (id == newAccountId) { //new account 752 if (id == newAccountId) { //new account
745 newAccount = new MailAccount; 753 newAccount = new MailAccount;
746 editAccountView->setAccount(newAccount); 754 editAccountView->setAccount(newAccount);
747 } else { 755 } else {
748 newAccount = accountList.at(id); 756 newAccount = accountList.at(id);
749 editAccountView->setAccount(newAccount, FALSE); 757 editAccountView->setAccount(newAccount, FALSE);
750 } 758 }
751 759
752 editAccountView->showMaximized(); 760 editAccountView->showMaximized();
753 editAccountView->exec(); 761 editAccountView->exec();
754 762
755 if (editAccountView->result() == QDialog::Accepted) { 763 if (editAccountView->result() == QDialog::Accepted) {
756 if (id == newAccountId) { 764 if (id == newAccountId) {
757 newAccount->id = accountIdCount; 765 newAccount->id = accountIdCount;
758 accountIdCount++; 766 accountIdCount++;
759 accountList.append(newAccount); 767 accountList.append(newAccount);
760 updateAccounts(); 768 updateAccounts();
761 } else { 769 } else {
762 updateAccounts(); 770 updateAccounts();
763 } 771 }
764 } 772 }
765 773
766 delete editAccountView; 774 delete editAccountView;
767} 775}
768 776
769void EmailClient::deleteAccount(int id) 777void EmailClient::deleteAccount(int id)
770{ 778{
771 MailAccount *newAccount; 779 MailAccount *newAccount;
772 QString message; 780 QString message;
773 781
774 newAccount = accountList.at(id); 782 newAccount = accountList.at(id);
775 message = "Delete account:\n" + newAccount->accountName; 783 message = "Delete account:\n" + newAccount->accountName;
776 switch( QMessageBox::warning( this, "Mailit", message, 784 switch( QMessageBox::warning( this, "Mailit", message,
777 "Yes", "No", 0, 0, 1 ) ) { 785 "Yes", "No", 0, 0, 1 ) ) {
778 786
779 case 0: accountList.remove(id); 787 case 0: accountList.remove(id);
780 updateAccounts(); 788 updateAccounts();
781 break; 789 break;
782 case 1: 790 case 1:
diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp
index 1be16d4..9c1c814 100644
--- a/noncore/unsupported/mailit/emailhandler.cpp
+++ b/noncore/unsupported/mailit/emailhandler.cpp
@@ -57,222 +57,231 @@ EmailHandler::EmailHandler()
57 connect(popClient, SIGNAL(mailTransfered(int)), this, 57 connect(popClient, SIGNAL(mailTransfered(int)), this,
58 SIGNAL(mailTransfered(int)) ); 58 SIGNAL(mailTransfered(int)) );
59 59
60 60
61 //relaying size information 61 //relaying size information
62 connect(popClient, SIGNAL(currentMailSize(int)), 62 connect(popClient, SIGNAL(currentMailSize(int)),
63 this, SIGNAL(currentMailSize(int)) ); 63 this, SIGNAL(currentMailSize(int)) );
64 connect(popClient, SIGNAL(downloadedSize(int)), 64 connect(popClient, SIGNAL(downloadedSize(int)),
65 this, SIGNAL(downloadedSize(int)) ); 65 this, SIGNAL(downloadedSize(int)) );
66} 66}
67 67
68void EmailHandler::sendMail(QList<Email> *mailList) 68void EmailHandler::sendMail(QList<Email> *mailList)
69{ 69{
70 Email *currentMail; 70 Email *currentMail;
71 QString temp; 71 QString temp;
72 QString userName = mailAccount.name; 72 QString userName = mailAccount.name;
73 userName += " <" + mailAccount.emailAddress + ">"; 73 userName += " <" + mailAccount.emailAddress + ">";
74 74
75 for (currentMail = mailList->first(); currentMail != 0; 75 for (currentMail = mailList->first(); currentMail != 0;
76 currentMail = mailList->next()) { 76 currentMail = mailList->next()) {
77 77
78 if (encodeMime(currentMail) == 0) { 78 if (encodeMime(currentMail) == 0) {
79 smtpClient->addMail(userName, currentMail->subject, 79 smtpClient->addMail(userName, currentMail->subject,
80 currentMail->recipients, currentMail->rawMail); 80 currentMail->recipients, currentMail->rawMail);
81 } else { //error 81 } else { //error
82 temp = tr("Could not locate all files in \nmail with subject: ") + 82 temp = tr("Could not locate all files in \nmail with subject: ") +
83 currentMail->subject; 83 currentMail->subject;
84 temp += tr("\nMail has NOT been sent"); 84 temp += tr("\nMail has NOT been sent");
85 QMessageBox::warning(qApp->activeWindow(), tr("Attachment error"), temp, tr("OK\n")); 85 QMessageBox::warning(qApp->activeWindow(), tr("Attachment error"), temp, tr("OK\n"));
86 86
87 } 87 }
88 } 88 }
89 smtpClient->newConnection(mailAccount.smtpServer, 25); 89 smtpClient->newConnection(mailAccount.smtpServer, 25);
90} 90}
91 91
92void EmailHandler::setAccount(MailAccount account) 92void EmailHandler::setAccount(MailAccount account)
93{ 93{
94 mailAccount = account; 94 mailAccount = account;
95} 95}
96 96
97void EmailHandler::getMail() 97void EmailHandler::getMail()
98{ 98{
99 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd); 99 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
100 if (mailAccount.synchronize) { 100 if (mailAccount.synchronize) {
101 popClient->setSynchronize(mailAccount.lastServerMailCount); 101 popClient->setSynchronize(mailAccount.lastServerMailCount);
102 } else { 102 } else {
103 popClient->removeSynchronize(); 103 popClient->removeSynchronize();
104 } 104 }
105 105
106 headers = FALSE; 106 headers = FALSE;
107 popClient->headersOnly(headers, 0); 107 popClient->headersOnly(headers, 0);
108 popClient->newConnection(mailAccount.popServer, 110); 108 popClient->newConnection(mailAccount.popServer, 110);
109} 109}
110 110
111void EmailHandler::getMailHeaders() 111void EmailHandler::getMailHeaders()
112{ 112{
113 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd); 113 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
114 if (mailAccount.synchronize) { 114 if (mailAccount.synchronize) {
115 popClient->setSynchronize(mailAccount.lastServerMailCount); 115 popClient->setSynchronize(mailAccount.lastServerMailCount);
116 } else { 116 } else {
117 popClient->removeSynchronize(); 117 popClient->removeSynchronize();
118 } 118 }
119 119
120 headers = TRUE; 120 headers = TRUE;
121 popClient->headersOnly(headers, 2000); //less than 2000, download all 121 popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all
122 popClient->newConnection(mailAccount.popServer, 110); 122 popClient->newConnection(mailAccount.popServer, 110);
123} 123}
124 124
125void EmailHandler::getMailByList(MailList *mailList) 125void EmailHandler::getMailByList(MailList *mailList)
126{ 126{
127 if (mailList->count() == 0) { //should not occur though 127 if (mailList->count() == 0) { //should not occur though
128 emit mailTransfered(0); 128 emit mailTransfered(0);
129 return; 129 return;
130 } 130 }
131 131
132 headers = FALSE; 132 headers = FALSE;
133 popClient->headersOnly(FALSE, 0); 133 popClient->headersOnly(FALSE, 0);
134 popClient->newConnection(mailAccount.popServer, 110); 134 popClient->newConnection(mailAccount.popServer, 110);
135 popClient->setSelectedMails(mailList); 135 popClient->setSelectedMails(mailList);
136} 136}
137 137
138void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete) 138void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete)
139{ 139{
140 Email mail; 140 Email mail;
141 141
142 mail.rawMail = message; 142 mail.rawMail = message;
143 mail.serverId = id; 143 mail.serverId = id;
144 mail.size = size; 144 mail.size = size;
145 mail.downloaded = complete; 145 mail.downloaded = complete;
146 146
147 emit mailArrived(mail, FALSE); 147 emit mailArrived(mail, FALSE);
148} 148}
149 149
150bool EmailHandler::parse(QString in, QString lineShift, Email *mail) 150bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
151{ 151{
152 QString temp, boundary; 152 QString temp, boundary;
153 int pos; 153 int pos;
154 QString delimiter, header, body, mimeHeader, mimeBody; 154 QString delimiter, header, body, mimeHeader, mimeBody;
155 QString content, contentType, contentAttribute, id, encoding; 155 QString content, contentType, contentAttribute, id, encoding;
156 QString fileName, storedName; 156 QString fileName, storedName;
157 int enclosureId = 0; 157 int enclosureId = 0;
158 158
159 mail->rawMail = in; 159 mail->rawMail = in;
160 mail->received = TRUE; 160 mail->received = TRUE;
161 mail->files.setAutoDelete(TRUE); 161 mail->files.setAutoDelete(TRUE);
162 162
163 temp = lineShift + "." + lineShift; 163 temp = lineShift + "." + lineShift;
164 164
165 if (in.right(temp.length()) != temp) { 165 if (in.right(temp.length()) != temp) {
166 qWarning(in.right(temp.length())); 166 qWarning(in.right(temp.length()));
167 qWarning(" . added at end of email as separator"); 167 qWarning(" . added at end of email as separator");
168 mail->rawMail += temp; 168 mail->rawMail += temp;
169 } 169 }
170 170
171 171
172 delimiter = lineShift + lineShift; // "\n\n" or "\r\n\r\n" 172 delimiter = lineShift + lineShift; // "\n\n" or "\r\n\r\n"
173 pos = in.find(delimiter, 0, FALSE); 173 pos = in.find(delimiter, 0, FALSE);
174 header = in.left(pos); 174 header = in.left(pos);
175 body = in.right(in.length() - pos - delimiter.length()); 175 body = in.right(in.length() - pos - delimiter.length());
176 if ((body.at(body.length()-2) == '.') && (body.at(body.length()-3) == '\n')) 176 if ((body.at(body.length()-2) == '.') && (body.at(body.length()-3) == '\n'))
177 body.truncate(body.length()-2); 177 body.truncate(body.length()-2);
178 178
179 TextParser p(header, lineShift); 179 TextParser p(header, lineShift);
180 180
181 if ((pos = p.find("FROM",':', 0, TRUE)) != -1) { 181 if ((pos = p.find("FROM",':', 0, TRUE)) != -1) {
182 pos++; 182 pos++;
183 if (p.separatorAt(pos) == ' ') { 183 if (p.separatorAt(pos) == ' ') {
184 mail->from = p.getString(&pos, '<', false); 184 mail->from = p.getString(&pos, '<', false);
185 mail->from = mail->from.stripWhiteSpace(); 185 mail->from = mail->from.stripWhiteSpace();
186 if ( (mail->from.length() > 2) && (mail->from[0] == '"') ) { 186 if ( (mail->from.length() > 2) && (mail->from[0] == '"') ) {
187 mail->from = mail->from.left(mail->from.length() - 1); 187 mail->from = mail->from.left(mail->from.length() - 1);
188 mail->from = mail->from.right(mail->from.length() - 1); 188 mail->from = mail->from.right(mail->from.length() - 1);
189 } 189 }
190 pos++; 190 pos++;
191 mail->fromMail = p.getString(&pos, '>', false); 191 mail->fromMail = p.getString(&pos, '>', false);
192 } else { 192 } else {
193 if ((p.separatorAt(pos) == '<') 193 if ((p.separatorAt(pos) == '<')
194 || (p.separatorAt(pos) == ' ')) //No name.. nasty 194 || (p.separatorAt(pos) == ' ')) //No name.. nasty
195 pos++; 195 pos++;
196 pos++; 196 pos++;
197 mail->fromMail = p.getString(&pos, 'z', TRUE); 197 mail->fromMail = p.getString(&pos, 'z', TRUE);
198 if (mail->fromMail.at(mail->fromMail.length()-1) == '>') 198 if (mail->fromMail.at(mail->fromMail.length()-1) == '>')
199 mail->fromMail.truncate(mail->fromMail.length() - 1); 199 mail->fromMail.truncate(mail->fromMail.length() - 1);
200 mail->from=mail->fromMail; 200 mail->from=mail->fromMail;
201 } 201 }
202 } 202 }
203
204 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
205 if (pos = p.find("TO",':', pos, TRUE) != -1)
206 {
207 pos++;
208 mail->recipients.append (p.getString(&pos, 'z', TRUE) );
209 }
210
211
212
203 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) { 213 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) {
204 pos++; 214 pos++;
205 mail->subject = p.getString(&pos, 'z', TRUE); 215 mail->subject = p.getString(&pos, 'z', TRUE);
206 } 216 }
207 if ((pos = p.find("DATE",':', 0, TRUE)) != -1) { 217 if ((pos = p.find("DATE",':', 0, TRUE)) != -1) {
208 pos++; 218 pos++;
209 mail->date = p.getString(&pos, 'z', true); 219 mail->date = p.getString(&pos, 'z', true);
210 } 220 }
211 if ((pos = p.find("TO",':', 0, TRUE)) != -1) { 221
212 pos++; 222
213 mail->recipients.append (p.getString(&pos, 'z', TRUE) ); 223
214 }
215 if ((pos = p.find("MESSAGE",'-', 0, TRUE)) != -1) { 224 if ((pos = p.find("MESSAGE",'-', 0, TRUE)) != -1) {
216 pos++; 225 pos++;
217 if ( (p.wordAt(pos).upper() == "ID") && 226 if ( (p.wordAt(pos).upper() == "ID") &&
218 (p.separatorAt(pos) == ':') ) { 227 (p.separatorAt(pos) == ':') ) {
219 228
220 id = p.getString(&pos, 'z', TRUE); 229 id = p.getString(&pos, 'z', TRUE);
221 mail->id = id; 230 mail->id = id;
222 } 231 }
223 } 232 }
224 233
225 pos = 0; 234 pos = 0;
226 while ( ((pos = p.find("MIME",'-', pos, TRUE)) != -1) ) { 235 while ( ((pos = p.find("MIME",'-', pos, TRUE)) != -1) ) {
227 pos++; 236 pos++;
228 if ( (p.wordAt(pos).upper() == "VERSION") && 237 if ( (p.wordAt(pos).upper() == "VERSION") &&
229 (p.separatorAt(pos) == ':') ) { 238 (p.separatorAt(pos) == ':') ) {
230 pos++; 239 pos++;
231 if (p.getString(&pos, 'z', true) == "1.0") { 240 if (p.getString(&pos, 'z', true) == "1.0") {
232 mail->mimeType = 1; 241 mail->mimeType = 1;
233 } 242 }
234 } 243 }
235 } 244 }
236 245
237 if (mail->mimeType == 1) { 246 if (mail->mimeType == 1) {
238 boundary = ""; 247 boundary = "";
239 if ((pos = p.find("BOUNDARY", '=', 0, TRUE)) != -1) { 248 if ((pos = p.find("BOUNDARY", '=', 0, TRUE)) != -1) {
240 pos++; 249 pos++;
241 boundary = p.getString(&pos, 'z', true); 250 boundary = p.getString(&pos, 'z', true);
242 if (boundary[0] == '"') { 251 if (boundary[0] == '"') {
243 boundary = boundary.left(boundary.length() - 1); //strip " 252 boundary = boundary.left(boundary.length() - 1); //strip "
244 boundary = boundary.right(boundary.length() - 1); //strip " 253 boundary = boundary.right(boundary.length() - 1); //strip "
245 } 254 }
246 boundary = "--" + boundary; //create boundary field 255 boundary = "--" + boundary; //create boundary field
247 } 256 }
248 257
249 if (boundary == "") { //fooled by Mime-Version 258 if (boundary == "") { //fooled by Mime-Version
250 mail->body = body; 259 mail->body = body;
251 mail->bodyPlain = body; 260 mail->bodyPlain = body;
252 return mail; 261 return mail;
253 } 262 }
254 263
255 while (body.length() > 0) { 264 while (body.length() > 0) {
256 pos = body.find(boundary, 0, FALSE); 265 pos = body.find(boundary, 0, FALSE);
257 pos = body.find(delimiter, pos, FALSE); 266 pos = body.find(delimiter, pos, FALSE);
258 mimeHeader = body.left(pos); 267 mimeHeader = body.left(pos);
259 mimeBody = body.right(body.length() - pos - delimiter.length()); 268 mimeBody = body.right(body.length() - pos - delimiter.length());
260 TextParser bp(mimeHeader, lineShift); 269 TextParser bp(mimeHeader, lineShift);
261 270
262 contentType = ""; 271 contentType = "";
263 contentAttribute = ""; 272 contentAttribute = "";
264 fileName = ""; 273 fileName = "";
265 if ((pos = bp.find("CONTENT",'-', 0, TRUE)) != -1) { 274 if ((pos = bp.find("CONTENT",'-', 0, TRUE)) != -1) {
266 pos++; 275 pos++;
267 if ( (bp.wordAt(pos).upper() == "TYPE") && 276 if ( (bp.wordAt(pos).upper() == "TYPE") &&
268 (bp.separatorAt(pos) == ':') ) { 277 (bp.separatorAt(pos) == ':') ) {
269 contentType = bp.nextWord().upper(); 278 contentType = bp.nextWord().upper();
270 if (bp.nextSeparator() == '/') 279 if (bp.nextSeparator() == '/')
271 contentAttribute = bp.nextWord().upper(); 280 contentAttribute = bp.nextWord().upper();
272 content = contentType + "/" + contentAttribute; 281 content = contentType + "/" + contentAttribute;
273 } 282 }
274 if ((pos = bp.find("ENCODING",':', 0, TRUE)) != -1) { 283 if ((pos = bp.find("ENCODING",':', 0, TRUE)) != -1) {
275 pos++; 284 pos++;
276 encoding = bp.getString(&pos, 'z', TRUE); 285 encoding = bp.getString(&pos, 'z', TRUE);
277 } 286 }
278 287
diff --git a/noncore/unsupported/mailit/emailhandler.h b/noncore/unsupported/mailit/emailhandler.h
index 17c4414..e47fd9a 100644
--- a/noncore/unsupported/mailit/emailhandler.h
+++ b/noncore/unsupported/mailit/emailhandler.h
@@ -33,115 +33,116 @@
33#include "popclient.h" 33#include "popclient.h"
34#include "textparser.h" 34#include "textparser.h"
35#include "maillist.h" 35#include "maillist.h"
36 36
37struct Enclosure 37struct Enclosure
38{ 38{
39 int id; 39 int id;
40 QString originalName; 40 QString originalName;
41 QString name; 41 QString name;
42 QString path; 42 QString path;
43 QString contentType; 43 QString contentType;
44 QString contentAttribute; 44 QString contentAttribute;
45 QString encoding; 45 QString encoding;
46 QString body; //might use to much mem. check!! 46 QString body; //might use to much mem. check!!
47 bool saved, installed; 47 bool saved, installed;
48}; 48};
49 49
50class EnclosureList : public QList<Enclosure> 50class EnclosureList : public QList<Enclosure>
51{ 51{
52public: 52public:
53 Item newItem(Item d); 53 Item newItem(Item d);
54private: 54private:
55 Enclosure* dupl(Enclosure *in); 55 Enclosure* dupl(Enclosure *in);
56 Enclosure *ac; 56 Enclosure *ac;
57}; 57};
58 58
59struct Email 59struct Email
60{ 60{
61 QString id; 61 QString id;
62 QString from; 62 QString from;
63 QString fromMail; 63 QString fromMail;
64 QStringList recipients; 64 QStringList recipients;
65 QStringList carbonCopies; 65 QStringList carbonCopies;
66 QString date; 66 QString date;
67 QString subject; 67 QString subject;
68 QString body; 68 QString body;
69 QString bodyPlain; 69 QString bodyPlain;
70 bool sent, received, read, downloaded; 70 bool sent, received, read, downloaded;
71 QString rawMail; 71 QString rawMail;
72 int mimeType; //1 = Mime 1.0 72 int mimeType; //1 = Mime 1.0
73 int serverId; 73 int serverId;
74 int internalId; 74 int internalId;
75 int fromAccountId; 75 int fromAccountId;
76 QString contentType; //0 = text 76 QString contentType; //0 = text
77 QString contentAttribute; //0 = plain, 1 = html 77 QString contentAttribute; //0 = plain, 1 = html
78 EnclosureList files; 78 EnclosureList files;
79 uint size; 79 uint size;
80 80
81 void addEnclosure(Enclosure *e) 81 void addEnclosure(Enclosure *e)
82 { 82 {
83 files.append(e); 83 files.append(e);
84 } 84 }
85}; 85};
86 86
87struct MailAccount 87struct MailAccount
88{ 88{
89 QString accountName; 89 QString accountName;
90 QString name; 90 QString name;
91 QString emailAddress; 91 QString emailAddress;
92 QString popUserName; 92 QString popUserName;
93 QString popPasswd; 93 QString popPasswd;
94 QString popServer; 94 QString popServer;
95 QString smtpServer; 95 QString smtpServer;
96 bool synchronize; 96 bool synchronize;
97 int syncLimit;
97 int lastServerMailCount; 98 int lastServerMailCount;
98 int id; 99 int id;
99}; 100};
100 101
101 const int ErrUnknownResponse = 1001; 102 const int ErrUnknownResponse = 1001;
102 const int ErrLoginFailed = 1002; 103 const int ErrLoginFailed = 1002;
103 const int ErrCancel = 1003; 104 const int ErrCancel = 1003;
104 105
105 106
106class EmailHandler : public QObject 107class EmailHandler : public QObject
107{ 108{
108 Q_OBJECT 109 Q_OBJECT
109 110
110public: 111public:
111 EmailHandler(); 112 EmailHandler();
112 void setAccount(MailAccount account); 113 void setAccount(MailAccount account);
113 void sendMail(QList<Email> *mailList); 114 void sendMail(QList<Email> *mailList);
114 void getMail(); 115 void getMail();
115 void getMailHeaders(); 116 void getMailHeaders();
116 void getMailByList(MailList *mailList); 117 void getMailByList(MailList *mailList);
117 bool parse(QString in, QString lineShift, Email *mail); 118 bool parse(QString in, QString lineShift, Email *mail);
118 bool getEnclosure(Enclosure *ePtr); 119 bool getEnclosure(Enclosure *ePtr);
119 int parse64base(char *src, char *dest); 120 int parse64base(char *src, char *dest);
120 int encodeMime(Email *mail); 121 int encodeMime(Email *mail);
121 int encodeFile(QString fileName, QString *toBody); 122 int encodeFile(QString fileName, QString *toBody);
122 void encode64base(char *src, QString *dest, int len); 123 void encode64base(char *src, QString *dest, int len);
123 void cancel(); 124 void cancel();
124 125
125signals: 126signals:
126 void mailSent(); 127 void mailSent();
127 void smtpError(int); 128 void smtpError(int);
128 void popError(int); 129 void popError(int);
129 void mailArrived(const Email &, bool); 130 void mailArrived(const Email &, bool);
130 void updatePopStatus(const QString &); 131 void updatePopStatus(const QString &);
131 void updateSmtpStatus(const QString &); 132 void updateSmtpStatus(const QString &);
132 void mailTransfered(int); 133 void mailTransfered(int);
133 void mailboxSize(int); 134 void mailboxSize(int);
134 void currentMailSize(int); 135 void currentMailSize(int);
135 void downloadedSize(int); 136 void downloadedSize(int);
136 137
137public slots: 138public slots:
138 void messageArrived(const QString &, int id, uint size, bool complete); 139 void messageArrived(const QString &, int id, uint size, bool complete);
139 140
140private: 141private:
141 MailAccount mailAccount; 142 MailAccount mailAccount;
142 SmtpClient *smtpClient; 143 SmtpClient *smtpClient;
143 PopClient *popClient; 144 PopClient *popClient;
144 bool headers; 145 bool headers;
145}; 146};
146 147
147#endif 148#endif
diff --git a/noncore/unsupported/mailit/emaillistitem.cpp b/noncore/unsupported/mailit/emaillistitem.cpp
index d47b0b7..a325766 100644
--- a/noncore/unsupported/mailit/emaillistitem.cpp
+++ b/noncore/unsupported/mailit/emaillistitem.cpp
@@ -1,92 +1,97 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qstring.h> 20#include <qstring.h>
21#include <qpe/resource.h>
21#include "emaillistitem.h" 22#include "emaillistitem.h"
22 23
23EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox) 24EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox)
24 : QListViewItem(parent) 25 : QListViewItem(parent)
25{ 26{
26 QString temp; 27 QString temp;
27 28
28 mail = mailIn; 29 mail = mailIn;
29 30
30 if (inbox) { 31 if (inbox) {
31 setText(0, mail.from); 32 setText(0, mail.from);
32 } else { 33 } else {
33 QStringList::Iterator it = mail.recipients.begin(); 34 QStringList::Iterator it = mail.recipients.begin();
34 temp = *it; 35 temp = *it;
35 if (mail.recipients.count() > 1) 36 if (mail.recipients.count() > 1)
36 temp += "..."; 37 temp += "...";
37 setText(0, temp); 38 setText(0, temp);
38 } 39 }
39 setText(1, mail.subject); 40 setText(1, mail.subject);
40 41
42 if (mailIn.files.count()>0)
43 {
44 setPixmap(0, Resource::loadPixmap("mailit/attach"));
45 }
41 selected = FALSE; 46 selected = FALSE;
42} 47}
43 48
44Email* EmailListItem::getMail() 49Email* EmailListItem::getMail()
45{ 50{
46 return &mail; 51 return &mail;
47} 52}
48 53
49void EmailListItem::setMail(Email newMail) 54void EmailListItem::setMail(Email newMail)
50{ 55{
51 mail = newMail; 56 mail = newMail;
52 repaint(); 57 repaint();
53} 58}
54 59
55void EmailListItem::setItemSelected(bool enable) 60void EmailListItem::setItemSelected(bool enable)
56{ 61{
57 selected = enable; 62 selected = enable;
58 setSelected(enable); 63 setSelected(enable);
59 repaint(); 64 repaint();
60} 65}
61 66
62bool EmailListItem::isItemSelected() 67bool EmailListItem::isItemSelected()
63{ 68{
64 return selected; 69 return selected;
65} 70}
66 71
67void EmailListItem::paintCell( QPainter *p, const QColorGroup &cg, 72void EmailListItem::paintCell( QPainter *p, const QColorGroup &cg,
68 int column, int width, int alignment ) 73 int column, int width, int alignment )
69{ 74{
70 75
71 QColorGroup _cg( cg ); 76 QColorGroup _cg( cg );
72 QColor c = _cg.text(); 77 QColor c = _cg.text();
73 78
74 if ( (! mail.read) && (mail.received) ) 79 if ( (! mail.read) && (mail.received) )
75 _cg.setColor( QColorGroup::Text, Qt::blue); 80 _cg.setColor( QColorGroup::Text, Qt::blue);
76 if (!mail.downloaded) 81 if (!mail.downloaded)
77 _cg.setColor( QColorGroup::Text, Qt::red); 82 _cg.setColor( QColorGroup::Text, Qt::red);
78 83
79 /*if (selected) { 84 /*if (selected) {
80 _cg.setColor(QColorGroup::Base, Qt::blue); 85 _cg.setColor(QColorGroup::Base, Qt::blue);
81 _cg.setColor(QColorGroup::Text, Qt::yellow); 86 _cg.setColor(QColorGroup::Text, Qt::yellow);
82 if (isSelected()) { 87 if (isSelected()) {
83 _cg.setColor(QColorGroup::HighlightedText, Qt::yellow); 88 _cg.setColor(QColorGroup::HighlightedText, Qt::yellow);
84 } else { 89 } else {
85 _cg.setColor(QColorGroup::Highlight, Qt::blue); 90 _cg.setColor(QColorGroup::Highlight, Qt::blue);
86 } 91 }
87 } 92 }
88 */ 93 */
89 QListViewItem::paintCell( p, _cg, column, width, alignment ); 94 QListViewItem::paintCell( p, _cg, column, width, alignment );
90 95
91 _cg.setColor( QColorGroup::Text, c ); 96 _cg.setColor( QColorGroup::Text, c );
92} 97}
diff --git a/noncore/unsupported/mailit/mailit.pro b/noncore/unsupported/mailit/mailit.pro
index a404884..b262f9a 100644
--- a/noncore/unsupported/mailit/mailit.pro
+++ b/noncore/unsupported/mailit/mailit.pro
@@ -1,43 +1,60 @@
1TEMPLATE = app 1TEMPLATE = app
2CONFIG = qt warn_on release 2CONFIG = qt warn_on release
3HEADERS = emailclient.h \ 3HEADERS = emailclient.h \
4 emailhandler.h \ 4 emailhandler.h \
5 emaillistitem.h \ 5 emaillistitem.h \
6 mailitwindow.h \ 6 mailitwindow.h \
7 md5.h \ 7 md5.h \
8 popclient.h \ 8 popclient.h \
9 readmail.h \ 9 readmail.h \
10 smtpclient.h \ 10 smtpclient.h \
11 writemail.h \ 11 writemail.h \
12 textparser.h \ 12 textparser.h \
13 viewatt.h \ 13 viewatt.h \
14 addatt.h \ 14 addatt.h \
15 editaccount.h \ 15 editaccount.h \
16 maillist.h \ 16 maillist.h \
17 addresslist.h 17 addresslist.h
18SOURCES = emailclient.cpp \ 18SOURCES = emailclient.cpp \
19 emailhandler.cpp \ 19 emailhandler.cpp \
20 emaillistitem.cpp \ 20 emaillistitem.cpp \
21 mailitwindow.cpp \ 21 mailitwindow.cpp \
22 main.cpp \ 22 main.cpp \
23 md5.c \ 23 md5.c \
24 popclient.cpp \ 24 popclient.cpp \
25 readmail.cpp \ 25 readmail.cpp \
26 smtpclient.cpp \ 26 smtpclient.cpp \
27 writemail.cpp \ 27 writemail.cpp \
28 textparser.cpp \ 28 textparser.cpp \
29 viewatt.cpp \ 29 viewatt.cpp \
30 addatt.cpp \ 30 addatt.cpp \
31 editaccount.cpp \ 31 editaccount.cpp \
32 maillist.cpp \ 32 maillist.cpp \
33 addresslist.cpp 33 addresslist.cpp
34 34
35INCLUDEPATH += $(OPIEDIR)/include 35INCLUDEPATH += $(OPIEDIR)/include
36DEPENDPATH += $(OPIEDIR)/include 36DEPENDPATH += $(OPIEDIR)/include
37LIBS += -lqpe -lopie 37LIBS += -lqpe -lopie
38# -lssl 38# -lssl
39MOC_DIR=qpeobj 39MOC_DIR=qpeobj
40OBJECTS_DIR=qpeobj 40OBJECTS_DIR=qpeobj
41DESTDIR=$(OPIEDIR)/bin 41DESTDIR=$(OPIEDIR)/bin
42 42
43TRANSLATIONS = ../../../i18n/de/mailit.ts \
44 ../../../i18n/da/mailit.ts \
45 ../../../i18n/xx/mailit.ts \
46 ../../../i18n/en/mailit.ts \
47 ../../../i18n/es/mailit.ts \
48 ../../../i18n/fr/mailit.ts \
49 ../../../i18n/hu/mailit.ts \
50 ../../../i18n/ja/mailit.ts \
51 ../../../i18n/ko/mailit.ts \
52 ../../../i18n/no/mailit.ts \
53 ../../../i18n/pl/mailit.ts \
54 ../../../i18n/pt/mailit.ts \
55 ../../../i18n/pt_BR/mailit.ts \
56 ../../../i18n/sl/mailit.ts \
57 ../../../i18n/zh_CN/mailit.ts \
58 ../../../i18n/zh_TW/mailit.ts
59
43include ( $(OPIEDIR)/include.pro ) 60include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/unsupported/mailit/readmail.cpp b/noncore/unsupported/mailit/readmail.cpp
index 2011ecf..a5e7147 100644
--- a/noncore/unsupported/mailit/readmail.cpp
+++ b/noncore/unsupported/mailit/readmail.cpp
@@ -1,88 +1,88 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 "readmail.h" 20#include "readmail.h"
21#include <qimage.h> 21#include <qimage.h>
22#include <qmime.h> 22#include <qmime.h>
23#include <qaction.h> 23#include <qaction.h>
24#include "resource.h" 24#include <qpe/resource.h>
25 25
26ReadMail::ReadMail( QWidget* parent, const char* name, WFlags fl ) 26ReadMail::ReadMail( QWidget* parent, const char* name, WFlags fl )
27 : QMainWindow(parent, name, fl) 27 : QMainWindow(parent, name, fl)
28{ 28{
29 plainTxt = FALSE; 29 plainTxt = FALSE;
30 30
31 init(); 31 init();
32 viewAtt = new ViewAtt(0, "View Attatchments"); 32 viewAtt = new ViewAtt(0, "View Attatchments");
33} 33}
34 34
35ReadMail::~ReadMail() 35ReadMail::~ReadMail()
36{ 36{
37 delete emailView->mimeSourceFactory(); 37 delete emailView->mimeSourceFactory();
38 delete viewAtt; 38 delete viewAtt;
39} 39}
40 40
41void ReadMail::init() 41void ReadMail::init()
42{ 42{
43 setToolBarsMovable(FALSE); 43 setToolBarsMovable(FALSE);
44 44
45 bar = new QToolBar(this); 45 bar = new QToolBar(this);
46 bar->setHorizontalStretchable( TRUE ); 46 bar->setHorizontalStretchable( TRUE );
47 47
48 menu = new QMenuBar( bar ); 48 menu = new QMenuBar( bar );
49 49
50 viewMenu = new QPopupMenu(menu); 50 viewMenu = new QPopupMenu(menu);
51 menu->insertItem( tr( "&View" ), viewMenu); 51 menu->insertItem( tr( "&View" ), viewMenu);
52 52
53 mailMenu = new QPopupMenu(menu); 53 mailMenu = new QPopupMenu(menu);
54 menu->insertItem( tr( "&Mail" ), mailMenu); 54 menu->insertItem( tr( "&Mail" ), mailMenu);
55 55
56 bar = new QToolBar(this); 56 bar = new QToolBar(this);
57 57
58 //reply dependant on viewing inbox 58 //reply dependant on viewing inbox
59 replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ), 59 replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ),
60 QString::null, 0, this, 0 ); 60 QString::null, 0, this, 0 );
61 connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) ); 61 connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) );
62 62
63 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 ); 63 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
64 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); 64 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
65 previousButton->addTo(bar); 65 previousButton->addTo(bar);
66 previousButton->addTo(viewMenu); 66 previousButton->addTo(viewMenu);
67 67
68 nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 ); 68 nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 );
69 connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) ); 69 connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) );
70 nextButton->addTo(bar); 70 nextButton->addTo(bar);
71 nextButton->addTo(viewMenu); 71 nextButton->addTo(viewMenu);
72 72
73 attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 ); 73 attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 );
74 connect( attatchmentsButton, SIGNAL( activated() ), this, 74 connect( attatchmentsButton, SIGNAL( activated() ), this,
75 SLOT( viewAttatchments() ) ); 75 SLOT( viewAttatchments() ) );
76 attatchmentsButton->addTo(bar); 76 attatchmentsButton->addTo(bar);
77 attatchmentsButton->addTo(viewMenu); 77 attatchmentsButton->addTo(viewMenu);
78 78
79 plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE); 79 plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE);
80 connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) ); 80 connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) );
81 plainTextButton->addTo(bar); 81 plainTextButton->addTo(bar);
82 plainTextButton->addTo(viewMenu); 82 plainTextButton->addTo(viewMenu);
83 83
84 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); 84 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
85 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); 85 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
86 deleteButton->addTo(bar); 86 deleteButton->addTo(bar);
87 deleteButton->addTo(mailMenu); 87 deleteButton->addTo(mailMenu);
88 88
diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp
index a45cfd2..38a2596 100644
--- a/noncore/unsupported/mailit/writemail.cpp
+++ b/noncore/unsupported/mailit/writemail.cpp
@@ -1,86 +1,86 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
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 <qmessagebox.h> 20#include <qmessagebox.h>
21#include "writemail.h" 21#include "writemail.h"
22#include "resource.h" 22#include <qpe/resource.h>
23 23
24WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ) 24WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl )
25 : QMainWindow( parent, name, fl ) 25 : QMainWindow( parent, name, fl )
26{ 26{
27 showingAddressList = FALSE; 27 showingAddressList = FALSE;
28 init(); 28 init();
29 29
30 addAtt = new AddAtt(0, "Add Attatchments"); 30 addAtt = new AddAtt(0, "Add Attatchments");
31} 31}
32 32
33WriteMail::~WriteMail() 33WriteMail::~WriteMail()
34{ 34{
35 delete addAtt; 35 delete addAtt;
36} 36}
37 37
38void WriteMail::setAddressList(AddressList *list) 38void WriteMail::setAddressList(AddressList *list)
39{ 39{
40 Contact *cPtr; 40 Contact *cPtr;
41 41
42 addressList = list; 42 addressList = list;
43 43
44 addressView->clear(); 44 addressView->clear();
45 QList<Contact> *cListPtr = addressList->getContactList(); 45 QList<Contact> *cListPtr = addressList->getContactList();
46 QListViewItem *item; 46 QListViewItem *item;
47 for (cPtr = cListPtr->first(); cPtr != 0; cPtr = cListPtr->next() ) { 47 for (cPtr = cListPtr->first(); cPtr != 0; cPtr = cListPtr->next() ) {
48 item = new QListViewItem(addressView, cPtr->name, cPtr->email); 48 item = new QListViewItem(addressView, cPtr->name, cPtr->email);
49 } 49 }
50} 50}
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("mailit/attach"), 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
84 recipientsBox = new QComboBox( FALSE, widget, "toLabel" ); 84 recipientsBox = new QComboBox( FALSE, widget, "toLabel" );
85 recipientsBox->insertItem( tr( "To:" ) ); 85 recipientsBox->insertItem( tr( "To:" ) );
86 recipientsBox->insertItem( tr( "CC:" ) ); 86 recipientsBox->insertItem( tr( "CC:" ) );