summaryrefslogtreecommitdiff
authorzecke <zecke>2004-11-14 17:40:57 (UTC)
committer zecke <zecke>2004-11-14 17:40:57 (UTC)
commit61dc3dd61685a1bfc6aba33ad81f8348bb992a11 (patch) (unidiff)
tree74994977ad38557c91a2f16975a9d8798c3365ec
parent9507723db1df320547a0cb660b9b923d41438fdf (diff)
downloadopie-61dc3dd61685a1bfc6aba33ad81f8348bb992a11.zip
opie-61dc3dd61685a1bfc6aba33ad81f8348bb992a11.tar.gz
opie-61dc3dd61685a1bfc6aba33ad81f8348bb992a11.tar.bz2
-Fix bug in OFileSelector ListView spotted by hrw
to sort the 'size' column according their 'Number'-Halbordnung and not by string comparsion
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/fileselector/ofileselector.cpp15
-rw-r--r--libopie2/opieui/fileselector/ofileselector_p.h4
2 files changed, 11 insertions, 8 deletions
diff --git a/libopie2/opieui/fileselector/ofileselector.cpp b/libopie2/opieui/fileselector/ofileselector.cpp
index 01a51a2..718f743 100644
--- a/libopie2/opieui/fileselector/ofileselector.cpp
+++ b/libopie2/opieui/fileselector/ofileselector.cpp
@@ -1,682 +1,685 @@
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 ); 68 selector()->registerView( this );
69} 69}
70 70
71OFileViewInterface::~OFileViewInterface() 71OFileViewInterface::~OFileViewInterface()
72{} 72{}
73 73
74QString OFileViewInterface::name()const 74QString OFileViewInterface::name()const
75{ 75{
76 return m_name; 76 return m_name;
77} 77}
78 78
79void OFileViewInterface::setName( const QString& name ) 79void OFileViewInterface::setName( const QString& name )
80{ 80{
81 m_name = name; 81 m_name = name;
82} 82}
83 83
84OFileSelector* OFileViewInterface::selector()const 84OFileSelector* OFileViewInterface::selector()const
85{ 85{
86 return m_selector; 86 return m_selector;
87} 87}
88 88
89DocLnk OFileViewInterface::selectedDocument()const 89DocLnk OFileViewInterface::selectedDocument()const
90{ 90{
91 return DocLnk( selectedName() ); 91 return DocLnk( selectedName() );
92} 92}
93 93
94bool OFileViewInterface::showNew()const 94bool OFileViewInterface::showNew()const
95{ 95{
96 return selector()->showNew(); 96 return selector()->showNew();
97} 97}
98 98
99bool OFileViewInterface::showClose()const 99bool OFileViewInterface::showClose()const
100{ 100{
101 return selector()->showClose(); 101 return selector()->showClose();
102} 102}
103 103
104MimeTypes OFileViewInterface::mimeTypes()const 104MimeTypes OFileViewInterface::mimeTypes()const
105{ 105{
106 return selector()->mimeTypes(); 106 return selector()->mimeTypes();
107} 107}
108 108
109QStringList OFileViewInterface::currentMimeType()const 109QStringList OFileViewInterface::currentMimeType()const
110{ 110{
111 return selector()->currentMimeType(); 111 return selector()->currentMimeType();
112} 112}
113 113
114void OFileViewInterface::activate( const QString& ) 114void OFileViewInterface::activate( const QString& )
115{ 115{
116 // not implemented here 116 // not implemented here
117} 117}
118 118
119void OFileViewInterface::ok() 119void OFileViewInterface::ok()
120{ 120{
121 emit selector()->ok(); 121 emit selector()->ok();
122} 122}
123 123
124void OFileViewInterface::cancel() 124void OFileViewInterface::cancel()
125{ 125{
126 emit selector()->cancel(); 126 emit selector()->cancel();
127} 127}
128 128
129void OFileViewInterface::closeMe() 129void OFileViewInterface::closeMe()
130{ 130{
131 emit selector()->closeMe(); 131 emit selector()->closeMe();
132} 132}
133 133
134void OFileViewInterface::fileSelected( const QString& str) 134void OFileViewInterface::fileSelected( const QString& str)
135{ 135{
136 emit selector()->fileSelected( str); 136 emit selector()->fileSelected( str);
137} 137}
138 138
139void OFileViewInterface::fileSelected( const DocLnk& lnk) 139void OFileViewInterface::fileSelected( const DocLnk& lnk)
140{ 140{
141 emit selector()->fileSelected( lnk ); 141 emit selector()->fileSelected( lnk );
142} 142}
143 143
144void OFileViewInterface::setCurrentFileName( const QString& str ) 144void OFileViewInterface::setCurrentFileName( const QString& str )
145{ 145{
146 selector()->m_lneEdit->setText( str ); 146 selector()->m_lneEdit->setText( str );
147} 147}
148 148
149QString OFileViewInterface::currentFileName()const 149QString OFileViewInterface::currentFileName()const
150{ 150{
151 return selector()->m_lneEdit->text(); 151 return selector()->m_lneEdit->text();
152} 152}
153 153
154QString OFileViewInterface::startDirectory()const 154QString OFileViewInterface::startDirectory()const
155{ 155{
156 return selector()->m_startDir; 156 return selector()->m_startDir;
157} 157}
158 158
159bool OFileViewInterface::allItem( const QString& item )const 159bool OFileViewInterface::allItem( const QString& item )const
160{ 160{
161 return selector()->m_allList.contains( item ); 161 return selector()->m_allList.contains( item );
162} 162}
163 163
164 164
165ODocumentFileView::ODocumentFileView( OFileSelector* selector ) 165ODocumentFileView::ODocumentFileView( OFileSelector* selector )
166 :OFileViewInterface( selector ) 166 :OFileViewInterface( selector )
167{ 167{
168 m_selector = 0; 168 m_selector = 0;
169 setName( QObject::tr("Documents") ); 169 setName( QObject::tr("Documents") );
170} 170}
171 171
172ODocumentFileView::~ODocumentFileView() 172ODocumentFileView::~ODocumentFileView()
173{ 173{
174} 174}
175 175
176QString ODocumentFileView::selectedName()const 176QString ODocumentFileView::selectedName()const
177{ 177{
178 if (!m_selector) 178 if (!m_selector)
179 return QString::null; 179 return QString::null;
180 180
181 return m_selector->selectedDocument().file(); 181 return m_selector->selectedDocument().file();
182} 182}
183 183
184QString ODocumentFileView::selectedPath()const 184QString ODocumentFileView::selectedPath()const
185{ 185{
186 return QPEApplication::documentDir(); 186 return QPEApplication::documentDir();
187} 187}
188 188
189QString ODocumentFileView::directory()const 189QString ODocumentFileView::directory()const
190{ 190{
191 return selectedPath(); 191 return selectedPath();
192} 192}
193 193
194void ODocumentFileView::reread() 194void ODocumentFileView::reread()
195{ 195{
196 if (!m_selector) 196 if (!m_selector)
197 return; 197 return;
198 198
199 m_selector->setNewVisible( showNew() ); 199 m_selector->setNewVisible( showNew() );
200 m_selector->setCloseVisible( showClose() ); 200 m_selector->setCloseVisible( showClose() );
201 m_selector->filter = currentMimeType().join(";"); 201 m_selector->filter = currentMimeType().join(";");
202 m_selector->reread(); 202 m_selector->reread();
203} 203}
204 204
205int ODocumentFileView::fileCount()const 205int ODocumentFileView::fileCount()const
206{ 206{
207 if (!m_selector) 207 if (!m_selector)
208 return -1; 208 return -1;
209 209
210 return m_selector->fileCount(); 210 return m_selector->fileCount();
211} 211}
212 212
213DocLnk ODocumentFileView::selectedDocument()const 213DocLnk ODocumentFileView::selectedDocument()const
214{ 214{
215 if (!m_selector) 215 if (!m_selector)
216 return DocLnk(); 216 return DocLnk();
217 217
218 return m_selector->selectedDocument(); 218 return m_selector->selectedDocument();
219} 219}
220 220
221QWidget* ODocumentFileView::widget( QWidget* parent ) 221QWidget* ODocumentFileView::widget( QWidget* parent )
222{ 222{
223 if (!m_selector ) 223 if (!m_selector )
224 { 224 {
225 m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() ); 225 m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() );
226 QObject::connect(m_selector, SIGNAL(fileSelected(const DocLnk&) ), 226 QObject::connect(m_selector, SIGNAL(fileSelected(const DocLnk&) ),
227 selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) ); 227 selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) );
228 QObject::connect(m_selector, SIGNAL(closeMe() ), 228 QObject::connect(m_selector, SIGNAL(closeMe() ),
229 selector(), SIGNAL(closeMe() ) ); 229 selector(), SIGNAL(closeMe() ) );
230 QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk&) ), 230 QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk&) ),
231 selector(), SIGNAL(newSelected(const DocLnk&) ) ); 231 selector(), SIGNAL(newSelected(const DocLnk&) ) );
232 } 232 }
233 233
234 return m_selector; 234 return m_selector;
235} 235}
236 236
237/* 237/*
238 * This is the file system view used 238 * This is the file system view used
239 * we use a QListView + QListViewItems for it 239 * we use a QListView + QListViewItems for it
240 */ 240 */
241 241
242OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap, 242OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap,
243 const QString& path, const QString& date, 243 const QString& path, const QString& date,
244 const QString& size, const QString& dir, 244 const QString& size, const QString& dir,
245 bool isLocked, bool isDir ) 245 bool isLocked, bool isDir )
246 : QListViewItem( view ) 246 : QListViewItem( view ), m_dir(dir), m_isDir(isDir), m_locked(isLocked)
247{ 247{
248 setPixmap(0, pixmap ); 248 setPixmap(0, pixmap );
249 setText(1, path ); 249 setText(1, path );
250 setText(2, size ); 250 setText(2, size );
251 setText(3, date ); 251 setText(3, date );
252 m_isDir = isDir;
253 m_dir = dir;
254 m_locked = isLocked;
255} 252}
256 253
257OFileSelectorItem::~OFileSelectorItem() 254OFileSelectorItem::~OFileSelectorItem()
258{ 255{
259} 256}
260 257
261bool OFileSelectorItem::isLocked()const 258bool OFileSelectorItem::isLocked()const
262{ 259{
263 return m_locked; 260 return m_locked;
264} 261}
265 262
266QString OFileSelectorItem::directory()const 263QString OFileSelectorItem::directory()const
267{ 264{
268 return m_dir; 265 return m_dir;
269} 266}
270 267
271bool OFileSelectorItem::isDir()const 268bool OFileSelectorItem::isDir()const
272{ 269{
273 return m_isDir; 270 return m_isDir;
274} 271}
275 272
276QString OFileSelectorItem::path()const 273QString OFileSelectorItem::path()const
277{ 274{
278 return text( 1 ); 275 return text( 1 );
279} 276}
280 277
281QString OFileSelectorItem::key( int id, bool )const 278QString OFileSelectorItem::key( int id, bool )const
282{ 279{
283 QString ke; 280 QString ke;
281
282 /*
283 * id = 0 ||id == 1 : Sort By Name but Directories at Top
284 * id = 2 : Sort By Size: Prepend '0' to the key
285 */
284 if( id == 0 || id == 1 ) 286 if( id == 0 || id == 1 )
285 { // name 287 { // name
286 if( m_isDir ) 288 if( m_isDir )
287 { 289 {
288 ke.append("0" ); 290 ke.append("0" );
289 ke.append( text(1) ); 291 ke.append( text(1) );
290 } 292 }
291 else 293 else
292 { 294 {
293 ke.append("1" ); 295 ke.append("1" );
294 ke.append( text(1) ); 296 ke.append( text(1) );
295 } 297 }
296 return ke; 298 return ke;
297 } 299 }else if(id == 2) {
298 else 300 return text(2).rightJustify(20, '0');
301 }else
299 return text( id ); 302 return text( id );
300 303
301} 304}
302 305
303OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, OFileSelector* sel) 306OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, OFileSelector* sel)
304 :QWidget( parent ), m_sel( sel ) 307 :QWidget( parent ), m_sel( sel )
305{ 308{
306 m_all = false; 309 m_all = false;
307 QVBoxLayout* lay = new QVBoxLayout( this ); 310 QVBoxLayout* lay = new QVBoxLayout( this );
308 m_currentDir = startDir; 311 m_currentDir = startDir;
309 312
310 /* 313 /*
311 * now we add a special bar 314 * now we add a special bar
312 * One Button For Up 315 * One Button For Up
313 * Home 316 * Home
314 * Doc 317 * Doc
315 * And a dropdown menu with FileSystems 318 * And a dropdown menu with FileSystems
316 * FUTURE: one to change dir with lineedit 319 * FUTURE: one to change dir with lineedit
317 * Bookmarks 320 * Bookmarks
318 * Create Dir 321 * Create Dir
319 */ 322 */
320 QHBox* box = new QHBox(this ); 323 QHBox* box = new QHBox(this );
321 box->setBackgroundMode( PaletteButton ); 324 box->setBackgroundMode( PaletteButton );
322 box->setSpacing( 0 ); 325 box->setSpacing( 0 );
323 326
324 QToolButton *btn = new QToolButton( box ); 327 QToolButton *btn = new QToolButton( box );
325 btn->setIconSet( Resource::loadIconSet("up") ); 328 btn->setIconSet( Resource::loadIconSet("up") );
326 connect(btn, SIGNAL(clicked() ), 329 connect(btn, SIGNAL(clicked() ),
327 this, SLOT( cdUP() ) ); 330 this, SLOT( cdUP() ) );
328 331
329 btn = new QToolButton( box ); 332 btn = new QToolButton( box );
330 btn->setIconSet( Resource::loadIconSet("home") ); 333 btn->setIconSet( Resource::loadIconSet("home") );
331 connect(btn, SIGNAL(clicked() ), 334 connect(btn, SIGNAL(clicked() ),
332 this, SLOT( cdHome() ) ); 335 this, SLOT( cdHome() ) );
333 336
334 btn = new QToolButton( box ); 337 btn = new QToolButton( box );
335 btn->setIconSet( Resource::loadIconSet("DocsIcon") ); 338 btn->setIconSet( Resource::loadIconSet("DocsIcon") );
336 connect(btn, SIGNAL(clicked() ), 339 connect(btn, SIGNAL(clicked() ),
337 this, SLOT(cdDoc() ) ); 340 this, SLOT(cdDoc() ) );
338 341
339 m_btnNew = new QToolButton( box ); 342 m_btnNew = new QToolButton( box );
340 m_btnNew->setIconSet( Resource::loadIconSet("new") ); 343 m_btnNew->setIconSet( Resource::loadIconSet("new") );
341 connect(m_btnNew, SIGNAL(clicked() ), 344 connect(m_btnNew, SIGNAL(clicked() ),
342 this, SLOT(slotNew() ) ); 345 this, SLOT(slotNew() ) );
343 346
344 347
345 m_btnClose = new QToolButton( box ); 348 m_btnClose = new QToolButton( box );
346 m_btnClose->setIconSet( Resource::loadIconSet("close") ); 349 m_btnClose->setIconSet( Resource::loadIconSet("close") );
347 connect(m_btnClose, SIGNAL(clicked() ), 350 connect(m_btnClose, SIGNAL(clicked() ),
348 selector(), SIGNAL(closeMe() ) ); 351 selector(), SIGNAL(closeMe() ) );
349 352
350 btn = new QToolButton( box ); 353 btn = new QToolButton( box );
351 btn->setIconSet( Resource::loadIconSet("cardmon/pcmcia") ); 354 btn->setIconSet( Resource::loadIconSet("cardmon/pcmcia") );
352 355
353 /* let's fill device parts */ 356 /* let's fill device parts */
354 QPopupMenu* pop = new QPopupMenu(this); 357 QPopupMenu* pop = new QPopupMenu(this);
355 connect(pop, SIGNAL( activated(int) ), 358 connect(pop, SIGNAL( activated(int) ),
356 this, SLOT(slotFSActivated(int) ) ); 359 this, SLOT(slotFSActivated(int) ) );
357 360
358 StorageInfo storage; 361 StorageInfo storage;
359 const QList<FileSystem> &fs = storage.fileSystems(); 362 const QList<FileSystem> &fs = storage.fileSystems();
360 QListIterator<FileSystem> it(fs); 363 QListIterator<FileSystem> it(fs);
361 for ( ; it.current(); ++it ) 364 for ( ; it.current(); ++it )
362 { 365 {
363 const QString disk = (*it)->name(); 366 const QString disk = (*it)->name();
364 const QString path = (*it)->path(); 367 const QString path = (*it)->path();
365 m_dev.insert( disk, path ); 368 m_dev.insert( disk, path );
366 pop->insertItem( disk ); 369 pop->insertItem( disk );
367 } 370 }
368 m_fsPop = pop; 371 m_fsPop = pop;
369 372
370 373
371 btn->setPopup( pop ); 374 btn->setPopup( pop );
372 375
373 lay->addWidget( box ); 376 lay->addWidget( box );
374 377
375 m_view = new QListView( this ); 378 m_view = new QListView( this );
376 379
377 m_view->installEventFilter(this); 380 m_view->installEventFilter(this);
378 381
379 QPEApplication::setStylusOperation( m_view->viewport(), 382 QPEApplication::setStylusOperation( m_view->viewport(),
380 QPEApplication::RightOnHold); 383 QPEApplication::RightOnHold);
381 m_view->addColumn(" " ); 384 m_view->addColumn(" " );
382 m_view->addColumn(tr("Name"), 135 ); 385 m_view->addColumn(tr("Name"), 135 );
383 m_view->addColumn(tr("Size"), -1 ); 386 m_view->addColumn(tr("Size"), -1 );
384 m_view->addColumn(tr("Date"), 60 ); 387 m_view->addColumn(tr("Date"), 60 );
385 m_view->addColumn(tr("Mime Type"), -1 ); 388 m_view->addColumn(tr("Mime Type"), -1 );
386 389
387 390
388 m_view->setSorting( 1 ); 391 m_view->setSorting( 1 );
389 m_view->setAllColumnsShowFocus( TRUE ); 392 m_view->setAllColumnsShowFocus( TRUE );
390 393
391 lay->addWidget( m_view, 1000 ); 394 lay->addWidget( m_view, 1000 );
392 connectSlots(); 395 connectSlots();
393} 396}
394 397
395OFileViewFileListView::~OFileViewFileListView() 398OFileViewFileListView::~OFileViewFileListView()
396{ 399{
397} 400}
398 401
399void OFileViewFileListView::slotNew() 402void OFileViewFileListView::slotNew()
400{ 403{
401 DocLnk lnk; 404 DocLnk lnk;
402 emit selector()->newSelected( lnk ); 405 emit selector()->newSelected( lnk );
403} 406}
404 407
405OFileSelectorItem* OFileViewFileListView::currentItem()const 408OFileSelectorItem* OFileViewFileListView::currentItem()const
406{ 409{
407 QListViewItem* item = m_view->currentItem(); 410 QListViewItem* item = m_view->currentItem();
408 if (!item ) 411 if (!item )
409 return 0l; 412 return 0l;
410 413
411 return static_cast<OFileSelectorItem*>(item); 414 return static_cast<OFileSelectorItem*>(item);
412} 415}
413 416
414void OFileViewFileListView::reread( bool all ) 417void OFileViewFileListView::reread( bool all )
415{ 418{
416 m_view->clear(); 419 m_view->clear();
417 420
418 if (selector()->showClose() ) 421 if (selector()->showClose() )
419 m_btnClose->show(); 422 m_btnClose->show();
420 else 423 else
421 m_btnClose->hide(); 424 m_btnClose->hide();
422 425
423 if (selector()->showNew() ) 426 if (selector()->showNew() )
424 m_btnNew->show(); 427 m_btnNew->show();
425 else 428 else
426 m_btnNew->hide(); 429 m_btnNew->hide();
427 430
428 m_mimes = selector()->currentMimeType(); 431 m_mimes = selector()->currentMimeType();
429 m_all = all; 432 m_all = all;
430 433
431 QDir dir( m_currentDir ); 434 QDir dir( m_currentDir );
432 if (!dir.exists() ) 435 if (!dir.exists() )
433 return; 436 return;
434 437
435 dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed ); 438 dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed );
436 int filter; 439 int filter;
437 filter = QDir::Dirs; 440 filter = QDir::Dirs;
438 if ( selector()->mode() != OFileSelector::DIRECTORYSELECTOR ) 441 if ( selector()->mode() != OFileSelector::DIRECTORYSELECTOR )
439 filter = filter | QDir::Files | QDir::All; 442 filter = filter | QDir::Files | QDir::All;
440 443
441 if ( m_all ) 444 if ( m_all )
442 filter = filter | QDir::Hidden; 445 filter = filter | QDir::Hidden;
443 446
444 dir.setFilter( filter ); 447 dir.setFilter( filter );
445 448
446 // now go through all files 449 // now go through all files
447 const QFileInfoList *list = dir.entryInfoList(); 450 const QFileInfoList *list = dir.entryInfoList();
448 if (!list) 451 if (!list)
449 { 452 {
450 cdUP(); 453 cdUP();
451 return; 454 return;
452 } 455 }
453 456
454 QFileInfoListIterator it( *list ); 457 QFileInfoListIterator it( *list );
455 QFileInfo *fi; 458 QFileInfo *fi;
456 while( (fi=it.current() ) ) 459 while( (fi=it.current() ) )
457 { 460 {
458 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ) 461 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") )
459 { 462 {
460 ++it; 463 ++it;
461 continue; 464 continue;
462 } 465 }
463 466
464 /* 467 /*
465 * It is a symlink we try to resolve it now but don't let us attack by DOS 468 * It is a symlink we try to resolve it now but don't let us attack by DOS
466 * 469 *
467 */ 470 */
468 if( fi->isSymLink() ) 471 if( fi->isSymLink() )
469 { 472 {
470 QString file = fi->dirPath( true ) + "/" + fi->readLink(); 473 QString file = fi->dirPath( true ) + "/" + fi->readLink();
471 for( int i = 0; i<=4; i++) 474 for( int i = 0; i<=4; i++)
472 { // 5 tries to prevent dos 475 { // 5 tries to prevent dos
473 QFileInfo info( file ); 476 QFileInfo info( file );
474 if( !info.exists() ) 477 if( !info.exists() )
475 { 478 {
476 addSymlink( fi, TRUE ); 479 addSymlink( fi, TRUE );
477 break; 480 break;
478 } 481 }
479 else if( info.isDir() ) 482 else if( info.isDir() )
480 { 483 {
481 addDir( fi, TRUE ); 484 addDir( fi, TRUE );
482 break; 485 break;
483 } 486 }
484 else if( info.isFile() ) 487 else if( info.isFile() )
485 { 488 {
486 addFile( fi, TRUE ); 489 addFile( fi, TRUE );
487 break; 490 break;
488 } 491 }
489 else if( info.isSymLink() ) 492 else if( info.isSymLink() )
490 { 493 {
491 file = info.dirPath(true ) + "/" + info.readLink() ; 494 file = info.dirPath(true ) + "/" + info.readLink() ;
492 break; 495 break;
493 } 496 }
494 else if( i == 4) 497 else if( i == 4)
495 { // couldn't resolve symlink add it as symlink 498 { // couldn't resolve symlink add it as symlink
496 addSymlink( fi ); 499 addSymlink( fi );
497 } 500 }
498 } // off for loop for symlink resolving 501 } // off for loop for symlink resolving
499 } 502 }
500 else if( fi->isDir() ) 503 else if( fi->isDir() )
501 addDir( fi ); 504 addDir( fi );
502 else if( fi->isFile() ) 505 else if( fi->isFile() )
503 addFile( fi ); 506 addFile( fi );
504 507
505 ++it; 508 ++it;
506 } // of while loop 509 } // of while loop
507 m_view->sort(); 510 m_view->sort();
508 511
509} 512}
510int OFileViewFileListView::fileCount()const 513int OFileViewFileListView::fileCount()const
511{ 514{
512 return m_view->childCount(); 515 return m_view->childCount();
513} 516}
514 517
515QString OFileViewFileListView::currentDir()const 518QString OFileViewFileListView::currentDir()const
516{ 519{
517 return m_currentDir; 520 return m_currentDir;
518} 521}
519 522
520OFileSelector* OFileViewFileListView::selector() 523OFileSelector* OFileViewFileListView::selector()
521{ 524{
522 return m_sel; 525 return m_sel;
523} 526}
524 527
525bool OFileViewFileListView::eventFilter (QObject *, QEvent *e) 528bool OFileViewFileListView::eventFilter (QObject *, QEvent *e)
526{ 529{
527 if ( e->type() == QEvent::KeyPress ) 530 if ( e->type() == QEvent::KeyPress )
528 { 531 {
529 QKeyEvent *k = (QKeyEvent *)e; 532 QKeyEvent *k = (QKeyEvent *)e;
530 if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) 533 if ( (k->key()==Key_Enter) || (k->key()==Key_Return))
531 { 534 {
532 slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); 535 slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0);
533 return true; 536 return true;
534 } 537 }
535 } 538 }
536 return false; 539 return false;
537} 540}
538 541
539void OFileViewFileListView::connectSlots() 542void OFileViewFileListView::connectSlots()
540{ 543{
541 connect(m_view, SIGNAL(clicked(QListViewItem*) ), 544 connect(m_view, SIGNAL(clicked(QListViewItem*) ),
542 this, SLOT(slotCurrentChanged(QListViewItem*) ) ); 545 this, SLOT(slotCurrentChanged(QListViewItem*) ) );
543 connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ), 546 connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ),
544 this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) ); 547 this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) );
545} 548}
546 549
547void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) 550void OFileViewFileListView::slotCurrentChanged( QListViewItem* item)
548{ 551{
549 if (!item) 552 if (!item)
550 return; 553 return;
551#if 0 554#if 0
552 555
553 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); 556 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item);
554 557
555 if (!sel->isDir() ) 558 if (!sel->isDir() )
556 { 559 {
557 selector()->m_lneEdit->setText( sel->text(1) ); 560 selector()->m_lneEdit->setText( sel->text(1) );
558 // if in fileselector mode we will emit selected 561 // if in fileselector mode we will emit selected
559 if ( selector()->mode() == OFileSelector::FileSelector ) 562 if ( selector()->mode() == OFileSelector::FileSelector )
560 { 563 {
561 odebug << "slot Current Changed" << oendl; 564 odebug << "slot Current Changed" << oendl;
562 QStringList str = QStringList::split("->", sel->text(1) ); 565 QStringList str = QStringList::split("->", sel->text(1) );
563 QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); 566 QString path = sel->directory() + "/" + str[0].stripWhiteSpace();
564 emit selector()->fileSelected( path ); 567 emit selector()->fileSelected( path );
565 DocLnk lnk( path ); 568 DocLnk lnk( path );
566 emit selector()->fileSelected( lnk ); 569 emit selector()->fileSelected( lnk );
567 } 570 }
568 } 571 }
569#endif 572#endif
570} 573}
571 574
572void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) 575void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int )
573{ 576{
574 if (!item || ( button != Qt::LeftButton) ) 577 if (!item || ( button != Qt::LeftButton) )
575 return; 578 return;
576 579
577 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); 580 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item);
578 if (!sel->isLocked() ) 581 if (!sel->isLocked() )
579 { 582 {
580 QStringList str = QStringList::split("->", sel->text(1) ); 583 QStringList str = QStringList::split("->", sel->text(1) );
581 if (sel->isDir() ) 584 if (sel->isDir() )
582 { 585 {
583 m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); 586 m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace();
584 emit selector()->dirSelected( m_currentDir ); 587 emit selector()->dirSelected( m_currentDir );
585 reread( m_all ); 588 reread( m_all );
586 } 589 }
587 else 590 else
588 { // file 591 { // file
589 odebug << "slot Clicked" << oendl; 592 odebug << "slot Clicked" << oendl;
590 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); 593 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() );
591 QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); 594 QString path = sel->directory() + "/" + str[0].stripWhiteSpace();
592 emit selector()->fileSelected( path ); 595 emit selector()->fileSelected( path );
593 DocLnk lnk( path ); 596 DocLnk lnk( path );
594 emit selector()->fileSelected( lnk ); 597 emit selector()->fileSelected( lnk );
595 } 598 }
596 } // not locked 599 } // not locked
597} 600}
598 601
599void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) 602void OFileViewFileListView::addFile( QFileInfo* info, bool symlink )
600{ 603{
601 MimeType type( info->absFilePath() ); 604 MimeType type( info->absFilePath() );
602 if (!compliesMime( type.id() ) ) 605 if (!compliesMime( type.id() ) )
603 return; 606 return;
604 607
605 QPixmap pix = type.pixmap(); 608 QPixmap pix = type.pixmap();
606 QString dir, name; bool locked; 609 QString dir, name; bool locked;
607 if ( pix.isNull() ) 610 if ( pix.isNull() )
608 { 611 {
609 QWMatrix matrix; 612 QWMatrix matrix;
610 QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); 613 QPixmap pixer(Resource::loadPixmap("UnknownDocument") );
611 matrix.scale( .4, .4 ); 614 matrix.scale( .4, .4 );
612 pix = pixer.xForm( matrix ); 615 pix = pixer.xForm( matrix );
613 } 616 }
614 dir = info->dirPath( true ); 617 dir = info->dirPath( true );
615 locked = false; 618 locked = false;
616 if ( symlink ) 619 if ( symlink )
617 name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); 620 name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink();
618 else 621 else
619 { 622 {
620 name = info->fileName(); 623 name = info->fileName();
621 if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || 624 if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) ||
622 ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) 625 ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) )
623 { 626 {
624 locked = true; pix = Resource::loadPixmap("locked"); 627 locked = true; pix = Resource::loadPixmap("locked");
625 } 628 }
626 } 629 }
627 (void)new OFileSelectorItem( m_view, pix, name, 630 (void)new OFileSelectorItem( m_view, pix, name,
628 info->lastModified().toString(), QString::number( info->size() ), 631 info->lastModified().toString(), QString::number( info->size() ),
629 dir, locked ); 632 dir, locked );
630} 633}
631 634
632void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) 635void OFileViewFileListView::addDir( QFileInfo* info, bool symlink )
633{ 636{
634 bool locked = false; QString name; QPixmap pix; 637 bool locked = false; QString name; QPixmap pix;
635 638
636 if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || 639 if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) ||
637 ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) 640 ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) )
638 { 641 {
639 locked = true; 642 locked = true;
640 if ( symlink ) 643 if ( symlink )
641 pix = Resource::loadPixmap( "opie/symlink" ); 644 pix = Resource::loadPixmap( "opie/symlink" );
642 else 645 else
643 pix = Resource::loadPixmap( "lockedfolder" ); 646 pix = Resource::loadPixmap( "lockedfolder" );
644 } 647 }
645 else 648 else
646 pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder"); 649 pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder");
647 650
648 name = symlink ? info->fileName() + " -> " + info->dirPath(true) + "/" + info->readLink() : 651 name = symlink ? info->fileName() + " -> " + info->dirPath(true) + "/" + info->readLink() :
649 info->fileName(); 652 info->fileName();
650 653
651 (void)new OFileSelectorItem( m_view, pix, name, 654 (void)new OFileSelectorItem( m_view, pix, name,
652 info->lastModified().toString(), 655 info->lastModified().toString(),
653 QString::number( info->size() ), 656 QString::number( info->size() ),
654 info->dirPath( true ), locked, true ); 657 info->dirPath( true ), locked, true );
655 658
656 659
657} 660}
658 661
659void OFileViewFileListView::addSymlink( QFileInfo* , bool ) 662void OFileViewFileListView::addSymlink( QFileInfo* , bool )
660{ 663{
661} 664}
662 665
663void OFileViewFileListView::cdUP() 666void OFileViewFileListView::cdUP()
664{ 667{
665 QDir dir( m_currentDir ); 668 QDir dir( m_currentDir );
666 dir.cdUp(); 669 dir.cdUp();
667 670
668 if (!dir.exists() ) 671 if (!dir.exists() )
669 m_currentDir = "/"; 672 m_currentDir = "/";
670 else 673 else
671 m_currentDir = dir.absPath(); 674 m_currentDir = dir.absPath();
672 675
673 emit selector()->dirSelected( m_currentDir ); 676 emit selector()->dirSelected( m_currentDir );
674 reread( m_all ); 677 reread( m_all );
675} 678}
676 679
677void OFileViewFileListView::cdHome() 680void OFileViewFileListView::cdHome()
678{ 681{
679 m_currentDir = QDir::homeDirPath(); 682 m_currentDir = QDir::homeDirPath();
680 emit selector()->dirSelected( m_currentDir ); 683 emit selector()->dirSelected( m_currentDir );
681 reread( m_all ); 684 reread( m_all );
682} 685}
diff --git a/libopie2/opieui/fileselector/ofileselector_p.h b/libopie2/opieui/fileselector/ofileselector_p.h
index 790d2bd..15db916 100644
--- a/libopie2/opieui/fileselector/ofileselector_p.h
+++ b/libopie2/opieui/fileselector/ofileselector_p.h
@@ -1,194 +1,194 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (C) Holger Freyther <zecke@handhelds.org> 3             .=l. Copyright (C) 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#ifndef OFILESELECTOR_PRIVATE_H 29#ifndef OFILESELECTOR_PRIVATE_H
30#define OFILESELECTOR_PRIVATE_H 30#define OFILESELECTOR_PRIVATE_H
31 31
32/* OPIE */ 32/* OPIE */
33#include <qpe/applnk.h> 33#include <qpe/applnk.h>
34#include <qpe/fileselector.h> 34#include <qpe/fileselector.h>
35 35
36/* QT */ 36/* QT */
37#include <qmap.h> 37#include <qmap.h>
38#include <qstringlist.h> 38#include <qstringlist.h>
39#include <qwidget.h> 39#include <qwidget.h>
40#include <qlistview.h> 40#include <qlistview.h>
41 41
42/* 42/*
43 * How to avoid having really two different objects 43 * How to avoid having really two different objects
44 * for Extended and ExtendedAll 44 * for Extended and ExtendedAll
45 * The only difference is the Lister... 45 * The only difference is the Lister...
46 * a) static object? 46 * a) static object?
47 * b) leave some object inside the OFileSelector which can be used? 47 * b) leave some object inside the OFileSelector which can be used?
48 * c) when switching views tell which view we want o have.. internally we can switch then 48 * c) when switching views tell which view we want o have.. internally we can switch then
49 * 49 *
50 * I'll take c) -zecke 50 * I'll take c) -zecke
51 */ 51 */
52 52
53typedef QMap<QString, QStringList> MimeTypes; 53typedef QMap<QString, QStringList> MimeTypes;
54 54
55/* the View Interface */ 55/* the View Interface */
56class QFileInfo; 56class QFileInfo;
57class QToolButton; 57class QToolButton;
58 58
59namespace Opie{ 59namespace Opie{
60namespace Ui{ 60namespace Ui{
61class OFileSelector; 61class OFileSelector;
62namespace Internal { 62namespace Internal {
63 63
64class OFileViewInterface 64class OFileViewInterface
65{ 65{
66public: 66public:
67 OFileViewInterface( OFileSelector* selector ); 67 OFileViewInterface( OFileSelector* selector );
68 virtual ~OFileViewInterface(); 68 virtual ~OFileViewInterface();
69 virtual QString selectedName()const = 0; 69 virtual QString selectedName()const = 0;
70 virtual QString selectedPath()const = 0; 70 virtual QString selectedPath()const = 0;
71 virtual QString directory()const = 0; 71 virtual QString directory()const = 0;
72 virtual void reread() = 0; 72 virtual void reread() = 0;
73 virtual int fileCount()const = 0; 73 virtual int fileCount()const = 0;
74 virtual DocLnk selectedDocument()const; 74 virtual DocLnk selectedDocument()const;
75 virtual QWidget* widget( QWidget* parent) = 0; 75 virtual QWidget* widget( QWidget* parent) = 0;
76 virtual void activate( const QString& ); 76 virtual void activate( const QString& );
77 QString name()const; 77 QString name()const;
78 bool allItem( const QString& )const; 78 bool allItem( const QString& )const;
79protected: 79protected:
80 OFileSelector* selector()const; 80 OFileSelector* selector()const;
81 void setName( const QString& ); 81 void setName( const QString& );
82 bool showNew()const; 82 bool showNew()const;
83 bool showClose()const; 83 bool showClose()const;
84 MimeTypes mimeTypes()const; 84 MimeTypes mimeTypes()const;
85 QStringList currentMimeType()const; 85 QStringList currentMimeType()const;
86 QString startDirectory()const; 86 QString startDirectory()const;
87protected: 87protected:
88 void ok(); 88 void ok();
89 void cancel(); 89 void cancel();
90 void closeMe(); 90 void closeMe();
91 void fileSelected( const QString& ); 91 void fileSelected( const QString& );
92 void fileSelected( const DocLnk& ); 92 void fileSelected( const DocLnk& );
93 void setCurrentFileName( const QString& ); 93 void setCurrentFileName( const QString& );
94 QString currentFileName()const; 94 QString currentFileName()const;
95 95
96private: 96private:
97 QString m_name; 97 QString m_name;
98 OFileSelector* m_selector; 98 OFileSelector* m_selector;
99}; 99};
100 100
101 101
102/* THE Document View hosting a FileSelector*/ 102/* THE Document View hosting a FileSelector*/
103class ODocumentFileView : public OFileViewInterface 103class ODocumentFileView : public OFileViewInterface
104{ 104{
105public: 105public:
106 ODocumentFileView( OFileSelector* selector ); 106 ODocumentFileView( OFileSelector* selector );
107 ~ODocumentFileView(); 107 ~ODocumentFileView();
108 108
109 QString selectedName() const; 109 QString selectedName() const;
110 QString selectedPath() const; 110 QString selectedPath() const;
111 111
112 QString directory() const; 112 QString directory() const;
113 void reread(); 113 void reread();
114 int fileCount()const; 114 int fileCount()const;
115 DocLnk selectedDocument()const; 115 DocLnk selectedDocument()const;
116 116
117 QWidget* widget( QWidget* parent ); 117 QWidget* widget( QWidget* parent );
118 118
119private: 119private:
120 mutable FileSelector* m_selector; 120 mutable FileSelector* m_selector;
121 121
122}; 122};
123 123
124 124
125class OFileSelectorItem : public QListViewItem 125class OFileSelectorItem : public QListViewItem
126{ 126{
127public: 127public:
128 OFileSelectorItem( QListView* view, const QPixmap& pixmap, 128 OFileSelectorItem( QListView* view, const QPixmap& pixmap,
129 const QString& path, const QString& date, 129 const QString& path, const QString& date,
130 const QString& size, const QString& mDir, 130 const QString& size, const QString& mDir,
131 bool isLocked = false, bool isDir = false ); 131 bool isLocked = false, bool isDir = false );
132 ~OFileSelectorItem(); 132 ~OFileSelectorItem();
133 bool isLocked()const; 133 bool isLocked()const;
134 bool isDir()const; 134 bool isDir()const;
135 QString directory()const; 135 QString directory()const;
136 QString path()const; 136 QString path()const;
137 QString key(int id, bool )const; 137 QString key(int id, bool )const;
138 138
139private: 139private:
140 bool m_locked : 1;
141 bool m_isDir : 1;
142 QString m_dir; 140 QString m_dir;
141 bool m_isDir : 1;
142 bool m_locked : 1;
143}; 143};
144 144
145class OFileViewFileListView : public QWidget 145class OFileViewFileListView : public QWidget
146{ 146{
147 Q_OBJECT 147 Q_OBJECT
148public: 148public:
149 OFileViewFileListView( QWidget* parent, const QString& dir, OFileSelector* selector ); 149 OFileViewFileListView( QWidget* parent, const QString& dir, OFileSelector* selector );
150 ~OFileViewFileListView(); 150 ~OFileViewFileListView();
151 151
152 OFileSelectorItem* currentItem()const; 152 OFileSelectorItem* currentItem()const;
153 void reread( bool all = false ); 153 void reread( bool all = false );
154 int fileCount()const; 154 int fileCount()const;
155 QString currentDir()const; 155 QString currentDir()const;
156protected: 156protected:
157 bool eventFilter (QObject *o, QEvent *e); 157 bool eventFilter (QObject *o, QEvent *e);
158private slots: 158private slots:
159 void slotNew(); // will emit newSelected 159 void slotNew(); // will emit newSelected
160 void cdUP(); 160 void cdUP();
161 void cdHome(); 161 void cdHome();
162 void cdDoc(); 162 void cdDoc();
163 void changeDir( const QString& ); 163 void changeDir( const QString& );
164 void slotCurrentChanged( QListViewItem* ); 164 void slotCurrentChanged( QListViewItem* );
165 void slotClicked(int, QListViewItem*, const QPoint&, int ); 165 void slotClicked(int, QListViewItem*, const QPoint&, int );
166 void slotFSActivated(int); 166 void slotFSActivated(int);
167 167
168protected: 168protected:
169 OFileSelector* selector(); 169 OFileSelector* selector();
170 170
171private: 171private:
172 QMap<QString, QString> m_dev; 172 QMap<QString, QString> m_dev;
173 bool m_all : 1; 173 bool m_all : 1;
174 OFileSelector* m_sel; 174 OFileSelector* m_sel;
175 QPopupMenu* m_fsPop; 175 QPopupMenu* m_fsPop;
176 bool compliesMime( const QString& ); 176 bool compliesMime( const QString& );
177 QStringList m_mimes; // used in compy mime 177 QStringList m_mimes; // used in compy mime
178 QString m_currentDir; 178 QString m_currentDir;
179 QToolButton *m_btnNew, *m_btnClose; 179 QToolButton *m_btnNew, *m_btnClose;
180 void connectSlots(); 180 void connectSlots();
181 void addFile( QFileInfo* info, bool symlink = FALSE ); 181 void addFile( QFileInfo* info, bool symlink = FALSE );
182 void addDir ( QFileInfo* info, bool symlink = FALSE ); 182 void addDir ( QFileInfo* info, bool symlink = FALSE );
183 void addSymlink( QFileInfo* info, bool = FALSE ); 183 void addSymlink( QFileInfo* info, bool = FALSE );
184 184
185 185
186private: 186private:
187 QListView* m_view; 187 QListView* m_view;
188}; 188};
189 189
190} 190}
191} 191}
192} 192}
193 193
194#endif 194#endif