summaryrefslogtreecommitdiff
authorzecke <zecke>2002-05-02 07:15:29 (UTC)
committer zecke <zecke>2002-05-02 07:15:29 (UTC)
commit9a3f2b67dab939993a56db83c1d473fc7ae6d57a (patch) (unidiff)
treeb35b8d840400996e270dace0a11648bf361ed31e
parenta52fd4b1995e34963888397587aa2592ea858da6 (diff)
downloadopie-9a3f2b67dab939993a56db83c1d473fc7ae6d57a.zip
opie-9a3f2b67dab939993a56db83c1d473fc7ae6d57a.tar.gz
opie-9a3f2b67dab939993a56db83c1d473fc7ae6d57a.tar.bz2
Here is the rewrite of ofileselector
Mostly the layout was fixed and it should be much easier to understand whats going on It also got more functionality with less code Next is MultipleSelections, Open Dir mode save dir mode and installingViews
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie/ofileselector.cc1529
-rw-r--r--libopie/ofileselector.h39
2 files changed, 756 insertions, 812 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index 9cf3f36..d780da9 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -1,53 +1,25 @@
1/*
2               =. This file is part of the OPIE Project
3             .=l. Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
4           .>+-=
5 _;:,     .>    :=|. This library is free software; you can
6.> <`_,   >  .   <= redistribute it and/or modify it under
7:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; either version 2 of the License,
10     ._= =}       : or (at your option) any later version.
11    .%`+i>       _;_.
12    .i_,=:_.      -<s. This library is distributed in the hope that
13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
14    : ..    .:,     . . . without even the implied warranty of
15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
17..}^=.=       =       ; Library General Public License for more
18++=   -.     .`     .: details.
19 :     =  ...= . :.=-
20 -.   .:....=;==+<; You should have received a copy of the GNU
21  -_. . .   )=.  = Library General Public License along with
22    --        :-=` this library; see the file COPYING.LIB.
23 If not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA.
26 1
27*/
28 2
29#include <qnamespace.h> 3#include <qcheckbox.h>
30#include <qpushbutton.h>
31#include <qcombobox.h> 4#include <qcombobox.h>
32#include <qhbox.h> 5#include <qheader.h>
33#include <qvbox.h> 6#include <qlabel.h>
7#include <qabstractlayout.h>
34#include <qlayout.h> 8#include <qlayout.h>
35#include <qwidgetstack.h>
36#include <qlineedit.h> 9#include <qlineedit.h>
37#include <qcheckbox.h> 10#include <qlistview.h>
38#include <qlabel.h>
39#include <qheader.h>
40#include <qdir.h>
41#include <qpainter.h>
42#include <qaction.h>
43#include <qpopupmenu.h>
44#include <qcursor.h>
45#include <qstringlist.h>
46#include <qmessagebox.h> 11#include <qmessagebox.h>
12#include <qpushbutton.h>
13#include <qwidgetstack.h>
14#include <qpopupmenu.h>
15#include <qdir.h>
16#include <qfile.h>
17#include <qfileinfo.h>
18#include <qtimer.h>
47 19
48#include <qpe/qpeapplication.h> 20#include <qpe/qpeapplication.h>
49#include <qpe/fileselector.h>
50#include <qpe/applnk.h> 21#include <qpe/applnk.h>
22#include <qpe/fileselector.h>
51#include <qpe/global.h> 23#include <qpe/global.h>
52#include <qpe/mimetype.h> 24#include <qpe/mimetype.h>
53#include <qpe/resource.h> 25#include <qpe/resource.h>
@@ -58,14 +30,13 @@
58#include <sys/stat.h> 30#include <sys/stat.h>
59 31
60#include "ofileselector.h" 32#include "ofileselector.h"
61//#include "ofileview.h" 33
62 34
63QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0; 35QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0;
64 36
65namespace { 37namespace {
66
67 int indexByString( const QComboBox *box, const QString &str ){ 38 int indexByString( const QComboBox *box, const QString &str ){
68 int index= -1; 39 int index= 0;
69 for(int i= 0; i < box->count(); i++ ){ 40 for(int i= 0; i < box->count(); i++ ){
70 if( str == box->text(i ) ){ 41 if( str == box->text(i ) ){
71 index= i; 42 index= i;
@@ -125,609 +96,455 @@ namespace {
125}; 96};
126 97
127 98
128OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName, 99OFileSelector::OFileSelector( QWidget *wid, int mode, int selector,
129 const QString &fileName, const QStringList &mimetypes ) : QWidget( wid ) 100 const QString &dirName,
101 const QString &fileName,
102 const QStringList &mimeTypes )
103 : QWidget( wid, "OFileSelector")
130{ 104{
131 if(wid!=0) 105 m_mimetypes = mimeTypes;
132 resize(wid->width(),wid->height()); 106 initVars();
107 m_mode = mode;
133 m_selector = selector; 108 m_selector = selector;
134 m_currentDir = dirName; 109 m_currentDir = dirName;
135 m_name = fileName;
136 m_mimetypes = mimetypes;
137
138 if( mimetypes.isEmpty() )
139 m_autoMime = true;
140
141 qWarning("OFileSelector mimetypes %s", mimetypes.join(" ").latin1() );
142 m_mode = mode;
143 m_shTool = true;
144 m_shPerm = true;
145 m_shLne = true;
146 m_shChooser = true;
147 m_shYesNo = true;
148
149 // for FILESELECTOR only view is interesting
150 m_location = 0;
151 m_homeButton = 0;
152 m_docButton = 0;
153 m_hideButton = 0;
154 m_ok = 0;
155 m_cancel = 0;
156 m_reread = 0;
157 m_up = 0;
158 m_View = 0;
159 m_select = 0;
160 m_stack = 0;
161
162 m_select = 0;
163 m_stack = 0;
164 m_lay = 0;
165 m_boxToolbar = 0;
166 m_boxOk = 0;
167 m_edit = 0;
168
169 m_fnLabel = 0;
170 m_checkPerm = 0;
171 m_mimeCheck = 0;
172 m_viewCheck = 0;
173
174 m_pseudo = 0;
175 m_pseudoLayout = 0;
176
177 m_dir = true;
178 m_files = true;
179 m_custom = 0;
180 m_showPopup = true;
181
182 if(m_pixmaps == 0 ) // init the pixmaps
183 initPics();
184
185 m_lay = new QVBoxLayout(this);
186 init(); 110 init();
187 m_edit->setText( fileName ); 111QTimer::singleShot(6*1000, this, SLOT( slotTest() ) );
188} 112}
189 113
190void OFileSelector::initPics() 114OFileSelector::OFileSelector(const QString &mimeFilter, QWidget *parent,
115 const char *name, bool newVisible = TRUE,
116 bool closeVisible = FALSE )
117 : QWidget( parent, name )
191{ 118{
192 qWarning("init pics" ); 119 m_mimetypes = QStringList::split(";", mimeFilter );
193 m_pixmaps = new QMap<QString,QPixmap>; 120 initVars();
194 QPixmap pm = Resource::loadPixmap( "folder" ); 121 m_currentDir = QPEApplication::documentDir();
195 QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); 122 m_mode = OPEN;
196 QPainter painter( &pm ); 123 m_selector = NORMAL;
197 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); 124 m_shClose = closeVisible;
198 pm.setMask( pm.createHeuristicMask( FALSE ) ); 125 m_shNew = newVisible;
199 m_pixmaps->insert("dirsymlink", pm ); 126 m_shLne = false;
127 m_shPerm = false;
128 m_shYesNo = false;
129 init();
200 130
201 QPixmap pm2 = Resource::loadPixmap( "lockedfolder" );
202 QPainter pen(&pm2 );
203 pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk );
204 pm2.setMask( pm2.createHeuristicMask( FALSE ) );
205 m_pixmaps->insert("symlinkedlocked", pm2 );
206 131
207} 132}
208 133
209// let's initialize the gui 134OFileSelector::~OFileSelector()
210/**
211 --------------------
212 | cmbBox Button |
213 --------------------
214 | FileSlector |
215 | or |
216 | OSelector |
217 | |
218 | |
219 ____________________
220 | LineEdit |
221 ____________________
222 | Permission Bar |
223 ____________________
224 | ViewChoose |
225 ____________________
226 | Save Cancel|
227 ____________________
228 */
229void OFileSelector::delItems()
230{ 135{
231 QLayoutIterator it = m_lay->iterator(); 136
232 while ( it.current() != 0 ){
233 it.deleteCurrent();
234 }
235} 137}
236 138
237void OFileSelector::init() 139void OFileSelector::setNewVisible( bool visible )
238{ 140{
239// qDebug("init"); 141 m_shNew = visible;
240 m_stack = new QWidgetStack(this, "wstack" );
241 if( m_selector == NORMAL ){ 142 if( m_selector == NORMAL ){
242 QString currMime; 143 delete m_select;
243 if( m_mimeCheck != 0 ) 144 // we need to initialize but keep the selected mimetype
244 currMime = m_mimeCheck->currentText(); 145 QString mime = m_mimeCheck == 0 ? QString::null : m_mimeCheck->currentText() ;
245 updateMimes(); 146 m_select = new FileSelector( m_autoMime ? mime : m_mimetypes.join(";") ,
246 m_select = new FileSelector( currMime == "All" ? QString::null : currMime , 147 m_stack, "fileselector",
247 m_stack, "fileselector", FALSE, FALSE ); 148 m_shNew, m_shClose);
248 m_stack->addWidget(m_select, NORMAL );
249 m_lay->addWidget(m_stack );
250 m_stack->raiseWidget(NORMAL );
251 connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), 149 connect(m_select, SIGNAL(fileSelected( const DocLnk &) ),
252 this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); 150 this, SLOT(slotFileBridgeSelected(const DocLnk &) ) );
253 m_pseudoLayout = 0l; 151 //connect to close me and other signals as well
254 152 m_stack->addWidget( m_select, NORMAL );
255 } else { 153 } else {
256 initializeListView(); 154 m_new->show();
257 } 155 }
258 if(m_shLne ){
259 initializeName();
260 } 156 }
261 if(m_shPerm ){ 157void OFileSelector::setCloseVisible( bool visible )
262 m_checkPerm = new QCheckBox(tr("Set Permission"), this, "Permission" ); 158{
263 m_checkPerm->setChecked( false ); 159 m_shClose = visible;
264 m_lay->addWidget(m_checkPerm ); 160 if( m_selector == NORMAL ){
161 setNewVisible( m_shNew ); // yeah baby
162 }else{
163 m_close->show();
164 }
165}
166void OFileSelector::reread()
167{
168 if( m_selector == NORMAL ){
169 setNewVisible( m_shNew ); // make it a initializeSelector
170 }else if ( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
171 reparse();
172 //}else{
173 //;
174 }
265 } 175 }
266 if( m_shChooser )
267 initializeChooser();
268 if(m_shYesNo )
269 initializeYes();
270
271 // m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, requestedMimeTypesList.first()) );
272 // reparse();
273 176
177const DocLnk *OFileSelector::selected()
178{
179 if( m_selector == NORMAL ){
180 return m_select->selected();
181 }else{
182 DocLnk *lnk = new DocLnk(selectedDocument() );
183 return lnk;
184 }
274} 185}
275 186
276void OFileSelector::setYesCancelVisible( bool show ) 187void OFileSelector::setYesCancelVisible( bool show )
277{ 188{
278 if ( show == m_shYesNo ) 189 initializeYes(); // FIXME if YesCancel is not shown we will initialize it to hide it :(
279 return;
280 m_shYesNo = show; 190 m_shYesNo = show;
281 if( !show ){ 191 if( m_shYesNo )
282 delete m_ok; 192 m_boxOk->show();
283 delete m_cancel; 193 else
284 m_ok = 0; 194 m_boxOk->hide();
285 m_cancel = 0;
286 // delete m_boxOk; all ready deleted in delItems
287 }
288 updateLay(); // recreate it and save the other states
289}
290 195
196}
291void OFileSelector::setToolbarVisible( bool show ) 197void OFileSelector::setToolbarVisible( bool show )
292{ 198{
293 if ( m_shTool == show ) 199 m_shTool = show;
294 return; 200 initializeListView(); // FIXME see above waste of memory
295 if(!m_shTool ){ 201 if(!m_shTool ){
296 delete m_boxToolbar; 202 m_location->hide();
297 delete m_homeButton; 203 m_up->hide();
298 delete m_docButton; 204 m_homeButton->hide();
299 delete m_location; 205 m_docButton->hide();
300 delete m_up; 206 }else{
301 m_boxToolbar = 0; 207 m_location->show();
302 m_homeButton = 0; 208 m_up->show();
303 m_docButton = 0; 209 m_homeButton->show();
304 m_location = 0; 210 m_docButton->show();
305 m_up = 0; 211 }
306 };
307 updateLay();// overkill fix it
308} 212}
309
310void OFileSelector::setPermissionBarVisible( bool show ) 213void OFileSelector::setPermissionBarVisible( bool show )
311{ 214{
312 if( show == m_shPerm )
313 return;
314
315 m_shPerm = show; 215 m_shPerm = show;
316 216 initializePerm();
317 updateLay(); 217 if( m_shPerm )
218 m_checkPerm->show();
219 else
220 m_checkPerm->hide();
318} 221}
319
320void OFileSelector::setLineEditVisible( bool show ) 222void OFileSelector::setLineEditVisible( bool show )
321{ 223{
322 if( show == m_shLne ) 224 if( show ){
323 return; 225 initializeName();
324 226 m_boxName->show();
325 m_shLne = show; 227 }else{
326 if( !show ){ 228 if( m_shLne && m_boxName != 0 ){ // check if we showed before this is the way to go
327 delete m_edit; 229 m_boxName->hide();
328 delete m_fnLabel;
329 m_edit = 0;
330 m_fnLabel = 0;
331 //delete m_boxName; will be deleted
332 } 230 }
333 updateLay(); 231 }
232 m_shLne = show;
334} 233}
335 234
336void OFileSelector::setChooserVisible( bool show ) 235void OFileSelector::setChooserVisible( bool show )
337{ 236{
338 if( show = m_shChooser )
339 return;
340 m_shChooser = show; 237 m_shChooser = show;
341 if( !show ){ 238 initializeChooser();
342 delete m_mimeCheck; 239 if( m_shChooser ){
343 delete m_viewCheck; 240 m_boxView->hide();
344 m_mimeCheck = 0; 241 }else{
345 m_viewCheck = 0; 242 m_boxView->show();
346 } 243 }
347 updateLay();
348} 244}
349 245
350QCheckBox* OFileSelector::permissionCheckbox( ) 246QCheckBox* OFileSelector::permissionCheckbox( )
351{ 247{
248 if( m_selector == NORMAL )
249 return 0l;
250 else
352 return m_checkPerm; 251 return m_checkPerm;
353} 252}
253bool OFileSelector::setPermission()const
254{
255 return m_checkPerm == 0 ? false : m_checkPerm->isChecked();
256}
257void OFileSelector::setPermissionChecked( bool check )
258{
259 if( m_checkPerm )
260 m_checkPerm->setChecked( check );
261}
354 262
263void OFileSelector::setMode(int mode) // FIXME do direct raising
264{
265 m_mode = mode;
266 if( m_selector == NORMAL )
267 return;
268}
269void OFileSelector::setShowDirs(bool )
270{
271 m_dir = true;
272 reparse();
273}
355void OFileSelector::setCaseSensetive( bool caSe ) 274void OFileSelector::setCaseSensetive( bool caSe )
356{ 275{
357 m_case = caSe; 276 m_case = caSe;
358 reparse(); 277 reparse();
359} 278}
360 279void OFileSelector::setShowFiles(bool show )
361void OFileSelector::setShowFiles(bool files ){ 280{
362 m_files = files; 281 m_files = show;
363 reparse(); 282 reparse();
364} 283}
365 284///
366void OFileSelector::setPopupMenu(QPopupMenu *pop ) 285bool OFileSelector::cd(const QString &path )
367{ 286{
368 //delete oldpopup; 287 m_currentDir = path;
369 m_custom = pop; 288 reparse();
289 return true;
370} 290}
371 291void OFileSelector::setSelector(int mode )
372bool OFileSelector::setPermission( ) const
373{ 292{
374 if( m_checkPerm == 0 ) 293QString text;
375 return false; 294 switch( mode ){
376 else 295 case NORMAL:
377 return m_checkPerm->isChecked(); 296 text = tr("Documents");
297 break;
298 case EXTENDED:
299 text = tr("Files");
300 break;
301 case EXTENDED_ALL:
302 text = tr("All Files");
303 break;
304 }
305 slotViewCheck( text );
378} 306}
379 307
380void OFileSelector::setPermissionChecked( bool check ) 308void OFileSelector::setPopupMenu(QPopupMenu *popup )
381{ 309{
382 if( m_checkPerm == 0 ) 310 m_custom = popup;
383 return; 311 m_showPopup = true;
384 m_checkPerm->setChecked( check );
385} 312}
386 313
314//void OFileSelector::updateL
315
387QString OFileSelector::selectedName( )const 316QString OFileSelector::selectedName( )const
388{ 317{
389 QString string; 318 QString name;
390 if( m_selector == NORMAL ){ 319 if( m_selector == NORMAL ){
391 const DocLnk *lnk = m_select->selected(); 320 const DocLnk *lnk = m_select->selected();
392 string = lnk->file(); 321 name = lnk->file();
322 delete lnk;
393 }else if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ) { 323 }else if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ) {
394 QListViewItem *item = m_View->currentItem(); 324 QListViewItem *item = m_View->currentItem();
395 if(item != 0 ){ 325 if( item != 0 )
396 string = m_currentDir + "/" + item->text( 1 ); 326 name = m_currentDir + "/" + item->text( 1 );
397 } 327 }else { // installed view
328 ;
398 } 329 }
399 return string; 330 return name;
400} 331}
401
402QStringList OFileSelector::selectedNames()const 332QStringList OFileSelector::selectedNames()const
403{ 333{
404 QStringList list; 334 QStringList list;
335 if( m_selector == NORMAL ){
336 list << selectedName();
337 }else if ( m_selector == EXTENDED || m_selector == EXTENDED_ALL ) {
338 list << selectedName(); // FIXME implement multiple Selections
339 }
405 return list; 340 return list;
406} 341}
407 342/** If mode is set to the Dir selection this will return the selected path.
408DocLnk OFileSelector::selectedDocument( )const 343 *
344 *
345 */
346QString OFileSelector::selectedPath()const
409{ 347{
410 DocLnk lnk; 348 QString path;
411 return lnk; 349 if( m_selector == NORMAL ){
350 path = QPEApplication::documentDir();
351 }else if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
352 ;
412} 353}
413void OFileSelector::updateLay() 354 return path;
414{
415 /* if( m_shTool )
416 //
417 else
418 // hide
419 */
420 // save the state
421 bool check = false;
422 if( m_checkPerm != 0 )
423 check = m_checkPerm->isChecked();
424 QString text;
425
426 if( m_edit != 0 )
427 text = m_edit->text();
428 // save current mimetype
429
430 delItems();
431 delete m_checkPerm;
432 m_checkPerm = 0;
433 delete m_edit;
434 m_edit = 0;
435 delete m_fnLabel;
436 m_fnLabel = 0;
437 delete m_ok;
438 m_ok = 0;
439 delete m_cancel;
440 m_cancel = 0;
441 delete m_mimeCheck;
442 m_mimeCheck = 0;
443 delete m_viewCheck;
444 m_viewCheck = 0;
445 delete m_select; // test
446 delete m_stack;
447 //delete m_list;
448 init();
449 if( m_shLne )
450 m_edit->setText(text );
451 if( m_shPerm )
452 m_checkPerm->setChecked(check );
453} 355}
454 356QStringList OFileSelector::selectedPaths() const
455// let's update the mimetypes. Use the current mimefilter for the 2nd QDir retrieve
456// insert QListViewItems with the right options
457bool OFileSelector::compliesMime(const QString &path, const QString &mime )
458{ 357{
459 if( mime == "All" ) 358 QStringList list;
460 return true; 359 list << selectedPath();
461 MimeType type( path ); 360 return list;
462 if( type.id() == mime )
463 return true;
464 return false;
465} 361}
466 362QString OFileSelector::directory()const
467void OFileSelector::reparse()
468{ 363{
469 qDebug("reparse"); 364 if( m_selector == NORMAL )
470 if(m_View== 0 || m_selector == NORMAL) 365 return QPEApplication::documentDir();
471 return;
472 m_View->clear();
473 QString currMime =m_mimeCheck->currentText();
474 // update the mimetype now
475 if( m_autoMime ) {
476 QDir dir( m_currentDir );
477 m_mimetypes.clear();
478 m_mimeCheck->clear();
479 dir.setFilter( QDir::Files | QDir::Readable );
480 dir.setSorting(QDir::Size );
481 const QFileInfoList *list = dir.entryInfoList();
482 QFileInfoListIterator it( *list );
483 QFileInfo *fi;
484 while( (fi=it.current()) ){
485 if(fi->extension() == QString::fromLatin1("desktop") ){
486 ++it;
487 continue;
488 }
489 MimeType type(fi->filePath() );
490 if( !m_mimetypes.contains( type.id() ) )
491 m_mimetypes.append( type.id() );
492 366
493 ++it; 367 return QDir(m_currentDir).absPath();
494 }
495 m_mimetypes.prepend("All" );
496 m_mimeCheck->insertStringList(m_mimetypes );
497 // set it to the current mimetype
498 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currMime ) );
499 }else{
500 m_mimeCheck->clear();
501 m_mimeCheck->insertItem( m_mimetypes.join(";") );
502 } 368 }
503 369
504 QDir dir( m_currentDir ); 370int OFileSelector::fileCount()
505 //dir.setFilter(-1 ); 371{
506 int sort = QDir::Name | QDir::DirsFirst | QDir::Reversed; 372 int count;
507 if( m_case ) 373 switch( m_selector ){
508 sort = QDir::IgnoreCase; 374 case NORMAL:
509 dir.setSorting( sort ); 375 count = m_select->fileCount();
510
511 int filter;
512 /* if( m_dir && !m_files)
513 filter |= QDir::Dirs;
514 else if( !m_dir && m_files )
515 filter |= QDir::Files;
516 else
517 filter |= QDir::All;
518 */
519 if( m_selector == EXTENDED_ALL )
520 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
521 else
522 filter = QDir::Files | QDir::Dirs | QDir::All;
523 dir.setFilter( filter );
524 qDebug("infoList");
525 const QFileInfoList *list = dir.entryInfoList();
526 QFileInfoListIterator it( *list );
527 QFileInfo *fi;
528 while( (fi=it.current()) ){
529 if(fi->fileName() == ".." || fi->fileName() == "." ){
530 ++it;
531 continue;
532 }
533// qWarning("Test: %s", fi->fileName().latin1() );
534 if(fi->isSymLink() ){
535// qWarning("Symlink %s", fi->fileName().latin1() );
536 QString file = fi->dirPath(true)+"/"+ fi->readLink();
537// qWarning("File ->%s", file.latin1() );
538 for(int i=0; i<=4; i++ ){ // prepend from dos
539 QFileInfo info( file );
540 if( !info.exists() ){
541// qWarning("does not exist" );
542 addSymlink(currMime, fi, TRUE );
543 break;
544 }else if( info.isDir() ){
545// qWarning("isDir" );
546 addDir(currMime, fi, TRUE );
547 break; 376 break;
548 }else if( info.isFile() ){ 377 //case CUSTOM:
549// qWarning("isFile" ); 378 case EXTENDED:
550 addFile(currMime, fi, TRUE ); 379 case EXTENDED_ALL:
380 default:
381 count = m_View->childCount();
551 break; 382 break;
552 }else if( info.isSymLink() ){
553 file = info.dirPath(true)+ "/"+ info.readLink();
554// qWarning("isSymlink again %s", file.latin1() );
555 }else if( i == 4 ){ // just insert it and have the symlink symbol
556 addSymlink(currMime, fi );
557// qWarning("level too deep" );
558 } 383 }
384 return count;
559 } 385 }
560 }else if( fi->isDir() ){ 386DocLnk OFileSelector::selectedDocument() const
561 addDir(currMime, fi ); 387{
562 }else if( fi->isFile() ) { // file ? 388 DocLnk lnk;
563 addFile(currMime, fi ); 389 switch( m_selector ){
390 case NORMAL:{
391 const DocLnk *lnk2 = m_select->selected();
392 lnk = DocLnk(*lnk2 ); // copy
393 delete lnk2;
394 break;
564 } 395 }
565 ++it; 396 case EXTENDED:
397 case EXTENDED_ALL:
398 default:
399 lnk = DocLnk( selectedName() ); // new DocLnk
400 break;
566 } 401 }
567 m_View->sort(); 402 return lnk;
568// m_View->ensureItemVisible();
569} 403}
570 404QValueList<DocLnk> OFileSelector::selectedDocuments() const
571QString OFileSelector::directory()const
572{ 405{
573 QDir d( m_currentDir); 406 QValueList<DocLnk> docs;
574 return d.absPath(); 407 docs.append( selectedDocument() );
408 return docs;
575} 409}
576 410
577int OFileSelector::fileCount() 411
578{ 412// slots internal
579 return 0;
580}
581 413
582void OFileSelector::slotOk( ) 414void OFileSelector::slotOk( )
583{ 415{
584 emit ok(); 416 emit ok();
585} 417}
586
587void OFileSelector::slotCancel( ) 418void OFileSelector::slotCancel( )
588{ 419{
589 emit cancel(); 420 emit cancel();
590} 421}
591 422void OFileSelector::slotViewCheck(const QString &sel)
592void OFileSelector::initializeName()
593{ 423{
594 m_boxName = new QHBoxLayout(this ); 424 if( sel == tr("Documents" ) ){
595 m_edit = new QLineEdit(this ); 425 if( m_select == 0 ){
596 m_fnLabel = new QLabel(this ); 426 // autMime? fix cause now we use All and not the current
597 m_fnLabel->setText(tr("Name:") ); 427 m_select = new FileSelector(m_autoMime ? QString::null : m_mimetypes.join(";"),
598 m_boxName->addWidget(m_fnLabel ); 428 m_stack, "fileselector",
599 m_boxName->insertSpacing(1, 8 ); 429 FALSE, FALSE);
600 m_boxName->addWidget(m_edit, 100 ); 430 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
431 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
432 //connect to close me and other signals as well
601 433
602 m_lay->addLayout(m_boxName); 434 m_stack->addWidget( m_select, NORMAL );
603} 435}
604 436 m_stack->raiseWidget( NORMAL );
605void OFileSelector::initializeYes() 437 m_selector = NORMAL;
606{ 438 }else if( sel == tr("Files") ){
607 m_ok = new QPushButton("&Save", this, "save" ); 439 m_selector = EXTENDED;
608 m_cancel = new QPushButton("C&ancel", this, "cancel" ); 440 initializeListView();
609 m_boxOk = new QHBoxLayout(this ); 441 reparse();
610 m_boxOk->addWidget( m_ok, Qt::AlignHCenter ); 442 m_stack->raiseWidget( EXTENDED );
611 m_boxOk->insertSpacing(1, 8 ); 443 }else if( sel == tr("All Files") ){
612 m_boxOk->addWidget( m_cancel, Qt::AlignHCenter); 444 m_selector = EXTENDED_ALL;
613 m_lay->addLayout(m_boxOk ); 445 initializeListView();
614 connect(m_ok, SIGNAL(clicked() ), 446 reparse();
615 this, SLOT(slotOk() ) ); 447 m_stack->raiseWidget( EXTENDED ); // same widget other QFileFilter
616 connect(m_cancel, SIGNAL(clicked() ),
617 this, SLOT(slotCancel() ) );
618
619} 448}
620 449}
621void OFileSelector::initializeChooser() 450void OFileSelector::slotMimeCheck(const QString &mime)
622{ 451{
623 m_boxView = new QHBoxLayout(this ); 452 if( m_selector == NORMAL ){
624 453 if( m_autoMime ){
625 m_mimeCheck = new QComboBox(this, "mime check"); 454 delete m_select;
626 m_viewCheck = new QComboBox(this, "view check"); 455 m_select = new FileSelector( mime == tr("All") ? QString::null : mime,
627 m_boxView->addWidget(m_viewCheck, 0 ); 456 m_stack, "fileselector",
628 m_boxView->insertSpacing(2, 8 ); 457 FALSE, FALSE);
629 m_boxView->addWidget(m_mimeCheck, 0 );
630 m_lay->addLayout(m_boxView );
631 m_lay->insertSpacing( 4, 8);
632
633 m_viewCheck->insertItem(tr("Documents") );
634 m_viewCheck->insertItem(tr("Files") );
635 m_viewCheck->insertItem(tr("All Files") );
636 458
637 if(!m_autoMime ) 459 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
638 m_mimeCheck->insertItem(m_mimetypes.join("," ) ); 460 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
639 else{ // check 461 //connect to close me and other signals as well
462 m_stack->addWidget( m_select, NORMAL );
463 m_stack->raiseWidget( NORMAL );
640 updateMimes(); 464 updateMimes();
465 m_mimeCheck->clear();
641 m_mimeCheck->insertStringList( m_mimetypes ); 466 m_mimeCheck->insertStringList( m_mimetypes );
467 m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
642 } 468 }
643 469 }else{ // others
644 connect( m_viewCheck, SIGNAL(activated(const QString &) ), 470 qWarning("Mime %s", mime.latin1() );
645 this, SLOT(slotViewCheck(const QString & ) ) ); 471 if(m_shChooser ){
646 472 qWarning("Current Text %s", m_mimeCheck->currentText().latin1() );
647 connect( m_mimeCheck, SIGNAL(activated(const QString &) ), 473 //m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, mime) );
648 this, SLOT(slotMimeCheck(const QString & ) ) ); 474 }
475 reparse();
649} 476}
650 477
651void OFileSelector::slotMimeCheck(const QString &view ){ 478}
652 if(m_selector == NORMAL ){ 479void OFileSelector::slotLocationActivated(const QString &file)
653 delete m_select; 480{
654 m_select = new FileSelector(view == "All" ? QString::null : view 481 cd(file.left(file.find("<-",0,TRUE)));
655 , m_stack, "fileselector", FALSE, FALSE );
656 m_stack->addWidget( m_select, NORMAL );
657 m_stack->raiseWidget( NORMAL );
658 }else{
659 reparse(); 482 reparse();
660 } 483 }
484void OFileSelector::slotInsertLocationPath(const QString &currentPath, int count)
485{
486 QStringList pathList;
487 bool underDog = FALSE;
488 for(int i=0;i<count;i++) {
489 pathList << m_location->text(i);
490 if( m_location->text(i) == currentPath)
491 underDog = TRUE;
492 }
493 if( !underDog) {
494 m_location->clear();
495 if( currentPath.left(2)=="//")
496 pathList.append( currentPath.right(currentPath.length()-1) );
497 else
498 pathList.append( currentPath );
499 m_location->insertStringList( pathList,-1);
661} 500}
662
663void OFileSelector::slotViewCheck(const QString &view ){
664 qWarning("changed: show %s", view.latin1() );
665 // if the current view is the one
666 QString currMime = m_mimeCheck->currentText();
667 if( view == QString::fromLatin1("Documents") ){
668 // get the mimetype now
669 // check if we're the current widget and return
670 if( m_View != 0) { // delete 0 shouldn't crash but it did :(
671 delete m_View;
672 delete m_boxToolbar;
673 delete m_homeButton;
674 delete m_docButton;
675 delete m_location;
676 delete m_up;
677 delete m_pseudo;
678 //if(m_pseudoLayout!=0 )
679// delete m_pseudoLayout;
680 } 501 }
681 m_View = 0; 502void OFileSelector::locationComboChanged()
682 m_boxToolbar = 0; 503{
683 m_homeButton = 0; 504 cd( m_location->lineEdit()->text());
684 m_docButton = 0; 505 reparse();
685 m_location = 0; 506}
686 m_up = 0; 507void OFileSelector::init()
687 m_pseudo = 0; 508{
688 m_pseudoLayout = 0; 509 m_lay = new QVBoxLayout( this );
510 m_lay->setSpacing(0 );
511
512 m_stack = new QWidgetStack( this );
513 if( m_selector == NORMAL ){
514 m_select = new FileSelector(m_autoMime ? QString::null : m_mimetypes.join(";"),
515 m_stack, "fileselector",
516 FALSE, FALSE);
517
518 connect(m_select, SIGNAL(fileSelected( const DocLnk & ) ),
519 this, SLOT( slotFileBridgeSelected(const DocLnk & ) ) );
520 //connect to close me and other signals as well
689 521
690 delete m_select;
691 m_select = new FileSelector( currMime == "All" ? QString::null : currMime,
692 m_stack,"fileselector", FALSE, FALSE );
693 m_stack->addWidget( m_select, NORMAL ); 522 m_stack->addWidget( m_select, NORMAL );
694 m_mimeCheck->clear();
695 m_selector = NORMAL;
696 updateMimes();
697 m_mimeCheck->insertStringList( m_mimetypes );
698 m_stack->raiseWidget( NORMAL ); 523 m_stack->raiseWidget( NORMAL );
699 connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) ); 524 }else{ // we're in init so it will be EXTENDED or EXTENDED_ALL
525 // and initializeListview will take care of those
526 // toolbar get's generade in initializeListView
527 initializeListView( ); // will raise the widget as well
528 }
529 m_lay->addWidget( m_stack, 100 ); // add to the layout 10 = stretch
700 530
701 } else if(view == QString::fromLatin1("Files") ){ 531 if( m_shLne ) // the LineEdit with the current FileName
702 // remove from the stack 532 initializeName();
703 delete m_select;
704 m_select = 0;
705 delete m_View;
706 m_View = 0;
707 533
708 m_selector = EXTENDED; 534 if( m_shPerm ) // the Permission QCheckBox
709 initializeListView(); 535 initializePerm();
710 reparse();
711 } else if(view == QString::fromLatin1("All Files") ) {
712 // remove from the stack
713 delete m_select;
714 m_select = 0;
715 delete m_View;
716 m_View = 0;
717
718 m_selector = EXTENDED_ALL;
719 initializeListView();
720 reparse();
721 }
722}
723 536
537 if( m_shChooser ) // the Chooser for the view and Mimetypes
538 initializeChooser();
724 539
725void OFileSelector::updateMimes() // lets check which mode is active 540 if( m_shYesNo ) // the Yes No button row
726 // check the current dir for items then 541 initializeYes( );
542}
543void OFileSelector::updateMimes()
727{ 544{
728 if( m_autoMime ){ 545 if( m_autoMime ){
729 m_mimetypes.clear(); 546 m_mimetypes.clear();
730 m_mimetypes.append("All" ); 547 m_mimetypes.append( tr("All") );
731 if( m_selector == NORMAL ){ 548 if( m_selector == NORMAL ){
732 DocLnkSet set; 549 DocLnkSet set;
733 Global::findDocuments(&set, QString::null ); 550 Global::findDocuments(&set, QString::null );
@@ -736,68 +553,238 @@ void OFileSelector::updateMimes() // lets check which mode is active
736 if( !m_mimetypes.contains((*dit)->type() ) ) 553 if( !m_mimetypes.contains((*dit)->type() ) )
737 m_mimetypes.append( (*dit)->type() ); 554 m_mimetypes.append( (*dit)->type() );
738 } 555 }
739 }else{ 556 }// else done in reparse
740 // should be allreday updatet
741 ;
742 }
743 } 557 }
744} 558}
745 559void OFileSelector::initVars()
746void OFileSelector::initializeListView()
747{ 560{
748 // in the instance that a developer selected the view to be Files or Entended, 561 if( m_mimetypes.isEmpty() )
749 // in the initial initialization, you are deleting objects here 562 m_autoMime = true;
750 // that aren't even existing yet. 563 else
751 564 m_autoMime = false;
752 // just to make sure but clean it up better FIXME 565 m_shClose = false;
753 delete m_View; 566 m_shNew = false;
754 m_View = 0; 567 m_shTool = true;
755 delete m_boxToolbar; 568 m_shPerm = false;
756 delete m_homeButton; 569 m_shLne = true;
757 delete m_docButton; 570 m_shChooser = true;
758 delete m_location; 571 m_shYesNo = true;
759 delete m_up; 572 m_case = false;
760 delete m_pseudo; 573 m_dir = true;
574 m_files = true;
575 m_showPopup = false;
576 if(m_pixmaps == 0 ) // init the pixmaps
577 initPics();
761 578
762 m_boxToolbar = 0; 579 // pointers
580 m_location = 0;
581 m_mimeCheck = 0;
582 m_viewCheck = 0;
763 m_homeButton = 0; 583 m_homeButton = 0;
764 m_docButton = 0; 584 m_docButton = 0;
765 m_location = 0; 585 m_hideButton = 0;
586 m_ok = 0;
587 m_cancel = 0;
588 m_reread = 0;
766 m_up = 0; 589 m_up = 0;
590 m_View = 0;
591 m_checkPerm = 0;
767 m_pseudo = 0; 592 m_pseudo = 0;
768 m_pseudoLayout = 0; 593 m_pseudoLayout = 0;
769 qDebug(" time for the toolbar "); 594 m_select = 0;
595 m_stack = 0;
596 m_lay = 0;
597 m_Oselector = 0;
598 m_boxToolbar = 0;
599 m_boxOk = 0;
600 m_boxName = 0;
601 m_boxView = 0;
602 m_custom = 0;
603 m_edit = 0;
604 m_fnLabel = 0;
605 m_new = 0;
606 m_close = 0;
607}
608void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink)
609{
610 if(!m_files)
611 return;
612 // if( !compliesMime(info->absFilePath(), mime ) )
613 // return;
614 MimeType type( info->absFilePath() );
615 if( mime != tr("All") && type.id() != mime )
616 return;
617 QPixmap pix = type.pixmap();
618 QString dir;
619 QString name;
620 bool locked;
621 if( pix.isNull() )
622 pix = Resource::loadPixmap( "UnknownDocument-14");
623 dir = info->dirPath( true );
624 if( symlink )
625 name = info->fileName() + " -> " +info->dirPath() + "/" + info->readLink();
626 else {
627 name = info->fileName();
628 if( ( m_mode == OPEN && !info->isReadable() )||
629 ( m_mode == SAVE && !info->isWritable() ) ){
630
631 locked = true; pix = Resource::loadPixmap("locked");
632 }
633 }
634 new OFileSelectorItem( m_View, pix, name,
635 info->lastModified().toString(),
636 QString::number( info->size() ),
637 dir, locked );
638}
639void OFileSelector::addDir(const QString &mime, QFileInfo *info, bool symlink )
640{
641 if(!m_dir)
642 return;
643 if( m_selector == EXTENDED_ALL || m_selector == EXTENDED ){
644 bool locked = false;
645 QString name;
646 QPixmap pix;
647 if( ( m_mode == OPEN && !info->isReadable() ) || ( m_mode == SAVE && !info->isWritable() ) ){
648 locked = true;
649 if( symlink )
650 pix = (*m_pixmaps)["symlinkedlocked"];
651 else
652 pix = Resource::loadPixmap("lockedfolder");
653 }else { // readable
654 pix = symlink ? (*m_pixmaps)["dirsymlink"] : Resource::loadPixmap("folder") ;
655 }
656 name = symlink ? info->fileName() + "->" + info->dirPath(true) + "/" +info->readLink() : info->fileName() ;
657 new OFileSelectorItem( m_View, pix, name,
658 info->lastModified().toString(),
659 QString::number( info->size() ),
660 info->dirPath( true ), locked,
661 true );
662
663 }// else CUSTOM View
664}
665void OFileSelector::delItems()
666{
667
668}
669void OFileSelector::initializeName()
670{
671 /** Name Layout Line
672 * This is the Layout line arranged in
673 * horizontal way each components
674 * are next to each other
675 * but we will only do this if
676 * we didn't initialize a while ago.
677 */
678 if( m_boxName == 0 ){
679 m_boxName = new QHBox( this ); // remove this this? or use a QHBox
680 m_fnLabel = new QLabel( m_boxName );
681 m_fnLabel->setText( tr("Name:") );
682 m_edit = new QLineEdit( m_boxName );
683 //m_boxName->addWidget( m_fnLabel );
684 m_boxName->setMargin( 5 );
685 m_boxName->setSpacing( 8 );
686 //m_boxName->setStretchFactor(m_edit, 100 ); // 100 is stretch factor
687
688 m_lay->addWidget( m_boxName, 0 ); // add it to the topLevel layout
689 }// else we already initialized
690 // maybe show the components?
691 //
692}
693void OFileSelector::initializeYes()
694{
695 /** The Save Cancel bar
696 *
697 */
698 if( m_boxOk == 0 ){
699 m_boxOk = new QHBox( this );
700 m_ok = new QPushButton( tr("&Save"),m_boxOk , "save" );
701 m_cancel = new QPushButton( tr("C&ancel"), m_boxOk, "cancel" );
702
703 //m_boxOk->addWidget( m_ok );
704 //m_boxOk->addWidget( m_cancel );
705 m_boxOk->setMargin( 5 );
706 m_boxOk->setSpacing( 10 );
707 m_lay->addWidget( m_boxOk, 0 );
708
709 connect( m_ok, SIGNAL( clicked() ),
710 this, SLOT(slotOk() ) );
711 connect( m_cancel, SIGNAL( clicked() ),
712 this, SLOT( slotCancel() ) );
713 }
714}
715void OFileSelector::initializeChooser()
716{
717 if( m_boxView == 0 ){
718 m_boxView = new QHBox( this );
719 m_viewCheck = new QComboBox( m_boxView, "view check");
720 m_mimeCheck = new QComboBox( m_boxView, "mime check");
721 m_boxView->setSpacing( 8 );
722 m_lay->addWidget(m_boxView, 0 );
723
724 m_viewCheck->insertItem( tr("Documents") );
725 m_viewCheck->insertItem( tr("Files") );
726 m_viewCheck->insertItem( tr("All Files") );
727 if(!m_autoMime )
728 m_mimeCheck->insertItem(m_mimetypes.join(",") );
729 else{
730 updateMimes();
731 m_mimeCheck->insertStringList( m_mimetypes );
732 }
733 connect( m_viewCheck, SIGNAL( activated(const QString & ) ),
734 this, SLOT( slotViewCheck(const QString & ) ) );
735 connect( m_mimeCheck, SIGNAL( activated(const QString & ) ),
736 this, SLOT( slotMimeCheck( const QString & ) ) );
737 }
738}
739void OFileSelector::initializeListView()
740{
741 if( m_pseudo == 0 ){
770 m_pseudo = new QWidget(m_stack, "Pseudo Widget"); 742 m_pseudo = new QWidget(m_stack, "Pseudo Widget");
771 m_pseudoLayout = new QVBoxLayout(m_pseudo ); 743 m_pseudoLayout = new QVBoxLayout(m_pseudo );
772 if(m_shTool ){ 744 // toolbar
773 m_boxToolbar = new QHBoxLayout( ); 745 m_boxToolbar = new QHBox( m_pseudo );
774 m_boxToolbar->setAutoAdd( true ); 746 m_boxToolbar->setSpacing(0 ); // next to each other please
775 m_location = new QComboBox(m_pseudo );
776 m_location ->setEditable(TRUE);
777 connect( m_location, SIGNAL(activated(const QString &) ), this, SLOT( locationComboActivated(const QString & ) ) );
778 connect( m_location->lineEdit(),SIGNAL(returnPressed()), this,SLOT( locationComboChanged()));
779 747
780 m_up = new QPushButton(Resource::loadIconSet("up"),"", m_pseudo,"cdUpButton"); 748 // toolbar members
749 {
750 // location QComboBox
751 m_location = new QComboBox( m_boxToolbar );
752 m_location->setEditable( TRUE );
753 m_location->setDuplicatesEnabled( FALSE );
754 connect( m_location, SIGNAL(activated(const QString &) ),
755 this, SLOT( slotLocationActivated(const QString &) ) );
756 connect( m_location->lineEdit(), SIGNAL(returnPressed() ),
757 this, SLOT(locationComboChanged() ) );
758 // UP Button
759 m_up = new QPushButton(Resource::loadIconSet("up"),"",
760 m_boxToolbar,"cdUpButton");
781 m_up->setFixedSize( QSize( 20, 20 ) ); 761 m_up->setFixedSize( QSize( 20, 20 ) );
782 connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) ); 762 connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) );
783 m_up->setFlat(TRUE); 763 m_up->setFlat(TRUE);
784 764
785 m_homeButton = new QPushButton(Resource::loadIconSet("home") , "", m_pseudo); 765 // Home Button
766 m_homeButton = new QPushButton(Resource::loadIconSet("home") ,
767 "", m_boxToolbar);
786 m_homeButton->setFixedSize( QSize( 20, 20 ) ); 768 m_homeButton->setFixedSize( QSize( 20, 20 ) );
787 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) ); 769 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotHome() ) );
788 m_homeButton->setFlat(TRUE); 770 m_homeButton->setFlat(TRUE);
789 771 // Documents Button
790 m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"", m_pseudo,"docsButton"); 772 m_docButton = new QPushButton(Resource::loadIconSet("DocsIcon"),"",
773 m_boxToolbar,"docsButton");
791 m_docButton->setFixedSize( QSize( 20, 20 ) ); 774 m_docButton->setFixedSize( QSize( 20, 20 ) );
792 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) ); 775 connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) );
793 m_docButton->setFlat(TRUE); 776 m_docButton->setFlat(TRUE);
794 777
795 m_boxToolbar->addWidget(m_location ); 778 // Close button
796 m_boxToolbar->addWidget(m_up ); 779 m_close = new QPushButton( Resource::loadIconSet( "close"), "",
797 m_boxToolbar->addWidget(m_homeButton ); 780 m_boxToolbar );
798 m_boxToolbar->addWidget(m_docButton ); 781 connect( m_close, SIGNAL(clicked() ), this, SIGNAL(closeMe() ) );
799 m_pseudoLayout->addLayout(m_boxToolbar ); 782 m_close->setFixedSize( 20, 20 );
800 qDebug("lets fill the combobox"); 783
784 m_boxToolbar->setFixedHeight( 20 );
785 m_pseudoLayout->addWidget(m_boxToolbar );
786
787 // let;s fill the Location ComboBox
801 StorageInfo storage; 788 StorageInfo storage;
802 const QList<FileSystem> &fs = storage.fileSystems(); 789 const QList<FileSystem> &fs = storage.fileSystems();
803 QListIterator<FileSystem> it ( fs ); 790 QListIterator<FileSystem> it ( fs );
@@ -809,17 +796,24 @@ void OFileSelector::initializeListView()
809 int count = m_location->count(); 796 int count = m_location->count();
810 m_location->insertItem(m_currentDir ); 797 m_location->insertItem(m_currentDir );
811 m_location->setCurrentItem( count ); 798 m_location->setCurrentItem( count );
812 }; 799 // due to the New and Close button we can not simply hide m_boxToolBar to not show it
813 800 if( !m_shTool ){
801 m_location->hide( );
802 m_up->hide( );
803 m_homeButton->hide( );
804 m_docButton->hide( );
805 }
806 if(!m_shClose )
807 m_close->hide();
808 if(!m_shNew)
809 m_close->hide();
810
811 } // off toolbar
812 // the Main ListView
813 // make a QWidgetStack first so Views can share the Toolbar
814 m_View = new QListView(m_pseudo, "Extended view" ); 814 m_View = new QListView(m_pseudo, "Extended view" );
815 m_stack->addWidget( m_pseudo, EXTENDED ); 815 QPEApplication::setStylusOperation( m_View->viewport(),
816 m_stack->raiseWidget( EXTENDED ); 816 QPEApplication::RightOnHold);
817 m_pseudoLayout->addWidget(m_View );
818 QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold);
819 // set up the stuff
820 // Pixmap Name Date Size mime
821 //(m_View->header() )->hide();
822 //m_View->setRootIsDecorated(false);
823 m_View->addColumn(" "); 817 m_View->addColumn(" ");
824 m_View->addColumn(tr("Name"),135 ); 818 m_View->addColumn(tr("Name"),135 );
825 m_View->addColumn(tr("Size"),-1 ); 819 m_View->addColumn(tr("Size"),-1 );
@@ -829,155 +823,87 @@ void OFileSelector::initializeListView()
829 header->hide(); 823 header->hide();
830 m_View->setSorting(1 ); 824 m_View->setSorting(1 );
831 m_View->setAllColumnsShowFocus( TRUE); 825 m_View->setAllColumnsShowFocus( TRUE);
832 // connect now
833 connect(m_View, SIGNAL(selectionChanged() ), this, SLOT(slotSelectionChanged() ) );
834 connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
835 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
836 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
837 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
838 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
839
840
841};
842 826
843/* If a item is locked depends on the mode 827 connect(m_View, SIGNAL(selectionChanged() ),
844 if we're in OPEN !isReadable is locked 828 this, SLOT(slotSelectionChanged() ) );
845 if we're in SAVE !isWriteable is locked
846 829
830 connect(m_View, SIGNAL(currentChanged(QListViewItem *) ),
831 this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
847 832
848 */ 833 connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
849 834 this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
850 835
851void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink ){ 836 connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
852// qWarning("Add Files" ); 837 this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
853 if( !m_files ){
854// qWarning("not mfiles" );
855 return;
856 }
857 838
858 MimeType type( info->filePath() ); 839 m_pseudoLayout->addWidget( m_View, 288 );
859 QString name; 840 m_stack->addWidget( m_pseudo, EXTENDED );
860 QString dir;
861 bool locked= false;
862 if(mime == "All" ){
863 ;
864 }else if( type.id() != mime ) {
865 return;
866 }
867 QPixmap pix = type.pixmap();
868 if(pix.isNull() )
869 pix = Resource::loadPixmap( "UnknownDocument-14" );
870 dir = info->dirPath( true );
871 if( symlink ) { // check if the readLink is readable
872 // do it right later
873 name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink();
874 }else{ // keep track of the icons
875 name = info->fileName();
876 if( m_mode == OPEN ){
877 if( !info->isReadable() ){
878 locked = true;
879 pix = Resource::loadPixmap("locked" );
880 }
881 }else if( m_mode == SAVE ){
882 if( !info->isWritable() ){
883 locked = true;
884 pix = Resource::loadPixmap("locked" );
885 }
886 }
887 } 841 }
888 new OFileSelectorItem( m_View, pix, name,
889 info->lastModified().toString(),
890 QString::number( info->size() ),
891 dir, locked );
892} 842}
893 843void OFileSelector::initializePerm()
894void OFileSelector::addDir(const QString &/*mime*/, QFileInfo *info, bool symlink )
895{
896 if(!m_dir )
897 return;
898 //if( showDirs )
899 { 844 {
900 bool locked=false; 845 if( m_checkPerm == 0 ){
901 QString name; 846 m_checkPerm = new QCheckBox(tr("Ser Permission"), this, "perm");
902 QPixmap pix; 847 m_checkPerm->setChecked( false );
903 if( ( m_mode == OPEN && !info->isReadable() ) || ( m_mode == SAVE && !info->isWritable() ) ){ 848 m_lay->addWidget( m_checkPerm );
904 locked = true;
905 if( symlink ){
906 pix = (*m_pixmaps)["symlinkedlocked"];
907 }else{
908 pix = Resource::loadPixmap("lockedfolder" );
909 }
910 }else{
911 if( symlink ){
912 pix = (*m_pixmaps)["dirsymlink" ];
913 }else{
914 pix = Resource::loadPixmap("folder" );
915 }
916 }
917 if( symlink){
918 name = info->fileName()+ "->"+ info->dirPath(true) +"/" +info->readLink();
919
920 }else{
921 //if(info->isReadable() )
922 name = info->fileName();
923 }
924
925 new OFileSelectorItem(m_View, pix,
926 name, info->lastModified().toString(),
927 QString::number(info->size() ),info->dirPath(true), locked, true );
928 849
929 } 850 }
930} 851}
852void OFileSelector::initPics()
853{
854 m_pixmaps = new QMap<QString,QPixmap>;
855 QPixmap pm = Resource::loadPixmap( "folder" );
856 QPixmap lnk = Resource::loadPixmap( "opie/symlink" );
857 QPainter painter( &pm );
858 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk );
859 pm.setMask( pm.createHeuristicMask( FALSE ) );
860 m_pixmaps->insert("dirsymlink", pm );
931 861
932void OFileSelector::setShowDirs(bool dir ) 862 QPixmap pm2 = Resource::loadPixmap( "lockedfolder" );
863 QPainter pen(&pm2 );
864 pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk );
865 pm2.setMask( pm2.createHeuristicMask( FALSE ) );
866 m_pixmaps->insert("symlinkedlocked", pm2 );
867}
868// if a mime complies with the m_mimeCheck->currentItem
869bool OFileSelector::compliesMime( const QString &path, const QString &mime )
933{ 870{
934 m_dir = dir; 871 if( mime == "All" )
935 reparse(); 872 return true;
873 MimeType type( path );
874 if( type.id() == mime )
875 return true;
876 return false;
936} 877}
937 878
938void OFileSelector::slotFileSelected(const QString &string ) 879void OFileSelector::slotFileSelected(const QString &string )
939{ 880{
940 if(m_shLne ) 881 if(m_shLne )
941 m_edit->setText( string ); 882 m_edit->setText( string );
942
943 emit fileSelected( string ); 883 emit fileSelected( string );
944 // do AppLnk stuff
945} 884}
946
947void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk ) 885void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk )
948{ 886{
949 slotFileSelected(lnk.name() ); 887 slotFileSelected(lnk.name() );
950 emit fileSelected( lnk ); 888 // emit fileSelected( lnk );
951} 889}
952 890void OFileSelector::slotSelectionChanged()
953void OFileSelector::slotSelectionChanged() // get the current items
954 // fixme
955{ 891{
956 qWarning("selection changed" );
957}
958 892
893}
959void OFileSelector::slotCurrentChanged(QListViewItem *item ) 894void OFileSelector::slotCurrentChanged(QListViewItem *item )
960{ 895{
961// qWarning("current changed" );
962 if( item == 0 ) 896 if( item == 0 )
963 return; 897 return;
964
965 if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ 898 if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
966 OFileSelectorItem *sel = (OFileSelectorItem*)item; 899 OFileSelectorItem *sel = (OFileSelectorItem*) item; // start to use the C++ casts ;)
967 if(!sel->isDir() ){ 900 if(!sel->isDir() ){
968// qWarning("is not dir" ); 901 if( m_shLne )
969 if(m_shLne ){
970 m_edit->setText(sel->text(1) ); 902 m_edit->setText(sel->text(1) );
971// qWarning("setTexy" );
972 } 903 }
973 } 904 }
974 }else {
975 qWarning("mode not extended" );
976 }
977} 905}
978 906void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &, int)
979// either select or change dir
980void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &/*point*/, int )
981{ 907{
982 if( item == 0 ) 908 if( item == 0 )
983 return; 909 return;
@@ -985,27 +911,27 @@ void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &
985 if( button != Qt::LeftButton ) 911 if( button != Qt::LeftButton )
986 return; 912 return;
987 913
988// qWarning("clicked" ); 914 switch( m_selector ){
989 if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ){ 915 default:
990// qWarning("inside" ); 916 break;
917 case EXTENDED: // fall through
918 case EXTENDED_ALL:{
991 OFileSelectorItem *sel = (OFileSelectorItem*)item; 919 OFileSelectorItem *sel = (OFileSelectorItem*)item;
992 if(!sel->isLocked() ){ // not locked either changedir or open 920 if(!sel->isLocked() ){
993 QStringList str = QStringList::split("->", sel->text(1) ); 921 QStringList str = QStringList::split("->", sel->text(1) );
994 if(sel->isDir() ){ 922 if(sel->isDir() ){
995 cd( sel->directory() + "/" + str[0] ); 923 cd( sel->directory() + "/" + str[0].stripWhiteSpace() );
924 // if MODE Dir m_shLne set the Text
996 } else { 925 } else {
997// qWarning("file" );
998 if(m_shLne ) 926 if(m_shLne )
999 m_edit->setText(str[0] ); 927 m_edit->setText( str[0].stripWhiteSpace() );
1000 emit fileSelected(str[0] ); 928 emit fileSelected( sel->directory() + "/" + str[0].stripWhiteSpace() );
1001 // emit DocLnk need to do it 929 }
930 }
931 break;
1002 } 932 }
1003 } else {
1004 qWarning( "locked" );
1005 } 933 }
1006 };
1007} 934}
1008
1009void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int ) 935void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int )
1010{ 936{
1011 if (item == 0 ) 937 if (item == 0 )
@@ -1013,133 +939,42 @@ void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoin
1013 939
1014 if( button != Qt::RightButton ) 940 if( button != Qt::RightButton )
1015 return; 941 return;
1016// qWarning("right button" );
1017 slotContextMenu(item); 942 slotContextMenu(item);
1018} 943}
1019
1020void OFileSelector::slotContextMenu(QListViewItem *item) 944void OFileSelector::slotContextMenu(QListViewItem *item)
1021{ 945{
1022// qWarning("context menu" );
1023 if( item ==0 || !m_showPopup )
1024 return;
1025
1026 if( m_custom !=0){
1027 m_custom->exec();
1028 }else{
1029 QPopupMenu menu;
1030 QAction up;
1031 up.setText("cd up");
1032 up.addTo( &menu );
1033 connect(&up, SIGNAL(activated() ),
1034 this, SLOT(cdUP() ) );
1035
1036 QAction act;
1037 OFileSelectorItem *sel = (OFileSelectorItem*)item;
1038 if(sel->isDir() ){
1039 act.setText( tr("Change Directory") );
1040 act.addTo(&menu );
1041 connect(&act, SIGNAL(activated() ),
1042 this, SLOT(slotChangedDir() ) );
1043 }else{
1044 act.setText( tr("Open file" ) );
1045 act.addTo( &menu );
1046 connect(&act, SIGNAL(activated() ),
1047 this, SLOT(slotOpen() ) );
1048 }
1049 QAction rescan;
1050 rescan.setText( tr("Rescan") );
1051 rescan.addTo( &menu );
1052 connect(&rescan, SIGNAL(activated() ),
1053 this, SLOT(slotRescan() ) );
1054
1055 QAction rename;
1056 rename.setText( tr("Rename") );
1057 rename.addTo( &menu );
1058 connect(&rename, SIGNAL(activated() ),
1059 this, SLOT(slotRename() ) );
1060
1061 menu.insertSeparator();
1062 QAction delItem;
1063 delItem.setText( tr("Delete") );
1064 delItem.addTo(&menu );
1065 connect(&delItem, SIGNAL(activated() ),
1066 this, SLOT(slotDelete() ) );
1067
1068 menu.exec(QCursor::pos() );
1069 }
1070}
1071 946
1072bool OFileSelector::cd(const QString &str )
1073{
1074// qWarning(" dir %s", str.latin1() );
1075 QDir dir( str);
1076 if(dir.exists() ){
1077 m_currentDir = dir.absPath();
1078 reparse();
1079 if(m_shTool ){
1080 int count = m_location->count();
1081 insertLocationPath( str ,count );
1082 m_location->setCurrentItem( count );
1083 }
1084 return true;
1085 } 947 }
1086 return false;
1087}
1088
1089void OFileSelector::insertLocationPath(const QString &currentPath, int count) {
1090 QStringList pathList;
1091 bool underDog = FALSE;
1092 for(int i=0;i<count;i++) {
1093 pathList << m_location->text(i);
1094 if( m_location->text(i) == currentPath)
1095 underDog = TRUE;
1096 }
1097 if( !underDog) {
1098 m_location->clear();
1099 if( currentPath.left(2)=="//")
1100 pathList.append( currentPath.right(currentPath.length()-1) );
1101 else
1102 pathList.append( currentPath );
1103 m_location->insertStringList( pathList,-1);
1104 }
1105}
1106
1107void OFileSelector::slotChangedDir() 948void OFileSelector::slotChangedDir()
1108{ 949{
1109 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); 950 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
1110 if(sel->isDir() ){ 951 if(sel->isDir() ){
1111 QStringList str = QStringList::split("->", sel->text(1) ); 952 QStringList str = QStringList::split("->", sel->text(1) );
1112 cd( sel->directory() + "/" + str[0] ); 953 cd( sel->directory() + "/" + str[0].stripWhiteSpace() );
1113
1114 } 954 }
1115} 955}
1116
1117void OFileSelector::slotOpen() 956void OFileSelector::slotOpen()
1118{ 957{
1119 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); 958 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
1120 if(!sel->isDir() ){ 959 if(!sel->isDir() ){
1121 QStringList str = QStringList::split("->", sel->text(1) ); 960 QStringList str = QStringList::split("->", sel->text(1) );
1122 slotFileSelected( str[0] ); 961 slotFileSelected( sel->directory() +"/" +str[0].stripWhiteSpace() );
1123 } 962 }
1124} 963}
1125
1126void OFileSelector::slotRescan() 964void OFileSelector::slotRescan()
1127{ 965{
1128 reparse();
1129}
1130 966
967}
1131void OFileSelector::slotRename() 968void OFileSelector::slotRename()
1132{ 969{
1133 // rename inline 970 reparse();
1134} 971}
1135
1136void OFileSelector::slotDelete() 972void OFileSelector::slotDelete()
1137{ 973{
1138// qWarning("delete slot" );
1139 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem(); 974 OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
1140 QStringList list = QStringList::split("->", sel->text(1) ); 975 QStringList list = QStringList::split("->", sel->text(1) );
1141 if( sel->isDir() ){ 976 if( sel->isDir() ){
1142 QString str = QString::fromLatin1("rm -rf ") + list[0]; //better safe than sorry 977 QString str = QString::fromLatin1("rm -rf ") + sel->directory() +"/" + list[0]; //better safe than sorry
1143 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+list[0], 978 switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+list[0],
1144 tr("Yes"),tr("No"),0,1,1) ) { 979 tr("Yes"),tr("No"),0,1,1) ) {
1145 case 0: 980 case 0:
@@ -1152,7 +987,6 @@ void OFileSelector::slotDelete()
1152 m_View->takeItem( sel ); 987 m_View->takeItem( sel );
1153 delete sel; 988 delete sel;
1154} 989}
1155
1156void OFileSelector::cdUP() 990void OFileSelector::cdUP()
1157{ 991{
1158 QDir dir( m_currentDir ); 992 QDir dir( m_currentDir );
@@ -1161,34 +995,139 @@ void OFileSelector::cdUP()
1161 m_currentDir = dir.absPath(); 995 m_currentDir = dir.absPath();
1162 reparse(); 996 reparse();
1163 int count = m_location->count(); 997 int count = m_location->count();
1164 insertLocationPath( m_currentDir, count); 998 slotInsertLocationPath( m_currentDir, count);
1165 m_location->setCurrentItem( indexByString( m_location, m_currentDir)); 999 m_location->setCurrentItem( indexByString( m_location, m_currentDir));
1166//this wont work in all instances 1000//this wont work in all instances
1167 // FIXME 1001 // FIXME
1168 } 1002 }
1169} 1003}
1170
1171void OFileSelector::slotHome() 1004void OFileSelector::slotHome()
1172{ 1005{
1173 cd(QDir::homeDirPath() ); 1006 cd(QDir::homeDirPath() );
1174} 1007}
1175
1176void OFileSelector::slotDoc() 1008void OFileSelector::slotDoc()
1177{ 1009{
1178 cd(QDir::homeDirPath() + "/Documents" ); 1010 cd(QPEApplication::documentDir() );
1179} 1011}
1180
1181void OFileSelector::slotNavigate() 1012void OFileSelector::slotNavigate()
1182{ 1013{
1183 1014
1184} 1015}
1016// fill the View with life
1017void OFileSelector::reparse()
1018{
1019 if( m_selector == NORMAL )
1020 return;
1021 if( m_selector == EXTENDED || m_selector == EXTENDED_ALL )
1022 m_View->clear();
1023 else // custom view
1024 ; // currentView()->clear();
1025 if( m_shChooser)
1026 qWarning("reparse %s", m_mimeCheck->currentText().latin1() );
1185 1027
1186void OFileSelector::locationComboActivated(const QString & file ) { 1028 QString currentMimeType;
1187 cd(file.left(file.find("<-",0,TRUE))); 1029 // let's update the mimetype
1188 reparse(); 1030 if( m_autoMime ){
1031 m_mimetypes.clear();
1032 // ok we can change mimetype so we need to be able to give a selection
1033 if( m_shChooser ) {
1034 currentMimeType = m_mimeCheck->currentText();
1035 m_mimeCheck->clear();
1036
1037 // let's find possible mimetypes
1038 QDir dir( m_currentDir );
1039 dir.setFilter( QDir::Files | QDir::Readable );
1040 dir.setSorting( QDir::Size );
1041 const QFileInfoList *list = dir.entryInfoList();
1042 QFileInfoListIterator it( *list );
1043 QFileInfo *fi;
1044 while( (fi=it.current() ) ) {
1045 if( fi->extension() == QString::fromLatin1("desktop") ){
1046 ++it;
1047 continue;
1048 }
1049 MimeType type( fi->absFilePath() );
1050 if( !m_mimetypes.contains( type.id() ) ){
1051 //qWarning("Type %s", type.id().latin1() );
1052 m_mimetypes.append( type.id() );
1189} 1053}
1190 1054
1191void OFileSelector::locationComboChanged() { 1055 ++it;
1192 cd( m_location->lineEdit()->text()); 1056 }
1193 reparse(); 1057 // add them to the chooser
1058 m_mimeCheck->insertItem( tr("All") );
1059 m_mimeCheck->insertStringList( m_mimetypes );
1060 m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currentMimeType ) );
1061 currentMimeType = m_mimeCheck->currentText();
1062 }
1063 }else { // no autoMime
1064 currentMimeType = m_mimetypes.join(";");
1065 if( m_shChooser ){
1066 m_mimeCheck->clear();
1067 m_mimeCheck->insertItem(m_mimetypes.join(",") );
1068 }
1069 }
1070 // now we got our mimetypes we can add the files
1071
1072 QDir dir( m_currentDir );
1073
1074 int sort;
1075 if ( m_case )
1076 sort = (QDir::IgnoreCase | QDir::Name | QDir::DirsFirst | QDir::Reversed);
1077 else
1078 sort = (QDir::Name | QDir::DirsFirst | QDir::Reversed);
1079 dir.setSorting( sort );
1080
1081 int filter;
1082 if( m_selector == EXTENDED_ALL /*|| m_selector ==CUSTOM_ALL */ ){
1083 filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
1084 }else
1085 filter = QDir::Files | QDir::Dirs | QDir::All;
1086 dir.setFilter( filter );
1087
1088 // now go through all files
1089 const QFileInfoList *list = dir.entryInfoList();
1090 QFileInfoListIterator it( *list );
1091 QFileInfo *fi;
1092 while( (fi=it.current() ) ){
1093 //qWarning("True and only" );
1094 if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){
1095 //qWarning(".. or ." );
1096 ++it;
1097 continue;
1098 }
1099 if( fi->isSymLink() ){
1100 QString file = fi->dirPath( true ) + "/" + fi->readLink();
1101 for( int i = 0; i<=4; i++) { // 5 tries to prevent dos
1102 QFileInfo info( file );
1103 if( !info.exists() ){
1104 addSymlink( currentMimeType, fi, TRUE );
1105 break;
1106 }else if( info.isDir() ){
1107 addDir( currentMimeType, fi, TRUE );
1108 break;
1109 }else if( info.isFile() ){
1110 addFile( currentMimeType, fi, TRUE );
1111 break;
1112 }else if( info.isSymLink() ){
1113 file = info.dirPath(true ) + "/" + info.readLink() ;
1114 break;
1115 }else if( i == 4){
1116 addSymlink( currentMimeType, fi );
1117 }
1118 } // off for loop
1119 }else if( fi->isDir() ){
1120 addDir( currentMimeType, fi );
1121 }else if( fi->isFile() ){
1122 addFile( currentMimeType, fi );
1123 }
1124 //qWarning( "%s", fi->fileName().latin1() );
1125 ++it;
1126 } // of while loop
1127 m_View->sort();
1128 if( m_shTool ){
1129 m_location->insertItem( m_currentDir );
1130
1131 }
1132 // reenable painting and updates
1194} 1133}
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h
index 5c38ac4..47697b9 100644
--- a/libopie/ofileselector.h
+++ b/libopie/ofileselector.h
@@ -63,6 +63,7 @@ class QHBoxLayout;
63class QVBoxLayout; 63class QVBoxLayout;
64class QPopupMenu; 64class QPopupMenu;
65class QFileInfo; 65class QFileInfo;
66class QHBox;
66// 67//
67 68
68 69
@@ -81,17 +82,17 @@ class OFileSelector : public QWidget {
81 82
82 OFileSelector(const QString &mimeFilter, QWidget *parent, 83 OFileSelector(const QString &mimeFilter, QWidget *parent,
83 const char *name, bool newVisible = TRUE, 84 const char *name, bool newVisible = TRUE,
84 bool closeVisible = FALSE ) { }; 85 bool closeVisible = FALSE );
85 86
86 ~OFileSelector() {}; 87 ~OFileSelector();
87 88
88 // currently only for the FILESELECTOR Mode 89 // currently only for the FILESELECTOR Mode
89 void setNewVisible( bool /*b*/ ) { }; 90 void setNewVisible( bool /*b*/ );
90 void setCloseVisible(bool /*b*/ ) { }; 91 void setCloseVisible(bool /*b*/ );
91 92
92 // end file selector mode 93 // end file selector mode
93 // deprecated 94 // deprecated
94 void reread() { reparse(); }; 95 void reread();
95 // make sure not to leak please 96 // make sure not to leak please
96 const DocLnk *selected(); 97 const DocLnk *selected();
97 // end deprecated 98 // end deprecated
@@ -134,7 +135,7 @@ class OFileSelector : public QWidget {
134 void setShowPopup( bool pop ) { m_showPopup = pop; }; 135 void setShowPopup( bool pop ) { m_showPopup = pop; };
135 void setPopupMenu( QPopupMenu * ); 136 void setPopupMenu( QPopupMenu * );
136 137
137 void updateLay(); 138 // void updateLay();
138 139
139 void reparse(); // re reads the dir 140 void reparse(); // re reads the dir
140 141
@@ -159,16 +160,19 @@ class OFileSelector : public QWidget {
159 void closeMe(); 160 void closeMe();
160 void ok(); 161 void ok();
161 void cancel(); 162 void cancel();
163 void contextMenu();
162 164
163 protected slots: 165 private slots:
166 void slotTest() { qWarning("slotTest" ); setLineEditVisible(false ); };
164 void slotOk(); 167 void slotOk();
165 void slotCancel(); 168 void slotCancel();
166 void slotViewCheck(const QString & ); 169 void slotViewCheck(const QString & );
167 void slotMimeCheck(const QString & ); 170 void slotMimeCheck(const QString & );
168 void locationComboActivated(const QString & ); 171 void slotLocationActivated(const QString & );
169 void insertLocationPath(const QString &, int); 172 void slotInsertLocationPath(const QString &, int);
170 void locationComboChanged(); 173 void locationComboChanged();
171 protected: 174
175 private:
172 void init(); 176 void init();
173 void updateMimes(); 177 void updateMimes();
174 178
@@ -178,7 +182,7 @@ class OFileSelector : public QWidget {
178 int m_mode, m_selector; 182 int m_mode, m_selector;
179 QComboBox *m_location, *m_mimeCheck, *m_viewCheck; 183 QComboBox *m_location, *m_mimeCheck, *m_viewCheck;
180 QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel; 184 QPushButton *m_homeButton, *m_docButton, *m_hideButton, *m_ok, *m_cancel;
181 QPushButton *m_reread, *m_up; 185 QPushButton *m_reread, *m_up, *m_new, *m_close;
182 QListView *m_View; 186 QListView *m_View;
183 QCheckBox *m_checkPerm; 187 QCheckBox *m_checkPerm;
184 QWidget *m_pseudo; 188 QWidget *m_pseudo;
@@ -186,17 +190,17 @@ class OFileSelector : public QWidget {
186 190
187 QString m_currentDir; 191 QString m_currentDir;
188 QString m_name; 192 QString m_name;
189 QStringList m_mimetypes, requestedMimeTypesList; 193 QStringList m_mimetypes;
190 194
191 FileSelector *m_select; 195 FileSelector *m_select;
192 QWidgetStack *m_stack; 196 QWidgetStack *m_stack;
193 QVBoxLayout *m_lay; 197 QVBoxLayout *m_lay;
194 QGridLayout *m_Oselector; 198 QGridLayout *m_Oselector;
195 199
196 QHBoxLayout *m_boxToolbar; 200 QHBox *m_boxToolbar;
197 QHBoxLayout *m_boxOk; 201 QHBox *m_boxOk; // (no layout anymore) wait
198 QHBoxLayout *m_boxName; 202 QHBox *m_boxName; // (no Layout anymore) wait
199 QHBoxLayout *m_boxView; 203 QHBox *m_boxView;
200 204
201 QPopupMenu *m_custom; 205 QPopupMenu *m_custom;
202 206
@@ -217,7 +221,7 @@ class OFileSelector : public QWidget {
217 bool m_files : 1; 221 bool m_files : 1;
218 bool m_showPopup : 1; 222 bool m_showPopup : 1;
219 223
220 // implementation todo 224 void initVars();
221 virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE ); 225 virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE );
222 virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE ); 226 virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE );
223 virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){}; 227 virtual void addSymlink(const QString &, QFileInfo *, bool = FALSE ){};
@@ -226,6 +230,7 @@ class OFileSelector : public QWidget {
226 void initializeYes(); 230 void initializeYes();
227 void initializeChooser(); 231 void initializeChooser();
228 void initializeListView(); 232 void initializeListView();
233 void initializePerm();
229 void initPics(); 234 void initPics();
230 bool compliesMime(const QString &path, const QString &mime); 235 bool compliesMime(const QString &path, const QString &mime);
231 236