00001 #ifndef __ACCOUNT_ITEM
00002 #define __ACCOUNT_ITEM
00003
00004 #include <opie2/osmartpointer.h>
00005
00006 #include <qlistview.h>
00007 #include <qlist.h>
00008 #include <qmap.h>
00009
00010 class POP3wrapper;
00011 class RecMail;
00012 class RecBody;
00013 class QPopupMenu;
00014 class Selectstore;
00015 class AccountView;
00016 class POP3account;
00017 class NNTPaccount;
00018 class IMAPaccount;
00019 class AbstractMail;
00020 class Folder;
00021
00022 #define RECBODYP Opie::Core::OSmartPointer<RecBody>
00023
00024 class AccountViewItem : public QListViewItem
00025 {
00026
00027 public:
00028 AccountViewItem( AccountView *parent );
00029 AccountViewItem( QListViewItem *parent);
00030 AccountViewItem( QListViewItem *parent , QListViewItem*after );
00031 AccountViewItem( const Opie::Core::OSmartPointer<Folder>&folderInit,QListViewItem *parent , QListViewItem*after );
00032
00033 virtual ~AccountViewItem();
00034 virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&)=0;
00035 virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&)=0;
00036 virtual QPopupMenu * getContextMenu();
00037 virtual bool contextMenuSelected(int){return false;}
00038 virtual AccountView*accountView();
00039 virtual bool matchName(const QString&name)const;
00040 virtual bool isDraftfolder();
00041
00042
00043
00044
00045 virtual int isServer()const=0;
00046 virtual QMap<int,QString> serverMenu();
00047 virtual QMap<int,QString> folderMenu();
00048
00049 protected:
00050 AccountViewItem*findSubItem(const QString&path,AccountViewItem*start=0);
00051 virtual void init();
00052 virtual void removeChilds();
00053 virtual void deleteAllMail(AbstractMail*wrapper,const Opie::Core::OSmartPointer<Folder>&f);
00054 static const QString contextName;
00055 AccountView*m_Backlink;
00056 Opie::Core::OSmartPointer<Folder> folder;
00057 };
00058
00059 class POP3viewItem : public AccountViewItem
00060 {
00061
00062 public:
00063 POP3viewItem( POP3account *a, AccountView *parent );
00064 virtual ~POP3viewItem();
00065 virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&target );
00066 virtual RECBODYP fetchBody( const Opie::Core::OSmartPointer<RecMail> &mail );
00067 AbstractMail *getWrapper();
00068 virtual bool contextMenuSelected(int);
00069 virtual int isServer()const{return 1;}
00070 virtual QMap<int,QString> serverMenu();
00071
00072 protected:
00073 POP3account *account;
00074 virtual void refresh();
00075 AbstractMail *wrapper;
00076 void disconnect();
00077 void setOnOffline();
00078 };
00079
00080 class POP3folderItem : public AccountViewItem
00081 {
00082
00083 public:
00084 POP3folderItem( const Opie::Core::OSmartPointer<Folder>&folder, POP3viewItem *parent , QListViewItem*after );
00085 virtual ~POP3folderItem();
00086 virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&);
00087 virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&);
00088 virtual bool contextMenuSelected(int);
00089 virtual int isServer()const{return 2;}
00090 virtual QMap<int,QString> folderMenu();
00091
00092 protected:
00093 void downloadMails();
00094 POP3viewItem *pop3;
00095 };
00096
00097
00098 class NNTPviewItem : public AccountViewItem
00099 {
00100
00101 public:
00102 NNTPviewItem( NNTPaccount *a, AccountView *parent );
00103 virtual ~NNTPviewItem();
00104 virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&target );
00105 virtual RECBODYP fetchBody( const Opie::Core::OSmartPointer<RecMail> &mail );
00106 AbstractMail *getWrapper();
00107 virtual bool contextMenuSelected(int);
00108 virtual int isServer()const{return 1;}
00109 virtual QMap<int,QString> serverMenu();
00110
00111 protected:
00112 NNTPaccount *account;
00113 virtual void refresh();
00114 AbstractMail *wrapper;
00115 void disconnect();
00116 void setOnOffline();
00117 void subscribeGroups();
00118 };
00119
00120 class NNTPfolderItem : public AccountViewItem
00121 {
00122
00123 public:
00124 NNTPfolderItem(const Opie::Core::OSmartPointer<Folder>&folder, NNTPviewItem *parent , QListViewItem*after );
00125 virtual ~NNTPfolderItem();
00126 virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&);
00127 virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&);
00128 virtual bool contextMenuSelected(int);
00129 virtual int isServer()const{return 2;}
00130 virtual QMap<int,QString> folderMenu();
00131 protected:
00132 void downloadMails();
00133 NNTPviewItem *nntp;
00134 };
00135
00136
00137
00138 class IMAPviewItem : public AccountViewItem
00139 {
00140 friend class IMAPfolderItem;
00141 public:
00142 IMAPviewItem( IMAPaccount *a, AccountView *parent );
00143 virtual ~IMAPviewItem();
00144 virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&);
00145 virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&);
00146 AbstractMail *getWrapper();
00147 virtual bool contextMenuSelected(int);
00148 const QStringList&subFolders();
00149 virtual void refreshFolders(bool force=false);
00150 virtual int isServer()const{return 1;}
00151 bool offline();
00152 virtual QMap<int,QString> serverMenu();
00153
00154 protected:
00155 virtual void createNewFolder();
00156 IMAPaccount *account;
00157 AbstractMail *wrapper;
00158 QStringList currentFolders;
00159 };
00160
00161 class IMAPfolderItem : public AccountViewItem
00162 {
00163
00164 public:
00165 IMAPfolderItem( const Opie::Core::OSmartPointer<Folder>&folder, IMAPviewItem *parent , QListViewItem*after );
00166 IMAPfolderItem( const Opie::Core::OSmartPointer<Folder>&folder, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master );
00167 virtual ~IMAPfolderItem();
00168 virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&);
00169 virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&);
00170 virtual bool contextMenuSelected(int);
00171 virtual const QString& Delemiter()const;
00172 virtual int isServer()const{return 2;}
00173 virtual QMap<int,QString> folderMenu();
00174 protected:
00175 virtual void createNewFolder();
00176 virtual bool deleteFolder();
00177 virtual void downloadMails();
00178 IMAPviewItem *imap;
00179 };
00180
00181 class MHviewItem : public AccountViewItem
00182 {
00183 friend class MHfolderItem;
00184
00185 public:
00186 MHviewItem( const QString&aMboxPath, AccountView *parent );
00187 virtual ~MHviewItem();
00188 virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&target );
00189 virtual RECBODYP fetchBody( const Opie::Core::OSmartPointer<RecMail> &mail );
00190 AbstractMail *getWrapper();
00191 virtual bool contextMenuSelected(int);
00192 QStringList subFolders();
00193 virtual void refresh(bool force=false);
00194 virtual int isServer()const{return 3;}
00195 virtual QMap<int,QString> serverMenu();
00196 virtual QMap<int,QString> folderMenu();
00197
00198 protected:
00199 void downloadMails();
00200 virtual void createFolder();
00201 QString m_Path;
00202 AbstractMail *wrapper;
00203 QStringList currentFolders;
00204 };
00205
00206 class MHfolderItem : public AccountViewItem
00207 {
00208
00209 public:
00210 MHfolderItem( const Opie::Core::OSmartPointer<Folder>&folder, MHviewItem *parent , QListViewItem*after );
00211 MHfolderItem( const Opie::Core::OSmartPointer<Folder>&folder, MHfolderItem *parent, QListViewItem*after, MHviewItem*master);
00212 virtual ~MHfolderItem();
00213 virtual void refresh(QValueList<Opie::Core::OSmartPointer<RecMail> >&);
00214 virtual RECBODYP fetchBody(const Opie::Core::OSmartPointer<RecMail>&);
00215 virtual bool contextMenuSelected(int);
00216 virtual const Opie::Core::OSmartPointer<Folder>&getFolder()const;
00217 virtual bool isDraftfolder();
00218 virtual int isServer()const{return 2;}
00219 virtual QMap<int,QString> folderMenu();
00220
00221 protected:
00222 void downloadMails();
00223 virtual void createFolder();
00224 virtual bool deleteFolder();
00225 void initName();
00226 MHviewItem *mbox;
00227 };
00228
00229 #endif