From 1999708f1480dbdd19e73671fbd9e422883839b6 Mon Sep 17 00:00:00 2001
From: alwin <alwin>
Date: Tue, 09 Dec 2003 16:59:57 +0000
Subject: some interface changes

split class defines into more files
---
(limited to 'noncore')

diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index 1bde886..df9fc11 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -1,5 +1,6 @@
 #include "accountview.h"
 #include "imapwrapper.h"
+#include "mailtypes.h"
 #include "defines.h"
 
 IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent )
@@ -22,7 +23,7 @@ IMAPwrapper *IMAPviewItem::getWrapper()
     return wrapper;
 }
 
-void IMAPviewItem::refresh(Maillist&)
+void IMAPviewItem::refresh(QList<RecMail>&)
 {
     QList<IMAPFolder> *folders = wrapper->listFolders();
     
@@ -39,6 +40,10 @@ void IMAPviewItem::refresh(Maillist&)
     }
 }
 
+RecBody IMAPviewItem::fetchBody(const RecMail&)
+{
+    return RecBody();
+}
 
 IMAPfolderItem::~IMAPfolderItem() 
 {
@@ -54,12 +59,12 @@ IMAPfolderItem::IMAPfolderItem( IMAPFolder *folderInit, IMAPviewItem *parent )
     setText( 0, folder->getDisplayName() );
 }
 
-void IMAPfolderItem::refresh(Maillist&target) 
+void IMAPfolderItem::refresh(QList<RecMail>&target) 
 {
     imap->getWrapper()->listMessages( folder->getName(),target );
 }
 
-QString IMAPfolderItem::fetchBody(const RecMail&aMail)
+RecBody IMAPfolderItem::fetchBody(const RecMail&aMail)
 {
     return imap->getWrapper()->fetchBody(aMail);
 }
@@ -88,7 +93,7 @@ void AccountView::populate( QList<Account> list )
 void AccountView::refresh(QListViewItem *item) {
     qDebug("AccountView refresh...");
     if ( item ) { 
-        Maillist headerlist;
+        QList<RecMail> headerlist;
         headerlist.setAutoDelete(true);
         AccountViewItem *view = static_cast<AccountViewItem *>(item);
         view->refresh(headerlist);
@@ -101,11 +106,10 @@ void AccountView::refreshAll()
     
 }
 
-QString AccountView::fetchBody(const RecMail&aMail)
+RecBody AccountView::fetchBody(const RecMail&aMail)
 {
-    QString Body;
     QListViewItem*item = selectedItem ();
-    if (!item) return Body;
+    if (!item) return RecBody();
     AccountViewItem *view = static_cast<AccountViewItem *>(item);
     return view->fetchBody(aMail);
 }
diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h
index 2bc8023..805c2b3 100644
--- a/noncore/net/mail/accountview.h
+++ b/noncore/net/mail/accountview.h
@@ -2,11 +2,14 @@
 #define ACCOUNTVIEW_H
 
 #include <qlistview.h>
+#include <qlist.h>
 
 #include "settings.h"
 #include "mailwrapper.h"
 
 class IMAPwrapper;
+class RecMail;
+class RecBody;
 
 class AccountViewItem : public QListViewItem
 {
@@ -14,8 +17,8 @@ class AccountViewItem : public QListViewItem
 public:
     AccountViewItem( QListView *parent ) : QListViewItem( parent ) {}
     AccountViewItem( QListViewItem *parent ) : QListViewItem( parent ) {}
-    virtual void refresh(Maillist&)=0;
-    virtual QString fetchBody(const RecMail&)=0;
+    virtual void refresh(QList<RecMail>&)=0;
+    virtual RecBody fetchBody(const RecMail&)=0;
 };
 
 class IMAPviewItem : public AccountViewItem
@@ -24,8 +27,8 @@ class IMAPviewItem : public AccountViewItem
 public:
     IMAPviewItem( IMAPaccount *a, QListView *parent );
     ~IMAPviewItem();
-    virtual void refresh(Maillist&);
-    virtual QString fetchBody(const RecMail&){return "";}
+    virtual void refresh(QList<RecMail>&);
+    virtual RecBody fetchBody(const RecMail&);
     IMAPwrapper *getWrapper();
 
 private:
@@ -40,8 +43,8 @@ class IMAPfolderItem : public AccountViewItem
 public:
     IMAPfolderItem( IMAPFolder *folder, IMAPviewItem *parent );
     ~IMAPfolderItem();
-    virtual void refresh(Maillist&);
-    virtual QString fetchBody(const RecMail&);
+    virtual void refresh(QList<RecMail>&);
+    virtual RecBody fetchBody(const RecMail&);
 
 private:
     IMAPFolder *folder;
@@ -56,14 +59,14 @@ class AccountView : public QListView
 public:
     AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
     void populate( QList<Account> list );
-    QString fetchBody(const RecMail&aMail);
+    RecBody fetchBody(const RecMail&aMail);
 
 public slots:
     void refreshAll();
     void refresh(QListViewItem *item);
     
 signals:
-    void refreshMailview(Maillist*);    
+    void refreshMailview(QList<RecMail>*);    
 };
 
 #endif
