From: <ck...@us...> - 2008-01-31 22:26:19
|
Revision: 2692 http://krusader.svn.sourceforge.net/krusader/?rev=2692&view=rev Author: ckarai Date: 2008-01-31 14:26:24 -0800 (Thu, 31 Jan 2008) Log Message: ----------- Q3Dict -> QHash, part III., krarc Modified Paths: -------------- trunk/krusader_kde4/krArc/krarc.cpp trunk/krusader_kde4/krArc/krarc.h Modified: trunk/krusader_kde4/krArc/krarc.cpp =================================================================== --- trunk/krusader_kde4/krArc/krarc.cpp 2008-01-31 07:30:08 UTC (rev 2691) +++ trunk/krusader_kde4/krArc/krarc.cpp 2008-01-31 22:26:24 UTC (rev 2692) @@ -89,8 +89,6 @@ krConfig = new KConfig( "krusaderrc" ); confGrp = KConfigGroup( krConfig, "Dependencies" ); - dirDict.setAutoDelete(true); - arcTempDir = KStandardDirs::locateLocal("tmp",QString()); QString dirName = "krArc"+QDateTime::currentDateTime().toString(Qt::ISODate); dirName.replace(QRegExp(":"),"_"); @@ -138,7 +136,7 @@ QString arcDir = url.path().mid(arcFile->url().path().length()); if( arcDir.right(1) != "/") arcDir = arcDir+"/"; - if( dirDict.find( arcDir ) == 0 ) + if( dirDict.find( arcDir ) == dirDict.end() ) addNewDir( arcDir ); finished(); return; @@ -628,11 +626,11 @@ arcDir.truncate(arcDir.findRev("/")); if(arcDir.right(1) != "/") arcDir = arcDir+"/"; - UDSEntryList* dirList = dirDict.find(arcDir); - if( dirList == 0 ){ + if( dirDict.find(arcDir) == dirDict.end() ) { error(ERR_CANNOT_ENTER_DIRECTORY,url.path()); return; } + UDSEntryList* dirList = dirDict[ arcDir ]; totalSize(dirList->size()); listEntries(*dirList); finished(); @@ -714,6 +712,7 @@ } bool kio_krarcProtocol::initDirDict(const KUrl&url, bool forced){ + KRDEBUG(url.path()); // set the archive location //if( !setArcFile(url.path()) ) return false; // no need to rescan the archive if it's not changed @@ -738,6 +737,10 @@ if( !proc.normalExit() || !checkStatus( proc.exitStatus() ) ) return false; } // clear the dir dictionary + + QHashIterator< QString, KIO::UDSEntryList *> lit( dirDict ); + while( lit.hasNext() ) + delete lit.next().value(); dirDict.clear(); // add the "/" directory @@ -841,10 +844,11 @@ QString arcDir = findArcDirectory(url); if( arcDir.isEmpty() ) return 0; - UDSEntryList* dirList = dirDict.find(arcDir); - if( !dirList ){ + QHash<QString, KIO::UDSEntryList *>::iterator itef = dirDict.find(arcDir); + if( itef == dirDict.end() ) return 0; - } + UDSEntryList* dirList = itef.value(); + QString name = url.path(); if( arcFile->url().path(KUrl::RemoveTrailingSlash) == url.path(KUrl::RemoveTrailingSlash) ) name = "."; // the "/" case else{ @@ -896,8 +900,9 @@ UDSEntryList* dir; // check if the current dir exists - dir = dirDict.find(path); - if(dir != 0) return dir; // dir exists- return it ! + QHash<QString, KIO::UDSEntryList *>::iterator itef = dirDict.find(path); + if( itef != dirDict.end() ) + return itef.value(); // set dir to the parent dir dir = addNewDir(path.left(path.findRev("/",-2)+1)); @@ -1157,8 +1162,12 @@ if( !fullName.startsWith("/") ) fullName = "/"+fullName; QString path = fullName.left(fullName.findRev("/")+1); // set/create the directory UDSEntryList - dir = dirDict.find(path); - if(dir == 0) dir = addNewDir(path); + QHash<QString, KIO::UDSEntryList *>::iterator itef = dirDict.find( path ); + if( itef == dirDict.end() ) + dir = addNewDir(path); + else + dir = itef.value(); + QString name = fullName.mid(fullName.findRev("/")+1); // file name entry.insert( KIO::UDSEntry::UDS_NAME, name ); @@ -1176,7 +1185,7 @@ } if( S_ISDIR(mode) ){ fullName=fullName+"/"; - if(dirDict.find(fullName) == 0) + if(dirDict.find(fullName) == dirDict.end()) dirDict.insert(fullName,new UDSEntryList()); else { // try to overwrite an existing entry Modified: trunk/krusader_kde4/krArc/krarc.h =================================================================== --- trunk/krusader_kde4/krArc/krarc.h 2008-01-31 07:30:08 UTC (rev 2691) +++ trunk/krusader_kde4/krArc/krarc.h 2008-01-31 22:26:24 UTC (rev 2692) @@ -18,7 +18,7 @@ #define __krarc_h__ #include <qstring.h> -#include <q3dict.h> +#include <qhash.h> #include <qfile.h> #include <sys/types.h> @@ -85,7 +85,7 @@ static QString convertName( QString name ); static QString escape( QString name ); - Q3Dict<KIO::UDSEntryList> dirDict; //< the directoris data structure. + QHash<QString, KIO::UDSEntryList *> dirDict; //< the directoris data structure. bool encrypted; //< tells whether the archive is encrypted bool archiveChanged; //< true if the archive was changed. bool archiveChanging; //< true if the archive is currently changing. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |