summaryrefslogtreecommitdiffstats
path: root/kshowmail/showrecord.h
diff options
context:
space:
mode:
Diffstat (limited to 'kshowmail/showrecord.h')
-rw-r--r--kshowmail/showrecord.h314
1 files changed, 314 insertions, 0 deletions
diff --git a/kshowmail/showrecord.h b/kshowmail/showrecord.h
new file mode 100644
index 0000000..db783f2
--- /dev/null
+++ b/kshowmail/showrecord.h
@@ -0,0 +1,314 @@
+/***************************************************************************
+ showrecord.h - description
+ -------------------
+ begin : Mon Dec 3 2001
+ copyright : (C) 2001 by Eggert Ehmke
+ email : eggert.ehmke@berlin.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. *
+ * *
+ ***************************************************************************/
+
+#ifndef SHOWRECORD_H
+#define SHOWRECORD_H
+
+//C++ header
+#include <iostream>
+
+//Qt headers
+#include <qdom.h>
+#include <qptrlist.h>
+
+//KDE headers
+#include <kstandarddirs.h>
+#include <kdebug.h>
+
+//KShowmail headers
+#include "kshowmailview.h"
+#include "showrecordelem.h"
+#include "types.h"
+#include "headerfilter.h"
+#include "filterlog.h"
+
+using namespace Types;
+using namespace std;
+
+//forward class declarations
+class ShowRecordElem;
+class KshowmailView;
+
+/**
+ * @short List which contains all mails of an account.
+ *
+ * The mails are objects of ShowRecordElem.
+ * Inherits QPtrList.
+ *
+ * @see ShowRecordElem
+ * @author Eggert Ehmke
+ * @author Ulrich Weigelt
+ */
+class ShowRecord: public QPtrList<ShowRecordElem>
+{
+
+ public:
+
+ /**
+ * Returned by showSelectedHeaders() if the user has
+ * always clicked OK.
+ */
+ static const int continueShowHeaders;
+
+ /**
+ * Returned by showSelectedHeaders() if the user has
+ * clicked Cancel.
+ */
+ static const int cancelShowHeaders;
+
+ /**
+ * Constructor
+ */
+ ShowRecord();
+
+ /**
+ * Destructor
+ * Does nothing.
+ */
+ ~ShowRecord();
+
+ /**
+ * Saves all stored mails into the given DOM document inside the
+ * given account element.
+ * @param doc DOM document in that all options are stored
+ * @param parent account element
+ */
+ void saveOptions( QDomDocument& doc, QDomElement& parent );
+
+ /**
+ * Reads out all mails stored inside the given account element,
+ * creates objects from class ShowRecordElem and stores them in
+ * this list. All old items will be removed.
+ * @param parent account element (DOM element)
+ */
+ void readStoredMails( QDomElement& parent );
+
+ /**
+ * Apply the filters to the mails in this list.
+ * @param filter pointer to the header filter
+ * @param account name of this account
+ * @param deleteList reference to a list in which this methode writes the numbers of mails to delete
+ * @param downloadList reference to a list in which this methode writes the number of mails to download
+ * @param nmbIgnoredMails reference to an integer in which it writes the number of ignored mails
+ * @param log pointer to the filter log
+ */
+ void applyHeaderFilter( HeaderFilter* filter, QString account, MailNumberList_Type& deleteList, MailToDownloadMap_Type& downloadList, int& nmbIgnoredMails, FilterLog* log = NULL );
+
+
+ /**
+ * Returns whether there are mails in this list which are selected
+ * in the list view.
+ * @return TRUE - there are selected mails
+ * @return FALSE - there aren't selected mails
+ */
+ bool hasSelectedMails();
+
+ /**
+ * Returns the numbers of all selected mails.
+ * @return numbers of selected mails.
+ */
+ Types::MailNumberList_Type getSelectedMails();
+
+ /**
+ * Removes the mail which has the given number.
+ * @param number number of the mail which will be removed
+ */
+ void removeMail( int number );
+
+ /**
+ * Returns the subjects of the selected mails.
+ * @return subjects of selected mails
+ */
+ QStringList getSelectedSubjects() const;
+
+ /**
+ * Returns the sender of the mail with the given number.
+ * @param number mail number
+ * @return sender
+ */
+ QString getSenderOf( int number ) const;
+
+ /**
+ * Returns the date of sent of the mail with the given number.
+ * @param number mail number
+ * @return date
+ */
+ QString getDateOf( int number ) const;
+
+ /**
+ * Returns the size of the mail with the given number.
+ * @param number mail number
+ * @return size
+ */
+ QString getSizeOf( int number ) const;
+
+ /**
+ * Returns the subject of the mail with the given number.
+ * @param number mail number
+ * @return subject
+ */
+ QString getSubjectOf( int number ) const;
+
+ /**
+ * Decodes the given mail body by the appropriate mail object.
+ * The mail object (ShowRecordElem) has to do this job, because
+ * it has stored the mail header and therefore it knows the content
+ * type and encoding of the mail.
+ * It decodes just the text or html part of the body. The rest of it
+ * will be rejected.
+ * @param body the encoded mail (including header)
+ * @param number number of the downloaded mail
+ * @param preferHTML decode HTML part if present
+ * @return decoded mail body
+ */
+ QString decodeMailBody( QByteArray body, int number, bool preferHTML ) const;
+
+ /**
+ * Returns whether there is mail with the given uid in the list.
+ * @param uid UID of the mail
+ * @return TRUE - mail is in the list
+ * @return FALSE - mail is not in the list
+ */
+ bool hasMail( QString uid );
+
+ /**
+ * Returns whether the given mail is new.
+ * @param uid UID of the mail
+ * @return TRUE - mail is new
+ * @return FALSE - mail is not new or mail doesn't exist
+ */
+ bool isNew( QString uid ) const;
+
+ /**
+ * Appends a new mail to the list.
+ * @param number number of the mail on the server
+ * @param uid Unique ID of the mail
+ * @param isNew TRUE - mail is new; FALSE - mail is not new
+ */
+ void appendNewMail( int number, QString uid, bool isNew );
+
+ /**
+ * Just for debugging.
+ * Prints a list of all contained mails to stdout.
+ */
+ void printMailList();
+
+ /**
+ * Sets the size of a mail.
+ * @param number number of the mail
+ * @param size mail size
+ */
+ void setSize( int number, long size );
+
+ /**
+ * Returns the numbers of mails which are marked as new.
+ * @return numbers of the new mails
+ */
+ Types::MailNumberList_Type getNewMails();
+
+ /**
+ * Sets the header of the given mail.
+ * @param number number of the mail
+ * @param header the header
+ */
+ void setHeader( int number, QString header );
+
+ /**
+ * Returns a list of the UIDs of all old mails.
+ * @return UIDs of all old mails
+ */
+ QStringList getUIDsOfOldMails();
+
+ /**
+ * Returns the header of the mail with the given UID.
+ * @param uid UID
+ * @return mail header
+ */
+ QString getHeaderOf( QString uid );
+
+ /**
+ * Sets the header of the mail with the given UID.
+ * @param uid UID
+ * @param header mail header
+ */
+ void setHeader( QString uid, QString header );
+
+ /**
+ * Returns the number of new mails.
+ * @return number of new mails
+ */
+ int getNumberNewMails();
+
+ /**
+ * Returns the number of mails.
+ * @return number of mails
+ */
+ int getNumberMails();
+
+ /**
+ * Returns the total size of all mails.
+ * @return total size
+ */
+ long getTotalSize();
+
+ /**
+ * Creates for every mail a list view item and insert it
+ * into the mail list view.
+ * @param view pointer to the application view
+ * @param account account name
+ */
+ void fillMailListView( KshowmailView* view, QString& account );
+
+ /**
+ * Shows the headers of all selected mails.
+ * @param account account name
+ * @return continueShowHeaders - the user has always clicked OK. The invoking function will show the next header
+ * @return cancelShowHeaders - the user has clicked Cancel. The invoking function will not show the next header.
+ */
+ int showSelectedHeaders( QString& account );
+
+ /**
+ * Writes the mail into the Move Log.
+ * @param log pointer to the log
+ * @param number number of the mail
+ * @param account name of the account
+ * @param mailbox name of the mailbox
+ */
+ void writeToMoveLog( FilterLog* log, int number, QString account, QString mailbox );
+
+ /**
+ * Writes the mail into the Delete Log.
+ * @param log pointer to the log
+ * @param number number of the mail
+ * @param account name of the account
+ */
+ void writeToDeleteLog( FilterLog* log, int number, QString account );
+
+ /**
+ * The given mail will be marked at the next view refresh.
+ * @param number number of the mail
+ */
+ void setMarkAtNextViewRefresh( int number );
+
+ /**
+ * Returns the senders of the selected mails
+ * @return senders of the selected mails
+ */
+ QStringList getSelectedSenders() const;
+};
+
+#endif