author | zecke <zecke> | 2002-09-15 22:19:08 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-09-15 22:19:08 (UTC) |
commit | aabe567e96d040c483b947f5758a1405cc312fdc (patch) (unidiff) | |
tree | ceb8ebba2384f1737277c0dfb89256eaa2ac1717 /libopie/ofileselector/olocallister.cpp | |
parent | 09561ee29b5288e02e513172fc590d27e9e09333 (diff) | |
download | opie-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.cpp | 118 |
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 | |||
10 | OLocalLister::OLocalLister( OFileSelector* file ) | ||
11 | : OLister( file ) | ||
12 | { | ||
13 | } | ||
14 | OLocalLister::~OLocalLister() { | ||
15 | } | ||
16 | |||
17 | QMap<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 | */ | ||
53 | void 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 | |||