⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailprefc.c

📁 linux下的E_MAIL客户端源码
💻 C
字号:
/* *  $Id: MailPrefC.C,v 1.4 2001/06/21 10:59:30 evgeny Exp $ *   *  Copyright (c) 1994 HAL Computer Systems International, Ltd. *  *          HAL COMPUTER SYSTEMS INTERNATIONAL, LTD. *                  1315 Dell Avenue *                  Campbell, CA  95008 * * Author: Greg Hilton * Contributors: Tom Lang, Frank Bieser, and others * * 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. * * http://www.gnu.org/copyleft/gpl.html * * 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. */#include <config.h>#include "IshAppC.h"#include "MailPrefC.h"#include "AppPrefC.h"#include "ShellExp.h"#include "Misc.h"#include "MailPrefWinC.h"#include <hgl/rsrc.h>#include <hgl/StringC.h>#include <hgl/StringListC.h>/*--------------------------------------------------------------- *  Constructor */MailPrefC::MailPrefC() : PrefC(){   prefWin = NULL;//// Read resources//   orig.deadFile     = get_string(*halApp, "deadLetterFile",	"+dead.letter");   orig.sendmailCmd  = get_string(*halApp, "sendmailCmd", "/usr/sbin/sendmail");   orig.fccFolder    = get_string(*halApp, "outgoingFile",	"+outgoing");   orig.fccFolder    = get_string(*halApp, "fccFolder",		orig.fccFolder);   orig.fccFolderDir = get_string(*halApp, "fccFolderDir",				  ishApp->appPrefs->OrigFolderDir());   split	     = get_boolean(*halApp, "composeSplitEnabled",False);   splitSize     = get_int    (*halApp, "composeSplitSize",	100000);   verifyAddresses   = get_boolean(*halApp, "verifyAddresses",	False);   saveOnInterrupt   = get_boolean(*halApp, "saveOnInterrupt",	True);   //// From: header; use "username <userAtDomain>" as fallback//   StringC fromHeader_fb(ishApp->userName);   fromHeader_fb += " <";   fromHeader_fb += ishApp->userAtDomain;   fromHeader_fb += ">";   fromHeader      = get_string (*halApp, "fromHeader", fromHeader_fb);      otherHeaders      = get_string (*halApp, "additionalHeaders");   charset       = get_string (*halApp, "composeCharset",    "us-ascii");//// Outgoing message settings//   StringC	fccStr = get_string(*halApp, "fccType");   if      ( fccStr.Equals("folder",  IGNORE_CASE) )      fccType = FCC_TO_FOLDER;   else if ( fccStr.Equals("user",    IGNORE_CASE) )      fccType = FCC_BY_USER;   else if ( fccStr.Equals("address", IGNORE_CASE) )      fccType = FCC_BY_ADDRESS;   else if ( fccStr.Equals("year",    IGNORE_CASE) )      fccType = FCC_BY_YEAR;   else if ( fccStr.Equals("month",   IGNORE_CASE) )      fccType = FCC_BY_MONTH;   else if ( fccStr.Equals("week",    IGNORE_CASE) )      fccType = FCC_BY_WEEK;   else if ( fccStr.Equals("day",     IGNORE_CASE) )      fccType = FCC_BY_DAY;   else if ( fccStr.Equals("none",    IGNORE_CASE) )      fccType = FCC_NONE;   else {      Boolean	copyOut = get_boolean(*halApp, "copyOutgoing",	False);      if ( copyOut ) fccType = FCC_TO_FOLDER;      else	     fccType = FCC_NONE;   }//// Read list of aliases that require confirmation.//   StringC	tmpStr = get_string(*halApp, "confirmMailTo");   ExtractList(tmpStr, confirmAddrList);   confirmAddrs = get_boolean(*halApp, "confirmMailToEnabled", True);   tmpStr = get_string(*halApp, "composeBodyEncoding", "quoted-printable");   if ( tmpStr.Equals("8-bit", IGNORE_CASE) ) bodyEncType = ET_8BIT;   else					      bodyEncType = ET_QP;   tmpStr = get_string(*halApp, "composeHeaderEncoding", "Q");   if      ( tmpStr.StartsWith('Q', IGNORE_CASE) ) headEncType = ET_QP;   else if ( tmpStr.StartsWith('B', IGNORE_CASE) ) headEncType = ET_BASE_64;   else					           headEncType = ET_NONE;   tmpStr = get_string(*halApp, "outgoingMailType",	"plain");   if ( tmpStr.EndsWith("plain", IGNORE_CASE) )      mailType = MAIL_PLAIN;   else if ( tmpStr.Equals("alternative", IGNORE_CASE) )      mailType = MAIL_ALT;   else      mailType = MAIL_MIME;   tmpStr = get_string(*halApp, "outgoingTextType",	"enriched");   if ( tmpStr.EndsWith("plain", IGNORE_CASE) )      textType = CT_PLAIN;   else      textType = CT_ENRICHED;   sendmailCmd  = orig.sendmailCmd;	ShellExpand(sendmailCmd);   deadFile     = orig.deadFile;	ishApp->ExpandFolderName(deadFile);   fccFolder    = orig.fccFolder;	ishApp->ExpandFolderName(fccFolder);   fccFolderDir = orig.fccFolderDir;	ishApp->ExpandFolderName(fccFolderDir);} // End constructor/*--------------------------------------------------------------- *  destructor */MailPrefC::~MailPrefC(){   delete prefWin;}/*--------------------------------------------------------------- *  Method to write resources to resource database */BooleanMailPrefC::WriteDatabase(){   switch (fccType) {      case (FCC_TO_FOLDER):	Store("fccType", "Folder");	break;      case (FCC_BY_USER):	Store("fccType", "User");	break;      case (FCC_BY_ADDRESS):	Store("fccType", "Address");	break;      case (FCC_BY_YEAR):	Store("fccType", "Year");	break;      case (FCC_BY_MONTH):	Store("fccType", "Month");	break;      case (FCC_BY_WEEK):	Store("fccType", "Week");	break;      case (FCC_BY_DAY):	Store("fccType", "Day");	break;      case (FCC_NONE):      default:			Store("fccType", "None");	break;   }   Store("fccFolder",		orig.fccFolder);   Store("fccFolderDir",	orig.fccFolderDir);   Store("saveOnInterrupt",	saveOnInterrupt);   Store("deadLetterFile",	orig.deadFile);   Store("sendmailCmd",		orig.sendmailCmd);   Store("verifyAddresses",	verifyAddresses);   Store("fromHeader",	        fromHeader);   Store("additionalHeaders",	otherHeaders);   Store("composeSplitEnabled",	split);   if ( splitSize > 0 ) Store("composeSplitSize",	splitSize);   Store("composeCharset",	charset);   switch ( bodyEncType ) {      case (ET_8BIT): Store("composeBodyEncoding", "8-bit");		break;      default:	      Store("composeBodyEncoding", "quoted-printable");	break;   }   switch ( headEncType ) {      case (ET_QP):	 Store("composeHeaderEncoding",	"Q");	 break;      case (ET_BASE_64): Store("composeHeaderEncoding",	"B");	 break;      default:		 Store("composeHeaderEncoding",	"None"); break;   }   switch ( mailType ) {      case (MAIL_PLAIN): Store("outgoingMailType", "Plain");	   break;      case (MAIL_MIME):  Store("outgoingMailType", "Mime");	   break;      case (MAIL_ALT):   Store("outgoingMailType", "Alternative"); break;   }   switch ( textType ) {      case (CT_PLAIN):	     Store("outgoingTextType", "Plain");	break;      case (CT_ENRICHED):    Store("outgoingTextType", "Enriched");	break;   }   Store("confirmMailTo",		confirmAddrList);   Store("confirmMailToEnabled",	confirmAddrs);   return True;} // End WriteDatabase/*--------------------------------------------------------------- *  Method to write resources to a file */BooleanMailPrefC::WriteFile(){   StringListC	lineList;   ReadResFile(lineList);   switch (fccType) {      case (FCC_TO_FOLDER):	Update(lineList, "fccType", "Folder");	break;      case (FCC_BY_USER):	Update(lineList, "fccType", "User");	break;      case (FCC_BY_ADDRESS):	Update(lineList, "fccType", "Address");	break;      case (FCC_BY_YEAR):	Update(lineList, "fccType", "Year");	break;      case (FCC_BY_MONTH):	Update(lineList, "fccType", "Month");	break;      case (FCC_BY_WEEK):	Update(lineList, "fccType", "Week");	break;      case (FCC_BY_DAY):	Update(lineList, "fccType", "Day");	break;      case (FCC_NONE):      default:			Update(lineList, "fccType", "None");	break;   }   Update(lineList, "fccFolder",		orig.fccFolder);   Update(lineList, "fccFolderDir",		orig.fccFolderDir);   Update(lineList, "deadLetterFile",		orig.deadFile);   Update(lineList, "sendmailCmd",		orig.sendmailCmd);   Update(lineList, "saveOnInterrupt",		saveOnInterrupt);   Update(lineList, "verifyAddresses",		verifyAddresses);   Update(lineList, "fromHeader",	        fromHeader);   Update(lineList, "additionalHeaders",	otherHeaders);   Update(lineList, "composeCharset",		charset);   Update(lineList, "composeSplitEnabled",	split);   if ( splitSize > 0 ) Update(lineList, "composeSplitSize", splitSize);   switch ( bodyEncType ) {      case (ET_8BIT):	 Update(lineList, "composeBodyEncoding",	"8-bit");	 break;      default:	 Update(lineList, "composeBodyEncoding",	"quoted-printable");	 break;   }   switch ( headEncType ) {      case (ET_QP):	 Update(lineList, "composeHeaderEncoding",	"Q");	 break;      case (ET_BASE_64):	 Update(lineList, "composeHeaderEncoding",	"B");	 break;      default:	 Update(lineList, "composeHeaderEncoding",	"None");	 break;   }   switch ( mailType ) {      case (MAIL_PLAIN):	 Update(lineList, "outgoingMailType",	"Plain");	 break;      case (MAIL_MIME):	 Update(lineList, "outgoingMailType",	"Mime");	 break;      case (MAIL_ALT):	 Update(lineList, "outgoingMailType",	"Alternative");	 break;   }   switch ( textType ) {      case (CT_PLAIN):	 Update(lineList, "outgoingTextType",	"Plain");	 break;      case (CT_ENRICHED):	 Update(lineList, "outgoingTextType",	"Enriched");	 break;   }   Update(lineList, "confirmMailTo",		confirmAddrList);   Update(lineList, "confirmMailToEnabled",	confirmAddrs);//// Write the information back to the file//   return WriteResFile(lineList);} // End WriteFile/*------------------------------------------------------------------------ * Method to edit the preferences */voidMailPrefC::Edit(Widget parent){   halApp->BusyCursor(True);   if ( !prefWin ) prefWin = new MailPrefWinC(parent);   prefWin->Show(parent);   halApp->BusyCursor(False);}/*------------------------------------------------------------------------ * Method to set dead letter file name */voidMailPrefC::SetDeadFile(const char *name){   if ( orig.deadFile == name ) return;   deadFile = orig.deadFile = name;   ishApp->ExpandFolderName(deadFile);}/*------------------------------------------------------------------------ * Method to set the Fcc folder name */voidMailPrefC::SetFccFolder(const char *name){   if ( orig.fccFolder == name ) return;   fccFolder = orig.fccFolder = name;   ishApp->ExpandFolderName(fccFolder);}/*------------------------------------------------------------------------ * Method to set the Fcc directory name */voidMailPrefC::SetFccFolderDir(const char *name){   if ( orig.fccFolderDir == name ) return;   fccFolderDir = orig.fccFolderDir = name;   ishApp->ExpandFolderName(fccFolderDir);}/*------------------------------------------------------------------------ * Method to set the command used to send mail */voidMailPrefC::SetSendmailCmd(const char *name){   if ( orig.sendmailCmd == name ) return;   sendmailCmd = orig.sendmailCmd = name;   ShellExpand(sendmailCmd);   char	*sp = strchr((char*)sendmailCmd, ' ');   if ( sp ) {      int	pos = sp - (char*)sendmailCmd;      sendmailCmd.Clear(pos);   }} // End SetSendmailCmd

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -