summaryrefslogtreecommitdiffabout
path: root/kmicromail/mainwindow.cpp
Unidiff
Diffstat (limited to 'kmicromail/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/mainwindow.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp
index b19dbbe..7655385 100644
--- a/kmicromail/mainwindow.cpp
+++ b/kmicromail/mainwindow.cpp
@@ -1,305 +1,305 @@
1 1
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3#include <qlabel.h> 3#include <qlabel.h>
4#include <qvbox.h> 4#include <qvbox.h>
5#include <qheader.h> 5#include <qheader.h>
6#include <qtimer.h> 6#include <qtimer.h>
7#include <qlayout.h> 7#include <qlayout.h>
8#include <kdialog.h> 8//#include <kdialog.h>
9#include <kiconloader.h> 9#include <kiconloader.h>
10#include <kapplication.h> 10#include <kapplication.h>
11 11
12#ifdef DESKTOP_VERSION 12#ifdef DESKTOP_VERSION
13#include <qapplication.h> 13#include <qapplication.h>
14#else 14#else
15#include <qpe/qpeapplication.h> 15#include <qpe/qpeapplication.h>
16#endif 16#endif
17#include "defines.h" 17#include "defines.h"
18#include "mainwindow.h" 18#include "mainwindow.h"
19#include <KDGanttMinimizeSplitter.h> 19#include <KDGanttMinimizeSplitter.h>
20 20
21 21
22#include <kabc/stdaddressbook.h> 22#include <kabc/stdaddressbook.h>
23 23
24MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) 24MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
25 : QMainWindow( parent, name ) //, flags ) 25 : QMainWindow( parent, name ) //, flags )
26{ 26{
27 setCaption( i18n( "KOpieMail/Pi" ) ); 27 setCaption( i18n( "KOpieMail/Pi" ) );
28 setToolBarsMovable( false ); 28 setToolBarsMovable( false );
29 //KABC::StdAddressBook::self(); 29 //KABC::StdAddressBook::self();
30 toolBar = new QToolBar( this ); 30 toolBar = new QToolBar( this );
31 menuBar = new QPEMenuBar( toolBar ); 31 menuBar = new QPEMenuBar( toolBar );
32 mailMenu = new QPopupMenu( menuBar ); 32 mailMenu = new QPopupMenu( menuBar );
33 menuBar->insertItem( i18n( "Mail" ), mailMenu ); 33 menuBar->insertItem( i18n( "Mail" ), mailMenu );
34 settingsMenu = new QPopupMenu( menuBar ); 34 settingsMenu = new QPopupMenu( menuBar );
35 menuBar->insertItem( i18n( "Settings" ), settingsMenu ); 35 menuBar->insertItem( i18n( "Settings" ), settingsMenu );
36 36
37 addToolBar( toolBar ); 37 addToolBar( toolBar );
38 toolBar->setHorizontalStretchable( true ); 38 toolBar->setHorizontalStretchable( true );
39 QAction* getMail = new QAction( i18n( "Get all new mails" ), SmallIcon("enter"), 39 QAction* getMail = new QAction( i18n( "Get all new mails" ), SmallIcon("enter"),
40 0, 0, this ); 40 0, 0, this );
41 connect(getMail, SIGNAL( activated() ), 41 connect(getMail, SIGNAL( activated() ),
42 SLOT( slotGetAllMail() ) ); 42 SLOT( slotGetAllMail() ) );
43 getMail->addTo( mailMenu ); 43 getMail->addTo( mailMenu );
44 44
45 getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"), 45 getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"),
46 0, 0, this ); 46 0, 0, this );
47 getMail->addTo( toolBar ); 47 getMail->addTo( toolBar );
48 getMail->addTo( mailMenu ); 48 getMail->addTo( mailMenu );
49 connect(getMail, SIGNAL( activated() ), 49 connect(getMail, SIGNAL( activated() ),
50 SLOT( slotGetMail() ) ); 50 SLOT( slotGetMail() ) );
51 51
52 composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"), 52 composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"),
53 0, 0, this ); 53 0, 0, this );
54 composeMail->addTo( toolBar ); 54 composeMail->addTo( toolBar );
55 composeMail->addTo( mailMenu ); 55 composeMail->addTo( mailMenu );
56 56
57 sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") , 57 sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") ,
58 0, 0, this ); 58 0, 0, this );
59 sendQueued->addTo( toolBar ); 59 sendQueued->addTo( toolBar );
60 sendQueued->addTo( mailMenu ); 60 sendQueued->addTo( mailMenu );
61 61
62 /* 62 /*
63 syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC, 63 syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC,
64 0, 0, this ); 64 0, 0, this );
65 syncFolders->addTo( toolBar ); 65 syncFolders->addTo( toolBar );
66 syncFolders->addTo( mailMenu ); 66 syncFolders->addTo( mailMenu );
67 */ 67 */
68 68
69 showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") , 69 showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") ,
70 0, 0, this, 0, true ); 70 0, 0, this, 0, true );
71 showFolders->addTo( toolBar ); 71 showFolders->addTo( toolBar );
72 showFolders->addTo( mailMenu ); 72 showFolders->addTo( mailMenu );
73 showFolders->setOn( true ); 73 showFolders->setOn( true );
74 connect(showFolders, SIGNAL( toggled(bool) ), 74 connect(showFolders, SIGNAL( toggled(bool) ),
75 SLOT( slotShowFolders(bool) ) ); 75 SLOT( slotShowFolders(bool) ) );
76 76
77 /* 77 /*
78 searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ), 78 searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ),
79 0, 0, this ); 79 0, 0, this );
80 searchMails->addTo( toolBar ); 80 searchMails->addTo( toolBar );
81 searchMails->addTo( mailMenu ); 81 searchMails->addTo( mailMenu );
82 */ 82 */
83 83
84 deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this); 84 deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this);
85 deleteMails->addTo( toolBar ); 85 deleteMails->addTo( toolBar );
86 deleteMails->addTo( mailMenu ); 86 deleteMails->addTo( mailMenu );
87 connect( deleteMails, SIGNAL( activated() ), 87 connect( deleteMails, SIGNAL( activated() ),
88 SLOT( slotDeleteMail() ) ); 88 SLOT( slotDeleteMail() ) );
89 89
90 editSettings = new QAction( i18n( "Edit settings" ), SmallIcon("SettingsIcon") , 90 editSettings = new QAction( i18n( "Edit settings" ), SmallIcon("SettingsIcon") ,
91 0, 0, this ); 91 0, 0, this );
92 editSettings->addTo( settingsMenu ); 92 editSettings->addTo( settingsMenu );
93 connect( editSettings, SIGNAL( activated() ), 93 connect( editSettings, SIGNAL( activated() ),
94 SLOT( slotEditSettings() ) ); 94 SLOT( slotEditSettings() ) );
95 editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") , 95 editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") ,
96 0, 0, this ); 96 0, 0, this );
97 editAccounts->addTo( settingsMenu ); 97 editAccounts->addTo( settingsMenu );
98 98
99 //setCentralWidget( view ); 99 //setCentralWidget( view );
100 100
101 QVBox* wrapperBox = new QVBox( this ); 101 QVBox* wrapperBox = new QVBox( this );
102 setCentralWidget( wrapperBox ); 102 setCentralWidget( wrapperBox );
103 103
104 // QWidget *view = new QWidget( wrapperBox ); 104 // QWidget *view = new QWidget( wrapperBox );
105 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); 105 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox);
106 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); 106 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left);
107 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); 107 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight );
108 108
109 folderView = new AccountView( split ); 109 folderView = new AccountView( split );
110 folderView->header()->hide(); 110 folderView->header()->hide();
111 folderView->setRootIsDecorated( false ); 111 folderView->setRootIsDecorated( false );
112 folderView->addColumn( i18n( "Mailbox" ) ); 112 folderView->addColumn( i18n( "Mailbox" ) );
113 113
114 //layout->addWidget( folderView ); 114 //layout->addWidget( folderView );
115 115
116 mailView = new QListView( split ); 116 mailView = new QListView( split );
117 mailView->addColumn( i18n( " " ) ); 117 mailView->addColumn( i18n( " " ) );
118 mailView->addColumn( i18n( "Subject" ),QListView::Manual ); 118 mailView->addColumn( i18n( "Subject" ),QListView::Manual );
119 mailView->addColumn( i18n( "Sender" ),QListView::Manual ); 119 mailView->addColumn( i18n( "Sender" ),QListView::Manual );
120 mailView->addColumn( i18n( "Size" ),QListView::Manual); 120 mailView->addColumn( i18n( "Size" ),QListView::Manual);
121 mailView->addColumn( i18n( "Date" ),QListView::Manual); 121 mailView->addColumn( i18n( "Date" ),QListView::Manual);
122 mailView->setAllColumnsShowFocus(true); 122 mailView->setAllColumnsShowFocus(true);
123 //mailView->setSorting(-1); 123 //mailView->setSorting(-1);
124 mailView->setRootIsDecorated( false ); 124 mailView->setRootIsDecorated( false );
125 statusWidget = new StatusWidget( wrapperBox ); 125 statusWidget = new StatusWidget( wrapperBox );
126 statusWidget->hide(); 126 statusWidget->hide();
127 127
128 //layout->addWidget( mailView ); 128 //layout->addWidget( mailView );
129 //layout->setStretchFactor( folderView, 1 ); 129 //layout->setStretchFactor( folderView, 1 );
130 //layout->setStretchFactor( mailView, 2 ); 130 //layout->setStretchFactor( mailView, 2 );
131 131
132 slotAdjustLayout(); 132 slotAdjustLayout();
133#ifndef DESKTOP_VERSION 133#ifndef DESKTOP_VERSION
134 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); 134 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold);
135 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); 135 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold);
136#endif 136#endif
137 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, 137 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this,
138 SLOT( mailLeftClicked(QListViewItem*) ) ); 138 SLOT( mailLeftClicked(QListViewItem*) ) );
139 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, 139 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this,
140 SLOT( mailLeftClicked(QListViewItem*) ) ); 140 SLOT( mailLeftClicked(QListViewItem*) ) );
141 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, 141 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this,
142 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); 142 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) );
143 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), 143 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)),
144 this,SLOT(refreshMailView(const QValueList<RecMailP>&))); 144 this,SLOT(refreshMailView(const QValueList<RecMailP>&)));
145 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); 145 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) );
146 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); 146 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) );
147// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); 147// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) );
148 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); 148 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) );
149 //mailView->setMultiSelection ( true ); 149 //mailView->setMultiSelection ( true );
150 mailView->setSelectionMode( QListView::Extended ); 150 mailView->setSelectionMode( QListView::Extended );
151 QValueList<int> list; 151 QValueList<int> list;
152 int fw = 100; 152 int fw = 100;
153 if ( QApplication::desktop()->width() > 320 ) 153 if ( QApplication::desktop()->width() > 320 )
154 fw = 50; 154 fw = 50;
155 list.append( fw ); 155 list.append( fw );
156 list.append( 100 ); 156 list.append( 100 );
157 split->setSizes( list ); 157 split->setSizes( list );
158 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); 158 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) );
159 mailView->setShowSortIndicator ( true ); 159 mailView->setShowSortIndicator ( true );
160 QLabel *spacer = new QLabel( toolBar ); 160 QLabel *spacer = new QLabel( toolBar );
161 spacer->setBackgroundMode( QWidget::PaletteButton ); 161 spacer->setBackgroundMode( QWidget::PaletteButton );
162 toolBar->setStretchableWidget( spacer ); 162 toolBar->setStretchableWidget( spacer );
163 163
164 QAction* closeMail = new QAction(i18n("Close"),SmallIcon("exit"), 0, 0, this); 164 QAction* closeMail = new QAction(i18n("Close"),SmallIcon("exit"), 0, 0, this);
165 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) ); 165 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) );
166 if ( QApplication::desktop()->width() > 320 ) 166 if ( QApplication::desktop()->width() > 320 )
167 closeMail->addTo(toolBar); 167 closeMail->addTo(toolBar);
168 closeMail->addTo(mailMenu); 168 closeMail->addTo(mailMenu);
169 169
170 170
171 QPopupMenu* helpMenu = new QPopupMenu( menuBar ); 171 QPopupMenu* helpMenu = new QPopupMenu( menuBar );
172 menuBar->insertItem( i18n( "Help" ), helpMenu ); 172 menuBar->insertItem( i18n( "Help" ), helpMenu );
173 QAction* li = new QAction(i18n("About"), QPixmap(), 0, 0, this); 173 QAction* li = new QAction(i18n("About"), QPixmap(), 0, 0, this);
174 connect( li, SIGNAL( activated() ), SLOT( showAbout()) ); 174 connect( li, SIGNAL( activated() ), SLOT( showAbout()) );
175 li->addTo(helpMenu); 175 li->addTo(helpMenu);
176 li = new QAction(i18n("Licence"),QPixmap(), 0, 0, this); 176 li = new QAction(i18n("Licence"),QPixmap(), 0, 0, this);
177 connect( li, SIGNAL( activated() ), SLOT( showLicence()) ); 177 connect( li, SIGNAL( activated() ), SLOT( showLicence()) );
178 li->addTo(helpMenu); 178 li->addTo(helpMenu);
179 li = new QAction(i18n("LibEtPan Licence"), QPixmap(), 0, 0, this); 179 li = new QAction(i18n("LibEtPan Licence"), QPixmap(), 0, 0, this);
180 connect( li, SIGNAL( activated() ), SLOT( showEtpanLicence()) ); 180 connect( li, SIGNAL( activated() ), SLOT( showEtpanLicence()) );
181 li->addTo(helpMenu); 181 li->addTo(helpMenu);
182} 182}
183 183
184MainWindow::~MainWindow() 184MainWindow::~MainWindow()
185{ 185{
186} 186}
187 187
188void MainWindow::showLicence() 188void MainWindow::showLicence()
189{ 189{
190 KApplication::showLicence(); 190 KApplication::showLicence();
191} 191}
192void MainWindow::showAbout() 192void MainWindow::showAbout()
193{ 193{
194 QString version; 194 QString version;
195#include <../version> 195#include <../version>
196 196
197 QString cap = "About KOpieMail/Pi"; 197 QString cap = "About KOpieMail/Pi";
198 QString text =i18n("KOpieMail/Platform-independent\n") + 198 QString text =i18n("KOpieMail/Platform-independent\n") +
199 "(OM/Pi) " + version + " - " 199 "(OM/Pi) " + version + " - "
200 200
201#ifdef DESKTOP_VERSION 201#ifdef DESKTOP_VERSION
202 "Desktop Edition\n" 202 "Desktop Edition\n"
203#else 203#else
204 "PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n" 204 "PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n"
205#endif 205#endif
206 "www.pi-sync.net\n\n" 206 "www.pi-sync.net\n\n"
207 207
208 208
209 209
210"Copyright (c) 2004 Lutz Rogowski <lutz@pi-sync.net>\n" 210"Copyright (c) 2004 Lutz Rogowski <lutz@pi-sync.net>\n"
211 "KOpieMail/Pi is based on Opie Mail\n" 211 "KOpieMail/Pi is based on Opie Mail\n"
212 "Copyright (c) Rajko Albrecht and the Opie team\n" 212 "Copyright (c) Rajko Albrecht and the Opie team\n"
213 "KOpieMail/Pi is licensed under the GPL\n" 213 "KOpieMail/Pi is licensed under the GPL\n"
214 "\n" 214 "\n"
215 "KOpieMail/Pi uses LibEtPan - a mail stuff library\n" 215 "KOpieMail/Pi uses LibEtPan - a mail stuff library\n"
216 "Copyright (C) 2001, 2002 - DINH Viet Hoa\n" 216 "Copyright (C) 2001, 2002 - DINH Viet Hoa\n"
217 "libEtPan has its own licence - see LibEtPan licence\n"; 217 "libEtPan has its own licence - see LibEtPan licence\n";
218 218
219 KApplication::showText( cap, text ); 219 KApplication::showText( cap, text );
220} 220}
221void MainWindow::showEtpanLicence() 221void MainWindow::showEtpanLicence()
222{ 222{
223 KApplication::showFile( "LibEtPan licence", "kdepim/kopiemail/COPYRIGHTlibetpan" ); 223 KApplication::showFile( "LibEtPan licence", "kdepim/kopiemail/COPYRIGHTlibetpan" );
224 224
225} 225}
226void MainWindow::appMessage(const QCString &, const QByteArray &) 226void MainWindow::appMessage(const QCString &, const QByteArray &)
227{ 227{
228 qDebug("appMessage implemented by subclass"); 228 qDebug("appMessage implemented by subclass");
229} 229}
230 230
231void MainWindow::slotAdjustLayout() { 231void MainWindow::slotAdjustLayout() {
232 232
233 /* 233 /*
234 QWidget *d = QApplication::desktop(); 234 QWidget *d = QApplication::desktop();
235 235
236 if ( d->width() < d->height() ) { 236 if ( d->width() < d->height() ) {
237 layout->setDirection( QBoxLayout::TopToBottom ); 237 layout->setDirection( QBoxLayout::TopToBottom );
238 } else { 238 } else {
239 layout->setDirection( QBoxLayout::LeftToRight ); 239 layout->setDirection( QBoxLayout::LeftToRight );
240 } 240 }
241 */ 241 */
242} 242}
243 243
244void MainWindow::slotAdjustColumns() 244void MainWindow::slotAdjustColumns()
245{ 245{
246 bool hidden = folderView->isHidden(); 246 bool hidden = folderView->isHidden();
247 if ( hidden ) folderView->show(); 247 if ( hidden ) folderView->show();
248 folderView->setColumnWidth( 0, folderView->visibleWidth() ); 248 folderView->setColumnWidth( 0, folderView->visibleWidth() );
249 if ( hidden ) folderView->hide(); 249 if ( hidden ) folderView->hide();
250 250
251 mailView->setColumnWidth( 0, 10 ); 251 mailView->setColumnWidth( 0, 10 );
252 mailView->setColumnWidth( 1, 100 ); 252 mailView->setColumnWidth( 1, 100 );
253 mailView->setColumnWidth( 2, 100 ); 253 mailView->setColumnWidth( 2, 100 );
254 mailView->setColumnWidth( 3, 50 ); 254 mailView->setColumnWidth( 3, 50 );
255 mailView->setColumnWidth( 4, 120 ); 255 mailView->setColumnWidth( 4, 120 );
256} 256}
257 257
258void MainWindow::slotEditSettings() 258void MainWindow::slotEditSettings()
259{ 259{
260} 260}
261 261
262void MainWindow::slotShowFolders( bool ) 262void MainWindow::slotShowFolders( bool )
263{ 263{
264 qDebug("not implemented: "); 264 qDebug("not implemented: ");
265} 265}
266 266
267void MainWindow::refreshMailView(const QValueList<RecMailP>&) 267void MainWindow::refreshMailView(const QValueList<RecMailP>&)
268{ 268{
269 qDebug("not implemented: "); 269 qDebug("not implemented: ");
270} 270}
271 271
272void MainWindow::mailLeftClicked(QListViewItem * ) 272void MainWindow::mailLeftClicked(QListViewItem * )
273{ 273{
274 qDebug("not implemented: "); 274 qDebug("not implemented: ");
275} 275}
276 276
277void MainWindow::displayMail() 277void MainWindow::displayMail()
278{ 278{
279 qDebug("not implemented: "); 279 qDebug("not implemented: ");
280} 280}
281 281
282void MainWindow::slotDeleteMail() 282void MainWindow::slotDeleteMail()
283{ 283{
284 qDebug("not implemented: "); 284 qDebug("not implemented: ");
285} 285}
286 286
287void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int ) 287void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int )
288{ 288{
289 qDebug("not implemented: "); 289 qDebug("not implemented: ");
290} 290}
291 291
292void MainWindow::slotSendQueued() 292void MainWindow::slotSendQueued()
293{ 293{
294 qDebug("not implemented: "); 294 qDebug("not implemented: ");
295} 295}
296 296
297void MainWindow::slotEditAccounts() 297void MainWindow::slotEditAccounts()
298{ 298{
299 qDebug("not implemented: "); 299 qDebug("not implemented: ");
300} 300}
301 301
302void MainWindow::slotComposeMail() 302void MainWindow::slotComposeMail()
303{ 303{
304 qDebug("not implemented: "); 304 qDebug("not implemented: ");
305} 305}