diff --git a/noncore/net/mail/imapwrapper.cpp b/noncore/net/mail/imapwrapper.cpp
index 1acc036..725dcc9 100644
--- a/noncore/net/mail/imapwrapper.cpp
+++ b/noncore/net/mail/imapwrapper.cpp
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 
 #include "imapwrapper.h"
+#include "mailtypes.h"
 #include <libetpan/mailimap.h>
 
 IMAPwrapper::IMAPwrapper( IMAPaccount *a )
@@ -64,7 +65,7 @@ void IMAPwrapper::logout()
     m_imap = 0;
 }
 
-void IMAPwrapper::listMessages(const QString&mailbox,Maillist&target )
+void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target )
 {
     const char *mb;
     int err = MAILIMAP_NO_ERROR;
@@ -329,9 +330,11 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
 }
 
 #if 1
-QString IMAPwrapper::fetchBody(const RecMail&mail)
+RecBody IMAPwrapper::fetchBody(const RecMail&mail)
 {
-    QString body = "";
+    RecBody body;
+    QString body_text;
+
     const char *mb;
     int err = MAILIMAP_NO_ERROR;
     clist *result;
@@ -368,7 +371,8 @@ QString IMAPwrapper::fetchBody(const RecMail&mail)
         mailimap_msg_att_item*item = (mailimap_msg_att_item*)msg_att->list->first->data;
 
         if (item->msg_att_static && item->msg_att_static->rfc822_text) {
-            body = item->msg_att_static->rfc822_text;
+            body_text = item->msg_att_static->rfc822_text;
+            body.setBodytext(body_text);
         }
     } else {
         qDebug("error fetching text: %s",m_imap->response);
diff --git a/noncore/net/mail/imapwrapper.h b/noncore/net/mail/imapwrapper.h
index b02d26d..1423faf 100644
--- a/noncore/net/mail/imapwrapper.h
+++ b/noncore/net/mail/imapwrapper.h
@@ -1,10 +1,13 @@
 #ifndef __IMAPWRAPPER
 #define __IMAPWRAPPER
 
+#include <qlist.h>
 #include "mailwrapper.h"
 
 struct mailimap;
 struct mailimap_body_type_1part;
+class RecMail;
+class RecBody;
 
 class IMAPwrapper : public QObject
 {
@@ -14,8 +17,8 @@ public:
     IMAPwrapper( IMAPaccount *a );
     virtual ~IMAPwrapper();
     QList<IMAPFolder>* listFolders();
-    void listMessages(const QString & mailbox,Maillist&target );
-    QString fetchBody(const RecMail&mail);
+    void listMessages(const QString & mailbox,QList<RecMail>&target );
+    RecBody fetchBody(const RecMail&mail);
     static void imap_progress( size_t current, size_t maximum );
 
 protected:
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index 1acc036..725dcc9 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 
 #include "imapwrapper.h"
+#include "mailtypes.h"
 #include <libetpan/mailimap.h>
 
 IMAPwrapper::IMAPwrapper( IMAPaccount *a )
@@ -64,7 +65,7 @@ void IMAPwrapper::logout()
     m_imap = 0;
 }
 
-void IMAPwrapper::listMessages(const QString&mailbox,Maillist&target )
+void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target )
 {
     const char *mb;
     int err = MAILIMAP_NO_ERROR;
@@ -329,9 +330,11 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
 }
 
 #if 1
