summaryrefslogtreecommitdiff
authoralwin <alwin>2005-03-24 13:28:49 (UTC)
committer alwin <alwin>2005-03-24 13:28:49 (UTC)
commit29da9a4477210843435cbea3ede0d520775fe1a5 (patch) (unidiff)
tree487b26273bcdb8e29cd3f591955e8469d01c0da7
parent4fbd94e2fd6432bb15e24e40be59426b309cbb9d (diff)
downloadopie-29da9a4477210843435cbea3ede0d520775fe1a5.zip
opie-29da9a4477210843435cbea3ede0d520775fe1a5.tar.gz
opie-29da9a4477210843435cbea3ede0d520775fe1a5.tar.bz2
the filesystem-menu will executed when click on the filsystem-button
not when hold the pen on it.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/fileselector/ofileselector.cpp18
-rw-r--r--libopie2/opieui/fileselector/ofileselector_p.h2
2 files changed, 14 insertions, 6 deletions
diff --git a/libopie2/opieui/fileselector/ofileselector.cpp b/libopie2/opieui/fileselector/ofileselector.cpp
index 74aca96..dbba4b9 100644
--- a/libopie2/opieui/fileselector/ofileselector.cpp
+++ b/libopie2/opieui/fileselector/ofileselector.cpp
@@ -1,791 +1,797 @@
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 {
65/* 65/*
66 * Create a path by adding a '/'/QDir::seperator in between 66 * Create a path by adding a '/'/QDir::seperator in between
67 * base and ending, but only if base is not empty 67 * base and ending, but only if base is not empty
68 */ 68 */
69static inline QString createNewPath(const QString& base, const QString &ending) { 69static inline QString createNewPath(const QString& base, const QString &ending) {
70 return base == QString::fromLatin1("/") ? 70 return base == QString::fromLatin1("/") ?
71 base + ending : base + "/" + ending; 71 base + ending : base + "/" + ending;
72} 72}
73 73
74 74
75OFileViewInterface::OFileViewInterface( OFileSelector* _selector ) 75OFileViewInterface::OFileViewInterface( OFileSelector* _selector )
76 : m_selector( _selector ) 76 : m_selector( _selector )
77{ 77{
78 selector()->registerView( this ); 78 selector()->registerView( this );
79} 79}
80 80
81OFileViewInterface::~OFileViewInterface() 81OFileViewInterface::~OFileViewInterface()
82{} 82{}
83 83
84QString OFileViewInterface::name()const 84QString OFileViewInterface::name()const
85{ 85{
86 return m_name; 86 return m_name;
87} 87}
88 88
89void OFileViewInterface::setName( const QString& name ) 89void OFileViewInterface::setName( const QString& name )
90{ 90{
91 m_name = name; 91 m_name = name;
92} 92}
93 93
94OFileSelector* OFileViewInterface::selector()const 94OFileSelector* OFileViewInterface::selector()const
95{ 95{
96 return m_selector; 96 return m_selector;
97} 97}
98 98
99DocLnk OFileViewInterface::selectedDocument()const 99DocLnk OFileViewInterface::selectedDocument()const
100{ 100{
101 return DocLnk( selectedName() ); 101 return DocLnk( selectedName() );
102} 102}
103 103
104bool OFileViewInterface::showNew()const 104bool OFileViewInterface::showNew()const
105{ 105{
106 return selector()->showNew(); 106 return selector()->showNew();
107} 107}
108 108
109bool OFileViewInterface::showClose()const 109bool OFileViewInterface::showClose()const
110{ 110{
111 return selector()->showClose(); 111 return selector()->showClose();
112} 112}
113 113
114MimeTypes OFileViewInterface::mimeTypes()const 114MimeTypes OFileViewInterface::mimeTypes()const
115{ 115{
116 return selector()->mimeTypes(); 116 return selector()->mimeTypes();
117} 117}
118 118
119QStringList OFileViewInterface::currentMimeType()const 119QStringList OFileViewInterface::currentMimeType()const
120{ 120{
121 return selector()->currentMimeType(); 121 return selector()->currentMimeType();
122} 122}
123 123
124void OFileViewInterface::activate( const QString& ) 124void OFileViewInterface::activate( const QString& )
125{ 125{
126 // not implemented here 126 // not implemented here
127} 127}
128 128
129void OFileViewInterface::ok() 129void OFileViewInterface::ok()
130{ 130{
131 emit selector()->ok(); 131 emit selector()->ok();
132} 132}
133 133
134void OFileViewInterface::cancel() 134void OFileViewInterface::cancel()
135{ 135{
136 emit selector()->cancel(); 136 emit selector()->cancel();
137} 137}
138 138
139void OFileViewInterface::closeMe() 139void OFileViewInterface::closeMe()
140{ 140{
141 emit selector()->closeMe(); 141 emit selector()->closeMe();
142} 142}
143 143
144void OFileViewInterface::fileSelected( const QString& str) 144void OFileViewInterface::fileSelected( const QString& str)
145{ 145{
146 emit selector()->fileSelected( str); 146 emit selector()->fileSelected( str);
147} 147}
148 148
149void OFileViewInterface::fileSelected( const DocLnk& lnk) 149void OFileViewInterface::fileSelected( const DocLnk& lnk)
150{ 150{
151 emit selector()->fileSelected( lnk ); 151 emit selector()->fileSelected( lnk );
152} 152}
153 153
154void OFileViewInterface::setCurrentFileName( const QString& str ) 154void OFileViewInterface::setCurrentFileName( const QString& str )
155{ 155{
156 selector()->m_lneEdit->setText( str ); 156 selector()->m_lneEdit->setText( str );
157} 157}
158 158
159QString OFileViewInterface::currentFileName()const 159QString OFileViewInterface::currentFileName()const
160{ 160{
161 return selector()->m_lneEdit->text(); 161 return selector()->m_lneEdit->text();
162} 162}
163 163
164QString OFileViewInterface::startDirectory()const 164QString OFileViewInterface::startDirectory()const
165{ 165{
166 return selector()->m_startDir; 166 return selector()->m_startDir;
167} 167}
168 168
169bool OFileViewInterface::allItem( const QString& item )const 169bool OFileViewInterface::allItem( const QString& item )const
170{ 170{
171 return selector()->m_allList.contains( item ); 171 return selector()->m_allList.contains( item );
172} 172}
173 173
174 174
175ODocumentFileView::ODocumentFileView( OFileSelector* selector ) 175ODocumentFileView::ODocumentFileView( OFileSelector* selector )
176 :OFileViewInterface( selector ) 176 :OFileViewInterface( selector )
177{ 177{
178 m_selector = 0; 178 m_selector = 0;
179 setName( QObject::tr("Documents") ); 179 setName( QObject::tr("Documents") );
180} 180}
181 181
182ODocumentFileView::~ODocumentFileView() 182ODocumentFileView::~ODocumentFileView()
183{ 183{
184} 184}
185 185
186QString ODocumentFileView::selectedName()const 186QString ODocumentFileView::selectedName()const
187{ 187{
188 if (!m_selector) 188 if (!m_selector)
189 return QString::null; 189 return QString::null;
190 190
191 return m_selector->selectedDocument().file(); 191 return m_selector->selectedDocument().file();
192} 192}
193 193
194QString ODocumentFileView::selectedPath()const 194QString ODocumentFileView::selectedPath()const
195{ 195{
196 return QPEApplication::documentDir(); 196 return QPEApplication::documentDir();
197} 197}
198 198
199QString ODocumentFileView::directory()const 199QString ODocumentFileView::directory()const
200{ 200{
201 return selectedPath(); 201 return selectedPath();
202} 202}
203 203
204void ODocumentFileView::reread() 204void ODocumentFileView::reread()
205{ 205{
206 if (!m_selector) 206 if (!m_selector)
207 return; 207 return;
208 208
209 m_selector->setNewVisible( showNew() ); 209 m_selector->setNewVisible( showNew() );
210 m_selector->setCloseVisible( showClose() ); 210 m_selector->setCloseVisible( showClose() );
211 m_selector->filter = currentMimeType().join(";"); 211 m_selector->filter = currentMimeType().join(";");
212 m_selector->reread(); 212 m_selector->reread();
213} 213}
214 214
215int ODocumentFileView::fileCount()const 215int ODocumentFileView::fileCount()const
216{ 216{
217 if (!m_selector) 217 if (!m_selector)
218 return -1; 218 return -1;
219 219
220 return m_selector->fileCount(); 220 return m_selector->fileCount();
221} 221}
222 222
223DocLnk ODocumentFileView::selectedDocument()const 223DocLnk ODocumentFileView::selectedDocument()const
224{ 224{
225 if (!m_selector) 225 if (!m_selector)
226 return DocLnk(); 226 return DocLnk();
227 227
228 return m_selector->selectedDocument(); 228 return m_selector->selectedDocument();
229} 229}
230 230
231QWidget* ODocumentFileView::widget( QWidget* parent ) 231QWidget* ODocumentFileView::widget( QWidget* parent )
232{ 232{
233 if (!m_selector ) 233 if (!m_selector )
234 { 234 {
235 m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() ); 235 m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() );
236 QObject::connect(m_selector, SIGNAL(fileSelected(const DocLnk&) ), 236 QObject::connect(m_selector, SIGNAL(fileSelected(const DocLnk&) ),
237 selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) ); 237 selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) );
238 QObject::connect(m_selector, SIGNAL(closeMe() ), 238 QObject::connect(m_selector, SIGNAL(closeMe() ),
239 selector(), SIGNAL(closeMe() ) ); 239 selector(), SIGNAL(closeMe() ) );
240 QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk&) ), 240 QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk&) ),
241 selector(), SIGNAL(newSelected(const DocLnk&) ) ); 241 selector(), SIGNAL(newSelected(const DocLnk&) ) );
242 } 242 }
243 243
244 return m_selector; 244 return m_selector;
245} 245}
246 246
247/* 247/*
248 * This is the file system view used 248 * This is the file system view used
249 * we use a QListView + QListViewItems for it 249 * we use a QListView + QListViewItems for it
250 */ 250 */
251 251
252OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap, 252OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap,
253 const QString& path, const QString& date, 253 const QString& path, const QString& date,
254 const QString& size, const QString& dir, 254 const QString& size, const QString& dir,
255 bool isLocked, bool isDir ) 255 bool isLocked, bool isDir )
256 : QListViewItem( view ), m_dir(dir), m_isDir(isDir), m_locked(isLocked) 256 : QListViewItem( view ), m_dir(dir), m_isDir(isDir), m_locked(isLocked)
257{ 257{
258 setPixmap(0, pixmap ); 258 setPixmap(0, pixmap );
259 setText(1, path ); 259 setText(1, path );
260 setText(2, size ); 260 setText(2, size );
261 setText(3, date ); 261 setText(3, date );
262} 262}
263 263
264OFileSelectorItem::~OFileSelectorItem() 264OFileSelectorItem::~OFileSelectorItem()
265{ 265{
266} 266}
267 267
268bool OFileSelectorItem::isLocked()const 268bool OFileSelectorItem::isLocked()const
269{ 269{
270 return m_locked; 270 return m_locked;
271} 271}
272 272
273QString OFileSelectorItem::directory()const 273QString OFileSelectorItem::directory()const
274{ 274{
275 return m_dir; 275 return m_dir;
276} 276}
277 277
278bool OFileSelectorItem::isDir()const 278bool OFileSelectorItem::isDir()const
279{ 279{
280 return m_isDir; 280 return m_isDir;
281} 281}
282 282
283QString OFileSelectorItem::path()const 283QString OFileSelectorItem::path()const
284{ 284{
285 return text( 1 ); 285 return text( 1 );
286} 286}
287 287
288QString OFileSelectorItem::key( int id, bool )const 288QString OFileSelectorItem::key( int id, bool )const
289{ 289{
290 QString ke; 290 QString ke;
291 291
292 /* 292 /*
293 * id = 0 ||id == 1 : Sort By Name but Directories at Top 293 * id = 0 ||id == 1 : Sort By Name but Directories at Top
294 * id = 2 : Sort By Size: Prepend '0' to the key 294 * id = 2 : Sort By Size: Prepend '0' to the key
295 */ 295 */
296 if( id == 0 || id == 1 ) 296 if( id == 0 || id == 1 )
297 { // name 297 { // name
298 if( m_isDir ) 298 if( m_isDir )
299 { 299 {
300 ke.append("0" ); 300 ke.append("0" );
301 ke.append( text(1) ); 301 ke.append( text(1) );
302 } 302 }
303 else 303 else
304 { 304 {
305 ke.append("1" ); 305 ke.append("1" );
306 ke.append( text(1) ); 306 ke.append( text(1) );
307 } 307 }
308 return ke; 308 return ke;
309 }else if(id == 2) { 309 }else if(id == 2) {
310 return text(2).rightJustify(20, '0'); 310 return text(2).rightJustify(20, '0');
311 }else 311 }else
312 return text( id ); 312 return text( id );
313 313
314} 314}
315 315
316OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, OFileSelector* sel) 316OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, OFileSelector* sel)
317 :QWidget( parent ), m_sel( sel ) 317 :QWidget( parent ), m_sel( sel )
318{ 318{
319 m_all = false; 319 m_all = false;
320 QVBoxLayout* lay = new QVBoxLayout( this ); 320 QVBoxLayout* lay = new QVBoxLayout( this );
321 m_currentDir = startDir; 321 m_currentDir = startDir;
322 322
323 /* 323 /*
324 * now we add a special bar 324 * now we add a special bar
325 * One Button For Up 325 * One Button For Up
326 * Home 326 * Home
327 * Doc 327 * Doc
328 * And a dropdown menu with FileSystems 328 * And a dropdown menu with FileSystems
329 * FUTURE: one to change dir with lineedit 329 * FUTURE: one to change dir with lineedit
330 * Bookmarks 330 * Bookmarks
331 * Create Dir 331 * Create Dir
332 */ 332 */
333 QHBox* box = new QHBox(this ); 333 QHBox* box = new QHBox(this );
334 box->setBackgroundMode( PaletteButton ); 334 box->setBackgroundMode( PaletteButton );
335 box->setSpacing( 0 ); 335 box->setSpacing( 0 );
336 336
337 QToolButton *btn = new QToolButton( box ); 337 QToolButton *btn = new QToolButton( box );
338 btn->setIconSet( Resource::loadIconSet("up") ); 338 btn->setIconSet( Resource::loadIconSet("up") );
339 connect(btn, SIGNAL(clicked() ), 339 connect(btn, SIGNAL(clicked() ),
340 this, SLOT( cdUP() ) ); 340 this, SLOT( cdUP() ) );
341 341
342 btn = new QToolButton( box ); 342 btn = new QToolButton( box );
343 btn->setIconSet( Resource::loadIconSet("home") ); 343 btn->setIconSet( Resource::loadIconSet("home") );
344 connect(btn, SIGNAL(clicked() ), 344 connect(btn, SIGNAL(clicked() ),
345 this, SLOT( cdHome() ) ); 345 this, SLOT( cdHome() ) );
346 346
347 btn = new QToolButton( box ); 347 btn = new QToolButton( box );
348 btn->setIconSet( Resource::loadIconSet("DocsIcon") ); 348 btn->setIconSet( Resource::loadIconSet("DocsIcon") );
349 connect(btn, SIGNAL(clicked() ), 349 connect(btn, SIGNAL(clicked() ),
350 this, SLOT(cdDoc() ) ); 350 this, SLOT(cdDoc() ) );
351 351
352 m_btnNew = new QToolButton( box ); 352 m_btnNew = new QToolButton( box );
353 m_btnNew->setIconSet( Resource::loadIconSet("new") ); 353 m_btnNew->setIconSet( Resource::loadIconSet("new") );
354 connect(m_btnNew, SIGNAL(clicked() ), 354 connect(m_btnNew, SIGNAL(clicked() ),
355 this, SLOT(slotNew() ) ); 355 this, SLOT(slotNew() ) );
356 356
357 357
358 m_btnClose = new QToolButton( box ); 358 m_btnClose = new QToolButton( box );
359 m_btnClose->setIconSet( Resource::loadIconSet("close") ); 359 m_btnClose->setIconSet( Resource::loadIconSet("close") );
360 connect(m_btnClose, SIGNAL(clicked() ), 360 connect(m_btnClose, SIGNAL(clicked() ),
361 selector(), SIGNAL(closeMe() ) ); 361 selector(), SIGNAL(closeMe() ) );
362 362
363 btn = new QToolButton( box ); 363 btn = new QToolButton( box );
364 btn->setIconSet( Resource::loadIconSet("cardmon/pcmcia") ); 364 btn->setIconSet( Resource::loadIconSet("cardmon/pcmcia") );
365 365
366 m_fsButton = btn;
366 /* let's fill device parts */ 367 /* let's fill device parts */
367 QPopupMenu* pop = new QPopupMenu(this); 368 QPopupMenu* pop = new QPopupMenu(this);
368 connect(pop, SIGNAL( activated(int) ), 369 connect(pop, SIGNAL( activated(int) ),
369 this, SLOT(slotFSActivated(int) ) ); 370 this, SLOT(slotFSActivated(int) ) );
370 371
371 StorageInfo storage; 372 StorageInfo storage;
372 const QList<FileSystem> &fs = storage.fileSystems(); 373 const QList<FileSystem> &fs = storage.fileSystems();
373 QListIterator<FileSystem> it(fs); 374 QListIterator<FileSystem> it(fs);
374 for ( ; it.current(); ++it ) 375 for ( ; it.current(); ++it )
375 { 376 {
376 const QString disk = (*it)->name(); 377 const QString disk = (*it)->name();
377 const QString path = (*it)->path(); 378 const QString path = (*it)->path();
378 m_dev.insert( disk, path ); 379 m_dev.insert( disk, path );
379 pop->insertItem( disk ); 380 pop->insertItem( disk );
380 } 381 }
381 m_fsPop = pop; 382 m_fsPop = pop;
382 383
383 384 connect(btn,SIGNAL(pressed()),this,SLOT(slotFSpressed()));
384 btn->setPopup( pop );
385 385
386 lay->addWidget( box ); 386 lay->addWidget( box );
387 387
388 m_view = new QListView( this ); 388 m_view = new QListView( this );
389 389
390 m_view->installEventFilter(this); 390 m_view->installEventFilter(this);
391 391
392 QPEApplication::setStylusOperation( m_view->viewport(), 392 QPEApplication::setStylusOperation( m_view->viewport(),
393 QPEApplication::RightOnHold); 393 QPEApplication::RightOnHold);
394 m_view->addColumn(" " ); 394 m_view->addColumn(" " );
395 m_view->addColumn(tr("Name"), 135 ); 395 m_view->addColumn(tr("Name"), 135 );
396 m_view->addColumn(tr("Size"), -1 ); 396 m_view->addColumn(tr("Size"), -1 );
397 m_view->addColumn(tr("Date"), 60 ); 397 m_view->addColumn(tr("Date"), 60 );
398 m_view->addColumn(tr("Mime Type"), -1 ); 398 m_view->addColumn(tr("Mime Type"), -1 );
399 399
400 400
401 m_view->setSorting( 1 ); 401 m_view->setSorting( 1 );
402 m_view->setAllColumnsShowFocus( TRUE ); 402 m_view->setAllColumnsShowFocus( TRUE );
403 403
404 lay->addWidget( m_view, 1000 ); 404 lay->addWidget( m_view, 1000 );
405 connectSlots(); 405 connectSlots();
406} 406}
407 407
408void OFileViewFileListView::slotFSpressed()
409{
410 m_fsPop->exec(QPoint( QCursor::pos().x(), QCursor::pos().y()));
411 m_fsButton->setDown(false);
412}
413
408OFileViewFileListView::~OFileViewFileListView() 414OFileViewFileListView::~OFileViewFileListView()
409{ 415{
410} 416}
411 417
412void OFileViewFileListView::slotNew() 418void OFileViewFileListView::slotNew()
413{ 419{
414 DocLnk lnk; 420 DocLnk lnk;
415 emit selector()->newSelected( lnk ); 421 emit selector()->newSelected( lnk );
416} 422}
417 423
418OFileSelectorItem* OFileViewFileListView::currentItem()const 424OFileSelectorItem* OFileViewFileListView::currentItem()const
419{ 425{
420 QListViewItem* item = m_view->currentItem(); 426 QListViewItem* item = m_view->currentItem();
421 if (!item ) 427 if (!item )
422 return 0l; 428 return 0l;
423 429
424 return static_cast<OFileSelectorItem*>(item); 430 return static_cast<OFileSelectorItem*>(item);
425} 431}
426 432
427void OFileViewFileListView::reread( bool all ) 433void OFileViewFileListView::reread( bool all )
428{ 434{
429 m_view->clear(); 435 m_view->clear();
430 436
431 if (selector()->showClose() ) 437 if (selector()->showClose() )
432 m_btnClose->show(); 438 m_btnClose->show();
433 else 439 else
434 m_btnClose->hide(); 440 m_btnClose->hide();
435 441
436 if (selector()->showNew() ) 442 if (selector()->showNew() )
437 m_btnNew->show(); 443 m_btnNew->show();
438 else 444 else
439 m_btnNew->hide(); 445 m_btnNew->hide();
440 446
441 m_mimes = selector()->currentMimeType(); 447 m_mimes = selector()->currentMimeType();
442 m_all = all; 448 m_all = all;
443 449
444 QDir dir( m_currentDir ); 450 QDir dir( m_currentDir );
445 if (!dir.exists() ) 451 if (!dir.exists() )
446 return; 452 return;
447 453
448 dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed ); 454 dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed );
449 int filter; 455 int filter;
450 filter = QDir::Dirs; 456 filter = QDir::Dirs;
451 if ( selector()->mode() != OFileSelector::DIRECTORYSELECTOR ) 457 if ( selector()->mode() != OFileSelector::DIRECTORYSELECTOR )
452 filter = filter | QDir::Files | QDir::All; 458 filter = filter | QDir::Files | QDir::All;
453 459
454 if ( m_all ) 460 if ( m_all )
455 filter = filter | QDir::Hidden; 461 filter = filter | QDir::Hidden;
456 462
457 dir.setFilter( filter ); 463 dir.setFilter( filter );
458 464
459 // now go through all files 465 // now go through all files
460 const QFileInfoList *list = dir.entryInfoList(); 466 const QFileInfoList *list = dir.entryInfoList();
461 if (!list) 467 if (!list)
462 { 468 {
463 cdUP(); 469 cdUP();
464 return; 470 return;
465 } 471 }
466 472
467 QFileInfoListIterator it( *list ); 473 QFileInfoListIterator it( *list );
468 QFileInfo *fi; 474 QFileInfo *fi;
469 while( (fi=it.current() ) ) 475 while( (fi=it.current() ) )
470 { 476 {
471 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ) 477 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") )
472 { 478 {
473 ++it; 479 ++it;
474 continue; 480 continue;
475 } 481 }
476 482
477 /* 483 /*
478 * It is a symlink we try to resolve it now but don't let us attack by DOS 484 * It is a symlink we try to resolve it now but don't let us attack by DOS
479 * 485 *
480 */ 486 */
481 if( fi->isSymLink() ) 487 if( fi->isSymLink() )
482 { 488 {
483 QString file = createNewPath(fi->dirPath( true ),fi->readLink()); 489 QString file = createNewPath(fi->dirPath( true ),fi->readLink());
484 for( int i = 0; i<=4; i++) 490 for( int i = 0; i<=4; i++)
485 { // 5 tries to prevent dos 491 { // 5 tries to prevent dos
486 QFileInfo info( file ); 492 QFileInfo info( file );
487 if( !info.exists() ) 493 if( !info.exists() )
488 { 494 {
489 addSymlink( fi, TRUE ); 495 addSymlink( fi, TRUE );
490 break; 496 break;
491 } 497 }
492 else if( info.isDir() ) 498 else if( info.isDir() )
493 { 499 {
494 addDir( fi, TRUE ); 500 addDir( fi, TRUE );
495 break; 501 break;
496 } 502 }
497 else if( info.isFile() ) 503 else if( info.isFile() )
498 { 504 {
499 addFile( fi, TRUE ); 505 addFile( fi, TRUE );
500 break; 506 break;
501 } 507 }
502 else if( info.isSymLink() ) 508 else if( info.isSymLink() )
503 { 509 {
504 file = createNewPath(info.dirPath(true ),info.readLink()); 510 file = createNewPath(info.dirPath(true ),info.readLink());
505 break; 511 break;
506 } 512 }
507 else if( i == 4) 513 else if( i == 4)
508 { // couldn't resolve symlink add it as symlink 514 { // couldn't resolve symlink add it as symlink
509 addSymlink( fi ); 515 addSymlink( fi );
510 } 516 }
511 } // off for loop for symlink resolving 517 } // off for loop for symlink resolving
512 } 518 }
513 else if( fi->isDir() ) 519 else if( fi->isDir() )
514 addDir( fi ); 520 addDir( fi );
515 else if( fi->isFile() ) 521 else if( fi->isFile() )
516 addFile( fi ); 522 addFile( fi );
517 523
518 ++it; 524 ++it;
519 } // of while loop 525 } // of while loop
520 m_view->sort(); 526 m_view->sort();
521 527
522} 528}
523int OFileViewFileListView::fileCount()const 529int OFileViewFileListView::fileCount()const
524{ 530{
525 return m_view->childCount(); 531 return m_view->childCount();
526} 532}
527 533
528QString OFileViewFileListView::currentDir()const 534QString OFileViewFileListView::currentDir()const
529{ 535{
530 return m_currentDir; 536 return m_currentDir;
531} 537}
532 538
533OFileSelector* OFileViewFileListView::selector() 539OFileSelector* OFileViewFileListView::selector()
534{ 540{
535 return m_sel; 541 return m_sel;
536} 542}
537 543
538bool OFileViewFileListView::eventFilter (QObject *, QEvent *e) 544bool OFileViewFileListView::eventFilter (QObject *, QEvent *e)
539{ 545{
540 if ( e->type() == QEvent::KeyPress ) 546 if ( e->type() == QEvent::KeyPress )
541 { 547 {
542 QKeyEvent *k = (QKeyEvent *)e; 548 QKeyEvent *k = (QKeyEvent *)e;
543 if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) 549 if ( (k->key()==Key_Enter) || (k->key()==Key_Return))
544 { 550 {
545 slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); 551 slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0);
546 return true; 552 return true;
547 } 553 }
548 } 554 }
549 return false; 555 return false;
550} 556}
551 557
552void OFileViewFileListView::connectSlots() 558void OFileViewFileListView::connectSlots()
553{ 559{
554 connect(m_view, SIGNAL(clicked(QListViewItem*) ), 560 connect(m_view, SIGNAL(clicked(QListViewItem*) ),
555 this, SLOT(slotCurrentChanged(QListViewItem*) ) ); 561 this, SLOT(slotCurrentChanged(QListViewItem*) ) );
556 connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ), 562 connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ),
557 this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) ); 563 this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) );
558} 564}
559 565
560void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) 566void OFileViewFileListView::slotCurrentChanged( QListViewItem* item)
561{ 567{
562 if (!item) 568 if (!item)
563 return; 569 return;
564#if 0 570#if 0
565 571
566 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); 572 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item);
567 573
568 if (!sel->isDir() ) 574 if (!sel->isDir() )
569 { 575 {
570 selector()->m_lneEdit->setText( sel->text(1) ); 576 selector()->m_lneEdit->setText( sel->text(1) );
571 // if in fileselector mode we will emit selected 577 // if in fileselector mode we will emit selected
572 if ( selector()->mode() == OFileSelector::FileSelector ) 578 if ( selector()->mode() == OFileSelector::FileSelector )
573 { 579 {
574 odebug << "slot Current Changed" << oendl; 580 odebug << "slot Current Changed" << oendl;
575 QStringList str = QStringList::split("->", sel->text(1) ); 581 QStringList str = QStringList::split("->", sel->text(1) );
576 QString path = createNewPath(sel->directory(),str[0].stripWhiteSpace()); 582 QString path = createNewPath(sel->directory(),str[0].stripWhiteSpace());
577 emit selector()->fileSelected( path ); 583 emit selector()->fileSelected( path );
578 DocLnk lnk( path ); 584 DocLnk lnk( path );
579 emit selector()->fileSelected( lnk ); 585 emit selector()->fileSelected( lnk );
580 } 586 }
581 } 587 }
582#endif 588#endif
583} 589}
584 590
585void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) 591void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int )
586{ 592{
587 if (!item || ( button != Qt::LeftButton) ) 593 if (!item || ( button != Qt::LeftButton) )
588 return; 594 return;
589 595
590 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); 596 OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item);
591 if (!sel->isLocked() ) 597 if (!sel->isLocked() )
592 { 598 {
593 QStringList str = QStringList::split("->", sel->text(1) ); 599 QStringList str = QStringList::split("->", sel->text(1) );
594 if (sel->isDir() ) 600 if (sel->isDir() )
595 { 601 {
596 m_currentDir = createNewPath(sel->directory(),str[0].stripWhiteSpace()); 602 m_currentDir = createNewPath(sel->directory(),str[0].stripWhiteSpace());
597 emit selector()->dirSelected( m_currentDir ); 603 emit selector()->dirSelected( m_currentDir );
598 reread( m_all ); 604 reread( m_all );
599 } 605 }
600 else 606 else
601 { // file 607 { // file
602 odebug << "slot Clicked" << oendl; 608 odebug << "slot Clicked" << oendl;
603 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); 609 selector()->m_lneEdit->setText( str[0].stripWhiteSpace() );
604 QString path = createNewPath(sel->directory(),str[0].stripWhiteSpace()); 610 QString path = createNewPath(sel->directory(),str[0].stripWhiteSpace());
605 emit selector()->fileSelected( path ); 611 emit selector()->fileSelected( path );
606 DocLnk lnk( path ); 612 DocLnk lnk( path );
607 emit selector()->fileSelected( lnk ); 613 emit selector()->fileSelected( lnk );
608 } 614 }
609 } // not locked 615 } // not locked
610} 616}
611 617
612void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) 618void OFileViewFileListView::addFile( QFileInfo* info, bool symlink )
613{ 619{
614 MimeType type( info->absFilePath() ); 620 MimeType type( info->absFilePath() );
615 if (!compliesMime( type.id() ) ) 621 if (!compliesMime( type.id() ) )
616 return; 622 return;
617 623
618 QPixmap pix = type.pixmap(); 624 QPixmap pix = type.pixmap();
619 QString dir, name; bool locked; 625 QString dir, name; bool locked;
620 if ( pix.isNull() ) 626 if ( pix.isNull() )
621 { 627 {
622 QWMatrix matrix; 628 QWMatrix matrix;
623 QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); 629 QPixmap pixer(Resource::loadPixmap("UnknownDocument") );
624 matrix.scale( .4, .4 ); 630 matrix.scale( .4, .4 );
625 pix = pixer.xForm( matrix ); 631 pix = pixer.xForm( matrix );
626 } 632 }
627 dir = info->dirPath( true ); 633 dir = info->dirPath( true );
628 locked = false; 634 locked = false;
629 if ( symlink ) 635 if ( symlink )
630 name = info->fileName() + " -> " + createNewPath(info->dirPath(),info->readLink()); 636 name = info->fileName() + " -> " + createNewPath(info->dirPath(),info->readLink());
631 else 637 else
632 { 638 {
633 name = info->fileName(); 639 name = info->fileName();
634 if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || 640 if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) ||
635 ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) 641 ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) )
636 { 642 {
637 locked = true; pix = Resource::loadPixmap("locked"); 643 locked = true; pix = Resource::loadPixmap("locked");
638 } 644 }
639 } 645 }
640 (void)new OFileSelectorItem( m_view, pix, name, 646 (void)new OFileSelectorItem( m_view, pix, name,
641 info->lastModified().toString(), QString::number( info->size() ), 647 info->lastModified().toString(), QString::number( info->size() ),
642 dir, locked ); 648 dir, locked );
643} 649}
644 650
645void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) 651void OFileViewFileListView::addDir( QFileInfo* info, bool symlink )
646{ 652{
647 bool locked = false; QString name; QPixmap pix; 653 bool locked = false; QString name; QPixmap pix;
648 654
649 if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || 655 if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) ||
650 ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) 656 ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) )
651 { 657 {
652 locked = true; 658 locked = true;
653 if ( symlink ) 659 if ( symlink )
654 pix = Resource::loadPixmap( "opie/symlink" ); 660 pix = Resource::loadPixmap( "opie/symlink" );
655 else 661 else
656 pix = Resource::loadPixmap( "lockedfolder" ); 662 pix = Resource::loadPixmap( "lockedfolder" );
657 } 663 }
658 else 664 else
659 pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder"); 665 pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder");
660 666
661 name = symlink ? info->fileName() + " -> " + createNewPath(info->dirPath(true),info->readLink()) : 667 name = symlink ? info->fileName() + " -> " + createNewPath(info->dirPath(true),info->readLink()) :
662 info->fileName(); 668 info->fileName();
663 669
664 (void)new OFileSelectorItem( m_view, pix, name, 670 (void)new OFileSelectorItem( m_view, pix, name,
665 info->lastModified().toString(), 671 info->lastModified().toString(),
666 QString::number( info->size() ), 672 QString::number( info->size() ),
667 info->dirPath( true ), locked, true ); 673 info->dirPath( true ), locked, true );
668 674
669 675
670} 676}
671 677
672void OFileViewFileListView::addSymlink( QFileInfo* , bool ) 678void OFileViewFileListView::addSymlink( QFileInfo* , bool )
673{ 679{
674} 680}
675 681
676void OFileViewFileListView::cdUP() 682void OFileViewFileListView::cdUP()
677{ 683{
678 QDir dir( m_currentDir ); 684 QDir dir( m_currentDir );
679 dir.cdUp(); 685 dir.cdUp();
680 686
681 if (!dir.exists() ) 687 if (!dir.exists() )
682 m_currentDir = "/"; 688 m_currentDir = "/";
683 else 689 else
684 m_currentDir = dir.absPath(); 690 m_currentDir = dir.absPath();
685 691
686 emit selector()->dirSelected( m_currentDir ); 692 emit selector()->dirSelected( m_currentDir );
687 reread( m_all ); 693 reread( m_all );
688} 694}
689 695
690void OFileViewFileListView::cdHome() 696void OFileViewFileListView::cdHome()
691{ 697{
692 m_currentDir = QDir::homeDirPath(); 698 m_currentDir = QDir::homeDirPath();
693 emit selector()->dirSelected( m_currentDir ); 699 emit selector()->dirSelected( m_currentDir );
694 reread( m_all ); 700 reread( m_all );
695} 701}
696 702
697void OFileViewFileListView::cdDoc() 703void OFileViewFileListView::cdDoc()
698{ 704{
699 m_currentDir = QPEApplication::documentDir(); 705 m_currentDir = QPEApplication::documentDir();
700 emit selector()->dirSelected( m_currentDir ); 706 emit selector()->dirSelected( m_currentDir );
701 reread( m_all ); 707 reread( m_all );
702} 708}
703 709
704void OFileViewFileListView::changeDir( const QString& dir ) 710void OFileViewFileListView::changeDir( const QString& dir )
705{ 711{
706 m_currentDir = dir; 712 m_currentDir = dir;
707 emit selector()->dirSelected( m_currentDir ); 713 emit selector()->dirSelected( m_currentDir );
708 reread( m_all ); 714 reread( m_all );
709} 715}
710 716
711void OFileViewFileListView::slotFSActivated( int id ) 717void OFileViewFileListView::slotFSActivated( int id )
712{ 718{
713 changeDir ( m_dev[m_fsPop->text(id)] ); 719 changeDir ( m_dev[m_fsPop->text(id)] );
714} 720}
715 721
716/* check if the mimetype in mime 722/* check if the mimetype in mime
717 * complies with the one which is current 723 * complies with the one which is current
718 */ 724 */
719/* 725/*
720 * We've the mimetype of the file 726 * We've the mimetype of the file
721 * We need to get the stringlist of the current mimetype 727 * We need to get the stringlist of the current mimetype
722 * 728 *
723 * mime = image@slashjpeg 729 * mime = image@slashjpeg
724 * QStringList = 'image@slash*' 730 * QStringList = 'image@slash*'
725 * or QStringList = image/jpeg;image/png;application/x-ogg 731 * or QStringList = image/jpeg;image/png;application/x-ogg
726 * or QStringList = application/x-ogg;image@slash*; 732 * or QStringList = application/x-ogg;image@slash*;
727 * with all these mime filters it should get acceptes 733 * with all these mime filters it should get acceptes
728 * to do so we need to look if mime is contained inside 734 * to do so we need to look if mime is contained inside
729 * the stringlist 735 * the stringlist
730 * if it's contained return true 736 * if it's contained return true
731 * if not ( I'm no RegExp expert at all ) we'll look if a '@slash*' 737 * if not ( I'm no RegExp expert at all ) we'll look if a '@slash*'
732 * is contained in the mimefilter and then we will 738 * is contained in the mimefilter and then we will
733 * look if both are equal until the '/' 739 * look if both are equal until the '/'
734 */ 740 */
735 741
736bool OFileViewFileListView::compliesMime( const QString& str) 742bool OFileViewFileListView::compliesMime( const QString& str)
737{ 743{
738 if (str.isEmpty() || m_mimes.isEmpty() || str.stripWhiteSpace().isEmpty() ) 744 if (str.isEmpty() || m_mimes.isEmpty() || str.stripWhiteSpace().isEmpty() )
739 return true; 745 return true;
740 746
741 for (QStringList::Iterator it = m_mimes.begin(); it != m_mimes.end(); ++it ) 747 for (QStringList::Iterator it = m_mimes.begin(); it != m_mimes.end(); ++it )
742 { 748 {
743 QRegExp reg( (*it) ); 749 QRegExp reg( (*it) );
744 reg.setWildcard( true ); 750 reg.setWildcard( true );
745 if ( str.find( reg ) != -1 ) 751 if ( str.find( reg ) != -1 )
746 return true; 752 return true;
747 753
748 } 754 }
749 return false; 755 return false;
750} 756}
751/* 757/*
752 * The listView giving access to the file system! 758 * The listView giving access to the file system!
753 */ 759 */
754 760
755class OFileViewFileSystem : public OFileViewInterface 761class OFileViewFileSystem : public OFileViewInterface
756{ 762{
757public: 763public:
758 OFileViewFileSystem( OFileSelector* ); 764 OFileViewFileSystem( OFileSelector* );
759 ~OFileViewFileSystem(); 765 ~OFileViewFileSystem();
760 766
761 QString selectedName() const; 767 QString selectedName() const;
762 QString selectedPath() const; 768 QString selectedPath() const;
763 769
764 QString directory()const; 770 QString directory()const;
765 void reread(); 771 void reread();
766 int fileCount()const; 772 int fileCount()const;
767 773
768 QWidget* widget( QWidget* parent ); 774 QWidget* widget( QWidget* parent );
769 void activate( const QString& ); 775 void activate( const QString& );
770private: 776private:
771 OFileViewFileListView* m_view; 777 OFileViewFileListView* m_view;
772 bool m_all : 1; 778 bool m_all : 1;
773}; 779};
774 780
775OFileViewFileSystem::OFileViewFileSystem( OFileSelector* sel) 781OFileViewFileSystem::OFileViewFileSystem( OFileSelector* sel)
776 : OFileViewInterface( sel ) 782 : OFileViewInterface( sel )
777{ 783{
778 m_view = 0; 784 m_view = 0;
779 m_all = false; 785 m_all = false;
780} 786}
781 787
782OFileViewFileSystem::~OFileViewFileSystem() 788OFileViewFileSystem::~OFileViewFileSystem()
783{ 789{
784} 790}
785 791
786QString OFileViewFileSystem::selectedName()const 792QString OFileViewFileSystem::selectedName()const
787{ 793{
788 if (!m_view ) 794 if (!m_view )
789 return QString::null; 795 return QString::null;
790 796
791 QString cFN=currentFileName(); 797 QString cFN=currentFileName();
diff --git a/libopie2/opieui/fileselector/ofileselector_p.h b/libopie2/opieui/fileselector/ofileselector_p.h
index 15db916..94216a0 100644
--- a/libopie2/opieui/fileselector/ofileselector_p.h
+++ b/libopie2/opieui/fileselector/ofileselector_p.h
@@ -1,194 +1,196 @@
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 QString m_dir; 140 QString m_dir;
141 bool m_isDir : 1; 141 bool m_isDir : 1;
142 bool m_locked : 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 void slotFSpressed();
167 168
168protected: 169protected:
169 OFileSelector* selector(); 170 OFileSelector* selector();
170 171
171private: 172private:
172 QMap<QString, QString> m_dev; 173 QMap<QString, QString> m_dev;
173 bool m_all : 1; 174 bool m_all : 1;
174 OFileSelector* m_sel; 175 OFileSelector* m_sel;
175 QPopupMenu* m_fsPop; 176 QPopupMenu* m_fsPop;
176 bool compliesMime( const QString& ); 177 bool compliesMime( const QString& );
177 QStringList m_mimes; // used in compy mime 178 QStringList m_mimes; // used in compy mime
178 QString m_currentDir; 179 QString m_currentDir;
179 QToolButton *m_btnNew, *m_btnClose; 180 QToolButton *m_btnNew, *m_btnClose;
181 QToolButton *m_fsButton;
180 void connectSlots(); 182 void connectSlots();
181 void addFile( QFileInfo* info, bool symlink = FALSE ); 183 void addFile( QFileInfo* info, bool symlink = FALSE );
182 void addDir ( QFileInfo* info, bool symlink = FALSE ); 184 void addDir ( QFileInfo* info, bool symlink = FALSE );
183 void addSymlink( QFileInfo* info, bool = FALSE ); 185 void addSymlink( QFileInfo* info, bool = FALSE );
184 186
185 187
186private: 188private:
187 QListView* m_view; 189 QListView* m_view;
188}; 190};
189 191
190} 192}
191} 193}
192} 194}
193 195
194#endif 196#endif