Diffstat (limited to 'noncore/apps/advancedfm/advancedfm.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/advancedfm/advancedfm.cpp | 200 |
1 files changed, 44 insertions, 156 deletions
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp index 74654fc..fc6c3bf 100644 --- a/noncore/apps/advancedfm/advancedfm.cpp +++ b/noncore/apps/advancedfm/advancedfm.cpp | |||
@@ -75,6 +75,8 @@ AdvancedFm::AdvancedFm( ) | |||
75 | 75 | ||
76 | initConnections(); | 76 | initConnections(); |
77 | populateLocalView(); | 77 | TabWidget->setCurrentTab(1); |
78 | populateRemoteView(); | 78 | populateView(); |
79 | TabWidget->setCurrentTab(0); | ||
80 | populateView(); | ||
79 | currentPathCombo->setFocus(); | 81 | currentPathCombo->setFocus(); |
80 | } | 82 | } |
@@ -116,20 +118,25 @@ void AdvancedFm::tabChanged(QWidget *w) | |||
116 | +checkDiskSpace( (const QString &) path )+ " kB free" ); | 118 | +checkDiskSpace( (const QString &) path )+ " kB free" ); |
117 | chdir( path.latin1()); | 119 | chdir( path.latin1()); |
120 | //2populateView(); | ||
118 | } | 121 | } |
119 | 122 | ||
120 | 123 | ||
121 | void AdvancedFm::populateLocalView() | 124 | void AdvancedFm::populateView() |
122 | { | 125 | { |
123 | QPixmap pm; | 126 | QPixmap pm; |
124 | Local_View->clear(); | 127 | QListView *thisView = CurrentView(); |
125 | currentDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); | 128 | QDir *thisDir = CurrentDir(); |
126 | currentDir.setMatchAllDirs(TRUE); | 129 | QString path = thisDir->canonicalPath(); |
127 | currentDir.setNameFilter(filterStr); | 130 | |
131 | thisView->clear(); | ||
132 | thisDir->setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); | ||
133 | thisDir->setMatchAllDirs(TRUE); | ||
134 | thisDir->setNameFilter(filterStr); | ||
128 | QString fileL, fileS, fileDate; | 135 | QString fileL, fileS, fileDate; |
129 | QString fs= getFileSystemType((const QString &) currentDir.canonicalPath()); | 136 | QString fs= getFileSystemType((const QString &) path); |
130 | setCaption("AdvancedFm :: "+fs+" :: " | 137 | setCaption("AdvancedFm :: "+fs+" :: " |
131 | +checkDiskSpace((const QString &) currentDir.canonicalPath())+" kB free" ); | 138 | +checkDiskSpace((const QString &) path)+" kB free" ); |
132 | bool isDir=FALSE; | 139 | bool isDir=FALSE; |
133 | const QFileInfoList *list = currentDir.entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); | 140 | const QFileInfoList *list = thisDir->entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); |
134 | QFileInfoListIterator it(*list); | 141 | QFileInfoListIterator it(*list); |
135 | QFileInfo *fi; | 142 | QFileInfo *fi; |
@@ -149,5 +156,5 @@ void AdvancedFm::populateLocalView() | |||
149 | fileL.sprintf( "%s",fi->fileName().data() ); | 156 | fileL.sprintf( "%s",fi->fileName().data() ); |
150 | fileDate= fi->lastModified().toString(); | 157 | fileDate= fi->lastModified().toString(); |
151 | if( QDir(QDir::cleanDirPath( currentDir.canonicalPath()+"/"+fileL)).exists() ) | 158 | if( QDir(QDir::cleanDirPath( path +"/"+fileL)).exists() ) |
152 | { | 159 | { |
153 | fileL+="/"; | 160 | fileL+="/"; |
@@ -155,8 +162,10 @@ void AdvancedFm::populateLocalView() | |||
155 | } | 162 | } |
156 | } | 163 | } |
157 | QFileInfo fileInfo( currentDir.canonicalPath()+"/"+fileL); | 164 | |
165 | QFileInfo fileInfo( path + "/" + fileL); | ||
166 | |||
158 | if(fileL !="./" && fi->exists()) | 167 | if(fileL !="./" && fi->exists()) |
159 | { | 168 | { |
160 | item= new QListViewItem( Local_View, fileL, fileS , fileDate); | 169 | item= new QListViewItem( thisView, fileL, fileS , fileDate); |
161 | 170 | ||
162 | if(isDir || fileL.find("/",0,TRUE) != -1) | 171 | if(isDir || fileL.find("/",0,TRUE) != -1) |
@@ -204,5 +213,5 @@ void AdvancedFm::populateLocalView() | |||
204 | } | 213 | } |
205 | 214 | ||
206 | if(currentDir.canonicalPath().find("dev",0,TRUE) != -1) | 215 | if( path.find("dev",0,TRUE) != -1) |
207 | { | 216 | { |
208 | struct stat buf; | 217 | struct stat buf; |
@@ -211,5 +220,5 @@ void AdvancedFm::populateLocalView() | |||
211 | struct dirent *mydirent; | 220 | struct dirent *mydirent; |
212 | 221 | ||
213 | if((dir = opendir( currentDir.canonicalPath().latin1())) != NULL) | 222 | if((dir = opendir( path.latin1())) != NULL) |
214 | while ((mydirent = readdir(dir)) != NULL) | 223 | while ((mydirent = readdir(dir)) != NULL) |
215 | { | 224 | { |
@@ -222,5 +231,5 @@ void AdvancedFm::populateLocalView() | |||
222 | if( fileL.find(".") == -1 ) | 231 | if( fileL.find(".") == -1 ) |
223 | { | 232 | { |
224 | item= new QListViewItem( Local_View, fileL, fileS, fileDate); | 233 | item= new QListViewItem( thisView, fileL, fileS, fileDate); |
225 | pm = Resource::loadPixmap( "UnknownDocument-14" ); | 234 | pm = Resource::loadPixmap( "UnknownDocument-14" ); |
226 | item->setPixmap( 0,pm); | 235 | item->setPixmap( 0,pm); |
@@ -231,130 +240,9 @@ void AdvancedFm::populateLocalView() | |||
231 | } | 240 | } |
232 | 241 | ||
233 | Local_View->setSorting( 3,FALSE); | 242 | thisView->setSorting( 3,FALSE); |
234 | fillCombo( (const QString &) currentDir.canonicalPath()); | 243 | fillCombo( (const QString &) path ); |
235 | } | 244 | } |
236 | 245 | ||
237 | 246 | ||
238 | void AdvancedFm::populateRemoteView() | ||
239 | { | ||
240 | QPixmap pm; | ||
241 | Remote_View->clear(); | ||
242 | currentRemoteDir.setSorting(/* QDir::Size*/ /*| QDir::Reversed | */QDir::DirsFirst); | ||
243 | currentRemoteDir.setMatchAllDirs(TRUE); | ||
244 | currentRemoteDir.setNameFilter(filterStr); | ||
245 | QString fileL, fileS, fileDate; | ||
246 | |||
247 | QString fs= getFileSystemType((const QString &) currentRemoteDir.canonicalPath()); | ||
248 | setCaption("AdvancedFm :: "+fs+" :: " | ||
249 | +checkDiskSpace((const QString &) currentRemoteDir.canonicalPath())+" kB free" ); | ||
250 | bool isDir=FALSE; | ||
251 | const QFileInfoList *list = currentRemoteDir.entryInfoList( /*QDir::All*/ /*, QDir::SortByMask*/); | ||
252 | QFileInfoListIterator it(*list); | ||
253 | QFileInfo *fi; | ||
254 | while ( (fi=it.current()) ) | ||
255 | { | ||
256 | if (fi->isSymLink() ) | ||
257 | { | ||
258 | QString symLink=fi->readLink(); | ||
259 | // qDebug("Symlink detected "+symLink); | ||
260 | QFileInfo sym( symLink); | ||
261 | fileS.sprintf( "%10i", sym.size() ); | ||
262 | fileL.sprintf( "%s -> %s", fi->fileName().data(),sym.filePath().data() ); | ||
263 | fileDate = sym.lastModified().toString(); | ||
264 | } | ||
265 | else | ||
266 | { | ||
267 | // qDebug("Not a dir: "+currentDir.canonicalPath()+fileL); | ||
268 | fileS.sprintf( "%10i", fi->size() ); | ||
269 | fileL.sprintf( "%s",fi->fileName().data() ); | ||
270 | fileDate= fi->lastModified().toString(); | ||
271 | |||
272 | if( QDir(QDir::cleanDirPath( currentRemoteDir.canonicalPath()+"/"+fileL)).exists() ) | ||
273 | { | ||
274 | fileL+="/"; | ||
275 | isDir=TRUE; | ||
276 | // qDebug( fileL); | ||
277 | } | ||
278 | } | ||
279 | |||
280 | QFileInfo fileInfo( currentRemoteDir.canonicalPath()+"/"+fileL); | ||
281 | if(fileL !="./" && fi->exists()) | ||
282 | { | ||
283 | item= new QListViewItem( Remote_View, fileL, fileS, fileDate); | ||
284 | QPixmap pm; | ||
285 | |||
286 | if(isDir || fileL.find("/",0,TRUE) != -1) | ||
287 | { | ||
288 | if( !QDir( fi->filePath() ).isReadable()) | ||
289 | pm = Resource::loadPixmap( "lockedfolder" ); | ||
290 | else | ||
291 | pm= Resource::loadPixmap( "folder" ); | ||
292 | } | ||
293 | else if ( fs == "vfat" && fileInfo.filePath().contains("/bin") ) | ||
294 | { | ||
295 | pm = Resource::loadPixmap( "exec"); | ||
296 | } | ||
297 | else if( (fileInfo.permission( QFileInfo::ExeUser) | ||
298 | | fileInfo.permission( QFileInfo::ExeGroup) | ||
299 | | fileInfo.permission( QFileInfo::ExeOther)) && fs != "vfat" ) | ||
300 | { | ||
301 | pm = Resource::loadPixmap( "exec"); | ||
302 | } | ||
303 | else if( !fi->isReadable() ) | ||
304 | { | ||
305 | pm = Resource::loadPixmap( "locked" ); | ||
306 | } | ||
307 | else | ||
308 | { | ||
309 | MimeType mt(fi->filePath()); | ||
310 | pm=mt.pixmap(); //sets the correct pixmap for mimetype | ||
311 | if(pm.isNull()) | ||
312 | pm = Resource::loadPixmap( "UnknownDocument-14" ); | ||
313 | } | ||
314 | if( fi->isSymLink() && fileL.find("->",0,TRUE) != -1) | ||
315 | { | ||
316 | // overlay link image | ||
317 | pm= Resource::loadPixmap( "folder" ); | ||
318 | QPixmap lnk = Resource::loadPixmap( "opie/symlink" ); | ||
319 | QPainter painter( &pm ); | ||
320 | painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); | ||
321 | pm.setMask( pm.createHeuristicMask( FALSE ) ); | ||
322 | } | ||
323 | item->setPixmap( 0, pm); | ||
324 | } | ||
325 | isDir=FALSE; | ||
326 | ++it; | ||
327 | } | ||
328 | |||
329 | if(currentRemoteDir.canonicalPath().find("dev",0,TRUE) != -1) | ||
330 | { | ||
331 | struct stat buf; | ||
332 | DIR *dir; | ||
333 | struct dirent *mydirent; | ||
334 | if((dir = opendir( currentRemoteDir.canonicalPath().latin1())) != NULL) | ||
335 | |||
336 | while ((mydirent = readdir(dir)) != NULL) | ||
337 | { | ||
338 | lstat( mydirent->d_name, &buf); | ||
339 | // qDebug(mydirent->d_name); | ||
340 | fileL.sprintf("%s", mydirent->d_name); | ||
341 | fileS.sprintf("%d,%d", (int) (buf.st_dev>>8)&0xFF, (int) buf.st_dev &0xFF); | ||
342 | fileDate.sprintf("%s", ctime( &buf.st_mtime)); | ||
343 | |||
344 | if( fileL.find(".") == -1 ) | ||
345 | { | ||
346 | item= new QListViewItem( Remote_View, fileL, fileS, fileDate); | ||
347 | pm = Resource::loadPixmap( "UnknownDocument-14" ); | ||
348 | item->setPixmap( 0,pm); | ||
349 | } | ||
350 | } | ||
351 | |||
352 | closedir(dir); | ||
353 | } | ||
354 | |||
355 | Remote_View->setSorting( 3,FALSE); | ||
356 | fillCombo( (const QString &) currentRemoteDir.canonicalPath() ); | ||
357 | } | ||
358 | |||
359 | void AdvancedFm::ListClicked(QListViewItem *selectedItem) | 247 | void AdvancedFm::ListClicked(QListViewItem *selectedItem) |
360 | { | 248 | { |
@@ -384,5 +272,5 @@ void AdvancedFm::ListClicked(QListViewItem *selectedItem) | |||
384 | { | 272 | { |
385 | CurrentDir()->cd( strItem, TRUE); | 273 | CurrentDir()->cd( strItem, TRUE); |
386 | PopulateView(); | 274 | populateView(); |
387 | CurrentView()->ensureItemVisible( CurrentView()->firstChild()); | 275 | CurrentView()->ensureItemVisible( CurrentView()->firstChild()); |
388 | } | 276 | } |
@@ -435,5 +323,5 @@ void AdvancedFm::currentPathComboChanged() | |||
435 | { | 323 | { |
436 | CurrentDir()->setPath( currentPathCombo->lineEdit()->text() ); | 324 | CurrentDir()->setPath( currentPathCombo->lineEdit()->text() ); |
437 | PopulateView(); | 325 | populateView(); |
438 | } | 326 | } |
439 | else | 327 | else |
@@ -472,5 +360,5 @@ void AdvancedFm::currentPathComboActivated(const QString & currentPath) | |||
472 | chdir( currentPath.latin1() ); | 360 | chdir( currentPath.latin1() ); |
473 | CurrentDir()->cd( currentPath, TRUE); | 361 | CurrentDir()->cd( currentPath, TRUE); |
474 | PopulateView(); | 362 | populateView(); |
475 | update(); | 363 | update(); |
476 | } | 364 | } |
@@ -498,5 +386,5 @@ void AdvancedFm::homeButtonPushed() | |||
498 | chdir( current.latin1() ); | 386 | chdir( current.latin1() ); |
499 | CurrentDir()->cd( current, TRUE); | 387 | CurrentDir()->cd( current, TRUE); |
500 | PopulateView(); | 388 | populateView(); |
501 | update(); | 389 | update(); |
502 | } | 390 | } |
@@ -508,5 +396,5 @@ void AdvancedFm::docButtonPushed() | |||
508 | 396 | ||
509 | CurrentDir()->cd( current, TRUE); | 397 | CurrentDir()->cd( current, TRUE); |
510 | PopulateView(); | 398 | populateView(); |
511 | update(); | 399 | update(); |
512 | } | 400 | } |
@@ -517,5 +405,5 @@ void AdvancedFm::SDButtonPushed() | |||
517 | chdir( current.latin1() ); | 405 | chdir( current.latin1() ); |
518 | CurrentDir()->cd( current, TRUE); | 406 | CurrentDir()->cd( current, TRUE); |
519 | PopulateView(); | 407 | populateView(); |
520 | update(); | 408 | update(); |
521 | } | 409 | } |
@@ -531,5 +419,5 @@ void AdvancedFm::CFButtonPushed() | |||
531 | chdir( current.latin1() ); | 419 | chdir( current.latin1() ); |
532 | CurrentDir()->cd( current, TRUE); | 420 | CurrentDir()->cd( current, TRUE); |
533 | PopulateView(); | 421 | populateView(); |
534 | update(); | 422 | update(); |
535 | } | 423 | } |
@@ -632,5 +520,5 @@ void AdvancedFm::QPEButtonPushed() | |||
632 | chdir( current.latin1() ); | 520 | chdir( current.latin1() ); |
633 | CurrentDir()->cd( current, TRUE); | 521 | CurrentDir()->cd( current, TRUE); |
634 | PopulateView(); | 522 | populateView(); |
635 | update(); | 523 | update(); |
636 | } | 524 | } |
@@ -949,5 +837,5 @@ void AdvancedFm::gotoCustomDir(const QString &dir) | |||
949 | chdir( curDir.latin1() ); | 837 | chdir( curDir.latin1() ); |
950 | thisDir->cd( curDir, TRUE); | 838 | thisDir->cd( curDir, TRUE); |
951 | PopulateView(); | 839 | populateView(); |
952 | } | 840 | } |
953 | } | 841 | } |
@@ -978,12 +866,4 @@ QDir *AdvancedFm::OtherDir() | |||
978 | } | 866 | } |
979 | 867 | ||
980 | void AdvancedFm::PopulateView() | ||
981 | { | ||
982 | if ( whichTab == 1) | ||
983 | populateLocalView(); | ||
984 | else | ||
985 | populateRemoteView(); | ||
986 | } | ||
987 | |||
988 | QListView * AdvancedFm::CurrentView() | 868 | QListView * AdvancedFm::CurrentView() |
989 | { | 869 | { |
@@ -1001,2 +881,10 @@ QListView * AdvancedFm::OtherView() | |||
1001 | return Local_View; | 881 | return Local_View; |
1002 | } | 882 | } |
883 | |||
884 | void AdvancedFm::setOtherTabCurrent() | ||
885 | { | ||
886 | if ( whichTab == 1) | ||
887 | TabWidget->setCurrentTab(1); | ||
888 | else | ||
889 | TabWidget->setCurrentTab(0); | ||
890 | } | ||