diff options
Diffstat (limited to 'kmailcvt/filter_opera.cxx')
-rw-r--r-- | kmailcvt/filter_opera.cxx | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/kmailcvt/filter_opera.cxx b/kmailcvt/filter_opera.cxx deleted file mode 100644 index 90aef382..00000000 --- a/kmailcvt/filter_opera.cxx +++ /dev/null @@ -1,158 +0,0 @@ -/*************************************************************************** - filter_opera.cxx - Opera mail import - ------------------- - begin : Januar 26 2005 - copyright : (C) 2005 by Danny Kukawka - email : danny.kukawka@web.de - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 <config.h> -#include <tdelocale.h> -#include <tdefiledialog.h> -#include <tdetempfile.h> -#include <kdebug.h> - -#include "filter_opera.hxx" - - -FilterOpera::FilterOpera() : - Filter( i18n("Import Opera Emails"), - "Danny Kukawka", - i18n("<p><b>Opera email import filter</b></p>" - "<p>This filter will import mails from Opera mail folder. Use this filter " - "if you want to import all mails within a account in the Opera maildir.</p>" - "<p>Select the directory of the account (usually ~/.opera/mail/store/account*).</p>" - "<p><b>Note:</b> Emails will be imported into a folder named after the account " - "they came from, prefixed with OPERA-</p>" )) -{} - -FilterOpera::~FilterOpera() -{ -} - -void FilterOpera::import(FilterInfo *info) -{ - /** try to go to opera mailfolder in the home of the user */ - TQString startdir = TQDir::homeDirPath() + "/.opera/mail/store/"; - TQDir d( startdir ); - if ( !d.exists() ) { - startdir = TQDir::homeDirPath(); - } - - //TQString mailDir = KFileDialog::getExistingDirectory(TQDir::homeDirPath(), info->parent()); - KFileDialog *kfd; - kfd = new KFileDialog( startdir, "", 0, "tdefiledialog", true ); - kfd->setMode(KFile::Directory | KFile::LocalOnly); - kfd->exec(); - TQString operaDir = kfd->selectedFile(); - delete kfd; - - if (operaDir.isEmpty()) { - info->alert(i18n("No directory selected.")); - } - /** - * If the user only select homedir no import needed because - * there should be no files and we surely import wrong files. - */ - else if ( operaDir == TQDir::homeDirPath() || operaDir == (TQDir::homeDirPath() + "/")) { - info->addLog(i18n("No files found for import.")); - } else { - info->setOverall(0); - - TQDir importDir (operaDir); - TQStringList files = importDir.entryList("*.[mM][bB][sS]", TQDir::Files, TQDir::Name); - - // Count total number of files to be processed - info->addLog(i18n("Counting files...")); - int totalFiles = files.count(); - int currentFile = 1; - - if(totalFiles > 0) { - int overall_status = 0; - - info->addLog(i18n("Importing new mail files...")); - for ( TQStringList::Iterator mailFile = files.begin(); mailFile != files.end(); ++mailFile) { - info->setCurrent(0); - TQFile operaArchiv( importDir.filePath(*mailFile) ); - if (! operaArchiv.open( IO_ReadOnly ) ) { - info->alert( i18n("Unable to open %1, skipping").arg( *mailFile ) ); - } else { - info->addLog( i18n("Importing emails from %1...").arg( *mailFile ) ); - TQFileInfo filenameInfo( importDir.filePath(*mailFile) ); - TQString folderName( "OPERA-" + importDir.dirName() ); - - info->setFrom( *mailFile ); - info->setTo( folderName ); - - TQByteArray input(MAX_LINE); - long l = 0; - bool first_msg = true; - - while ( !operaArchiv.atEnd() ) { - KTempFile tmp; - /* comment by Danny: - * Don't use TQTextStream to read from mbox, etter use TQDataStream. TQTextStream only - * support Unicode/Latin1/Locale. So you lost information from emails with - * charset!=Unicode/Latin1/Locale (e.g. KOI8-R) and Content-Transfer-Encoding != base64 - * (e.g. 8Bit). It also not help to convert the TQTextStream to Unicode. By this you - * get Unicode/UTF-email but KMail can't detect the correct charset. - */ - TQCString seperate; - - if(!first_msg) - tmp.file()->writeBlock( input, l ); - l = operaArchiv.readLine( input.data(),MAX_LINE); // read the first line, prevent "From " - tmp.file()->writeBlock( input, l ); - - while ( ! operaArchiv.atEnd() && (l = operaArchiv.readLine(input.data(),MAX_LINE)) && ((seperate = input.data()).left(5) != "From ")) { - /** remove in KMail unneeded Flags from Opera (for example: X-Opera-Status)*/ - if(seperate.left(8) != "X-Opera-") - tmp.file()->writeBlock( input, l ); - } - tmp.close(); - first_msg = false; - - if(info->removeDupMsg) - addMessage( info, folderName, tmp.name() ); - else - addMessage_fastImport( info, folderName, tmp.name() ); - tmp.unlink(); - int currentPercentage = (int) ( ( (float) operaArchiv.at() / filenameInfo.size() ) * 100 ); - info->setCurrent( currentPercentage ); - - if (currentFile == 1) - overall_status = (int) ( currentPercentage * ( (float) currentFile / totalFiles ) ); - else - overall_status = (int)(((currentFile-1)*(100.0/(float)totalFiles))+(currentPercentage*(1.0/(float)totalFiles))); - - info->setOverall( overall_status ); - if ( info->shouldTerminate() ) break; - } - - info->addLog( i18n("Finished importing emails from %1").arg( *mailFile )); - if (count_duplicates > 0) { - info->addLog( i18n("1 duplicate message not imported", "%n duplicate messages not imported", count_duplicates)); - } - currentFile++; - count_duplicates = 0; - operaArchiv.close(); - } - if ( info->shouldTerminate() ) break; - } - } else { - info->addLog(i18n("No files found for import.")); - } - } - if (info->shouldTerminate()) info->addLog( i18n("Finished import, canceled by user.")); - info->setCurrent(100); - info->setOverall(100); -} |