-QString IMAPwrapper::fetchBody(const RecMail&mail)
+RecBody IMAPwrapper::fetchBody(const RecMail&mail)
 {
-    QString body = "";
+    RecBody body;
+    QString body_text;
+
     const char *mb;
     int err = MAILIMAP_NO_ERROR;
     clist *result;
@@ -368,7 +371,8 @@ QString IMAPwrapper::fetchBody(const RecMail&mail)
         mailimap_msg_att_item*item = (mailimap_msg_att_item*)msg_att->list->first->data;
 
         if (item->msg_att_static && item->msg_att_static->rfc822_text) {
-            body = item->msg_att_static->rfc822_text;
+            body_text = item->msg_att_static->rfc822_text;
+            body.setBodytext(body_text);
         }
     } else {
         qDebug("error fetching text: %s",m_imap->response);
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index b02d26d..1423faf 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -1,10 +1,13 @@
 #ifndef __IMAPWRAPPER
 #define __IMAPWRAPPER
 
+#include <qlist.h>
 #include "mailwrapper.h"
 
 struct mailimap;
 struct mailimap_body_type_1part;
+class RecMail;
+class RecBody;
 
 class IMAPwrapper : public QObject
 {
@@ -14,8 +17,8 @@ public:
     IMAPwrapper( IMAPaccount *a );
     virtual ~IMAPwrapper();
     QList<IMAPFolder>* listFolders();
-    void listMessages(const QString & mailbox,Maillist&target );
-    QString fetchBody(const RecMail&mail);
+    void listMessages(const QString & mailbox,QList<RecMail>&target );
+    RecBody fetchBody(const RecMail&mail);
     static void imap_progress( size_t current, size_t maximum );
 
 protected:
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.cpp b/noncore/net/mail/libmailwrapper/mailtypes.cpp
new file mode 100644
index 0000000..9f2c9e3
--- a/dev/null
+++ b/noncore/net/mail/libmailwrapper/mailtypes.cpp
@@ -0,0 +1,129 @@
+#include "mailtypes.h"
+
+
+RecMail::RecMail()
+    :subject(""),date(""),mbox(""),msg_number(0),msg_flags(7)
+{
+}
+
+void RecMail::setTo(const QStringList&list)
+{
+    to = list;
+}
+
+const QStringList&RecMail::To()const
+{
+    return to;
+}
+
+void RecMail::setCC(const QStringList&list)
+{
+    cc = list;
+}
+
+const QStringList&RecMail::CC()const
+{
+    return cc;
+}
+
+void RecMail::setBcc(const QStringList&list)
+{
+    bcc = list;
+}
+
+const QStringList& RecMail::Bcc()const
+{
+    return bcc;
+}
+
+
+RecPart::RecPart()
+    : m_type(""),m_subtype(""),m_identifier(""),m_encoding("")
+{
+}
+
+RecPart::RecPart(const QString&identifier,const QString&type,const QString&subtype,const QString&encoding)
+    : m_type(type),m_subtype(subtype),m_identifier(identifier),m_encoding(encoding)
+{
+}
+
+RecPart::~RecPart()
+{
+}
+
+const QString& RecPart::Type()const
+{
+    return m_type;
+}
+
+void RecPart::setType(const QString&type)
+{
+    m_type = type;
+}
+
+const QString& RecPart::Subtype()const
+{
+    return m_subtype;
+}
+
+void RecPart::setSubtype(const QString&subtype)
+{
+    m_subtype = subtype;
+}
+
+const QString& RecPart::Identifier()const
+{
+    return m_identifier;
+}
+
+void RecPart::setIdentifier(const QString&identifier)
+{
+    m_identifier = identifier;
+}
+
+const QString& RecPart::Encoding()const
+{
+    return m_encoding;
+}
+
+void RecPart::setEncoding(const QString&encoding)
+{
+    m_encoding = encoding;
+}
+
+RecBody::RecBody()
+    : m_BodyText(""),m_PartsList()
+{
+    m_PartsList.setAutoDelete(true);
+}
+
+RecBody::~RecBody()
+{
+}
+
+void RecBody::setBodytext(const QString&bodyText)
+{
+    m_BodyText = bodyText;
+}
+
+const QString& RecBody::Bodytext()const
+{
+    return m_BodyText;
+}
+
+void RecBody::setParts(const QList<RecPart>&parts)
+{
+    m_PartsList = parts;
+    m_PartsList.setAutoDelete(true);
+}
+
+const QList<RecPart>& RecBody::Parts()const
+{
+    return m_PartsList;
+}
+
+void RecBody::addPart(const RecPart& part)
+{
+    RecPart*p = new RecPart(part);
+    m_PartsList.append(p);
+}
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.h b/noncore/net/mail/libmailwrapper/mailtypes.h
new file mode 100644
index 0000000..bb6a483
--- a/dev/null
+++ b/noncore/net/mail/libmailwrapper/mailtypes.h
@@ -0,0 +1,98 @@
+#ifndef __MAIL_TYPES_H
+#define __MAIL_TYPES_H
+
+#define FLAG_ANSWERED 0
+#define FLAG_FLAGGED  1
+#define FLAG_DELETED  2
+#define FLAG_SEEN     3
+#define FLAG_DRAFT    4
+#define FLAG_RECENT   5
+
+#include <qlist.h>
+#include <qbitarray.h>
+#include <qstring.h>
+#include <qstringlist.h>
+
+/* a class to describe mails in a mailbox */
+/* Attention!
+   From programmers point of view it would make sense to
+   store the mail body into this class, too.
+   But: not from the point of view of the device. 
+   Mailbodies can be real large. So we request them when 
+   needed from the mail-wrapper class direct from the server itself
+   (imap) or from a file-based cache (pop3?)
+   So there is no interface "const QString&body()" but you should
+   make a request to the mailwrapper with this class as parameter to
+   get the body. Same words for the attachments.
+*/
+class RecMail
+{
+public:
+    RecMail();
+    virtual ~RecMail(){}
+
+    const int getNumber()const{return msg_number;}
+    void setNumber(int number){msg_number=number;}
+    const QString&getDate()const{ return date; }
+    void setDate( const QString&a ) { date = a; }
+    const QString&getFrom()const{ return from; }
+    void setFrom( const QString&a ) { from = a; }
+    const QString&getSubject()const { return subject; }
+    void setSubject( const QString&s ) { subject = s; }
+    const QString&getMbox()const{return mbox;}
+    void setMbox(const QString&box){mbox = box;}
+    
+    void setTo(const QStringList&list);
+    const QStringList&To()const;
+    void setCC(const QStringList&list);
+    const QStringList&CC()const;
+    void setBcc(const QStringList&list);
+    const QStringList&Bcc()const;
+
+    const QBitArray&getFlags()const{return msg_flags;}
+    void setFlags(const QBitArray&flags){msg_flags = flags;}
+
+protected:
+    QString subject,date,from,mbox;
+    int msg_number;
+    QBitArray msg_flags;
+    QStringList to,cc,bcc;
+};
+
+class RecPart
+{
+protected:
+    QString m_type,m_subtype,m_identifier,m_encoding;
+public:
+    RecPart();
+    RecPart(const QString&identifier,const QString&type="",const QString&subtype="",const QString&encoding="BASE64");
+    virtual ~RecPart();
+    
+    const QString&Type()const;
+    void setType(const QString&type);
+    const QString&Subtype()const;
+    void setSubtype(const QString&subtype);
+    const QString&Identifier()const;
+    void setIdentifier(const QString&identifier);
+    const QString&Encoding()const;
+    void setEncoding(const QString&encoding);
+};
+
+class RecBody
+{
+protected:
+    QString m_BodyText;
+    QList<RecPart> m_PartsList;
+
+public:
+    RecBody();
+    virtual ~RecBody();
+    void setBodytext(const QString&);
+    const QString& Bodytext()const;
+    
+    void setParts(const QList<RecPart>&parts);
+    const QList<RecPart>& Parts()const;
+    void addPart(const RecPart&part);
+};
+
+#endif
diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.cpp b/noncore/net/mail/libmailwrapper/mailwrapper.cpp
index 7f67cd8..898e9d6 100644
--- a/noncore/net/mail/libmailwrapper/mailwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mailwrapper.cpp
@@ -627,15 +627,3 @@ Mail::Mail()
     :name(""), mail(""), to(""), cc(""), bcc(""), reply(""), subject(""), message("")
 {
 }
-
-RecMail::RecMail()
-    :subject(""),date(""),mbox(""),msg_number(0),msg_flags(7)
-{
-}
-
-#if 0
-void RecMail::setDate(const QString&aDate)
-{
-    mDate = QDateTime::fromString(aDate);
-}
-#endif
diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.h b/noncore/net/mail/libmailwrapper/mailwrapper.h
index 332034f..34fd5c5 100644
--- a/noncore/net/mail/libmailwrapper/mailwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mailwrapper.h
@@ -31,60 +31,6 @@ protected:
 
 };
 
-#define FLAG_ANSWERED 0
-#define FLAG_FLAGGED  1
-#define FLAG_DELETED  2
-#define FLAG_SEEN     3
-#define FLAG_DRAFT    4
-#define FLAG_RECENT   5
-
-/* a class to describe mails in a mailbox */
-/* Attention!
-   From programmers point of view it would make sense to
-   store the mail body into this class, too.
-   But: not from the point of view of the device. 
-   Mailbodies can be real large. So we request them when 
-   needed from the mail-wrapper class direct from the server itself
-   (imap) or from a file-based cache (pop3?)
-   So there is no interface "const QString&body()" but you should
-   make a request to the mailwrapper with this class as parameter to
-   get the body. Same words for the attachments.
-*/
-class RecMail
-{
-public:
-    RecMail();
-    virtual ~RecMail(){}
-
-    const int getNumber()const{return msg_number;}
-    void setNumber(int number){msg_number=number;}
-    const QString&getDate()const{ return date; }
-    void setDate( const QString&a ) { date = a; }
-    const QString&getFrom()const{ return from; }
-    void setFrom( const QString&a ) { from = a; }
-    const QString&getSubject()const { return subject; }
-    void setSubject( const QString&s ) { subject = s; }
-    const QString&getMbox()const{return mbox;}
-    void setMbox(const QString&box){mbox = box;}
-    const QBitArray&getFlags()const{return msg_flags;}
-    void setFlags(const QBitArray&flags){msg_flags = flags;}
-
-#if 0    
-    void setDate(const QString&dstring);
-    void setDate(const QDateTime&date){mDate = date;}
-    QString getDate()const{return mDate.toString();}
-#endif
-protected:
-    QString subject,date,from,mbox;
-    int msg_number;
-    QBitArray msg_flags;
-#if 0
-    QDateTime mDate;
-#endif
-};
-
-typedef QList<RecMail> Maillist;
-
 class Mail
 {
 public:
diff --git a/noncore/net/mail/mail.pro b/noncore/net/mail/mail.pro
index 3ae1ddc..55d95ba 100644
--- a/noncore/net/mail/mail.pro
+++ b/noncore/net/mail/mail.pro
@@ -11,7 +11,9 @@ HEADERS	     = defines.h \
 		viewmail.h \
 		viewmailbase.h \
 	           opiemail.h \
-				imapwrapper.h
+				imapwrapper.h \
+				mailtypes.h \
+				mailistviewitem.h
                
 SOURCES	     = main.cpp \
 	           opiemail.cpp \
@@ -25,7 +27,8 @@ SOURCES	     = main.cpp \
                logindialog.cpp \
 		viewmail.cpp \
 		viewmailbase.cpp \
-               settings.cpp 
+               settings.cpp \
+				mailtypes.cpp 
                
 INTERFACES	 = editaccountsui.ui \
                selectmailtypeui.ui \
diff --git a/noncore/net/mail/mailistviewitem.h b/noncore/net/mail/mailistviewitem.h
new file mode 100644
index 0000000..60bfdda
--- a/dev/null
+++ b/noncore/net/mail/mailistviewitem.h
@@ -0,0 +1,21 @@
+#ifndef __MAILLISTVIEWITEM_H
+#define __MAILLISTVIEWITEM_H
+
+#include <qlistview.h>
+#include "mailtypes.h"
+
+class MailListViewItem:public QListViewItem
+{
+public:
+    MailListViewItem(QListView * parent, MailListViewItem * after );
+    virtual ~MailListViewItem(){}
+    
+    void storeData(const RecMail&data);
+    const RecMail&data()const;
+    void showEntry();
+    
+protected:
+    RecMail mail_data;
+};
+
+#endif
diff --git a/noncore/net/mail/mailtypes.cpp b/noncore/net/mail/mailtypes.cpp
new file mode 100644
index 0000000..9f2c9e3
--- a/dev/null
+++ b/noncore/net/mail/mailtypes.cpp
@@ -0,0 +1,129 @@
+#include "mailtypes.h"
+
+
+RecMail::RecMail()
+    :subject(""),date(""),mbox(""),msg_number(0),msg_flags(7)
+{
+}
+
+void RecMail::setTo(const QStringList&list)
+{
+    to = list;
+}
+
+const QStringList&RecMail::To()const
+{
+    return to;
+}
+
+void RecMail::setCC(const QStringList&list)
+{
+    cc = list;
+}
+
+const QStringList&RecMail::CC()const
+{
+    return cc;
+}
+
+void RecMail::setBcc(const QStringList&list)
+{
+    bcc = list;
+}
+
+const QStringList& RecMail::Bcc()const
+{
+    return bcc;
+}
+
+
+RecPart::RecPart()
+    : m_type(""),m_subtype(""),m_identifier(""),m_encoding("")
+{
+}
+
+RecPart::RecPart(const QString&identifier,const QString&type,const QString&subtype,const QString&encoding)
+    : m_type(type),m_subtype(subtype),m_identifier(identifier),m_encoding(encoding)
+{
+}
+
+RecPart::~RecPart()
+{
+}
+
+const QString& RecPart::Type()const
+{
+    return m_type;
+}
+
+void RecPart::setType(const QString&type)
+{
+    m_type = type;
+}
+
+const QString& RecPart::Subtype()const
+{
+    return m_subtype;
+}
+
+void RecPart::setSubtype(const QString&subtype)
+{
+    m_subtype = subtype;
+}
+
+const QString& RecPart::Identifier()const
+{
+    return m_identifier;
+}
+
+void RecPart::setIdentifier(const QString&identifier)
+{
+    m_identifier = identifier;
+}
+
+const QString& RecPart::Encoding()const
+{
+    return m_encoding;
+}
+
+void RecPart::setEncoding(const QString&encoding)
+{
+    m_encoding = encoding;
+}
+
+RecBody::RecBody()
+    : m_BodyText(""),m_PartsList()
+{
+    m_PartsList.setAutoDelete(true);
+}
+
+RecBody::~RecBody()
+{
+}
+
+void RecBody::setBodytext(const QString&bodyText)
+{
+    m_BodyText = bodyText;
+}
+
+const QString& RecBody::Bodytext()const
+{
+    return m_BodyText;
+}
+
+void RecBody::setParts(const QList<RecPart>&parts)
+{
+    m_PartsList = parts;
+    m_PartsList.setAutoDelete(true);
+}
+
+const QList<RecPart>& RecBody::Parts()const
+{
+    return m_PartsList;
+}
+
+void RecBody::addPart(const RecPart& part)
+{
+    RecPart*p = new RecPart(part);
+    m_PartsList.append(p);
+}
diff --git a/noncore/net/mail/mailtypes.h b/noncore/net/mail/mailtypes.h
new file mode 100644
index 0000000..bb6a483
--- a/dev/null
+++ b/noncore/net/mail/mailtypes.h
@@ -0,0 +1,98 @@
+#ifndef __MAIL_TYPES_H
+#define __MAIL_TYPES_H
+
+#define FLAG_ANSWERED 0
+#define FLAG_FLAGGED  1
+#define FLAG_DELETED  2
+#define FLAG_SEEN     3
+#define FLAG_DRAFT    4
+#define FLAG_RECENT   5
+
+#include <qlist.h>
+#include <qbitarray.h>
+#include <qstring.h>
+#include <qstringlist.h>
+
+/* a class to describe mails in a mailbox */
+/* Attention!
+   From programmers point of view it would make sense to
+   store the mail body into this class, too.
+   But: not from the point of view of the device. 
+   Mailbodies can be real large. So we request them when 
+   needed from the mail-wrapper class direct from the server itself
+   (imap) or from a file-based cache (pop3?)
+   So there is no interface "const QString&body()" but you should
+   make a request to the mailwrapper with this class as parameter to
+   get the body. Same words for the attachments.
+*/
+class RecMail
+{
+public:
+    RecMail();
+    virtual ~RecMail(){}
+
+    const int getNumber()const{return msg_number;}
+    void setNumber(int number){msg_number=number;}
+    const QString&getDate()const{ return date; }
+    void setDate( const QString&a ) { date = a; }
+    const QString&getFrom()const{ return from; }
+    void setFrom( const QString&a ) { from = a; }
+    const QString&getSubject()const { return subject; }
+    void setSubject( const QString&s ) { subject = s; }
+    const QString&getMbox()const{return mbox;}
+    void setMbox(const QString&box){mbox = box;}
+    
+    void setTo(const QStringList&list);
+    const QStringList&To()const;
+    void setCC(const QStringList&list);
+    const QStringList&CC()const;
+    void setBcc(const QStringList&list);
+    const QStringList&Bcc()const;
+
+    const QBitArray&getFlags()const{return msg_flags;}
+    void setFlags(const QBitArray&flags){msg_flags = flags;}
+
+protected:
+    QString subject,date,from,mbox;
+    int msg_number;
+    QBitArray msg_flags;
+    QStringList to,cc,bcc;
+};
+
+class RecPart
+{
+protected:
+    QString m_type,m_subtype,m_identifier,m_encoding;
+public:
+    RecPart();
+    RecPart(const QString&identifier,const QString&type="",const QString&subtype="",const QString&encoding="BASE64");
+    virtual ~RecPart();
+    
+    const QString&Type()const;
+    void setType(const QString&type);
+    const QString&Subtype()const;
+    void setSubtype(const QString&subtype);
+    const QString&Identifier()const;
+    void setIdentifier(const QString&identifier);
+    const QString&Encoding()const;
+    void setEncoding(const QString&encoding);
+};
+
+class RecBody
+{
+protected:
+    QString m_BodyText;
+    QList<RecPart> m_PartsList;
+
+public:
+    RecBody();
+    virtual ~RecBody();
+    void setBodytext(const QString&);
+    const QString& Bodytext()const;
+    
+    void setParts(const QList<RecPart>&parts);
+    const QList<RecPart>& Parts()const;
+    void addPart(const RecPart&part);
+};
+
+#endif
diff --git a/noncore/net/mail/mailwrapper.cpp b/noncore/net/mail/mailwrapper.cpp
index 7f67cd8..898e9d6 100644
--- a/noncore/net/mail/mailwrapper.cpp
+++ b/noncore/net/mail/mailwrapper.cpp
@@ -627,15 +627,3 @@ Mail::Mail()
     :name(""), mail(""), to(""), cc(""), bcc(""), reply(""), subject(""), message("")
 {
 }
-
-RecMail::RecMail()
-    :subject(""),date(""),mbox(""),msg_number(0),msg_flags(7)
-{
-}
-
-#if 0
-void RecMail::setDate(const QString&aDate)
-{
-    mDate = QDateTime::fromString(aDate);
-}
-#endif
diff --git a/noncore/net/mail/mailwrapper.h b/noncore/net/mail/mailwrapper.h
index 332034f..34fd5c5 100644
--- a/noncore/net/mail/mailwrapper.h
+++ b/noncore/net/mail/mailwrapper.h
@@ -31,60 +31,6 @@ protected:
 
 };
 
-#define FLAG_ANSWERED 0
-#define FLAG_FLAGGED  1
-#define FLAG_DELETED  2
-#define FLAG_SEEN     3
-#define FLAG_DRAFT    4
-#define FLAG_RECENT   5
-
-/* a class to describe mails in a mailbox */
-/* Attention!
-   From programmers point of view it would make sense to
-   store the mail body into this class, too.
-   But: not from the point of view of the device. 
-   Mailbodies can be real large. So we request them when 
-   needed from the mail-wrapper class direct from the server itself
-   (imap) or from a file-based cache (pop3?)
-   So there is no interface "const QString&body()" but you should
-   make a request to the mailwrapper with this class as parameter to
-   get the body. Same words for the attachments.
-*/
-class RecMail
-{
-public:
-    RecMail();
-    virtual ~RecMail(){}
-
-    const int getNumber()const{return msg_number;}
-    void setNumber(int number){msg_number=number;}
-    const QString&getDate()const{ return date; }
-    void setDate( const QString&a ) { date = a; }
-    const QString&getFrom()const{ return from; }
-    void setFrom( const QString&a ) { from = a; }
-    const QString&getSubject()const { return subject; }
-    void setSubject( const QString&s ) { subject = s; }
-    const QString&getMbox()const{return mbox;}
-    void setMbox(const QString&box){mbox = box;}
-    const QBitArray&getFlags()const{return msg_flags;}
-    void setFlags(const QBitArray&flags){msg_flags = flags;}
-
-#if 0    
-    void setDate(const QString&dstring);
-    void setDate(const QDateTime&date){mDate = date;}
-    QString getDate()const{return mDate.toString();}
-#endif
-protected:
-    QString subject,date,from,mbox;
-    int msg_number;
-    QBitArray msg_flags;
-#if 0
-    QDateTime mDate;
-#endif
-};
-
-typedef QList<RecMail> Maillist;
-
 class Mail
 {
 public:
diff --git a/noncore/net/mail/mainwindow.cpp b/noncore/net/mail/mainwindow.cpp
index 7af7d83..b25db97 100644
--- a/noncore/net/mail/mainwindow.cpp
+++ b/noncore/net/mail/mainwindow.cpp
@@ -9,6 +9,8 @@
 #include "defines.h"
 #include "mainwindow.h"
 #include "viewmail.h"
+#include "mailtypes.h"
+#include "mailistviewitem.h"
 
 MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
     : QMainWindow( parent, name, flags )
@@ -100,7 +102,7 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
     connect( mailView, SIGNAL( clicked( QListViewItem * ) ),this,
              SLOT( displayMail( QListViewItem * ) ) );
 
-    connect(folderView,SIGNAL(refreshMailview(Maillist*)),this,SLOT(refreshMailView(Maillist*)));
+    connect(folderView,SIGNAL(refreshMailview(QList<RecMail>*)),this,SLOT(refreshMailView(QList<RecMail>*)));
 
    QTimer::singleShot( 1000, this, SLOT(  slotAdjustColumns() ) );
 }
@@ -129,23 +131,14 @@ void MainWindow::slotShowFolders( bool show )
     }
 }
 
