/* KNode, the KDE newsreader Copyright (c) 1999-2005 the KNode authors. See file AUTHORS for details 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US */ #ifndef KNARTICLEFACTORY_H #define KNARTICLEFACTORY_H #include #include #include "knjobdata.h" #include "knarticle.h" #include "knwidgets.h" class TQLabel; class KNGroup; class KNFolder; class KNCollection; class KNComposer; class KNSendErrorDialog; class KNNntpAccount; namespace KNConfig { class Identity; } class KNArticleFactory : public TQObject , public KNJobConsumer { Q_OBJECT public: enum replyType { RTgroup, RTmail, RTboth }; KNArticleFactory(TQObject *p=0, const char *n=0); ~KNArticleFactory(); //factory methods void createPosting(KNNntpAccount *a); void createPosting(KNGroup *g); void createReply(KNRemoteArticle *a, TQString selectedText=TQString(), bool post=true, bool mail=false); void createForward(KNArticle *a); void createCancel(KNArticle *a); void createSupersede(KNArticle *a); void createMail(KMime::Headers::AddressField *address); // send a mail via an external program... void sendMailExternal(const TQString &address=TQString(), const TQString &subject=TQString(), const TQString &body=TQString()); //article handling void edit(KNLocalArticle *a); void sendArticles( KNLocalArticle::List &l, bool now = true ); void sendOutbox(); //composer handling bool closeComposeWindows(); // try to close all composers, return false if user objects void deleteComposerForArticle(KNLocalArticle *a); KNComposer* findComposer(KNLocalArticle *a); void configChanged(); protected: //job handling void processJob(KNJobData *j); //reimplemented from KNJobConsumer //article generation // col: group or account KNLocalArticle* newArticle(KNCollection *col, TQString &sig, TQCString defChset, bool withXHeaders=true, KNArticle *origPost=0); //cancel & supersede bool cancelAllowed(KNArticle *a); //send-errors void showSendErrorDialog(); TQValueList mCompList; KNSendErrorDialog *s_endErrDlg; protected slots: void slotComposerDone(KNComposer *com); void slotSendErrorDialogDone(); }; class KNSendErrorDialog : public KDialogBase { Q_OBJECT public: KNSendErrorDialog(); ~KNSendErrorDialog(); void append(const TQString &subject, const TQString &error); protected: class LBoxItem : public KNListBoxItem { public: LBoxItem(const TQString &e, const TQString &t, TQPixmap *p=0) : KNListBoxItem(t, p) , error(e) {} ~LBoxItem() {} TQString error; }; KNDialogListBox *j_obs; TQLabel *e_rror; TQPixmap p_ixmap; protected slots: void slotHighlighted(int idx); }; #endif //KNARTICLEFACTORY_H