summaryrefslogtreecommitdiff
path: root/libopie/ofileselector/olocallister.cpp
authorzecke <zecke>2002-09-15 22:19:08 (UTC)
committer zecke <zecke>2002-09-15 22:19:08 (UTC)
commitaabe567e96d040c483b947f5758a1405cc312fdc (patch) (unidiff)
treeceb8ebba2384f1737277c0dfb89256eaa2ac1717 /libopie/ofileselector/olocallister.cpp
parent09561ee29b5288e02e513172fc590d27e9e09333 (diff)
downloadopie-aabe567e96d040c483b947f5758a1405cc312fdc.zip
opie-aabe567e96d040c483b947f5758a1405cc312fdc.tar.gz
opie-aabe567e96d040c483b947f5758a1405cc312fdc.tar.bz2
add files
Diffstat (limited to 'libopie/ofileselector/olocallister.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofileselector/olocallister.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/libopie/ofileselector/olocallister.cpp b/libopie/ofileselector/olocallister.cpp
new file mode 100644
index 0000000..6ffcf1e
--- a/dev/null
+++ b/libopie/ofileselector/olocallister.cpp
@@ -0,0 +1,118 @@
1#include <qdir.h>
2#include <qfileinfo.h>
3#include <qmap.h>
4
5#include <qpe/mimetype.h>
6
7#include "ofileselector.h"
8#include "olocallister.h"
9
10OLocalLister::OLocalLister( OFileSelector* file )
11 : OLister( file )
12{
13}
14OLocalLister::~OLocalLister() {
15}
16
17QMap<QString, QStringList> OLocalLister::mimeTypes( const QString& curDir ) {
18 QMap<QString, QStringList> mimes;
19
20 // let's find possible mimetypes
21 QDir dir( curDir );
22 dir.setFilter( QDir::Files | QDir::Readable );
23 dir.setSorting( QDir::Size );
24
25 const QFileInfoList *list = dir.entryInfoList();
26 QFileInfoListIterator it( *list );
27 QFileInfo *fi;
28
29 while( (fi=it.current() ) ) {
30 /* skip .desktop */
31 if( fi->extension() == QString::fromLatin1("desktop") ){
32 ++it;
33 continue;
34 }
35 MimeType type( fi->absFilePath() );
36
37 if( !mimes.contains( type.id() ) ){
38 mimes.insert( type.id(), type.id() );
39 }
40
41 ++it;
42 }
43
44 return mimes;
45}
46/* FIXME mimecheck
47 * use mime check for that
48 * filter dirs
49 * filter filters
50 * filter files
51 * filter mimetypes
52 */
53void OLocalLister::reparse( const QString& path ) {
54 QString currentMimeType;
55 QDir dir( path );
56
57 dir.setSorting( view()->sorting() );
58 dir.setFilter( view()->filter() );
59
60
61 const QFileInfoList *list = dir.entryInfoList();
62 QFileInfoListIterator it( *list );
63 QFileInfo *fi;
64
65 while( (fi=it.current() ) ){
66
67 if( fi->fileName() == QString::fromLatin1("..") ||
68 fi->fileName() == QString::fromLatin1(".") ){
69 ++it;
70 continue;
71 }
72 if( fi->isSymLink() ){
73 QString file = fi->dirPath( true ) + "/" + fi->readLink();
74 /*
75 * 5 tries to prevent dos attack
76 */
77 for( int i = 0; i<=4; i++) {
78 QFileInfo info( file );
79 if( !info.exists() ){
80 addSymlink( currentMimeType, fi, TRUE );
81 break;
82 }else if( info.isDir() ){
83 if (!showDirs() )
84 break;
85
86 addDir( currentMimeType, fi,
87 TRUE );
88 break;
89 }else if( info.isFile() ){
90 /* if not show files skip it */
91 if (!showFiles() )
92 break;
93
94 /* check if we comply to the mimetype */
95 MimeType type( info.absFilePath() );
96 if (compliesMime( type.id() ) )
97 addFile( currentMimeType, fi, TRUE );
98
99 break;
100 }else if( info.isSymLink() ){
101 file = info.dirPath(true ) + "/" + info.readLink() ;
102 break;
103 }else if( i == 4){
104 addSymlink( currentMimeType, fi );
105 }
106 }
107
108 }else if( fi->isDir() ){
109 if (showDirs() )
110 addDir( currentMimeType, fi );
111 }else if( fi->isFile() ){
112 if ( showFiles() )
113 addFile( currentMimeType, fi );
114 }
115 ++it;
116 } // of while loop
117}
118