summaryrefslogtreecommitdiff
path: root/noncore/net/mail/viewmail.cpp
Unidiff
Diffstat (limited to 'noncore/net/mail/viewmail.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/viewmail.cpp94
1 files changed, 81 insertions, 13 deletions
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp
index 7b8494d..39c9820 100644
--- a/noncore/net/mail/viewmail.cpp
+++ b/noncore/net/mail/viewmail.cpp
@@ -1,36 +1,104 @@
1#include <qtextbrowser.h> 1#include <qtextbrowser.h>
2#include <qmessagebox.h> 2#include <qmessagebox.h>
3#include <qtextstream.h>
3#include <qaction.h> 4#include <qaction.h>
4#include <qapplication.h> 5#include <qapplication.h>
5 6
6#include "settings.h" 7#include "settings.h"
7#include "composemail.h" 8#include "composemail.h"
8#include "viewmail.h" 9#include "viewmail.h"
9 10
10AttachItem::AttachItem(QListView *parent, AttachItemStore &attachItemStore) 11AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&file,const QString&desc,int num)
11 : QListViewItem(parent), _attachItemStore(attachItemStore) 12 : QListViewItem(parent,after),_partNum(num)
12{ 13{
13 setText(0, _attachItemStore.mimeType()); 14 setText(0, mime);
14 setText(1, _attachItemStore.fileName()); 15 setText(1, file);
15 setText(2, _attachItemStore.description()); 16 setText(2, desc);
16}
17
18AttachItem::AttachItem(QListViewItem *parent, AttachItemStore &attachItemStore)
19 : QListViewItem(parent), _attachItemStore(attachItemStore)
20{
21 setText(0, _attachItemStore.mimeType());
22 setText(1, _attachItemStore.fileName());
23 setText(2, _attachItemStore.description());
24} 17}
25 18
26 19
27void ViewMail::setBody( RecBody body ) { 20void ViewMail::setBody( RecBody body ) {
28 21
29m_mail[2] = body.Bodytext(); 22m_mail[2] = body.Bodytext();
23attachbutton->setEnabled(body.Parts().count()>0);
24attachments->setEnabled(body.Parts().count()>0);
25if (body.Parts().count()==0) {
26 return;
27}
28AttachItem * curItem=0;
29QString type=body.Description().Type()+"/"+body.Description().Subtype();
30QString desc;
31double s = body.Description().Size();
32int w;
33w=0;
34
35while (s>1024) {
36 s/=1024;
37 ++w;
38 if (w>=2) break;
39}
40
41QString q="";
42switch(w) {
43case 1:
44 q="k";
45 break;
46case 2:
47 q="M";
48 break;
49default:
50 break;
51}
30 52
53{
54 /* I did not found a method to make a CONTENT reset on a QTextStream
55 so I use this construct that the stream will re-constructed in each
56 loop. To let it work, the textstream is packed into a own area of
57 code is it will be destructed after finishing its small job.
58 */
59 QTextOStream o(&desc);
60 if (w>0) o.precision(2); else o.precision(0);
61 o.setf(QTextStream::fixed);
62 o << s << " " << q << "Byte";
63}
64
65curItem=new AttachItem(attachments,curItem,type,"Mailbody",desc,-1);
66QString filename = "";
67for (unsigned int i = 0; i < body.Parts().count();++i) {
68 type = body.Parts()[i].Type()+"/"+body.Parts()[i].Subtype();
69 part_plist_t::ConstIterator it = body.Parts()[i].Parameters().begin();
70 for (;it!=body.Parts()[i].Parameters().end();++it) {
71 if (it.key().lower()=="name") {
72 filename=it.data();
73 }
74 }
75 s = body.Parts()[i].Size();
76 w = 0;
77 while (s>1024) {
78 s/=1024;
79 ++w;
80 if (w>=2) break;
81 }
82 switch(w) {
83 case 1:
84 q="k";
85 break;
86 case 2:
87 q="M";
88 break;
89 default:
90 q="";
91 break;
92 }
93 QTextOStream o(&desc);
94 if (w>0) o.precision(2); else o.precision(0);
95 o.setf(QTextStream::fixed);
96 o << s << " " << q << "Byte";
97 curItem=new AttachItem(attachments,curItem,type,filename,desc,i);
98}
31} 99}
32 100
33void ViewMail::setMail( RecMail mail ) { 101void ViewMail::setMail( RecMail mail ) {
34 102
35m_mail[0] = mail.getFrom(); 103m_mail[0] = mail.getFrom();
36m_mail[1] = mail.getSubject(); 104m_mail[1] = mail.getSubject();