From b888c7edb54e483ec0e3c2e2ce0eafd73acdcc65 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Wed, 24 Jul 2013 15:57:00 -0500 Subject: Initial import from kshowmail 3.3.1 sources --- doc/html/showrecord_8cpp-source.html | 580 +++++++++++++++++++++++++++++++++++ 1 file changed, 580 insertions(+) create mode 100644 doc/html/showrecord_8cpp-source.html (limited to 'doc/html/showrecord_8cpp-source.html') diff --git a/doc/html/showrecord_8cpp-source.html b/doc/html/showrecord_8cpp-source.html new file mode 100644 index 0000000..ed0fbe4 --- /dev/null +++ b/doc/html/showrecord_8cpp-source.html @@ -0,0 +1,580 @@ + + +kshowmail: kshowmail/showrecord.cpp Source File + + + + +
+
+ +

showrecord.cpp

00001 /***************************************************************************
+00002                           showrecord.cpp  -  description
+00003                              -------------------
+00004     begin                : Mon Dec 3 2001
+00005     copyright            : (C) 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 #include "showrecord.h"
+00019 
+00020 int const ShowRecord::continueShowHeaders( 0 );
+00021 int const ShowRecord::cancelShowHeaders( 1 );
+00022 
+00023 ShowRecord::ShowRecord()
+00024 {
+00025   //set auto delete to true. This is a function of the parent class, which deletes
+00026   //all items when the list is deleted or cleared.
+00027   setAutoDelete( true );
+00028 }
+00029 
+00030 ShowRecord::~ShowRecord()
+00031 {
+00032 }
+00033 
+00034 void ShowRecord::saveOptions( QDomDocument& doc, QDomElement& parent )
+00035 {
+00036   //Loop over all mail items
+00037   for( ShowRecordElem* pElem = first(); pElem; pElem = next() )
+00038   {
+00039     //call the method of the mail to save it
+00040     pElem->saveOptions( doc, parent );
+00041   }
+00042 }
+00043 
+00044 void ShowRecord::readStoredMails( QDomElement& parent )
+00045 {
+00046   //clear the list
+00047   clear();
+00048 
+00049   //get first DOM node (mail)
+00050   QDomNode n = parent.firstChild();
+00051 
+00052   //iterate over all mail items stored in the given account
+00053   while( !n.isNull() )
+00054   {
+00055     //get element of the current node
+00056     QDomElement e = n.toElement();
+00057 
+00058     //create mail object
+00059     ShowRecordElem* pElem = new ShowRecordElem();
+00060 
+00061     //store the currently read mail data in the new object
+00062     pElem->readOptions( e );
+00063 
+00064     //store the new mail object in this list
+00065     append( pElem );
+00066 
+00067     //get next DOM node
+00068     n = n.nextSibling();
+00069   }
+00070 }
+00071 
+00072 void ShowRecord::applyFilters ()
+00073 {
+00074   //Loop over all mails in this list
+00075   for( ShowRecordElem* pElem = first(); pElem; pElem = next() )
+00076   {
+00077     //apply the filters to the current mail
+00078     pElem->applyFilters ();
+00079   }
+00080 }
+00081 
+00082 bool ShowRecord::hasSelectedMails( )
+00083 {
+00084   bool selected = false;    //TRUE when a selected mail was found
+00085   ShowRecordElem* mail;     //mail which we want to check
+00086 
+00087   //get first mail
+00088   mail = first();
+00089 
+00090   //iterate over all mails until we have found a selected mail
+00091   while( mail != NULL && !selected )
+00092   {
+00093     //check the current mail
+00094     selected = mail->isSelected();
+00095 
+00096     //get next mail
+00097     mail = next();
+00098   }
+00099 
+00100   return selected;
+00101 }
+00102 
+00103 MailNumberList_Type ShowRecord::getSelectedMails( )
+00104 {
+00105   MailNumberList_Type list;                     //contains the numbers of selected mails
+00106   ShowRecordElem* mail;                         //mail from which we want to get the number (if selected)
+00107   QPtrListIterator<ShowRecordElem> it( *this ); //iterator for the mail list
+00108 
+00109   //iterate over all mails
+00110   while( ( mail = it.current() ) != NULL )
+00111   {
+00112     //increment iterator to next mail
+00113     ++it;
+00114 
+00115     //if current mail is selected append its number to the mail number list
+00116     if( mail->isSelected() )
+00117       list.append( mail->number() );
+00118   }
+00119 
+00120   return list;
+00121 }
+00122 
+00123 void ShowRecord::removeMail( int number )
+00124 {
+00125   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00126   ShowRecordElem* mail;                           //current mail
+00127 
+00128   //looking for the mail with the number 'number'
+00129   while( ( mail = it.current() ) != NULL )
+00130   {
+00131     //increment iterator to next mail
+00132     ++it;
+00133 
+00134     //if the current mail has the given number, remove it
+00135     if( mail->number() == number )
+00136       remove( mail );
+00137   }
+00138 }
+00139 
+00140 QStringList ShowRecord::getSelectedSubjects( ) const
+00141 {
+00142   QStringList subjects;                           //contains the subjects
+00143   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00144   ShowRecordElem* mail;                           //current mail
+00145 
+00146   //iterate over all mails
+00147   while( ( mail = it.current() ) != NULL )
+00148   {
+00149     //increment iterator to next mail
+00150     ++it;
+00151 
+00152     //if the mail is selected, append subject to list
+00153     if( mail->isSelected() )
+00154       subjects.append( mail->subject() );
+00155   }
+00156 
+00157   return subjects;
+00158 }
+00159 
+00160 QString ShowRecord::getSenderOf( int number ) const
+00161 {
+00162   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00163   ShowRecordElem* mail;                           //current mail
+00164   bool found = false;                             //True, when the wanted mail was found
+00165   QString sender;                                 //sender of the wanted mail
+00166 
+00167   //looking for the mail with the number 'number'
+00168   while( ( mail = it.current() ) != NULL && !found )
+00169   {
+00170     //increment iterator to next mail
+00171     ++it;
+00172 
+00173     //if the current mail has the given number, remove it
+00174     if( mail->number() == number )
+00175     {
+00176       sender = mail->from();
+00177       found = true;
+00178     }
+00179   }
+00180   return sender;
+00181 }
+00182 
+00183 QString ShowRecord::getDateOf( int number ) const
+00184 {
+00185   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00186   ShowRecordElem* mail;                           //current mail
+00187   bool found = false;                             //True, when the wanted mail was found
+00188   QString date;                                   //sent date of the wanted mail
+00189 
+00190   //looking for the mail with the number 'number'
+00191   while( ( mail = it.current() ) != NULL && !found )
+00192   {
+00193     //increment iterator to next mail
+00194     ++it;
+00195 
+00196     //if the current mail has the given number, remove it
+00197     if( mail->number() == number )
+00198     {
+00199       date = mail->date();
+00200       found = true;
+00201     }
+00202   }
+00203   return date;
+00204 
+00205 }
+00206 
+00207 QString ShowRecord::getSizeOf( int number ) const
+00208 {
+00209   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00210   ShowRecordElem* mail;                           //current mail
+00211   bool found = false;                             //True, when the wanted mail was found
+00212   QString size;                                   //size of the wanted mail
+00213 
+00214   //looking for the mail with the number 'number'
+00215   while( ( mail = it.current() ) != NULL && !found )
+00216   {
+00217     //increment iterator to next mail
+00218     ++it;
+00219 
+00220     //if the current mail has the given number, remove it
+00221     if( mail->number() == number )
+00222     {
+00223       size = mail->strSizePrefix();
+00224       found = true;
+00225     }
+00226   }
+00227   return size;
+00228 
+00229 }
+00230 
+00231 QString ShowRecord::getSubjectOf( int number ) const
+00232 {
+00233   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00234   ShowRecordElem* mail;                           //current mail
+00235   bool found = false;                             //True, when the wanted mail was found
+00236   QString subject;                                //subject of the wanted mail
+00237 
+00238   //looking for the mail with the number 'number'
+00239   while( ( mail = it.current() ) != NULL && !found )
+00240   {
+00241     //increment iterator to next mail
+00242     ++it;
+00243 
+00244     //if the current mail has the given number, get the subject
+00245     if( mail->number() == number )
+00246     {
+00247       subject = mail->subject();
+00248       found = true;
+00249     }
+00250   }
+00251   return subject;
+00252 
+00253 }
+00254 
+00255 QString ShowRecord::decodeMailBody( QByteArray body, int number, bool preferHTML ) const
+00256 {
+00257   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00258   ShowRecordElem* mail;                           //current mail
+00259   bool found = false;                             //True, when the wanted mail was found
+00260   QString mailbody;                               //decoded mail
+00261 
+00262   //looking for the mail with the number 'number'
+00263   while( ( mail = it.current() ) != NULL && !found )
+00264   {
+00265     //increment iterator to next mail
+00266     ++it;
+00267 
+00268     //if the current mail has the given number, decode the mail
+00269     if( mail->number() == number )
+00270     {
+00271       mailbody = mail->decodeMailBody( body, preferHTML );
+00272       found = true;
+00273     }
+00274   }
+00275   return mailbody;
+00276 
+00277 }
+00278 
+00279 bool ShowRecord::hasMail( QString uid )
+00280 {
+00281   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00282   ShowRecordElem* mail;                           //current mail
+00283   bool found = false;                             //True, when the wanted mail was found
+00284 
+00285   while( ( mail = it.current() ) != NULL && !found )
+00286   {
+00287     //increment iterator to next mail
+00288     ++it;
+00289 
+00290     //compare the uid
+00291     if( mail->uidl() == uid )
+00292     {
+00293      found = true;
+00294     }
+00295   }
+00296   return found;
+00297 }
+00298 
+00299 void ShowRecord::appendNewMail( int number, QString uid, bool isNew )
+00300 {
+00301   //create new mail
+00302   ShowRecordElem* newMail = new ShowRecordElem( number, uid, isNew );
+00303 
+00304   //append new mail
+00305   if( newMail != NULL )
+00306     append( newMail );
+00307 }
+00308 
+00309 void ShowRecord::printMailList( )
+00310 {
+00311   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00312   ShowRecordElem* mail;                           //current mail
+00313 
+00314   while( ( mail = it.current() ) )
+00315   {
+00316     //increment iterator to next mail
+00317     ++it;
+00318 
+00319     //print mail
+00320     cout << mail->number() << " - UID: " << mail->uidl() << "; Size: " << mail->size() << "; Subject: " << mail->subject() << "; New: " << mail->isNew() << endl;
+00321   }
+00322 
+00323 }
+00324 
+00325 void ShowRecord::setSize( int number, long size )
+00326 {
+00327   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00328   ShowRecordElem* mail;                           //current mail
+00329   bool found = false;                             //True, when the wanted mail was found
+00330 
+00331   //looking for the mail with the number 'number'
+00332   while( ( mail = it.current() ) != NULL && !found )
+00333   {
+00334     //increment iterator to next mail
+00335     ++it;
+00336 
+00337     //if the current mail has the given number, decode the mail
+00338     if( mail->number() == number )
+00339     {
+00340       mail->setSize( size );
+00341       found = true;
+00342     }
+00343   }
+00344 }
+00345 
+00346 Types::MailNumberList_Type ShowRecord::getNewMails( )
+00347 {
+00348   MailNumberList_Type list;                     //contains the numbers of the new mails
+00349   ShowRecordElem* mail;                         //mail from which we want to get the number (if new)
+00350   QPtrListIterator<ShowRecordElem> it( *this ); //iterator for the mail list
+00351 
+00352   //iterate over all mails
+00353   while( ( mail = it.current() ) != NULL )
+00354   {
+00355     //increment iterator to next mail
+00356     ++it;
+00357 
+00358     //if current mail is new append its number to the mail number list
+00359     if( mail->isNew() )
+00360       list.append( mail->number() );
+00361   }
+00362 
+00363   return list;
+00364 }
+00365 
+00366 void ShowRecord::setHeader( int number, QString header )
+00367 {
+00368   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00369   ShowRecordElem* mail;                           //current mail
+00370   bool found = false;                             //True, when the wanted mail was found
+00371 
+00372   //looking for the mail with the number 'number'
+00373   while( ( mail = it.current() ) != NULL && !found )
+00374   {
+00375     //increment iterator to next mail
+00376     ++it;
+00377 
+00378     //if the current mail has the given number, set the header
+00379     if( mail->number() == number )
+00380     {
+00381       mail->setHeader( header );
+00382       found = true;
+00383     }
+00384   }
+00385 }
+00386 
+00387 QStringList ShowRecord::getUIDsOfOldMails( )
+00388 {
+00389   QStringList list;                             //contains the UIDs of the old mails
+00390   ShowRecordElem* mail;                         //mail from which we want to get the uid (if old)
+00391   QPtrListIterator<ShowRecordElem> it( *this ); //iterator for the mail list
+00392 
+00393   //iterate over all mails
+00394   while( ( mail = it.current() ) != NULL )
+00395   {
+00396     //increment iterator to next mail
+00397     ++it;
+00398 
+00399     //if current mail is new append its number to the mail number list
+00400     if( !mail->isNew() )
+00401       list.append( mail->uidl() );
+00402   }
+00403 
+00404   return list;
+00405 }
+00406 
+00407 QString ShowRecord::getHeaderOf( QString uid )
+00408 {
+00409   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00410   ShowRecordElem* mail;                           //current mail
+00411   bool found = false;                             //True, when the wanted mail was found
+00412   QString header;                                 //header of the wanted mail
+00413 
+00414   //looking for the mail with the UID 'uid'
+00415   while( ( mail = it.current() ) != NULL && !found )
+00416   {
+00417     //increment iterator to next mail
+00418     ++it;
+00419 
+00420     //if the current mail has the given uid, get the header
+00421     if( mail->uidl() == uid )
+00422     {
+00423       header = mail->header();
+00424       found = true;
+00425     }
+00426   }
+00427   return header;
+00428 }
+00429 
+00430 void ShowRecord::setHeader( QString uid, QString header )
+00431 {
+00432   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00433   ShowRecordElem* mail;                           //current mail
+00434   bool found = false;                             //True, when the wanted mail was found
+00435 
+00436   //looking for the mail with the UID 'uid'
+00437   while( ( mail = it.current() ) != NULL && !found )
+00438   {
+00439     //increment iterator to next mail
+00440     ++it;
+00441 
+00442     //if the current mail has the given UID, set the header
+00443     if( mail->uidl() == uid )
+00444     {
+00445       mail->setHeader( header );
+00446       found = true;
+00447     }
+00448   }
+00449 }
+00450 
+00451 int ShowRecord::getNumberNewMails( )
+00452 {
+00453   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00454   ShowRecordElem* mail;                           //current mail
+00455   int number = 0;                                 //number of new mails
+00456 
+00457   while( ( mail = it.current() ) )
+00458   {
+00459     //increment iterator to next mail
+00460     ++it;
+00461 
+00462     //increment number, if this mail is new
+00463     if( mail->isNew() )
+00464       number++;
+00465   }
+00466 
+00467   return number;
+00468 }
+00469 
+00470 int ShowRecord::getNumberMails( )
+00471 {
+00472   return count();
+00473 }
+00474 
+00475 long ShowRecord::getTotalSize( )
+00476 {
+00477   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00478   ShowRecordElem* mail;                           //current mail
+00479   long size = 0;                                   //total size of all mails
+00480 
+00481   while( ( mail = it.current() ) )
+00482   {
+00483     //increment iterator to next mail
+00484     ++it;
+00485 
+00486     size += mail->size();
+00487   }
+00488 
+00489   return size;
+00490 }
+00491 
+00492 void ShowRecord::fillMailListView( KshowmailView * view, QString & account )
+00493 {
+00494   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00495   ShowRecordElem* mail;                           //current mail
+00496 
+00497   //iterate over all mails and order the mail to create a list view item
+00498   while( ( mail = it.current() ) )
+00499   {
+00500     //increment iterator to next mail
+00501     ++it;
+00502 
+00503     //insert list view item
+00504     QString number = QString( "%1" ).arg( mail->number() );
+00505     QString from = mail->from();
+00506     QString to = mail->to();
+00507     QString subject = mail->subject();
+00508     QString date = mail->date();
+00509     QString size = QString( "%1" ).arg( mail->size() );
+00510     QString content = mail->content();
+00511     QString state = mail->state();
+00512     QString time = mail->strUnixTime();
+00513     mail->setViewItem( view->insertMail( number, account, from, to, subject, date, size, content, state, time ) );
+00514   }
+00515 
+00516 }
+00517 
+00518 int ShowRecord::showSelectedHeaders( QString& account )
+00519 {
+00520   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00521   ShowRecordElem* mail;                           //current mail
+00522   int showNextHeader = ShowRecordElem::continueShowHeaders; //return value of ShowRecordElem::showHeader()
+00523 
+00524   while( ( mail = it.current() ) && showNextHeader == ShowRecordElem::continueShowHeaders )
+00525   {
+00526     //increment iterator to next mail
+00527     ++it;
+00528 
+00529     //order the mail to show its header
+00530     if( mail->isSelected() )
+00531       showNextHeader = mail->showHeader( account );
+00532   }
+00533 
+00534   return showNextHeader == ShowRecordElem::continueShowHeaders ? ShowRecord::continueShowHeaders : ShowRecord::cancelShowHeaders;
+00535 }
+00536 
+00537 bool ShowRecord::isNew( QString uid ) const
+00538 {
+00539   QPtrListIterator<ShowRecordElem> it( *this );   //iterator for the mail list
+00540   ShowRecordElem* mail;                           //current mail
+00541   bool found = false;                             //True, when the wanted mail was found
+00542   bool newMail = false;                           //at time we have not found it, therefore the return value is false
+00543 
+00544   while( ( mail = it.current() ) != NULL && !found )
+00545   {
+00546     //increment iterator to next mail
+00547     ++it;
+00548 
+00549     //compare the uid
+00550     if( mail->uidl() == uid )
+00551     {
+00552       found = true;
+00553       newMail = mail->isNew();
+00554     }
+00555   }
+00556 
+00557   return newMail;
+00558 }
+

Generated on Thu Jul 5 19:36:07 2007 for kshowmail by  + +doxygen 1.5.0
+ + -- cgit v1.2.3