-rw-r--r-- | noncore/net/mail/accountview.cpp | 26 | ||||
-rw-r--r-- | noncore/net/mail/accountview.h | 6 | ||||
-rw-r--r-- | noncore/net/mail/mainwindow.cpp | 29 | ||||
-rw-r--r-- | noncore/net/mail/mainwindow.h | 4 | ||||
-rw-r--r-- | noncore/net/mail/viewmail.cpp | 8 | ||||
-rw-r--r-- | noncore/net/mail/viewmail.h | 3 |
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() return wrapper; } void IMAPviewItem::refresh(QList<RecMail>&) { QList<Folder> *folders = wrapper->listFolders(); - + QListViewItem *child = firstChild(); while ( child ) { QListViewItem *tmp = child; child = child->nextSibling(); delete tmp; } - + Folder *it; for ( it = folders->first(); it; it = folders->next() ) { (void) new IMAPfolderItem( it, this ); } } RecBody IMAPviewItem::fetchBody(const RecMail&) { return RecBody(); } -IMAPfolderItem::~IMAPfolderItem() +IMAPfolderItem::~IMAPfolderItem() { delete folder; } IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent ) : AccountViewItem( parent ) @@ -91,13 +91,13 @@ IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent ) folder = folderInit; imap = parent; setPixmap( 0, PIXMAP_IMAPFOLDER ); setText( 0, folder->getDisplayName() ); } -void IMAPfolderItem::refresh(QList<RecMail>&target) +void IMAPfolderItem::refresh(QList<RecMail>&target) { imap->getWrapper()->listMessages( folder->getName(),target ); } RecBody IMAPfolderItem::fetchBody(const RecMail&aMail) { @@ -115,13 +115,13 @@ AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) SLOT( refresh( QListViewItem * ) ) ); } void AccountView::populate( QList<Account> list ) { clear(); - + Account *it; for ( it = list.first(); it; it = list.next() ) { if ( it->getType().compare( "IMAP" ) == 0 ) { IMAPaccount *imap = static_cast<IMAPaccount *>(it); qDebug( "added IMAP " + imap->getAccountName() ); (void) new IMAPviewItem( imap, this ); @@ -131,25 +131,37 @@ void AccountView::populate( QList<Account> list ) (void) new POP3viewItem( pop3, this ); } } } void AccountView::refresh(QListViewItem *item) { + qDebug("AccountView refresh..."); - if ( item ) { + if ( item ) { + m_currentItem = item; QList<RecMail> headerlist; headerlist.setAutoDelete(true); AccountViewItem *view = static_cast<AccountViewItem *>(item); view->refresh(headerlist); emit refreshMailview(&headerlist); } } +void AccountView::refreshCurrent() +{ + if ( !m_currentItem ) return; + QList<RecMail> headerlist; + headerlist.setAutoDelete(true); + AccountViewItem *view = static_cast<AccountViewItem *>(m_currentItem); + view->refresh(headerlist); + emit refreshMailview(&headerlist); +} + void AccountView::refreshAll() { - + } RecBody AccountView::fetchBody(const RecMail&aMail) { QListViewItem*item = selectedItem (); 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: void populate( QList<Account> list ); RecBody fetchBody(const RecMail&aMail); public slots: void refreshAll(); void refresh(QListViewItem *item); + void refreshCurrent(); signals: - void refreshMailview(QList<RecMail>*); + void refreshMailview(QList<RecMail>*); + +private: + QListViewItem* m_currentItem; }; #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 ) searchMails = new QAction( tr( "Search mails" ), ICON_SEARCHMAILS, 0, 0, this ); searchMails->addTo( toolBar ); searchMails->addTo( mailMenu ); + deleteMails = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("mail/delete")), 0, 0, this); + deleteMails->addTo( toolBar ); + deleteMails->addTo( mailMenu ); + connect( deleteMails, SIGNAL( activated() ), + SLOT( slotDeleteMail() ) ); editSettings = new QAction( tr( "Edit settings" ), ICON_EDITSETTINGS, 0, 0, this ); editSettings->addTo( settingsMenu ); editAccounts = new QAction( tr( "Configure accounts" ), ICON_EDITACCOUNTS, @@ -95,13 +100,13 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) slotAdjustLayout(); connect( mailView, SIGNAL( clicked( QListViewItem * ) ),this, SLOT( displayMail( QListViewItem * ) ) ); - connect(folderView,SIGNAL(refreshMailview(QList<RecMail>*)),this,SLOT(refreshMailView(QList<RecMail>*))); + connect(folderView, SIGNAL(refreshMailview(QList<RecMail>*)),this,SLOT(refreshMailView(QList<RecMail>*))); QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); } void MainWindow::slotAdjustLayout() { @@ -128,13 +133,13 @@ void MainWindow::slotAdjustColumns() mailView->setColumnWidth( 2, 80 ); mailView->setColumnWidth( 3, 50 ); } void MainWindow::slotShowFolders( bool show ) { - qDebug( "Show Folders" ); + qDebug( "Show Folders" ); if ( show && folderView->isHidden() ) { qDebug( "-> showing" ); folderView->show(); } else if ( !show && !folderView->isHidden() ) { qDebug( "-> hiding" ); folderView->hide(); @@ -150,24 +155,42 @@ void MainWindow::refreshMailView(QList<RecMail>*list) item->storeData(*(list->at(i))); item->showEntry(); } } void MainWindow::displayMail(QListViewItem*item) { + + m_currentItem = item; + if (!item) return; RecMail mail = ((MailListViewItem*)item)->data(); RecBody body = folderView->fetchBody(mail); ViewMail readMail( this ); readMail.setBody( body ); readMail.setMail( mail ); readMail.showMaximized(); readMail.exec(); - ( (MailListViewItem*)item )->setPixmap( 0, Resource::loadPixmap( "opiemail/kmmsgunseen") ); + + if ( readMail.deleted ) { + folderView->refreshCurrent(); + } else { + ( (MailListViewItem*)item )->setPixmap( 0, Resource::loadPixmap( "opiemail/kmmsgunseen") ); + } } +void MainWindow::slotDeleteMail() +{ + if (!m_currentItem) return; + RecMail mail = ((MailListViewItem*)m_currentItem)->data(); + mail.Wrapper()->deleteMail( mail ); + folderView->refreshCurrent(); +} + + + MailListViewItem::MailListViewItem(QListView * parent, MailListViewItem * item ) :QListViewItem(parent,item),mail_data() { } void 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: void slotAdjustColumns(); protected slots: virtual void slotShowFolders( bool show ); virtual void refreshMailView(QList<RecMail>*); virtual void displayMail(QListViewItem*); + virtual void slotDeleteMail(); void slotAdjustLayout(); protected: QToolBar *toolBar; QMenuBar *menuBar; QPopupMenu *mailMenu, *settingsMenu; - QAction *composeMail, *sendQueued, *showFolders, *searchMails, + QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails, *editSettings, *editAccounts, *syncFolders; AccountView *folderView; QListView *mailView; + QListViewItem* m_currentItem; QBoxLayout *layout; }; #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 @@ #include <opie/ofiledialog.h> #include "settings.h" #include "composemail.h" #include "viewmail.h" #include "abstractmail.h" +#include "accountview.h" AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&file,const QString&desc,int num) : QListViewItem(parent,after),_partNum(num) { setText(0, mime); setText(1, file); @@ -166,12 +167,13 @@ ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) : ViewMailBase(parent, name, fl), _inLoop(false) { m_gotBody = false; connect(reply, SIGNAL(activated()), SLOT(slotReply())); connect(forward, SIGNAL(activated()), SLOT(slotForward())); + connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail( ) ) ); attachments->setEnabled(m_gotBody); connect( attachments, SIGNAL( clicked ( QListViewItem *, const QPoint & , int ) ), SLOT( slotItemClicked( QListViewItem *, const QPoint & , int ) ) ); } @@ -312,6 +314,12 @@ void ViewMail::slotForward() composer.setSubject( "Fwd: " + m_mail[1] ); composer.setMessage( ftext ); composer.showMaximized(); composer.exec(); } +void ViewMail::slotDeleteMail( ) +{ + m_recMail.Wrapper()->deleteMail( m_recMail ); + hide(); + deleted = true; +} 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: ~ViewMail(); void hide(); void exec(); void setMail( RecMail mail ); void setBody( RecBody body ); + bool deleted; protected: QString deHtml(const QString &string); protected slots: void slotReply(); void slotForward(); void setText(); void slotItemClicked( QListViewItem * item , const QPoint & point, int c ); + void slotDeleteMail( ); + private: bool _inLoop; QString m_mailHtml; bool m_gotBody; RecBody m_body; |