bugs.gentoo.org #99643, bugs.kde.org #106274, in upstream BRANCH post 3.4.2 Index: kmailcvt/filters.hxx =================================================================== --- kmailcvt/filters.hxx (revision 438560) +++ kmailcvt/filters.hxx (revision 438561) @@ -85,6 +85,57 @@ }; + +/** +* Glorified QString[N] for (a) understandability (b) older gcc compatibility. +*/ +template class FolderStructureBase +{ +public: + typedef QString NString[size]; + /** Constructor. Need a default constructor for QValueList. */ + FolderStructureBase() {} ; + + /** Constructor. Turn N QStrings into a folder structure + * description. + */ + FolderStructureBase(const NString &s) + { + for(unsigned int i=0; i::Iterator it = folderMatrix.begin(); it != folderMatrix.end(); it++) { - QString tmp[5] = *it; + for ( FolderStructureIterator it = folderMatrix.begin(); it != folderMatrix.end(); it++) { + FolderStructure tmp = *it; QString _ID = tmp[2]; if(_ID == search) { Index: kmailcvt/filter_oe.cxx =================================================================== --- kmailcvt/filter_oe.cxx (revision 438560) +++ kmailcvt/filter_oe.cxx (revision 438561) @@ -389,15 +389,15 @@ { bool found = false; bool foundFilename = false; - QString folder = ""; + QString folder; // we must do this because folder with more than one upper letter // at start have maybe not a file named like the folder !!! QString search = filename.lower(); while (!found) { - for ( QValueList::Iterator it = folderStructure.begin(); it != folderStructure.end(); it++) { - QString tmp[4] = *it; + for ( FolderStructureIterator it = folderStructure.begin(); it != folderStructure.end(); it++) { + FolderStructure tmp = *it; if(foundFilename == false) { QString _tmpFileName = tmp[1]; _tmpFileName = _tmpFileName.lower(); @@ -410,7 +410,7 @@ QString _currentID = tmp[2]; QString _parentID = tmp[3]; if(_currentID == search) { - if(_parentID == "") { // this is the root of the folder + if(_parentID.isEmpty()) { // this is the root of the folder found = true; break; } else { @@ -421,7 +421,7 @@ } } // need to break the while loop maybe in some cases - if((foundFilename == false) && (folder == "")) return folder; + if((foundFilename == false) && (folder.isEmpty())) return folder; } return folder; } Index: kmailcvt/filter_pmail.hxx =================================================================== --- kmailcvt/filter_pmail.hxx (revision 438560) +++ kmailcvt/filter_pmail.hxx (revision 438561) @@ -50,8 +50,18 @@ QDir dir; /** pointer to the info */ FilterInfo * inf; - /** QStringList with the foldernames, First String contains the ID, the second the folder */ - QValueList folderMatrix; + + /** Folder structure here has 5 entries. */ + typedef FolderStructureBase<5> FolderStructure; + /** List with the folder matrix, which contains following strings: + 1. type (2 for root-folder, 1 for folder, 0 for mailarchiv) + 2. type (1 for root-folder, 3 for folder, 0 for mailarchiv) + 3. "ID:flag:filename" of folder/archiv + 4. "ID:name" of parent folder + 5. name of folder/archiv + */ + QValueList folderMatrix; + typedef QValueList::Iterator FolderStructureIterator; /** true, if the folderfile is parsed **/ bool folderParsed; Index: kmailcvt/filter_oe.hxx =================================================================== --- kmailcvt/filter_oe.hxx (revision 438560) +++ kmailcvt/filter_oe.hxx (revision 438561) @@ -61,8 +61,17 @@ bool parsedFolder; /** true if the current parsing file is the folder file */ bool currentIsFolderFile; + + /** Folder structure with following 4 entries: + 1. descriptive folder name + 2. filename + 3. ID of current folder + 4. ID of parent folder + */ + typedef FolderStructureBase<4> FolderStructure; /** matrix with information about the folder structure*/ - QValueList folderStructure; + QValueList folderStructure; + typedef QValueList::Iterator FolderStructureIterator; /** name of the current folder */ QString folderName;