jens-maus/yam

View on GitHub
src/mui/ConfigPage.c

Summary

Maintainability
Test Coverage
/***************************************************************************

 YAM - Yet Another Mailer
 Copyright (C) 1995-2000 Marcel Beck
 Copyright (C) 2000-2022 YAM Open Source Team

 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.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   See the
 GNU General Public License for more details.

 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

 YAM Official Support Site : http://www.yam.ch
 YAM OpenSource project     : http://sourceforge.net/projects/yamos/

 $Id$

 Superclass:  MUIC_Group
 Description: Base class for pages in the config window

***************************************************************************/

#include "ConfigPage_cl.h"

#include <proto/muimaster.h>

#include "YAM.h"

#include "mui/ConfigPageList.h"
#include "mui/ImageArea.h"

#include "Debug.h"

/* INCLUDE
#include "Locale.h"
#include "MUIObjects.h"
#include "Themes.h"
*/

/* Overloaded Methods */
/// OVERLOAD(OM_NEW)
OVERLOAD(OM_NEW)
{
  enum ConfigPage page;
  const char *imageID;
  ULONG image;
  const char *title;
  const char *summary;
  Object *contents;

  ENTER();

  page = (enum ConfigPage)GetTagData(ATTR(Page), (IPTR)cp_Max, inittags(msg));
  switch(page)
  {
    case cp_FirstSteps:   imageID = "config_firststep_big";  image = CI_FIRSTSTEPBIG;  title = tr(MSG_CO_FIRSTSTEPS_TITLE); summary = tr(MSG_CO_FIRSTSTEPS_SUMMARY); break;
    case cp_TCPIP:        imageID = "config_network_big";    image = CI_NETWORKBIG;    title = tr(MSG_CO_TCPIP_TITLE);      summary = tr(MSG_CO_TCPIP_SUMMARY);      break;
    case cp_Identities:   imageID = "config_identities_big"; image = CI_IDENTITIESBIG; title = tr(MSG_CO_IDENTITIES_TITLE); summary = tr(MSG_CO_IDENTITIES_SUMMARY); break;
    case cp_Filters:      imageID = "config_filters_big";    image = CI_FILTERSBIG;    title = tr(MSG_CO_FILTER_TITLE);     summary = tr(MSG_CO_FILTER_SUMMARY);     break;
    case cp_Spam:         imageID = "config_spam_big";       image = CI_SPAMBIG;       title = tr(MSG_CO_SPAMFILTER_TITLE); summary = tr(MSG_CO_SPAMFILTER_SUMMARY); break;
    case cp_Read:         imageID = "config_read_big";       image = CI_READBIG;       title = tr(MSG_CO_READ_TITLE);       summary = tr(MSG_CO_READ_SUMMARY);       break;
    case cp_Write:        imageID = "config_write_big";      image = CI_WRITEBIG;      title = tr(MSG_CO_WRITE_TITLE);      summary = tr(MSG_CO_WRITE_SUMMARY);      break;
    case cp_ReplyForward: imageID = "config_answer_big";     image = CI_ANSWERBIG;     title = tr(MSG_CO_REPLY_TITLE);      summary = tr(MSG_CO_REPLY_SUMMARY);      break;
    case cp_Signature:    imageID = "config_signature_big";  image = CI_SIGNATUREBIG;  title = tr(MSG_CO_SIGNATURE_TITLE);  summary = tr(MSG_CO_SIGNATURE_SUMMARY);  break;
    case cp_Security:     imageID = "config_security_big";   image = CI_SECURITYBIG;   title = tr(MSG_CO_SECURITY_TITLE);   summary = tr(MSG_CO_SECURITY_SUMMARY);   break;
    case cp_MIME:         imageID = "config_mime_big";       image = CI_MIMEBIG;       title = tr(MSG_CO_MIME_TITLE);       summary = tr(MSG_CO_MIME_SUMMARY);       break;
    case cp_StartupQuit:  imageID = "config_start_big";      image = CI_STARTBIG;      title = tr(MSG_CO_STARTUP_TITLE);    summary = tr(MSG_CO_STARTUP_SUMMARY);    break;
    case cp_AddressBook:  imageID = "config_abook_big";      image = CI_ABOOKBIG;      title = tr(MSG_CO_ABOOK_TITLE);      summary = tr(MSG_CO_ABOOK_SUMMARY);      break;
    case cp_Scripts:      imageID = "config_scripts_big";    image = CI_SCRIPTSBIG;    title = tr(MSG_CO_SCRIPTS_TITLE);    summary = tr(MSG_CO_SCRIPTS_SUMMARY);    break;
    case cp_Mixed:        imageID = "config_misc_big";       image = CI_MISCBIG;       title = tr(MSG_CO_MIXED_TITLE);      summary = tr(MSG_CO_MIXED_SUMMARY);      break;
    case cp_LookFeel:     imageID = "config_lookfeel_big";   image = CI_LOOKFEELBIG;   title = tr(MSG_CO_LOOKFEEL_TITLE);   summary = tr(MSG_CO_LOOKFEEL_SUMMARY);   break;
    case cp_Update:       imageID = "config_update_big";     image = CI_UPDATEBIG;     title = tr(MSG_CO_UPDATE_TITLE);     summary = tr(MSG_CO_UPDATE_SUMMARY);     break;
    default:              imageID = NULL;                    image = CI_MAX;           title = NULL;                        summary = NULL;                          break;
  }

  contents = (Object *)GetTagData(ATTR(Contents), (IPTR)NULL, inittags(msg));

  if((obj = DoSuperNew(cl, obj,
    MUIA_Group_Horiz, FALSE,
    Child, HGroup,
      Child, MakeImageObject(imageID, G->theme.configImages[image]),
      Child, VGroup,
        Child, TextObject,
          MUIA_Text_PreParse, "\033b",
          MUIA_Text_Contents, title,
          MUIA_Text_Copy,     FALSE,
        End,
        Child, TextObject,
          MUIA_Text_Contents, summary,
          MUIA_Text_Copy,     FALSE,
          MUIA_Font,          MUIV_Font_Tiny,
        End,
      End,
    End,
    Child, RectangleObject,
      MUIA_Rectangle_HBar, TRUE,
      MUIA_FixHeight,      4,
    End,
  TAG_MORE, inittags(msg))) != NULL)
  {
    if(GetTagData(ATTR(UseScrollgroup), TRUE, inittags(msg)) == TRUE)
    {
      // add a scrollgroup with the given contents as virtual group
      // plus a spacer object at the bottom
      DoMethod(obj, OM_ADDMEMBER, ScrollgroupObject,
        MUIA_Scrollgroup_FreeHoriz, FALSE,
        MUIA_Scrollgroup_AutoBars, TRUE,
        MUIA_Scrollgroup_Contents, VGroupV,
          Child, contents,
        End,
      End);
      if(GetTagData(ATTR(AddSpacer), TRUE, inittags(msg)) == TRUE)
        DoMethod(contents, OM_ADDMEMBER, HVSpace);
    }
    else
    {
      // just add the contents
      DoMethod(obj, OM_ADDMEMBER, contents);
    }
  }

  RETURN((IPTR)obj);
  return (IPTR)obj;
}

///
/// OVERLOAD(OM_GET)
OVERLOAD(OM_GET)
{
  IPTR *store = ((struct opGet *)msg)->opg_Storage;
  ULONG result = FALSE;

  ENTER();

  switch(((struct opGet *)msg)->opg_AttrID)
  {
    case ATTR(ConfigUpdate): *store = TRUE; result = TRUE; break;
  }

  if(result == FALSE)
    result = DoSuperMethodA(cl, obj, msg);

  RETURN(result);
  return result;
}

///
/// DECLARE(ConfigToGUI)
DECLARE(ConfigToGUI)
{
  ENTER();

  E(DBF_GUI, "derived class did not overload MUIM_ConfigPage_ConfigToGUI method");

  RETURN(0);
  return 0;
}

///
/// DECLARE(GUIToConfig)
DECLARE(GUIToConfig)
{
  ENTER();

  E(DBF_GUI, "derived class did not overload MUIM_ConfigPage_GUIToConfig method");

  RETURN(0);
  return 0;
}

///
/// DECLARE(ConfigUpdate)
DECLARE(ConfigUpdate) // ULONG sourcePage
{
  ENTER();

  // this method is optional to be overloaded

  RETURN(0);
  return 0;
}

///