/*
 * CatchUpCurrentGroup (void) -- Nachrichten als gelesen markieren
 *
 */

int
CatchUpCurrentGroup (void)

{
  /* Catchup bedeutet: USER-Statusflag Old setzen. */
  return (ChangeFlagsCurrentGroup (UMSUSTATF_Old, NULL));
}

/*---------------------------------------------------------*/

int
DeleteUMSMessage (UMSUserAccount account, UMSMsgNum num)
{
STRPTR msggroup = NULL;

  if (ShowReq ("Achtung!",
               "Aktuelle Nachricht\n"
               "wirklich löschen?",
               "Löschen|Abbruch")
              )
    {
      if (UMSDeleteMsg (account, num))
	{
          FreeMsgList ();
          InfoBarClear (Mywindow, infobar_h);	/* todo: Fensterlöschfunktion */
          DisplayTxt (txtfld, Mywindow, "<<Nachricht gelöscht>>");
          SetGlobMsgNum (0);

          if (msggroup = GetAktMsgGroup())
            {
            printf("Hole Messageliste...\n");
            GetMsgList(account,msggroup,GlobalFocus);
            }

	  ShowReq (NULL,
                         "Die aktuelle Nachricht\n"
                         "wurde erfolgreich gelöscht.",
                         NULL);
	}
      else
	{
	  CheckErr ();		/* User informieren */
	}
    }
  return (0);			/* vorerst Null. todo: Null = Error, ~0 = MsgNum gelöschte Nachricht */
}

/*------------------------------------------------------------*/


int
SaveUMSMessage (UMSUserAccount account, UMSMsgNum num)
{
  STRPTR txtbuffer = NULL;

  if (ShowReq ("Achtung!",
               "Aktuelle Nachricht\n"
               "wirklich speichern?",
               "Speichern|Abbruch")
              )
/* evtl. Formatwahl: Notiz, System, Brief, Spezial */
/* Format
   - Kurz      nur Absender, Subject, Gruppe + Zeile "--------------"
   - System    mit allen relevanten Messagefelder und Flags, dann Text.
   - Brief     Layout wie ein traditioneller Brief.
   - Spezial   geht zu einem besonderen Einstellfenster.
*/

    {
      txtbuffer = GetTxt(txtfld,Mywindow);

      if (txtbuffer)
	{
          BPTR file = NULL;
          STRPTR filename = "ram:test_output";

          file = Open (filename, 1006); /* MODE_NEWFILE aus <dos.h> */
          if (file)
            {
            LONG result = NULL;
            result = Write (file, txtbuffer, strlen(txtbuffer) ); /* ok, oder mehrere Durchläufe? */

            if (result == strlen(txtbuffer) )
                {
                ShowReq (NULL, "Die aktuelle Nachricht\nwurde erfolgreich gespeichert", NULL);
                }
               else
                {
               if (result == -1)
                 {
                 ShowError ("DOS-Fehler!");
                 }
               else
                {
                 ShowError ("Text nur teilweise gespeichert!");
                }
                }
            Close (file);
            }

	}
      else
	{
        ShowError ("Text nicht vorhanden,\n zu wenig Speicher\noder Fehler beim Auslesen.");
	}
    }
  return (0);			/* vorerst Null. todo: Null = Error, ~0 = MsgNum gelöschte Nachricht */
}

/*------------------------------------------------------------*/

int
PrintUMSMessage (UMSUserAccount account, UMSMsgNum num)
{
  if (ShowReq ("Achtung!",
               "Aktuelle Nachricht\n"
               "wirklich ausdrucken?",
               "Drucken|Abbruch")
              )

/* evtl. Formatwahl: Notiz, System, Brief, Spezial */
/* Format
   - Notiz     nur Absender, Subject, Gruppe + Zeile "--------------"
   - System    mit allen relevanten Messagefelder und Flags, dann Text.
   - Brief     Layout wie ein traditioneller Brief.
   - Spezial   geht zu einem besonderen Einstellfenster.
*/
    {
      txtbuffer = GetTxt(txtfld,Mywindow);

      if (txtbuffer)
	{
          BPTR file = NULL;
          STRPTR filename = "prt:";

          file = Open (filename, 1006); /* 1006 = MODE_NEWFILE, <dos.h> */
          if (file)
            {
            LONG result = NULL;
            result = Write (file, txtbuffer, strlen(txtbuffer) ); /* ok, oder mehrere Durchläufe? */

            if (result == strlen(txtbuffer) )
                {
                ShowReq (NULL, "Die aktuelle Nachricht\nwurde erfolgreich gedruckt", NULL);
                }
               else
                {
               if (result == -1)
                 {
                 ShowError ("DOS-Fehler!");
                 }
               else
                {
                 ShowError ("Text nur teilweise gedruckt!");
                }
                }
            Close (file);
            }

	}
      else
	{
        ShowError ("Text nicht verfügbar.");
	}
    }
  return (0);			/* vorerst Null. todo: Null = Error, ~0 = MsgNum gelöschte Nachricht */
}