-void MainWindow::refreshMailView(Maillist*list)
+void MainWindow::refreshMailView(QList<RecMail>*list)
 {
     MailListViewItem*item = 0;
     mailView->clear();
-#if 0
-    QFont f = mailView->getFont();
-    QFont bf = f;
-#endif
     for (unsigned int i = 0; i < list->count();++i) {
         item = new MailListViewItem(mailView,item);
         item->storeData(*(list->at(i)));
         item->showEntry();
-#if 0
-        if (!list->at(i)->getFlags().testBit(FLAG_SEEN)) {
-            item->setFont(bf);
-        }
-#endif
     }
 }
 void MainWindow::displayMail(QListViewItem*item)
@@ -153,14 +146,17 @@ void MainWindow::displayMail(QListViewItem*item)
     if (!item) return;
     qDebug("View mail");
     RecMail mail = ((MailListViewItem*)item)->data();
-    QString body = folderView->fetchBody(mail);
+    RecBody body = folderView->fetchBody(mail);
 
     ViewMail readMail( this );
-    readMail.setMailInfo( mail.getFrom(), "", mail.getSubject(), "", "", body );
+    readMail.setMailInfo( mail.getFrom(), "", mail.getSubject(), "", "", body.Bodytext() );
     readMail.showMaximized();
     readMail.exec();
