summaryrefslogtreecommitdiffabout
path: root/kmicromail
Unidiff
Diffstat (limited to 'kmicromail') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/composemail.cpp4
-rw-r--r--kmicromail/libmailwrapper/genericwrapper.cpp2
-rw-r--r--kmicromail/mainwindow.cpp1
3 files changed, 7 insertions, 0 deletions
diff --git a/kmicromail/composemail.cpp b/kmicromail/composemail.cpp
index 49fd14f..976e309 100644
--- a/kmicromail/composemail.cpp
+++ b/kmicromail/composemail.cpp
@@ -1,140 +1,144 @@
1// CHANGED 2004-08-06 Lutz Rogowski 1// CHANGED 2004-08-06 Lutz Rogowski
2 2
3 3
4#ifdef DESKTOP_VERSION 4#ifdef DESKTOP_VERSION
5#include <qapplication.h> 5#include <qapplication.h>
6#include <kabc/addresseedialog.h> 6#include <kabc/addresseedialog.h>
7#include <kabc/stdaddressbook.h> 7#include <kabc/stdaddressbook.h>
8#include <kabc/addressee.h> 8#include <kabc/addressee.h>
9#else
10#include <qpe/qpeapplication.h>
9#endif //DESKTOP_VERSION 11#endif //DESKTOP_VERSION
10#include <libkdepim/externalapphandler.h> 12#include <libkdepim/externalapphandler.h>
11 13
12#include "koprefs.h" 14#include "koprefs.h"
15#include <klocale.h>
16#include <kglobal.h>
13 17
14#ifdef MINIKDE_KDIALOG_H 18#ifdef MINIKDE_KDIALOG_H
15#undef MINIKDE_KDIALOG_H 19#undef MINIKDE_KDIALOG_H
16#endif 20#endif
17 21
18 22
19#include "composemail.h" 23#include "composemail.h"
20 24
21#include <libmailwrapper/smtpwrapper.h> 25#include <libmailwrapper/smtpwrapper.h>
22#include <libmailwrapper/storemail.h> 26#include <libmailwrapper/storemail.h>
23#include <libmailwrapper/abstractmail.h> 27#include <libmailwrapper/abstractmail.h>
24#include <libmailwrapper/mailtypes.h> 28#include <libmailwrapper/mailtypes.h>
25 29
26/* OPIE */ 30/* OPIE */
27//#include <opie2/ofiledialog.h> 31//#include <opie2/ofiledialog.h>
28//#include <opie2/odebug.h> 32//#include <opie2/odebug.h>
29#include <kfiledialog.h> 33#include <kfiledialog.h>
30//#include <qpe/resource.h> 34//#include <qpe/resource.h>
31#include <qpe/global.h> 35#include <qpe/global.h>
32//#include <qpe/contact.h> 36//#include <qpe/contact.h>
33 37
34 38
35#include <qcombobox.h> 39#include <qcombobox.h>
36#include <qcheckbox.h> 40#include <qcheckbox.h>
37#include <qiconset.h> 41#include <qiconset.h>
38#include <qtimer.h> 42#include <qtimer.h>
39#include <qmessagebox.h> 43#include <qmessagebox.h>
40#include <qpushbutton.h> 44#include <qpushbutton.h>
41#include <qmultilineedit.h> 45#include <qmultilineedit.h>
42#include <qlabel.h> 46#include <qlabel.h>
43#include <qtabwidget.h> 47#include <qtabwidget.h>
44#include <qlistview.h> 48#include <qlistview.h>
45 49
46//using namespace Opie::Core; 50//using namespace Opie::Core;
47//using namespace Opie::Ui; 51//using namespace Opie::Ui;
48ComposeMail::ComposeMail( Settings *sett, QWidget *parent, const char *name, bool modal ) 52ComposeMail::ComposeMail( Settings *sett, QWidget *parent, const char *name, bool modal )
49 : ComposeMailUI( parent, name, modal ) 53 : ComposeMailUI( parent, name, modal )
50{ 54{
51 55
52 mPickLineEdit = 0; 56 mPickLineEdit = 0;
53 mEncoding = KOPrefs::instance()->mCurrentCodeName; 57 mEncoding = KOPrefs::instance()->mCurrentCodeName;
54 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)), 58 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)),
55 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&))); 59 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&)));
56 settings = sett; 60 settings = sett;
57 m_replyid = ""; 61 m_replyid = "";
58 if ( KOPrefs::instance()->mUseKapi) { 62 if ( KOPrefs::instance()->mUseKapi) {
59 KConfig config( locateLocal("config", "kabcrc") ); 63 KConfig config( locateLocal("config", "kabcrc") );
60 config.setGroup( "General" ); 64 config.setGroup( "General" );
61 QString whoami_uid = config.readEntry( "WhoAmI" ); 65 QString whoami_uid = config.readEntry( "WhoAmI" );
62 66
63 if ( whoami_uid.isEmpty() ) { 67 if ( whoami_uid.isEmpty() ) {
64 QMessageBox::information( 0, i18n( "Hint" ), 68 QMessageBox::information( 0, i18n( "Hint" ),
65 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 69 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
66 i18n( "Ok" ) ); 70 i18n( "Ok" ) );
67 71
68 72
69 fillSettings(); 73 fillSettings();
70 } else 74 } else
71 ExternalAppHandler::instance()->requestDetailsFromKAPI("", "sendbacklist", whoami_uid); 75 ExternalAppHandler::instance()->requestDetailsFromKAPI("", "sendbacklist", whoami_uid);
72 76
73 77
74#ifdef DESKTOP_VERSION 78#ifdef DESKTOP_VERSION
75 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( ); 79 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( );
76 QStringList mails = con.emails(); 80 QStringList mails = con.emails();
77 QString defmail = con.preferredEmail(); 81 QString defmail = con.preferredEmail();
78 if ( mails.count() == 0) 82 if ( mails.count() == 0)
79 QMessageBox::information( 0, i18n( "Hint" ), 83 QMessageBox::information( 0, i18n( "Hint" ),
80 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 84 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
81 i18n( "Ok" ) ); 85 i18n( "Ok" ) );
82 if (defmail.length()!=0) { 86 if (defmail.length()!=0) {
83 fromBox->insertItem(defmail); 87 fromBox->insertItem(defmail);
84 } 88 }
85 QStringList::ConstIterator sit = mails.begin(); 89 QStringList::ConstIterator sit = mails.begin();
86 for (;sit!=mails.end();++sit) { 90 for (;sit!=mails.end();++sit) {
87 if ( (*sit)==defmail) 91 if ( (*sit)==defmail)
88 continue; 92 continue;
89 fromBox->insertItem((*sit)); 93 fromBox->insertItem((*sit));
90 } 94 }
91 senderNameEdit->setText(con.formattedName()); 95 senderNameEdit->setText(con.formattedName());
92#endif 96#endif
93 97
94 } else { 98 } else {
95 fillSettings(); 99 fillSettings();
96 } 100 }
97 checkBoxLater->setChecked( KOPrefs::instance()->mSendLater ); 101 checkBoxLater->setChecked( KOPrefs::instance()->mSendLater );
98 102
99 attList->addColumn( i18n( "Name" ) ); 103 attList->addColumn( i18n( "Name" ) );
100 attList->addColumn( i18n( "Size" ) ); 104 attList->addColumn( i18n( "Size" ) );
101 QList<Account> accounts = settings->getAccounts(); 105 QList<Account> accounts = settings->getAccounts();
102 106
103 if ( QApplication::desktop()->width() < 320 ) 107 if ( QApplication::desktop()->width() < 320 )
104 smtpAccountBox->setMaximumWidth( 80 ); 108 smtpAccountBox->setMaximumWidth( 80 );
105 Account *it; 109 Account *it;
106 for ( it = accounts.first(); it; it = accounts.next() ) { 110 for ( it = accounts.first(); it; it = accounts.next() ) {
107 if ( it->getType()==MAILLIB::A_SMTP ) { 111 if ( it->getType()==MAILLIB::A_SMTP ) {
108 SMTPaccount *smtp = static_cast<SMTPaccount *>(it); 112 SMTPaccount *smtp = static_cast<SMTPaccount *>(it);
109 smtpAccountBox->insertItem( smtp->getAccountName() ); 113 smtpAccountBox->insertItem( smtp->getAccountName() );
110 smtpAccounts.append( smtp ); 114 smtpAccounts.append( smtp );
111 } 115 }
112 } 116 }
113 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) ); 117 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) );
114 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) ); 118 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) );
115 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) ); 119 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) );
116 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) ); 120 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) );
117 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) ); 121 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) );
118 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) ); 122 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) );
119 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) ); 123 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) );
120 mMail = 0; 124 mMail = 0;
121 warnAttach = true; 125 warnAttach = true;
122 QIconSet icon; 126 QIconSet icon;
123 //icon = SmallIcon("fileexport"); 127 //icon = SmallIcon("fileexport");
124 icon = SmallIcon("filesave"); 128 icon = SmallIcon("filesave");
125 SaveButton->setIconSet (icon ) ; 129 SaveButton->setIconSet (icon ) ;
126 if ( QApplication::desktop()->width() < 320 ) { 130 if ( QApplication::desktop()->width() < 320 ) {
127 SaveButton->setText ("") ; 131 SaveButton->setText ("") ;
128 SaveButton->setMaximumSize ( SaveButton->sizeHint().height(),SaveButton->sizeHint().height()) ; 132 SaveButton->setMaximumSize ( SaveButton->sizeHint().height(),SaveButton->sizeHint().height()) ;
129 } 133 }
130 else 134 else
131 SaveButton->setText (i18n("Save")); 135 SaveButton->setText (i18n("Save"));
132#ifndef DESKTOP_VERSION 136#ifndef DESKTOP_VERSION
133 QPEApplication::setStylusOperation( message, QPEApplication::RightOnHold ); 137 QPEApplication::setStylusOperation( message, QPEApplication::RightOnHold );
134 QPEApplication::setStylusOperation( senderNameEdit, QPEApplication::RightOnHold ); 138 QPEApplication::setStylusOperation( senderNameEdit, QPEApplication::RightOnHold );
135 QPEApplication::setStylusOperation( subjectLine, QPEApplication::RightOnHold ); 139 QPEApplication::setStylusOperation( subjectLine, QPEApplication::RightOnHold );
136#endif 140#endif
137 message->setFont ( KOPrefs::instance()->mComposeFont ); 141 message->setFont ( KOPrefs::instance()->mComposeFont );
138 message->setWordWrap (QMultiLineEdit::WidgetWidth); 142 message->setWordWrap (QMultiLineEdit::WidgetWidth);
139 if ( smtpAccounts.count() > 0 ) { 143 if ( smtpAccounts.count() > 0 ) {
140 fillValues( smtpAccountBox->currentItem() ); 144 fillValues( smtpAccountBox->currentItem() );
diff --git a/kmicromail/libmailwrapper/genericwrapper.cpp b/kmicromail/libmailwrapper/genericwrapper.cpp
index eac05e5..1ed9f34 100644
--- a/kmicromail/libmailwrapper/genericwrapper.cpp
+++ b/kmicromail/libmailwrapper/genericwrapper.cpp
@@ -100,267 +100,269 @@ void Genericwrapper::fillSingleBody(RecPartP&target,mailmessage*,mailmime*mime)
100 target->setType("image"); 100 target->setType("image");
101 break; 101 break;
102 case MAILMIME_DISCRETE_TYPE_AUDIO: 102 case MAILMIME_DISCRETE_TYPE_AUDIO:
103 target->setType("audio"); 103 target->setType("audio");
104 break; 104 break;
105 case MAILMIME_DISCRETE_TYPE_VIDEO: 105 case MAILMIME_DISCRETE_TYPE_VIDEO:
106 target->setType("video"); 106 target->setType("video");
107 break; 107 break;
108 case MAILMIME_DISCRETE_TYPE_APPLICATION: 108 case MAILMIME_DISCRETE_TYPE_APPLICATION:
109 target->setType("application"); 109 target->setType("application");
110 break; 110 break;
111 case MAILMIME_DISCRETE_TYPE_EXTENSION: 111 case MAILMIME_DISCRETE_TYPE_EXTENSION:
112 default: 112 default:
113 if (type->ct_type->tp_data.tp_discrete_type->dt_extension) { 113 if (type->ct_type->tp_data.tp_discrete_type->dt_extension) {
114 target->setType(type->ct_type->tp_data.tp_discrete_type->dt_extension); 114 target->setType(type->ct_type->tp_data.tp_discrete_type->dt_extension);
115 } 115 }
116 break; 116 break;
117 } 117 }
118 if (type->ct_parameters) { 118 if (type->ct_parameters) {
119 fillParameters(target,type->ct_parameters); 119 fillParameters(target,type->ct_parameters);
120 } 120 }
121 } 121 }
122 if (mime->mm_mime_fields && mime->mm_mime_fields->fld_list) { 122 if (mime->mm_mime_fields && mime->mm_mime_fields->fld_list) {
123 for (current=clist_begin(mime->mm_mime_fields->fld_list);current!=0;current=clist_next(current)) { 123 for (current=clist_begin(mime->mm_mime_fields->fld_list);current!=0;current=clist_next(current)) {
124 field = (mailmime_field*)current->data; 124 field = (mailmime_field*)current->data;
125 switch(field->fld_type) { 125 switch(field->fld_type) {
126 case MAILMIME_FIELD_TRANSFER_ENCODING: 126 case MAILMIME_FIELD_TRANSFER_ENCODING:
127 target->setEncoding(getencoding(field->fld_data.fld_encoding)); 127 target->setEncoding(getencoding(field->fld_data.fld_encoding));
128 break; 128 break;
129 case MAILMIME_FIELD_ID: 129 case MAILMIME_FIELD_ID:
130 target->setIdentifier(field->fld_data.fld_id); 130 target->setIdentifier(field->fld_data.fld_id);
131 break; 131 break;
132 case MAILMIME_FIELD_DESCRIPTION: 132 case MAILMIME_FIELD_DESCRIPTION:
133 target->setDescription(field->fld_data.fld_description); 133 target->setDescription(field->fld_data.fld_description);
134 break; 134 break;
135 default: 135 default:
136 break; 136 break;
137 } 137 }
138 } 138 }
139 } 139 }
140} 140}
141 141
142void Genericwrapper::fillParameters(RecPartP&target,clist*parameters) 142void Genericwrapper::fillParameters(RecPartP&target,clist*parameters)
143{ 143{
144 if (!parameters) {return;} 144 if (!parameters) {return;}
145 clistcell*current=0; 145 clistcell*current=0;
146 mailmime_parameter*param; 146 mailmime_parameter*param;
147 for (current=clist_begin(parameters);current!=0;current=clist_next(current)) { 147 for (current=clist_begin(parameters);current!=0;current=clist_next(current)) {
148 param = (mailmime_parameter*)current->data; 148 param = (mailmime_parameter*)current->data;
149 if (param) { 149 if (param) {
150 target->addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); 150 target->addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
151 } 151 }
152 } 152 }
153} 153}
154 154
155QString Genericwrapper::getencoding(mailmime_mechanism*aEnc) 155QString Genericwrapper::getencoding(mailmime_mechanism*aEnc)
156{ 156{
157 QString enc="7bit"; 157 QString enc="7bit";
158 if (!aEnc) return enc; 158 if (!aEnc) return enc;
159 switch(aEnc->enc_type) { 159 switch(aEnc->enc_type) {
160 case MAILMIME_MECHANISM_7BIT: 160 case MAILMIME_MECHANISM_7BIT:
161 enc = "7bit"; 161 enc = "7bit";
162 break; 162 break;
163 case MAILMIME_MECHANISM_8BIT: 163 case MAILMIME_MECHANISM_8BIT:
164 enc = "8bit"; 164 enc = "8bit";
165 break; 165 break;
166 case MAILMIME_MECHANISM_BINARY: 166 case MAILMIME_MECHANISM_BINARY:
167 enc = "binary"; 167 enc = "binary";
168 break; 168 break;
169 case MAILMIME_MECHANISM_QUOTED_PRINTABLE: 169 case MAILMIME_MECHANISM_QUOTED_PRINTABLE:
170 enc = "quoted-printable"; 170 enc = "quoted-printable";
171 break; 171 break;
172 case MAILMIME_MECHANISM_BASE64: 172 case MAILMIME_MECHANISM_BASE64:
173 enc = "base64"; 173 enc = "base64";
174 break; 174 break;
175 case MAILMIME_MECHANISM_TOKEN: 175 case MAILMIME_MECHANISM_TOKEN:
176 default: 176 default:
177 if (aEnc->enc_token) { 177 if (aEnc->enc_token) {
178 enc = QString(aEnc->enc_token); 178 enc = QString(aEnc->enc_token);
179 } 179 }
180 break; 180 break;
181 } 181 }
182 return enc; 182 return enc;
183} 183}
184 184
185void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count) 185void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count)
186{ 186{
187 if (current_rec >= 10) { 187 if (current_rec >= 10) {
188 ; // odebug << "too deep recursion!" << oendl; 188 ; // odebug << "too deep recursion!" << oendl;
189 } 189 }
190 if (!message || !mime) { 190 if (!message || !mime) {
191 return; 191 return;
192 } 192 }
193 int r; 193 int r;
194 char*data = 0; 194 char*data = 0;
195 size_t len; 195 size_t len;
196 clistiter * cur = 0; 196 clistiter * cur = 0;
197 QString b; 197 QString b;
198 RecPartP part = new RecPart(); 198 RecPartP part = new RecPart();
199 199
200 switch (mime->mm_type) { 200 switch (mime->mm_type) {
201 case MAILMIME_SINGLE: 201 case MAILMIME_SINGLE:
202 { 202 {
203 QValueList<int>countlist = recList; 203 QValueList<int>countlist = recList;
204 countlist.append(current_count); 204 countlist.append(current_count);
205 r = mailmessage_fetch_section(message,mime,&data,&len); 205 r = mailmessage_fetch_section(message,mime,&data,&len);
206 part->setSize(len); 206 part->setSize(len);
207 part->setPositionlist(countlist); 207 part->setPositionlist(countlist);
208 b = gen_attachment_id(); 208 b = gen_attachment_id();
209 part->setIdentifier(b); 209 part->setIdentifier(b);
210 fillSingleBody(part,message,mime); 210 fillSingleBody(part,message,mime);
211 if (part->Type()=="text" && target->Bodytext().isNull()) { 211 if (part->Type()=="text" && target->Bodytext().isNull()) {
212 encodedString*rs = new encodedString(); 212 encodedString*rs = new encodedString();
213 rs->setContent(data,len); 213 rs->setContent(data,len);
214 encodedString*res = decode_String(rs,part->Encoding()); 214 encodedString*res = decode_String(rs,part->Encoding());
215 if (countlist.count()>2) { 215 if (countlist.count()>2) {
216 bodyCache[b]=rs; 216 bodyCache[b]=rs;
217 target->addPart(part); 217 target->addPart(part);
218 } else { 218 } else {
219 delete rs; 219 delete rs;
220 } 220 }
221 b = QString(res->Content()); 221 b = QString(res->Content());
222 delete res; 222 delete res;
223 size_t index = 0; 223 size_t index = 0;
224 char*resu = 0; 224 char*resu = 0;
225 int err = MAILIMF_NO_ERROR; 225 int err = MAILIMF_NO_ERROR;
226 QString charset = part->searchParamter( "charset"); 226 QString charset = part->searchParamter( "charset");
227 qDebug("CHARSET %s ",charset.latin1() ); 227 qDebug("CHARSET %s ",charset.latin1() );
228#if 0
228 if (false ) { 229 if (false ) {
229 //if ( !charset.isEmpty() ) { 230 //if ( !charset.isEmpty() ) {
230 target->setCharset( charset ); 231 target->setCharset( charset );
231 err = mailmime_encoded_phrase_parse(charset.latin1(), 232 err = mailmime_encoded_phrase_parse(charset.latin1(),
232 b.latin1(), b.length(),&index, "utf-8",&resu); 233 b.latin1(), b.length(),&index, "utf-8",&resu);
233 if (err == MAILIMF_NO_ERROR && resu && strlen(resu)) { 234 if (err == MAILIMF_NO_ERROR && resu && strlen(resu)) {
234 //qDebug("res %d %s ", index, resu); 235 //qDebug("res %d %s ", index, resu);
235 b = QString::fromUtf8(resu); 236 b = QString::fromUtf8(resu);
236 } 237 }
237 if (resu) free(resu); 238 if (resu) free(resu);
238 } 239 }
240#endif
239 target->setBodytext(b); 241 target->setBodytext(b);
240 target->setDescription(part); 242 target->setDescription(part);
241 } else { 243 } else {
242 bodyCache[b]=new encodedString(data,len); 244 bodyCache[b]=new encodedString(data,len);
243 target->addPart(part); 245 target->addPart(part);
244 } 246 }
245 } 247 }
246 break; 248 break;
247 case MAILMIME_MULTIPLE: 249 case MAILMIME_MULTIPLE:
248 { 250 {
249 unsigned int ccount = 1; 251 unsigned int ccount = 1;
250 mailmime*cbody=0; 252 mailmime*cbody=0;
251 QValueList<int>countlist = recList; 253 QValueList<int>countlist = recList;
252 for (cur = clist_begin(mime->mm_data.mm_multipart.mm_mp_list) ; cur != NULL ; cur = clist_next(cur)) { 254 for (cur = clist_begin(mime->mm_data.mm_multipart.mm_mp_list) ; cur != NULL ; cur = clist_next(cur)) {
253 cbody = (mailmime*)clist_content(cur); 255 cbody = (mailmime*)clist_content(cur);
254 if (cbody->mm_type==MAILMIME_MULTIPLE) { 256 if (cbody->mm_type==MAILMIME_MULTIPLE) {
255 RecPartP targetPart = new RecPart(); 257 RecPartP targetPart = new RecPart();
256 targetPart->setType("multipart"); 258 targetPart->setType("multipart");
257 countlist.append(current_count); 259 countlist.append(current_count);
258 targetPart->setPositionlist(countlist); 260 targetPart->setPositionlist(countlist);
259 target->addPart(targetPart); 261 target->addPart(targetPart);
260 } 262 }
261 traverseBody(target,message, cbody,countlist,current_rec+1,ccount); 263 traverseBody(target,message, cbody,countlist,current_rec+1,ccount);
262 if (cbody->mm_type==MAILMIME_MULTIPLE) { 264 if (cbody->mm_type==MAILMIME_MULTIPLE) {
263 countlist = recList; 265 countlist = recList;
264 } 266 }
265 ++ccount; 267 ++ccount;
266 } 268 }
267 } 269 }
268 break; 270 break;
269 case MAILMIME_MESSAGE: 271 case MAILMIME_MESSAGE:
270 { 272 {
271 QValueList<int>countlist = recList; 273 QValueList<int>countlist = recList;
272 countlist.append(current_count); 274 countlist.append(current_count);
273 /* the own header is always at recursion 0 - we don't need that */ 275 /* the own header is always at recursion 0 - we don't need that */
274 if (current_rec > 0) { 276 if (current_rec > 0) {
275 part->setPositionlist(countlist); 277 part->setPositionlist(countlist);
276 r = mailmessage_fetch_section(message,mime,&data,&len); 278 r = mailmessage_fetch_section(message,mime,&data,&len);
277 part->setSize(len); 279 part->setSize(len);
278 part->setPositionlist(countlist); 280 part->setPositionlist(countlist);
279 b = gen_attachment_id(); 281 b = gen_attachment_id();
280 part->setIdentifier(b); 282 part->setIdentifier(b);
281 part->setType("message"); 283 part->setType("message");
282 part->setSubtype("rfc822"); 284 part->setSubtype("rfc822");
283 bodyCache[b]=new encodedString(data,len); 285 bodyCache[b]=new encodedString(data,len);
284 target->addPart(part); 286 target->addPart(part);
285 } 287 }
286 if (mime->mm_data.mm_message.mm_msg_mime != NULL) { 288 if (mime->mm_data.mm_message.mm_msg_mime != NULL) {
287 traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1); 289 traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1);
288 } 290 }
289 } 291 }
290 break; 292 break;
291 } 293 }
292} 294}
293 295
294RecBodyP Genericwrapper::parseMail( mailmessage * msg ) 296RecBodyP Genericwrapper::parseMail( mailmessage * msg )
295{ 297{
296 int err = MAILIMF_NO_ERROR; 298 int err = MAILIMF_NO_ERROR;
297 //mailmime_single_fields fields; 299 //mailmime_single_fields fields;
298 /* is bound to msg and will be freed there */ 300 /* is bound to msg and will be freed there */
299 mailmime * mime=0; 301 mailmime * mime=0;
300 RecBodyP body = new RecBody(); 302 RecBodyP body = new RecBody();
301 //memset(&fields, 0, sizeof(struct mailmime_single_fields)); 303 //memset(&fields, 0, sizeof(struct mailmime_single_fields));
302 err = mailmessage_get_bodystructure(msg,&mime); 304 err = mailmessage_get_bodystructure(msg,&mime);
303 QValueList<int>recList; 305 QValueList<int>recList;
304 traverseBody(body,msg,mime,recList); 306 traverseBody(body,msg,mime,recList);
305 return body; 307 return body;
306} 308}
307 309
308 310
309QString Genericwrapper::parseAddressList( mailimf_address_list *list ) 311QString Genericwrapper::parseAddressList( mailimf_address_list *list )
310{ 312{
311 QString result( "" ); 313 QString result( "" );
312 314
313 bool first = true; 315 bool first = true;
314 if (list == 0) return result; 316 if (list == 0) return result;
315 for ( clistiter *current = clist_begin( list->ad_list ); current != NULL; current = current->next ) { 317 for ( clistiter *current = clist_begin( list->ad_list ); current != NULL; current = current->next ) {
316 mailimf_address *addr = (mailimf_address *) current->data; 318 mailimf_address *addr = (mailimf_address *) current->data;
317 319
318 if ( !first ) { 320 if ( !first ) {
319 result.append( "," ); 321 result.append( "," );
320 } else { 322 } else {
321 first = false; 323 first = false;
322 } 324 }
323 325
324 switch ( addr->ad_type ) { 326 switch ( addr->ad_type ) {
325 case MAILIMF_ADDRESS_MAILBOX: 327 case MAILIMF_ADDRESS_MAILBOX:
326 result.append( parseMailbox( addr->ad_data.ad_mailbox ) ); 328 result.append( parseMailbox( addr->ad_data.ad_mailbox ) );
327 break; 329 break;
328 case MAILIMF_ADDRESS_GROUP: 330 case MAILIMF_ADDRESS_GROUP:
329 result.append( parseGroup( addr->ad_data.ad_group ) ); 331 result.append( parseGroup( addr->ad_data.ad_group ) );
330 break; 332 break;
331 default: 333 default:
332 ; // odebug << "Generic: unkown mailimf address type" << oendl; 334 ; // odebug << "Generic: unkown mailimf address type" << oendl;
333 break; 335 break;
334 } 336 }
335 } 337 }
336 338
337 return result; 339 return result;
338} 340}
339 341
340QString Genericwrapper::parseGroup( mailimf_group *group ) 342QString Genericwrapper::parseGroup( mailimf_group *group )
341{ 343{
342 QString result( "" ); 344 QString result( "" );
343 345
344 result.append( group->grp_display_name ); 346 result.append( group->grp_display_name );
345 result.append( ": " ); 347 result.append( ": " );
346 348
347 if ( group->grp_mb_list != NULL ) { 349 if ( group->grp_mb_list != NULL ) {
348 result.append( parseMailboxList( group->grp_mb_list ) ); 350 result.append( parseMailboxList( group->grp_mb_list ) );
349 } 351 }
350 352
351 result.append( ";" ); 353 result.append( ";" );
352 354
353 return result; 355 return result;
354} 356}
355 357
356QString Genericwrapper::parseMailbox( mailimf_mailbox *box ) 358QString Genericwrapper::parseMailbox( mailimf_mailbox *box )
357{ 359{
358 QString result( "" ); 360 QString result( "" );
359 361
360 if ( box->mb_display_name == NULL ) { 362 if ( box->mb_display_name == NULL ) {
361 result.append( box->mb_addr_spec ); 363 result.append( box->mb_addr_spec );
362 } else { 364 } else {
363 result.append( convert_String(box->mb_display_name) ); 365 result.append( convert_String(box->mb_display_name) );
364 result.append( " <" ); 366 result.append( " <" );
365 result.append( box->mb_addr_spec ); 367 result.append( box->mb_addr_spec );
366 result.append( ">" ); 368 result.append( ">" );
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp
index 8c0a4cb..0e4a64f 100644
--- a/kmicromail/mainwindow.cpp
+++ b/kmicromail/mainwindow.cpp
@@ -1,146 +1,147 @@
1 1
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3#include <qlabel.h> 3#include <qlabel.h>
4#include <qvbox.h> 4#include <qvbox.h>
5#include <qheader.h> 5#include <qheader.h>
6#include <qtimer.h> 6#include <qtimer.h>
7#include <qlayout.h> 7#include <qlayout.h>
8//#include <kdialog.h> 8//#include <kdialog.h>
9#include <kiconloader.h> 9#include <kiconloader.h>
10#include <kapplication.h> 10#include <kapplication.h>
11 11
12#ifdef DESKTOP_VERSION 12#ifdef DESKTOP_VERSION
13#include <qapplication.h> 13#include <qapplication.h>
14#include <qstatusbar.h> 14#include <qstatusbar.h>
15#include <kabc/stdaddressbook.h> 15#include <kabc/stdaddressbook.h>
16extern QStatusBar* globalSstatusBarMainWindow; 16extern QStatusBar* globalSstatusBarMainWindow;
17#else 17#else
18#include <qpe/qpeapplication.h> 18#include <qpe/qpeapplication.h>
19#include <klocale.h>
19#endif 20#endif
20#include "defines.h" 21#include "defines.h"
21#include "mainwindow.h" 22#include "mainwindow.h"
22#include <KDGanttMinimizeSplitter.h> 23#include <KDGanttMinimizeSplitter.h>
23 24
24#include "koprefs.h" 25#include "koprefs.h"
25 26
26MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) 27MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
27 : QMainWindow( parent, name ) //, flags ) 28 : QMainWindow( parent, name ) //, flags )
28{ 29{
29#ifdef DESKTOP_VERSION 30#ifdef DESKTOP_VERSION
30 globalSstatusBarMainWindow = statusBar(); 31 globalSstatusBarMainWindow = statusBar();
31#endif 32#endif
32 setCaption( i18n( "KOpieMail/Pi" ) ); 33 setCaption( i18n( "KOpieMail/Pi" ) );
33 setToolBarsMovable( false ); 34 setToolBarsMovable( false );
34 //KABC::StdAddressBook::self(); 35 //KABC::StdAddressBook::self();
35 toolBar = new QToolBar( this ); 36 toolBar = new QToolBar( this );
36 menuBar = new QPEMenuBar( toolBar ); 37 menuBar = new QPEMenuBar( toolBar );
37 mailMenu = new QPopupMenu( menuBar ); 38 mailMenu = new QPopupMenu( menuBar );
38 menuBar->insertItem( i18n( "Mail" ), mailMenu ); 39 menuBar->insertItem( i18n( "Mail" ), mailMenu );
39 settingsMenu = new QPopupMenu( menuBar ); 40 settingsMenu = new QPopupMenu( menuBar );
40 menuBar->insertItem( i18n( "Settings" ), settingsMenu ); 41 menuBar->insertItem( i18n( "Settings" ), settingsMenu );
41 42
42 addToolBar( toolBar ); 43 addToolBar( toolBar );
43 toolBar->setHorizontalStretchable( true ); 44 toolBar->setHorizontalStretchable( true );
44 QAction* getMail = new QAction( i18n( "Get all new mails" ), SmallIcon("enter"), 45 QAction* getMail = new QAction( i18n( "Get all new mails" ), SmallIcon("enter"),
45 0, 0, this ); 46 0, 0, this );
46 connect(getMail, SIGNAL( activated() ), 47 connect(getMail, SIGNAL( activated() ),
47 SLOT( slotGetAllMail() ) ); 48 SLOT( slotGetAllMail() ) );
48 getMail->addTo( mailMenu ); 49 getMail->addTo( mailMenu );
49 50
50 getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"), 51 getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"),
51 0, 0, this ); 52 0, 0, this );
52 getMail->addTo( toolBar ); 53 getMail->addTo( toolBar );
53 getMail->addTo( mailMenu ); 54 getMail->addTo( mailMenu );
54 connect(getMail, SIGNAL( activated() ), 55 connect(getMail, SIGNAL( activated() ),
55 SLOT( slotGetMail() ) ); 56 SLOT( slotGetMail() ) );
56 57
57 composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"), 58 composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"),
58 0, 0, this ); 59 0, 0, this );
59 composeMail->addTo( toolBar ); 60 composeMail->addTo( toolBar );
60 composeMail->addTo( mailMenu ); 61 composeMail->addTo( mailMenu );
61 62
62 sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") , 63 sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") ,
63 0, 0, this ); 64 0, 0, this );
64 sendQueued->addTo( toolBar ); 65 sendQueued->addTo( toolBar );
65 sendQueued->addTo( mailMenu ); 66 sendQueued->addTo( mailMenu );
66 67
67 /* 68 /*
68 syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC, 69 syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC,
69 0, 0, this ); 70 0, 0, this );
70 syncFolders->addTo( toolBar ); 71 syncFolders->addTo( toolBar );
71 syncFolders->addTo( mailMenu ); 72 syncFolders->addTo( mailMenu );
72 */ 73 */
73 74
74 showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") , 75 showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") ,
75 0, 0, this, 0, true ); 76 0, 0, this, 0, true );
76 showFolders->addTo( toolBar ); 77 showFolders->addTo( toolBar );
77 showFolders->addTo( mailMenu ); 78 showFolders->addTo( mailMenu );
78 showFolders->setOn( true ); 79 showFolders->setOn( true );
79 connect(showFolders, SIGNAL( toggled(bool) ), 80 connect(showFolders, SIGNAL( toggled(bool) ),
80 SLOT( slotShowFolders(bool) ) ); 81 SLOT( slotShowFolders(bool) ) );
81 82
82 /* 83 /*
83 searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ), 84 searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ),
84 0, 0, this ); 85 0, 0, this );
85 searchMails->addTo( toolBar ); 86 searchMails->addTo( toolBar );
86 searchMails->addTo( mailMenu ); 87 searchMails->addTo( mailMenu );
87 */ 88 */
88 89
89 deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this); 90 deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this);
90 deleteMails->addTo( toolBar ); 91 deleteMails->addTo( toolBar );
91 deleteMails->addTo( mailMenu ); 92 deleteMails->addTo( mailMenu );
92 connect( deleteMails, SIGNAL( activated() ), 93 connect( deleteMails, SIGNAL( activated() ),
93 SLOT( slotDeleteMail() ) ); 94 SLOT( slotDeleteMail() ) );
94 95
95 editSettings = new QAction( i18n( "Edit settings" ), SmallIcon("SettingsIcon") , 96 editSettings = new QAction( i18n( "Edit settings" ), SmallIcon("SettingsIcon") ,
96 0, 0, this ); 97 0, 0, this );
97 editSettings->addTo( settingsMenu ); 98 editSettings->addTo( settingsMenu );
98 connect( editSettings, SIGNAL( activated() ), 99 connect( editSettings, SIGNAL( activated() ),
99 SLOT( slotEditSettings() ) ); 100 SLOT( slotEditSettings() ) );
100 editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") , 101 editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") ,
101 0, 0, this ); 102 0, 0, this );
102 editAccounts->addTo( settingsMenu ); 103 editAccounts->addTo( settingsMenu );
103 codecMenu = new QPopupMenu( menuBar ); 104 codecMenu = new QPopupMenu( menuBar );
104 codecMenu->insertItem( "Western (iso-8859-1)",0,0); 105 codecMenu->insertItem( "Western (iso-8859-1)",0,0);
105 codecMenu->insertItem( "Cyrillic (iso-8859-5)",1,1); 106 codecMenu->insertItem( "Cyrillic (iso-8859-5)",1,1);
106 codecMenu->insertItem( "Western (iso-8859-15)",2,2); 107 codecMenu->insertItem( "Western (iso-8859-15)",2,2);
107 codecMenu->insertItem( "Chinese (big-5)",3,3); 108 codecMenu->insertItem( "Chinese (big-5)",3,3);
108 codecMenu->insertItem( "Unicode (utf-8)",4,4); 109 codecMenu->insertItem( "Unicode (utf-8)",4,4);
109 codecMenu->insertItem( "Userdefined ("+KOPrefs::instance()->mSendCodec+")",5,5); 110 codecMenu->insertItem( "Userdefined ("+KOPrefs::instance()->mSendCodec+")",5,5);
110 //disabled 111 //disabled
111 //settingsMenu->insertItem( i18n("Codec for new mails"), codecMenu); 112 //settingsMenu->insertItem( i18n("Codec for new mails"), codecMenu);
112 //setCentralWidget( view ); 113 //setCentralWidget( view );
113 114
114 QVBox* wrapperBox = new QVBox( this ); 115 QVBox* wrapperBox = new QVBox( this );
115 setCentralWidget( wrapperBox ); 116 setCentralWidget( wrapperBox );
116 117
117 // QWidget *view = new QWidget( wrapperBox ); 118 // QWidget *view = new QWidget( wrapperBox );
118 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); 119 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox);
119 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); 120 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left);
120 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); 121 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight );
121 122
122 folderView = new AccountView( split ); 123 folderView = new AccountView( split );
123 folderView->header()->hide(); 124 folderView->header()->hide();
124 folderView->setRootIsDecorated( false ); 125 folderView->setRootIsDecorated( false );
125 folderView->addColumn( i18n( "Mailbox" ) ); 126 folderView->addColumn( i18n( "Mailbox" ) );
126 127
127 //layout->addWidget( folderView ); 128 //layout->addWidget( folderView );
128 129
129 mailView = new QListView( split ); 130 mailView = new QListView( split );
130 mailView->addColumn( i18n( " " ) ); 131 mailView->addColumn( i18n( " " ) );
131 mailView->addColumn( i18n( "Subject" ),QListView::Manual ); 132 mailView->addColumn( i18n( "Subject" ),QListView::Manual );
132 mailView->addColumn( i18n( "Sender" ),QListView::Manual ); 133 mailView->addColumn( i18n( "Sender" ),QListView::Manual );
133 mailView->addColumn( i18n( "Size" ),QListView::Manual); 134 mailView->addColumn( i18n( "Size" ),QListView::Manual);
134 mailView->addColumn( i18n( "Date" ),QListView::Manual); 135 mailView->addColumn( i18n( "Date" ),QListView::Manual);
135 mailView->setAllColumnsShowFocus(true); 136 mailView->setAllColumnsShowFocus(true);
136 //mailView->setSorting(-1); 137 //mailView->setSorting(-1);
137 mailView->setRootIsDecorated( false ); 138 mailView->setRootIsDecorated( false );
138 statusWidget = new StatusWidget( wrapperBox ); 139 statusWidget = new StatusWidget( wrapperBox );
139 statusWidget->hide(); 140 statusWidget->hide();
140 141
141 //layout->addWidget( mailView ); 142 //layout->addWidget( mailView );
142 //layout->setStretchFactor( folderView, 1 ); 143 //layout->setStretchFactor( folderView, 1 );
143 //layout->setStretchFactor( mailView, 2 ); 144 //layout->setStretchFactor( mailView, 2 );
144 145
145 slotAdjustLayout(); 146 slotAdjustLayout();
146#ifndef DESKTOP_VERSION 147#ifndef DESKTOP_VERSION