summaryrefslogtreecommitdiff
authoralwin <alwin>2004-01-03 13:04:52 (UTC)
committer alwin <alwin>2004-01-03 13:04:52 (UTC)
commit22564b62e15c1ea3feada5b2f9b6ec4d98b40c6b (patch) (unidiff)
tree85847776be6743270b18f5e1df9fa6451288f7a6
parent452aac36b77ed1f7e6db3a7952028bf6027e54b6 (diff)
downloadopie-22564b62e15c1ea3feada5b2f9b6ec4d98b40c6b.zip
opie-22564b62e15c1ea3feada5b2f9b6ec4d98b40c6b.tar.gz
opie-22564b62e15c1ea3feada5b2f9b6ec4d98b40c6b.tar.bz2
some more display beauty
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/viewmail.cpp14
-rw-r--r--noncore/net/mail/viewmail.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp
index d4c5150..ed77eb5 100644
--- a/noncore/net/mail/viewmail.cpp
+++ b/noncore/net/mail/viewmail.cpp
@@ -41,48 +41,60 @@ AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QStrin
41} 41}
42 42
43bool AttachItem::isParentof(const QValueList<int>&path) 43bool AttachItem::isParentof(const QValueList<int>&path)
44{ 44{
45 /* if not set, then no parent */ 45 /* if not set, then no parent */
46 if (path.count()==0||_path.count()==0) return false; 46 if (path.count()==0||_path.count()==0) return false;
47 /* the parent must have one digit less then a child */ 47 /* the parent must have one digit less then a child */
48 if (path.count()!=_path.count()+1) return false; 48 if (path.count()!=_path.count()+1) return false;
49 for (unsigned int i=0; i < _path.count();++i) { 49 for (unsigned int i=0; i < _path.count();++i) {
50 if (_path[i]!=path[i]) return false; 50 if (_path[i]!=path[i]) return false;
51 } 51 }
52 return true; 52 return true;
53} 53}
54 54
55AttachItem* ViewMail::searchParent(const QValueList<int>&path) 55AttachItem* ViewMail::searchParent(const QValueList<int>&path)
56{ 56{
57 QListViewItemIterator it( attachments ); 57 QListViewItemIterator it( attachments );
58 for ( ; it.current(); ++it ) { 58 for ( ; it.current(); ++it ) {
59 AttachItem*ati = (AttachItem*)it.current(); 59 AttachItem*ati = (AttachItem*)it.current();
60 if (ati->isParentof(path)) return ati; 60 if (ati->isParentof(path)) return ati;
61 } 61 }
62 return 0; 62 return 0;
63} 63}
64 64
65AttachItem* ViewMail::lastChild(AttachItem*parent)
66{
67 if (!parent) return 0;
68 AttachItem* item = (AttachItem*)parent->firstChild();
69 if (!item) return item;
70 AttachItem*temp=0;
71 while( (temp=(AttachItem*)item->nextSibling())) {
72 item = temp;
73 }
74 return item;
75}
76
65void ViewMail::setBody( RecBody body ) { 77void ViewMail::setBody( RecBody body ) {
66 78
67m_body = body; 79m_body = body;
68m_mail[2] = body.Bodytext(); 80m_mail[2] = body.Bodytext();
69attachbutton->setEnabled(body.Parts().count()>0); 81attachbutton->setEnabled(body.Parts().count()>0);
70attachments->setEnabled(body.Parts().count()>0); 82attachments->setEnabled(body.Parts().count()>0);
71if (body.Parts().count()==0) { 83if (body.Parts().count()==0) {
72 return; 84 return;
73} 85}
74AttachItem * curItem=0; 86AttachItem * curItem=0;
75AttachItem * parentItem = 0; 87AttachItem * parentItem = 0;
76QString type=body.Description().Type()+"/"+body.Description().Subtype(); 88QString type=body.Description().Type()+"/"+body.Description().Subtype();
77QString desc,fsize; 89QString desc,fsize;
78double s = body.Description().Size(); 90double s = body.Description().Size();
79int w; 91int w;
80w=0; 92w=0;
81 93
82while (s>1024) { 94while (s>1024) {
83 s/=1024; 95 s/=1024;
84 ++w; 96 ++w;
85 if (w>=2) break; 97 if (w>=2) break;
86} 98}
87 99
88QString q=""; 100QString q="";
@@ -125,48 +137,50 @@ for (unsigned int i = 0; i < body.Parts().count();++i) {
125 w = 0; 137 w = 0;
126 while (s>1024) { 138 while (s>1024) {
127 s/=1024; 139 s/=1024;
128 ++w; 140 ++w;
129 if (w>=2) break; 141 if (w>=2) break;
130 } 142 }
131 switch(w) { 143 switch(w) {
132 case 1: 144 case 1:
133 q="k"; 145 q="k";
134 break; 146 break;
135 case 2: 147 case 2:
136 q="M"; 148 q="M";
137 break; 149 break;
138 default: 150 default:
139 q=""; 151 q="";
140 break; 152 break;
141 } 153 }
142 QTextOStream o(&fsize); 154 QTextOStream o(&fsize);
143 if (w>0) o.precision(2); else o.precision(0); 155 if (w>0) o.precision(2); else o.precision(0);
144 o.setf(QTextStream::fixed); 156 o.setf(QTextStream::fixed);
145 o << s << " " << q << "Byte"; 157 o << s << " " << q << "Byte";
146 desc = body.Parts()[i].Description(); 158 desc = body.Parts()[i].Description();
147 parentItem = searchParent(body.Parts()[i].Positionlist()); 159 parentItem = searchParent(body.Parts()[i].Positionlist());
148 if (parentItem) { 160 if (parentItem) {
161 AttachItem*temp = lastChild(parentItem);
162 if (temp) curItem = temp;
149 curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body.Parts()[i].Positionlist()); 163 curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body.Parts()[i].Positionlist());
150 attachments->setRootIsDecorated(true); 164 attachments->setRootIsDecorated(true);
151 curItem = parentItem; 165 curItem = parentItem;
152 } else { 166 } else {
153 curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body.Parts()[i].Positionlist()); 167 curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body.Parts()[i].Positionlist());
154 } 168 }
155} 169}
156} 170}
157 171
158 172
159void ViewMail::slotShowHtml( bool state ) { 173void ViewMail::slotShowHtml( bool state ) {
160 m_showHtml = state; 174 m_showHtml = state;
161 setText(); 175 setText();
162} 176}
163 177
164void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) { 178void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) {
165 if (!item ) 179 if (!item )
166 return; 180 return;
167 181
168 if ( ( ( AttachItem* )item )->Partnumber() == -1 ) { 182 if ( ( ( AttachItem* )item )->Partnumber() == -1 ) {
169 setText(); 183 setText();
170 return; 184 return;
171 } 185 }
172 QPopupMenu *menu = new QPopupMenu(); 186 QPopupMenu *menu = new QPopupMenu();
diff --git a/noncore/net/mail/viewmail.h b/noncore/net/mail/viewmail.h
index b3d3b4e..29681cc 100644
--- a/noncore/net/mail/viewmail.h
+++ b/noncore/net/mail/viewmail.h
@@ -21,48 +21,49 @@ public:
21 21
22private: 22private:
23 int _partNum; 23 int _partNum;
24 /* needed for a better display of attachments */ 24 /* needed for a better display of attachments */
25 QValueList<int> _path; 25 QValueList<int> _path;
26}; 26};
27 27
28class ViewMail : public ViewMailBase 28class ViewMail : public ViewMailBase
29{ 29{
30 Q_OBJECT 30 Q_OBJECT
31 31
32public: 32public:
33 ViewMail( QWidget *parent = 0, const char *name = 0, WFlags fl = Qt::WType_Modal); 33 ViewMail( QWidget *parent = 0, const char *name = 0, WFlags fl = Qt::WType_Modal);
34 ~ViewMail(); 34 ~ViewMail();
35 35
36 void hide(); 36 void hide();
37 void exec(); 37 void exec();
38 void setMail( RecMail mail ); 38 void setMail( RecMail mail );
39 void setBody( RecBody body ); 39 void setBody( RecBody body );
40 bool deleted; 40 bool deleted;
41 41
42protected: 42protected:
43 QString deHtml(const QString &string); 43 QString deHtml(const QString &string);
44 AttachItem* searchParent(const QValueList<int>&path); 44 AttachItem* searchParent(const QValueList<int>&path);
45 AttachItem* lastChild(AttachItem*parent);
45 46
46protected slots: 47protected slots:
47 void slotReply(); 48 void slotReply();
48 void slotForward(); 49 void slotForward();
49 void setText(); 50 void setText();
50 void slotItemClicked( QListViewItem * item , const QPoint & point, int c ); 51 void slotItemClicked( QListViewItem * item , const QPoint & point, int c );
51 void slotDeleteMail( ); 52 void slotDeleteMail( );
52 void slotShowHtml( bool ); 53 void slotShowHtml( bool );
53 54
54private: 55private:
55 void readConfig(); 56 void readConfig();
56 57
57 bool _inLoop; 58 bool _inLoop;
58 QString m_mailHtml; 59 QString m_mailHtml;
59 bool m_gotBody; 60 bool m_gotBody;
60 RecBody m_body; 61 RecBody m_body;
61 RecMail m_recMail; 62 RecMail m_recMail;
62 bool m_showHtml; 63 bool m_showHtml;
63 64
64 // 0 from 1 subject 2 bodytext 3 date 65 // 0 from 1 subject 2 bodytext 3 date
65 QMap <int,QString> m_mail; 66 QMap <int,QString> m_mail;
66 // 0 to 1 cc 2 bcc 67 // 0 to 1 cc 2 bcc
67 QMap <int,QStringList> m_mail2; 68 QMap <int,QStringList> m_mail2;
68 69