summaryrefslogtreecommitdiff
authoralwin <alwin>2003-12-17 22:14:05 (UTC)
committer alwin <alwin>2003-12-17 22:14:05 (UTC)
commiteccc6a6362ab655b14c91a65a1cd4c89f39bd1e6 (patch) (unidiff)
tree30bef45970fea14e13d46a7fd026ef80c4a9b7d0
parent0b9db8cd39412de3bdc26e8f451b0475a149c903 (diff)
downloadopie-eccc6a6362ab655b14c91a65a1cd4c89f39bd1e6.zip
opie-eccc6a6362ab655b14c91a65a1cd4c89f39bd1e6.tar.gz
opie-eccc6a6362ab655b14c91a65a1cd4c89f39bd1e6.tar.bz2
folder tree will generate better and real.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountview.cpp40
-rw-r--r--noncore/net/mail/accountview.h6
2 files changed, 32 insertions, 14 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index bc13336..71a0d74 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -102,12 +102,33 @@ IMAPviewItem::~IMAPviewItem()
102 102
103AbstractMail *IMAPviewItem::getWrapper() 103AbstractMail *IMAPviewItem::getWrapper()
104{ 104{
105 return wrapper; 105 return wrapper;
106} 106}
107 107
108IMAPfolderItem*IMAPviewItem::findSubItem(const QString&path,IMAPfolderItem*start)
109{
110 IMAPfolderItem*pitem,*sitem;
111 if (!start) pitem = (IMAPfolderItem*)firstChild();
112 else pitem = (IMAPfolderItem*)start->firstChild();
113 while (pitem) {
114 if (pitem->matchName(path)) {
115 break;
116 }
117 if (pitem->childCount()>0) {
118 sitem = findSubItem(path,pitem);
119 if (sitem) {
120 pitem = sitem;
121 break;
122 }
123 }
124 pitem=(IMAPfolderItem*)pitem->nextSibling();
125 }
126 return pitem;
127}
128
108void IMAPviewItem::refresh(QList<RecMail>&) 129void IMAPviewItem::refresh(QList<RecMail>&)
109{ 130{
110 if (childCount()>0) return; 131 if (childCount()>0) return;
111 QList<Folder> *folders = wrapper->listFolders(); 132 QList<Folder> *folders = wrapper->listFolders();
112 133
113 QListViewItem *child = firstChild(); 134 QListViewItem *child = firstChild();
@@ -117,50 +138,41 @@ void IMAPviewItem::refresh(QList<RecMail>&)
117 delete tmp; 138 delete tmp;
118 } 139 }
119 140
120 Folder *it; 141 Folder *it;
121 QListViewItem*item = 0; 142 QListViewItem*item = 0;
122 QListViewItem*titem = 0; 143 QListViewItem*titem = 0;
123 QListViewItem*inboxitem = 0;
124 QString fname,del,search; 144 QString fname,del,search;
125 int pos; 145 int pos;
126 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 146 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
127 folders->setAutoDelete(false); 147 folders->setAutoDelete(false);
128 148
129 for ( it = folders->first(); it; it = folders->next() ) { 149 for ( it = folders->first(); it; it = folders->next() ) {
130 if (it->getDisplayName().lower()=="inbox") { 150 if (it->getDisplayName().lower()=="inbox") {
131 inboxitem = new IMAPfolderItem( it, this , item ); 151 item = new IMAPfolderItem( it, this , item );
132 folders->remove(it); 152 folders->remove(it);
133 qDebug("inbox found"); 153 qDebug("inbox found");
134 break; 154 break;
135 } 155 }
136 } 156 }
137
138 for ( it = folders->first(); it; it = folders->next() ) { 157 for ( it = folders->first(); it; it = folders->next() ) {
139 fname = it->getDisplayName(); 158 fname = it->getDisplayName();
140 pos = fname.findRev(it->Separator()); 159 pos = fname.findRev(it->Separator());
141 if (pos != -1) { 160 if (pos != -1) {
142 fname = fname.left(pos); 161 fname = fname.left(pos);
143 qDebug(fname);
144 }
145 IMAPfolderItem*pitem = (IMAPfolderItem*)firstChild();
146 while (pitem) {
147 if (pitem->matchName(fname)) {
148 break;
149 }
150 pitem=(IMAPfolderItem*)pitem->nextSibling();
151 } 162 }
163 IMAPfolderItem*pitem = findSubItem(fname);
152 if (pitem) { 164 if (pitem) {
153 titem = item; 165 titem = item;
154 item = new IMAPfolderItem(it,pitem,item,this); 166 item = new IMAPfolderItem(it,pitem,pitem->firstChild(),this);
155 item->setSelectable(it->may_select()); 167 item->setSelectable(it->may_select());
156 /* setup the short name */ 168 /* setup the short name */
157 item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1)); 169 item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1));
158 item = titem; 170 item = titem;
159 } else { 171 } else {
160 item = new IMAPfolderItem( it, this , (inboxitem?inboxitem:item) ); 172 item = new IMAPfolderItem( it, this , item );
161 item->setSelectable(it->may_select()); 173 item->setSelectable(it->may_select());
162 } 174 }
163 } 175 }
164 delete folders; 176 delete folders;
165} 177}
166 178
@@ -172,13 +184,13 @@ RecBody IMAPviewItem::fetchBody(const RecMail&)
172IMAPfolderItem::~IMAPfolderItem() 184IMAPfolderItem::~IMAPfolderItem()
173{ 185{
174 delete folder; 186 delete folder;
175} 187}
176 188
177IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after ) 189IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after )
178 : AccountViewItem( parent ) 190 : AccountViewItem( parent , after )
179{ 191{
180 folder = folderInit; 192 folder = folderInit;
181 imap = parent; 193 imap = parent;
182 if (folder->getDisplayName().lower()!="inbox") { 194 if (folder->getDisplayName().lower()!="inbox") {
183 setPixmap( 0, PIXMAP_IMAPFOLDER ); 195 setPixmap( 0, PIXMAP_IMAPFOLDER );
184 } else { 196 } else {
diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h
index a57935f..64abed9 100644
--- a/noncore/net/mail/accountview.h
+++ b/noncore/net/mail/accountview.h
@@ -48,21 +48,27 @@ public:
48 virtual RecBody fetchBody(const RecMail&); 48 virtual RecBody fetchBody(const RecMail&);
49private: 49private:
50 Folder *folder; 50 Folder *folder;
51 POP3viewItem *pop3; 51 POP3viewItem *pop3;
52}; 52};
53 53
54class IMAPfolderItem;
55
54class IMAPviewItem : public AccountViewItem 56class IMAPviewItem : public AccountViewItem
55{ 57{
56 58
57public: 59public:
58 IMAPviewItem( IMAPaccount *a, QListView *parent ); 60 IMAPviewItem( IMAPaccount *a, QListView *parent );
59 ~IMAPviewItem(); 61 ~IMAPviewItem();
60 virtual void refresh(QList<RecMail>&); 62 virtual void refresh(QList<RecMail>&);
61 virtual RecBody fetchBody(const RecMail&); 63 virtual RecBody fetchBody(const RecMail&);
62 AbstractMail *getWrapper(); 64 AbstractMail *getWrapper();
65
66protected:
67 IMAPfolderItem*findSubItem(const QString&path,IMAPfolderItem*start=0);
68
63private: 69private:
64 IMAPaccount *account; 70 IMAPaccount *account;
65 AbstractMail *wrapper; 71 AbstractMail *wrapper;
66}; 72};
67 73
68class IMAPfolderItem : public AccountViewItem 74class IMAPfolderItem : public AccountViewItem