home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Applications / Nuntius 1.2 / src / Nuntius / UPostArticleCmds.h < prev    next >
Encoding:
Text File  |  1994-03-06  |  2.8 KB  |  130 lines  |  [TEXT/MPS ]

  1. // Copyright © 1992 Peter Speck, speck@dat.ruc.dk. All rights reserved.
  2. // UPostArticleCmds.h
  3.  
  4. #define __UPOSTARTICLECMDS__
  5.  
  6. #ifndef __UPTROBJECT__
  7. #include "UPtrObject.h"
  8. #endif
  9.  
  10. #ifndef __UPOSTARTICLEVIEW__
  11. #include "UPostArticleView.h"
  12. #endif
  13.  
  14. class TGroupDoc;
  15. class TArticle;
  16. class PNntp;
  17. class TThreadList;
  18.  
  19. class PPostArticleInfo : public PPtrObject
  20. {
  21.     public:
  22.         CStr255 fSubject;
  23.         CStr255 fNewsGroups;
  24.         CStr255 fReferences;
  25.         CStr255 fDistribution;
  26.         Boolean fEditHeaders;
  27.         Boolean fEditSignature;
  28.         Boolean fAddSignatureChoice;
  29.         Boolean fTrashDiskCopyAfterPost;
  30.         TFile *fFile;
  31.         Handle fDefaultTextH;
  32.         PNntp *fNntp;
  33.         
  34.         void CreateNntp(); // no-op if existing
  35.         void DiscardNntp();
  36.  
  37.         void MakeHeader(TStream *aStream, short templateID);
  38.         void MakeSignature(TStream *aStream);
  39.  
  40.         void CreateWindows();
  41.         void ShowPostArticleWindow();
  42.         void DoPostArticle();
  43.         void Cancel(); // postponed for windows!
  44.  
  45.         void MakeFile();
  46.         void LaunchEditor();
  47.         
  48.         PPostArticleInfo();
  49.         void IPostArticleInfo();
  50.         ~PPostArticleInfo();
  51.     private:
  52.         short fRefCount;
  53.         TThreadList *fThreadList;
  54.         
  55.         TWindow *fCreateArticleW;
  56.         TEditArticleToPostDialogView *fCreateArticleView;
  57.         
  58.         TWindow *fPostArticleW;
  59.         TPostArticleDialogView *fPostArticleView;
  60. };
  61.  
  62.  
  63. class TCreateNewDiscussionCommand : public TCommand
  64. {
  65.     public:
  66.         virtual pascal void DoIt();
  67.  
  68.         TCreateNewDiscussionCommand();
  69.         virtual pascal void Initialize();
  70.         void ICreateNewDiscussionCommand(TGroupDoc *doc);
  71.         virtual pascal void Free();
  72.     protected:
  73.         PPostArticleInfo *fPostArticleInfo;
  74.         TGroupDoc *fDoc;
  75.         
  76.         virtual void PrepareInfo();
  77. };
  78.  
  79. class TCreateFollowupCommand : public TCreateNewDiscussionCommand
  80. {
  81.     // a follow-up is a "new" thread with references to an existing thread
  82.     public:
  83.         TCreateFollowupCommand();
  84.         virtual pascal void Initialize();
  85.         void ICreateFollowupCommand(TGroupDoc *doc, ArrayIndex discIndex, 
  86.                         Handle defaultText);
  87.         virtual pascal void Free();
  88.     protected:
  89.         Boolean GetMsgID(long articleID, CStr255 &id);
  90.         Handle fDefaultText;
  91.         TArticle *fArticle;
  92.         long fDiscIndex;
  93.         
  94.         virtual void PrepareInfo();
  95.         virtual void DoPrepareArticleInfo(long id);
  96. };
  97.  
  98. class TPostArticleCommand : public TCommand
  99. {
  100.     public:
  101.         virtual pascal void DoIt();
  102.         
  103.         TPostArticleCommand();
  104.         virtual pascal void Initialize();
  105.         void IPostArticleCommand(PPostArticleInfo *info);
  106.         virtual pascal void Free();
  107.     protected:
  108.         PPostArticleInfo *fPostArticleInfo;
  109.         Handle fText;
  110.         
  111.         virtual void ReadArticle();
  112.         virtual void Export2022Body(long bodySize);
  113.         virtual void PostArticle();
  114.         virtual void TrashDiskCopy();
  115. };
  116.  
  117. class TCancelArticleCommand : public TPostArticleCommand
  118. {
  119.     public:
  120.         pascal void DoIt();
  121.  
  122.         TCancelArticleCommand();
  123.         pascal void Initialize();
  124.         void ICancelArticleCommand(const CStr255 &messageID);
  125.         pascal void Free();
  126.     protected:
  127.         void ReadArticle();
  128.         void PostArticle();
  129. };
  130.