summaryrefslogtreecommitdiff
authorharlekin <harlekin>2003-12-14 00:20:38 (UTC)
committer harlekin <harlekin>2003-12-14 00:20:38 (UTC)
commitff2b84787e454f8a11aaef7a4ce18941ac0d28fd (patch) (unidiff)
tree44bf51f9a3935542cdcfa5dafcc212e4f01ee8ce
parentb0a71314013a3367767526b68928a7168b4ad460 (diff)
downloadopie-ff2b84787e454f8a11aaef7a4ce18941ac0d28fd.zip
opie-ff2b84787e454f8a11aaef7a4ce18941ac0d28fd.tar.gz
opie-ff2b84787e454f8a11aaef7a4ce18941ac0d28fd.tar.bz2
deleting of mails working
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountview.cpp26
-rw-r--r--noncore/net/mail/accountview.h6
-rw-r--r--noncore/net/mail/mainwindow.cpp29
-rw-r--r--noncore/net/mail/mainwindow.h4
-rw-r--r--noncore/net/mail/viewmail.cpp8
-rw-r--r--noncore/net/mail/viewmail.h3
6 files changed, 64 insertions, 12 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index 1069b9f..ac4f0e0 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -58,32 +58,32 @@ AbstractMail *IMAPviewItem::getWrapper()
58 return wrapper; 58 return wrapper;
59} 59}
60 60
61void IMAPviewItem::refresh(QList<RecMail>&) 61void IMAPviewItem::refresh(QList<RecMail>&)
62{ 62{
63 QList<Folder> *folders = wrapper->listFolders(); 63 QList<Folder> *folders = wrapper->listFolders();
64 64
65 QListViewItem *child = firstChild(); 65 QListViewItem *child = firstChild();
66 while ( child ) { 66 while ( child ) {
67 QListViewItem *tmp = child; 67 QListViewItem *tmp = child;
68 child = child->nextSibling(); 68 child = child->nextSibling();
69 delete tmp; 69 delete tmp;
70 } 70 }
71 71
72 Folder *it; 72 Folder *it;
73 for ( it = folders->first(); it; it = folders->next() ) { 73 for ( it = folders->first(); it; it = folders->next() ) {
74 (void) new IMAPfolderItem( it, this ); 74 (void) new IMAPfolderItem( it, this );
75 } 75 }
76} 76}
77 77
78RecBody IMAPviewItem::fetchBody(const RecMail&) 78RecBody IMAPviewItem::fetchBody(const RecMail&)
79{ 79{
80 return RecBody(); 80 return RecBody();
81} 81}
82 82
83IMAPfolderItem::~IMAPfolderItem() 83IMAPfolderItem::~IMAPfolderItem()
84{ 84{
85 delete folder; 85 delete folder;
86} 86}
87 87
88IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent ) 88IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent )
89 : AccountViewItem( parent ) 89 : AccountViewItem( parent )
@@ -91,13 +91,13 @@ IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent )
91 folder = folderInit; 91 folder = folderInit;
92 imap = parent; 92 imap = parent;
93 setPixmap( 0, PIXMAP_IMAPFOLDER ); 93 setPixmap( 0, PIXMAP_IMAPFOLDER );
94 setText( 0, folder->getDisplayName() ); 94 setText( 0, folder->getDisplayName() );
95} 95}
96 96
97void IMAPfolderItem::refresh(QList<RecMail>&target) 97void IMAPfolderItem::refresh(QList<RecMail>&target)
98{ 98{
99 imap->getWrapper()->listMessages( folder->getName(),target ); 99 imap->getWrapper()->listMessages( folder->getName(),target );
100} 100}
101 101
102RecBody IMAPfolderItem::fetchBody(const RecMail&aMail) 102RecBody IMAPfolderItem::fetchBody(const RecMail&aMail)
103{ 103{
@@ -115,13 +115,13 @@ AccountView::AccountView( QWidget *parent, const char *name, WFlags flags )
115 SLOT( refresh( QListViewItem * ) ) ); 115 SLOT( refresh( QListViewItem * ) ) );
116} 116}
117 117
118void AccountView::populate( QList<Account> list ) 118void AccountView::populate( QList<Account> list )
119{ 119{
120 clear(); 120 clear();
121 121
122 Account *it; 122 Account *it;
123 for ( it = list.first(); it; it = list.next() ) { 123 for ( it = list.first(); it; it = list.next() ) {
124 if ( it->getType().compare( "IMAP" ) == 0 ) { 124 if ( it->getType().compare( "IMAP" ) == 0 ) {
125 IMAPaccount *imap = static_cast<IMAPaccount *>(it); 125 IMAPaccount *imap = static_cast<IMAPaccount *>(it);
126 qDebug( "added IMAP " + imap->getAccountName() ); 126 qDebug( "added IMAP " + imap->getAccountName() );
127 (void) new IMAPviewItem( imap, this ); 127 (void) new IMAPviewItem( imap, this );
@@ -131,25 +131,37 @@ void AccountView::populate( QList<Account> list )
131 (void) new POP3viewItem( pop3, this ); 131 (void) new POP3viewItem( pop3, this );
132 } 132 }
133 } 133 }
134} 134}
135 135
136void AccountView::refresh(QListViewItem *item) { 136void AccountView::refresh(QListViewItem *item) {
137
137 qDebug("AccountView refresh..."); 138 qDebug("AccountView refresh...");
138 if ( item ) { 139 if ( item ) {
140 m_currentItem = item;
139 QList<RecMail> headerlist; 141 QList<RecMail> headerlist;
140 headerlist.setAutoDelete(true); 142 headerlist.setAutoDelete(true);
141 AccountViewItem *view = static_cast<AccountViewItem *>(item); 143 AccountViewItem *view = static_cast<AccountViewItem *>(item);
142 view->refresh(headerlist); 144 view->refresh(headerlist);
143 emit refreshMailview(&headerlist); 145 emit refreshMailview(&headerlist);
144 } 146 }
145} 147}
146 148
149void AccountView::refreshCurrent()
150{
151 if ( !m_currentItem ) return;
152 QList<RecMail> headerlist;
153 headerlist.setAutoDelete(true);
154 AccountViewItem *view = static_cast<AccountViewItem *>(m_currentItem);
155 view->refresh(headerlist);
156 emit refreshMailview(&headerlist);
157}
158
147void AccountView::refreshAll() 159void AccountView::refreshAll()
148{ 160{
149 161
150} 162}
151 163
152RecBody AccountView::fetchBody(const RecMail&aMail) 164RecBody AccountView::fetchBody(const RecMail&aMail)
153{ 165{
154 QListViewItem*item = selectedItem (); 166 QListViewItem*item = selectedItem ();
155 if (!item) return RecBody(); 167 if (!item) return RecBody();
diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h
index 83d49af..cdc87ce 100644
--- a/noncore/net/mail/accountview.h
+++ b/noncore/net/mail/accountview.h
@@ -74,12 +74,16 @@ public:
74 void populate( QList<Account> list ); 74 void populate( QList<Account> list );
75 RecBody fetchBody(const RecMail&aMail); 75 RecBody fetchBody(const RecMail&aMail);
76 76
77public slots: 77public slots:
78 void refreshAll(); 78 void refreshAll();
79 void refresh(QListViewItem *item); 79 void refresh(QListViewItem *item);
80 void refreshCurrent();
80 81
81signals: 82signals:
82 void refreshMailview(QList<RecMail>*); 83 void refreshMailview(QList<RecMail>*);
84
85private:
86 QListViewItem* m_currentItem;
83}; 87};
84 88
85#endif 89#endif
diff --git a/noncore/net/mail/mainwindow.cpp b/noncore/net/mail/mainwindow.cpp
index 8ef7ddd..c410829 100644
--- a/noncore/net/mail/mainwindow.cpp
+++ b/noncore/net/mail/mainwindow.cpp
@@ -57,12 +57,17 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
57 57
58 searchMails = new QAction( tr( "Search mails" ), ICON_SEARCHMAILS, 58 searchMails = new QAction( tr( "Search mails" ), ICON_SEARCHMAILS,
59 0, 0, this ); 59 0, 0, this );
60 searchMails->addTo( toolBar ); 60 searchMails->addTo( toolBar );
61 searchMails->addTo( mailMenu ); 61 searchMails->addTo( mailMenu );
62 62
63 deleteMails = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("mail/delete")), 0, 0, this);
64 deleteMails->addTo( toolBar );
65 deleteMails->addTo( mailMenu );
66 connect( deleteMails, SIGNAL( activated() ),
67 SLOT( slotDeleteMail() ) );
63 68
64 editSettings = new QAction( tr( "Edit settings" ), ICON_EDITSETTINGS, 69 editSettings = new QAction( tr( "Edit settings" ), ICON_EDITSETTINGS,
65 0, 0, this ); 70 0, 0, this );
66 editSettings->addTo( settingsMenu ); 71 editSettings->addTo( settingsMenu );
67 72
68 editAccounts = new QAction( tr( "Configure accounts" ), ICON_EDITACCOUNTS, 73 editAccounts = new QAction( tr( "Configure accounts" ), ICON_EDITACCOUNTS,
@@ -95,13 +100,13 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
95 100
96 slotAdjustLayout(); 101 slotAdjustLayout();
97 102
98 connect( mailView, SIGNAL( clicked( QListViewItem * ) ),this, 103 connect( mailView, SIGNAL( clicked( QListViewItem * ) ),this,
99 SLOT( displayMail( QListViewItem * ) ) ); 104 SLOT( displayMail( QListViewItem * ) ) );
100 105
101 connect(folderView,SIGNAL(refreshMailview(QList<RecMail>*)),this,SLOT(refreshMailView(QList<RecMail>*))); 106 connect(folderView, SIGNAL(refreshMailview(QList<RecMail>*)),this,SLOT(refreshMailView(QList<RecMail>*)));
102 107
103 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); 108 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) );
104} 109}
105 110
106 111
107void MainWindow::slotAdjustLayout() { 112void MainWindow::slotAdjustLayout() {
@@ -128,13 +133,13 @@ void MainWindow::slotAdjustColumns()
128 mailView->setColumnWidth( 2, 80 ); 133 mailView->setColumnWidth( 2, 80 );
129 mailView->setColumnWidth( 3, 50 ); 134 mailView->setColumnWidth( 3, 50 );
130} 135}
131 136
132void MainWindow::slotShowFolders( bool show ) 137void MainWindow::slotShowFolders( bool show )
133{ 138{
134 qDebug( "Show Folders" ); 139 qDebug( "Show Folders" );
135 if ( show && folderView->isHidden() ) { 140 if ( show && folderView->isHidden() ) {
136 qDebug( "-> showing" ); 141 qDebug( "-> showing" );
137 folderView->show(); 142 folderView->show();
138 } else if ( !show && !folderView->isHidden() ) { 143 } else if ( !show && !folderView->isHidden() ) {
139 qDebug( "-> hiding" ); 144 qDebug( "-> hiding" );
140 folderView->hide(); 145 folderView->hide();
@@ -150,24 +155,42 @@ void MainWindow::refreshMailView(QList<RecMail>*list)
150 item->storeData(*(list->at(i))); 155 item->storeData(*(list->at(i)));
151 item->showEntry(); 156 item->showEntry();
152 } 157 }
153} 158}
154void MainWindow::displayMail(QListViewItem*item) 159void MainWindow::displayMail(QListViewItem*item)
155{ 160{
161
162 m_currentItem = item;
163
156 if (!item) return; 164 if (!item) return;
157 RecMail mail = ((MailListViewItem*)item)->data(); 165 RecMail mail = ((MailListViewItem*)item)->data();
158 RecBody body = folderView->fetchBody(mail); 166 RecBody body = folderView->fetchBody(mail);
159 167
160 ViewMail readMail( this ); 168 ViewMail readMail( this );
161 readMail.setBody( body ); 169 readMail.setBody( body );
162 readMail.setMail( mail ); 170 readMail.setMail( mail );
163 readMail.showMaximized(); 171 readMail.showMaximized();
164 readMail.exec(); 172 readMail.exec();
165 ( (MailListViewItem*)item )->setPixmap( 0, Resource::loadPixmap( "opiemail/kmmsgunseen") ); 173
174 if ( readMail.deleted ) {
175 folderView->refreshCurrent();
176 } else {
177 ( (MailListViewItem*)item )->setPixmap( 0, Resource::loadPixmap( "opiemail/kmmsgunseen") );
178 }
166} 179}
167 180
181void MainWindow::slotDeleteMail()
182{
183 if (!m_currentItem) return;
184 RecMail mail = ((MailListViewItem*)m_currentItem)->data();
185 mail.Wrapper()->deleteMail( mail );
186 folderView->refreshCurrent();
187}
188
189
190
168MailListViewItem::MailListViewItem(QListView * parent, MailListViewItem * item ) 191MailListViewItem::MailListViewItem(QListView * parent, MailListViewItem * item )
169 :QListViewItem(parent,item),mail_data() 192 :QListViewItem(parent,item),mail_data()
170{ 193{
171} 194}
172 195
173void MailListViewItem::showEntry() 196void MailListViewItem::showEntry()
diff --git a/noncore/net/mail/mainwindow.h b/noncore/net/mail/mainwindow.h
index 6c1cda0..8641510 100644
--- a/noncore/net/mail/mainwindow.h
+++ b/noncore/net/mail/mainwindow.h
@@ -23,20 +23,22 @@ public slots:
23 void slotAdjustColumns(); 23 void slotAdjustColumns();
24 24
25protected slots: 25protected slots:
26 virtual void slotShowFolders( bool show ); 26 virtual void slotShowFolders( bool show );
27 virtual void refreshMailView(QList<RecMail>*); 27 virtual void refreshMailView(QList<RecMail>*);
28 virtual void displayMail(QListViewItem*); 28 virtual void displayMail(QListViewItem*);
29 virtual void slotDeleteMail();
29 void slotAdjustLayout(); 30 void slotAdjustLayout();
30 31
31protected: 32protected:
32 QToolBar *toolBar; 33 QToolBar *toolBar;
33 QMenuBar *menuBar; 34 QMenuBar *menuBar;
34 QPopupMenu *mailMenu, *settingsMenu; 35 QPopupMenu *mailMenu, *settingsMenu;
35 QAction *composeMail, *sendQueued, *showFolders, *searchMails, 36 QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails,
36 *editSettings, *editAccounts, *syncFolders; 37 *editSettings, *editAccounts, *syncFolders;
37 AccountView *folderView; 38 AccountView *folderView;
38 QListView *mailView; 39 QListView *mailView;
40 QListViewItem* m_currentItem;
39 QBoxLayout *layout; 41 QBoxLayout *layout;
40}; 42};
41 43
42#endif 44#endif
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp
index 42707e3..163ffb7 100644
--- a/noncore/net/mail/viewmail.cpp
+++ b/noncore/net/mail/viewmail.cpp
@@ -8,12 +8,13 @@
8#include <opie/ofiledialog.h> 8#include <opie/ofiledialog.h>
9 9
10#include "settings.h" 10#include "settings.h"
11#include "composemail.h" 11#include "composemail.h"
12#include "viewmail.h" 12#include "viewmail.h"
13#include "abstractmail.h" 13#include "abstractmail.h"
14#include "accountview.h"
14 15
15AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&file,const QString&desc,int num) 16AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&file,const QString&desc,int num)
16 : QListViewItem(parent,after),_partNum(num) 17 : QListViewItem(parent,after),_partNum(num)
17{ 18{
18 setText(0, mime); 19 setText(0, mime);
19 setText(1, file); 20 setText(1, file);
@@ -166,12 +167,13 @@ ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl)
166 : ViewMailBase(parent, name, fl), _inLoop(false) 167 : ViewMailBase(parent, name, fl), _inLoop(false)
167{ 168{
168 m_gotBody = false; 169 m_gotBody = false;
169 170
170 connect(reply, SIGNAL(activated()), SLOT(slotReply())); 171 connect(reply, SIGNAL(activated()), SLOT(slotReply()));
171 connect(forward, SIGNAL(activated()), SLOT(slotForward())); 172 connect(forward, SIGNAL(activated()), SLOT(slotForward()));
173 connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail( ) ) );
172 174
173 attachments->setEnabled(m_gotBody); 175 attachments->setEnabled(m_gotBody);
174 connect( attachments, SIGNAL( clicked ( QListViewItem *, const QPoint & , int ) ), SLOT( slotItemClicked( QListViewItem *, const QPoint & , int ) ) ); 176 connect( attachments, SIGNAL( clicked ( QListViewItem *, const QPoint & , int ) ), SLOT( slotItemClicked( QListViewItem *, const QPoint & , int ) ) );
175 177
176} 178}
177 179
@@ -312,6 +314,12 @@ void ViewMail::slotForward()
312 composer.setSubject( "Fwd: " + m_mail[1] ); 314 composer.setSubject( "Fwd: " + m_mail[1] );
313 composer.setMessage( ftext ); 315 composer.setMessage( ftext );
314 composer.showMaximized(); 316 composer.showMaximized();
315 composer.exec(); 317 composer.exec();
316} 318}
317 319
320void ViewMail::slotDeleteMail( )
321{
322 m_recMail.Wrapper()->deleteMail( m_recMail );
323 hide();
324 deleted = true;
325}
diff --git a/noncore/net/mail/viewmail.h b/noncore/net/mail/viewmail.h
index bc12da1..765464c 100644
--- a/noncore/net/mail/viewmail.h
+++ b/noncore/net/mail/viewmail.h
@@ -27,21 +27,24 @@ public:
27 ~ViewMail(); 27 ~ViewMail();
28 28
29 void hide(); 29 void hide();
30 void exec(); 30 void exec();
31 void setMail( RecMail mail ); 31 void setMail( RecMail mail );
32 void setBody( RecBody body ); 32 void setBody( RecBody body );
33 bool deleted;
33 34
34protected: 35protected:
35 QString deHtml(const QString &string); 36 QString deHtml(const QString &string);
36 37
37protected slots: 38protected slots:
38 void slotReply(); 39 void slotReply();
39 void slotForward(); 40 void slotForward();
40 void setText(); 41 void setText();
41 void slotItemClicked( QListViewItem * item , const QPoint & point, int c ); 42 void slotItemClicked( QListViewItem * item , const QPoint & point, int c );
43 void slotDeleteMail( );
44
42 45
43private: 46private:
44 bool _inLoop; 47 bool _inLoop;
45 QString m_mailHtml; 48 QString m_mailHtml;
46 bool m_gotBody; 49 bool m_gotBody;
47 RecBody m_body; 50 RecBody m_body;