summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-02-24 11:19:48 (UTC)
committer zautrix <zautrix>2005-02-24 11:19:48 (UTC)
commitff8a2f593fae5ffe82f889ab70d32bf02a45f4fb (patch) (unidiff)
treeb3b4c6ee66b7ae39fad43622a2badacdbe9ed4e1
parent66ea8a0023a2a58e7887a41c265f2a7112b6b625 (diff)
downloadkdepimpi-ff8a2f593fae5ffe82f889ab70d32bf02a45f4fb.zip
kdepimpi-ff8a2f593fae5ffe82f889ab70d32bf02a45f4fb.tar.gz
kdepimpi-ff8a2f593fae5ffe82f889ab70d32bf02a45f4fb.tar.bz2
ompi html fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt3
-rw-r--r--kmicromail/viewmail.cpp23
-rw-r--r--kmicromail/viewmail.h2
3 files changed, 25 insertions, 3 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 0596511..86ac9b5 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,107 +1,110 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.0.12 ************ 3********** VERSION 2.0.12 ************
4 4
5KO/Pi: 5KO/Pi:
6Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 6Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
7Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 7Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
8Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 8Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
9 9
10Fixed problem in pi-sync mode when wrong password was sent. 10Fixed problem in pi-sync mode when wrong password was sent.
11 11
12OM/Pi:
13Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
14Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
12 15
13********** VERSION 2.0.11 ************ 16********** VERSION 2.0.11 ************
14 17
15Fixed some problems in pi-sync mode 18Fixed some problems in pi-sync mode
16(e.g. details of events were not synced properly) 19(e.g. details of events were not synced properly)
17 20
18********** VERSION 2.0.10 ************ 21********** VERSION 2.0.10 ************
19 22
20KO/Pi: 23KO/Pi:
21In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 24In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
22This is fixed. 25This is fixed.
23Changed the search dialog a bit to make it more user friendly. 26Changed the search dialog a bit to make it more user friendly.
24(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 27(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
25 28
26Added config option to hide the week number in KO/Pi toolbar. 29Added config option to hide the week number in KO/Pi toolbar.
27 30
28********** VERSION 2.0.9 ************ 31********** VERSION 2.0.9 ************
29 32
30Made month view icons for multiday events a bit nicer. 33Made month view icons for multiday events a bit nicer.
31Some minor fixes in KO/Pi 34Some minor fixes in KO/Pi
32(e.g. go to today did not work for new week view properly). 35(e.g. go to today did not work for new week view properly).
33 36
34 37
35********** VERSION 2.0.8 ************ 38********** VERSION 2.0.8 ************
36 39
37Fixed a problem in dependency info in the ipk files for the Zaurus. 40Fixed a problem in dependency info in the ipk files for the Zaurus.
38 41
39Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar. 42Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar.
40 43
41Added a "go today" button to the datepicker. 44Added a "go today" button to the datepicker.
42 45
43Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 46Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
44and made it configureable to show these values. 47and made it configureable to show these values.
45 48
46Fixed a problem for events (from external iCal files) that do have a duration but no end date. 49Fixed a problem for events (from external iCal files) that do have a duration but no end date.
47 50
48 51
49********** VERSION 2.0.7 ************ 52********** VERSION 2.0.7 ************
50 53
51Added global application font settings 54Added global application font settings
52(for all KDE-Pim/Pi apps) to the general settings. 55(for all KDE-Pim/Pi apps) to the general settings.
53 56
54Fixed a problem in OM/Pi when trying to login to some IMAP servers 57Fixed a problem in OM/Pi when trying to login to some IMAP servers
55(like the IMAP server of Apple: mail.mac.com ) 58(like the IMAP server of Apple: mail.mac.com )
56 59
57Added recurring todos to KO/Pi. 60Added recurring todos to KO/Pi.
58 61
59 62
60********** VERSION 2.0.6 ************ 63********** VERSION 2.0.6 ************
61 64
62Some bugfixes in the pi-sync mode. 65Some bugfixes in the pi-sync mode.
63Added German translation for pi-sync mode. 66Added German translation for pi-sync mode.
64 67
65KO/Pi: 68KO/Pi:
66Made the todolist using alternate background. 69Made the todolist using alternate background.
67 70
68Other minor fixes in KO/Pi. 71Other minor fixes in KO/Pi.
69 72
70 73
71********** VERSION 2.0.5 ************ 74********** VERSION 2.0.5 ************
72 75
73Bugfixes in KO/Pi. 76Bugfixes in KO/Pi.
74 77
75********** VERSION 2.0.4 ************ 78********** VERSION 2.0.4 ************
76 79
77KO/Pi: 80KO/Pi:
78Fixed problem loading translations for summary/location edit boxes in event/todo editor. 81Fixed problem loading translations for summary/location edit boxes in event/todo editor.
79 82
80Added a general "select week number" to the toolbar. 83Added a general "select week number" to the toolbar.
81 84
82Fixed some small problem of the new features introduced in version 2.0.3. 85Fixed some small problem of the new features introduced in version 2.0.3.
83 86
84Made it possible to specify one specific category as category color, 87Made it possible to specify one specific category as category color,
85if more than one categories are selected. 88if more than one categories are selected.
86 89
87Fixed a bug in saving colors for categories with non-ascii characters. 90Fixed a bug in saving colors for categories with non-ascii characters.
88(Like, e.g. German Umlauts). 91(Like, e.g. German Umlauts).
89Propably you have to set your colors again for those categories. 92Propably you have to set your colors again for those categories.
90 93
91 94
92********** VERSION 2.0.3 ************ 95********** VERSION 2.0.3 ************
93 96
94KO/Pi: 97KO/Pi:
95Added feature for changing alarm settings for many items at once: 98Added feature for changing alarm settings for many items at once:
96Open list view (or search dialog), select the desired items and choose in 99Open list view (or search dialog), select the desired items and choose in
97the popup menu: Set alarm for selected... 100the popup menu: Set alarm for selected...
98 101
99Added to the event/todo viewer the option to send an email to 102Added to the event/todo viewer the option to send an email to
100all attendees or all selected (with RSVP) attendees. 103all attendees or all selected (with RSVP) attendees.
101 104
102Made the week-month mode changing in month view faster. 105Made the week-month mode changing in month view faster.
103 106
104Made month view better useable with keyboard. 107Made month view better useable with keyboard.
105Now TAB key jumps to next cell with an event/todo. 108Now TAB key jumps to next cell with an event/todo.
106Scroll in cell with coursor keys, scroll in time (next week) with 109Scroll in cell with coursor keys, scroll in time (next week) with
107Shift/Control + coursorkeys. 110Shift/Control + coursorkeys.
diff --git a/kmicromail/viewmail.cpp b/kmicromail/viewmail.cpp
index 726f540..685b4e4 100644
--- a/kmicromail/viewmail.cpp
+++ b/kmicromail/viewmail.cpp
@@ -6,192 +6,204 @@
6#include "koprefs.h" 6#include "koprefs.h"
7#include <klocale.h> 7#include <klocale.h>
8#include <kglobal.h> 8#include <kglobal.h>
9#include <kapplication.h> 9#include <kapplication.h>
10 10
11#ifdef MINIKDE_KDIALOG_H 11#ifdef MINIKDE_KDIALOG_H
12#undef MINIKDE_KDIALOG_H 12#undef MINIKDE_KDIALOG_H
13#endif 13#endif
14 14
15#include "composemail.h" 15#include "composemail.h"
16#include "viewmail.h" 16#include "viewmail.h"
17 17
18#include <libmailwrapper/settings.h> 18#include <libmailwrapper/settings.h>
19#include <libmailwrapper/abstractmail.h> 19#include <libmailwrapper/abstractmail.h>
20#include <libmailwrapper/mailtypes.h> 20#include <libmailwrapper/mailtypes.h>
21 21
22#include <qdialog.h> 22#include <qdialog.h>
23 23
24#include <qpe/qpeapplication.h> 24#include <qpe/qpeapplication.h>
25 25
26/* QT */ 26/* QT */
27#include <qtextbrowser.h> 27#include <qtextbrowser.h>
28#include <qmessagebox.h> 28#include <qmessagebox.h>
29#include <qtextstream.h> 29#include <qtextstream.h>
30#include <qaction.h> 30#include <qaction.h>
31#include <qpopupmenu.h> 31#include <qpopupmenu.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qlayout.h> 33#include <qlayout.h>
34 34
35//using namespace Opie::Ui; 35//using namespace Opie::Ui;
36//using namespace Opie::Core; 36//using namespace Opie::Core;
37 37
38AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 38AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
39 const QString&fsize,int num,const QValueList<int>&path) 39 const QString&fsize,int num,const QValueList<int>&path)
40 : QListViewItem(parent,after),_partNum(num) 40 : QListViewItem(parent,after),_partNum(num)
41{ 41{
42 _path=path; 42 _path=path;
43 setText(0, mime); 43 setText(0, mime);
44 setText(1, desc); 44 setText(1, desc);
45 setText(2, file); 45 setText(2, file);
46 setText(3, fsize); 46 setText(3, fsize);
47} 47}
48 48
49AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 49AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
50 const QString&fsize,int num,const QValueList<int>&path) 50 const QString&fsize,int num,const QValueList<int>&path)
51 : QListViewItem(parent,after),_partNum(num) 51 : QListViewItem(parent,after),_partNum(num)
52{ 52{
53 _path=path; 53 _path=path;
54 setText(0, mime); 54 setText(0, mime);
55 setText(1, desc); 55 setText(1, desc);
56 setText(2, file); 56 setText(2, file);
57 setText(3, fsize); 57 setText(3, fsize);
58} 58}
59 59
60bool AttachItem::isParentof(const QValueList<int>&path) 60bool AttachItem::isParentof(const QValueList<int>&path)
61{ 61{
62 /* if not set, then no parent */ 62 /* if not set, then no parent */
63 if (path.count()==0||_path.count()==0) return false; 63 if (path.count()==0||_path.count()==0) return false;
64 /* the parent must have one digit less then a child */ 64 /* the parent must have one digit less then a child */
65 if (path.count()!=_path.count()+1) return false; 65 if (path.count()!=_path.count()+1) return false;
66 for (unsigned int i=0; i < _path.count();++i) 66 for (unsigned int i=0; i < _path.count();++i)
67 { 67 {
68 if (_path[i]!=path[i]) return false; 68 if (_path[i]!=path[i]) return false;
69 } 69 }
70 return true; 70 return true;
71} 71}
72 72
73AttachItem* ViewMail::searchParent(const QValueList<int>&path) 73AttachItem* ViewMail::searchParent(const QValueList<int>&path)
74{ 74{
75 QListViewItemIterator it( attachments ); 75 QListViewItemIterator it( attachments );
76 for ( ; it.current(); ++it ) 76 for ( ; it.current(); ++it )
77 { 77 {
78 AttachItem*ati = (AttachItem*)it.current(); 78 AttachItem*ati = (AttachItem*)it.current();
79 if (ati->isParentof(path)) return ati; 79 if (ati->isParentof(path)) return ati;
80 } 80 }
81 return 0; 81 return 0;
82} 82}
83 83
84AttachItem* ViewMail::lastChild(AttachItem*parent) 84AttachItem* ViewMail::lastChild(AttachItem*parent)
85{ 85{
86 if (!parent) return 0; 86 if (!parent) return 0;
87 AttachItem* item = (AttachItem*)parent->firstChild(); 87 AttachItem* item = (AttachItem*)parent->firstChild();
88 if (!item) return item; 88 if (!item) return item;
89 AttachItem*temp=0; 89 AttachItem*temp=0;
90 while( (temp=(AttachItem*)item->nextSibling())) 90 while( (temp=(AttachItem*)item->nextSibling()))
91 { 91 {
92 item = temp; 92 item = temp;
93 } 93 }
94 return item; 94 return item;
95} 95}
96 96
97void ViewMail::setBody(const RecBodyP&body ) 97void ViewMail::setBody(const RecBodyP&body )
98{ 98{
99 99
100 m_body = body; 100 m_body = body;
101 m_mail[2] = body->Bodytext(); 101 m_mail[2] = body->Bodytext();
102 m_showHtml = KOPrefs::instance()->mViewAsHtml;
103 if ( m_showHtml ) {
104 if ( m_mail[2].find ("<html>",0,false ) > -1 ) {
105 qDebug("html mail ");
106 } else {
107 qDebug("no html mail ");
108 m_showHtml = false;
109 }
110 }
111 showHtml->blockSignals( true );
112 showHtml->setOn( m_showHtml );
113 showHtml->blockSignals( false );
102 // qDebug("********text %s ",m_mail[2].latin1() ); 114 // qDebug("********text %s ",m_mail[2].latin1() );
103 attachbutton->setEnabled(body->Parts().count()>0); 115 attachbutton->setEnabled(body->Parts().count()>0);
104 attachments->setEnabled(body->Parts().count()>0); 116 attachments->setEnabled(body->Parts().count()>0);
105 if (body->Parts().count()==0) 117 if (body->Parts().count()==0)
106 { 118 {
107 return; 119 return;
108 } 120 }
109 AttachItem * curItem=0; 121 AttachItem * curItem=0;
110 AttachItem * parentItem = 0; 122 AttachItem * parentItem = 0;
111 QString type=body->Description()->Type()+"/"+body->Description()->Subtype(); 123 QString type=body->Description()->Type()+"/"+body->Description()->Subtype();
112 QString desc,fsize; 124 QString desc,fsize;
113 double s = body->Description()->Size(); 125 double s = body->Description()->Size();
114 int w; 126 int w;
115 w=0; 127 w=0;
116 128
117 while (s>1024) 129 while (s>1024)
118 { 130 {
119 s/=1024; 131 s/=1024;
120 ++w; 132 ++w;
121 if (w>=2) break; 133 if (w>=2) break;
122 } 134 }
123 135
124 QString q=""; 136 QString q="";
125 switch(w) 137 switch(w)
126 { 138 {
127 case 1: 139 case 1:
128 q="k"; 140 q="k";
129 break; 141 break;
130 case 2: 142 case 2:
131 q="M"; 143 q="M";
132 break; 144 break;
133 default: 145 default:
134 break; 146 break;
135 } 147 }
136 148
137 { 149 {
138 /* I did not found a method to make a CONTENT reset on a QTextStream 150 /* I did not found a method to make a CONTENT reset on a QTextStream
139 so I use this construct that the stream will re-constructed in each 151 so I use this construct that the stream will re-constructed in each
140 loop. To let it work, the textstream is packed into a own area of 152 loop. To let it work, the textstream is packed into a own area of
141 code is it will be destructed after finishing its small job. 153 code is it will be destructed after finishing its small job.
142 */ 154 */
143 QTextOStream o(&fsize); 155 QTextOStream o(&fsize);
144 if (w>0) o.precision(2); else o.precision(0); 156 if (w>0) o.precision(2); else o.precision(0);
145 o.setf(QTextStream::fixed); 157 o.setf(QTextStream::fixed);
146 o << s << " " << q << "Byte"; 158 o << s << " " << q << "Byte";
147 } 159 }
148 160
149 curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body->Description()->Positionlist()); 161 curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body->Description()->Positionlist());
150 QString filename = ""; 162 QString filename = "";
151 163
152 for (unsigned int i = 0; i < body->Parts().count();++i) 164 for (unsigned int i = 0; i < body->Parts().count();++i)
153 { 165 {
154 filename = ""; 166 filename = "";
155 type = body->Parts()[i]->Type()+"/"+body->Parts()[i]->Subtype(); 167 type = body->Parts()[i]->Type()+"/"+body->Parts()[i]->Subtype();
156 part_plist_t::ConstIterator it = body->Parts()[i]->Parameters().begin(); 168 part_plist_t::ConstIterator it = body->Parts()[i]->Parameters().begin();
157 for (;it!=body->Parts()[i]->Parameters().end();++it) 169 for (;it!=body->Parts()[i]->Parameters().end();++it)
158 { 170 {
159 if (it.key().lower()=="name") 171 if (it.key().lower()=="name")
160 { 172 {
161 filename=it.data(); 173 filename=it.data();
162 } 174 }
163 } 175 }
164 s = body->Parts()[i]->Size(); 176 s = body->Parts()[i]->Size();
165 w = 0; 177 w = 0;
166 while (s>1024) 178 while (s>1024)
167 { 179 {
168 s/=1024; 180 s/=1024;
169 ++w; 181 ++w;
170 if (w>=2) break; 182 if (w>=2) break;
171 } 183 }
172 switch(w) 184 switch(w)
173 { 185 {
174 case 1: 186 case 1:
175 q="k"; 187 q="k";
176 break; 188 break;
177 case 2: 189 case 2:
178 q="M"; 190 q="M";
179 break; 191 break;
180 default: 192 default:
181 q=""; 193 q="";
182 break; 194 break;
183 } 195 }
184 QTextOStream o(&fsize); 196 QTextOStream o(&fsize);
185 if (w>0) o.precision(2); else o.precision(0); 197 if (w>0) o.precision(2); else o.precision(0);
186 o.setf(QTextStream::fixed); 198 o.setf(QTextStream::fixed);
187 o << s << " " << q << "Byte"; 199 o << s << " " << q << "Byte";
188 desc = body->Parts()[i]->Description(); 200 desc = body->Parts()[i]->Description();
189 parentItem = searchParent(body->Parts()[i]->Positionlist()); 201 parentItem = searchParent(body->Parts()[i]->Positionlist());
190 if (parentItem) 202 if (parentItem)
191 { 203 {
192 AttachItem*temp = lastChild(parentItem); 204 AttachItem*temp = lastChild(parentItem);
193 if (temp) curItem = temp; 205 if (temp) curItem = temp;
194 curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist()); 206 curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist());
195 attachments->setRootIsDecorated(true); 207 attachments->setRootIsDecorated(true);
196 curItem = parentItem; 208 curItem = parentItem;
197 } 209 }
@@ -238,213 +250,220 @@ void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int
238 return; 250 return;
239 } 251 }
240 QPopupMenu *menu = new QPopupMenu(); 252 QPopupMenu *menu = new QPopupMenu();
241 int ret=0; 253 int ret=0;
242 254
243 if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" ) 255 if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" )
244 { 256 {
245 menu->insertItem( i18n( "Show Text" ), 1 ); 257 menu->insertItem( i18n( "Show Text" ), 1 );
246 } 258 }
247 if (item->text(0).left(6)=="image/") { 259 if (item->text(0).left(6)=="image/") {
248 menu->insertItem(i18n("Display image preview"),2); 260 menu->insertItem(i18n("Display image preview"),2);
249 } 261 }
250 menu->insertItem( i18n( "Save Attachment" ), 0 ); 262 menu->insertItem( i18n( "Save Attachment" ), 0 );
251 menu->insertSeparator(1); 263 menu->insertSeparator(1);
252 264
253 ret = menu->exec( point, 0 ); 265 ret = menu->exec( point, 0 );
254 266
255 switch(ret) 267 switch(ret)
256 { 268 {
257 case 0: 269 case 0:
258 { 270 {
259 //MimeTypes types; 271 //MimeTypes types;
260 //types.insert( "all", "*" ); 272 //types.insert( "all", "*" );
261 QString str = KFileDialog::getSaveFileName( "/", item->text( 2 ), this ); 273 QString str = KFileDialog::getSaveFileName( "/", item->text( 2 ), this );
262 274
263 if( !str.isEmpty() ) 275 if( !str.isEmpty() )
264 { 276 {
265 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); 277 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] );
266 if (content) 278 if (content)
267 { 279 {
268 QFile output(str); 280 QFile output(str);
269 output.open(IO_WriteOnly); 281 output.open(IO_WriteOnly);
270 output.writeBlock(content->Content(),content->Length()); 282 output.writeBlock(content->Content(),content->Length());
271 output.close(); 283 output.close();
272 delete content; 284 delete content;
273 } 285 }
274 } 286 }
275 } 287 }
276 break ; 288 break ;
277 289
278 case 2: 290 case 2:
279 { 291 {
280#ifdef DESKTOP_VERSION 292#ifdef DESKTOP_VERSION
281 QString tmpfile = locateLocal( "tmp", "opiemail-image"); 293 QString tmpfile = locateLocal( "tmp", "opiemail-image");
282#else 294#else
283 QString tmpfile = "/tmp/opiemail-image"; 295 QString tmpfile = "/tmp/opiemail-image";
284#endif 296#endif
285 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); 297 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] );
286 if (content) { 298 if (content) {
287 QFile output(tmpfile); 299 QFile output(tmpfile);
288 output.open(IO_WriteOnly); 300 output.open(IO_WriteOnly);
289 output.writeBlock(content->Content(),content->Length()); 301 output.writeBlock(content->Content(),content->Length());
290 output.close(); 302 output.close();
291 delete content; 303 delete content;
292 MailImageDlg iview(""); 304 MailImageDlg iview("");
293 iview.setName(tmpfile); 305 iview.setName(tmpfile);
294 KApplication::execDialog(&iview); 306 KApplication::execDialog(&iview);
295 output.remove(); 307 output.remove();
296 } 308 }
297 } 309 }
298 break; 310 break;
299 case 1: 311 case 1:
300 if ( ( ( AttachItem* )item )->Partnumber() == -1 ) 312 if ( ( ( AttachItem* )item )->Partnumber() == -1 )
301 { 313 {
302 setText(); 314 setText();
303 } 315 }
304 else 316 else
305 { 317 {
306 if ( m_recMail->Wrapper() != 0l ) 318 if ( m_recMail->Wrapper() != 0l )
307 { // make sure that there is a wrapper , even after delete or simular actions 319 { // make sure that there is a wrapper , even after delete or simular actions
308 browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); 320 browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) );
309 } 321 }
310 } 322 }
311 break; 323 break;
312 } 324 }
313 delete menu; 325 delete menu;
314} 326}
315 327
316 328
317void ViewMail::setMail(const RecMailP&mail ) 329void ViewMail::setMail(const RecMailP&mail )
318{ 330{
319 331
320 m_recMail = mail; 332 m_recMail = mail;
321 333
322 m_mail[0] = mail->getFrom(); 334 m_mail[0] = mail->getFrom();
323 m_mail[1] = mail->getSubject(); 335 m_mail[1] = mail->getSubject();
324 m_mail[3] = mail->getDate(); 336 m_mail[3] = mail->getDate();
325 m_mail[4] = mail->Msgid(); 337 m_mail[4] = mail->Msgid();
326 338
327 m_mail2[0] = mail->To(); 339 m_mail2[0] = mail->To();
328 m_mail2[1] = mail->CC(); 340 m_mail2[1] = mail->CC();
329 m_mail2[2] = mail->Bcc(); 341 m_mail2[2] = mail->Bcc();
330 342
331 setText(); 343 setText();
332} 344}
333 345
334 346void ViewMail::slotNextMail()
347{
348 nextMail->blockSignals( true );
349 setCaption(i18n("Displaying next mail...please wait!"));
350 qApp->processEvents();
351 emit showNextMail(this);
352 nextMail->blockSignals( false );
353}
335 354
336ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) 355ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl)
337 : ViewMailBase(parent, name, fl), _inLoop(false) 356 : ViewMailBase(parent, name, fl), _inLoop(false)
338{ 357{
339 m_gotBody = false; 358 m_gotBody = false;
340 deleted = false; 359 deleted = false;
341 sourceOn = false; 360 sourceOn = false;
361 readConfig();
342 connect( reply, SIGNAL(activated()), SLOT(slotReply())); 362 connect( reply, SIGNAL(activated()), SLOT(slotReply()));
343 connect( forward, SIGNAL(activated()), SLOT(slotForward())); 363 connect( forward, SIGNAL(activated()), SLOT(slotForward()));
344 connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) ); 364 connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) );
345 connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) ); 365 connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) );
346 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) ); 366 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) );
347 connect( nextMail, SIGNAL( activated() ), SLOT( slotNextMail() ) ); 367 connect( nextMail, SIGNAL( activated() ), SLOT( slotNextMail() ) );
348 connect( viewSource, SIGNAL( activated() ), SLOT( slotViewSource() ) ); 368 connect( viewSource, SIGNAL( activated() ), SLOT( slotViewSource() ) );
349 connect( downloadMail, SIGNAL( activated() ), SIGNAL( signalDownloadMail() ) ); 369 connect( downloadMail, SIGNAL( activated() ), SIGNAL( signalDownloadMail() ) );
350 370
351 attachments->setEnabled(m_gotBody); 371 attachments->setEnabled(m_gotBody);
352 connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) ); 372 connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) );
353 373
354 readConfig();
355 attachments->setSorting(-1); 374 attachments->setSorting(-1);
356} 375}
357 376
358void ViewMail::readConfig() 377void ViewMail::readConfig()
359{ 378{
360 379
361 setFont ( KOPrefs::instance()->mReadFont ); 380 setFont ( KOPrefs::instance()->mReadFont );
362 m_showHtml = KOPrefs::instance()->mViewAsHtml; 381 m_showHtml = KOPrefs::instance()->mViewAsHtml;
363 showHtml->setOn( m_showHtml ); 382 showHtml->setOn( m_showHtml );
364} 383}
365 384
366void ViewMail::setText() 385void ViewMail::setText()
367{ 386{
368 387
369 viewSource->setText(i18n("View Source")); 388 viewSource->setText(i18n("View Source"));
370 sourceOn = false; 389 sourceOn = false;
371 QString toString; 390 QString toString;
372 QString ccString; 391 QString ccString;
373 QString bccString; 392 QString bccString;
374 393
375 394
376 toString = m_mail2[0].join(","); 395 toString = m_mail2[0].join(",");
377 ccString = m_mail2[1].join(","); 396 ccString = m_mail2[1].join(",");
378 bccString = m_mail2[2].join(","); 397 bccString = m_mail2[2].join(",");
379 398
380#ifdef DESKTOP_VERSION 399#ifdef DESKTOP_VERSION
381 setCaption( i18n("Size: ")+m_recMail->MsgsizeString()+" - "+i18n("E-Mail by %1").arg( m_mail[0] ) ); 400 setCaption( i18n("Size: ")+m_recMail->MsgsizeString()+" - "+i18n("E-Mail by %1").arg( m_mail[0] ) );
382#else 401#else
383 setCaption( m_recMail->MsgsizeString()+" - "+m_mail[0] ); 402 setCaption( m_recMail->MsgsizeString()+" - "+m_mail[0] );
384#endif 403#endif
385 404
386 m_mailHtml = "<html><body>" 405 m_mailHtml = "<html><body>"
387 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" 406 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>"
388 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" 407 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>"
389 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" 408 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>"
390 "<b>" + i18n( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" 409 "<b>" + i18n( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>"
391 "<b>" + i18n( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + 410 "<b>" + i18n( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" +
392 i18n( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" 411 i18n( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>"
393 "<b>" + i18n( "Date" ) + ": </b> " + m_mail[3] + 412 "<b>" + i18n( "Date" ) + ": </b> " + m_mail[3] +
394 "</td></tr></table><font>"; 413 "</td></tr></table><font>";
395 414
396 if ( !m_showHtml ) 415 if ( !m_showHtml )
397 { 416 {
398 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); 417 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" );
399 } 418 }
400 else 419 else
401 { 420 {
402 browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); 421 browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" );
403 } 422 }
404 // remove later in favor of a real handling 423 // remove later in favor of a real handling
405 m_gotBody = true; 424 m_gotBody = true;
406} 425}
407 426
408 427
409ViewMail::~ViewMail() 428ViewMail::~ViewMail()
410{ 429{
411 m_recMail->Wrapper()->cleanMimeCache(); 430 m_recMail->Wrapper()->cleanMimeCache();
412 hide(); 431 hide();
413} 432}
414 433
415void ViewMail::hide() 434void ViewMail::hide()
416{ 435{
417 QWidget::hide(); 436 QWidget::hide();
418 437
419 if (_inLoop) 438 if (_inLoop)
420 { 439 {
421 _inLoop = false; 440 _inLoop = false;
422 qApp->exit_loop(); 441 qApp->exit_loop();
423 442
424 } 443 }
425 444
426} 445}
427 446
428void ViewMail::exec() 447void ViewMail::exec()
429{ 448{
430 show(); 449 show();
431 450
432 if (!_inLoop) 451 if (!_inLoop)
433 { 452 {
434 _inLoop = true; 453 _inLoop = true;
435 qApp->enter_loop(); 454 qApp->enter_loop();
436 } 455 }
437 456
438} 457}
439 458
440QString ViewMail::deHtml(const QString &string) 459QString ViewMail::deHtml(const QString &string)
441{ 460{
442 QString string_ = string; 461 QString string_ = string;
443 string_.replace(QRegExp("&"), "&amp;"); 462 string_.replace(QRegExp("&"), "&amp;");
444 string_.replace(QRegExp("<"), "&lt;"); 463 string_.replace(QRegExp("<"), "&lt;");
445 string_.replace(QRegExp(">"), "&gt;"); 464 string_.replace(QRegExp(">"), "&gt;");
446 string_.replace(QRegExp("\\n"), "<br>"); 465 string_.replace(QRegExp("\\n"), "<br>");
447 return string_; 466 return string_;
448} 467}
449 468
450void ViewMail::slotReply() 469void ViewMail::slotReply()
diff --git a/kmicromail/viewmail.h b/kmicromail/viewmail.h
index fc5edcf..bb5b685 100644
--- a/kmicromail/viewmail.h
+++ b/kmicromail/viewmail.h
@@ -1,93 +1,93 @@
1#ifndef VIEWMAIL_H 1#ifndef VIEWMAIL_H
2#define VIEWMAIL_H 2#define VIEWMAIL_H
3 3
4#include "viewmailbase.h" 4#include "viewmailbase.h"
5#include <libmailwrapper/mailtypes.h> 5#include <libmailwrapper/mailtypes.h>
6 6
7#include <qdialog.h> 7#include <qdialog.h>
8#include <qapplication.h> 8#include <qapplication.h>
9 9
10#include <qlistview.h> 10#include <qlistview.h>
11#include <qmap.h> 11#include <qmap.h>
12#include <klocale.h> 12#include <klocale.h>
13#include <qstringlist.h> 13#include <qstringlist.h>
14#include <qvaluelist.h> 14#include <qvaluelist.h>
15 15
16//namespace Opie { namespace MM { class OImageScrollView; } } 16//namespace Opie { namespace MM { class OImageScrollView; } }
17 17
18class AttachItem : public QListViewItem 18class AttachItem : public QListViewItem
19{ 19{
20public: 20public:
21 AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 21 AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
22 const QString&fsize,int num,const QValueList<int>&path); 22 const QString&fsize,int num,const QValueList<int>&path);
23 AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 23 AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
24 const QString&fsize,int num,const QValueList<int>&path); 24 const QString&fsize,int num,const QValueList<int>&path);
25 int Partnumber() { return _partNum; } 25 int Partnumber() { return _partNum; }
26 bool isParentof(const QValueList<int>&path); 26 bool isParentof(const QValueList<int>&path);
27 27
28private: 28private:
29 int _partNum; 29 int _partNum;
30 /* needed for a better display of attachments */ 30 /* needed for a better display of attachments */
31 QValueList<int> _path; 31 QValueList<int> _path;
32}; 32};
33 33
34class ViewMail : public ViewMailBase 34class ViewMail : public ViewMailBase
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37 37
38public: 38public:
39 ViewMail( QWidget *parent = 0, const char *name = 0, WFlags fl = 0); 39 ViewMail( QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
40 ~ViewMail(); 40 ~ViewMail();
41 41
42 void hide(); 42 void hide();
43 void exec(); 43 void exec();
44 void setMail(const RecMailP&mail ); 44 void setMail(const RecMailP&mail );
45 void setBody(const RecBodyP&body); 45 void setBody(const RecBodyP&body);
46 bool deleted; 46 bool deleted;
47 signals: 47 signals:
48 void showNextMail(ViewMail*); 48 void showNextMail(ViewMail*);
49 void deleteAndDisplayNextMail(ViewMail *); 49 void deleteAndDisplayNextMail(ViewMail *);
50 void signalDownloadMail(); 50 void signalDownloadMail();
51protected: 51protected:
52 QString deHtml(const QString &string); 52 QString deHtml(const QString &string);
53 AttachItem* searchParent(const QValueList<int>&path); 53 AttachItem* searchParent(const QValueList<int>&path);
54 AttachItem* lastChild(AttachItem*parent); 54 AttachItem* lastChild(AttachItem*parent);
55 55
56protected slots: 56protected slots:
57 void slotNextMail() { setCaption(i18n("Displaying next mail...please wait!")); qApp->processEvents();emit showNextMail(this); }; 57 void slotNextMail();
58 void slotReply(); 58 void slotReply();
59 void slotForward(); 59 void slotForward();
60 void setText(); 60 void setText();
61 void slotItemClicked( QListViewItem * item , const QPoint & point, int c ); 61 void slotItemClicked( QListViewItem * item , const QPoint & point, int c );
62 void slotDeleteMail( ); 62 void slotDeleteMail( );
63 void slotShowHtml( bool ); 63 void slotShowHtml( bool );
64 void slotViewSource(); 64 void slotViewSource();
65 65
66private: 66private:
67 void readConfig(); 67 void readConfig();
68 bool sourceOn;; 68 bool sourceOn;;
69 bool _inLoop; 69 bool _inLoop;
70 QString m_mailHtml; 70 QString m_mailHtml;
71 bool m_gotBody; 71 bool m_gotBody;
72 RecBodyP m_body; 72 RecBodyP m_body;
73 RecMailP m_recMail; 73 RecMailP m_recMail;
74 bool m_showHtml; 74 bool m_showHtml;
75 75
76 // 0 from 1 subject 2 bodytext 3 date 76 // 0 from 1 subject 2 bodytext 3 date
77 QMap <int,QString> m_mail; 77 QMap <int,QString> m_mail;
78 // 0 to 1 cc 2 bcc 78 // 0 to 1 cc 2 bcc
79 QMap <int,QStringList> m_mail2; 79 QMap <int,QStringList> m_mail2;
80}; 80};
81 81
82class MailImageDlg:public QDialog 82class MailImageDlg:public QDialog
83{ 83{
84 Q_OBJECT 84 Q_OBJECT
85public: 85public:
86 MailImageDlg(const QString&,QWidget *parent = 0, const char *name = 0, bool modal = true, WFlags f = 0); 86 MailImageDlg(const QString&,QWidget *parent = 0, const char *name = 0, bool modal = true, WFlags f = 0);
87 ~MailImageDlg(); 87 ~MailImageDlg();
88 void setName(const QString&); 88 void setName(const QString&);
89protected: 89protected:
90 //Opie::MM::OImageScrollView*m_imageview; 90 //Opie::MM::OImageScrollView*m_imageview;
91}; 91};
92 92
93#endif 93#endif