00001 /*************************************************************************** 00002 configelem.h - description 00003 ------------------- 00004 begin : Tue May 9 2000 00005 copyright : (C) 2000-2001 by Eggert Ehmke 00006 email : eggert.ehmke@berlin.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef CONFIGELEM_H 00019 #define CONFIGELEM_H 00020 00021 //C headers 00022 #include <time.h> 00023 #include <unistd.h> 00024 #include <stdlib.h> 00025 #include <stdio.h> 00026 00027 //QT headers 00028 #include <ntqstring.h> 00029 #include <ntqlistview.h> 00030 #include <ntqdom.h> 00031 #include <ntqobject.h> 00032 #include <ntqtimer.h> 00033 #include <ntqregexp.h> 00034 #include <ntqdir.h> 00035 #include <ntqfile.h> 00036 #include <ntqtextstream.h> 00037 00038 //KDE headers 00039 #include <kurl.h> 00040 #include <tdeconfig.h> 00041 #include <kdebug.h> 00042 #include <kpassdlg.h> 00043 #include <tdeio/job.h> 00044 #include <tdeio/global.h> 00045 #include <tdemessagebox.h> 00046 #include <tdeapplication.h> 00047 00048 //KShowmail headers 00049 #include "showrecord.h" 00050 #include "constants.h" 00051 #include "types.h" 00052 #include "configlist.h" 00053 #include "showmaildialog.h" 00054 #include "decodeRFC2047.h" 00055 #include "kshowmailview.h" 00056 #include "encryption.h" 00057 #include "tdewalletaccess.h" 00058 #include "headerfilter.h" 00059 #include "filterlog.h" 00060 00061 00062 00063 using namespace Constants; 00064 using namespace Types; 00065 using namespace Encryption; 00066 00067 //forward class declarations 00068 class KshowmailView; 00069 class ConfigList; 00070 class ShowRecordElem; 00071 class ShowRecord; 00072 00086 class ConfigElem : public TQObject { 00087 00088 TQ_OBJECT 00089 00090 public: 00091 00096 static const int continueShowHeaders; 00097 00102 static const int cancelShowHeaders; 00103 00109 ConfigElem(); 00110 00115 ConfigElem ( ConfigList* config ); 00116 00124 ConfigElem( ConfigElem* pElem ); 00125 00134 ConfigElem( ConfigList* config, const TQString& account ); 00135 00140 ~ConfigElem(); 00141 00146 bool isActive() const; 00147 00152 void setActive( bool active ); 00153 00158 TQString getAccountName() const; 00159 00164 void setAccountName( TQString name ); 00165 00170 TQString getPassword() const; 00171 00177 void setPassword( const TQString& password ); 00178 00183 bool hasPassword() const; 00184 00189 KURL getURL() const; 00190 00196 void setListViewItem( TQListViewItem* item ); 00197 00203 TQListViewItem* getListViewItem(); 00204 00210 bool isSelected() const; 00211 00215 void clearMailList(); 00216 00221 void setHost( const TQString& host ); 00222 00227 TQString getHost() const; 00228 00233 void setProtocol( const TQString& protocol ); 00234 00240 TQString getProtocol( bool upperCase = false ) const; 00241 00246 void setTLS( bool tls ); 00247 00253 bool getTLS() const; 00254 00259 void setPort( unsigned short int port ); 00260 00265 unsigned short int getPort() const; 00266 00271 void setUser( const TQString& user ); 00272 00277 TQString getUser() const; 00278 00284 void setPasswordStorage( int storage ); 00285 00291 int getPasswordStorage() const; 00292 00293 00301 void saveOptions( TQDomDocument& doc, TQDomElement& parent ); 00302 00307 void readStoredMails( TQDomElement& parent ); 00308 00313 int count(); 00314 00320 void deleteSelectedMails(); 00321 00328 void showSelectedMails(); 00329 00338 bool assertPassword( bool force = false ); 00339 00344 Types::AccountState_Type getState(); 00345 00350 TQStringList getSelectedSubjects() const; 00351 00358 bool hasSelectedMails(); 00359 00368 void refreshMailList( FilterLog* log = NULL ); 00369 00374 int getNumberNewMails(); 00375 00380 int getNumberMails(); 00381 00386 long getTotalSize(); 00387 00393 void fillMailListView( KshowmailView* view ); 00394 00400 void refreshAccountListItem(); 00401 00405 void killPOP3Job(); 00406 00413 int showSelectedHeaders(); 00414 00418 void printSetup() const; 00419 00424 void reloadFilterSettings(); 00425 00426 00427 private: 00428 00433 ConfigList* appConfig; 00434 00439 FilterLog* FLog; 00440 00444 Types::AccountState_Type state; 00445 00453 int PasswordStorage; 00454 00458 bool m_bActive; 00459 00463 TQString m_strAccount; 00464 00468 TQListViewItem* m_pViewItem; 00469 00473 ShowRecord* m_pshowrecord; 00474 00478 KURL m_url; 00479 00484 int secureLoginType; 00485 00489 bool useTLS; 00490 00495 TQByteArray mailbody; 00496 00505 MailNumberList_Type MailsToDelete; 00506 00513 MailToDownloadMap_Type MailsToDownload; 00514 00522 MailNumberList_Type MailsToShow; 00523 00531 MailNumberList_Type newMails; 00532 00536 TDEIO::TransferJob* pop3Job; 00537 00542 TQTimer* pop3Timer; 00543 00549 ShowRecord* tempMailList; 00550 00555 TQStringList receivedUIDs; 00556 00561 TQStringList receivedSizes; 00562 00567 TQByteArray receivedHeader; 00568 00572 HeaderFilter headerFilter; 00573 00581 bool filterApplied; 00582 00587 bool deletionPerformedByFilters; 00588 00593 bool refreshPerformedByFilters; 00594 00599 bool downloadActionsInvoked; 00600 00604 int moveCounter; 00605 00609 void init(); 00610 00619 void deleteNextMail(); 00620 00627 void commitDeletion(); 00628 00638 void showNextMail(); 00639 00646 void commitDownloading(); 00647 00652 void startKIOJob( const TQString& path ); 00653 00663 unsigned int getTimeoutTime(); 00664 00672 void getUIDs(); 00673 00681 void getSizes(); 00682 00687 void getHeaders(); 00688 00699 void getNextHeader(); 00700 00707 void copyHeaders(); 00708 00720 void applyFilters(); 00721 00730 void applyFiltersDeleted(); 00731 00736 void cancelRefresh(); 00737 00747 void commitRefresh(); 00748 00764 void swapMailLists(); 00765 00772 void doDownloadActions(); 00773 00783 void getNextMailForDownloadActions(); 00784 00790 bool isMailDir( const TQDir& path ); 00791 00798 bool writeToMailBox( const TQString& mail, const TQString& box ); 00799 00800 private slots: 00801 00816 void slotMailDeleted( TDEIO::Job* job ); 00817 00826 void slotFinalizeDeletion( TDEIO::Job* ); 00827 00845 void slotBodyDownloaded( TDEIO::Job* job ); 00846 00862 void slotMailDownloadedForAction( TDEIO::Job* job ); 00863 00872 void slotDataMailBody( TDEIO::Job*, const TQByteArray & datas ); 00873 00883 void slotFinalizeShowMail( TDEIO::Job* ); 00884 00892 void slotTimeout(); 00893 00902 void slotReceiveUID( TDEIO::Job*, const TQByteArray& data ); 00903 00911 void slotUIDsReceived( TDEIO::Job* job ); 00912 00921 void slotReceiveSize( TDEIO::Job*, const TQByteArray& data ); 00922 00929 void slotSizesReceived( TDEIO::Job* job ); 00930 00931 00937 void slotFinalizeRefresh( TDEIO::Job* ); 00938 00954 void slotHeaderDownloaded( TDEIO::Job* job ); 00955 00964 void slotReceiveHeader( TDEIO::Job*, const TQByteArray& data ); 00965 00966 00967 signals: 00968 00973 void sigDeleteReady( TQString account ); 00974 00980 void sigShowBodiesReady( TQString account ); 00981 00985 void sigConfigChanged(); 00986 00990 void sigMessageWindowOpened(); 00991 00995 void sigMessageWindowClosed(); 00996 01001 void sigRefreshReady( TQString account ); 01002 01003 protected: 01004 01010 bool isSpam( TQByteArray mail ) const; 01011 01016 bool isSpamAssassinRunning() const; 01017 01018 01019 01020 }; 01021 #endif