diff options
Diffstat (limited to 'src/app/VFS/krvfshandler.cpp')
-rw-r--r-- | src/app/VFS/krvfshandler.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/app/VFS/krvfshandler.cpp b/src/app/VFS/krvfshandler.cpp new file mode 100644 index 0000000..553c55d --- /dev/null +++ b/src/app/VFS/krvfshandler.cpp @@ -0,0 +1,71 @@ +/*************************************************************************** + krvfshandler.cpp - description + ------------------- + begin : Fri Dec 5 2003 + copyright : (C) 2003 by Shie Erlich & Rafi Yanai + email : + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "krvfshandler.h" +#include "normal_vfs.h" +#include "temp_vfs.h" +#include "ftp_vfs.h" +#include "virt_vfs.h" + +#include <tqdir.h> + +#include <kdebug.h> + + +KrVfsHandler::KrVfsHandler(){ +} +KrVfsHandler::~KrVfsHandler(){ +} + +vfs::VFS_TYPE KrVfsHandler::getVfsType(const KURL& url){ + TQString protocol = url.protocol(); + + if( ( protocol == "krarc" || protocol == "tar" || protocol == "zip" ) && + TQDir(url.path(-1)).exists() ) + return vfs::NORMAL; + + if( url.isLocalFile() ){ + return vfs::NORMAL; + } + else{ + if(url.protocol() == "virt") return vfs::VIRT; + else return vfs::FTP; + } + return vfs::ERROR; +} + +vfs* KrVfsHandler::getVfs(const KURL& url,TQObject* parent,vfs* oldVfs){ + vfs::VFS_TYPE newType,oldType = vfs::ERROR; + + if(oldVfs) oldType = oldVfs->vfs_getType(); + newType = getVfsType(url); + + + vfs* newVfs = oldVfs; + + if( oldType != newType ){ + switch( newType ){ + case (vfs::NORMAL) : newVfs = new normal_vfs(parent); break; + case (vfs::FTP ) : newVfs = new ftp_vfs(parent) ; break; + case (vfs::TEMP ) : newVfs = 0/*new temp_vfs(parent)*/ ; break; + case (vfs::VIRT ) : newVfs = new virt_vfs(parent) ; break; + case (vfs::ERROR ) : newVfs = 0 ; break; + } + } + + return newVfs; +} |