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

📄 mailprefwinc.c

📁 linux下的E_MAIL客户端源码
💻 C
📖 第 1 页 / 共 2 页
字号:
   wlist[2] = *checkRC;   XtManageChildren(wlist, 3);	// appForm children   HandleHelp();   XtAddCallback(shell, XmNpopupCallback, (XtCallbackProc)DoPopup,                 (XtPointer)this);} // End constructor/*--------------------------------------------------------------- *  Destructor */MailPrefWinC::~MailPrefWinC(){   delete fieldRC;   delete checkRC;}/*--------------------------------------------------------------- *  Callback routine to handle initial display. */voidMailPrefWinC::DoPopup(Widget, MailPrefWinC *This, XtPointer){   XtRemoveCallback(This->shell, XmNpopupCallback, (XtCallbackProc)DoPopup,		    (XtPointer)This);//// Finish initializing fieldRC//   WidgetList	wlist;   Cardinal	wcount;   XtVaGetValues(*This->fieldRC, XmNchildren, &wlist, XmNnumChildren, &wcount,   		 NULL);   This->fieldRC->SetChildren(wlist, wcount);   This->fieldRC->SetRowResize(2, True);	// confirmAddr row   This->fieldRC->SetRowResize(3, True);	// otherHead row   This->fieldRC->SetRowHeightAdjust(2, RcADJUST_ATTACH);   This->fieldRC->SetRowHeightAdjust(3, RcADJUST_ATTACH);   This->fieldRC->Defer(False);}/*--------------------------------------------------------------- *  Method to handle display */voidMailPrefWinC::Show(Widget parent){   MailPrefC	*prefs = ishApp->mailPrefs;//// See if this widget corresponds to a particular composition window//   SendWinC	*sendWin = NULL;   if ( parent != (Widget)*ishApp->mainWin ) {      u_int	count = ishApp->sendWinList.size();      for (int i=0; !sendWin && i<count; i++) {	 SendWinC	*win = (SendWinC*)*ishApp->sendWinList[i];	 if ( parent == (Widget)*win ) sendWin = win;      }   }//// Initialize settings//   if ( sendWin )      XmToggleButtonSetState(checkAddrTB, sendWin->CheckingAddresses(), False);   else      XmToggleButtonSetState(checkAddrTB, prefs->verifyAddresses, False);   StringC	str;   str += prefs->splitSize;   XmTextFieldSetString(splitTF, str);   XmToggleButtonSetState(splitTB, prefs->split, False);   Widget	hist = NULL;   Widget	tb   = NULL;   switch ( prefs->fccType ) {      case (FCC_TO_FOLDER):	tb = fccFolderTB;			break;      case (FCC_BY_USER):	tb = fccPatternTB; hist = fccUserPB;	break;      case (FCC_BY_ADDRESS):	tb = fccPatternTB; hist = fccAddrPB;	break;      case (FCC_BY_YEAR):	tb = fccPatternTB; hist = fccYearPB;	break;      case (FCC_BY_MONTH):	tb = fccPatternTB; hist = fccMonthPB;	break;      case (FCC_BY_WEEK):	tb = fccPatternTB; hist = fccWeekPB;	break;       case (FCC_BY_DAY):	tb = fccPatternTB; hist = fccDayPB;	break;       case (FCC_NONE):      default:			tb = noFccTB;				break;   } // End switch fccType   XmTextFieldSetString(fccFolderTF,  prefs->OrigFccFolder());   XmTextFieldSetString(fccPatternTF, prefs->OrigFccFolderDir());   if ( hist ) XtVaSetValues(fccPatternOM, XmNmenuHistory, hist, NULL);   XmToggleButtonSetState(tb, True, True);   XmTextFieldSetString(fromHeadTF, prefs->fromHeader);   if ( sendWin ) {      switch ( sendWin->MailType() ) {	 case (MAIL_PLAIN):	    XmToggleButtonSetState(mailPlainTB, True, True);	    break;	 case (MAIL_MIME):	    XmToggleButtonSetState(mailMimeTB, True, True);	    break;	 case (MAIL_ALT):	    XmToggleButtonSetState(mailAltTB, True, True);	    break;      }      switch ( sendWin->TextType() ) {	 case (CT_PLAIN):	    XmToggleButtonSetState(textPlainTB, True, True);	    break;	 case (CT_ENRICHED):	    XmToggleButtonSetState(textRichTB, True, True);	    break;      }   }   else {      switch ( prefs->mailType ) {	 case (MAIL_PLAIN):	    XmToggleButtonSetState(mailPlainTB, True, True);	    break;	 case (MAIL_MIME):	    XmToggleButtonSetState(mailMimeTB, True, True);	    break;	 case (MAIL_ALT):	    XmToggleButtonSetState(mailAltTB, True, True);	    break;      }      switch ( prefs->textType ) {	 case (CT_PLAIN):	    XmToggleButtonSetState(textPlainTB, True, True);	    break;	 case (CT_ENRICHED):	    XmToggleButtonSetState(textRichTB, True, True);	    break;      }   }   XmTextFieldSetString(charTF, prefs->charset);   switch ( prefs->bodyEncType ) {      case (ET_8BIT):	 XmToggleButtonSetState(bodyEnc8bitTB, True, True);	 break;      default:	 XmToggleButtonSetState(bodyEncQpTB, True, True);	 break;   }   switch ( prefs->headEncType ) {      case (ET_QP):	 XmToggleButtonSetState(headEncQTB, True, True);	 break;      case (ET_BASE_64):	 XmToggleButtonSetState(headEncBTB, True, True);	 break;      default:	 XmToggleButtonSetState(headEncNoneTB, True, True);	 break;   }   XmToggleButtonSetState(deadTB, prefs->saveOnInterrupt, False);   XmTextFieldSetString  (deadTF, prefs->OrigDeadFile());   XmTextFieldSetString(sendmailTF, prefs->OrigSendmailCmd());   XmToggleButtonSetState(confirmAddrTB, prefs->confirmAddrs, False);   TextSetList(confirmAddrText, prefs->confirmAddrList);   TextSetString(otherHeadText, prefs->otherHeaders);   OptWinC::Show(parent);} // End ShowvoidMailPrefWinC::Show(){   Show(XtParent(*this));}/*--------------------------------------------------------------- *  Method to apply settings */BooleanMailPrefWinC::Apply(){   MailPrefC	*prefs = ishApp->mailPrefs;   char	*cs;//// Get split data//   Boolean	doSplit = XmToggleButtonGetState(splitTB);   int		splitSize = 100000;   cs = XmTextFieldGetString(splitTF);   if ( strlen(cs) > 0 ) splitSize = atoi(cs);   XtFree(cs);//// Get split size//   if ( doSplit && splitSize < 10000 ) {      set_invalid(splitTF, True, True);      PopupMessage("Minimum split size is 10000");      return False;   }   Boolean	doDead = XmToggleButtonGetState(deadTB);   cs = XmTextFieldGetString(deadTF);   StringC	deadStr(cs);   XtFree(cs);   if ( doDead && deadStr.size() <= 0 ) {      set_invalid(deadTF, True, True);      PopupMessage("Please enter a file name for interrupted messages.");      return False;   }//// Get fcc type//   StringC	fccStr, origFccStr;   if ( XmToggleButtonGetState(fccFolderTB) ) {      cs = XmTextFieldGetString(fccFolderTF);      origFccStr = cs;      XtFree(cs);      if ( origFccStr.size() == 0 ) {	 set_invalid(fccFolderTF, True, True);	 PopupMessage("Please enter a folder name.");	 return False;      }      fccStr = origFccStr;      ishApp->ExpandFolderName(fccStr);   }   else if ( XmToggleButtonGetState(fccPatternTB) ) {      cs = XmTextFieldGetString(fccPatternTF);      origFccStr = cs;      XtFree(cs);      if ( origFccStr.size() == 0 ) {	 set_invalid(fccPatternTF, True, True);	 PopupMessage("Please enter a directory name.");	 return False;      }      fccStr = origFccStr;      ishApp->ExpandFolderName(fccStr);//// Check the status of the specified name//      if ( access(fccStr, W_OK) != 0 ) {//// Create the directory if it doesn't exist//	 if ( errno == ENOENT ) {	    StringC	errStr;	    if ( !MakeDir(fccStr) ) {	       set_invalid(fccPatternTF, True, True);	       return False;	    }	 } // End if name does not exist//// Make sure this is a directory//	 else if ( !IsDir(fccStr) ) {	    set_invalid(fccPatternTF, True, True);	    fccStr += " exists but is not a directory.";	    PopupMessage(fccStr);	    return False;	 } // End if name not a directory//// The directory is not writable//	 else {	    set_invalid(fccPatternTF, True, True);	    fccStr += " exists but is not writable.";	    PopupMessage(fccStr);	    return False;	 }      } // End if name not writable//// Make sure this is a directory//      else if ( !IsDir(fccStr) ) {	 set_invalid(fccPatternTF, True, True);	 fccStr += " exists but is not a directory.";	 PopupMessage(fccStr);	 return False;      } // End if name not a directory   } // End if using pattern   BusyCursor(True);//// Set the "From:" header//   cs = XmTextFieldGetString(fromHeadTF);   prefs->fromHeader = cs;   XtFree(cs);   prefs->verifyAddresses = XmToggleButtonGetState(checkAddrTB);   u_int	count = ishApp->sendWinList.size();   int	i;   for (i=0; i<count; i++) {      SendWinC  *sendWin = (SendWinC*)*ishApp->sendWinList[i];      sendWin->SetAddressChecking(prefs->verifyAddresses);   }   prefs->split     = doSplit;   prefs->splitSize = splitSize;   if ( XmToggleButtonGetState(fccFolderTB) ) {      prefs->fccType        = FCC_TO_FOLDER;      prefs->SetFccFolder(origFccStr);   }   else if ( XmToggleButtonGetState(fccPatternTB) ) {      Widget	hist;      XtVaGetValues(fccPatternOM, XmNmenuHistory, &hist, NULL);      if      ( hist == fccUserPB  ) prefs->fccType = FCC_BY_USER;      else if ( hist == fccAddrPB  ) prefs->fccType = FCC_BY_ADDRESS;      else if ( hist == fccYearPB  ) prefs->fccType = FCC_BY_YEAR;      else if ( hist == fccMonthPB ) prefs->fccType = FCC_BY_MONTH;      else if ( hist == fccWeekPB  ) prefs->fccType = FCC_BY_WEEK;      else			     prefs->fccType = FCC_BY_DAY;      prefs->SetFccFolderDir(origFccStr);   }   else {      prefs->fccType = FCC_NONE;   }   if ( XmToggleButtonGetState(mailPlainTB) )      prefs->mailType = MAIL_PLAIN;   else if ( XmToggleButtonGetState(mailAltTB) )      prefs->mailType = MAIL_ALT;   else      prefs->mailType = MAIL_MIME;   if ( XmToggleButtonGetState(textPlainTB) )      prefs->textType = CT_PLAIN;   else      prefs->textType = CT_ENRICHED;   count = ishApp->sendWinList.size();   for (i=0; i<count; i++) {      SendWinC	*sendWin = (SendWinC*)*ishApp->sendWinList[i];      sendWin->UpdateFcc();      sendWin->SetMailType(prefs->mailType);      sendWin->SetTextType(prefs->textType);   }//// Set default character set//   cs = XmTextFieldGetString(charTF);   if ( strlen(cs) > 0 ) prefs->charset = cs;   else			 prefs->charset = "us-ascii";   XtFree(cs);//// Set default 8-bit encoding//   if ( XmToggleButtonGetState(bodyEnc8bitTB) )      prefs->bodyEncType = ET_8BIT;   else      prefs->bodyEncType = ET_QP;   if ( XmToggleButtonGetState(headEncQTB) )      prefs->headEncType = ET_QP;   else if ( XmToggleButtonGetState(headEncBTB) )      prefs->headEncType = ET_BASE_64;   else      prefs->headEncType = ET_NONE;//// Set dead letter file//   prefs->saveOnInterrupt = doDead;   prefs->SetDeadFile(deadStr);//// Set sendmail command//   cs = XmTextFieldGetString(sendmailTF);   prefs->SetSendmailCmd(cs);   XtFree(cs);//// Set confirmation addresses//   prefs->confirmAddrs = XmToggleButtonGetState(confirmAddrTB);   prefs->confirmAddrList.removeAll();   StringC	tmp;   tmp = XmTextGetString(confirmAddrText);   ExtractList(tmp, prefs->confirmAddrList);//// Set other headers//   prefs->otherHeaders.Clear();   cs = XmTextGetString(otherHeadText);   prefs->otherHeaders = cs;   XtFree(cs);   prefs->WriteDatabase();//// Write to file if necessary//   if ( applyAll ) prefs->WriteFile();   BusyCursor(False);   return True;} // End Apply/*--------------------------------------------------------------- *  Callback to implement radio button behavior in fccFrame */voidMailPrefWinC::FccChanged(Widget tb, MailPrefWinC* This,			 XmToggleButtonCallbackStruct *data){//// Don't allow buttons to be turned off by the user//   if ( !data->set ) {      XmToggleButtonSetState(tb, True, False);      return;   }   if ( tb == This->noFccTB ) {      XmToggleButtonSetState(This->fccFolderTB,  False, False);      XmToggleButtonSetState(This->fccPatternTB, False, False);   }   else if ( tb == This->fccFolderTB ) {      XmToggleButtonSetState(This->noFccTB,      False, False);      XmToggleButtonSetState(This->fccPatternTB, False, False);   }   else {      XmToggleButtonSetState(This->noFccTB,      False, False);      XmToggleButtonSetState(This->fccFolderTB,  False, False);   }} // End FccChanged/*--------------------------------------------------------------- *  Callbacks to automatically select toggle buttons when field is *     changed or type is selected */voidMailPrefWinC::AutoSelectFolder(Widget, MailPrefWinC* This, XtPointer){   XmToggleButtonSetState(This->fccFolderTB, True, True);}voidMailPrefWinC::AutoSelectPattern(Widget, MailPrefWinC* This, XtPointer){   XmToggleButtonSetState(This->fccPatternTB, True, True);}/*--------------------------------------------------------------- *  Callback to handle press of charset button */voidMailPrefWinC::DoCharset(Widget w, MailPrefWinC *This, XtPointer){   char	*cs = "us-ascii";        if ( w == This->charIso1PB ) cs = "iso-8859-1";   else if ( w == This->charIso2PB ) cs = "iso-8859-2";   else if ( w == This->charIso3PB ) cs = "iso-8859-3";   else if ( w == This->charIso4PB ) cs = "iso-8859-4";   else if ( w == This->charIso5PB ) cs = "iso-8859-5";   else if ( w == This->charIso6PB ) cs = "iso-8859-6";   else if ( w == This->charIso7PB ) cs = "iso-8859-7";   else if ( w == This->charIso8PB ) cs = "iso-8859-8";   else if ( w == This->charIso9PB ) cs = "iso-8859-9";   else if ( w == This->charIso13PB ) cs = "iso-8859-13";   XmTextFieldSetString(This->charTF, cs);} // End DoCharset

⌨️ 快捷键说明

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