summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofileselector.cc168
-rw-r--r--libopie/ofileselector.h100
2 files changed, 220 insertions, 48 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index b911d37..61ab2c4 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -40,2 +40,3 @@
40#include <qdir.h> 40#include <qdir.h>
41#include <qpainter.h>
41 42
@@ -46,2 +47,3 @@
46#include <qpe/mimetype.h> 47#include <qpe/mimetype.h>
48#include <qpe/resource.h>
47 49
@@ -49,2 +51,3 @@
49 51
52QMap<QString,QPixmap> *OFileSelector::m_pixmaps = 0;
50 53
@@ -91,2 +94,8 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString
91 94
95 m_dir = true;
96 m_files = true;
97
98 if(m_pixmaps == 0 ) // init the pixmaps
99 initPics();
100
92 m_lay = new QVBoxLayout(this); 101 m_lay = new QVBoxLayout(this);
@@ -95,3 +104,13 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString
95} 104}
105void OFileSelector::initPics()
106{
107 m_pixmaps = new QMap<QString,QPixmap>;
108 QPixmap pm = Resource::loadPixmap( "folder " );
109 QPixmap lnk = Resource::loadPixmap( "symlink" );
110 QPainter painter( &pm );
111 painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk );
112 pm.setMask( pm.createHeuristicMask( FALSE ) );
113 m_pixmaps->insert("dirsymlink", pm );
96 114
115};
97// let's initialize the gui 116// let's initialize the gui
@@ -151,3 +170,3 @@ void OFileSelector::init()
151 170
152void OFileSelector::setShowYesCancel( bool show ) 171void OFileSelector::setYesCancelVisible( bool show )
153{ 172{
@@ -166,3 +185,3 @@ void OFileSelector::setShowYesCancel( bool show )
166 185
167void OFileSelector::setShowToolbar( bool show ) 186void OFileSelector::setToolbarVisible( bool show )
168{ 187{
@@ -177,3 +196,3 @@ void OFileSelector::setShowToolbar( bool show )
177 196
178void OFileSelector::setShowPermissionBar( bool show ) 197void OFileSelector::setPermissionBarVisible( bool show )
179{ 198{
@@ -186,3 +205,3 @@ void OFileSelector::setShowPermissionBar( bool show )
186} 205}
187void OFileSelector::setShowLineEdit( bool show ) 206void OFileSelector::setLineEditVisible( bool show )
188{ 207{
@@ -201,3 +220,3 @@ void OFileSelector::setShowLineEdit( bool show )
201} 220}
202void OFileSelector::setShowChooser( bool show ) 221void OFileSelector::setChooserVisible( bool show )
203{ 222{
@@ -218,2 +237,16 @@ QCheckBox* OFileSelector::permissionCheckbox( )
218} 237}
238void OFileSelector::setCaseSensetive( bool caSe )
239{
240 m_case = caSe;
241 reparse();
242}
243void OFileSelector::setShowFiles(bool files ){
244 m_files = files;
245 reparse();
246}
247void OFileSelector::setPopupMenu(const QPopupMenu * )
248{
249 //delete oldpopup;
250
251}
219bool OFileSelector::setPermission( ) const 252bool OFileSelector::setPermission( ) const
@@ -231,10 +264,25 @@ void OFileSelector::setPermissionChecked( bool check )
231} 264}
232QString OFileSelector::selectedName( ) 265QString OFileSelector::selectedName( )const
233{ 266{
234 QString string; 267 QString string;
268 if( m_selector == NORMAL ){
269 const DocLnk *lnk = m_select->selected();
270 string = lnk->file();
271 }else if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ) {
272 QListViewItem *item = m_View->currentItem();
273 if(item != 0 ){
274 string = item->text( 1 );
275 }
276 }
235 return string; 277 return string;
236} 278}
237const DocLnk* OFileSelector::selectedDocument( )const 279QStringList OFileSelector::selectedNames()const
238{ 280{
239 return 0; 281 QStringList list;
282
283}
284DocLnk OFileSelector::selectedDocument( )const
285{
286 DocLnk lnk;
287 return lnk;
240} 288}
@@ -288,3 +336,3 @@ void OFileSelector::reparse()
288{ 336{
289 if(m_View== 0) 337 if(m_View== 0 || m_selector == NORMAL)
290 return; 338 return;
@@ -293,3 +341,3 @@ void OFileSelector::reparse()
293 341
294 QDir dir( m_currentDir ); 342
295 QString currMime =m_mimeCheck->currentText(); 343 QString currMime =m_mimeCheck->currentText();
@@ -297,2 +345,3 @@ void OFileSelector::reparse()
297 if( m_autoMime ) { 345 if( m_autoMime ) {
346 QDir dir( m_currentDir );
298 m_mimetypes.clear(); 347 m_mimetypes.clear();
@@ -315,2 +364,3 @@ void OFileSelector::reparse()
315 } 364 }
365 m_mimetypes.prepend("All" );
316 m_mimeCheck->insertStringList(m_mimetypes ); 366 m_mimeCheck->insertStringList(m_mimetypes );
@@ -318,4 +368,5 @@ void OFileSelector::reparse()
318 }; 368 };
319 dir.setFilter(QDir::All ); 369 QDir dir( m_currentDir );
320 dir.setSorting(QDir::Name | QDir::DirsFirst ); 370 //dir.setFilter(-1 );
371 dir.setSorting(QDir::Name | QDir::DirsFirst | QDir::Reversed | QDir::IgnoreCase );
321 const QFileInfoList *list = dir.entryInfoList(); 372 const QFileInfoList *list = dir.entryInfoList();
@@ -324,17 +375,31 @@ void OFileSelector::reparse()
324 while( (fi=it.current()) ){ 375 while( (fi=it.current()) ){
376 if(fi->fileName() == ".." || fi->fileName() == "." ){
377 ++it;
378 continue;
379 }
380 qWarning("Test: %s", fi->fileName().latin1() );
325 if(fi->isSymLink() ){ 381 if(fi->isSymLink() ){
382 qWarning("Symlink %s", fi->fileName().latin1() );
326 QString file = fi->readLink(); 383 QString file = fi->readLink();
384 qWarning("File ->%s", file.latin1() );
327 for(int i=0; i<=4; i++ ){ // prepend from dos 385 for(int i=0; i<=4; i++ ){ // prepend from dos
328 QFileInfo info( file ); 386 QFileInfo info( fi->dirPath()+ "/"+file );
329 if( !info.exists() ){ 387 if( !info.exists() ){
330 addSymlink(m_currentDir, info.fileName(), TRUE ); 388 qWarning("does not exist" );
389 addSymlink(currMime, fi, TRUE );
331 break; 390 break;
332 }else if( info.isDir() ){ 391 }else if( info.isDir() ){
333 //addDir( ); 392 qWarning("isDir" );
393 addDir(currMime, fi, TRUE );
394 break;
334 }else if( info.isFile() ){ 395 }else if( info.isFile() ){
335 396 qWarning("isFile" );
397 addFile(currMime, fi, TRUE );
398 break;
336 }else if( info.isSymLink() ){ 399 }else if( info.isSymLink() ){
337 file = info.readLink(); 400 file = info.readLink();
401 qWarning("isSymlink again %s", file.latin1() );
338 }else if( i == 4 ){ // just insert it and have the symlink symbol 402 }else if( i == 4 ){ // just insert it and have the symlink symbol
339 addSymlink(m_currentDir, info.fileName() ); 403 addSymlink(currMime, fi );
404 qWarning("level too deep" );
340 } 405 }
@@ -342,6 +407,5 @@ void OFileSelector::reparse()
342 }else if( fi->isDir() ){ 407 }else if( fi->isDir() ){
343 408 addDir(currMime, fi );
344 }else if( fi->isFile() ) { // file ? 409 }else if( fi->isFile() ) { // file ?
345 410 addFile(currMime, fi );
346
347 } 411 }
@@ -349,7 +413,7 @@ void OFileSelector::reparse()
349 } 413 }
414 m_View->sort();
350} 415}
351QString OFileSelector::directory() 416QString OFileSelector::directory()const
352{ 417{
353 QString string; 418 return m_currentDir;
354 return string;
355} 419}
@@ -450,4 +514,8 @@ void OFileSelector::slotViewCheck(const QString &view ){
450 m_stack->addWidget( m_select, NORMAL ); 514 m_stack->addWidget( m_select, NORMAL );
451 m_stack->raiseWidget( NORMAL ); 515 m_mimeCheck->clear();
452 m_selector = NORMAL; 516 m_selector = NORMAL;
517 updateMimes();
518 m_mimeCheck->insertStringList( m_mimetypes );
519 m_stack->raiseWidget( NORMAL );
520
453 521
@@ -512,8 +580,56 @@ void OFileSelector::initializeListView()
512 header->hide(); 580 header->hide();
581 m_View->setSorting(1 );
513}; 582};
514 583
584void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink ){
585 qWarning("Add Files" );
586 if( !m_files ){
587 qWarning("not mfiles" );
588 return;
589 }
515 590
591 MimeType type( info->filePath() );
592 if(mime == "All" ){
593 ;
594 }else if( type.id() != mime ) {
595 return;
596 }
597 QPixmap pix = type.pixmap();
598 if(pix.isNull() )
599 pix = Resource::loadPixmap( "UnknownDocument-14" );
600 if( symlink ) // have a blended pic sometime
601 new OFileSelectorItem( m_View, pix, info->fileName(),
602 info->lastModified().toString(),
603 QString::number(info->size() ),
604 info->dirPath(true) );
605 else
606 new OFileSelectorItem( m_View, pix, info->fileName(),
607 info->lastModified().toString(),
608 QString::number(info->size() ),
609 info->dirPath(true) );
610}
611void OFileSelector::addDir(const QString &mime, QFileInfo *info, bool symlink )
612{
613 if(!m_dir )
614 return;
615 //if( showDirs )
616 {
617 if( symlink){
618 QPixmap map = (*m_pixmaps)["dirsymlink" ];
619 qWarning("Symlink" );
620 new OFileSelectorItem(m_View, map,
621 info->fileName(), info->lastModified().toString() ,
622 QString::number(info->size() ),info->dirPath(true), true );
623 }else
624 new OFileSelectorItem(m_View, Resource::loadPixmap("folder" ),
625 info->fileName(), info->lastModified().toString(),
626 QString::number(info->size() ),info->dirPath(true), true );
516 627
517 628 }
518 629}
630void OFileSelector::setShowDirs(bool dir )
631{
632 m_dir = dir;
633 reparse();
634}
519 635
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h
index a90219f..73674e2 100644
--- a/libopie/ofileselector.h
+++ b/libopie/ofileselector.h
@@ -40,3 +40,6 @@
40#include <qstringlist.h> 40#include <qstringlist.h>
41#include <qmap.h>
42#include <qvaluelist.h>
41 43
44#include <qpe/applnk.h>
42#include <qlistview.h> 45#include <qlistview.h>
@@ -61,4 +64,4 @@ class QVBoxLayout;
61class QPopupMenu; 64class QPopupMenu;
62 65class QFileInfo;
63 66//
64class OFileSelectorItem : public QListViewItem { 67class OFileSelectorItem : public QListViewItem {
@@ -66,3 +69,3 @@ class OFileSelectorItem : public QListViewItem {
66 OFileSelectorItem(QListView *view, const QPixmap &pixmap, const QString &path, 69 OFileSelectorItem(QListView *view, const QPixmap &pixmap, const QString &path,
67 const QString &date, const QString &size, 70 const QString &date, const QString &size, const QString &mDir,
68 bool isDir=false ): QListViewItem(view) { 71 bool isDir=false ): QListViewItem(view) {
@@ -72,4 +75,9 @@ class OFileSelectorItem : public QListViewItem {
72 setText(3, date ); 75 setText(3, date );
76 //setText(4, mDir );
77 m_dir = mDir;
73 dir = isDir; 78 dir = isDir;
74 } 79 }
80 QString directory()const{
81 return m_dir;
82 }
75 bool isDir()const{ 83 bool isDir()const{
@@ -80,4 +88,22 @@ class OFileSelectorItem : public QListViewItem {
80 } 88 }
89 QString key(int id, bool )const {
90 QString ke;
91 if( id == 0 || id == 1 ){ // name
92 if( dir ){
93 ke.append("0" );
94 ke.append( text(1) );
95 }else{
96 ke.append("1" );
97 ke.append( text(1) );
98 }
99 }else if( id == 2 ){ // size
100 return text(2);
101 }else if( id == 3 ){ // date
102 return text(3);
103 }
104 return ke;
105 };
81 private: 106 private:
82 bool dir:1; 107 bool dir:1;
108 QString m_dir;
83}; 109};
@@ -92,12 +118,13 @@ class OFileSelector : public QWidget {
92 118
93 bool showToolbar() const { return m_shTool; }; 119 bool isToolbarVisible() const { return m_shTool; };
94 bool showPermissionBar() const { return m_shPerm; }; 120 bool isPermissionBarVisible() const { return m_shPerm; };
95 bool showLineEdit()const { return m_shLne; }; 121 bool isLineEditVisible()const { return m_shLne; };
96 bool showChooser( )const { return m_shChooser; }; 122 bool isChooserVisible( )const { return m_shChooser; };
97 bool showYesCancel()const { return m_shYesNo; }; 123 bool isYesCancelVisible()const { return m_shYesNo; };
98 void setShowYesCancel( bool show ); 124 void setYesCancelVisible( bool show );
99 void setShowToolbar( bool show ); 125 void setToolbarVisible( bool show );
100 void setShowPermissionBar( bool show ); 126 void setPermissionBarVisible( bool show );
101 void setShowLineEdit(bool show) ; 127 void setLineEditVisible(bool show) ;
102 void setShowChooser( bool chooser ); 128 void setChooserVisible( bool chooser );
129
103 QCheckBox* permissionCheckbox(); 130 QCheckBox* permissionCheckbox();
@@ -105,5 +132,18 @@ class OFileSelector : public QWidget {
105 void setPermissionChecked( bool check ); 132 void setPermissionChecked( bool check );
133
106 void setMode( int ); 134 void setMode( int );
107 void setShowDirs(bool dir ) { }; 135
108 bool showDirs() {bool turn; return turn; } 136 bool showDirs()const { return m_dir; }
137 void setShowDirs(bool );
138
139 const QListView* listview() { return m_View; };
140
141 bool isCaseSensetive()const { return m_case; }
142 void setCaseSensetive(bool caSe );
143
144 bool showFiles()const { return m_files; };
145 void setShowFiles(bool );
146
147
148
109 int mode()const { return m_mode; }; 149 int mode()const { return m_mode; };
@@ -111,6 +151,6 @@ class OFileSelector : public QWidget {
111 void setSelector( int ); 151 void setSelector( int );
112 QString selectedName( ); 152
153
113 void setPopupMenu( const QPopupMenu * ); 154 void setPopupMenu( const QPopupMenu * );
114 155
115 const DocLnk* selectedDocument()const;
116 void updateLay(); 156 void updateLay();
@@ -118,5 +158,17 @@ class OFileSelector : public QWidget {
118 void reparse(); // re reads the dir 158 void reparse(); // re reads the dir
119 QString directory(); 159
160 QString selectedName( )const;
161 QStringList selectedNames()const;
162
163 QString selectedPath() const;
164 QStringList selectedPaths() const;
165
166 QString directory()const;
120 int fileCount(); 167 int fileCount();
121 168
169 /* the user needs to delete it */
170 DocLnk selectedDocument()const;
171 /* the user needs to delete it */
172 QValueList<DocLnk> selectedDocuments();
173
122 signals: 174 signals:
@@ -166,2 +218,5 @@ class OFileSelector : public QWidget {
166 bool m_autoMime:1; 218 bool m_autoMime:1;
219 bool m_case:1;
220 bool m_dir:1;
221 bool m_files:1;
167 222
@@ -171,5 +226,5 @@ class OFileSelector : public QWidget {
171 // implementation todo 226 // implementation todo
172 virtual void addFile(const QString &path, const QString &name, bool symlink = FALSE ) {}; 227 virtual void addFile(const QString &mime, QFileInfo *info, bool symlink = FALSE );
173 virtual void addDir( const QString &path, const QString &dir , bool symlink = FALSE ){}; 228 virtual void addDir( const QString &mime, QFileInfo *info , bool symlink = FALSE );
174 virtual void addSymlink(const QString &path, const QString &name, bool broken = FALSE ){}; 229 virtual void addSymlink(const QString &mime, QFileInfo *info, bool broken = FALSE ){};
175 void delItems(); 230 void delItems();
@@ -179,2 +234,3 @@ class OFileSelector : public QWidget {
179 void initializeListView(); 234 void initializeListView();
235 void initPics();
180 bool compliesMime(const QString &path, const QString &mime); 236 bool compliesMime(const QString &path, const QString &mime);
@@ -183,3 +239,3 @@ class OFileSelector : public QWidget {
183 OFileSelectorPrivate *d; 239 OFileSelectorPrivate *d;
184 240 static QMap<QString,QPixmap> *m_pixmaps;
185}; 241};