summaryrefslogtreecommitdiff
authorzecke <zecke>2004-07-24 13:16:26 (UTC)
committer zecke <zecke>2004-07-24 13:16:26 (UTC)
commit144d91fee9e0ec0cb672508637c639cfbbf4e750 (patch) (unidiff)
tree802d12ac283361e3d5d710a6b8387dc22b88c462
parent1efb57a4cffc8a19a0dadbd008ff205d3d61d216 (diff)
downloadopie-144d91fee9e0ec0cb672508637c639cfbbf4e750.zip
opie-144d91fee9e0ec0cb672508637c639cfbbf4e750.tar.gz
opie-144d91fee9e0ec0cb672508637c639cfbbf4e750.tar.bz2
Delete the Views which are created in the OFileSelector
Add a new member and one method to register the view. The views themselves (baseclass) call this function. Simply going over the viewMap wouldn't work as we can have the same instance contained twice under a different name
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/fileselector/ofileselector.cpp19
-rw-r--r--libopie2/opieui/fileselector/ofileselector.h10
2 files changed, 24 insertions, 5 deletions
diff --git a/libopie2/opieui/fileselector/ofileselector.cpp b/libopie2/opieui/fileselector/ofileselector.cpp
index 5528aed..b06defd 100644
--- a/libopie2/opieui/fileselector/ofileselector.cpp
+++ b/libopie2/opieui/fileselector/ofileselector.cpp
@@ -1,1175 +1,1184 @@
1 1
2/* 2/*
3               =. This file is part of the OPIE Project 3               =. This file is part of the OPIE Project
4             .=l. Copyright (C) 2002,2003 Holger Freyther <zecke@handhelds.org> 4             .=l. Copyright (C) 2002,2003 Holger Freyther <zecke@handhelds.org>
5           .>+-= 5           .>+-=
6 _;:,     .>    :=|. This library is free software; you can 6 _;:,     .>    :=|. This library is free software; you can
7.> <`_,   >  .   <= redistribute it and/or modify it under 7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 8:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
9.="- .-=="i,     .._ License as published by the Free Software 9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; either version 2 of the License, 10 - .   .-<_>     .<> Foundation; either version 2 of the License,
11     ._= =}       : or (at your option) any later version. 11     ._= =}       : or (at your option) any later version.
12    .%`+i>       _;_. 12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This library is distributed in the hope that 13    .i_,=:_.      -<s. This library is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of 15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
18..}^=.=       =       ; Library General Public License for more 18..}^=.=       =       ; Library General Public License for more
19++=   -.     .`     .: details. 19++=   -.     .`     .: details.
20 :     =  ...= . :.=- 20 :     =  ...= . :.=-
21 -.   .:....=;==+<; You should have received a copy of the GNU 21 -.   .:....=;==+<; You should have received a copy of the GNU
22  -_. . .   )=.  = Library General Public License along with 22  -_. . .   )=.  = Library General Public License along with
23    --        :-=` this library; see the file COPYING.LIB. 23    --        :-=` this library; see the file COPYING.LIB.
24 If not, write to the Free Software Foundation, 24 If not, write to the Free Software Foundation,
25 Inc., 59 Temple Place - Suite 330, 25 Inc., 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA. 26 Boston, MA 02111-1307, USA.
27 27
28*/ 28*/
29 29
30/* hacky but we need to get FileSelector::filter */ 30/* hacky but we need to get FileSelector::filter */
31#define private public 31#define private public
32#include <qpe/fileselector.h> 32#include <qpe/fileselector.h>
33#undef private 33#undef private
34 34
35#include "ofileselector_p.h" 35#include "ofileselector_p.h"
36 36
37/* OPIE */ 37/* OPIE */
38#include <opie2/ofileselector.h> 38#include <opie2/ofileselector.h>
39#include <opie2/odebug.h> 39#include <opie2/odebug.h>
40 40
41#include <qpe/qpeapplication.h> 41#include <qpe/qpeapplication.h>
42#include <qpe/mimetype.h> 42#include <qpe/mimetype.h>
43#include <qpe/resource.h> 43#include <qpe/resource.h>
44#include <qpe/storage.h> 44#include <qpe/storage.h>
45 45
46/* QT */ 46/* QT */
47#include <qcombobox.h> 47#include <qcombobox.h>
48#include <qdir.h> 48#include <qdir.h>
49#include <qhbox.h> 49#include <qhbox.h>
50#include <qheader.h> 50#include <qheader.h>
51#include <qlabel.h> 51#include <qlabel.h>
52#include <qlayout.h> 52#include <qlayout.h>
53#include <qlineedit.h> 53#include <qlineedit.h>
54#include <qlistview.h> 54#include <qlistview.h>
55#include <qpopupmenu.h> 55#include <qpopupmenu.h>
56#include <qwidgetstack.h> 56#include <qwidgetstack.h>
57#include <qregexp.h> 57#include <qregexp.h>
58#include <qobjectlist.h> 58#include <qobjectlist.h>
59 59
60using namespace Opie::Ui::Internal; 60using namespace Opie::Ui::Internal;
61 61
62namespace Opie { 62namespace Opie {
63namespace Ui { 63namespace Ui {
64namespace Internal { 64namespace Internal {
65OFileViewInterface::OFileViewInterface( OFileSelector* selector ) 65OFileViewInterface::OFileViewInterface( OFileSelector* _selector )
66 : m_selector( selector ) 66 : m_selector( _selector )
67{} 67{
68 selector()->registerView( this );
69}
68 70
69OFileViewInterface::~OFileViewInterface() 71OFileViewInterface::~OFileViewInterface()
70{} 72{}
71 73
72QString OFileViewInterface::name()const 74QString OFileViewInterface::name()const
73{ 75{
74 return m_name; 76 return m_name;
75} 77}
76 78
77void OFileViewInterface::setName( const QString& name ) 79void OFileViewInterface::setName( const QString& name )
78{ 80{
79 m_name = name; 81 m_name = name;
80} 82}
81 83
82OFileSelector* OFileViewInterface::selector()const 84OFileSelector* OFileViewInterface::selector()const
83{ 85{
84 return m_selector; 86 return m_selector;
85} 87}
86 88
87DocLnk OFileViewInterface::selectedDocument()const 89DocLnk OFileViewInterface::selectedDocument()const
88{ 90{
89 return DocLnk( selectedName() ); 91 return DocLnk( selectedName() );
90} 92}
91 93
92bool OFileViewInterface::showNew()const 94bool OFileViewInterface::showNew()const
93{ 95{
94 return selector()->showNew(); 96 return selector()->showNew();
95} 97}
96 98
97bool OFileViewInterface::showClose()const 99bool OFileViewInterface::showClose()const
98{ 100{
99 return selector()->showClose(); 101 return selector()->showClose();
100} 102}
101 103
102MimeTypes OFileViewInterface::mimeTypes()const 104MimeTypes OFileViewInterface::mimeTypes()const
103{ 105{
104 return selector()->mimeTypes(); 106 return selector()->mimeTypes();
105} 107}
106 108
107QStringList OFileViewInterface::currentMimeType()const 109QStringList OFileViewInterface::currentMimeType()const
108{ 110{
109 return selector()->currentMimeType(); 111 return selector()->currentMimeType();
110} 112}
111 113
112void OFileViewInterface::activate( const QString& ) 114void OFileViewInterface::activate( const QString& )
113{ 115{
114 // not implemented here 116 // not implemented here
115} 117}
116 118
117void OFileViewInterface::ok() 119void OFileViewInterface::ok()
118{ 120{
119 emit selector()->ok(); 121 emit selector()->ok();
120} 122}
121 123
122void OFileViewInterface::cancel() 124void OFileViewInterface::cancel()
123{ 125{
124 emit selector()->cancel(); 126 emit selector()->cancel();
125} 127}
126 128
127void OFileViewInterface::closeMe() 129void OFileViewInterface::closeMe()
128{ 130{
129 emit selector()->closeMe(); 131 emit selector()->closeMe();
130} 132}
131 133
132void OFileViewInterface::fileSelected( const QString& str) 134void OFileViewInterface::fileSelected( const QString& str)
133{ 135{
134 emit selector()->fileSelected( str); 136 emit selector()->fileSelected( str);
135} 137}
136 138
137void OFileViewInterface::fileSelected( const DocLnk& lnk) 139void OFileViewInterface::fileSelected( const DocLnk& lnk)
138{ 140{
139 emit selector()->fileSelected( lnk ); 141 emit selector()->fileSelected( lnk );
140} 142}
141 143
142void OFileViewInterface::setCurrentFileName( const QString& str ) 144void OFileViewInterface::setCurrentFileName( const QString& str )
143{ 145{
144 selector()->m_lneEdit->setText( str ); 146 selector()->m_lneEdit->setText( str );
145} 147}
146 148
147QString OFileViewInterface::currentFileName()const 149QString OFileViewInterface::currentFileName()const
148{ 150{
149 return selector()->m_lneEdit->text(); 151 return selector()->m_lneEdit->text();
150} 152}
151 153
152QString OFileViewInterface::startDirectory()const 154QString OFileViewInterface::startDirectory()const
153{ 155{
154 return selector()->m_startDir; 156 return selector()->m_startDir;
155} 157}
156 158
157ODocumentFileView::ODocumentFileView( OFileSelector* selector ) 159ODocumentFileView::ODocumentFileView( OFileSelector* selector )
158 :OFileViewInterface( selector ) 160 :OFileViewInterface( selector )
159{ 161{
160 m_selector = 0; 162 m_selector = 0;
161 setName( QObject::tr("Documents") ); 163 setName( QObject::tr("Documents") );
162} 164}
163 165
164ODocumentFileView::~ODocumentFileView() 166ODocumentFileView::~ODocumentFileView()
165{ 167{
166} 168}
167 169
168QString ODocumentFileView::selectedName()const 170QString ODocumentFileView::selectedName()const
169{ 171{
170 if (!m_selector) 172 if (!m_selector)
171 return QString::null; 173 return QString::null;
172 174
173 return m_selector->selectedDocument().file(); 175 return m_selector->selectedDocument().file();
174} 176}
175 177
176QString ODocumentFileView::selectedPath()const 178QString ODocumentFileView::selectedPath()const
177{ 179{
178 return QPEApplication::documentDir(); 180 return QPEApplication::documentDir();
179} 181}
180 182
181QString ODocumentFileView::directory()const 183QString ODocumentFileView::directory()const
182{ 184{
183 return selectedPath(); 185 return selectedPath();
184} 186}
185 187
186void ODocumentFileView::reread() 188void ODocumentFileView::reread()
187{ 189{
188 if (!m_selector) 190 if (!m_selector)
189 return; 191 return;
190 192
191 m_selector->setNewVisible( showNew() ); 193 m_selector->setNewVisible( showNew() );
192 m_selector->setCloseVisible( showClose() ); 194 m_selector->setCloseVisible( showClose() );
193 m_selector->filter = currentMimeType().join(";"); 195 m_selector->filter = currentMimeType().join(";");
194 m_selector->reread(); 196 m_selector->reread();
195} 197}
196 198
197int ODocumentFileView::fileCount()const 199int ODocumentFileView::fileCount()const
198{ 200{
199 if (!m_selector) 201 if (!m_selector)
200 return -1; 202 return -1;
201 203
202 return m_selector->fileCount(); 204 return m_selector->fileCount();
203} 205}
204 206
205DocLnk ODocumentFileView::selectedDocument()const 207DocLnk ODocumentFileView::selectedDocument()const
206{ 208{
207 if (!m_selector) 209 if (!m_selector)
208 return DocLnk(); 210 return DocLnk();
209 211
210 return m_selector->selectedDocument(); 212 return m_selector->selectedDocument();
211} 213}
212 214
213QWidget* ODocumentFileView::widget( QWidget* parent ) 215QWidget* ODocumentFileView::widget( QWidget* parent )
214{ 216{
215 if (!m_selector ) 217 if (!m_selector )
216 { 218 {
217 m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() ); 219 m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() );
218 QObject::connect(m_selector, SIGNAL(fileSelected(const DocLnk&) ), 220 QObject::connect(m_selector, SIGNAL(fileSelected(const DocLnk&) ),
219 selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) ); 221 selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) );
220 QObject::connect(m_selector, SIGNAL(closeMe() ), 222 QObject::connect(m_selector, SIGNAL(closeMe() ),
221 selector(), SIGNAL(closeMe() ) ); 223 selector(), SIGNAL(closeMe() ) );
222 QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk&) ), 224 QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk&) ),
223 selector(), SIGNAL(newSelected(const DocLnk&) ) ); 225 selector(), SIGNAL(newSelected(const DocLnk&) ) );
224 } 226 }
225 227
226 return m_selector; 228 return m_selector;
227} 229}
228 230
229/* 231/*
230 * This is the file system view used 232 * This is the file system view used
231 * we use a QListView + QListViewItems for it 233 * we use a QListView + QListViewItems for it
232 */ 234 */
233 235
234OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap, 236OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap,
235 const QString& path, const QString& date, 237 const QString& path, const QString& date,
236 const QString& size, const QString& dir, 238 const QString& size, const QString& dir,
237 bool isLocked, bool isDir ) 239 bool isLocked, bool isDir )
238 : QListViewItem( view ) 240 : QListViewItem( view )
239{ 241{
240 setPixmap(0, pixmap ); 242 setPixmap(0, pixmap );
241 setText(1, path ); 243 setText(1, path );
242 setText(2, size ); 244 setText(2, size );
243 setText(3, date ); 245 setText(3, date );
244 m_isDir = isDir; 246 m_isDir = isDir;
245 m_dir = dir; 247 m_dir = dir;
246 m_locked = isLocked; 248 m_locked = isLocked;
247} 249}
248 250
249OFileSelectorItem::~OFileSelectorItem() 251OFileSelectorItem::~OFileSelectorItem()
250{ 252{
251} 253}
252 254
253bool OFileSelectorItem::isLocked()const 255bool OFileSelectorItem::isLocked()const
254{ 256{
255 return m_locked; 257 return m_locked;
256} 258}
257 259
258QString OFileSelectorItem::directory()const 260QString OFileSelectorItem::directory()const
259{ 261{
260 return m_dir; 262 return m_dir;
261} 263}
262 264
263bool OFileSelectorItem::isDir()const 265bool OFileSelectorItem::isDir()const
264{ 266{
265 return m_isDir; 267 return m_isDir;
266} 268}
267 269
268QString OFileSelectorItem::path()const 270QString OFileSelectorItem::path()const
269{ 271{
270 return text( 1 ); 272 return text( 1 );
271} 273}
272 274
273QString OFileSelectorItem::key( int id, bool )const 275QString OFileSelectorItem::key( int id, bool )const
274{ 276{
275 QString ke; 277 QString ke;
276 if( id == 0 || id == 1 ) 278 if( id == 0 || id == 1 )
277 { // name 279 { // name
278 if( m_isDir ) 280 if( m_isDir )
279 { 281 {
280 ke.append("0" ); 282 ke.append("0" );
281 ke.append( text(1) ); 283 ke.append( text(1) );
282 } 284 }
283 else 285 else
284 { 286 {
285 ke.append("1" ); 287 ke.append("1" );
286 ke.append( text(1) ); 288 ke.append( text(1) );
287 } 289 }
288 return ke; 290 return ke;
289 } 291 }
290 else 292 else
291 return text( id ); 293 return text( id );
292 294
293} 295}
294 296
295OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, OFileSelector* sel) 297OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, OFileSelector* sel)
296 :QWidget( parent ), m_sel( sel ) 298 :QWidget( parent ), m_sel( sel )
297{ 299{
298 m_all = false; 300 m_all = false;
299 QVBoxLayout* lay = new QVBoxLayout( this ); 301 QVBoxLayout* lay = new QVBoxLayout( this );
300 m_currentDir = startDir; 302 m_currentDir = startDir;
301 303
302 /* 304 /*
303 * now we add a special bar 305 * now we add a special bar
304 * One Button For Up 306 * One Button For Up
305 * Home 307 * Home
306 * Doc 308 * Doc
307 * And a dropdown menu with FileSystems 309 * And a dropdown menu with FileSystems
308 * FUTURE: one to change dir with lineedit 310 * FUTURE: one to change dir with lineedit
309 * Bookmarks 311 * Bookmarks
310 * Create Dir 312 * Create Dir
311 */ 313 */
312 QHBox* box = new QHBox(this ); 314 QHBox* box = new QHBox(this );
313 box->setBackgroundMode( PaletteButton ); 315 box->setBackgroundMode( PaletteButton );
314 box->setSpacing( 0 ); 316 box->setSpacing( 0 );
315 317
316 QToolButton *btn = new QToolButton( box ); 318 QToolButton *btn = new QToolButton( box );
317 btn->setIconSet( Resource::loadIconSet("up") ); 319 btn->setIconSet( Resource::loadIconSet("up") );
318 connect(btn, SIGNAL(clicked() ), 320 connect(btn, SIGNAL(clicked() ),
319 this, SLOT( cdUP() ) ); 321 this, SLOT( cdUP() ) );
320 322
321 btn = new QToolButton( box ); 323 btn = new QToolButton( box );
322 btn->setIconSet( Resource::loadIconSet("home") ); 324 btn->setIconSet( Resource::loadIconSet("home") );
323 connect(btn, SIGNAL(clicked() ), 325 connect(btn, SIGNAL(clicked() ),
324 this, SLOT( cdHome() ) ); 326 this, SLOT( cdHome() ) );
325 327
326 btn = new QToolButton( box ); 328 btn = new QToolButton( box );
327 btn->setIconSet( Resource::loadIconSet("DocsIcon") ); 329 btn->setIconSet( Resource::loadIconSet("DocsIcon") );
328 connect(btn, SIGNAL(clicked() ), 330 connect(btn, SIGNAL(clicked() ),
329 this, SLOT(cdDoc() ) ); 331 this, SLOT(cdDoc() ) );
330 332
331 m_btnNew = new QToolButton( box ); 333 m_btnNew = new QToolButton( box );
332 m_btnNew->setIconSet( Resource::loadIconSet("new") ); 334 m_btnNew->setIconSet( Resource::loadIconSet("new") );
333 connect(m_btnNew, SIGNAL(clicked() ), 335 connect(m_btnNew, SIGNAL(clicked() ),
334 this, SLOT(slotNew() ) ); 336 this, SLOT(slotNew() ) );
335 337
336 338
337 m_btnClose = new QToolButton( box ); 339 m_btnClose = new QToolButton( box );
338 m_btnClose->setIconSet( Resource::loadIconSet("close") ); 340 m_btnClose->setIconSet( Resource::loadIconSet("close") );
339 connect(m_btnClose, SIGNAL(clicked() ), 341 connect(m_btnClose, SIGNAL(clicked() ),
340 selector(), SIGNAL(closeMe() ) ); 342 selector(), SIGNAL(closeMe() ) );
341 343
342 btn = new QToolButton( box ); 344 btn = new QToolButton( box );
343 btn->setIconSet( Resource::loadIconSet("cardmon/pcmcia") ); 345 btn->setIconSet( Resource::loadIconSet("cardmon/pcmcia") );
344 346
345 /* let's fill device parts */ 347 /* let's fill device parts */
346 QPopupMenu* pop = new QPopupMenu(this); 348 QPopupMenu* pop = new QPopupMenu(this);
347 connect(pop, SIGNAL( activated(int) ), 349 connect(pop, SIGNAL( activated(int) ),
348 this, SLOT(slotFSActivated(int) ) ); 350 this, SLOT(slotFSActivated(int) ) );
349 351
350 StorageInfo storage; 352 StorageInfo storage;
351 const QList<FileSystem> &fs = storage.fileSystems(); 353 const QList<FileSystem> &fs = storage.fileSystems();
352 QListIterator<FileSystem> it(fs); 354 QListIterator<FileSystem> it(fs);
353 for ( ; it.current(); ++it ) 355 for ( ; it.current(); ++it )
354 { 356 {
355 const QString disk = (*it)->name(); 357 const QString disk = (*it)->name();
356 const QString path = (*it)->path(); 358 const QString path = (*it)->path();
357 m_dev.insert( disk, path ); 359 m_dev.insert( disk, path );
358 pop->insertItem( disk ); 360 pop->insertItem( disk );
359 } 361 }
360 m_fsPop = pop; 362 m_fsPop = pop;
361 363
362 364
363 btn->setPopup( pop ); 365 btn->setPopup( pop );
364 366
365 lay->addWidget( box ); 367 lay->addWidget( box );
366 368
367 m_view = new QListView( this ); 369 m_view = new QListView( this );
368 370
369 m_view->installEventFilter(this); 371 m_view->installEventFilter(this);
370 372
371 QPEApplication::setStylusOperation( m_view->viewport(), 373 QPEApplication::setStylusOperation( m_view->viewport(),
372 QPEApplication::RightOnHold); 374 QPEApplication::RightOnHold);
373 m_view->addColumn(" " ); 375 m_view->addColumn(" " );
374 m_view->addColumn(tr("Name"), 135 ); 376 m_view->addColumn(tr("Name"), 135 );
375 m_view->addColumn(tr("Size"), -1 ); 377 m_view->addColumn(tr("Size"), -1 );
376 m_view->addColumn(tr("Date"), 60 ); 378 m_view->addColumn(tr("Date"), 60 );
377 m_view->addColumn(tr("Mime Type"), -1 ); 379 m_view->addColumn(tr("Mime Type"), -1 );
378 380
379 381
380 m_view->setSorting( 1 ); 382 m_view->setSorting( 1 );
381 m_view->setAllColumnsShowFocus( TRUE ); 383 m_view->setAllColumnsShowFocus( TRUE );
382 384
383 lay->addWidget( m_view, 1000 ); 385 lay->addWidget( m_view, 1000 );
384 connectSlots(); 386 connectSlots();
385} 387}
386 388
387OFileViewFileListView::~OFileViewFileListView() 389OFileViewFileListView::~OFileViewFileListView()
388{ 390{
389} 391}
390 392
391void OFileViewFileListView::slotNew() 393void OFileViewFileListView::slotNew()
392{ 394{
393 DocLnk lnk; 395 DocLnk lnk;
394 emit selector()->newSelected( lnk ); 396 emit selector()->newSelected( lnk );
395} 397}
396 398
397OFileSelectorItem* OFileViewFileListView::currentItem()const 399OFileSelectorItem* OFileViewFileListView::currentItem()const
398{ 400{
399 QListViewItem* item = m_view->currentItem(); 401 QListViewItem* item = m_view->currentItem();
400 if (!item ) 402 if (!item )
401 return 0l; 403 return 0l;
402 404
403 return static_cast<OFileSelectorItem*>(item); 405 return static_cast<OFileSelectorItem*>(item);
404} 406}
405 407
406void OFileViewFileListView::reread( bool all ) 408void OFileViewFileListView::reread( bool all )
407{ 409{
408 m_view->clear(); 410 m_view->clear();
409 411
410 if (selector()->showClose() ) 412 if (selector()->showClose() )
411 m_btnClose->show(); 413 m_btnClose->show();
412 else 414 else
413 m_btnClose->hide(); 415 m_btnClose->hide();
414 416
415 if (selector()->showNew() ) 417 if (selector()->showNew() )
416 m_btnNew->show(); 418 m_btnNew->show();
417 else 419 else
418 m_btnNew->hide(); 420 m_btnNew->hide();
419 421
420 m_mimes = selector()->currentMimeType(); 422 m_mimes = selector()->currentMimeType();
421 m_all = all; 423 m_all = all;
422 424
423 QDir dir( m_currentDir ); 425 QDir dir( m_currentDir );
424 if (!dir.exists() ) 426 if (!dir.exists() )
425 return; 427 return;
426 428
427 dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed ); 429 dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed );
428 int filter; 430 int filter;
429 if (m_all ) 431 if (m_all )
430 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; 432 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
431 else 433 else
432 filter = QDir::Files | QDir::Dirs | QDir::All; 434 filter = QDir::Files | QDir::Dirs | QDir::All;
433 dir.setFilter( filter ); 435 dir.setFilter( filter );
434 436
435 // now go through all files 437 // now go through all files
436 const QFileInfoList *list = dir.entryInfoList(); 438 const QFileInfoList *list = dir.entryInfoList();
437 if (!list) 439 if (!list)
438 { 440 {
439 cdUP(); 441 cdUP();
440 return; 442 return;
441 } 443 }
442 444
443 QFileInfoListIterator it( *list ); 445 QFileInfoListIterator it( *list );
444 QFileInfo *fi; 446 QFileInfo *fi;
445 while( (fi=it.current() ) ) 447 while( (fi=it.current() ) )
446 { 448 {
447 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ) 449 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") )
448 { 450 {
449 ++it; 451 ++it;
450 continue; 452 continue;
451 } 453 }
452 454
453 /* 455 /*
454 * It is a symlink we try to resolve it now but don't let us attack by DOS 456 * It is a symlink we try to resolve it now but don't let us attack by DOS
455 * 457 *
456 */ 458 */
457 if( fi->isSymLink() ) 459 if( fi->isSymLink() )
458 { 460 {
459 QString file = fi->dirPath( true ) + "/" + fi->readLink(); 461 QString file = fi->dirPath( true ) + "/" + fi->readLink();
460 for( int i = 0; i<=4; i++) 462 for( int i = 0; i<=4; i++)
461 { // 5 tries to prevent dos 463 { // 5 tries to prevent dos
462 QFileInfo info( file ); 464 QFileInfo info( file );
463 if( !info.exists() ) 465 if( !info.exists() )
464 { 466 {
465 addSymlink( fi, TRUE ); 467 addSymlink( fi, TRUE );
466 break; 468 break;
467 } 469 }
468 else if( info.isDir() ) 470 else if( info.isDir() )
469 { 471 {
470 addDir( fi, TRUE ); 472 addDir( fi, TRUE );
471 break; 473 break;
472 } 474 }
473 else if( info.isFile() ) 475 else if( info.isFile() )
474 { 476 {
475 addFile( fi, TRUE ); 477 addFile( fi, TRUE );
476 break; 478 break;
477 } 479 }
478 else if( info.isSymLink() ) 480 else if( info.isSymLink() )
479 { 481 {
480 file = info.dirPath(true ) + "/" + info.readLink() ; 482 file = info.dirPath(true ) + "/" + info.readLink() ;
481 break; 483 break;
482 } 484 }
483 else if( i == 4) 485 else if( i == 4)
484 { // couldn't resolve symlink add it as symlink 486 { // couldn't resolve symlink add it as symlink
485 addSymlink( fi ); 487 addSymlink( fi );
486 } 488 }
487 } // off for loop for symlink resolving 489 } // off for loop for symlink resolving
488 } 490 }
489 else if( fi->isDir() ) 491 else if( fi->isDir() )
490 addDir( fi ); 492 addDir( fi );
491 else if( fi->isFile() ) 493 else if( fi->isFile() )
492 addFile( fi ); 494 addFile( fi );
493 495
494 ++it; 496 ++it;
495 } // of while loop 497 } // of while loop
496 m_view->sort(); 498 m_view->sort();
497 499
498} 500}
499int OFileViewFileListView::fileCount()const 501int OFileViewFileListView::fileCount()const
500{ 502{
501 return m_view->childCount(); 503 return m_view->childCount();
502} 504}
503 505
504QString OFileViewFileListView::currentDir()const 506QString OFileViewFileListView::currentDir()const
505{ 507{
506 return m_currentDir; 508 return m_currentDir;
507} 509}
508 510
509OFileSelector* OFileViewFileListView::selector() 511OFileSelector* OFileViewFileListView::selector()
510{ 512{
511 return m_sel; 513 return m_sel;
512} 514}
513 515
514bool OFileViewFileListView::eventFilter (QObject *o, QEvent *e) 516bool OFileViewFileListView::eventFilter (QObject *, QEvent *e)
515{ 517{
516 if ( e->type() == QEvent::KeyPress ) 518 if ( e->type() == QEvent::KeyPress )
517 { 519 {
518 QKeyEvent *k = (QKeyEvent *)e; 520 QKeyEvent *k = (QKeyEvent *)e;
519 if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) 521 if ( (k->key()==Key_Enter) || (k->key()==Key_Return))
520 { 522 {
521 slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); 523 slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0);
522 return true; 524 return true;
523 } 525 }
524 } 526 }
525 return false; 527 return false;
526} 528}
527 529
528void OFileViewFileListView::connectSlots() 530void OFileViewFileListView::connectSlots()
529{ 531{
530 connect(m_view, SIGNAL(clicked(QListViewItem*) ), 532 connect(m_view, SIGNAL(clicked(QListViewItem*) ),
531 this, SLOT(slotCurrentChanged(QListViewItem*) ) ); 533 this, SLOT(slotCurrentChanged(QListViewItem*) ) );
532 connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ), 534 connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ),
533 this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) ); 535 this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) );
534} 536}
535 537
536void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) 538void OFileViewFileListView::slotCurrentChanged( QListViewItem* item)
537{ 539{
538 if (!item) 540 if (!item)
539 return; 541 return;
540#if 0 542#if 0
541 543
542 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); 544 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item);
543 545
544 if (!sel->isDir() ) 546 if (!sel->isDir() )
545 { 547 {
546 selector()->m_lneEdit->setText( sel->text(1) ); 548 selector()->m_lneEdit->setText( sel->text(1) );
547 // if in fileselector mode we will emit selected 549 // if in fileselector mode we will emit selected
548 if ( selector()->mode() == OFileSelector::FileSelector ) 550 if ( selector()->mode() == OFileSelector::FileSelector )
549 { 551 {
550 odebug << "slot Current Changed" << oendl; 552 odebug << "slot Current Changed" << oendl;
551 QStringList str = QStringList::split("->", sel->text(1) ); 553 QStringList str = QStringList::split("->", sel->text(1) );
552 QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); 554 QString path = sel->directory() + "/" + str[0].stripWhiteSpace();
553 emit selector()->fileSelected( path ); 555 emit selector()->fileSelected( path );
554 DocLnk lnk( path ); 556 DocLnk lnk( path );
555 emit selector()->fileSelected( lnk ); 557 emit selector()->fileSelected( lnk );
556 } 558 }
557 } 559 }
558#endif 560#endif
559} 561}
560 562
561void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) 563void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int )
562{ 564{
563 if (!item || ( button != Qt::LeftButton) ) 565 if (!item || ( button != Qt::LeftButton) )
564 return; 566 return;
565 567
566 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); 568 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item);
567 if (!sel->isLocked() ) 569 if (!sel->isLocked() )
568 { 570 {
569 QStringList str = QStringList::split("->", sel->text(1) ); 571 QStringList str = QStringList::split("->", sel->text(1) );
570 if (sel->isDir() ) 572 if (sel->isDir() )
571 { 573 {
572 m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); 574 m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace();
573 emit selector()->dirSelected( m_currentDir ); 575 emit selector()->dirSelected( m_currentDir );
574 reread( m_all ); 576 reread( m_all );
575 } 577 }
576 else 578 else
577 { // file 579 { // file
578 odebug << "slot Clicked" << oendl; 580 odebug << "slot Clicked" << oendl;
579 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); 581 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() );
580 QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); 582 QString path = sel->directory() + "/" + str[0].stripWhiteSpace();
581 emit selector()->fileSelected( path ); 583 emit selector()->fileSelected( path );
582 DocLnk lnk( path ); 584 DocLnk lnk( path );
583 emit selector()->fileSelected( lnk ); 585 emit selector()->fileSelected( lnk );
584 } 586 }
585 } // not locked 587 } // not locked
586} 588}
587 589
588void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) 590void OFileViewFileListView::addFile( QFileInfo* info, bool symlink )
589{ 591{
590 MimeType type( info->absFilePath() ); 592 MimeType type( info->absFilePath() );
591 if (!compliesMime( type.id() ) ) 593 if (!compliesMime( type.id() ) )
592 return; 594 return;
593 595
594 QPixmap pix = type.pixmap(); 596 QPixmap pix = type.pixmap();
595 QString dir, name; bool locked; 597 QString dir, name; bool locked;
596 if ( pix.isNull() ) 598 if ( pix.isNull() )
597 { 599 {
598 QWMatrix matrix; 600 QWMatrix matrix;
599 QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); 601 QPixmap pixer(Resource::loadPixmap("UnknownDocument") );
600 matrix.scale( .4, .4 ); 602 matrix.scale( .4, .4 );
601 pix = pixer.xForm( matrix ); 603 pix = pixer.xForm( matrix );
602 } 604 }
603 dir = info->dirPath( true ); 605 dir = info->dirPath( true );
604 locked = false; 606 locked = false;
605 if ( symlink ) 607 if ( symlink )
606 name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); 608 name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink();
607 else 609 else
608 { 610 {
609 name = info->fileName(); 611 name = info->fileName();
610 if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || 612 if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) ||
611 ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) 613 ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) )
612 { 614 {
613 locked = true; pix = Resource::loadPixmap("locked"); 615 locked = true; pix = Resource::loadPixmap("locked");
614 } 616 }
615 } 617 }
616 (void)new OFileSelectorItem( m_view, pix, name, 618 (void)new OFileSelectorItem( m_view, pix, name,
617 info->lastModified().toString(), QString::number( info->size() ), 619 info->lastModified().toString(), QString::number( info->size() ),
618 dir, locked ); 620 dir, locked );
619} 621}
620 622
621void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) 623void OFileViewFileListView::addDir( QFileInfo* info, bool symlink )
622{ 624{
623 bool locked = false; QString name; QPixmap pix; 625 bool locked = false; QString name; QPixmap pix;
624 626
625 if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || 627 if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) ||
626 ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) 628 ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) )
627 { 629 {
628 locked = true; 630 locked = true;
629 if ( symlink ) 631 if ( symlink )
630 pix = Resource::loadPixmap( "opie/symlink" ); 632 pix = Resource::loadPixmap( "opie/symlink" );
631 else 633 else
632 pix = Resource::loadPixmap( "lockedfolder" ); 634 pix = Resource::loadPixmap( "lockedfolder" );
633 } 635 }
634 else 636 else
635 pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder"); 637 pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder");
636 638
637 name = symlink ? info->fileName() + " -> " + info->dirPath(true) + "/" + info->readLink() : 639 name = symlink ? info->fileName() + " -> " + info->dirPath(true) + "/" + info->readLink() :
638 info->fileName(); 640 info->fileName();
639 641
640 (void)new OFileSelectorItem( m_view, pix, name, 642 (void)new OFileSelectorItem( m_view, pix, name,
641 info->lastModified().toString(), 643 info->lastModified().toString(),
642 QString::number( info->size() ), 644 QString::number( info->size() ),
643 info->dirPath( true ), locked, true ); 645 info->dirPath( true ), locked, true );
644 646
645 647
646} 648}
647 649
648void OFileViewFileListView::addSymlink( QFileInfo* , bool ) 650void OFileViewFileListView::addSymlink( QFileInfo* , bool )
649{ 651{
650} 652}
651 653
652void OFileViewFileListView::cdUP() 654void OFileViewFileListView::cdUP()
653{ 655{
654 QDir dir( m_currentDir ); 656 QDir dir( m_currentDir );
655 dir.cdUp(); 657 dir.cdUp();
656 658
657 if (!dir.exists() ) 659 if (!dir.exists() )
658 m_currentDir = "/"; 660 m_currentDir = "/";
659 else 661 else
660 m_currentDir = dir.absPath(); 662 m_currentDir = dir.absPath();
661 663
662 emit selector()->dirSelected( m_currentDir ); 664 emit selector()->dirSelected( m_currentDir );
663 reread( m_all ); 665 reread( m_all );
664} 666}
665 667
666void OFileViewFileListView::cdHome() 668void OFileViewFileListView::cdHome()
667{ 669{
668 m_currentDir = QDir::homeDirPath(); 670 m_currentDir = QDir::homeDirPath();
669 emit selector()->dirSelected( m_currentDir ); 671 emit selector()->dirSelected( m_currentDir );
670 reread( m_all ); 672 reread( m_all );
671} 673}
672 674
673void OFileViewFileListView::cdDoc() 675void OFileViewFileListView::cdDoc()
674{ 676{
675 m_currentDir = QPEApplication::documentDir(); 677 m_currentDir = QPEApplication::documentDir();
676 emit selector()->dirSelected( m_currentDir ); 678 emit selector()->dirSelected( m_currentDir );
677 reread( m_all ); 679 reread( m_all );
678} 680}
679 681
680void OFileViewFileListView::changeDir( const QString& dir ) 682void OFileViewFileListView::changeDir( const QString& dir )
681{ 683{
682 m_currentDir = dir; 684 m_currentDir = dir;
683 emit selector()->dirSelected( m_currentDir ); 685 emit selector()->dirSelected( m_currentDir );
684 reread( m_all ); 686 reread( m_all );
685} 687}
686 688
687void OFileViewFileListView::slotFSActivated( int id ) 689void OFileViewFileListView::slotFSActivated( int id )
688{ 690{
689 changeDir ( m_dev[m_fsPop->text(id)] ); 691 changeDir ( m_dev[m_fsPop->text(id)] );
690} 692}
691 693
692/* check if the mimetype in mime 694/* check if the mimetype in mime
693 * complies with the one which is current 695 * complies with the one which is current
694 */ 696 */
695/* 697/*
696 * We've the mimetype of the file 698 * We've the mimetype of the file
697 * We need to get the stringlist of the current mimetype 699 * We need to get the stringlist of the current mimetype
698 * 700 *
699 * mime = image@slashjpeg 701 * mime = image@slashjpeg
700 * QStringList = 'image@slash*' 702 * QStringList = 'image@slash*'
701 * or QStringList = image/jpeg;image/png;application/x-ogg 703 * or QStringList = image/jpeg;image/png;application/x-ogg
702 * or QStringList = application/x-ogg;image@slash*; 704 * or QStringList = application/x-ogg;image@slash*;
703 * with all these mime filters it should get acceptes 705 * with all these mime filters it should get acceptes
704 * to do so we need to look if mime is contained inside 706 * to do so we need to look if mime is contained inside
705 * the stringlist 707 * the stringlist
706 * if it's contained return true 708 * if it's contained return true
707 * if not ( I'm no RegExp expert at all ) we'll look if a '@slash*' 709 * if not ( I'm no RegExp expert at all ) we'll look if a '@slash*'
708 * is contained in the mimefilter and then we will 710 * is contained in the mimefilter and then we will
709 * look if both are equal until the '/' 711 * look if both are equal until the '/'
710 */ 712 */
711 713
712bool OFileViewFileListView::compliesMime( const QString& str) 714bool OFileViewFileListView::compliesMime( const QString& str)
713{ 715{
714 if (str.isEmpty() || m_mimes.isEmpty() || str.stripWhiteSpace().isEmpty() ) 716 if (str.isEmpty() || m_mimes.isEmpty() || str.stripWhiteSpace().isEmpty() )
715 return true; 717 return true;
716 718
717 for (QStringList::Iterator it = m_mimes.begin(); it != m_mimes.end(); ++it ) 719 for (QStringList::Iterator it = m_mimes.begin(); it != m_mimes.end(); ++it )
718 { 720 {
719 QRegExp reg( (*it) ); 721 QRegExp reg( (*it) );
720 reg.setWildcard( true ); 722 reg.setWildcard( true );
721 if ( str.find( reg ) != -1 ) 723 if ( str.find( reg ) != -1 )
722 return true; 724 return true;
723 725
724 } 726 }
725 return false; 727 return false;
726} 728}
727/* 729/*
728 * The listView giving access to the file system! 730 * The listView giving access to the file system!
729 */ 731 */
730 732
731class OFileViewFileSystem : public OFileViewInterface 733class OFileViewFileSystem : public OFileViewInterface
732{ 734{
733public: 735public:
734 OFileViewFileSystem( OFileSelector* ); 736 OFileViewFileSystem( OFileSelector* );
735 ~OFileViewFileSystem(); 737 ~OFileViewFileSystem();
736 738
737 QString selectedName() const; 739 QString selectedName() const;
738 QString selectedPath() const; 740 QString selectedPath() const;
739 741
740 QString directory()const; 742 QString directory()const;
741 void reread(); 743 void reread();
742 int fileCount()const; 744 int fileCount()const;
743 745
744 QWidget* widget( QWidget* parent ); 746 QWidget* widget( QWidget* parent );
745 void activate( const QString& ); 747 void activate( const QString& );
746private: 748private:
747 OFileViewFileListView* m_view; 749 OFileViewFileListView* m_view;
748 bool m_all : 1; 750 bool m_all : 1;
749}; 751};
750 752
751OFileViewFileSystem::OFileViewFileSystem( OFileSelector* sel) 753OFileViewFileSystem::OFileViewFileSystem( OFileSelector* sel)
752 : OFileViewInterface( sel ) 754 : OFileViewInterface( sel )
753{ 755{
754 m_view = 0; 756 m_view = 0;
755 m_all = false; 757 m_all = false;
756} 758}
757 759
758OFileViewFileSystem::~OFileViewFileSystem() 760OFileViewFileSystem::~OFileViewFileSystem()
759{ 761{
760} 762}
761 763
762QString OFileViewFileSystem::selectedName()const 764QString OFileViewFileSystem::selectedName()const
763{ 765{
764 if (!m_view ) 766 if (!m_view )
765 return QString::null; 767 return QString::null;
766 768
767 QString cFN=currentFileName(); 769 QString cFN=currentFileName();
768 if (cFN.startsWith("/")) return cFN; 770 if (cFN.startsWith("/")) return cFN;
769 return m_view->currentDir() + "/" + cFN; 771 return m_view->currentDir() + "/" + cFN;
770} 772}
771 773
772QString OFileViewFileSystem::selectedPath()const 774QString OFileViewFileSystem::selectedPath()const
773{ 775{
774 return QString::null; 776 return QString::null;
775} 777}
776 778
777QString OFileViewFileSystem::directory()const 779QString OFileViewFileSystem::directory()const
778{ 780{
779 if (!m_view) 781 if (!m_view)
780 return QString::null; 782 return QString::null;
781 783
782 OFileSelectorItem* item = m_view->currentItem(); 784 OFileSelectorItem* item = m_view->currentItem();
783 if (!item ) 785 if (!item )
784 return QString::null; 786 return QString::null;
785 787
786 return QDir(item->directory() ).absPath(); 788 return QDir(item->directory() ).absPath();
787} 789}
788 790
789void OFileViewFileSystem::reread() 791void OFileViewFileSystem::reread()
790{ 792{
791 if (!m_view) 793 if (!m_view)
792 return; 794 return;
793 795
794 m_view->reread( m_all ); 796 m_view->reread( m_all );
795} 797}
796 798
797int OFileViewFileSystem::fileCount()const 799int OFileViewFileSystem::fileCount()const
798{ 800{
799 if (!m_view ) 801 if (!m_view )
800 return -1; 802 return -1;
801 return m_view->fileCount(); 803 return m_view->fileCount();
802} 804}
803 805
804QWidget* OFileViewFileSystem::widget( QWidget* parent ) 806QWidget* OFileViewFileSystem::widget( QWidget* parent )
805{ 807{
806 if (!m_view ) 808 if (!m_view )
807 { 809 {
808 m_view = new OFileViewFileListView( parent, startDirectory(), selector() ); 810 m_view = new OFileViewFileListView( parent, startDirectory(), selector() );
809 } 811 }
810 return m_view; 812 return m_view;
811} 813}
812 814
813void OFileViewFileSystem::activate( const QString& str) 815void OFileViewFileSystem::activate( const QString& str)
814{ 816{
815 m_all = (str != QObject::tr("Files") ); 817 m_all = (str != QObject::tr("Files") );
816} 818}
817 819
818 820
819} 821}
820/* Selector */ 822/* Selector */
821/** 823/**
822 * @short new and complete c'tor 824 * @short new and complete c'tor
823 * 825 *
824 * Create a OFileSelector to let the user select a file. It can 826 * Create a OFileSelector to let the user select a file. It can
825 * either be used to open a file, select a save name in a dir or 827 * either be used to open a file, select a save name in a dir or
826 * as a dropin for the FileSelector. 828 * as a dropin for the FileSelector.
827 * 829 *
828 * <pre> 830 * <pre>
829 * QMap<QString, QStringList> mimeTypes; 831 * QMap<QString, QStringList> mimeTypes;
830 * QStringList types; 832 * QStringList types;
831 * types << "text@slash* "; 833 * types << "text@slash* ";
832 * types << "audio@slash*"; 834 * types << "audio@slash*";
833 * mimeTypes.insert( tr("Audio and Text"), types ); 835 * mimeTypes.insert( tr("Audio and Text"), types );
834 * mimeTypes.insert( tr("All"), "*@slash*); 836 * mimeTypes.insert( tr("All"), "*@slash*);
835 * 837 *
836 * now you could create your fileselector 838 * now you could create your fileselector
837 * </pre> 839 * </pre>
838 * 840 *
839 * 841 *
840 * @param parent the parent of this widget 842 * @param parent the parent of this widget
841 * @param mode The mode from the enum Mode (Open,Save,FILESELECTOR) 843 * @param mode The mode from the enum Mode (Open,Save,FILESELECTOR)
842 * @param sel The selector to be used 844 * @param sel The selector to be used
843 * @param dirName The name of the dir to start int 845 * @param dirName The name of the dir to start int
844 * @param fileName The fileName placed in the fileselector lineedit 846 * @param fileName The fileName placed in the fileselector lineedit
845 * @param mimetypes The MimeType map of used mimetypes 847 * @param mimetypes The MimeType map of used mimetypes
846 * @param showNew Show a New Button. Most likely to be used in the FileSelector view. 848 * @param showNew Show a New Button. Most likely to be used in the FileSelector view.
847 * @param showClose Show a Close Button. Most likely to be used in FileSelector view. 849 * @param showClose Show a Close Button. Most likely to be used in FileSelector view.
848 * 850 *
849 */ 851 */
850OFileSelector::OFileSelector( QWidget* parent, int mode, int sel, 852OFileSelector::OFileSelector( QWidget* parent, int mode, int sel,
851 const QString& dirName, const QString& fileName, 853 const QString& dirName, const QString& fileName,
852 const MimeTypes& mimetypes, 854 const MimeTypes& mimetypes,
853 bool showNew, bool showClose) 855 bool showNew, bool showClose)
854 :QWidget( parent, "OFileSelector" ) 856 :QWidget( parent, "OFileSelector" )
855{ 857{
856 m_current = 0; 858 m_current = 0;
857 m_shNew = showNew; 859 m_shNew = showNew;
858 m_shClose = showClose; 860 m_shClose = showClose;
859 m_mimeType = mimetypes; 861 m_mimeType = mimetypes;
860 m_startDir = dirName; 862 m_startDir = dirName;
861 863
862 m_mode = mode; 864 m_mode = mode;
863 m_selector = sel; 865 m_selector = sel;
864 866
865 initUI(); 867 initUI();
866 m_lneEdit->setText( fileName ); 868 m_lneEdit->setText( fileName );
867 initMime(); 869 initMime();
868 initViews(); 870 initViews();
869 871
870 QString str; 872 QString str;
871 switch ( m_selector ) 873 switch ( m_selector )
872 { 874 {
873 default: 875 default:
874 case Normal: 876 case Normal:
875 str = QObject::tr("Documents"); 877 str = QObject::tr("Documents");
876 m_cmbView->setCurrentItem( 0 ); 878 m_cmbView->setCurrentItem( 0 );
877 break; 879 break;
878 case Extended: 880 case Extended:
879 str = QObject::tr("Files"); 881 str = QObject::tr("Files");
880 m_cmbView->setCurrentItem( 1 ); 882 m_cmbView->setCurrentItem( 1 );
881 break; 883 break;
882 case ExtendedAll: 884 case ExtendedAll:
883 str = QObject::tr("All Files"); 885 str = QObject::tr("All Files");
884 m_cmbView->setCurrentItem( 2 ); 886 m_cmbView->setCurrentItem( 2 );
885 break; 887 break;
886 } 888 }
887 slotViewChange( str ); 889 slotViewChange( str );
888 890
889} 891}
890 892
891 893
892/** 894/**
893 * This a convience c'tor to just substitute the use of FileSelector 895 * This a convience c'tor to just substitute the use of FileSelector
894 */ 896 */
895OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name, 897OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name,
896 bool showNew, bool showClose ) 898 bool showNew, bool showClose )
897 : QWidget( parent, name ) 899 : QWidget( parent, name )
898{ 900{
899 m_current = 0; 901 m_current = 0;
900 m_shNew = showNew; 902 m_shNew = showNew;
901 m_shClose = showClose; 903 m_shClose = showClose;
902 m_startDir = QPEApplication::documentDir(); 904 m_startDir = QPEApplication::documentDir();
903 905
904 if (!mimeFilter.isEmpty() ) 906 if (!mimeFilter.isEmpty() )
905 m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) ); 907 m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) );
906 908
907 m_mode = OFileSelector::FileSelector; 909 m_mode = OFileSelector::FileSelector;
908 m_selector = OFileSelector::Normal; 910 m_selector = OFileSelector::Normal;
909 911
910 initUI(); 912 initUI();
911 initMime(); 913 initMime();
912 initViews(); 914 initViews();
913 m_cmbView->setCurrentItem( 0 ); 915 m_cmbView->setCurrentItem( 0 );
914 slotViewChange( QObject::tr("Documents") ); 916 slotViewChange( QObject::tr("Documents") );
915} 917}
916 918
917/* 919/*
918 * INIT UI will set up the basic GUI 920 * INIT UI will set up the basic GUI
919 * Layout: Simple VBoxLayout 921 * Layout: Simple VBoxLayout
920 * On top a WidgetStack containing the Views... 922 * On top a WidgetStack containing the Views...
921 * - List View 923 * - List View
922 * - Document View 924 * - Document View
923 * Below we will have a Label + LineEdit 925 * Below we will have a Label + LineEdit
924 * Below we will have two ComoBoxes one for choosing the view one for 926 * Below we will have two ComoBoxes one for choosing the view one for
925 * choosing the mimetype 927 * choosing the mimetype
926 */ 928 */
927void OFileSelector::initUI() 929void OFileSelector::initUI()
928{ 930{
929 QVBoxLayout* lay = new QVBoxLayout( this ); 931 QVBoxLayout* lay = new QVBoxLayout( this );
930 932
931 m_stack = new QWidgetStack( this ); 933 m_stack = new QWidgetStack( this );
932 lay->addWidget( m_stack, 1000 ); 934 lay->addWidget( m_stack, 1000 );
933 935
934 m_nameBox = new QHBox( this ); 936 m_nameBox = new QHBox( this );
935 (void)new QLabel( tr("Name:"), m_nameBox ); 937 (void)new QLabel( tr("Name:"), m_nameBox );
936 m_lneEdit = new QLineEdit( m_nameBox ); 938 m_lneEdit = new QLineEdit( m_nameBox );
937 m_lneEdit ->installEventFilter(this); 939 m_lneEdit ->installEventFilter(this);
938 lay->addWidget( m_nameBox ); 940 lay->addWidget( m_nameBox );
939 941
940 m_cmbBox = new QHBox( this ); 942 m_cmbBox = new QHBox( this );
941 m_cmbView = new QComboBox( m_cmbBox ); 943 m_cmbView = new QComboBox( m_cmbBox );
942 m_cmbMime = new QComboBox( m_cmbBox ); 944 m_cmbMime = new QComboBox( m_cmbBox );
943 lay->addWidget( m_cmbBox ); 945 lay->addWidget( m_cmbBox );
944} 946}
945 947
946/* 948/*
947 * This will make sure that the return key in the name edit causes dialogs to close 949 * This will make sure that the return key in the name edit causes dialogs to close
948 */ 950 */
949 951
950bool OFileSelector::eventFilter (QObject *o, QEvent *e) 952bool OFileSelector::eventFilter (QObject *, QEvent *e)
951{ 953{
952 if ( e->type() == QEvent::KeyPress ) 954 if ( e->type() == QEvent::KeyPress )
953 { 955 {
954 QKeyEvent *k = (QKeyEvent *)e; 956 QKeyEvent *k = (QKeyEvent *)e;
955 if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) 957 if ( (k->key()==Key_Enter) || (k->key()==Key_Return))
956 { 958 {
957 emit ok(); 959 emit ok();
958 return true; 960 return true;
959 } 961 }
960 } 962 }
961 return false; 963 return false;
962} 964}
963 965
964/* 966/*
965 * This will insert the MimeTypes into the Combo Box 967 * This will insert the MimeTypes into the Combo Box
966 * And also connect the changed signal 968 * And also connect the changed signal
967 * 969 *
968 * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes 970 * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes
969 */ 971 */
970void OFileSelector::initMime() 972void OFileSelector::initMime()
971{ 973{
972 MimeTypes::Iterator it; 974 MimeTypes::Iterator it;
973 for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) 975 for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it )
974 { 976 {
975 m_cmbMime->insertItem( it.key() ); 977 m_cmbMime->insertItem( it.key() );
976 } 978 }
977 m_cmbMime->setCurrentItem( 0 ); 979 m_cmbMime->setCurrentItem( 0 );
978 980
979 connect( m_cmbMime, SIGNAL(activated(int) ), 981 connect( m_cmbMime, SIGNAL(activated(int) ),
980 this, SLOT(slotMimeTypeChanged() ) ); 982 this, SLOT(slotMimeTypeChanged() ) );
981 983
982} 984}
983 985
984void OFileSelector::initViews() 986void OFileSelector::initViews()
985{ 987{
986 m_cmbView->insertItem( QObject::tr("Documents") ); 988 m_cmbView->insertItem( QObject::tr("Documents") );
987 m_cmbView->insertItem( QObject::tr("Files") ); 989 m_cmbView->insertItem( QObject::tr("Files") );
988 m_cmbView->insertItem( QObject::tr("All Files") ); 990 m_cmbView->insertItem( QObject::tr("All Files") );
989 connect(m_cmbView, SIGNAL(activated(const QString&) ), 991 connect(m_cmbView, SIGNAL(activated(const QString&) ),
990 this, SLOT(slotViewChange(const QString&) ) ); 992 this, SLOT(slotViewChange(const QString&) ) );
991 993
992 994
993 m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) ); 995 m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) );
994 996
995 /* see above why add both */ 997 /* see above why add both */
996 OFileViewInterface* in = new OFileViewFileSystem( this ); 998 OFileViewInterface* in = new OFileViewFileSystem( this );
997 m_views.insert( QObject::tr("Files"), in ); 999 m_views.insert( QObject::tr("Files"), in );
998 m_views.insert( QObject::tr("All Files"), in ); 1000 m_views.insert( QObject::tr("All Files"), in );
999} 1001}
1000 1002
1003void OFileSelector::registerView( const Internal::OFileViewInterface* iface ) {
1004 m_viewsPtr.append( iface );
1005}
1006
1007
1001/** 1008/**
1002 * d'tor 1009 * d'tor
1003 */ 1010 */
1004OFileSelector::~OFileSelector() 1011OFileSelector::~OFileSelector()
1005{ 1012{
1013 m_viewsPtr.setAutoDelete( true );
1014 m_viewsPtr.clear();
1006} 1015}
1007 1016
1008 1017
1009 1018
1010/** 1019/**
1011 * Convience function for the fileselector 1020 * Convience function for the fileselector
1012 * make sure to delete the DocLnk 1021 * make sure to delete the DocLnk
1013 * 1022 *
1014 * @see DocLnk 1023 * @see DocLnk
1015 * @todo remove in ODP 1024 * @todo remove in ODP
1016 */ 1025 */
1017const DocLnk* OFileSelector::selected() 1026const DocLnk* OFileSelector::selected()
1018{ 1027{
1019 DocLnk* lnk = new DocLnk( currentView()->selectedDocument() ); 1028 DocLnk* lnk = new DocLnk( currentView()->selectedDocument() );
1020 return lnk; 1029 return lnk;
1021} 1030}
1022 1031
1023/** 1032/**
1024 * 1033 *
1025 * @return the name of the selected file 1034 * @return the name of the selected file
1026 */ 1035 */
1027QString OFileSelector::selectedName()const 1036QString OFileSelector::selectedName()const
1028{ 1037{
1029 return currentView()->selectedName(); 1038 return currentView()->selectedName();
1030} 1039}
1031 1040
1032 1041
1033/** 1042/**
1034 * @return the selected path 1043 * @return the selected path
1035 */ 1044 */
1036QString OFileSelector::selectedPath()const 1045QString OFileSelector::selectedPath()const
1037{ 1046{
1038 return currentView()->selectedPath(); 1047 return currentView()->selectedPath();
1039} 1048}
1040 1049
1041/** 1050/**
1042 * @return the directory name 1051 * @return the directory name
1043 */ 1052 */
1044QString OFileSelector::directory()const 1053QString OFileSelector::directory()const
1045{ 1054{
1046 return currentView()->directory(); 1055 return currentView()->directory();
1047} 1056}
1048 1057
1049/** 1058/**
1050 * @return a DocLnk for the selected document 1059 * @return a DocLnk for the selected document
1051 */ 1060 */
1052DocLnk OFileSelector::selectedDocument()const 1061DocLnk OFileSelector::selectedDocument()const
1053{ 1062{
1054 return currentView()->selectedDocument(); 1063 return currentView()->selectedDocument();
1055} 1064}
1056 1065
1057/** 1066/**
1058 * @return the number of items for the current view 1067 * @return the number of items for the current view
1059 */ 1068 */
1060int OFileSelector::fileCount()const 1069int OFileSelector::fileCount()const
1061{ 1070{
1062 return currentView()->fileCount(); 1071 return currentView()->fileCount();
1063} 1072}
1064 1073
1065/** 1074/**
1066 * @return reparse the file content 1075 * @return reparse the file content
1067 */ 1076 */
1068void OFileSelector::reread() 1077void OFileSelector::reread()
1069{ 1078{
1070 return currentView()->reread(); 1079 return currentView()->reread();
1071} 1080}
1072 1081
1073OFileViewInterface* OFileSelector::currentView()const 1082OFileViewInterface* OFileSelector::currentView()const
1074{ 1083{
1075 return m_current; 1084 return m_current;
1076} 1085}
1077 1086
1078bool OFileSelector::showNew()const 1087bool OFileSelector::showNew()const
1079{ 1088{
1080 return m_shNew; 1089 return m_shNew;
1081} 1090}
1082 1091
1083bool OFileSelector::showClose()const 1092bool OFileSelector::showClose()const
1084{ 1093{
1085 return m_shClose; 1094 return m_shClose;
1086} 1095}
1087 1096
1088MimeTypes OFileSelector::mimeTypes()const 1097MimeTypes OFileSelector::mimeTypes()const
1089{ 1098{
1090 return m_mimeType; 1099 return m_mimeType;
1091} 1100}
1092 1101
1093/** 1102/**
1094 * @return the Mode of the OFileSelector 1103 * @return the Mode of the OFileSelector
1095 */ 1104 */
1096int OFileSelector::mode()const 1105int OFileSelector::mode()const
1097{ 1106{
1098 return m_mode; 1107 return m_mode;
1099} 1108}
1100 1109
1101 1110
1102/** 1111/**
1103 * @return the Selector of the OFileSelector 1112 * @return the Selector of the OFileSelector
1104 */ 1113 */
1105int OFileSelector::selector()const 1114int OFileSelector::selector()const
1106{ 1115{
1107 return m_selector; 1116 return m_selector;
1108} 1117}
1109 1118
1110QStringList OFileSelector::currentMimeType()const 1119QStringList OFileSelector::currentMimeType()const
1111{ 1120{
1112 return m_mimeType[m_cmbMime->currentText()]; 1121 return m_mimeType[m_cmbMime->currentText()];
1113} 1122}
1114 1123
1115void OFileSelector::slotMimeTypeChanged() 1124void OFileSelector::slotMimeTypeChanged()
1116{ 1125{
1117 reread(); 1126 reread();
1118} 1127}
1119 1128
1120void OFileSelector::slotDocLnkBridge( const DocLnk& lnk) 1129void OFileSelector::slotDocLnkBridge( const DocLnk& lnk)
1121{ 1130{
1122 m_lneEdit->setText( lnk.name() ); 1131 m_lneEdit->setText( lnk.name() );
1123 emit fileSelected( lnk ); 1132 emit fileSelected( lnk );
1124 emit fileSelected( lnk.name() ); 1133 emit fileSelected( lnk.name() );
1125} 1134}
1126 1135
1127void OFileSelector::slotFileBridge( const QString& str) 1136void OFileSelector::slotFileBridge( const QString& str)
1128{ 1137{
1129 DocLnk lnk( str ); 1138 DocLnk lnk( str );
1130 emit fileSelected( lnk ); 1139 emit fileSelected( lnk );
1131} 1140}
1132 1141
1133void OFileSelector::slotViewChange( const QString& view ) 1142void OFileSelector::slotViewChange( const QString& view )
1134{ 1143{
1135 OFileViewInterface* interface = m_views[view]; 1144 OFileViewInterface* interface = m_views[view];
1136 if (!interface) 1145 if (!interface)
1137 return; 1146 return;
1138 1147
1139 interface->activate( view ); 1148 interface->activate( view );
1140 if (m_current) 1149 if (m_current)
1141 m_stack->removeWidget( m_current->widget( m_stack ) ); 1150 m_stack->removeWidget( m_current->widget( m_stack ) );
1142 1151
1143 static int id = 1; 1152 static int id = 1;
1144 1153
1145 m_stack->addWidget( interface->widget(m_stack), id ); 1154 m_stack->addWidget( interface->widget(m_stack), id );
1146 m_stack->raiseWidget( id ); 1155 m_stack->raiseWidget( id );
1147 1156
1148 interface->reread(); 1157 interface->reread();
1149 m_current = interface; 1158 m_current = interface;
1150 1159
1151 id++; 1160 id++;
1152} 1161}
1153 1162
1154void OFileSelector::setNewVisible( bool b ) 1163void OFileSelector::setNewVisible( bool b )
1155{ 1164{
1156 m_shNew = b; 1165 m_shNew = b;
1157 currentView()->reread(); 1166 currentView()->reread();
1158} 1167}
1159 1168
1160void OFileSelector::setCloseVisible( bool b ) 1169void OFileSelector::setCloseVisible( bool b )
1161{ 1170{
1162 m_shClose = b; 1171 m_shClose = b;
1163 currentView()->reread(); 1172 currentView()->reread();
1164} 1173}
1165 1174
1166void OFileSelector::setNameVisible( bool b ) 1175void OFileSelector::setNameVisible( bool b )
1167{ 1176{
1168 if ( b ) 1177 if ( b )
1169 m_nameBox->show(); 1178 m_nameBox->show();
1170 else 1179 else
1171 m_nameBox->hide(); 1180 m_nameBox->hide();
1172} 1181}
1173 1182
1174} 1183}
1175} 1184}
diff --git a/libopie2/opieui/fileselector/ofileselector.h b/libopie2/opieui/fileselector/ofileselector.h
index 8bcd9ee..de2b98a 100644
--- a/libopie2/opieui/fileselector/ofileselector.h
+++ b/libopie2/opieui/fileselector/ofileselector.h
@@ -1,222 +1,232 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (C) 2002,2003 Holger Freyther <zecke@handhelds.org> 3             .=l. Copyright (C) 2002,2003 Holger Freyther <zecke@handhelds.org>
4           .>+-= 4           .>+-=
5 _;:,     .>    :=|. This library is free software; you can 5 _;:,     .>    :=|. This library is free software; you can
6.> <`_,   >  .   <= redistribute it and/or modify it under 6.> <`_,   >  .   <= redistribute it and/or modify it under
7:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 7:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
8.="- .-=="i,     .._ License as published by the Free Software 8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; either version 2 of the License, 9 - .   .-<_>     .<> Foundation; either version 2 of the License,
10     ._= =}       : or (at your option) any later version. 10     ._= =}       : or (at your option) any later version.
11    .%`+i>       _;_. 11    .%`+i>       _;_.
12    .i_,=:_.      -<s. This library is distributed in the hope that 12    .i_,=:_.      -<s. This library is distributed in the hope that
13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
14    : ..    .:,     . . . without even the implied warranty of 14    : ..    .:,     . . . without even the implied warranty of
15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
17..}^=.=       =       ; Library General Public License for more 17..}^=.=       =       ; Library General Public License for more
18++=   -.     .`     .: details. 18++=   -.     .`     .: details.
19 :     =  ...= . :.=- 19 :     =  ...= . :.=-
20 -.   .:....=;==+<; You should have received a copy of the GNU 20 -.   .:....=;==+<; You should have received a copy of the GNU
21  -_. . .   )=.  = Library General Public License along with 21  -_. . .   )=.  = Library General Public License along with
22    --        :-=` this library; see the file COPYING.LIB. 22    --        :-=` this library; see the file COPYING.LIB.
23 If not, write to the Free Software Foundation, 23 If not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330, 24 Inc., 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29/* 29/*
30 This is based on code and ideas of 30 This is based on code and ideas of
31 L. J. Potter ljp@llornkcor.com 31 L. J. Potter ljp@llornkcor.com
32 Thanks a lot 32 Thanks a lot
33*/ 33*/
34 34
35#ifndef OFILESELECTOR_H 35#ifndef OFILESELECTOR_H
36#define OFILESELECTOR_H 36#define OFILESELECTOR_H
37 37
38/* OPIE */ 38/* OPIE */
39#include <qpe/applnk.h> 39#include <qpe/applnk.h>
40 40
41/* QT */ 41/* QT */
42#include <qlist.h> 42#include <qlist.h>
43#include <qwidget.h> 43#include <qwidget.h>
44#include <qmap.h> 44#include <qmap.h>
45#include <qvaluelist.h> 45#include <qvaluelist.h>
46#include <qstringlist.h> 46#include <qstringlist.h>
47#include <qlist.h>
47 48
48class QLineEdit; 49class QLineEdit;
49class QComboBox; 50class QComboBox;
50class QWidgetStack; 51class QWidgetStack;
51class QHBox; 52class QHBox;
52 53
53typedef QMap<QString, QStringList> MimeTypes; 54typedef QMap<QString, QStringList> MimeTypes;
54 55
55namespace Opie { 56namespace Opie {
56namespace Ui { 57namespace Ui {
57 58
58namespace Internal { 59namespace Internal {
59class OFileViewInterface; 60class OFileViewInterface;
60class OFileViewFileListView; 61class OFileViewFileListView;
61} 62}
62 63
63 64
64/** 65/**
65 * @short a dropin replacement for the FileSelector 66 * @short a dropin replacement for the FileSelector
66 * 67 *
67 * This class is first used insert the OFileDialog. 68 * This class is first used insert the OFileDialog.
68 * It supports multiple view and mimetype filtering for now. 69 * It supports multiple view and mimetype filtering for now.
69 * 70 *
70 * @see OFileDialog 71 * @see OFileDialog
71 * @see FileSelector 72 * @see FileSelector
72 * @author zecke 73 * @author zecke
73 * @version 0.1 74 * @version 0.1
74 */ 75 */
75class OFileSelector : public QWidget 76class OFileSelector : public QWidget
76{ 77{
77 Q_OBJECT 78 Q_OBJECT
78 friend class Internal::OFileViewInterface; 79 friend class Internal::OFileViewInterface;
79 friend class Internal::OFileViewFileListView; 80 friend class Internal::OFileViewFileListView;
80 81
81public: 82public:
82 /** 83 /**
83 * The Mode of the Fileselector 84 * The Mode of the Fileselector
84 * Open = Open A File 85 * Open = Open A File
85 * Save = Save a File 86 * Save = Save a File
86 * FILESELECTOR = As A GUI in a screen to select a file 87 * FILESELECTOR = As A GUI in a screen to select a file
87 */ 88 */
88 enum Mode { Open=1, Save=2, FileSelector=4, OPEN=1, SAVE=2, FILESELECTOR=4 }; 89 enum Mode { Open=1, Save=2, FileSelector=4, OPEN=1, SAVE=2, FILESELECTOR=4 };
89 // enum OldMode { OPEN=1, SAVE=2, FILESELECTOR = 4 }; 90 // enum OldMode { OPEN=1, SAVE=2, FILESELECTOR = 4 };
90 /** 91 /**
91 * Normal = The old FileSelector 92 * Normal = The old FileSelector
92 * Extended = Dir View 93 * Extended = Dir View
93 * ExtendedAll = Dir View with all hidden files 94 * ExtendedAll = Dir View with all hidden files
94 * Default = What the vendor considers best 95 * Default = What the vendor considers best
95 */ 96 */
96 enum Selector { Normal = 0, Extended=1, ExtendedAll =2, Default=3, NORMAL=0,EXTENDED=1, EXTENDED_ALL =2, DEFAULT=3 }; 97 enum Selector { Normal = 0, Extended=1, ExtendedAll =2, Default=3, NORMAL=0,EXTENDED=1, EXTENDED_ALL =2, DEFAULT=3 };
97 // enum OldSelector { NORMAL = 0, EXTENDED =1, EXTENDED_ALL = 2}; 98 // enum OldSelector { NORMAL = 0, EXTENDED =1, EXTENDED_ALL = 2};
98 99
99 OFileSelector(QWidget* parent, int mode, int selector, 100 OFileSelector(QWidget* parent, int mode, int selector,
100 const QString& dirName, 101 const QString& dirName,
101 const QString& fileName, 102 const QString& fileName,
102 const MimeTypes& mimetypes = MimeTypes(), 103 const MimeTypes& mimetypes = MimeTypes(),
103 bool newVisible = FALSE, bool closeVisible = FALSE ); 104 bool newVisible = FALSE, bool closeVisible = FALSE );
104 105
105 OFileSelector(const QString& mimeFilter, QWidget* parent, 106 OFileSelector(const QString& mimeFilter, QWidget* parent,
106 const char* name = 0, bool newVisible = TRUE, bool closeVisible = FALSE ); 107 const char* name = 0, bool newVisible = TRUE, bool closeVisible = FALSE );
107 ~OFileSelector(); 108 ~OFileSelector();
108 109
109 const DocLnk* selected(); 110 const DocLnk* selected();
110 111
111 QString selectedName()const; 112 QString selectedName()const;
112 QString selectedPath()const; 113 QString selectedPath()const;
113 QString directory()const; 114 QString directory()const;
114 115
115 DocLnk selectedDocument()const; 116 DocLnk selectedDocument()const;
116 117
117 int fileCount()const; 118 int fileCount()const;
118 void reread(); 119 void reread();
119 120
120 int mode()const; 121 int mode()const;
121 int selector()const; 122 int selector()const;
122 123
123 /** 124 /**
124 * Set the Icon visible 125 * Set the Icon visible
125 * @param b Show or Hide the New Button 126 * @param b Show or Hide the New Button
126 */ 127 */
127 void setNewVisible( bool b ); 128 void setNewVisible( bool b );
128 129
129 /** 130 /**
130 * Set the Icon visible 131 * Set the Icon visible
131 */ 132 */
132 void setCloseVisible( bool b ); 133 void setCloseVisible( bool b );
133 134
134 /** 135 /**
135 * Set the Name Line visible 136 * Set the Name Line visible
136 */ 137 */
137 void setNameVisible( bool b ); 138 void setNameVisible( bool b );
138 139
139signals: 140signals:
140 /** 141 /**
141 * dirSelected is emitted whenever changed into a different dir 142 * dirSelected is emitted whenever changed into a different dir
142 */ 143 */
143 void dirSelected( const QString& ); 144 void dirSelected( const QString& );
144 145
145 /** 146 /**
146 * fileSelected is emitted when a file is selected 147 * fileSelected is emitted when a file is selected
147 * it uses a DocLnk as parameter 148 * it uses a DocLnk as parameter
148 */ 149 */
149 void fileSelected( const DocLnk& ); 150 void fileSelected( const DocLnk& );
150 151
151 /** 152 /**
152 * fileSelected is emitted when a file is selected 153 * fileSelected is emitted when a file is selected
153 * the complete path is a parameter 154 * the complete path is a parameter
154 */ 155 */
155 void fileSelected( const QString& ); 156 void fileSelected( const QString& );
156 157
157 /** 158 /**
158 * Create a new File with a DocLnk 159 * Create a new File with a DocLnk
159 */ 160 */
160 void newSelected( const DocLnk& ); 161 void newSelected( const DocLnk& );
161 162
162 void closeMe(); 163 void closeMe();
163 164
164 /** 165 /**
165 * Ok is emitted on a Qt::Key_Return or Q::Key_Enter 166 * Ok is emitted on a Qt::Key_Return or Q::Key_Enter
166 * in the line edit 167 * in the line edit
167 */ 168 */
168 void ok(); 169 void ok();
169 void cancel(); 170 void cancel();
170 171
171 /* used by the ViewInterface */ 172 /* used by the ViewInterface */
172private: 173private:
173 bool showNew()const; 174 bool showNew()const;
174 bool showClose()const; 175 bool showClose()const;
175 MimeTypes mimeTypes()const; 176 MimeTypes mimeTypes()const;
176 QStringList currentMimeType()const; 177 QStringList currentMimeType()const;
177 178
178private: 179private:
179 /* inits the Widgets */ 180 /* inits the Widgets */
180 void initUI(); 181 void initUI();
181 /* inits the MimeType ComboBox content + connects signals and slots */ 182 /* inits the MimeType ComboBox content + connects signals and slots */
182 void initMime(); 183 void initMime();
183 /* init the Views :) */ 184 /* init the Views :) */
184 void initViews(); 185 void initViews();
185 186
187
188 /*
189 * register a view for deletion.
190 * This happens on creation of a OFileViewInterface
191 */
192 void registerView( const Internal::OFileViewInterface* );
193
186private: 194private:
187 QLineEdit* m_lneEdit; // the LineEdit for the Name 195 QLineEdit* m_lneEdit; // the LineEdit for the Name
188 QComboBox *m_cmbView, *m_cmbMime; // two ComboBoxes to select the View and MimeType 196 QComboBox *m_cmbView, *m_cmbMime; // two ComboBoxes to select the View and MimeType
189 QWidgetStack* m_stack; // our widget stack which will contain the views 197 QWidgetStack* m_stack; // our widget stack which will contain the views
190 Internal::OFileViewInterface* currentView() const; // returns the currentView 198 Internal::OFileViewInterface* currentView() const; // returns the currentView
191 Internal::OFileViewInterface* m_current; // here is the view saved 199 Internal::OFileViewInterface* m_current; // here is the view saved
192 bool m_shNew : 1; // should we show New? 200 bool m_shNew : 1; // should we show New?
193 bool m_shClose : 1; // should we show Close? 201 bool m_shClose : 1; // should we show Close?
194 MimeTypes m_mimeType; // list of mimetypes 202 MimeTypes m_mimeType; // list of mimetypes
195 203
196 QMap<QString, Internal::OFileViewInterface*> m_views; // QString translated view name + ViewInterface Ptr 204 QMap<QString, Internal::OFileViewInterface*> m_views; // QString translated view name + ViewInterface Ptr
205 /* views register themselves automatically */
206 QList<Internal::OFileViewInterface> m_viewsPtr;
197 QHBox* m_nameBox; // the LineEdit + Label is hold here 207 QHBox* m_nameBox; // the LineEdit + Label is hold here
198 QHBox* m_cmbBox; // this holds the two combo boxes 208 QHBox* m_cmbBox; // this holds the two combo boxes
199 209
200 QString m_startDir; 210 QString m_startDir;
201 int m_mode; 211 int m_mode;
202 int m_selector; 212 int m_selector;
203 213
204 struct Data; // used for future versions 214 struct Data; // used for future versions
205 Data *d; 215 Data *d;
206 216
207private slots: 217private slots:
208 void slotMimeTypeChanged(); 218 void slotMimeTypeChanged();
209 219
210 /* will set the text of the lineedit and emit a fileChanged signal */ 220 /* will set the text of the lineedit and emit a fileChanged signal */
211 void slotDocLnkBridge( const DocLnk& ); 221 void slotDocLnkBridge( const DocLnk& );
212 void slotFileBridge( const QString& ); 222 void slotFileBridge( const QString& );
213 void slotViewChange( const QString& ); 223 void slotViewChange( const QString& );
214 224
215 bool eventFilter (QObject *o, QEvent *e); 225 bool eventFilter (QObject *o, QEvent *e);
216 226
217}; 227};
218 228
219} 229}
220} 230}
221 231
222#endif 232#endif