author | zautrix <zautrix> | 2004-07-04 17:18:13 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-07-04 17:18:13 (UTC) |
commit | 25671b4735f2604e13f4d6801b96f016ac8b9834 (patch) (unidiff) | |
tree | 8fb194ccfbec635f1ada9db16b76e81f72387216 | |
parent | 48bea7694899530fdfdbc0a2fefab6d3e64be1e1 (diff) | |
download | kdepimpi-25671b4735f2604e13f4d6801b96f016ac8b9834.zip kdepimpi-25671b4735f2604e13f4d6801b96f016ac8b9834.tar.gz kdepimpi-25671b4735f2604e13f4d6801b96f016ac8b9834.tar.bz2 |
Usebility enhancement:Removed trash from toolbar, added exit button
-rw-r--r-- | kmicromail/mainwindow.cpp | 24 | ||||
-rw-r--r-- | kmicromail/viewmail.cpp | 3 | ||||
-rw-r--r-- | kmicromail/viewmailbase.cpp | 13 | ||||
-rw-r--r-- | kmicromail/viewmailbase.h | 2 |
4 files changed, 25 insertions, 17 deletions
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp index ddc7b3e..a500dec 100644 --- a/kmicromail/mainwindow.cpp +++ b/kmicromail/mainwindow.cpp | |||
@@ -1,232 +1,238 @@ | |||
1 | #include <qlabel.h> | 1 | #include <qlabel.h> |
2 | #include <qvbox.h> | 2 | #include <qvbox.h> |
3 | #include <qheader.h> | 3 | #include <qheader.h> |
4 | #include <qtimer.h> | 4 | #include <qtimer.h> |
5 | #include <qlayout.h> | 5 | #include <qlayout.h> |
6 | #include <kdialog.h> | 6 | #include <kdialog.h> |
7 | #include <kiconloader.h> | 7 | #include <kiconloader.h> |
8 | 8 | ||
9 | #ifndef DESKTOP_VERSION | 9 | #ifndef DESKTOP_VERSION |
10 | #include <qpe/qpeapplication.h> | 10 | #include <qpe/qpeapplication.h> |
11 | #endif | 11 | #endif |
12 | #include "defines.h" | 12 | #include "defines.h" |
13 | #include "mainwindow.h" | 13 | #include "mainwindow.h" |
14 | #include <KDGanttMinimizeSplitter.h> | 14 | #include <KDGanttMinimizeSplitter.h> |
15 | 15 | ||
16 | 16 | ||
17 | #include <kabc/stdaddressbook.h> | 17 | #include <kabc/stdaddressbook.h> |
18 | 18 | ||
19 | MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) | 19 | MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) |
20 | : QMainWindow( parent, name, flags ) | 20 | : QMainWindow( parent, name, flags ) |
21 | { | 21 | { |
22 | setCaption( tr( "KMicroMail" ) ); | 22 | setCaption( tr( "KMicroMail" ) ); |
23 | setToolBarsMovable( false ); | 23 | setToolBarsMovable( false ); |
24 | KABC::StdAddressBook::self(); | 24 | KABC::StdAddressBook::self(); |
25 | toolBar = new QToolBar( this ); | 25 | toolBar = new QToolBar( this ); |
26 | menuBar = new QMenuBar( toolBar ); | 26 | menuBar = new QMenuBar( toolBar ); |
27 | mailMenu = new QPopupMenu( menuBar ); | 27 | mailMenu = new QPopupMenu( menuBar ); |
28 | menuBar->insertItem( tr( "Mail" ), mailMenu ); | 28 | menuBar->insertItem( tr( "Mail" ), mailMenu ); |
29 | settingsMenu = new QPopupMenu( menuBar ); | 29 | settingsMenu = new QPopupMenu( menuBar ); |
30 | menuBar->insertItem( tr( "Settings" ), settingsMenu ); | 30 | menuBar->insertItem( tr( "Settings" ), settingsMenu ); |
31 | 31 | ||
32 | addToolBar( toolBar ); | 32 | addToolBar( toolBar ); |
33 | toolBar->setHorizontalStretchable( true ); | 33 | toolBar->setHorizontalStretchable( true ); |
34 | 34 | ||
35 | QLabel *spacer = new QLabel( toolBar ); | 35 | |
36 | spacer->setBackgroundMode( QWidget::PaletteButton ); | ||
37 | toolBar->setStretchableWidget( spacer ); | ||
38 | 36 | ||
39 | composeMail = new QAction( tr( "Compose new mail" ), SmallIcon("composemail"), | 37 | composeMail = new QAction( tr( "Compose new mail" ), SmallIcon("composemail"), |
40 | 0, 0, this ); | 38 | 0, 0, this ); |
41 | composeMail->addTo( toolBar ); | 39 | composeMail->addTo( toolBar ); |
42 | composeMail->addTo( mailMenu ); | 40 | composeMail->addTo( mailMenu ); |
43 | 41 | ||
44 | sendQueued = new QAction( tr( "Send queued mails" ), SmallIcon("sendqueued") , | 42 | sendQueued = new QAction( tr( "Send queued mails" ), SmallIcon("sendqueued") , |
45 | 0, 0, this ); | 43 | 0, 0, this ); |
46 | sendQueued->addTo( toolBar ); | 44 | sendQueued->addTo( toolBar ); |
47 | sendQueued->addTo( mailMenu ); | 45 | sendQueued->addTo( mailMenu ); |
48 | 46 | ||
49 | /* | 47 | /* |
50 | syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC, | 48 | syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC, |
51 | 0, 0, this ); | 49 | 0, 0, this ); |
52 | syncFolders->addTo( toolBar ); | 50 | syncFolders->addTo( toolBar ); |
53 | syncFolders->addTo( mailMenu ); | 51 | syncFolders->addTo( mailMenu ); |
54 | */ | 52 | */ |
55 | 53 | ||
56 | showFolders = new QAction( tr( "Show/Hide folders" ), SmallIcon("showfolders") , | 54 | showFolders = new QAction( tr( "Show/Hide folders" ), SmallIcon("showfolders") , |
57 | 0, 0, this, 0, true ); | 55 | 0, 0, this, 0, true ); |
58 | showFolders->addTo( toolBar ); | 56 | showFolders->addTo( toolBar ); |
59 | showFolders->addTo( mailMenu ); | 57 | showFolders->addTo( mailMenu ); |
60 | showFolders->setOn( true ); | 58 | showFolders->setOn( true ); |
61 | connect(showFolders, SIGNAL( toggled(bool) ), | 59 | connect(showFolders, SIGNAL( toggled(bool) ), |
62 | SLOT( slotShowFolders(bool) ) ); | 60 | SLOT( slotShowFolders(bool) ) ); |
63 | 61 | ||
64 | /* | 62 | /* |
65 | searchMails = new QAction( tr( "Search mails" ), SmallIcon("find") ), | 63 | searchMails = new QAction( tr( "Search mails" ), SmallIcon("find") ), |
66 | 0, 0, this ); | 64 | 0, 0, this ); |
67 | searchMails->addTo( toolBar ); | 65 | searchMails->addTo( toolBar ); |
68 | searchMails->addTo( mailMenu ); | 66 | searchMails->addTo( mailMenu ); |
69 | */ | 67 | */ |
70 | 68 | ||
71 | deleteMails = new QAction(tr("Delete Mail"), SmallIcon("trash"), 0, 0, this); | 69 | deleteMails = new QAction(tr("Delete Mail"), SmallIcon("trash"), 0, 0, this); |
72 | deleteMails->addTo( toolBar ); | 70 | deleteMails->addTo( toolBar ); |
73 | deleteMails->addTo( mailMenu ); | 71 | deleteMails->addTo( mailMenu ); |
74 | connect( deleteMails, SIGNAL( activated() ), | 72 | connect( deleteMails, SIGNAL( activated() ), |
75 | SLOT( slotDeleteMail() ) ); | 73 | SLOT( slotDeleteMail() ) ); |
76 | 74 | ||
77 | editSettings = new QAction( tr( "Edit settings" ), SmallIcon("SettingsIcon") , | 75 | editSettings = new QAction( tr( "Edit settings" ), SmallIcon("SettingsIcon") , |
78 | 0, 0, this ); | 76 | 0, 0, this ); |
79 | editSettings->addTo( settingsMenu ); | 77 | editSettings->addTo( settingsMenu ); |
80 | connect( editSettings, SIGNAL( activated() ), | 78 | connect( editSettings, SIGNAL( activated() ), |
81 | SLOT( slotEditSettings() ) ); | 79 | SLOT( slotEditSettings() ) ); |
82 | editAccounts = new QAction( tr( "Configure accounts" ), SmallIcon("editaccounts") , | 80 | editAccounts = new QAction( tr( "Configure accounts" ), SmallIcon("editaccounts") , |
83 | 0, 0, this ); | 81 | 0, 0, this ); |
84 | editAccounts->addTo( settingsMenu ); | 82 | editAccounts->addTo( settingsMenu ); |
85 | 83 | ||
86 | //setCentralWidget( view ); | 84 | //setCentralWidget( view ); |
87 | 85 | ||
88 | QVBox* wrapperBox = new QVBox( this ); | 86 | QVBox* wrapperBox = new QVBox( this ); |
89 | setCentralWidget( wrapperBox ); | 87 | setCentralWidget( wrapperBox ); |
90 | 88 | ||
91 | // QWidget *view = new QWidget( wrapperBox ); | 89 | // QWidget *view = new QWidget( wrapperBox ); |
92 | KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); | 90 | KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); |
93 | split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); | 91 | split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); |
94 | //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); | 92 | //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); |
95 | 93 | ||
96 | folderView = new AccountView( split ); | 94 | folderView = new AccountView( split ); |
97 | folderView->header()->hide(); | 95 | folderView->header()->hide(); |
98 | folderView->setRootIsDecorated( false ); | 96 | folderView->setRootIsDecorated( false ); |
99 | folderView->addColumn( tr( "Mailbox" ) ); | 97 | folderView->addColumn( tr( "Mailbox" ) ); |
100 | 98 | ||
101 | //layout->addWidget( folderView ); | 99 | //layout->addWidget( folderView ); |
102 | 100 | ||
103 | mailView = new QListView( split ); | 101 | mailView = new QListView( split ); |
104 | mailView->addColumn( tr( " " ) ); | 102 | mailView->addColumn( tr( " " ) ); |
105 | mailView->addColumn( tr( "Subject" ),QListView::Manual ); | 103 | mailView->addColumn( tr( "Subject" ),QListView::Manual ); |
106 | mailView->addColumn( tr( "Sender" ),QListView::Manual ); | 104 | mailView->addColumn( tr( "Sender" ),QListView::Manual ); |
107 | mailView->addColumn( tr( "Size" ),QListView::Manual); | 105 | mailView->addColumn( tr( "Size" ),QListView::Manual); |
108 | mailView->addColumn( tr( "Date" ),QListView::Manual); | 106 | mailView->addColumn( tr( "Date" ),QListView::Manual); |
109 | mailView->setAllColumnsShowFocus(true); | 107 | mailView->setAllColumnsShowFocus(true); |
110 | //mailView->setSorting(-1); | 108 | //mailView->setSorting(-1); |
111 | mailView->setRootIsDecorated( false ); | 109 | mailView->setRootIsDecorated( false ); |
112 | statusWidget = new StatusWidget( wrapperBox ); | 110 | statusWidget = new StatusWidget( wrapperBox ); |
113 | statusWidget->hide(); | 111 | statusWidget->hide(); |
114 | 112 | ||
115 | //layout->addWidget( mailView ); | 113 | //layout->addWidget( mailView ); |
116 | //layout->setStretchFactor( folderView, 1 ); | 114 | //layout->setStretchFactor( folderView, 1 ); |
117 | //layout->setStretchFactor( mailView, 2 ); | 115 | //layout->setStretchFactor( mailView, 2 ); |
118 | 116 | ||
119 | slotAdjustLayout(); | 117 | slotAdjustLayout(); |
120 | #ifndef DESKTOP_VERSION | 118 | #ifndef DESKTOP_VERSION |
121 | QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); | 119 | QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); |
122 | QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); | 120 | QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); |
123 | #endif | 121 | #endif |
124 | connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, | 122 | connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, |
125 | SLOT( mailLeftClicked(QListViewItem*) ) ); | 123 | SLOT( mailLeftClicked(QListViewItem*) ) ); |
126 | connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, | 124 | connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, |
127 | SLOT( mailLeftClicked(QListViewItem*) ) ); | 125 | SLOT( mailLeftClicked(QListViewItem*) ) ); |
128 | connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, | 126 | connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, |
129 | SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); | 127 | SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); |
130 | connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), | 128 | connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), |
131 | this,SLOT(refreshMailView(const QValueList<RecMailP>&))); | 129 | this,SLOT(refreshMailView(const QValueList<RecMailP>&))); |
132 | connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); | 130 | connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); |
133 | connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); | 131 | connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); |
134 | // connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); | 132 | // connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); |
135 | connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); | 133 | connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); |
136 | mailView->setMultiSelection ( true ); | 134 | //mailView->setMultiSelection ( true ); |
137 | //mailView->setSelectionMode( QListView::Extended ); | 135 | mailView->setSelectionMode( QListView::Extended ); |
138 | QValueList<int> list; | 136 | QValueList<int> list; |
139 | int fw = 100; | 137 | int fw = 100; |
140 | if ( QApplication::desktop()->width() > 320 ) | 138 | if ( QApplication::desktop()->width() > 320 ) |
141 | fw = 50; | 139 | fw = 50; |
142 | list.append( fw ); | 140 | list.append( fw ); |
143 | list.append( 100 ); | 141 | list.append( 100 ); |
144 | split->setSizes( list ); | 142 | split->setSizes( list ); |
145 | QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); | 143 | QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); |
146 | mailView->setShowSortIndicator ( true ); | 144 | mailView->setShowSortIndicator ( true ); |
145 | QLabel *spacer = new QLabel( toolBar ); | ||
146 | spacer->setBackgroundMode( QWidget::PaletteButton ); | ||
147 | toolBar->setStretchableWidget( spacer ); | ||
148 | |||
149 | QAction* closeMail = new QAction(tr("Close"),SmallIcon("exit"), 0, 0, this); | ||
150 | connect( closeMail, SIGNAL( activated() ), SLOT( close() ) ); | ||
151 | closeMail->addTo(toolBar); | ||
152 | closeMail->addTo(mailMenu); | ||
147 | } | 153 | } |
148 | 154 | ||
149 | MainWindow::~MainWindow() | 155 | MainWindow::~MainWindow() |
150 | { | 156 | { |
151 | } | 157 | } |
152 | 158 | ||
153 | void MainWindow::appMessage(const QCString &, const QByteArray &) | 159 | void MainWindow::appMessage(const QCString &, const QByteArray &) |
154 | { | 160 | { |
155 | qDebug("appMessage implemented by subclass"); | 161 | qDebug("appMessage implemented by subclass"); |
156 | } | 162 | } |
157 | 163 | ||
158 | void MainWindow::slotAdjustLayout() { | 164 | void MainWindow::slotAdjustLayout() { |
159 | 165 | ||
160 | /* | 166 | /* |
161 | QWidget *d = QApplication::desktop(); | 167 | QWidget *d = QApplication::desktop(); |
162 | 168 | ||
163 | if ( d->width() < d->height() ) { | 169 | if ( d->width() < d->height() ) { |
164 | layout->setDirection( QBoxLayout::TopToBottom ); | 170 | layout->setDirection( QBoxLayout::TopToBottom ); |
165 | } else { | 171 | } else { |
166 | layout->setDirection( QBoxLayout::LeftToRight ); | 172 | layout->setDirection( QBoxLayout::LeftToRight ); |
167 | } | 173 | } |
168 | */ | 174 | */ |
169 | } | 175 | } |
170 | 176 | ||
171 | void MainWindow::slotAdjustColumns() | 177 | void MainWindow::slotAdjustColumns() |
172 | { | 178 | { |
173 | bool hidden = folderView->isHidden(); | 179 | bool hidden = folderView->isHidden(); |
174 | if ( hidden ) folderView->show(); | 180 | if ( hidden ) folderView->show(); |
175 | folderView->setColumnWidth( 0, folderView->visibleWidth() ); | 181 | folderView->setColumnWidth( 0, folderView->visibleWidth() ); |
176 | if ( hidden ) folderView->hide(); | 182 | if ( hidden ) folderView->hide(); |
177 | 183 | ||
178 | mailView->setColumnWidth( 0, 10 ); | 184 | mailView->setColumnWidth( 0, 10 ); |
179 | mailView->setColumnWidth( 1, 80 ); | 185 | mailView->setColumnWidth( 1, 100 ); |
180 | mailView->setColumnWidth( 2, 80 ); | 186 | mailView->setColumnWidth( 2, 100 ); |
181 | mailView->setColumnWidth( 3, 50 ); | 187 | mailView->setColumnWidth( 3, 50 ); |
182 | mailView->setColumnWidth( 4, 50 ); | 188 | mailView->setColumnWidth( 4, 120 ); |
183 | } | 189 | } |
184 | 190 | ||
185 | void MainWindow::slotEditSettings() | 191 | void MainWindow::slotEditSettings() |
186 | { | 192 | { |
187 | } | 193 | } |
188 | 194 | ||
189 | void MainWindow::slotShowFolders( bool ) | 195 | void MainWindow::slotShowFolders( bool ) |
190 | { | 196 | { |
191 | qDebug("not implemented: "); | 197 | qDebug("not implemented: "); |
192 | } | 198 | } |
193 | 199 | ||
194 | void MainWindow::refreshMailView(const QValueList<RecMailP>&) | 200 | void MainWindow::refreshMailView(const QValueList<RecMailP>&) |
195 | { | 201 | { |
196 | qDebug("not implemented: "); | 202 | qDebug("not implemented: "); |
197 | } | 203 | } |
198 | 204 | ||
199 | void MainWindow::mailLeftClicked(QListViewItem * ) | 205 | void MainWindow::mailLeftClicked(QListViewItem * ) |
200 | { | 206 | { |
201 | qDebug("not implemented: "); | 207 | qDebug("not implemented: "); |
202 | } | 208 | } |
203 | 209 | ||
204 | void MainWindow::displayMail() | 210 | void MainWindow::displayMail() |
205 | { | 211 | { |
206 | qDebug("not implemented: "); | 212 | qDebug("not implemented: "); |
207 | } | 213 | } |
208 | 214 | ||
209 | void MainWindow::slotDeleteMail() | 215 | void MainWindow::slotDeleteMail() |
210 | { | 216 | { |
211 | qDebug("not implemented: "); | 217 | qDebug("not implemented: "); |
212 | } | 218 | } |
213 | 219 | ||
214 | void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int ) | 220 | void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int ) |
215 | { | 221 | { |
216 | qDebug("not implemented: "); | 222 | qDebug("not implemented: "); |
217 | } | 223 | } |
218 | 224 | ||
219 | void MainWindow::slotSendQueued() | 225 | void MainWindow::slotSendQueued() |
220 | { | 226 | { |
221 | qDebug("not implemented: "); | 227 | qDebug("not implemented: "); |
222 | } | 228 | } |
223 | 229 | ||
224 | void MainWindow::slotEditAccounts() | 230 | void MainWindow::slotEditAccounts() |
225 | { | 231 | { |
226 | qDebug("not implemented: "); | 232 | qDebug("not implemented: "); |
227 | } | 233 | } |
228 | 234 | ||
229 | void MainWindow::slotComposeMail() | 235 | void MainWindow::slotComposeMail() |
230 | { | 236 | { |
231 | qDebug("not implemented: "); | 237 | qDebug("not implemented: "); |
232 | } | 238 | } |
diff --git a/kmicromail/viewmail.cpp b/kmicromail/viewmail.cpp index b434318..703711d 100644 --- a/kmicromail/viewmail.cpp +++ b/kmicromail/viewmail.cpp | |||
@@ -1,525 +1,526 @@ | |||
1 | #include "composemail.h" | 1 | #include "composemail.h" |
2 | #include "viewmail.h" | 2 | #include "viewmail.h" |
3 | 3 | ||
4 | #include <libmailwrapper/settings.h> | 4 | #include <libmailwrapper/settings.h> |
5 | #include <libmailwrapper/abstractmail.h> | 5 | #include <libmailwrapper/abstractmail.h> |
6 | #include <libmailwrapper/mailtypes.h> | 6 | #include <libmailwrapper/mailtypes.h> |
7 | #include <kapplication.h> | 7 | #include <kapplication.h> |
8 | 8 | ||
9 | /* OPIE */ | 9 | /* OPIE */ |
10 | //#include <opie2/odebug.h> | 10 | //#include <opie2/odebug.h> |
11 | //#include <opie2/ofiledialog.h> | 11 | //#include <opie2/ofiledialog.h> |
12 | //#include <opie2/oimagescrollview.h> | 12 | //#include <opie2/oimagescrollview.h> |
13 | 13 | ||
14 | #include <kfiledialog.h> | 14 | #include <kfiledialog.h> |
15 | #include <kdialog.h> | 15 | #include <kdialog.h> |
16 | 16 | ||
17 | #include <qpe/config.h> | 17 | #include <qpe/config.h> |
18 | #include <qpe/qpeapplication.h> | 18 | #include <qpe/qpeapplication.h> |
19 | 19 | ||
20 | /* QT */ | 20 | /* QT */ |
21 | #include <qtextbrowser.h> | 21 | #include <qtextbrowser.h> |
22 | #include <qmessagebox.h> | 22 | #include <qmessagebox.h> |
23 | #include <qtextstream.h> | 23 | #include <qtextstream.h> |
24 | #include <qaction.h> | 24 | #include <qaction.h> |
25 | #include <qpopupmenu.h> | 25 | #include <qpopupmenu.h> |
26 | #include <qfile.h> | 26 | #include <qfile.h> |
27 | #include <qlayout.h> | 27 | #include <qlayout.h> |
28 | 28 | ||
29 | //using namespace Opie::Ui; | 29 | //using namespace Opie::Ui; |
30 | //using namespace Opie::Core; | 30 | //using namespace Opie::Core; |
31 | 31 | ||
32 | AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, | 32 | AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, |
33 | const QString&fsize,int num,const QValueList<int>&path) | 33 | const QString&fsize,int num,const QValueList<int>&path) |
34 | : QListViewItem(parent,after),_partNum(num) | 34 | : QListViewItem(parent,after),_partNum(num) |
35 | { | 35 | { |
36 | _path=path; | 36 | _path=path; |
37 | setText(0, mime); | 37 | setText(0, mime); |
38 | setText(1, desc); | 38 | setText(1, desc); |
39 | setText(2, file); | 39 | setText(2, file); |
40 | setText(3, fsize); | 40 | setText(3, fsize); |
41 | } | 41 | } |
42 | 42 | ||
43 | AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, | 43 | AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, |
44 | const QString&fsize,int num,const QValueList<int>&path) | 44 | const QString&fsize,int num,const QValueList<int>&path) |
45 | : QListViewItem(parent,after),_partNum(num) | 45 | : QListViewItem(parent,after),_partNum(num) |
46 | { | 46 | { |
47 | _path=path; | 47 | _path=path; |
48 | setText(0, mime); | 48 | setText(0, mime); |
49 | setText(1, desc); | 49 | setText(1, desc); |
50 | setText(2, file); | 50 | setText(2, file); |
51 | setText(3, fsize); | 51 | setText(3, fsize); |
52 | } | 52 | } |
53 | 53 | ||
54 | bool AttachItem::isParentof(const QValueList<int>&path) | 54 | bool AttachItem::isParentof(const QValueList<int>&path) |
55 | { | 55 | { |
56 | /* if not set, then no parent */ | 56 | /* if not set, then no parent */ |
57 | if (path.count()==0||_path.count()==0) return false; | 57 | if (path.count()==0||_path.count()==0) return false; |
58 | /* the parent must have one digit less then a child */ | 58 | /* the parent must have one digit less then a child */ |
59 | if (path.count()!=_path.count()+1) return false; | 59 | if (path.count()!=_path.count()+1) return false; |
60 | for (unsigned int i=0; i < _path.count();++i) | 60 | for (unsigned int i=0; i < _path.count();++i) |
61 | { | 61 | { |
62 | if (_path[i]!=path[i]) return false; | 62 | if (_path[i]!=path[i]) return false; |
63 | } | 63 | } |
64 | return true; | 64 | return true; |
65 | } | 65 | } |
66 | 66 | ||
67 | AttachItem* ViewMail::searchParent(const QValueList<int>&path) | 67 | AttachItem* ViewMail::searchParent(const QValueList<int>&path) |
68 | { | 68 | { |
69 | QListViewItemIterator it( attachments ); | 69 | QListViewItemIterator it( attachments ); |
70 | for ( ; it.current(); ++it ) | 70 | for ( ; it.current(); ++it ) |
71 | { | 71 | { |
72 | AttachItem*ati = (AttachItem*)it.current(); | 72 | AttachItem*ati = (AttachItem*)it.current(); |
73 | if (ati->isParentof(path)) return ati; | 73 | if (ati->isParentof(path)) return ati; |
74 | } | 74 | } |
75 | return 0; | 75 | return 0; |
76 | } | 76 | } |
77 | 77 | ||
78 | AttachItem* ViewMail::lastChild(AttachItem*parent) | 78 | AttachItem* ViewMail::lastChild(AttachItem*parent) |
79 | { | 79 | { |
80 | if (!parent) return 0; | 80 | if (!parent) return 0; |
81 | AttachItem* item = (AttachItem*)parent->firstChild(); | 81 | AttachItem* item = (AttachItem*)parent->firstChild(); |
82 | if (!item) return item; | 82 | if (!item) return item; |
83 | AttachItem*temp=0; | 83 | AttachItem*temp=0; |
84 | while( (temp=(AttachItem*)item->nextSibling())) | 84 | while( (temp=(AttachItem*)item->nextSibling())) |
85 | { | 85 | { |
86 | item = temp; | 86 | item = temp; |
87 | } | 87 | } |
88 | return item; | 88 | return item; |
89 | } | 89 | } |
90 | 90 | ||
91 | void ViewMail::setBody(const RecBodyP&body ) | 91 | void ViewMail::setBody(const RecBodyP&body ) |
92 | { | 92 | { |
93 | 93 | ||
94 | m_body = body; | 94 | m_body = body; |
95 | m_mail[2] = body->Bodytext(); | 95 | m_mail[2] = body->Bodytext(); |
96 | attachbutton->setEnabled(body->Parts().count()>0); | 96 | attachbutton->setEnabled(body->Parts().count()>0); |
97 | attachments->setEnabled(body->Parts().count()>0); | 97 | attachments->setEnabled(body->Parts().count()>0); |
98 | if (body->Parts().count()==0) | 98 | if (body->Parts().count()==0) |
99 | { | 99 | { |
100 | return; | 100 | return; |
101 | } | 101 | } |
102 | AttachItem * curItem=0; | 102 | AttachItem * curItem=0; |
103 | AttachItem * parentItem = 0; | 103 | AttachItem * parentItem = 0; |
104 | QString type=body->Description()->Type()+"/"+body->Description()->Subtype(); | 104 | QString type=body->Description()->Type()+"/"+body->Description()->Subtype(); |
105 | QString desc,fsize; | 105 | QString desc,fsize; |
106 | double s = body->Description()->Size(); | 106 | double s = body->Description()->Size(); |
107 | int w; | 107 | int w; |
108 | w=0; | 108 | w=0; |
109 | 109 | ||
110 | while (s>1024) | 110 | while (s>1024) |
111 | { | 111 | { |
112 | s/=1024; | 112 | s/=1024; |
113 | ++w; | 113 | ++w; |
114 | if (w>=2) break; | 114 | if (w>=2) break; |
115 | } | 115 | } |
116 | 116 | ||
117 | QString q=""; | 117 | QString q=""; |
118 | switch(w) | 118 | switch(w) |
119 | { | 119 | { |
120 | case 1: | 120 | case 1: |
121 | q="k"; | 121 | q="k"; |
122 | break; | 122 | break; |
123 | case 2: | 123 | case 2: |
124 | q="M"; | 124 | q="M"; |
125 | break; | 125 | break; |
126 | default: | 126 | default: |
127 | break; | 127 | break; |
128 | } | 128 | } |
129 | 129 | ||
130 | { | 130 | { |
131 | /* I did not found a method to make a CONTENT reset on a QTextStream | 131 | /* I did not found a method to make a CONTENT reset on a QTextStream |
132 | so I use this construct that the stream will re-constructed in each | 132 | so I use this construct that the stream will re-constructed in each |
133 | loop. To let it work, the textstream is packed into a own area of | 133 | loop. To let it work, the textstream is packed into a own area of |
134 | code is it will be destructed after finishing its small job. | 134 | code is it will be destructed after finishing its small job. |
135 | */ | 135 | */ |
136 | QTextOStream o(&fsize); | 136 | QTextOStream o(&fsize); |
137 | if (w>0) o.precision(2); else o.precision(0); | 137 | if (w>0) o.precision(2); else o.precision(0); |
138 | o.setf(QTextStream::fixed); | 138 | o.setf(QTextStream::fixed); |
139 | o << s << " " << q << "Byte"; | 139 | o << s << " " << q << "Byte"; |
140 | } | 140 | } |
141 | 141 | ||
142 | curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body->Description()->Positionlist()); | 142 | curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body->Description()->Positionlist()); |
143 | QString filename = ""; | 143 | QString filename = ""; |
144 | 144 | ||
145 | for (unsigned int i = 0; i < body->Parts().count();++i) | 145 | for (unsigned int i = 0; i < body->Parts().count();++i) |
146 | { | 146 | { |
147 | filename = ""; | 147 | filename = ""; |
148 | type = body->Parts()[i]->Type()+"/"+body->Parts()[i]->Subtype(); | 148 | type = body->Parts()[i]->Type()+"/"+body->Parts()[i]->Subtype(); |
149 | part_plist_t::ConstIterator it = body->Parts()[i]->Parameters().begin(); | 149 | part_plist_t::ConstIterator it = body->Parts()[i]->Parameters().begin(); |
150 | for (;it!=body->Parts()[i]->Parameters().end();++it) | 150 | for (;it!=body->Parts()[i]->Parameters().end();++it) |
151 | { | 151 | { |
152 | if (it.key().lower()=="name") | 152 | if (it.key().lower()=="name") |
153 | { | 153 | { |
154 | filename=it.data(); | 154 | filename=it.data(); |
155 | } | 155 | } |
156 | } | 156 | } |
157 | s = body->Parts()[i]->Size(); | 157 | s = body->Parts()[i]->Size(); |
158 | w = 0; | 158 | w = 0; |
159 | while (s>1024) | 159 | while (s>1024) |
160 | { | 160 | { |
161 | s/=1024; | 161 | s/=1024; |
162 | ++w; | 162 | ++w; |
163 | if (w>=2) break; | 163 | if (w>=2) break; |
164 | } | 164 | } |
165 | switch(w) | 165 | switch(w) |
166 | { | 166 | { |
167 | case 1: | 167 | case 1: |
168 | q="k"; | 168 | q="k"; |
169 | break; | 169 | break; |
170 | case 2: | 170 | case 2: |
171 | q="M"; | 171 | q="M"; |
172 | break; | 172 | break; |
173 | default: | 173 | default: |
174 | q=""; | 174 | q=""; |
175 | break; | 175 | break; |
176 | } | 176 | } |
177 | QTextOStream o(&fsize); | 177 | QTextOStream o(&fsize); |
178 | if (w>0) o.precision(2); else o.precision(0); | 178 | if (w>0) o.precision(2); else o.precision(0); |
179 | o.setf(QTextStream::fixed); | 179 | o.setf(QTextStream::fixed); |
180 | o << s << " " << q << "Byte"; | 180 | o << s << " " << q << "Byte"; |
181 | desc = body->Parts()[i]->Description(); | 181 | desc = body->Parts()[i]->Description(); |
182 | parentItem = searchParent(body->Parts()[i]->Positionlist()); | 182 | parentItem = searchParent(body->Parts()[i]->Positionlist()); |
183 | if (parentItem) | 183 | if (parentItem) |
184 | { | 184 | { |
185 | AttachItem*temp = lastChild(parentItem); | 185 | AttachItem*temp = lastChild(parentItem); |
186 | if (temp) curItem = temp; | 186 | if (temp) curItem = temp; |
187 | curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist()); | 187 | curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist()); |
188 | attachments->setRootIsDecorated(true); | 188 | attachments->setRootIsDecorated(true); |
189 | curItem = parentItem; | 189 | curItem = parentItem; |
190 | } | 190 | } |
191 | else | 191 | else |
192 | { | 192 | { |
193 | curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist()); | 193 | curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist()); |
194 | } | 194 | } |
195 | } | 195 | } |
196 | } | 196 | } |
197 | 197 | ||
198 | 198 | ||
199 | void ViewMail::slotShowHtml( bool state ) | 199 | void ViewMail::slotShowHtml( bool state ) |
200 | { | 200 | { |
201 | m_showHtml = state; | 201 | m_showHtml = state; |
202 | setText(); | 202 | setText(); |
203 | } | 203 | } |
204 | 204 | ||
205 | void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) | 205 | void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) |
206 | { | 206 | { |
207 | if (!item ) | 207 | if (!item ) |
208 | return; | 208 | return; |
209 | 209 | ||
210 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) | 210 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) |
211 | { | 211 | { |
212 | setText(); | 212 | setText(); |
213 | return; | 213 | return; |
214 | } | 214 | } |
215 | QPopupMenu *menu = new QPopupMenu(); | 215 | QPopupMenu *menu = new QPopupMenu(); |
216 | int ret=0; | 216 | int ret=0; |
217 | 217 | ||
218 | if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" ) | 218 | if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" ) |
219 | { | 219 | { |
220 | menu->insertItem( tr( "Show Text" ), 1 ); | 220 | menu->insertItem( tr( "Show Text" ), 1 ); |
221 | } | 221 | } |
222 | if (item->text(0).left(6)=="image/") { | 222 | if (item->text(0).left(6)=="image/") { |
223 | menu->insertItem(tr("Display image preview"),2); | 223 | menu->insertItem(tr("Display image preview"),2); |
224 | } | 224 | } |
225 | menu->insertItem( tr( "Save Attachment" ), 0 ); | 225 | menu->insertItem( tr( "Save Attachment" ), 0 ); |
226 | menu->insertSeparator(1); | 226 | menu->insertSeparator(1); |
227 | 227 | ||
228 | ret = menu->exec( point, 0 ); | 228 | ret = menu->exec( point, 0 ); |
229 | 229 | ||
230 | switch(ret) | 230 | switch(ret) |
231 | { | 231 | { |
232 | case 0: | 232 | case 0: |
233 | { | 233 | { |
234 | //MimeTypes types; | 234 | //MimeTypes types; |
235 | //types.insert( "all", "*" ); | 235 | //types.insert( "all", "*" ); |
236 | QString str = KFileDialog::getSaveFileName( "/", item->text( 2 ), this ); | 236 | QString str = KFileDialog::getSaveFileName( "/", item->text( 2 ), this ); |
237 | 237 | ||
238 | if( !str.isEmpty() ) | 238 | if( !str.isEmpty() ) |
239 | { | 239 | { |
240 | encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); | 240 | encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); |
241 | if (content) | 241 | if (content) |
242 | { | 242 | { |
243 | QFile output(str); | 243 | QFile output(str); |
244 | output.open(IO_WriteOnly); | 244 | output.open(IO_WriteOnly); |
245 | output.writeBlock(content->Content(),content->Length()); | 245 | output.writeBlock(content->Content(),content->Length()); |
246 | output.close(); | 246 | output.close(); |
247 | delete content; | 247 | delete content; |
248 | } | 248 | } |
249 | } | 249 | } |
250 | } | 250 | } |
251 | break ; | 251 | break ; |
252 | 252 | ||
253 | case 2: | 253 | case 2: |
254 | { | 254 | { |
255 | QString tmpfile = "/tmp/opiemail-image"; | 255 | QString tmpfile = "/tmp/opiemail-image"; |
256 | encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); | 256 | encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); |
257 | if (content) { | 257 | if (content) { |
258 | QFile output(tmpfile); | 258 | QFile output(tmpfile); |
259 | output.open(IO_WriteOnly); | 259 | output.open(IO_WriteOnly); |
260 | output.writeBlock(content->Content(),content->Length()); | 260 | output.writeBlock(content->Content(),content->Length()); |
261 | output.close(); | 261 | output.close(); |
262 | delete content; | 262 | delete content; |
263 | MailImageDlg iview(""); | 263 | MailImageDlg iview(""); |
264 | iview.setName(tmpfile); | 264 | iview.setName(tmpfile); |
265 | KApplication::execDialog(&iview); | 265 | KApplication::execDialog(&iview); |
266 | output.remove(); | 266 | output.remove(); |
267 | } | 267 | } |
268 | } | 268 | } |
269 | break; | 269 | break; |
270 | case 1: | 270 | case 1: |
271 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) | 271 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) |
272 | { | 272 | { |
273 | setText(); | 273 | setText(); |
274 | } | 274 | } |
275 | else | 275 | else |
276 | { | 276 | { |
277 | if ( m_recMail->Wrapper() != 0l ) | 277 | if ( m_recMail->Wrapper() != 0l ) |
278 | { // make sure that there is a wrapper , even after delete or simular actions | 278 | { // make sure that there is a wrapper , even after delete or simular actions |
279 | browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); | 279 | browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); |
280 | } | 280 | } |
281 | } | 281 | } |
282 | break; | 282 | break; |
283 | } | 283 | } |
284 | delete menu; | 284 | delete menu; |
285 | } | 285 | } |
286 | 286 | ||
287 | 287 | ||
288 | void ViewMail::setMail(const RecMailP&mail ) | 288 | void ViewMail::setMail(const RecMailP&mail ) |
289 | { | 289 | { |
290 | 290 | ||
291 | m_recMail = mail; | 291 | m_recMail = mail; |
292 | 292 | ||
293 | m_mail[0] = mail->getFrom(); | 293 | m_mail[0] = mail->getFrom(); |
294 | m_mail[1] = mail->getSubject(); | 294 | m_mail[1] = mail->getSubject(); |
295 | m_mail[3] = mail->getDate(); | 295 | m_mail[3] = mail->getDate(); |
296 | m_mail[4] = mail->Msgid(); | 296 | m_mail[4] = mail->Msgid(); |
297 | 297 | ||
298 | m_mail2[0] = mail->To(); | 298 | m_mail2[0] = mail->To(); |
299 | m_mail2[1] = mail->CC(); | 299 | m_mail2[1] = mail->CC(); |
300 | m_mail2[2] = mail->Bcc(); | 300 | m_mail2[2] = mail->Bcc(); |
301 | 301 | ||
302 | setText(); | 302 | setText(); |
303 | } | 303 | } |
304 | 304 | ||
305 | 305 | ||
306 | 306 | ||
307 | ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) | 307 | ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) |
308 | : ViewMailBase(parent, name, fl), _inLoop(false) | 308 | : ViewMailBase(parent, name, fl), _inLoop(false) |
309 | { | 309 | { |
310 | m_gotBody = false; | 310 | m_gotBody = false; |
311 | deleted = false; | 311 | deleted = false; |
312 | 312 | ||
313 | connect( reply, SIGNAL(activated()), SLOT(slotReply())); | 313 | connect( reply, SIGNAL(activated()), SLOT(slotReply())); |
314 | connect( forward, SIGNAL(activated()), SLOT(slotForward())); | 314 | connect( forward, SIGNAL(activated()), SLOT(slotForward())); |
315 | connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) ); | 315 | connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) ); |
316 | connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) ); | 316 | connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) ); |
317 | connect( closeMail, SIGNAL( activated() ), SLOT( close() ) ); | ||
317 | 318 | ||
318 | attachments->setEnabled(m_gotBody); | 319 | attachments->setEnabled(m_gotBody); |
319 | connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) ); | 320 | connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) ); |
320 | 321 | ||
321 | readConfig(); | 322 | readConfig(); |
322 | attachments->setSorting(-1); | 323 | attachments->setSorting(-1); |
323 | } | 324 | } |
324 | 325 | ||
325 | void ViewMail::readConfig() | 326 | void ViewMail::readConfig() |
326 | { | 327 | { |
327 | Config cfg( "mail" ); | 328 | Config cfg( "mail" ); |
328 | cfg.setGroup( "Settings" ); | 329 | cfg.setGroup( "Settings" ); |
329 | m_showHtml = cfg.readBoolEntry( "showHtml", false ); | 330 | m_showHtml = cfg.readBoolEntry( "showHtml", false ); |
330 | showHtml->setOn( m_showHtml ); | 331 | showHtml->setOn( m_showHtml ); |
331 | } | 332 | } |
332 | 333 | ||
333 | void ViewMail::setText() | 334 | void ViewMail::setText() |
334 | { | 335 | { |
335 | 336 | ||
336 | QString toString; | 337 | QString toString; |
337 | QString ccString; | 338 | QString ccString; |
338 | QString bccString; | 339 | QString bccString; |
339 | 340 | ||
340 | for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) | 341 | for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) |
341 | { | 342 | { |
342 | toString += (*it); | 343 | toString += (*it); |
343 | } | 344 | } |
344 | for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) | 345 | for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) |
345 | { | 346 | { |
346 | ccString += (*it); | 347 | ccString += (*it); |
347 | } | 348 | } |
348 | for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) | 349 | for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) |
349 | { | 350 | { |
350 | bccString += (*it); | 351 | bccString += (*it); |
351 | } | 352 | } |
352 | 353 | ||
353 | setCaption( tr("E-Mail by %1").arg( m_mail[0] ) ); | 354 | setCaption( tr("E-Mail by %1").arg( m_mail[0] ) ); |
354 | 355 | ||
355 | m_mailHtml = "<html><body>" | 356 | m_mailHtml = "<html><body>" |
356 | "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" | 357 | "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" |
357 | "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" | 358 | "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" |
358 | "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" | 359 | "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" |
359 | "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" | 360 | "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" |
360 | "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + | 361 | "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + |
361 | tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" | 362 | tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" |
362 | "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] + | 363 | "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] + |
363 | "</td></tr></table><font face=fixed>"; | 364 | "</td></tr></table><font face=fixed>"; |
364 | 365 | ||
365 | if ( !m_showHtml ) | 366 | if ( !m_showHtml ) |
366 | { | 367 | { |
367 | browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); | 368 | browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); |
368 | } | 369 | } |
369 | else | 370 | else |
370 | { | 371 | { |
371 | browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); | 372 | browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); |
372 | } | 373 | } |
373 | // remove later in favor of a real handling | 374 | // remove later in favor of a real handling |
374 | m_gotBody = true; | 375 | m_gotBody = true; |
375 | } | 376 | } |
376 | 377 | ||
377 | 378 | ||
378 | ViewMail::~ViewMail() | 379 | ViewMail::~ViewMail() |
379 | { | 380 | { |
380 | m_recMail->Wrapper()->cleanMimeCache(); | 381 | m_recMail->Wrapper()->cleanMimeCache(); |
381 | hide(); | 382 | hide(); |
382 | } | 383 | } |
383 | 384 | ||
384 | void ViewMail::hide() | 385 | void ViewMail::hide() |
385 | { | 386 | { |
386 | QWidget::hide(); | 387 | QWidget::hide(); |
387 | 388 | ||
388 | if (_inLoop) | 389 | if (_inLoop) |
389 | { | 390 | { |
390 | _inLoop = false; | 391 | _inLoop = false; |
391 | qApp->exit_loop(); | 392 | qApp->exit_loop(); |
392 | 393 | ||
393 | } | 394 | } |
394 | 395 | ||
395 | } | 396 | } |
396 | 397 | ||
397 | void ViewMail::exec() | 398 | void ViewMail::exec() |
398 | { | 399 | { |
399 | show(); | 400 | show(); |
400 | 401 | ||
401 | if (!_inLoop) | 402 | if (!_inLoop) |
402 | { | 403 | { |
403 | _inLoop = true; | 404 | _inLoop = true; |
404 | qApp->enter_loop(); | 405 | qApp->enter_loop(); |
405 | } | 406 | } |
406 | 407 | ||
407 | } | 408 | } |
408 | 409 | ||
409 | QString ViewMail::deHtml(const QString &string) | 410 | QString ViewMail::deHtml(const QString &string) |
410 | { | 411 | { |
411 | QString string_ = string; | 412 | QString string_ = string; |
412 | string_.replace(QRegExp("&"), "&"); | 413 | string_.replace(QRegExp("&"), "&"); |
413 | string_.replace(QRegExp("<"), "<"); | 414 | string_.replace(QRegExp("<"), "<"); |
414 | string_.replace(QRegExp(">"), ">"); | 415 | string_.replace(QRegExp(">"), ">"); |
415 | string_.replace(QRegExp("\\n"), "<br>"); | 416 | string_.replace(QRegExp("\\n"), "<br>"); |
416 | return string_; | 417 | return string_; |
417 | } | 418 | } |
418 | 419 | ||
419 | void ViewMail::slotReply() | 420 | void ViewMail::slotReply() |
420 | { | 421 | { |
421 | if (!m_gotBody) | 422 | if (!m_gotBody) |
422 | { | 423 | { |
423 | QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok")); | 424 | QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok")); |
424 | return; | 425 | return; |
425 | } | 426 | } |
426 | 427 | ||
427 | QString rtext; | 428 | QString rtext; |
428 | rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose | 429 | rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose |
429 | .arg( m_mail[0] ) | 430 | .arg( m_mail[0] ) |
430 | .arg( m_mail[3] ); | 431 | .arg( m_mail[3] ); |
431 | 432 | ||
432 | QString text = m_mail[2]; | 433 | QString text = m_mail[2]; |
433 | QStringList lines = QStringList::split(QRegExp("\\n"), text); | 434 | QStringList lines = QStringList::split(QRegExp("\\n"), text); |
434 | QStringList::Iterator it; | 435 | QStringList::Iterator it; |
435 | for (it = lines.begin(); it != lines.end(); it++) | 436 | for (it = lines.begin(); it != lines.end(); it++) |
436 | { | 437 | { |
437 | rtext += "> " + *it + "\n"; | 438 | rtext += "> " + *it + "\n"; |
438 | } | 439 | } |
439 | rtext += "\n"; | 440 | rtext += "\n"; |
440 | 441 | ||
441 | QString prefix; | 442 | QString prefix; |
442 | if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = ""; | 443 | if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = ""; |
443 | else prefix = "Re: "; // no i18n on purpose | 444 | else prefix = "Re: "; // no i18n on purpose |
444 | 445 | ||
445 | Settings *settings = new Settings(); | 446 | Settings *settings = new Settings(); |
446 | ComposeMail composer( settings ,this, 0, true); | 447 | ComposeMail composer( settings ,this, 0, true); |
447 | if (m_recMail->Replyto().isEmpty()) { | 448 | if (m_recMail->Replyto().isEmpty()) { |
448 | composer.setTo( m_recMail->getFrom()); | 449 | composer.setTo( m_recMail->getFrom()); |
449 | } else { | 450 | } else { |
450 | composer.setTo( m_recMail->Replyto()); | 451 | composer.setTo( m_recMail->Replyto()); |
451 | } | 452 | } |
452 | composer.setSubject( prefix + m_mail[1] ); | 453 | composer.setSubject( prefix + m_mail[1] ); |
453 | composer.setMessage( rtext ); | 454 | composer.setMessage( rtext ); |
454 | composer.setInReplyTo(m_recMail->Msgid()); | 455 | composer.setInReplyTo(m_recMail->Msgid()); |
455 | 456 | ||
456 | if ( QDialog::Accepted == KApplication::execDialog( &composer ) ) | 457 | if ( QDialog::Accepted == KApplication::execDialog( &composer ) ) |
457 | { | 458 | { |
458 | m_recMail->Wrapper()->answeredMail(m_recMail); | 459 | m_recMail->Wrapper()->answeredMail(m_recMail); |
459 | } | 460 | } |
460 | } | 461 | } |
461 | 462 | ||
462 | void ViewMail::slotForward() | 463 | void ViewMail::slotForward() |
463 | { | 464 | { |
464 | if (!m_gotBody) | 465 | if (!m_gotBody) |
465 | { | 466 | { |
466 | QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot forward yet."), tr("Ok")); | 467 | QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot forward yet."), tr("Ok")); |
467 | return; | 468 | return; |
468 | } | 469 | } |
469 | 470 | ||
470 | QString ftext; | 471 | QString ftext; |
471 | ftext += QString("\n----- Forwarded message from %1 -----\n\n") | 472 | ftext += QString("\n----- Forwarded message from %1 -----\n\n") |
472 | .arg( m_mail[0] ); | 473 | .arg( m_mail[0] ); |
473 | if (!m_mail[3].isNull()) | 474 | if (!m_mail[3].isNull()) |
474 | ftext += QString("Date: %1\n") | 475 | ftext += QString("Date: %1\n") |
475 | .arg( m_mail[3] ); | 476 | .arg( m_mail[3] ); |
476 | if (!m_mail[0].isNull()) | 477 | if (!m_mail[0].isNull()) |
477 | ftext += QString("From: %1\n") | 478 | ftext += QString("From: %1\n") |
478 | .arg( m_mail[0] ); | 479 | .arg( m_mail[0] ); |
479 | if (!m_mail[1].isNull()) | 480 | if (!m_mail[1].isNull()) |
480 | ftext += QString("Subject: %1\n") | 481 | ftext += QString("Subject: %1\n") |
481 | .arg( m_mail[1] ); | 482 | .arg( m_mail[1] ); |
482 | 483 | ||
483 | ftext += QString("\n%1\n") | 484 | ftext += QString("\n%1\n") |
484 | .arg( m_mail[2]); | 485 | .arg( m_mail[2]); |
485 | 486 | ||
486 | ftext += QString("----- End forwarded message -----\n"); | 487 | ftext += QString("----- End forwarded message -----\n"); |
487 | 488 | ||
488 | Settings *settings = new Settings(); | 489 | Settings *settings = new Settings(); |
489 | ComposeMail composer( settings ,this, 0, true); | 490 | ComposeMail composer( settings ,this, 0, true); |
490 | composer.setSubject( "Fwd: " + m_mail[1] ); | 491 | composer.setSubject( "Fwd: " + m_mail[1] ); |
491 | composer.setMessage( ftext ); | 492 | composer.setMessage( ftext ); |
492 | if ( QDialog::Accepted == KApplication::execDialog( &composer )) | 493 | if ( QDialog::Accepted == KApplication::execDialog( &composer )) |
493 | { | 494 | { |
494 | } | 495 | } |
495 | } | 496 | } |
496 | 497 | ||
497 | void ViewMail::slotDeleteMail( ) | 498 | void ViewMail::slotDeleteMail( ) |
498 | { | 499 | { |
499 | if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + m_mail[0] + " - " + m_mail[1] ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) | 500 | if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + m_mail[0] + " - " + m_mail[1] ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) |
500 | { | 501 | { |
501 | m_recMail->Wrapper()->deleteMail( m_recMail ); | 502 | m_recMail->Wrapper()->deleteMail( m_recMail ); |
502 | hide(); | 503 | hide(); |
503 | deleted = true; | 504 | deleted = true; |
504 | } | 505 | } |
505 | } | 506 | } |
506 | 507 | ||
507 | MailImageDlg::MailImageDlg(const QString&fname,QWidget *parent, const char *name, bool modal, WFlags f) | 508 | MailImageDlg::MailImageDlg(const QString&fname,QWidget *parent, const char *name, bool modal, WFlags f) |
508 | : KDialog(parent,name,modal) | 509 | : KDialog(parent,name,modal) |
509 | { | 510 | { |
510 | QVBoxLayout*dlglayout = new QVBoxLayout(this); | 511 | QVBoxLayout*dlglayout = new QVBoxLayout(this); |
511 | dlglayout->setSpacing(2); | 512 | dlglayout->setSpacing(2); |
512 | dlglayout->setMargin(1); | 513 | dlglayout->setMargin(1); |
513 | //m_imageview = new Opie::MM::OImageScrollView(this); | 514 | //m_imageview = new Opie::MM::OImageScrollView(this); |
514 | //dlglayout->addWidget(m_imageview); | 515 | //dlglayout->addWidget(m_imageview); |
515 | } | 516 | } |
516 | 517 | ||
517 | MailImageDlg::~MailImageDlg() | 518 | MailImageDlg::~MailImageDlg() |
518 | { | 519 | { |
519 | } | 520 | } |
520 | 521 | ||
521 | void MailImageDlg::setName(const QString&fname) | 522 | void MailImageDlg::setName(const QString&fname) |
522 | { | 523 | { |
523 | qDebug("viewmail.cpp: MailImageDlg::setName Pending"); | 524 | qDebug("viewmail.cpp: MailImageDlg::setName Pending"); |
524 | // m_imageview->setImage(fname); | 525 | // m_imageview->setImage(fname); |
525 | } | 526 | } |
diff --git a/kmicromail/viewmailbase.cpp b/kmicromail/viewmailbase.cpp index 2590481..584a0ac 100644 --- a/kmicromail/viewmailbase.cpp +++ b/kmicromail/viewmailbase.cpp | |||
@@ -1,90 +1,91 @@ | |||
1 | #include <qtextbrowser.h> | 1 | #include <qtextbrowser.h> |
2 | #include <qlistview.h> | 2 | #include <qlistview.h> |
3 | #include <qaction.h> | 3 | #include <qaction.h> |
4 | #include <qlabel.h> | 4 | #include <qlabel.h> |
5 | #include <qvbox.h> | 5 | #include <qvbox.h> |
6 | 6 | ||
7 | #include <qtoolbar.h> | 7 | #include <qtoolbar.h> |
8 | #include <qmenubar.h> | 8 | #include <qmenubar.h> |
9 | #include <kiconloader.h> | 9 | #include <kiconloader.h> |
10 | //#include <qpe/resource.h> | 10 | //#include <qpe/resource.h> |
11 | 11 | ||
12 | #include "viewmailbase.h" | 12 | #include "viewmailbase.h" |
13 | //#include "opendiag.h" | 13 | //#include "opendiag.h" |
14 | 14 | ||
15 | ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl) | 15 | ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl) |
16 | : QMainWindow(parent, name, fl) | 16 | : QMainWindow(parent, name, fl) |
17 | { | 17 | { |
18 | 18 | ||
19 | setToolBarsMovable(false); | 19 | setToolBarsMovable(false); |
20 | 20 | ||
21 | toolbar = new QToolBar(this); | 21 | toolbar = new QToolBar(this); |
22 | menubar = new QMenuBar( toolbar ); | 22 | menubar = new QMenuBar( toolbar ); |
23 | mailmenu = new QPopupMenu( menubar ); | 23 | mailmenu = new QPopupMenu( menubar ); |
24 | menubar->insertItem( tr( "Mail" ), mailmenu ); | 24 | menubar->insertItem( tr( "Mail" ), mailmenu ); |
25 | 25 | ||
26 | toolbar->setHorizontalStretchable(true); | 26 | toolbar->setHorizontalStretchable(true); |
27 | addToolBar(toolbar); | 27 | addToolBar(toolbar); |
28 | 28 | ||
29 | QLabel *spacer = new QLabel(toolbar); | ||
30 | spacer->setBackgroundMode(QWidget::PaletteButton); | ||
31 | toolbar->setStretchableWidget(spacer); | ||
32 | |||
33 | reply = new QAction(tr("Reply"),SmallIcon("reply"), 0, 0, this); | 29 | reply = new QAction(tr("Reply"),SmallIcon("reply"), 0, 0, this); |
34 | reply->addTo(toolbar); | 30 | reply->addTo(toolbar); |
35 | reply->addTo(mailmenu); | 31 | reply->addTo(mailmenu); |
36 | 32 | ||
37 | forward = new QAction(tr("Forward"),SmallIcon("forward"), 0, 0, this); | 33 | forward = new QAction(tr("Forward"),SmallIcon("forward"), 0, 0, this); |
38 | forward->addTo(toolbar); | 34 | forward->addTo(toolbar); |
39 | forward->addTo(mailmenu); | 35 | forward->addTo(mailmenu); |
40 | 36 | ||
41 | attachbutton = new QAction(tr("Attachments"),SmallIcon("attach"), 0, 0, this, 0, true); | 37 | attachbutton = new QAction(tr("Attachments"),SmallIcon("attach"), 0, 0, this, 0, true); |
42 | attachbutton->addTo(toolbar); | 38 | attachbutton->addTo(toolbar); |
43 | attachbutton->addTo(mailmenu); | 39 | attachbutton->addTo(mailmenu); |
44 | connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool))); | 40 | connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool))); |
45 | 41 | ||
46 | 42 | ||
47 | showHtml = new QAction( tr( "Show Html" ), SmallIcon( "html" ), 0, 0, this, 0, true ); | 43 | showHtml = new QAction( tr( "Show Html" ), SmallIcon( "html" ), 0, 0, this, 0, true ); |
48 | showHtml->addTo( toolbar ); | 44 | showHtml->addTo( toolbar ); |
49 | showHtml->addTo( mailmenu ); | 45 | showHtml->addTo( mailmenu ); |
50 | 46 | ||
51 | deleteMail = new QAction(tr("Delete Mail"),SmallIcon("trash"), 0, 0, this); | 47 | deleteMail = new QAction(tr("Delete Mail"),SmallIcon("trash"), 0, 0, this); |
52 | deleteMail->addTo(toolbar); | 48 | deleteMail->addTo(toolbar); |
53 | deleteMail->addTo(mailmenu); | 49 | deleteMail->addTo(mailmenu); |
54 | 50 | closeMail = new QAction(tr("Close"),SmallIcon("exit"), 0, 0, this); | |
51 | QLabel *spacer = new QLabel(toolbar); | ||
52 | spacer->setBackgroundMode(QWidget::PaletteButton); | ||
53 | toolbar->setStretchableWidget(spacer); | ||
54 | closeMail->addTo(toolbar); | ||
55 | closeMail->addTo(mailmenu); | ||
55 | QVBox *view = new QVBox(this); | 56 | QVBox *view = new QVBox(this); |
56 | setCentralWidget(view); | 57 | setCentralWidget(view); |
57 | 58 | ||
58 | attachments = new QListView(view); | 59 | attachments = new QListView(view); |
59 | attachments->setMinimumHeight(90); | 60 | attachments->setMinimumHeight(90); |
60 | attachments->setMaximumHeight(90); | 61 | attachments->setMaximumHeight(90); |
61 | attachments->setAllColumnsShowFocus(true); | 62 | attachments->setAllColumnsShowFocus(true); |
62 | attachments->addColumn("Mime Type", 60); | 63 | attachments->addColumn("Mime Type", 60); |
63 | attachments->addColumn(tr("Description"), 100); | 64 | attachments->addColumn(tr("Description"), 100); |
64 | attachments->addColumn(tr("Filename"), 80); | 65 | attachments->addColumn(tr("Filename"), 80); |
65 | attachments->addColumn(tr("Size"), 80); | 66 | attachments->addColumn(tr("Size"), 80); |
66 | attachments->setSorting(-1); | 67 | attachments->setSorting(-1); |
67 | attachments->hide(); | 68 | attachments->hide(); |
68 | 69 | ||
69 | browser = new QTextBrowser(view); | 70 | browser = new QTextBrowser(view); |
70 | 71 | ||
71 | //openDiag = new OpenDiag(view); | 72 | //openDiag = new OpenDiag(view); |
72 | //openDiag->hide(); | 73 | //openDiag->hide(); |
73 | 74 | ||
74 | } | 75 | } |
75 | 76 | ||
76 | void ViewMailBase::slotChangeAttachview(bool state) | 77 | void ViewMailBase::slotChangeAttachview(bool state) |
77 | { | 78 | { |
78 | if (state) attachments->show(); | 79 | if (state) attachments->show(); |
79 | else attachments->hide(); | 80 | else attachments->hide(); |
80 | } | 81 | } |
81 | 82 | ||
82 | void ViewMailBase::keyPressEvent ( QKeyEvent * e ) | 83 | void ViewMailBase::keyPressEvent ( QKeyEvent * e ) |
83 | { | 84 | { |
84 | if( e->key()==Qt::Key_Escape ) { | 85 | if( e->key()==Qt::Key_Escape ) { |
85 | close(); | 86 | close(); |
86 | e->accept(); | 87 | e->accept(); |
87 | return; | 88 | return; |
88 | } | 89 | } |
89 | QWidget::keyPressEvent(e); | 90 | QWidget::keyPressEvent(e); |
90 | } | 91 | } |
diff --git a/kmicromail/viewmailbase.h b/kmicromail/viewmailbase.h index fdaad2a..c29d143 100644 --- a/kmicromail/viewmailbase.h +++ b/kmicromail/viewmailbase.h | |||
@@ -1,38 +1,38 @@ | |||
1 | #ifndef VIEWMAILBASE_H | 1 | #ifndef VIEWMAILBASE_H |
2 | #define VIEWMAILBASE_H | 2 | #define VIEWMAILBASE_H |
3 | 3 | ||
4 | #include <qmainwindow.h> | 4 | #include <qmainwindow.h> |
5 | 5 | ||
6 | class QAction; | 6 | class QAction; |
7 | class OpenDiag; | 7 | class OpenDiag; |
8 | class QListView; | 8 | class QListView; |
9 | class QToolBar; | 9 | class QToolBar; |
10 | class QTextBrowser; | 10 | class QTextBrowser; |
11 | class QMenuBar; | 11 | class QMenuBar; |
12 | class QPopupMenu; | 12 | class QPopupMenu; |
13 | 13 | ||
14 | class ViewMailBase : public QMainWindow | 14 | class ViewMailBase : public QMainWindow |
15 | { | 15 | { |
16 | Q_OBJECT | 16 | Q_OBJECT |
17 | 17 | ||
18 | public: | 18 | public: |
19 | ViewMailBase(QWidget *parent = 0, const char *name = 0, WFlags fl = 0); | 19 | ViewMailBase(QWidget *parent = 0, const char *name = 0, WFlags fl = 0); |
20 | 20 | ||
21 | protected: | 21 | protected: |
22 | QAction *reply, *forward, *attachbutton, *deleteMail, *showHtml; | 22 | QAction *reply, *forward, *attachbutton, *deleteMail, *showHtml, *closeMail; |
23 | QListView *attachments; | 23 | QListView *attachments; |
24 | QToolBar *toolbar; | 24 | QToolBar *toolbar; |
25 | QTextBrowser *browser; | 25 | QTextBrowser *browser; |
26 | OpenDiag *openDiag; | 26 | OpenDiag *openDiag; |
27 | QMenuBar *menubar; | 27 | QMenuBar *menubar; |
28 | QPopupMenu *mailmenu; | 28 | QPopupMenu *mailmenu; |
29 | 29 | ||
30 | protected slots: | 30 | protected slots: |
31 | void slotChangeAttachview(bool state); | 31 | void slotChangeAttachview(bool state); |
32 | virtual void keyPressEvent ( QKeyEvent * e ); | 32 | virtual void keyPressEvent ( QKeyEvent * e ); |
33 | 33 | ||
34 | 34 | ||
35 | }; | 35 | }; |
36 | 36 | ||
37 | #endif | 37 | #endif |
38 | 38 | ||