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.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index faa42c3..1183704 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -1,170 +1,189 @@
1 1
2#include "accountview.h" 2#include "accountview.h"
3#include "accountitem.h" 3#include "accountitem.h"
4#include "selectstore.h" 4#include "selectstore.h"
5 5
6#include <libmailwrapper/settings.h> 6#include <libmailwrapper/settings.h>
7#include <libmailwrapper/mailwrapper.h> 7#include <libmailwrapper/mailwrapper.h>
8#include <libmailwrapper/mailtypes.h> 8#include <libmailwrapper/mailtypes.h>
9#include <libmailwrapper/abstractmail.h> 9#include <libmailwrapper/abstractmail.h>
10 10
11/* OPIE */ 11/* OPIE */
12#include <opie2/odebug.h> 12#include <opie2/odebug.h>
13#include <qpe/qpeapplication.h> 13#include <qpe/qpeapplication.h>
14 14
15/* QT */ 15/* QT */
16#include <qmessagebox.h> 16#include <qmessagebox.h>
17#include <qpopupmenu.h> 17#include <qpopupmenu.h>
18 18
19using namespace Opie::Core; 19using namespace Opie::Core;
20AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) 20AccountView::AccountView( QWidget *parent, const char *name, WFlags flags )
21 : QListView( parent, name, flags ) 21 : QListView( parent, name, flags )
22{ 22{
23 setSorting(0); 23 setSorting(0);
24 setSelectionMode(Single); 24 setSelectionMode(Single);
25 m_rightPressed = false; 25 m_rightPressed = false;
26 26
27 connect( this, SIGNAL( selectionChanged(QListViewItem*) ), 27 connect( this, SIGNAL( selectionChanged(QListViewItem*) ),
28 SLOT( slotSelectionChanged(QListViewItem*) ) ); 28 SLOT( slotSelectionChanged(QListViewItem*) ) );
29 connect( this, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, 29 connect( this, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this,
30 SLOT( slotMouseButton(int,QListViewItem*,const QPoint&,int) ) ); 30 SLOT( slotMouseButton(int,QListViewItem*,const QPoint&,int) ) );
31 connect( this, SIGNAL(clicked(QListViewItem*) ),this, 31 connect( this, SIGNAL(clicked(QListViewItem*) ),this,
32 SLOT( slotMouseClicked(QListViewItem*) ) ); 32 SLOT( slotMouseClicked(QListViewItem*) ) );
33 m_currentItem = 0; 33 m_currentItem = 0;
34} 34}
35 35
36AccountView::~AccountView() 36AccountView::~AccountView()
37{ 37{
38 imapAccounts.clear(); 38 imapAccounts.clear();
39 mhAccounts.clear(); 39 mhAccounts.clear();
40} 40}
41 41
42void AccountView::slotSelectionChanged(QListViewItem*item) 42void AccountView::slotSelectionChanged(QListViewItem*item)
43{ 43{
44 odebug << "AccountView: Selection changed" << oendl;
45 if (!item) { 44 if (!item) {
46 emit serverSelected(0); 45 emit serverSelected(0);
47 return; 46 return;
48 } 47 }
49 AccountViewItem *view = static_cast<AccountViewItem *>(item); 48 AccountViewItem *view = static_cast<AccountViewItem *>(item);
50
51 emit serverSelected(view->isServer()); 49 emit serverSelected(view->isServer());
52} 50}
53 51
52QMap<int,QString> AccountView::currentServerMenu()const
53{
54 QMap<int,QString> smap;
55 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem());
56 if (!view)return smap;
57 smap = view->serverMenu();
58 return smap;
59}
60
61QMap<int,QString> AccountView::currentFolderMenu()const
62{
63 QMap<int,QString> fmap;
64 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem());
65 if (!view)return fmap;
66 fmap = view->folderMenu();
67 return fmap;
68}
69
54void AccountView::slotContextMenu(int id) 70void AccountView::slotContextMenu(int id)
55{ 71{
56 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem()); 72 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem());
57 if (!view) return; 73 if (!view) return;
58 view->contextMenuSelected(id); 74 bool del = view->contextMenuSelected(id);
75 if (!del && view->isServer()!=2) {
76 emit refreshMenues(view->isServer());
77 }
59} 78}
60 79
61void AccountView::slotRightButton(int button, QListViewItem * item,const QPoint&,int) 80void AccountView::slotRightButton(int, QListViewItem * item,const QPoint&,int)
62{ 81{
63 m_rightPressed = true; 82 m_rightPressed = true;
64 if (!item) return; 83 if (!item) return;
65 AccountViewItem *view = static_cast<AccountViewItem *>(item); 84 AccountViewItem *view = static_cast<AccountViewItem *>(item);
66 QPopupMenu*m = view->getContextMenu(); 85 QPopupMenu*m = view->getContextMenu();
67 if (!m) return; 86 if (!m) return;
68 connect(m,SIGNAL(activated(int)),this,SLOT(slotContextMenu(int))); 87 connect(m,SIGNAL(activated(int)),this,SLOT(slotContextMenu(int)));
69 m->setFocus(); 88 m->setFocus();
70 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); 89 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) );
71 delete m; 90 delete m;
72} 91}
73 92
74void AccountView::slotLeftButton(int button, QListViewItem * item,const QPoint&,int) 93void AccountView::slotLeftButton(int, QListViewItem *,const QPoint&,int)
75{ 94{
76 m_rightPressed = false; 95 m_rightPressed = false;
77} 96}
78 97
79void AccountView::slotMouseClicked(QListViewItem*item) 98void AccountView::slotMouseClicked(QListViewItem*item)
80{ 99{
81 if (m_rightPressed) return; 100 if (m_rightPressed) return;
82 if (!item || m_currentItem == item) return; 101 if (!item || m_currentItem == item) return;
83 /* ### ToDo check settings if on single tab it should open */ 102 /* ### ToDo check settings if on single tab it should open */
84 m_currentItem = item; 103 m_currentItem = item;
85 refresh(m_currentItem); 104 refresh(m_currentItem);
86} 105}
87 106
88void AccountView::slotMouseButton(int button, QListViewItem * item,const QPoint&pos,int column) 107void AccountView::slotMouseButton(int button, QListViewItem * item,const QPoint&pos,int column)
89{ 108{
90 if (button==1) { 109 if (button==1) {
91 slotLeftButton(button,item,pos,column); 110 slotLeftButton(button,item,pos,column);
92 } else if (button==2) { 111 } else if (button==2) {
93 slotRightButton(button,item,pos,column); 112 slotRightButton(button,item,pos,column);
94 } 113 }
95} 114}
96 115
97void AccountView::populate( QList<Account> list ) 116void AccountView::populate( QList<Account> list )
98{ 117{
99 clear(); 118 clear();
100 119
101 imapAccounts.clear(); 120 imapAccounts.clear();
102 mhAccounts.clear(); 121 mhAccounts.clear();
103 mhAccounts.append(new MHviewItem(AbstractMail::defaultLocalfolder(),this)); 122 mhAccounts.append(new MHviewItem(AbstractMail::defaultLocalfolder(),this));
104 123
105 Account *it; 124 Account *it;
106 for ( it = list.first(); it; it = list.next() ) { 125 for ( it = list.first(); it; it = list.next() ) {
107 if ( it->getType() == MAILLIB::A_IMAP ) { 126 if ( it->getType() == MAILLIB::A_IMAP ) {
108 IMAPaccount *imap = static_cast<IMAPaccount *>(it); 127 IMAPaccount *imap = static_cast<IMAPaccount *>(it);
109 odebug << "added IMAP " + imap->getAccountName() << oendl; 128 odebug << "added IMAP " + imap->getAccountName() << oendl;
110 imapAccounts.append(new IMAPviewItem( imap, this )); 129 imapAccounts.append(new IMAPviewItem( imap, this ));
111 } else if ( it->getType() == MAILLIB::A_POP3 ) { 130 } else if ( it->getType() == MAILLIB::A_POP3 ) {
112 POP3account *pop3 = static_cast<POP3account *>(it); 131 POP3account *pop3 = static_cast<POP3account *>(it);
113 odebug << "added POP3 " + pop3->getAccountName() << oendl; 132 odebug << "added POP3 " + pop3->getAccountName() << oendl;
114 /* must not be hold 'cause it isn't required */ 133 /* must not be hold 'cause it isn't required */
115 (void) new POP3viewItem( pop3, this ); 134 (void) new POP3viewItem( pop3, this );
116 } else if ( it->getType() == MAILLIB::A_NNTP ) { 135 } else if ( it->getType() == MAILLIB::A_NNTP ) {
117 NNTPaccount *nntp = static_cast<NNTPaccount *>(it); 136 NNTPaccount *nntp = static_cast<NNTPaccount *>(it);
118 odebug << "added NNTP " + nntp->getAccountName() << oendl; 137 odebug << "added NNTP " + nntp->getAccountName() << oendl;
119 /* must not be hold 'cause it isn't required */ 138 /* must not be hold 'cause it isn't required */
120 (void) new NNTPviewItem( nntp, this ); 139 (void) new NNTPviewItem( nntp, this );
121 } else if ( it->getType() == MAILLIB::A_MH ) { 140 } else if ( it->getType() == MAILLIB::A_MH ) {
122 } 141 }
123 } 142 }
124} 143}
125 144
126void AccountView::refresh(QListViewItem *item) 145void AccountView::refresh(QListViewItem *item)
127{ 146{
128 147
129 odebug << "AccountView refresh..." << oendl; 148 odebug << "AccountView refresh..." << oendl;
130 if ( item ) 149 if ( item )
131 { 150 {
132 m_currentItem = item; 151 m_currentItem = item;
133 QValueList<RecMailP> headerlist; 152 QValueList<RecMailP> headerlist;
134 AccountViewItem *view = static_cast<AccountViewItem *>(item); 153 AccountViewItem *view = static_cast<AccountViewItem *>(item);
135 view->refresh(headerlist); 154 view->refresh(headerlist);
136 emit refreshMailview(headerlist); 155 emit refreshMailview(headerlist);
137 } 156 }
138} 157}
139 158
140void AccountView::refreshCurrent() 159void AccountView::refreshCurrent()
141{ 160{
142 m_currentItem = currentItem(); 161 m_currentItem = currentItem();
143 if ( !m_currentItem ) return; 162 if ( !m_currentItem ) return;
144 QValueList<RecMailP> headerlist; 163 QValueList<RecMailP> headerlist;
145 AccountViewItem *view = static_cast<AccountViewItem *>(m_currentItem); 164 AccountViewItem *view = static_cast<AccountViewItem *>(m_currentItem);
146 view->refresh(headerlist); 165 view->refresh(headerlist);
147 emit refreshMailview(headerlist); 166 emit refreshMailview(headerlist);
148} 167}
149 168
150void AccountView::refreshAll() 169void AccountView::refreshAll()
151{ 170{
152} 171}
153 172
154RecBodyP AccountView::fetchBody(const RecMailP&aMail) 173RecBodyP AccountView::fetchBody(const RecMailP&aMail)
155{ 174{
156 QListViewItem*item = selectedItem (); 175 QListViewItem*item = selectedItem ();
157 if (!item) return new RecBody(); 176 if (!item) return new RecBody();
158 AccountViewItem *view = static_cast<AccountViewItem *>(item); 177 AccountViewItem *view = static_cast<AccountViewItem *>(item);
159 return view->fetchBody(aMail); 178 return view->fetchBody(aMail);
160} 179}
161 180
162void AccountView::setupFolderselect(Selectstore*sels) 181void AccountView::setupFolderselect(Selectstore*sels)
163{ 182{
164 QPEApplication::showDialog( sels ); 183 QPEApplication::showDialog( sels );
165 QStringList sFolders; 184 QStringList sFolders;
166 unsigned int i = 0; 185 unsigned int i = 0;
167 for (i=0; i < mhAccounts.count();++i) 186 for (i=0; i < mhAccounts.count();++i)
168 { 187 {
169 mhAccounts[i]->refresh(false); 188 mhAccounts[i]->refresh(false);
170 sFolders = mhAccounts[i]->subFolders(); 189 sFolders = mhAccounts[i]->subFolders();