summaryrefslogtreecommitdiff
path: root/noncore/net/mail/accountview.cpp
Unidiff
Diffstat (limited to 'noncore/net/mail/accountview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountview.cpp69
1 files changed, 62 insertions, 7 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index 8e21d39..b6bf298 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -103,29 +103,66 @@ AbstractMail *IMAPviewItem::getWrapper()
103{ 103{
104 return wrapper; 104 return wrapper;
105} 105}
106 106
107void IMAPviewItem::refresh(QList<RecMail>&) 107void IMAPviewItem::refresh(QList<RecMail>&)
108{ 108{
109 if (childCount()>0) return;
109 QList<Folder> *folders = wrapper->listFolders(); 110 QList<Folder> *folders = wrapper->listFolders();
110 111
111 QListViewItem *child = firstChild(); 112 QListViewItem *child = firstChild();
112 while ( child ) { 113 while ( child ) {
113 QListViewItem *tmp = child; 114 QListViewItem *tmp = child;
114 child = child->nextSibling(); 115 child = child->nextSibling();
115 delete tmp; 116 delete tmp;
116 } 117 }
117 118
118 Folder *it; 119 Folder *it;
119 QListViewItem*item = 0; 120 QListViewItem*item = 0;
120 for ( it = folders->first(); it; it = folders->next() ) { 121 QListViewItem*titem = 0;
121 item = new IMAPfolderItem( it, this , item ); 122 QListViewItem*inboxitem = 0;
122 item->setSelectable(it->may_select()); 123 QString fname,del,search;
123 } 124 int pos;
124 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 125 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
125 folders->setAutoDelete(false); 126 folders->setAutoDelete(false);
127
128 for ( it = folders->first(); it; it = folders->next() ) {
129 if (it->getDisplayName().lower()=="inbox") {
130 inboxitem = new IMAPfolderItem( it, this , item );
131 folders->remove(it);
132 qDebug("inbox found");
133 break;
134 }
135 }
136
137 for ( it = folders->first(); it; it = folders->next() ) {
138 fname = it->getDisplayName();
139 pos = fname.findRev(it->Separator());
140 if (pos != -1) {
141 fname = fname.left(pos);
142 qDebug(fname);
143 }
144 IMAPfolderItem*pitem = (IMAPfolderItem*)firstChild();
145 while (pitem) {
146 if (pitem->matchName(fname)) {
147 break;
148 }
149 pitem=(IMAPfolderItem*)pitem->nextSibling();
150 }
151 if (pitem) {
152 titem = item;
153 item = new IMAPfolderItem(it,pitem,item,this);
154 item->setSelectable(it->may_select());
155 /* setup the short name */
156 item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1));
157 item = titem;
158 } else {
159 item = new IMAPfolderItem( it, this , (inboxitem?inboxitem:item) );
160 item->setSelectable(it->may_select());
161 }
162 }
126 delete folders; 163 delete folders;
127} 164}
128 165
129RecBody IMAPviewItem::fetchBody(const RecMail&) 166RecBody IMAPviewItem::fetchBody(const RecMail&)
130{ 167{
131 return RecBody(); 168 return RecBody();
@@ -134,24 +171,42 @@ RecBody IMAPviewItem::fetchBody(const RecMail&)
134IMAPfolderItem::~IMAPfolderItem() 171IMAPfolderItem::~IMAPfolderItem()
135{ 172{
136 delete folder; 173 delete folder;
137} 174}
138 175
139IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after ) 176IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after )
140 : AccountViewItem( parent,after ) 177 : AccountViewItem( parent )
141{ 178{
142 folder = folderInit; 179 folder = folderInit;
143 imap = parent; 180 imap = parent;
144 if (folder->getDisplayName().lower()!="inbox") { 181 if (folder->getDisplayName().lower()!="inbox") {
145 setPixmap( 0, PIXMAP_IMAPFOLDER ); 182 setPixmap( 0, PIXMAP_IMAPFOLDER );
146 } else { 183 } else {
147 setPixmap( 0, PIXMAP_INBOXFOLDER); 184 setPixmap( 0, PIXMAP_INBOXFOLDER);
148 } 185 }
149 setText( 0, folder->getDisplayName() ); 186 setText( 0, folder->getDisplayName() );
150} 187}
151 188
189IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master )
190 : AccountViewItem( parent,after )
191{
192 folder = folderInit;
193 imap = master;
194 if (folder->getDisplayName().lower()!="inbox") {
195 setPixmap( 0, PIXMAP_IMAPFOLDER );
196 } else {
197 setPixmap( 0, PIXMAP_INBOXFOLDER);
198 }
199 setText( 0, folder->getDisplayName() );
200}
201
202bool IMAPfolderItem::matchName(const QString&name)const
203{
204 return folder->getDisplayName()==name;
205}
206
152void IMAPfolderItem::refresh(QList<RecMail>&target) 207void IMAPfolderItem::refresh(QList<RecMail>&target)
153{ 208{
154 if (folder->may_select()) 209 if (folder->may_select())
155 imap->getWrapper()->listMessages( folder->getName(),target ); 210 imap->getWrapper()->listMessages( folder->getName(),target );
156} 211}
157 212
@@ -166,13 +221,13 @@ RecBody IMAPfolderItem::fetchBody(const RecMail&aMail)
166 221
167AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) 222AccountView::AccountView( QWidget *parent, const char *name, WFlags flags )
168 : QListView( parent, name, flags ) 223 : QListView( parent, name, flags )
169{ 224{
170 connect( this, SIGNAL( selectionChanged( QListViewItem * ) ), 225 connect( this, SIGNAL( selectionChanged( QListViewItem * ) ),
171 SLOT( refresh( QListViewItem * ) ) ); 226 SLOT( refresh( QListViewItem * ) ) );
172 setSorting(-1); 227 setSorting(0);
173} 228}
174 229
175void AccountView::populate( QList<Account> list ) 230void AccountView::populate( QList<Account> list )
176{ 231{
177 clear(); 232 clear();
178 233