void p3Fido::pollMaildir() { QString home = getenv( "HOME" ); QString maildirPath = home + "/Maildir/new"; QDir maildir( maildirPath ); if( !maildir.exists() ){ std::cerr << "Fido: Maildir " << maildirPath.toStdString() << " does not exist!" << std::endl; return; } QStringList files = maildir.entryList(); for( QStringList::ConstIterator it = files.begin(); it != files.end(); it++ ){ QString filename = *it; if( filename[0] == '.' ) continue; QString fullname = maildirPath + '/' + filename; std::cerr << "Fido: Maildir entry: " << filename.toStdString() << std::endl; sendMail( fullname.toUtf8() ); remove( fullname.toUtf8() ); } }
//----------------------------------------------------------------------------- bool KMFolderDir::reload(void) { QDir dir; KMFolder* folder; QFileInfo* fileInfo; QStringList diList; QPtrList<KMFolder> folderList; clear(); const QString fldPath = path(); dir.setFilter(QDir::Files | QDir::Dirs | QDir::Hidden); dir.setNameFilter("*"); if (!dir.cd(fldPath, TRUE)) { QString msg = i18n("<qt>Cannot enter folder <b>%1</b>.</qt>").arg(fldPath); KMessageBox::information(0, msg); return FALSE; } QFileInfoList* fiList=(QFileInfoList*)dir.entryInfoList(); if (!fiList) { QString msg = i18n("<qt>Folder <b>%1</b> is unreadable.</qt>").arg(fldPath); KMessageBox::information(0, msg); return FALSE; } for (fileInfo=fiList->first(); fileInfo; fileInfo=fiList->next()) { const QString fname = fileInfo->fileName(); if( ( fname[0] == '.' ) && !fname.endsWith( ".directory" ) ) { // ignore all hidden files except our subfolder containers continue; } if( fname == ".directory" ) { // ignore .directory files (not created by us) continue; } // Collect subdirectories. if ( fileInfo->isDir() && fname.startsWith( "." ) && fname.endsWith( ".directory" ) ) { diList.append(fname); continue; } if ( mDirType == KMImapDir && path().startsWith( KMFolderImap::cacheLocation() ) ) { // Is the below needed for dimap as well? if ( KMFolderImap::encodeFileName( KMFolderImap::decodeFileName( fname ) ) == fname ) { folder = new KMFolder( this, KMFolderImap::decodeFileName( fname ), KMFolderTypeImap ); append(folder); folderList.append(folder); } } else if ( mDirType == KMDImapDir && path().startsWith( KMFolderCachedImap::cacheLocation() ) ) { if (fileInfo->isDir()) // a directory { // For this to be a cached IMAP folder, it must be in the KMail dimap // subdir and must be have a uidcache file or be a maildir folder QString maildir(fname + "/new"); QString imapcachefile = QString::fromLatin1(".%1.uidcache").arg(fname); if ( dir.exists( imapcachefile) || dir.exists( maildir ) ) { folder = new KMFolder( this, fname, KMFolderTypeCachedImap ); append(folder); folderList.append(folder); } } } else if ( mDirType == KMSearchDir) { folder = new KMFolder( this, fname, KMFolderTypeSearch ); append(folder); folderList.append(folder); } else if ( mDirType == KMStandardDir ) { // This is neither an imap, dimap nor a search folder. Can be either // mbox or maildir. if (fileInfo->isDir()) { // Maildir folder if( dir.exists( fname + "/new" ) ) { folder = new KMFolder( this, fname, KMFolderTypeMaildir ); append(folder); folderList.append(folder); } } else { // all other files are folders (at the moment ;-) folder = new KMFolder( this, fname, KMFolderTypeMbox ); append(folder); folderList.append(folder); } } } for (folder=folderList.first(); folder; folder=folderList.next()) { for(QStringList::Iterator it = diList.begin(); it != diList.end(); ++it) if (*it == "." + folder->fileName() + ".directory") { KMFolderDir* folderDir = new KMFolderDir( folder, this, *it, mDirType); folderDir->reload(); append(folderDir); folder->setChild(folderDir); break; } } return TRUE; }