summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountview.cpp11
-rw-r--r--noncore/net/mail/accountview.h2
-rw-r--r--noncore/net/mail/defines.h2
-rw-r--r--noncore/net/mail/mainwindow.cpp7
-rw-r--r--noncore/net/mail/mainwindow.h4
-rw-r--r--noncore/net/mail/opiemail.cpp13
-rw-r--r--noncore/net/mail/opiemail.h3
-rw-r--r--noncore/net/mail/settingsdialog.cpp4
-rw-r--r--noncore/net/mail/settingsdialogui.ui30
9 files changed, 69 insertions, 7 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index 1183704..0e739e2 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -1,133 +1,142 @@
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#include <qpe/config.h>
14 15
15/* QT */ 16/* QT */
16#include <qmessagebox.h> 17#include <qmessagebox.h>
17#include <qpopupmenu.h> 18#include <qpopupmenu.h>
18 19
19using namespace Opie::Core; 20using namespace Opie::Core;
20AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) 21AccountView::AccountView( QWidget *parent, const char *name, WFlags flags )
21 : QListView( parent, name, flags ) 22 : QListView( parent, name, flags )
22{ 23{
23 setSorting(0); 24 setSorting(0);
24 setSelectionMode(Single); 25 setSelectionMode(Single);
25 m_rightPressed = false; 26 m_rightPressed = false;
26 27
27 connect( this, SIGNAL( selectionChanged(QListViewItem*) ), 28 connect( this, SIGNAL( selectionChanged(QListViewItem*) ),
28 SLOT( slotSelectionChanged(QListViewItem*) ) ); 29 SLOT( slotSelectionChanged(QListViewItem*) ) );
29 connect( this, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, 30 connect( this, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this,
30 SLOT( slotMouseButton(int,QListViewItem*,const QPoint&,int) ) ); 31 SLOT( slotMouseButton(int,QListViewItem*,const QPoint&,int) ) );
31 connect( this, SIGNAL(clicked(QListViewItem*) ),this, 32 connect( this, SIGNAL(clicked(QListViewItem*) ),this,
32 SLOT( slotMouseClicked(QListViewItem*) ) ); 33 SLOT( slotMouseClicked(QListViewItem*) ) );
33 m_currentItem = 0; 34 m_currentItem = 0;
35 readSettings();
34} 36}
35 37
36AccountView::~AccountView() 38AccountView::~AccountView()
37{ 39{
38 imapAccounts.clear(); 40 imapAccounts.clear();
39 mhAccounts.clear(); 41 mhAccounts.clear();
40} 42}
41 43
44void AccountView::readSettings()
45{
46 Config cfg("mail");
47 cfg.setGroup( "Settings" );
48 m_clickopens = cfg.readBoolEntry("clickOpensFolder",true);
49}
50
42void AccountView::slotSelectionChanged(QListViewItem*item) 51void AccountView::slotSelectionChanged(QListViewItem*item)
43{ 52{
44 if (!item) { 53 if (!item) {
45 emit serverSelected(0); 54 emit serverSelected(0);
46 return; 55 return;
47 } 56 }
48 AccountViewItem *view = static_cast<AccountViewItem *>(item); 57 AccountViewItem *view = static_cast<AccountViewItem *>(item);
49 emit serverSelected(view->isServer()); 58 emit serverSelected(view->isServer());
50} 59}
51 60
52QMap<int,QString> AccountView::currentServerMenu()const 61QMap<int,QString> AccountView::currentServerMenu()const
53{ 62{
54 QMap<int,QString> smap; 63 QMap<int,QString> smap;
55 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem()); 64 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem());
56 if (!view)return smap; 65 if (!view)return smap;
57 smap = view->serverMenu(); 66 smap = view->serverMenu();
58 return smap; 67 return smap;
59} 68}
60 69
61QMap<int,QString> AccountView::currentFolderMenu()const 70QMap<int,QString> AccountView::currentFolderMenu()const
62{ 71{
63 QMap<int,QString> fmap; 72 QMap<int,QString> fmap;
64 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem()); 73 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem());
65 if (!view)return fmap; 74 if (!view)return fmap;
66 fmap = view->folderMenu(); 75 fmap = view->folderMenu();
67 return fmap; 76 return fmap;
68} 77}
69 78
70void AccountView::slotContextMenu(int id) 79void AccountView::slotContextMenu(int id)
71{ 80{
72 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem()); 81 AccountViewItem *view = static_cast<AccountViewItem *>(currentItem());
73 if (!view) return; 82 if (!view) return;
74 bool del = view->contextMenuSelected(id); 83 bool del = view->contextMenuSelected(id);
75 if (!del && view->isServer()!=2) { 84 if (!del && view->isServer()!=2) {
76 emit refreshMenues(view->isServer()); 85 emit refreshMenues(view->isServer());
77 } 86 }
78} 87}
79 88
80void AccountView::slotRightButton(int, QListViewItem * item,const QPoint&,int) 89void AccountView::slotRightButton(int, QListViewItem * item,const QPoint&,int)
81{ 90{
82 m_rightPressed = true; 91 m_rightPressed = true;
83 if (!item) return; 92 if (!item) return;
84 AccountViewItem *view = static_cast<AccountViewItem *>(item); 93 AccountViewItem *view = static_cast<AccountViewItem *>(item);
85 QPopupMenu*m = view->getContextMenu(); 94 QPopupMenu*m = view->getContextMenu();
86 if (!m) return; 95 if (!m) return;
87 connect(m,SIGNAL(activated(int)),this,SLOT(slotContextMenu(int))); 96 connect(m,SIGNAL(activated(int)),this,SLOT(slotContextMenu(int)));
88 m->setFocus(); 97 m->setFocus();
89 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); 98 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) );
90 delete m; 99 delete m;
91} 100}
92 101
93void AccountView::slotLeftButton(int, QListViewItem *,const QPoint&,int) 102void AccountView::slotLeftButton(int, QListViewItem *,const QPoint&,int)
94{ 103{
95 m_rightPressed = false; 104 m_rightPressed = false;
96} 105}
97 106
98void AccountView::slotMouseClicked(QListViewItem*item) 107void AccountView::slotMouseClicked(QListViewItem*item)
99{ 108{
100 if (m_rightPressed) return; 109 if (m_rightPressed) return;
101 if (!item || m_currentItem == item) return; 110 if (!item || m_currentItem == item||!m_clickopens) return;
102 /* ### ToDo check settings if on single tab it should open */ 111 /* ### ToDo check settings if on single tab it should open */
103 m_currentItem = item; 112 m_currentItem = item;
104 refresh(m_currentItem); 113 refresh(m_currentItem);
105} 114}
106 115
107void AccountView::slotMouseButton(int button, QListViewItem * item,const QPoint&pos,int column) 116void AccountView::slotMouseButton(int button, QListViewItem * item,const QPoint&pos,int column)
108{ 117{
109 if (button==1) { 118 if (button==1) {
110 slotLeftButton(button,item,pos,column); 119 slotLeftButton(button,item,pos,column);
111 } else if (button==2) { 120 } else if (button==2) {
112 slotRightButton(button,item,pos,column); 121 slotRightButton(button,item,pos,column);
113 } 122 }
114} 123}
115 124
116void AccountView::populate( QList<Account> list ) 125void AccountView::populate( QList<Account> list )
117{ 126{
118 clear(); 127 clear();
119 128
120 imapAccounts.clear(); 129 imapAccounts.clear();
121 mhAccounts.clear(); 130 mhAccounts.clear();
122 mhAccounts.append(new MHviewItem(AbstractMail::defaultLocalfolder(),this)); 131 mhAccounts.append(new MHviewItem(AbstractMail::defaultLocalfolder(),this));
123 132
124 Account *it; 133 Account *it;
125 for ( it = list.first(); it; it = list.next() ) { 134 for ( it = list.first(); it; it = list.next() ) {
126 if ( it->getType() == MAILLIB::A_IMAP ) { 135 if ( it->getType() == MAILLIB::A_IMAP ) {
127 IMAPaccount *imap = static_cast<IMAPaccount *>(it); 136 IMAPaccount *imap = static_cast<IMAPaccount *>(it);
128 odebug << "added IMAP " + imap->getAccountName() << oendl; 137 odebug << "added IMAP " + imap->getAccountName() << oendl;
129 imapAccounts.append(new IMAPviewItem( imap, this )); 138 imapAccounts.append(new IMAPviewItem( imap, this ));
130 } else if ( it->getType() == MAILLIB::A_POP3 ) { 139 } else if ( it->getType() == MAILLIB::A_POP3 ) {
131 POP3account *pop3 = static_cast<POP3account *>(it); 140 POP3account *pop3 = static_cast<POP3account *>(it);
132 odebug << "added POP3 " + pop3->getAccountName() << oendl; 141 odebug << "added POP3 " + pop3->getAccountName() << oendl;
133 /* must not be hold 'cause it isn't required */ 142 /* must not be hold 'cause it isn't required */
diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h
index 5c4b559..418f4f3 100644
--- a/noncore/net/mail/accountview.h
+++ b/noncore/net/mail/accountview.h
@@ -4,55 +4,57 @@
4#include <libmailwrapper/mailtypes.h> 4#include <libmailwrapper/mailtypes.h>
5#include <opie2/osmartpointer.h> 5#include <opie2/osmartpointer.h>
6#include <qlistview.h> 6#include <qlistview.h>
7#include <qlist.h> 7#include <qlist.h>
8#include <qmap.h> 8#include <qmap.h>
9 9
10class Selectstore; 10class Selectstore;
11class Folder; 11class Folder;
12class AbstractMail; 12class AbstractMail;
13class Account; 13class Account;
14class IMAPviewItem; 14class IMAPviewItem;
15class MHviewItem; 15class MHviewItem;
16 16
17class AccountView : public QListView 17class AccountView : public QListView
18{ 18{
19 Q_OBJECT 19 Q_OBJECT
20 20
21public: 21public:
22 AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); 22 AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
23 virtual ~AccountView(); 23 virtual ~AccountView();
24 virtual void populate( QList<Account> list ); 24 virtual void populate( QList<Account> list );
25 virtual RecBodyP fetchBody(const Opie::Core::OSmartPointer<RecMail>&aMail); 25 virtual RecBodyP fetchBody(const Opie::Core::OSmartPointer<RecMail>&aMail);
26 virtual void downloadMails(const Opie::Core::OSmartPointer<Folder>&fromFolder,AbstractMail*fromWrapper); 26 virtual void downloadMails(const Opie::Core::OSmartPointer<Folder>&fromFolder,AbstractMail*fromWrapper);
27 virtual bool currentisDraft(); 27 virtual bool currentisDraft();
28 QMap<int,QString> currentServerMenu()const; 28 QMap<int,QString> currentServerMenu()const;
29 QMap<int,QString> currentFolderMenu()const; 29 QMap<int,QString> currentFolderMenu()const;
30 30
31public slots: 31public slots:
32 virtual void refreshAll(); 32 virtual void refreshAll();
33 virtual void refresh(QListViewItem *item); 33 virtual void refresh(QListViewItem *item);
34 virtual void refreshCurrent(); 34 virtual void refreshCurrent();
35 virtual void slotContextMenu(int id); 35 virtual void slotContextMenu(int id);
36 virtual void readSettings();
36 37
37 void setupFolderselect(Selectstore*sels); 38 void setupFolderselect(Selectstore*sels);
38 39
39signals: 40signals:
40 void refreshMailview(const QValueList<RecMailP>& ); 41 void refreshMailview(const QValueList<RecMailP>& );
41 void serverSelected(int); 42 void serverSelected(int);
42 void refreshMenues(int); 43 void refreshMenues(int);
43 44
44protected: 45protected:
45 QListViewItem* m_currentItem; 46 QListViewItem* m_currentItem;
46 QValueList<IMAPviewItem*> imapAccounts; 47 QValueList<IMAPviewItem*> imapAccounts;
47 QValueList<MHviewItem*> mhAccounts; 48 QValueList<MHviewItem*> mhAccounts;
48 bool m_rightPressed:1; 49 bool m_rightPressed:1;
50 bool m_clickopens:1;
49 51
50protected slots: 52protected slots:
51 virtual void slotRightButton(int, QListViewItem *,const QPoint&,int); 53 virtual void slotRightButton(int, QListViewItem *,const QPoint&,int);
52 virtual void slotLeftButton(int, QListViewItem *,const QPoint&,int); 54 virtual void slotLeftButton(int, QListViewItem *,const QPoint&,int);
53 virtual void slotMouseButton(int, QListViewItem *,const QPoint&,int); 55 virtual void slotMouseButton(int, QListViewItem *,const QPoint&,int);
54 virtual void slotMouseClicked(QListViewItem*); 56 virtual void slotMouseClicked(QListViewItem*);
55 virtual void slotSelectionChanged(QListViewItem*); 57 virtual void slotSelectionChanged(QListViewItem*);
56}; 58};
57 59
58#endif 60#endif
diff --git a/noncore/net/mail/defines.h b/noncore/net/mail/defines.h
index 5fcbf0f..50d63dd 100644
--- a/noncore/net/mail/defines.h
+++ b/noncore/net/mail/defines.h
@@ -1,59 +1,61 @@
1#ifndef DEFINE_CONSTANTS_H 1#ifndef DEFINE_CONSTANTS_H
2#define DEFINE_CONSTANTS_H 2#define DEFINE_CONSTANTS_H
3 3
4#include <qpe/resource.h> 4#include <qpe/resource.h>
5 5
6#define USER_AGENT "OpieMail v0.3" 6#define USER_AGENT "OpieMail v0.3"
7 7
8#define PIC_COMPOSEMAIL "mail/composemail" 8#define PIC_COMPOSEMAIL "mail/composemail"
9#define PIC_SENDQUEUED "mail/sendqueued" 9#define PIC_SENDQUEUED "mail/sendqueued"
10#define PIC_SHOWFOLDERS "mail/showfolders" 10#define PIC_SHOWFOLDERS "mail/showfolders"
11#define PIC_SYNC "mail/sync" 11#define PIC_SYNC "mail/sync"
12#define PIC_IMAPFOLDER "mail/imapfolder" 12#define PIC_IMAPFOLDER "mail/imapfolder"
13#define PIC_MBOXFOLDER "mail/mboxfolder" 13#define PIC_MBOXFOLDER "mail/mboxfolder"
14#define PIC_POP3FOLDER "mail/pop3folder" 14#define PIC_POP3FOLDER "mail/pop3folder"
15#define PIC_INBOXFOLDER "mail/inbox" 15#define PIC_INBOXFOLDER "mail/inbox"
16#define PIC_OUTBOXFOLDER "mail/outbox" 16#define PIC_OUTBOXFOLDER "mail/outbox"
17#define PIC_LOCALFOLDER "mail/localfolder" 17#define PIC_LOCALFOLDER "mail/localfolder"
18 18
19#define PIC_OFFLINE "mail/notconnected" 19#define PIC_OFFLINE "mail/notconnected"
20#define PIC_DOCUMENT "DocsIcon"
20 21
21#define ICON_COMPOSEMAIL QIconSet( Resource::loadPixmap( PIC_COMPOSEMAIL ) ) 22#define ICON_COMPOSEMAIL QIconSet( Resource::loadPixmap( PIC_COMPOSEMAIL ) )
22#define ICON_SENDQUEUED QIconSet( Resource::loadPixmap( PIC_SENDQUEUED ) ) 23#define ICON_SENDQUEUED QIconSet( Resource::loadPixmap( PIC_SENDQUEUED ) )
23#define ICON_SHOWFOLDERS QIconSet( Resource::loadPixmap( PIC_SHOWFOLDERS ) ) 24#define ICON_SHOWFOLDERS QIconSet( Resource::loadPixmap( PIC_SHOWFOLDERS ) )
24#define ICON_SEARCHMAILS QIconSet( Resource::loadPixmap( PIC_SEARCHMAILS ) ) 25#define ICON_SEARCHMAILS QIconSet( Resource::loadPixmap( PIC_SEARCHMAILS ) )
25#define ICON_EDITSETTINGS QIconSet( Resource::loadPixmap( PIC_EDITSETTINGS ) ) 26#define ICON_EDITSETTINGS QIconSet( Resource::loadPixmap( PIC_EDITSETTINGS ) )
26#define ICON_EDITACCOUNTS QIconSet( Resource::loadPixmap( PIC_EDITACCOUNTS ) ) 27#define ICON_EDITACCOUNTS QIconSet( Resource::loadPixmap( PIC_EDITACCOUNTS ) )
27#define ICON_SYNC QIconSet( Resource::loadPixmap( PIC_SYNC ) ) 28#define ICON_SYNC QIconSet( Resource::loadPixmap( PIC_SYNC ) )
29#define ICON_READMAIL QIconSet( Resource::loadPixmap( PIC_DOCUMENT))
28 30
29#define PIXMAP_IMAPFOLDER QPixmap( Resource::loadPixmap( PIC_IMAPFOLDER ) ) 31#define PIXMAP_IMAPFOLDER QPixmap( Resource::loadPixmap( PIC_IMAPFOLDER ) )
30#define PIXMAP_POP3FOLDER QPixmap( Resource::loadPixmap( PIC_POP3FOLDER ) ) 32#define PIXMAP_POP3FOLDER QPixmap( Resource::loadPixmap( PIC_POP3FOLDER ) )
31#define PIXMAP_INBOXFOLDER QPixmap( Resource::loadPixmap( PIC_INBOXFOLDER) ) 33#define PIXMAP_INBOXFOLDER QPixmap( Resource::loadPixmap( PIC_INBOXFOLDER) )
32#define PIXMAP_MBOXFOLDER QPixmap( Resource::loadPixmap( PIC_MBOXFOLDER ) ) 34#define PIXMAP_MBOXFOLDER QPixmap( Resource::loadPixmap( PIC_MBOXFOLDER ) )
33#define PIXMAP_OUTBOXFOLDER QPixmap( Resource::loadPixmap( PIC_OUTBOXFOLDER) ) 35#define PIXMAP_OUTBOXFOLDER QPixmap( Resource::loadPixmap( PIC_OUTBOXFOLDER) )
34#define PIXMAP_LOCALFOLDER QPixmap( Resource::loadPixmap( PIC_LOCALFOLDER) ) 36#define PIXMAP_LOCALFOLDER QPixmap( Resource::loadPixmap( PIC_LOCALFOLDER) )
35#define PIXMAP_OFFLINE QPixmap( Resource::loadPixmap( PIC_OFFLINE) ) 37#define PIXMAP_OFFLINE QPixmap( Resource::loadPixmap( PIC_OFFLINE) )
36 38
37#define IMAP_PORT "143" 39#define IMAP_PORT "143"
38#define IMAP_SSL_PORT "993" 40#define IMAP_SSL_PORT "993"
39#define SMTP_PORT "25" 41#define SMTP_PORT "25"
40#define SMTP_SSL_PORT "465" 42#define SMTP_SSL_PORT "465"
41#define POP3_PORT "110" 43#define POP3_PORT "110"
42#define POP3_SSL_PORT "995" 44#define POP3_SSL_PORT "995"
43#define NNTP_PORT "119" 45#define NNTP_PORT "119"
44#define NNTP_SSL_PORT "563" 46#define NNTP_SSL_PORT "563"
45 47
46/* used for decoding imapfoldername */ 48/* used for decoding imapfoldername */
47#define UNDEFINED 64 49#define UNDEFINED 64
48#define MAXLINE 76 50#define MAXLINE 76
49#define UTF16MASK 0x03FFUL 51#define UTF16MASK 0x03FFUL
50#define UTF16SHIFT 10 52#define UTF16SHIFT 10
51#define UTF16BASE 0x10000UL 53#define UTF16BASE 0x10000UL
52#define UTF16HIGHSTART 0xD800UL 54#define UTF16HIGHSTART 0xD800UL
53#define UTF16HIGHEND 0xDBFFUL 55#define UTF16HIGHEND 0xDBFFUL
54#define UTF16LOSTART 0xDC00UL 56#define UTF16LOSTART 0xDC00UL
55#define UTF16LOEND 0xDFFFUL 57#define UTF16LOEND 0xDFFFUL
56 58
57/* used for making menuids transparent */ 59/* used for making menuids transparent */
58#define FOLDER_MENU_REFRESH_HEADER 0 60#define FOLDER_MENU_REFRESH_HEADER 0
59#define FOLDER_MENU_DELETE_ALL_MAILS 1 61#define FOLDER_MENU_DELETE_ALL_MAILS 1
diff --git a/noncore/net/mail/mainwindow.cpp b/noncore/net/mail/mainwindow.cpp
index 3689352..b587424 100644
--- a/noncore/net/mail/mainwindow.cpp
+++ b/noncore/net/mail/mainwindow.cpp
@@ -34,123 +34,130 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
34 folderMenu = new QPopupMenu( mailMenu ); 34 folderMenu = new QPopupMenu( mailMenu );
35 m_ServerMenuId = mailMenu->insertItem( tr( "Server" ), serverMenu ); 35 m_ServerMenuId = mailMenu->insertItem( tr( "Server" ), serverMenu );
36 m_FolderMenuId = mailMenu->insertItem( tr( "Folder" ), folderMenu ); 36 m_FolderMenuId = mailMenu->insertItem( tr( "Folder" ), folderMenu );
37 } else { 37 } else {
38 serverMenu = new QPopupMenu( menuBar ); 38 serverMenu = new QPopupMenu( menuBar );
39 folderMenu = new QPopupMenu( menuBar ); 39 folderMenu = new QPopupMenu( menuBar );
40 m_FolderMenuId = menuBar->insertItem( tr( "Folder" ), folderMenu ); 40 m_FolderMenuId = menuBar->insertItem( tr( "Folder" ), folderMenu );
41 m_ServerMenuId = menuBar->insertItem( tr( "Server" ), serverMenu ); 41 m_ServerMenuId = menuBar->insertItem( tr( "Server" ), serverMenu );
42 } 42 }
43 serverMenu->insertItem(tr("Disconnect"),SERVER_MENU_DISCONNECT); 43 serverMenu->insertItem(tr("Disconnect"),SERVER_MENU_DISCONNECT);
44 serverMenu->insertItem(tr("Set on/offline"),SERVER_MENU_OFFLINE); 44 serverMenu->insertItem(tr("Set on/offline"),SERVER_MENU_OFFLINE);
45 serverMenu->insertSeparator(); 45 serverMenu->insertSeparator();
46 serverMenu->insertItem(tr("Refresh folder list"),SERVER_MENU_REFRESH_FOLDER); 46 serverMenu->insertItem(tr("Refresh folder list"),SERVER_MENU_REFRESH_FOLDER);
47 serverMenu->insertItem(tr("Create new folder"),SERVER_MENU_CREATE_FOLDER); 47 serverMenu->insertItem(tr("Create new folder"),SERVER_MENU_CREATE_FOLDER);
48 serverMenu->insertSeparator(); 48 serverMenu->insertSeparator();
49 serverMenu->insertItem(tr("(Un-)Subscribe groups"),SERVER_MENU_SUBSCRIBE); 49 serverMenu->insertItem(tr("(Un-)Subscribe groups"),SERVER_MENU_SUBSCRIBE);
50 50
51 folderMenu->insertItem(tr("Refresh headerlist"),FOLDER_MENU_REFRESH_HEADER); 51 folderMenu->insertItem(tr("Refresh headerlist"),FOLDER_MENU_REFRESH_HEADER);
52 folderMenu->insertItem(tr("Delete all mails"),FOLDER_MENU_DELETE_ALL_MAILS); 52 folderMenu->insertItem(tr("Delete all mails"),FOLDER_MENU_DELETE_ALL_MAILS);
53 folderMenu->insertItem(tr("New subfolder"),FOLDER_MENU_NEW_SUBFOLDER); 53 folderMenu->insertItem(tr("New subfolder"),FOLDER_MENU_NEW_SUBFOLDER);
54 folderMenu->insertItem(tr("Delete folder"),FOLDER_MENU_DELETE_FOLDER); 54 folderMenu->insertItem(tr("Delete folder"),FOLDER_MENU_DELETE_FOLDER);
55 folderMenu->insertItem(tr("Move/Copie all mails"),FOLDER_MENU_MOVE_MAILS); 55 folderMenu->insertItem(tr("Move/Copie all mails"),FOLDER_MENU_MOVE_MAILS);
56 menuBar->setItemEnabled(m_ServerMenuId,false); 56 menuBar->setItemEnabled(m_ServerMenuId,false);
57 menuBar->setItemEnabled(m_FolderMenuId,false); 57 menuBar->setItemEnabled(m_FolderMenuId,false);
58 58
59 addToolBar( toolBar ); 59 addToolBar( toolBar );
60 toolBar->setHorizontalStretchable( true ); 60 toolBar->setHorizontalStretchable( true );
61 61
62 QLabel *spacer = new QLabel( toolBar ); 62 QLabel *spacer = new QLabel( toolBar );
63 spacer->setBackgroundMode( QWidget::PaletteButton ); 63 spacer->setBackgroundMode( QWidget::PaletteButton );
64 toolBar->setStretchableWidget( spacer ); 64 toolBar->setStretchableWidget( spacer );
65 65
66 readMail = new QAction(tr("Read current mail"),ICON_READMAIL,0,0,this);
67 readMail->addTo(toolBar);
68 readMail->addTo(mailMenu);
69 connect(readMail,SIGNAL(activated()),this,SLOT(displayMail()));
70
66 composeMail = new QAction( tr( "Compose new mail" ), ICON_COMPOSEMAIL, 71 composeMail = new QAction( tr( "Compose new mail" ), ICON_COMPOSEMAIL,
67 0, 0, this ); 72 0, 0, this );
68 composeMail->addTo( toolBar ); 73 composeMail->addTo( toolBar );
69 composeMail->addTo( mailMenu ); 74 composeMail->addTo( mailMenu );
70 75
76
71 sendQueued = new QAction( tr( "Send queued mails" ), ICON_SENDQUEUED, 77 sendQueued = new QAction( tr( "Send queued mails" ), ICON_SENDQUEUED,
72 0, 0, this ); 78 0, 0, this );
73 sendQueued->addTo( toolBar ); 79 sendQueued->addTo( toolBar );
74 sendQueued->addTo( mailMenu ); 80 sendQueued->addTo( mailMenu );
75 81
76 /* 82 /*
77 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC, 83 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC,
78 0, 0, this ); 84 0, 0, this );
79 syncFolders->addTo( toolBar ); 85 syncFolders->addTo( toolBar );
80 syncFolders->addTo( mailMenu ); 86 syncFolders->addTo( mailMenu );
81 */ 87 */
82 88
83 showFolders = new QAction( tr( "Show/Hide folders" ), ICON_SHOWFOLDERS, 89 showFolders = new QAction( tr( "Show/Hide folders" ), ICON_SHOWFOLDERS,
84 0, 0, this, 0, true ); 90 0, 0, this, 0, true );
85 showFolders->addTo( toolBar ); 91 showFolders->addTo( toolBar );
86 showFolders->addTo( mailMenu ); 92 showFolders->addTo( mailMenu );
87 showFolders->setOn( true ); 93 showFolders->setOn( true );
88 connect(showFolders, SIGNAL( toggled(bool) ), 94 connect(showFolders, SIGNAL( toggled(bool) ),
89 SLOT( slotShowFolders(bool) ) ); 95 SLOT( slotShowFolders(bool) ) );
90 96
91 /* 97 /*
92 searchMails = new QAction( tr( "Search mails" ), QIconSet( Resource::loadPixmap("find") ), 98 searchMails = new QAction( tr( "Search mails" ), QIconSet( Resource::loadPixmap("find") ),
93 0, 0, this ); 99 0, 0, this );
94 searchMails->addTo( toolBar ); 100 searchMails->addTo( toolBar );
95 searchMails->addTo( mailMenu ); 101 searchMails->addTo( mailMenu );
96 */ 102 */
97 103
98 deleteMails = new QAction(tr("Delete Mail"), QIconSet( Resource::loadPixmap("trash")), 0, 0, this); 104 deleteMails = new QAction(tr("Delete Mail"), QIconSet( Resource::loadPixmap("trash")), 0, 0, this);
99 deleteMails->addTo( toolBar ); 105 deleteMails->addTo( toolBar );
100 deleteMails->addTo( mailMenu ); 106 deleteMails->addTo( mailMenu );
101 connect( deleteMails, SIGNAL( activated() ), 107 connect( deleteMails, SIGNAL( activated() ),
102 SLOT( slotDeleteMail() ) ); 108 SLOT( slotDeleteMail() ) );
103 109
104 editSettings = new QAction( tr( "Edit settings" ), QIconSet( Resource::loadPixmap("SettingsIcon") ) , 110 editSettings = new QAction( tr( "Edit settings" ), QIconSet( Resource::loadPixmap("SettingsIcon") ) ,
105 0, 0, this ); 111 0, 0, this );
106 editSettings->addTo( settingsMenu ); 112 editSettings->addTo( settingsMenu );
107 connect( editSettings, SIGNAL( activated() ), 113 connect( editSettings, SIGNAL( activated() ),
108 SLOT( slotEditSettings() ) ); 114 SLOT( slotEditSettings() ) );
109 editAccounts = new QAction( tr( "Configure accounts" ), QIconSet( Resource::loadPixmap("mail/editaccounts") ) , 115 editAccounts = new QAction( tr( "Configure accounts" ), QIconSet( Resource::loadPixmap("mail/editaccounts") ) ,
110 0, 0, this ); 116 0, 0, this );
111 editAccounts->addTo( settingsMenu ); 117 editAccounts->addTo( settingsMenu );
112 118
113 119
114 QWidget *view = new QWidget( this ); 120 QWidget *view = new QWidget( this );
115 setCentralWidget( view ); 121 setCentralWidget( view );
116 layout = new QBoxLayout ( view, QBoxLayout::LeftToRight ); 122 layout = new QBoxLayout ( view, QBoxLayout::LeftToRight );
117 123
118 folderView = new AccountView( view ); 124 folderView = new AccountView( view );
119 folderView->header()->hide(); 125 folderView->header()->hide();
120 folderView->setRootIsDecorated( true ); 126 folderView->setRootIsDecorated( true );
121 folderView->addColumn( tr( "Mailbox" ) ); 127 folderView->addColumn( tr( "Mailbox" ) );
122 connect(folderView,SIGNAL(serverSelected(int)),this,SLOT(serverSelected(int))); 128 connect(folderView,SIGNAL(serverSelected(int)),this,SLOT(serverSelected(int)));
123 connect(serverMenu,SIGNAL(activated(int)),folderView,SLOT(slotContextMenu(int))); 129 connect(serverMenu,SIGNAL(activated(int)),folderView,SLOT(slotContextMenu(int)));
124 connect(folderMenu,SIGNAL(activated(int)),folderView,SLOT(slotContextMenu(int))); 130 connect(folderMenu,SIGNAL(activated(int)),folderView,SLOT(slotContextMenu(int)));
131 connect(this,SIGNAL(settingsChanged()),folderView,SLOT(readSettings()));
125 132
126 133
127 layout->addWidget( folderView ); 134 layout->addWidget( folderView );
128 135
129 mailView = new QListView( view ); 136 mailView = new QListView( view );
130 mailView->addColumn( "" ); 137 mailView->addColumn( "" );
131 mailView->addColumn( tr( "Subject" ),QListView::Manual ); 138 mailView->addColumn( tr( "Subject" ),QListView::Manual );
132 mailView->addColumn( tr( "Sender" ),QListView::Manual ); 139 mailView->addColumn( tr( "Sender" ),QListView::Manual );
133 mailView->addColumn( tr( "Size" ),QListView::Manual); 140 mailView->addColumn( tr( "Size" ),QListView::Manual);
134 mailView->addColumn( tr( "Date" )); 141 mailView->addColumn( tr( "Date" ));
135 mailView->setAllColumnsShowFocus(true); 142 mailView->setAllColumnsShowFocus(true);
136 mailView->setShowSortIndicator(true); 143 mailView->setShowSortIndicator(true);
137 mailView->setSorting(4,false); 144 mailView->setSorting(4,false);
138 145
139 layout->addWidget( mailView ); 146 layout->addWidget( mailView );
140 layout->setStretchFactor( folderView, 1 ); 147 layout->setStretchFactor( folderView, 1 );
141 layout->setStretchFactor( mailView, 2 ); 148 layout->setStretchFactor( mailView, 2 );
142 149
143 m_Rotate = (QApplication::desktop()->width() > QApplication::desktop()->height()?0:90); 150 m_Rotate = (QApplication::desktop()->width() > QApplication::desktop()->height()?0:90);
144 151
145 slotAdjustLayout(); 152 slotAdjustLayout();
146 153
147 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); 154 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold);
148 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); 155 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold);
149 156
150 connect( mailView, SIGNAL( mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ),this, 157 connect( mailView, SIGNAL( mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ),this,
151 SLOT( mailLeftClicked(int,QListViewItem*,const QPoint&,int) ) ); 158 SLOT( mailLeftClicked(int,QListViewItem*,const QPoint&,int) ) );
152 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, 159 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this,
153 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); 160 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) );
154 161
155 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), 162 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)),
156 this,SLOT(refreshMailView(const QValueList<RecMailP>&))); 163 this,SLOT(refreshMailView(const QValueList<RecMailP>&)));
diff --git a/noncore/net/mail/mainwindow.h b/noncore/net/mail/mainwindow.h
index b781d62..6449ce8 100644
--- a/noncore/net/mail/mainwindow.h
+++ b/noncore/net/mail/mainwindow.h
@@ -20,42 +20,44 @@ class MainWindow : public QMainWindow
20{ 20{
21 Q_OBJECT 21 Q_OBJECT
22 22
23public: 23public:
24 MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); 24 MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
25 virtual ~MainWindow(); 25 virtual ~MainWindow();
26 26
27public slots: 27public slots:
28 virtual void slotAdjustColumns(); 28 virtual void slotAdjustColumns();
29 virtual void appMessage(const QCString &msg, const QByteArray &data); 29 virtual void appMessage(const QCString &msg, const QByteArray &data);
30 virtual void slotComposeMail(); 30 virtual void slotComposeMail();
31 virtual void systemMessage( const QCString&, const QByteArray& ); 31 virtual void systemMessage( const QCString&, const QByteArray& );
32 32
33protected slots: 33protected slots:
34 virtual void slotSendQueued(); 34 virtual void slotSendQueued();
35 virtual void slotEditAccounts(); 35 virtual void slotEditAccounts();
36 virtual void slotShowFolders( bool show ); 36 virtual void slotShowFolders( bool show );
37 virtual void refreshMailView(const QValueList<RecMailP>&); 37 virtual void refreshMailView(const QValueList<RecMailP>&);
38 virtual void displayMail(); 38 virtual void displayMail();
39 virtual void slotDeleteMail(); 39 virtual void slotDeleteMail();
40 virtual void mailHold(int, QListViewItem *,const QPoint&,int); 40 virtual void mailHold(int, QListViewItem *,const QPoint&,int);
41 virtual void slotAdjustLayout(); 41 virtual void slotAdjustLayout();
42 virtual void slotEditSettings(); 42 virtual void slotEditSettings();
43 virtual void mailLeftClicked( int, QListViewItem *,const QPoint&,int ); 43 virtual void mailLeftClicked( int, QListViewItem *,const QPoint&,int );
44 virtual void serverSelected(int); 44 virtual void serverSelected(int);
45 45
46protected: 46protected:
47 QToolBar *toolBar; 47 QToolBar *toolBar;
48 QMenuBar *menuBar; 48 QMenuBar *menuBar;
49 QPopupMenu *mailMenu, *settingsMenu,*serverMenu,*folderMenu; 49 QPopupMenu *mailMenu, *settingsMenu,*serverMenu,*folderMenu;
50 50
51 QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails, 51 QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails,
52 *editSettings, *editAccounts, *syncFolders; 52 *editSettings, *editAccounts, *syncFolders,*readMail;
53 AccountView *folderView; 53 AccountView *folderView;
54 QListView *mailView; 54 QListView *mailView;
55 QBoxLayout *layout; 55 QBoxLayout *layout;
56 int m_Rotate; 56 int m_Rotate;
57 QCopChannel* m_sysChannel; 57 QCopChannel* m_sysChannel;
58 int m_ServerMenuId,m_FolderMenuId; 58 int m_ServerMenuId,m_FolderMenuId;
59signals:
60 void settingsChanged();
59}; 61};
60 62
61#endif 63#endif
diff --git a/noncore/net/mail/opiemail.cpp b/noncore/net/mail/opiemail.cpp
index 1bc81e4..fb8877a 100644
--- a/noncore/net/mail/opiemail.cpp
+++ b/noncore/net/mail/opiemail.cpp
@@ -1,49 +1,50 @@
1 1
2#include "settingsdialog.h" 2#include "settingsdialog.h"
3#include "opiemail.h" 3#include "opiemail.h"
4#include "editaccounts.h" 4#include "editaccounts.h"
5#include "composemail.h" 5#include "composemail.h"
6#include "mailistviewitem.h" 6#include "mailistviewitem.h"
7#include "viewmail.h" 7#include "viewmail.h"
8#include "selectstore.h" 8#include "selectstore.h"
9#include "selectsmtp.h" 9#include "selectsmtp.h"
10 10
11#include <libmailwrapper/smtpwrapper.h> 11#include <libmailwrapper/smtpwrapper.h>
12#include <libmailwrapper/mailtypes.h> 12#include <libmailwrapper/mailtypes.h>
13#include <libmailwrapper/abstractmail.h> 13#include <libmailwrapper/abstractmail.h>
14/* OPIE */ 14/* OPIE */
15#include <opie2/odebug.h> 15#include <opie2/odebug.h>
16#include <qpe/resource.h> 16#include <qpe/resource.h>
17#include <qpe/qpeapplication.h> 17#include <qpe/qpeapplication.h>
18#include <qpe/config.h>
18 19
19/* QT */ 20/* QT */
20#include <qmap.h> 21#include <qmap.h>
21#include <qvaluelist.h> 22#include <qvaluelist.h>
22 23
23/* UNIX */ 24/* UNIX */
24#include <signal.h> 25#include <signal.h>
25 26
26using namespace Opie::Core; 27using namespace Opie::Core;
27 28
28typedef QMapNode<QString,QString> tkeyvalues; 29typedef QMapNode<QString,QString> tkeyvalues;
29typedef QValueList<tkeyvalues> tvaluelist; 30typedef QValueList<tkeyvalues> tvaluelist;
30 31
31class ValueExplode 32class ValueExplode
32{ 33{
33protected: 34protected:
34 //! what was parsed last 35 //! what was parsed last
35 tvaluelist m_LastParsed; 36 tvaluelist m_LastParsed;
36 //! the delemiter to use 37 //! the delemiter to use
37 QString mDelemiter; 38 QString mDelemiter;
38 //! the inner delemiter 39 //! the inner delemiter
39 QString m2Delemiter; 40 QString m2Delemiter;
40 //! the real split routine 41 //! the real split routine
41 void splitit(); 42 void splitit();
42 //! the content 43 //! the content
43 QString m_Command; 44 QString m_Command;
44 //! constructor 45 //! constructor
45 ValueExplode(){} 46 ValueExplode(){}
46public: 47public:
47 //! constructor 48 //! constructor
48 /*! 49 /*!
49 * \param aCommand the string to be splitted 50 * \param aCommand the string to be splitted
@@ -77,64 +78,68 @@ void ValueExplode::splitit()
77 QString iLine; 78 QString iLine;
78 m_LastParsed.clear(); 79 m_LastParsed.clear();
79 if (mDelemiter.isEmpty()||m2Delemiter.isEmpty()) { 80 if (mDelemiter.isEmpty()||m2Delemiter.isEmpty()) {
80 m_LastParsed.append(tkeyvalues(m_Command,"")); 81 m_LastParsed.append(tkeyvalues(m_Command,""));
81 return; 82 return;
82 } 83 }
83 int pos,pos2; 84 int pos,pos2;
84 unsigned startpos = 0; 85 unsigned startpos = 0;
85 iLine = m_Command; 86 iLine = m_Command;
86 while ( (pos = iLine.find(mDelemiter,startpos))!=-1) { 87 while ( (pos = iLine.find(mDelemiter,startpos))!=-1) {
87 pos2 = iLine.find(m2Delemiter,startpos); 88 pos2 = iLine.find(m2Delemiter,startpos);
88 if (pos2==-1||pos2>pos) { 89 if (pos2==-1||pos2>pos) {
89 m_LastParsed.append(tkeyvalues(iLine.mid(startpos,pos-startpos),"")); 90 m_LastParsed.append(tkeyvalues(iLine.mid(startpos,pos-startpos),""));
90 } else { 91 } else {
91 m_LastParsed.append(tkeyvalues(iLine.mid(startpos,pos2-startpos),iLine.mid(pos2+1,pos-pos2-1))); 92 m_LastParsed.append(tkeyvalues(iLine.mid(startpos,pos2-startpos),iLine.mid(pos2+1,pos-pos2-1)));
92 } 93 }
93 startpos = pos+1; 94 startpos = pos+1;
94 } 95 }
95 if (startpos<iLine.length()) { 96 if (startpos<iLine.length()) {
96 pos2 = iLine.find(m2Delemiter,startpos); 97 pos2 = iLine.find(m2Delemiter,startpos);
97 if (pos2==-1) { 98 if (pos2==-1) {
98 m_LastParsed.append(tkeyvalues(iLine.mid(startpos),"")); 99 m_LastParsed.append(tkeyvalues(iLine.mid(startpos),""));
99 } else { 100 } else {
100 m_LastParsed.append(tkeyvalues(iLine.mid(startpos,pos2-startpos),iLine.mid(pos2+1))); 101 m_LastParsed.append(tkeyvalues(iLine.mid(startpos,pos2-startpos),iLine.mid(pos2+1)));
101 } 102 }
102 } 103 }
103} 104}
104 105
105OpieMail::OpieMail( QWidget *parent, const char *name, WFlags ) 106OpieMail::OpieMail( QWidget *parent, const char *name, WFlags )
106 : MainWindow( parent, name, WStyle_ContextHelp ) 107 : MainWindow( parent, name, WStyle_ContextHelp )
107{ 108{
108 setup_signalblocking(); 109 setup_signalblocking();
110 Config cfg("mail");
111 cfg.setGroup( "Settings" );
112 m_clickopens = cfg.readBoolEntry("clickOpensMail",true);
113
109 settings = new Settings(); 114 settings = new Settings();
110 folderView->populate( settings->getAccounts() ); 115 folderView->populate( settings->getAccounts() );
111 connect(folderView,SIGNAL(refreshMenues(int)),this,SLOT(refreshMenu(int))); 116 connect(folderView,SIGNAL(refreshMenues(int)),this,SLOT(refreshMenu(int)));
112} 117}
113 118
114OpieMail::~OpieMail() 119OpieMail::~OpieMail()
115{ 120{
116 if (settings) delete settings; 121 if (settings) delete settings;
117} 122}
118 123
119void OpieMail::setup_signalblocking() 124void OpieMail::setup_signalblocking()
120{ 125{
121 /* for networking we must block SIGPIPE and Co. */ 126 /* for networking we must block SIGPIPE and Co. */
122 struct sigaction blocking_action,temp_action; 127 struct sigaction blocking_action,temp_action;
123 blocking_action.sa_handler = SIG_IGN; 128 blocking_action.sa_handler = SIG_IGN;
124 sigemptyset(&(blocking_action.sa_mask)); 129 sigemptyset(&(blocking_action.sa_mask));
125 blocking_action.sa_flags = 0; 130 blocking_action.sa_flags = 0;
126 sigaction(SIGPIPE,&blocking_action,&temp_action); 131 sigaction(SIGPIPE,&blocking_action,&temp_action);
127} 132}
128 133
129void OpieMail::appMessage(const QCString &msg, const QByteArray &data) 134void OpieMail::appMessage(const QCString &msg, const QByteArray &data)
130{ 135{
131 // copied from old mail2 136 // copied from old mail2
132 if (msg == "writeMail(QString,QString)") 137 if (msg == "writeMail(QString,QString)")
133 { 138 {
134 QDataStream stream(data,IO_ReadOnly); 139 QDataStream stream(data,IO_ReadOnly);
135 QString name, email; 140 QString name, email;
136 stream >> name >> email; 141 stream >> name >> email;
137 // removing the whitespaces at beginning and end is needed! 142 // removing the whitespaces at beginning and end is needed!
138 slotwriteMail(name.stripWhiteSpace(),email.stripWhiteSpace()); 143 slotwriteMail(name.stripWhiteSpace(),email.stripWhiteSpace());
139 } 144 }
140 else if (msg == "newMail()") 145 else if (msg == "newMail()")
@@ -205,65 +210,70 @@ void OpieMail::slotSendQueued()
205 { 210 {
206 smtp = smtpList.at(0); 211 smtp = smtpList.at(0);
207 } 212 }
208 else 213 else
209 { 214 {
210 smtp = 0; 215 smtp = 0;
211 selectsmtp selsmtp; 216 selectsmtp selsmtp;
212 selsmtp.setSelectionlist(&smtpList); 217 selsmtp.setSelectionlist(&smtpList);
213 if ( QPEApplication::execDialog( &selsmtp ) == QDialog::Accepted ) 218 if ( QPEApplication::execDialog( &selsmtp ) == QDialog::Accepted )
214 { 219 {
215 smtp = selsmtp.selected_smtp(); 220 smtp = selsmtp.selected_smtp();
216 } 221 }
217 } 222 }
218 if (smtp) 223 if (smtp)
219 { 224 {
220 SMTPwrapper * wrap = new SMTPwrapper(smtp); 225 SMTPwrapper * wrap = new SMTPwrapper(smtp);
221 if ( wrap->flushOutbox() ) 226 if ( wrap->flushOutbox() )
222 { 227 {
223 QMessageBox::information(0,tr("Info"),tr("Mail queue flushed")); 228 QMessageBox::information(0,tr("Info"),tr("Mail queue flushed"));
224 } 229 }
225 delete wrap; 230 delete wrap;
226 } 231 }
227} 232}
228 233
229void OpieMail::slotSearchMails() 234void OpieMail::slotSearchMails()
230{ 235{
231 odebug << "Search Mails" << oendl; 236 odebug << "Search Mails" << oendl;
232} 237}
233 238
234void OpieMail::slotEditSettings() 239void OpieMail::slotEditSettings()
235{ 240{
236 SettingsDialog settingsDialog( this, 0, true, WStyle_ContextHelp ); 241 SettingsDialog settingsDialog( this, 0, true, WStyle_ContextHelp );
237 QPEApplication::execDialog( &settingsDialog ); 242 if (QPEApplication::execDialog( &settingsDialog )) {
243 Config cfg("mail");
244 cfg.setGroup( "Settings" );
245 m_clickopens = cfg.readBoolEntry("clickOpensMail",true);
246 emit settingsChanged();
247 }
238} 248}
239 249
240void OpieMail::slotEditAccounts() 250void OpieMail::slotEditAccounts()
241{ 251{
242 odebug << "Edit Accounts" << oendl; 252 odebug << "Edit Accounts" << oendl;
243 EditAccounts eaDialog( settings, this, 0, true, WStyle_ContextHelp ); 253 EditAccounts eaDialog( settings, this, 0, true, WStyle_ContextHelp );
244 eaDialog.slotAdjustColumns(); 254 eaDialog.slotAdjustColumns();
245 if (QPEApplication::execDialog( &eaDialog )==QDialog::Rejected);// return; 255 if (QPEApplication::execDialog( &eaDialog )==QDialog::Rejected);// return;
246 256
247 if ( settings ) delete settings; 257 if ( settings ) delete settings;
248 settings = new Settings(); 258 settings = new Settings();
249 mailView->clear(); 259 mailView->clear();
250 folderView->populate( settings->getAccounts() ); 260 folderView->populate( settings->getAccounts() );
251} 261}
252 262
253void OpieMail::displayMail() 263void OpieMail::displayMail()
254{ 264{
255 QListViewItem*item = mailView->currentItem(); 265 QListViewItem*item = mailView->currentItem();
256 if (!item) return; 266 if (!item) return;
257 RecMailP mail = ((MailListViewItem*)item)->data(); 267 RecMailP mail = ((MailListViewItem*)item)->data();
258 RecBodyP body = folderView->fetchBody(mail); 268 RecBodyP body = folderView->fetchBody(mail);
259 ViewMail readMail( this,"", Qt::WType_Modal | WStyle_ContextHelp ); 269 ViewMail readMail( this,"", Qt::WType_Modal | WStyle_ContextHelp );
260 readMail.setBody( body ); 270 readMail.setBody( body );
261 readMail.setMail( mail ); 271 readMail.setMail( mail );
262 readMail.showMaximized(); 272 readMail.showMaximized();
263 readMail.exec(); 273 readMail.exec();
264 274
265 if ( readMail.deleted ) 275 if ( readMail.deleted )
266 { 276 {
267 folderView->refreshCurrent(); 277 folderView->refreshCurrent();
268 } 278 }
269 else 279 else
@@ -313,64 +323,65 @@ void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int )
313 323
314void OpieMail::slotShowFolders( bool show ) 324void OpieMail::slotShowFolders( bool show )
315{ 325{
316 odebug << "Show Folders" << oendl; 326 odebug << "Show Folders" << oendl;
317 if ( show && folderView->isHidden() ) 327 if ( show && folderView->isHidden() )
318 { 328 {
319 odebug << "-> showing" << oendl; 329 odebug << "-> showing" << oendl;
320 folderView->show(); 330 folderView->show();
321 } 331 }
322 else if ( !show && !folderView->isHidden() ) 332 else if ( !show && !folderView->isHidden() )
323 { 333 {
324 odebug << "-> hiding" << oendl; 334 odebug << "-> hiding" << oendl;
325 folderView->hide(); 335 folderView->hide();
326 } 336 }
327} 337}
328 338
329void OpieMail::refreshMailView(const QValueList<RecMailP>&list) 339void OpieMail::refreshMailView(const QValueList<RecMailP>&list)
330{ 340{
331 MailListViewItem*item = 0; 341 MailListViewItem*item = 0;
332 mailView->clear(); 342 mailView->clear();
333 343
334 QValueList<RecMailP>::ConstIterator it; 344 QValueList<RecMailP>::ConstIterator it;
335 for (it = list.begin(); it != list.end();++it) 345 for (it = list.begin(); it != list.end();++it)
336 { 346 {
337 item = new MailListViewItem(mailView,item); 347 item = new MailListViewItem(mailView,item);
338 item->storeData((*it)); 348 item->storeData((*it));
339 item->showEntry(); 349 item->showEntry();
340 } 350 }
341} 351}
342 352
343void OpieMail::mailLeftClicked(int button, QListViewItem *item,const QPoint&,int ) 353void OpieMail::mailLeftClicked(int button, QListViewItem *item,const QPoint&,int )
344{ 354{
355 if (!m_clickopens) return;
345 /* just LEFT button - or tap with stylus on pda */ 356 /* just LEFT button - or tap with stylus on pda */
346 if (button!=1) return; 357 if (button!=1) return;
347 if (!item) return; 358 if (!item) return;
348 if (folderView->currentisDraft()) { 359 if (folderView->currentisDraft()) {
349 reEditMail(); 360 reEditMail();
350 } else { 361 } else {
351 displayMail(); 362 displayMail();
352 } 363 }
353} 364}
354 365
355void OpieMail::slotMoveCopyMail() 366void OpieMail::slotMoveCopyMail()
356{ 367{
357 if (!mailView->currentItem()) return; 368 if (!mailView->currentItem()) return;
358 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data(); 369 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data();
359 AbstractMail*targetMail = 0; 370 AbstractMail*targetMail = 0;
360 QString targetFolder = ""; 371 QString targetFolder = "";
361 Selectstore sels; 372 Selectstore sels;
362 folderView->setupFolderselect(&sels); 373 folderView->setupFolderselect(&sels);
363 if (!sels.exec()) return; 374 if (!sels.exec()) return;
364 targetMail = sels.currentMail(); 375 targetMail = sels.currentMail();
365 targetFolder = sels.currentFolder(); 376 targetFolder = sels.currentFolder();
366 if ( (mail->Wrapper()==targetMail && mail->getMbox()==targetFolder) || 377 if ( (mail->Wrapper()==targetMail && mail->getMbox()==targetFolder) ||
367 targetFolder.isEmpty()) 378 targetFolder.isEmpty())
368 { 379 {
369 return; 380 return;
370 } 381 }
371 if (sels.newFolder() && !targetMail->createMbox(targetFolder)) 382 if (sels.newFolder() && !targetMail->createMbox(targetFolder))
372 { 383 {
373 QMessageBox::critical(0,tr("Error creating new Folder"), 384 QMessageBox::critical(0,tr("Error creating new Folder"),
374 tr("<center>Error while creating<br>new folder - breaking.</center>")); 385 tr("<center>Error while creating<br>new folder - breaking.</center>"));
375 return; 386 return;
376 } 387 }
diff --git a/noncore/net/mail/opiemail.h b/noncore/net/mail/opiemail.h
index 75a0b2d..327bef7 100644
--- a/noncore/net/mail/opiemail.h
+++ b/noncore/net/mail/opiemail.h
@@ -14,38 +14,41 @@ class OpieMail : public MainWindow
14 Q_OBJECT 14 Q_OBJECT
15 15
16public: 16public:
17 OpieMail( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); 17 OpieMail( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
18 virtual ~OpieMail(); 18 virtual ~OpieMail();
19 static QString appName() { return QString::fromLatin1("opiemail"); } 19 static QString appName() { return QString::fromLatin1("opiemail"); }
20 20
21public slots: 21public slots:
22 virtual void slotwriteMail(const QString&name,const QString&email); 22 virtual void slotwriteMail(const QString&name,const QString&email);
23 virtual void slotComposeMail(); 23 virtual void slotComposeMail();
24 virtual void appMessage(const QCString &msg, const QByteArray &data); 24 virtual void appMessage(const QCString &msg, const QByteArray &data);
25 void setDocument(const QString&); 25 void setDocument(const QString&);
26 26
27protected slots: 27protected slots:
28 virtual void slotSendQueued(); 28 virtual void slotSendQueued();
29 virtual void slotSearchMails(); 29 virtual void slotSearchMails();
30 virtual void slotEditSettings(); 30 virtual void slotEditSettings();
31 virtual void slotEditAccounts(); 31 virtual void slotEditAccounts();
32 virtual void displayMail(); 32 virtual void displayMail();
33 virtual void slotDeleteMail(); 33 virtual void slotDeleteMail();
34 virtual void mailHold(int, QListViewItem *,const QPoint&,int); 34 virtual void mailHold(int, QListViewItem *,const QPoint&,int);
35 virtual void slotShowFolders( bool show ); 35 virtual void slotShowFolders( bool show );
36 virtual void refreshMailView(const QValueList<RecMailP>&); 36 virtual void refreshMailView(const QValueList<RecMailP>&);
37 virtual void mailLeftClicked( int, QListViewItem *,const QPoint&,int ); 37 virtual void mailLeftClicked( int, QListViewItem *,const QPoint&,int );
38 virtual void slotMoveCopyMail(); 38 virtual void slotMoveCopyMail();
39 virtual void reEditMail(); 39 virtual void reEditMail();
40 virtual void serverSelected(int); 40 virtual void serverSelected(int);
41 virtual void refreshMenu(int); 41 virtual void refreshMenu(int);
42 42
43protected: 43protected:
44 void setup_signalblocking(); 44 void setup_signalblocking();
45 45
46 bool m_clickopens:1;
47
46private: 48private:
47 Settings *settings; 49 Settings *settings;
50signals:
48 51
49}; 52};
50 53
51#endif 54#endif
diff --git a/noncore/net/mail/settingsdialog.cpp b/noncore/net/mail/settingsdialog.cpp
index 6441948..74b8b12 100644
--- a/noncore/net/mail/settingsdialog.cpp
+++ b/noncore/net/mail/settingsdialog.cpp
@@ -1,51 +1,55 @@
1#include <qcheckbox.h> 1#include <qcheckbox.h>
2#include <qspinbox.h> 2#include <qspinbox.h>
3 3
4#include <qpe/config.h> 4#include <qpe/config.h>
5 5
6#include "settingsdialog.h" 6#include "settingsdialog.h"
7 7
8 8
9SettingsDialog::SettingsDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) 9SettingsDialog::SettingsDialog( QWidget* parent, const char* name, bool modal, WFlags fl )
10 : SettingsDialogUI( parent, name, modal, fl ) { 10 : SettingsDialogUI( parent, name, modal, fl ) {
11 11
12 readConfig(); 12 readConfig();
13} 13}
14 14
15SettingsDialog::~SettingsDialog() { 15SettingsDialog::~SettingsDialog() {
16 16
17} 17}
18 18
19void SettingsDialog::readConfig() { 19void SettingsDialog::readConfig() {
20 Config cfg("mail"); 20 Config cfg("mail");
21 cfg.setGroup( "Settings" ); 21 cfg.setGroup( "Settings" );
22 showHtmlButton->setChecked( cfg.readBoolEntry( "showHtml", false ) ); 22 showHtmlButton->setChecked( cfg.readBoolEntry( "showHtml", false ) );
23 clickOpenMailButton->setChecked(cfg.readBoolEntry("clickOpensMail",true));
24 clickOpenFolderButton->setChecked(cfg.readBoolEntry("clickOpensFolder",true));
23 cfg.setGroup( "Compose" ); 25 cfg.setGroup( "Compose" );
24 checkBoxLater->setChecked( cfg.readBoolEntry( "sendLater", false ) ); 26 checkBoxLater->setChecked( cfg.readBoolEntry( "sendLater", false ) );
25 cfg.setGroup( "Applet" ); 27 cfg.setGroup( "Applet" );
26 cbEnableTaskbarApplet->setChecked( cfg.readBoolEntry( "Disabled", false ) ); 28 cbEnableTaskbarApplet->setChecked( cfg.readBoolEntry( "Disabled", false ) );
27 spCheckOften->setValue( cfg.readNumEntry( "CheckEvery", 5 ) ); 29 spCheckOften->setValue( cfg.readNumEntry( "CheckEvery", 5 ) );
28 cbBlinkLed->setChecked( cfg.readBoolEntry( "BlinkLed", true ) ); 30 cbBlinkLed->setChecked( cfg.readBoolEntry( "BlinkLed", true ) );
29 cbPlaySound->setChecked( cfg.readBoolEntry( "PlaySound", false ) ); 31 cbPlaySound->setChecked( cfg.readBoolEntry( "PlaySound", false ) );
30 32
31} 33}
32 34
33void SettingsDialog::writeConfig() { 35void SettingsDialog::writeConfig() {
34 Config cfg( "mail" ); 36 Config cfg( "mail" );
35 cfg.setGroup( "Settings" ); 37 cfg.setGroup( "Settings" );
38 cfg.writeEntry("clickOpensMail",clickOpenMailButton->isChecked());
39 cfg.writeEntry("clickOpensFolder",clickOpenFolderButton->isChecked());
36 cfg.writeEntry( "showHtml", showHtmlButton->isChecked() ); 40 cfg.writeEntry( "showHtml", showHtmlButton->isChecked() );
37 cfg.setGroup( "Compose" ); 41 cfg.setGroup( "Compose" );
38 cfg.writeEntry( "sendLater", checkBoxLater->isChecked() ); 42 cfg.writeEntry( "sendLater", checkBoxLater->isChecked() );
39 cfg.setGroup( "Applet" ); 43 cfg.setGroup( "Applet" );
40 cfg.writeEntry( "Disabled", cbEnableTaskbarApplet->isChecked() ); 44 cfg.writeEntry( "Disabled", cbEnableTaskbarApplet->isChecked() );
41 int check = spCheckOften->value(); 45 int check = spCheckOften->value();
42 if (check<1)check=1;if (check>99)check=99; 46 if (check<1)check=1;if (check>99)check=99;
43 cfg.writeEntry( "CheckEvery", check); 47 cfg.writeEntry( "CheckEvery", check);
44 cfg.writeEntry( "BlinkLed", cbBlinkLed->isChecked() ); 48 cfg.writeEntry( "BlinkLed", cbBlinkLed->isChecked() );
45 cfg.writeEntry( "PlaySound", cbPlaySound->isChecked() ); 49 cfg.writeEntry( "PlaySound", cbPlaySound->isChecked() );
46} 50}
47 51
48void SettingsDialog::accept() { 52void SettingsDialog::accept() {
49 writeConfig(); 53 writeConfig();
50 QDialog::accept(); 54 QDialog::accept();
51} 55}
diff --git a/noncore/net/mail/settingsdialogui.ui b/noncore/net/mail/settingsdialogui.ui
index 4acd84a..0a97da0 100644
--- a/noncore/net/mail/settingsdialogui.ui
+++ b/noncore/net/mail/settingsdialogui.ui
@@ -1,110 +1,132 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>SettingsDialogUI</class> 2<class>SettingsDialogUI</class>
3<widget> 3<widget>
4 <class>QDialog</class> 4 <class>QDialog</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>SettingsDialogUI</cstring> 7 <cstring>SettingsDialogUI</cstring>
8 </property> 8 </property>
9 <property stdset="1"> 9 <property stdset="1">
10 <name>geometry</name> 10 <name>geometry</name>
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>312</width> 14 <width>304</width>
15 <height>379</height> 15 <height>378</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Settings Dialog</string> 20 <string>Settings Dialog</string>
21 </property> 21 </property>
22 <property> 22 <property>
23 <name>layoutMargin</name> 23 <name>layoutMargin</name>
24 </property> 24 </property>
25 <property> 25 <property>
26 <name>layoutSpacing</name> 26 <name>layoutSpacing</name>
27 </property> 27 </property>
28 <vbox> 28 <vbox>
29 <property stdset="1"> 29 <property stdset="1">
30 <name>margin</name> 30 <name>margin</name>
31 <number>3</number> 31 <number>3</number>
32 </property> 32 </property>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>spacing</name> 34 <name>spacing</name>
35 <number>3</number> 35 <number>3</number>
36 </property> 36 </property>
37 <widget> 37 <widget>
38 <class>QTabWidget</class> 38 <class>QTabWidget</class>
39 <property stdset="1"> 39 <property stdset="1">
40 <name>name</name> 40 <name>name</name>
41 <cstring>TabWidget2</cstring> 41 <cstring>TabWidget2</cstring>
42 </property> 42 </property>
43 <property> 43 <property>
44 <name>layoutMargin</name> 44 <name>layoutMargin</name>
45 </property> 45 </property>
46 <property> 46 <property>
47 <name>layoutSpacing</name> 47 <name>layoutSpacing</name>
48 </property> 48 </property>
49 <widget> 49 <widget>
50 <class>QWidget</class> 50 <class>QWidget</class>
51 <property stdset="1"> 51 <property stdset="1">
52 <name>name</name> 52 <name>name</name>
53 <cstring>tab</cstring> 53 <cstring>tab</cstring>
54 </property> 54 </property>
55 <attribute> 55 <attribute>
56 <name>title</name> 56 <name>title</name>
57 <string>View Mail</string> 57 <string>View Mail</string>
58 </attribute> 58 </attribute>
59 <vbox> 59 <vbox>
60 <property stdset="1"> 60 <property stdset="1">
61 <name>margin</name> 61 <name>margin</name>
62 <number>3</number> 62 <number>11</number>
63 </property> 63 </property>
64 <property stdset="1"> 64 <property stdset="1">
65 <name>spacing</name> 65 <name>spacing</name>
66 <number>3</number> 66 <number>6</number>
67 </property> 67 </property>
68 <widget> 68 <widget>
69 <class>QCheckBox</class> 69 <class>QCheckBox</class>
70 <property stdset="1"> 70 <property stdset="1">
71 <name>name</name> 71 <name>name</name>
72 <cstring>showHtmlButton</cstring> 72 <cstring>showHtmlButton</cstring>
73 </property> 73 </property>
74 <property stdset="1"> 74 <property stdset="1">
75 <name>text</name> 75 <name>text</name>
76 <string>View mail as Html</string> 76 <string>View mail as Html</string>
77 </property> 77 </property>
78 </widget> 78 </widget>
79 <widget>
80 <class>QCheckBox</class>
81 <property stdset="1">
82 <name>name</name>
83 <cstring>clickOpenMailButton</cstring>
84 </property>
85 <property stdset="1">
86 <name>text</name>
87 <string>Click opens mail</string>
88 </property>
89 </widget>
90 <widget>
91 <class>QCheckBox</class>
92 <property stdset="1">
93 <name>name</name>
94 <cstring>clickOpenFolderButton</cstring>
95 </property>
96 <property stdset="1">
97 <name>text</name>
98 <string>Click activate server/folder</string>
99 </property>
100 </widget>
79 <spacer> 101 <spacer>
80 <property> 102 <property>
81 <name>name</name> 103 <name>name</name>
82 <cstring>Spacer1</cstring> 104 <cstring>Spacer1</cstring>
83 </property> 105 </property>
84 <property stdset="1"> 106 <property stdset="1">
85 <name>orientation</name> 107 <name>orientation</name>
86 <enum>Vertical</enum> 108 <enum>Vertical</enum>
87 </property> 109 </property>
88 <property stdset="1"> 110 <property stdset="1">
89 <name>sizeType</name> 111 <name>sizeType</name>
90 <enum>Expanding</enum> 112 <enum>Expanding</enum>
91 </property> 113 </property>
92 <property> 114 <property>
93 <name>sizeHint</name> 115 <name>sizeHint</name>
94 <size> 116 <size>
95 <width>20</width> 117 <width>20</width>
96 <height>20</height> 118 <height>20</height>
97 </size> 119 </size>
98 </property> 120 </property>
99 </spacer> 121 </spacer>
100 </vbox> 122 </vbox>
101 </widget> 123 </widget>
102 <widget> 124 <widget>
103 <class>QWidget</class> 125 <class>QWidget</class>
104 <property stdset="1"> 126 <property stdset="1">
105 <name>name</name> 127 <name>name</name>
106 <cstring>tab</cstring> 128 <cstring>tab</cstring>
107 </property> 129 </property>
108 <attribute> 130 <attribute>
109 <name>title</name> 131 <name>title</name>
110 <string>Compose Mail</string> 132 <string>Compose Mail</string>