src/mui/LookFeelConfigPage.c
/***************************************************************************
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_ConfigPage
Description: "Look&Feel" configuration page
***************************************************************************/
#include "LookFeelConfigPage_cl.h"
#include <proto/muimaster.h>
#include "YAM_utilities.h"
#include "mui/ConfigPage.h"
#include "mui/ConfigPageList.h"
#include "mui/PlaceholderPopup.h"
#include "mui/PlaceholderPopupList.h"
#include "mui/ThemeListGroup.h"
#include "Config.h"
#include "Debug.h"
/* CLASSDATA
struct Data
{
Object *GR_THEMES;
Object *CY_FOLDERINFO;
Object *CH_FCOLS[NUMBER_FOLDERTREE_COLUMNS];
Object *CH_FCNTMENU;
Object *CH_MCOLS[NUMBER_MAILLIST_COLUMNS];
Object *CH_MCNTMENU;
Object *CY_INFOBARPOS;
Object *PO_INFOBARTXT;
Object *CY_QUICKSEARCHBARPOS;
Object *CY_SIZE;
Object *CH_EMBEDDEDREADPANE;
Object *CH_FIXFLIST;
Object *CH_BEAT;
Object *CH_RELDATETIME;
Object *CH_ABOOKLOOKUP;
Object *CH_FOLDERDBLCLICK;
};
*/
/* INCLUDE
#include "mui/MainFolderListtree.h"
#include "mui/MainMailList.h"
*/
/* Private functions */
/// MakeStaticCheck
// creates non-interactive checkmark gadget
static Object *MakeStaticCheck(void)
{
return ImageObject,
ImageButtonFrame,
MUIA_Image_Spec, MUII_CheckMark,
MUIA_Background, MUII_ButtonBack,
MUIA_ShowSelState, FALSE,
MUIA_Selected, TRUE,
MUIA_Disabled, TRUE,
End;
}
///
/* Overloaded Methods */
/// OVERLOAD(OM_NEW)
OVERLOAD(OM_NEW)
{
static const char *rtitles[3];
static const char *sizef[6];
static const char *infob[5];
static const char *qsearchb[4];
static const char *folderf[6];
Object *GR_THEMES;
Object *CY_FOLDERINFO;
Object *CH_FCOLS[NUMBER_FOLDERTREE_COLUMNS];
Object *CH_FCNTMENU;
Object *CH_MCOLS[NUMBER_MAILLIST_COLUMNS];
Object *CH_MCNTMENU;
Object *CY_INFOBARPOS;
Object *PO_INFOBARTXT;
Object *CY_QUICKSEARCHBARPOS;
Object *CY_SIZE;
Object *CH_EMBEDDEDREADPANE;
Object *CH_FIXFLIST;
Object *CH_BEAT;
Object *CH_RELDATETIME;
Object *CH_ABOOKLOOKUP;
Object *CH_FOLDERDBLCLICK;
ENTER();
rtitles[0] = tr(MSG_CO_LOOKFEEL_THEMES);
rtitles[1] = tr(MSG_CO_LOOKFEEL_MAINWINDOW);
rtitles[2] = NULL;
sizef[0] = tr(MSG_CO_SIZEFORMAT01);
sizef[1] = tr(MSG_CO_SIZEFORMAT02);
sizef[2] = tr(MSG_CO_SIZEFORMAT03);
sizef[3] = tr(MSG_CO_SIZEFORMAT04);
sizef[4] = tr(MSG_CO_SIZEFORMAT05);
sizef[5] = NULL;
infob[0] = tr(MSG_CO_INFOBARPOS04);
infob[1] = tr(MSG_CO_INFOBARPOS01);
infob[2] = tr(MSG_CO_INFOBARPOS02);
infob[3] = tr(MSG_CO_INFOBARPOS03);
infob[4] = NULL;
qsearchb[0] = tr(MSG_CO_QUICKSEARCHBARPOS01);
qsearchb[1] = tr(MSG_CO_QUICKSEARCHBARPOS02);
qsearchb[2] = tr(MSG_CO_QUICKSEARCHBARPOS03);
qsearchb[3] = NULL;
folderf[0] = tr(MSG_CO_FOLDERINFO01);
folderf[1] = tr(MSG_CO_FOLDERINFO02);
folderf[2] = tr(MSG_CO_FOLDERINFO03);
folderf[3] = tr(MSG_CO_FOLDERINFO04);
folderf[4] = tr(MSG_CO_FOLDERINFO05);
folderf[5] = NULL;
if((obj = DoSuperNew(cl, obj,
MUIA_HelpNode, "Configuration#LookFeel",
MUIA_ConfigPage_Page, cp_LookFeel,
MUIA_ConfigPage_UseScrollgroup, FALSE,
MUIA_ConfigPage_AddSpacer, FALSE,
MUIA_ConfigPage_Contents, RegisterGroup(rtitles),
MUIA_CycleChain, TRUE,
// Themes settings
Child, ScrollgroupObject,
MUIA_Scrollgroup_FreeHoriz, FALSE,
MUIA_Scrollgroup_AutoBars, TRUE,
MUIA_Scrollgroup_Contents, VGroupV,
Child, GR_THEMES = ThemeListGroupObject,
End,
End,
End,
// Main window settings
Child, ScrollgroupObject,
MUIA_Scrollgroup_FreeHoriz, FALSE,
MUIA_Scrollgroup_AutoBars, TRUE,
MUIA_Scrollgroup_Contents, VGroupV,
// List column settings
Child, HGroup, GroupFrameT(tr(MSG_CO_LISTCOLUMNSETTINGS)),
// Folder list columns
Child, VGroup,
Child, HBarT(tr(MSG_FolderList)), End,
Child, ColGroup(3),
MUIA_ShortHelp, tr(MSG_HELP_CO_CG_FO),
Child, MakeStaticCheck(),
Child, CY_FOLDERINFO = MakeCycle(folderf, tr(MSG_CO_FOLDERLABEL)),
Child, HSpace(0),
Child, CH_FCOLS[1] = MakeCheck(""),
Child, LLabel(tr(MSG_Total)),
Child, HSpace(0),
Child, CH_FCOLS[2] = MakeCheck(""),
Child, LLabel(tr(MSG_Unread)),
Child, HSpace(0),
Child, CH_FCOLS[3] = MakeCheck(""),
Child, LLabel(tr(MSG_New)),
Child, HSpace(0),
Child, CH_FCOLS[4] = MakeCheck(""),
Child, LLabel(tr(MSG_Size)),
Child, HSpace(0),
Child, CH_FCNTMENU = MakeCheck(""),
Child, LLabel(tr(MSG_CO_CONTEXTMENU)),
Child, HSpace(0),
End,
Child, HVSpace,
End,
Child, HSpace(8),
// Message list columns
Child, VGroup,
Child, HBarT(tr(MSG_MessageList)), End,
Child, ColGroup(3),
MUIA_ShortHelp, tr(MSG_HELP_CO_CG_MA),
Child, MakeStaticCheck(),
Child, LLabel(tr(MSG_Status)),
Child, HSpace(0),
Child, CH_MCOLS[1] = MakeCheck(""),
Child, LLabel(tr(MSG_SenderRecpt)),
Child, HSpace(0),
Child, CH_MCOLS[2] = MakeCheck(""),
Child, LLabel(tr(MSG_ReturnAddress)),
Child, HSpace(0),
Child, CH_MCOLS[3] = MakeCheck(""),
Child, LLabel(tr(MSG_Subject)),
Child, HSpace(0),
Child, CH_MCOLS[4] = MakeCheck(""),
Child, LLabel(tr(MSG_MessageDate)),
Child, HSpace(0),
Child, CH_MCOLS[5] = MakeCheck(""),
Child, LLabel(tr(MSG_Size)),
Child, HSpace(0),
Child, CH_MCOLS[6] = MakeCheck(""),
Child, LLabel(tr(MSG_Filename)),
Child, HSpace(0),
Child, CH_MCOLS[7] = MakeCheck(""),
Child, LLabel(tr(MSG_CO_DATE_SNTRCVD)),
Child, HSpace(0),
Child, CH_MCOLS[8] = MakeCheck(""),
Child, LLabel(tr(MSG_CO_MAILACCOUNT_TRANSFERRED)),
Child, HSpace(0),
Child, CH_MCNTMENU = MakeCheck(""),
Child, LLabel(tr(MSG_CO_CONTEXTMENU)),
Child, HSpace(0),
End,
End,
End,
// InfoBar settings
Child, ColGroup(2), GroupFrameT(tr(MSG_CO_INFOBAR)),
Child, Label1(tr(MSG_CO_INFOBARPOS)),
Child, CY_INFOBARPOS = MakeCycle(infob, tr(MSG_CO_INFOBARPOS)),
Child, Label2(tr(MSG_CO_FOLDERLABEL)),
Child, PO_INFOBARTXT = PlaceholderPopupObject,
MUIA_String_MaxLen, SIZE_DEFAULT,
MUIA_PlaceholderPopup_Mode, PHM_MAILSTATS,
MUIA_PlaceholderPopup_ControlChar, ShortCut(tr(MSG_CO_FOLDERLABEL)),
End,
End,
// QuicksearchBar settings
Child, ColGroup(2), GroupFrameT(tr(MSG_CO_QUICKSEARCHBAR)),
Child, Label1(tr(MSG_CO_QUICKSEARCHBARPOS)),
Child, CY_QUICKSEARCHBARPOS = MakeCycle(qsearchb, tr(MSG_CO_QUICKSEARCHBARPOS)),
End,
Child, ColGroup(2),
GroupFrameT(tr(MSG_CO_GENLISTCFG)),
Child, Label1(tr(MSG_CO_SIZEFORMAT)),
Child, CY_SIZE = MakeCycle(sizef, tr(MSG_CO_SIZEFORMAT)),
Child, HSpace(1),
Child, MakeCheckGroup(&CH_EMBEDDEDREADPANE, tr(MSG_CO_SHOWEMBEDDEDREADPANE)),
Child, HSpace(1),
Child, MakeCheckGroup(&CH_FIXFLIST, tr(MSG_CO_FixedFontList)),
Child, HSpace(1),
Child, MakeCheckGroup(&CH_BEAT, tr(MSG_CO_SwatchBeat)),
Child, HSpace(1),
Child, MakeCheckGroup(&CH_RELDATETIME, tr(MSG_CO_RELDATETIME)),
Child, HSpace(1),
Child, MakeCheckGroup(&CH_ABOOKLOOKUP, tr(MSG_CO_ABOOKLOOKUP)),
Child, HSpace(1),
Child, MakeCheckGroup(&CH_FOLDERDBLCLICK, tr(MSG_CO_FOLDERDBLCLICK)),
End,
Child, HVSpace,
End,
End,
End,
TAG_MORE, inittags(msg))) != NULL)
{
GETDATA;
LONG i;
data->GR_THEMES = GR_THEMES;
data->CY_FOLDERINFO = CY_FOLDERINFO;
for(i = 1; i < NUMBER_FOLDERTREE_COLUMNS; i++)
data->CH_FCOLS[i] = CH_FCOLS[i];
data->CH_FCNTMENU = CH_FCNTMENU;
for(i = 1; i < NUMBER_MAILLIST_COLUMNS; i++)
data->CH_MCOLS[i] = CH_MCOLS[i];
data->CH_MCNTMENU = CH_MCNTMENU;
data->CY_INFOBARPOS = CY_INFOBARPOS;
data->PO_INFOBARTXT = PO_INFOBARTXT;
data->CY_QUICKSEARCHBARPOS = CY_QUICKSEARCHBARPOS;
data->CY_SIZE = CY_SIZE;
data->CH_EMBEDDEDREADPANE = CH_EMBEDDEDREADPANE;
data->CH_FIXFLIST = CH_FIXFLIST;
data->CH_BEAT = CH_BEAT;
data->CH_RELDATETIME = CH_RELDATETIME;
data->CH_ABOOKLOOKUP = CH_ABOOKLOOKUP;
data->CH_FOLDERDBLCLICK = CH_FOLDERDBLCLICK;
SetHelp(CY_INFOBARPOS, MSG_HELP_CO_CH_INFOBAR);
SetHelp(PO_INFOBARTXT, MSG_HELP_CO_ST_INFOBARTXT);
SetHelp(CY_QUICKSEARCHBARPOS, MSG_HELP_CO_CH_QUICKSEARCHBAR);
SetHelp(CH_EMBEDDEDREADPANE, MSG_HELP_CO_CH_EMBEDDEDREADPANE);
SetHelp(CY_SIZE, MSG_HELP_CO_CY_SIZE);
SetHelp(CH_FIXFLIST, MSG_HELP_CO_CH_FIXFLIST);
SetHelp(CH_BEAT, MSG_HELP_CO_CH_BEAT);
SetHelp(CH_RELDATETIME, MSG_HELP_CO_CH_RELDATETIME);
SetHelp(CH_ABOOKLOOKUP, MSG_HELP_CO_CH_ABOOKLOOKUP);
SetHelp(CH_FCNTMENU, MSG_HELP_CO_CONTEXTMENU);
SetHelp(CH_MCNTMENU, MSG_HELP_CO_CONTEXTMENU);
SetHelp(CY_FOLDERINFO, MSG_HELP_CO_CY_FOLDERINFO);
DoMethod(CY_INFOBARPOS, MUIM_Notify, MUIA_Cycle_Active, MUIV_EveryTime, PO_INFOBARTXT, 3, MUIM_Set, MUIA_Disabled, MUIV_NotTriggerValue);
}
RETURN((IPTR)obj);
return (IPTR)obj;
}
///
/// OVERLOAD(MUIM_ConfigPage_ConfigToGUI)
OVERLOAD(MUIM_ConfigPage_ConfigToGUI)
{
GETDATA;
int i;
ENTER();
setcycle(data->CY_INFOBARPOS, CE->InfoBarPos);
setstring(data->PO_INFOBARTXT, CE->InfoBarText);
setcycle(data->CY_QUICKSEARCHBARPOS, CE->QuickSearchBarPos);
setcheckmark(data->CH_EMBEDDEDREADPANE, CE->EmbeddedReadPane);
setcycle(data->CY_SIZE, CE->SizeFormat);
set(data->PO_INFOBARTXT, MUIA_Disabled, CE->InfoBarPos == IB_POS_OFF);
// update the themeslist and set the current one
// as active
DoMethod(data->GR_THEMES, MUIM_ThemeListGroup_Update);
for(i=1; i < NUMBER_FOLDERTREE_COLUMNS; i++)
setcheckmark(data->CH_FCOLS[i], isFlagSet(CE->FolderCols, (1<<i)));
for(i=1; i < NUMBER_MAILLIST_COLUMNS; i++)
setcheckmark(data->CH_MCOLS[i], isFlagSet(CE->MessageCols, (1<<i)));
setcheckmark(data->CH_FIXFLIST, CE->FixedFontList);
setcheckmark(data->CH_ABOOKLOOKUP, CE->ABookLookup);
setcheckmark(data->CH_FCNTMENU, CE->FolderCntMenu);
setcheckmark(data->CH_MCNTMENU, CE->MessageCntMenu);
setcheckmark(data->CH_BEAT, (CE->DSListFormat == DSS_DATEBEAT || CE->DSListFormat == DSS_RELDATEBEAT));
setcheckmark(data->CH_RELDATETIME, (CE->DSListFormat == DSS_RELDATETIME || CE->DSListFormat == DSS_RELDATEBEAT));
setcheckmark(data->CH_FOLDERDBLCLICK, CE->FolderDoubleClick);
setcycle(data->CY_FOLDERINFO, CE->FolderInfoMode);
RETURN(0);
return 0;
}
///
/// OVERLOAD(MUIM_ConfigPage_GUIToConfig)
OVERLOAD(MUIM_ConfigPage_GUIToConfig)
{
GETDATA;
int i;
ENTER();
CE->InfoBarPos = GetMUICycle(data->CY_INFOBARPOS);
GetMUIString(CE->InfoBarText, data->PO_INFOBARTXT, sizeof(CE->InfoBarText));
CE->QuickSearchBarPos = GetMUICycle(data->CY_QUICKSEARCHBARPOS);
CE->EmbeddedReadPane = GetMUICheck(data->CH_EMBEDDEDREADPANE);
CE->SizeFormat = GetMUICycle(data->CY_SIZE);
CE->FolderCols = (1<<0);
for(i=1; i < NUMBER_FOLDERTREE_COLUMNS; i++)
{
if(GetMUICheck(data->CH_FCOLS[i]) == TRUE)
setFlag(CE->FolderCols, (1<<i));
}
CE->MessageCols = (1<<0);
for(i=1; i < NUMBER_MAILLIST_COLUMNS; i++)
{
if(GetMUICheck(data->CH_MCOLS[i]) == TRUE)
setFlag(CE->MessageCols, (1<<i));
}
CE->FixedFontList = GetMUICheck(data->CH_FIXFLIST);
CE->ABookLookup = GetMUICheck(data->CH_ABOOKLOOKUP);
CE->FolderCntMenu = GetMUICheck(data->CH_FCNTMENU);
CE->MessageCntMenu = GetMUICheck(data->CH_MCNTMENU);
CE->FolderDoubleClick = GetMUICheck(data->CH_FOLDERDBLCLICK);
if(GetMUICheck(data->CH_BEAT) == TRUE)
{
if(GetMUICheck(data->CH_RELDATETIME) == TRUE)
CE->DSListFormat = DSS_RELDATEBEAT;
else
CE->DSListFormat = DSS_DATEBEAT;
}
else
{
if(GetMUICheck(data->CH_RELDATETIME) == TRUE)
CE->DSListFormat = DSS_RELDATETIME;
else
CE->DSListFormat = DSS_DATETIME;
}
CE->FolderInfoMode = GetMUICycle(data->CY_FOLDERINFO);
RETURN(0);
return 0;
}
///