+}
 
-    qDebug(body );
+MailListViewItem::MailListViewItem(QListView * parent, MailListViewItem * after )
+        :QListViewItem(parent,after),mail_data()
+{
 }
 
 void MailListViewItem::showEntry()
@@ -169,3 +165,13 @@ void MailListViewItem::showEntry()
     setText(1,mail_data.getFrom());
     setText(2,mail_data.getDate());
 }
+
+void MailListViewItem::storeData(const RecMail&data)
+{
+    mail_data = data;
+}
+
+const RecMail& MailListViewItem::data()const
+{
+    return mail_data;
+}
diff --git a/noncore/net/mail/mainwindow.h b/noncore/net/mail/mainwindow.h
index a5142ab..6c87261 100644
--- a/noncore/net/mail/mainwindow.h
+++ b/noncore/net/mail/mainwindow.h
@@ -10,6 +10,8 @@
 
 #include "accountview.h"
 
+class RecMail;
+
 class MainWindow : public QMainWindow
 {
     Q_OBJECT
@@ -22,7 +24,7 @@ public slots:
     
 protected slots:
     virtual void slotShowFolders( bool show );
-    virtual void refreshMailView(Maillist*);
+    virtual void refreshMailView(QList<RecMail>*);
     virtual void displayMail(QListViewItem*);
     
 protected:
@@ -36,19 +38,4 @@ protected:
 
 };
 
-class MailListViewItem:public QListViewItem
-{
-public:
-    MailListViewItem(QListView * parent, MailListViewItem * after )
-        :QListViewItem(parent,after),mail_data(){}
-    virtual ~MailListViewItem(){}
-    
-    void storeData(const RecMail&data){mail_data = data;}
-    const RecMail&data()const{return mail_data;}
-    void showEntry();
-    
-protected:
-    RecMail mail_data;
-};
-
 #endif
--
cgit v0.9.0.2