|
|
1.1 ! root 1: /* Synchronet Control Panel (GUI Borland C++ Builder Project for Win32) */ ! 2: ! 3: /* $Id: ConfigWizardUnit.cpp,v 1.19 2004/12/30 08:11:40 rswindell Exp $ */ ! 4: ! 5: /**************************************************************************** ! 6: * @format.tab-size 4 (Plain Text/Source Code File Header) * ! 7: * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * ! 8: * * ! 9: * Copyright 2004 Rob Swindell - http://www.synchro.net/copyright.html * ! 10: * * ! 11: * This program is free software; you can redistribute it and/or * ! 12: * modify it under the terms of the GNU General Public License * ! 13: * as published by the Free Software Foundation; either version 2 * ! 14: * of the License, or (at your option) any later version. * ! 15: * See the GNU General Public License for more details: gpl.txt or * ! 16: * http://www.fsf.org/copyleft/gpl.html * ! 17: * * ! 18: * Anonymous FTP access to the most recent released source is available at * ! 19: * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * ! 20: * * ! 21: * Anonymous CVS access to the development source and modification history * ! 22: * is available at cvs.synchro.net:/cvsroot/sbbs, example: * ! 23: * cvs -d :pserver:[email protected]:/cvsroot/sbbs login * ! 24: * (just hit return, no password is necessary) * ! 25: * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src * ! 26: * * ! 27: * For Synchronet coding style and modification guidelines, see * ! 28: * http://www.synchro.net/source.html * ! 29: * * ! 30: * You are encouraged to submit any modifications (preferably in Unix diff * ! 31: * format) via e-mail to [email protected] * ! 32: * * ! 33: * Note: If this box doesn't appear square, then you need to fix your tabs. * ! 34: ****************************************************************************/ ! 35: //--------------------------------------------------------------------------- ! 36: ! 37: #include <vcl.h> ! 38: #pragma hdrstop ! 39: ! 40: #include "MainFormUnit.h" ! 41: #include "ConfigWizardUnit.h" ! 42: #include <stdio.h> // sprintf ! 43: #include <winsock.h> // addresses and such ! 44: #include <iphlpapi.h> // GetNetworkParams ! 45: ! 46: //--------------------------------------------------------------------------- ! 47: #pragma package(smart_init) ! 48: #pragma resource "*.dfm" ! 49: ! 50: #define ILLEGAL_FILENAME_CHARS "\\/|<>+[]:=\";,%" ! 51: #define ILLEGAL_QWKID_CHARS "*?" ILLEGAL_FILENAME_CHARS ! 52: ! 53: char ctrl_dir[MAX_PATH+1]; ! 54: short tz_val[]= { ! 55: 0 ! 56: ,AST ! 57: ,EST ! 58: ,CST ! 59: ,MST ! 60: ,PST ! 61: ,YST ! 62: ,HST ! 63: ,BST ! 64: ,MID ! 65: ,VAN ! 66: ,EDM ! 67: ,WIN ! 68: ,BOG ! 69: ,CAR ! 70: ,RIO ! 71: ,FER ! 72: ,AZO ! 73: ,LON ! 74: ,BER ! 75: ,ATH ! 76: ,MOS ! 77: ,DUB ! 78: ,KAB ! 79: ,KAR ! 80: ,BOM ! 81: ,KAT ! 82: ,DHA ! 83: ,BAN ! 84: ,HON ! 85: ,TOK ! 86: ,SYD ! 87: ,NOU ! 88: ,WEL ! 89: }; ! 90: ! 91: char* tz_str[]={ ! 92: "Universal (UTC/GMT)" ! 93: ,"U.S. - Atlantic" ! 94: ,"U.S. - Eastern" ! 95: ,"U.S. - Central" ! 96: ,"U.S. - Mountain" ! 97: ,"U.S. - Pacific" ! 98: ,"U.S. - Yukon" ! 99: ,"U.S. - Hawaii/Alaska" ! 100: ,"U.S. - Bering" ! 101: ,"Midway" ! 102: ,"Vancouver" ! 103: ,"Edmonton" ! 104: ,"Winnipeg" ! 105: ,"Bogota" ! 106: ,"Caracas" ! 107: ,"Rio de Janeiro" ! 108: ,"Fernando de Noronha" ! 109: ,"Azores" ! 110: ,"London" ! 111: ,"Berlin" ! 112: ,"Athens" ! 113: ,"Moscow" ! 114: ,"Dubai" ! 115: ,"Kabul" ! 116: ,"Karachi" ! 117: ,"Bombay" ! 118: ,"Kathmandu" ! 119: ,"Dhaka" ! 120: ,"Bangkok" ! 121: ,"Hong Kong" ! 122: ,"Tokyo" ! 123: ,"Sydney" ! 124: ,"Noumea" ! 125: ,"Wellington" ! 126: }; ! 127: ! 128: //--------------------------------------------------------------------------- ! 129: __fastcall TConfigWizard::TConfigWizard(TComponent* Owner) ! 130: : TForm(Owner) ! 131: { ! 132: } ! 133: //--------------------------------------------------------------------------- ! 134: void __fastcall TConfigWizard::FormShow(TObject *Sender) ! 135: { ! 136: char str[512]; ! 137: int i; ! 138: int status; ! 139: ! 140: Application->BringToFront(); ! 141: ! 142: memset(&scfg,0,sizeof(scfg)); ! 143: SAFECOPY(scfg.ctrl_dir,MainForm->global.ctrl_dir); ! 144: scfg.size=sizeof(scfg); ! 145: char error[256]; ! 146: SAFECOPY(error,UNKNOWN_LOAD_ERROR); ! 147: if(!load_cfg(&scfg,NULL,FALSE,error)) { ! 148: Application->MessageBox(error,"ERROR Loadin Configuration" ! 149: ,MB_OK|MB_ICONEXCLAMATION); ! 150: Close(); ! 151: return; ! 152: } ! 153: ! 154: if(scfg.new_install) { ! 155: TIME_ZONE_INFORMATION tz; ! 156: memset(&tz,0,sizeof(tz)); ! 157: DWORD tzRet=GetTimeZoneInformation(&tz); ! 158: ! 159: /* Convert to SMB tz format */ ! 160: scfg.sys_timezone=0; ! 161: if(tz.Bias>0) { ! 162: switch(tz.Bias|US_ZONE) { ! 163: case AST: ! 164: case EST: ! 165: case CST: ! 166: case MST: ! 167: case PST: ! 168: case YST: ! 169: case HST: ! 170: case BST: ! 171: scfg.sys_timezone=tz.Bias|US_ZONE; ! 172: if(tzRet==TIME_ZONE_ID_DAYLIGHT) ! 173: scfg.sys_timezone|=DAYLIGHT; ! 174: break; ! 175: default: ! 176: scfg.sys_timezone=tz.Bias|WESTERN_ZONE; ! 177: break; ! 178: } ! 179: } else if(tz.Bias<0) ! 180: scfg.sys_timezone=(-tz.Bias)|EASTERN_ZONE; ! 181: ! 182: /* Get DNS Server Address */ ! 183: #if 0 /* Old way */ ! 184: sprintf(str,"%s /c ipconfig /all > %sipconfig.txt" ! 185: ,getenv("COMSPEC"),scfg.ctrl_dir); ! 186: WinExec(str,SW_HIDE); /* there's got to be a better way! */ ! 187: Sleep(1500); /* give ipconfig time to run */ ! 188: sprintf(str,"%sipconfig.txt",scfg.ctrl_dir); ! 189: FILE* fp=fopen(str,"r"); ! 190: if(fp==NULL) { ! 191: sprintf(error,"Error %d (%s) opening %s" ! 192: ,errno,strerror(errno),str); ! 193: Application->MessageBox(error ! 194: ,"ERROR",MB_OK|MB_ICONEXCLAMATION); ! 195: } else { ! 196: char* p; ! 197: if(fp!=NULL) { ! 198: while(!feof(fp)) { ! 199: if(!fgets(str,sizeof(str),fp)) ! 200: break; ! 201: #if 0 ! 202: Application->MessageBox(str ! 203: ,"DEBUG",MB_OK|MB_ICONEXCLAMATION); ! 204: #endif ! 205: p=str; ! 206: while(*p && *p<=' ') p++; ! 207: if(!strnicmp(p,"DNS Servers",11) && (p=strchr(p,':'))!=NULL) { ! 208: p++; ! 209: while(*p && *p<=' ') p++; ! 210: truncsp(p); ! 211: if((*p)==0) ! 212: continue; ! 213: SAFECOPY(MainForm->mail_startup.dns_server,p); ! 214: break; ! 215: } ! 216: } ! 217: fclose(fp); ! 218: } ! 219: } ! 220: #else /* New way (finally!) */ ! 221: FIXED_INFO* FixedInfo=NULL; ! 222: ULONG FixedInfoLen=0; ! 223: if(GetNetworkParams(FixedInfo,&FixedInfoLen) == ERROR_BUFFER_OVERFLOW) { ! 224: FixedInfo=(FIXED_INFO*)malloc(FixedInfoLen); ! 225: if(GetNetworkParams(FixedInfo,&FixedInfoLen) == ERROR_SUCCESS) ! 226: SAFECOPY(MainForm->mail_startup.dns_server ! 227: ,FixedInfo->DnsServerList.IpAddress.String); ! 228: if(FixedInfo!=NULL) ! 229: free(FixedInfo); ! 230: } ! 231: #endif ! 232: } else { ! 233: SystemNameEdit->Text=AnsiString(scfg.sys_name); ! 234: SystemLocationEdit->Text=AnsiString(scfg.sys_location); ! 235: SysopNameEdit->Text=AnsiString(scfg.sys_op); ! 236: SystemPasswordEdit->Text=AnsiString(scfg.sys_pass); ! 237: InternetAddressComboBox->Text=AnsiString(scfg.sys_inetaddr); ! 238: QWKIDEdit->Text=AnsiString(scfg.sys_id); ! 239: QNetTaglineEdit->Text=AnsiString(scfg.qnet_tagline); ! 240: AllNodesTelnetCheckBox->Checked ! 241: =(scfg.sys_nodes==MainForm->bbs_startup.last_node); ! 242: } ! 243: ! 244: NewUsersCheckBox->Checked=!(scfg.sys_misc&SM_CLOSED); ! 245: FeedbackCheckBox->Checked=scfg.node_valuser; ! 246: AliasesCheckBox->Checked=scfg.uq&UQ_ALIASES; ! 247: NewUsersCheckBoxClick(Sender); ! 248: ! 249: if(scfg.sys_misc&SM_USRVDELM) ! 250: DeletedEmailYesButton->Checked=true; ! 251: else if(scfg.sys_misc&SM_SYSVDELM) ! 252: DeletedEmailSysopButton->Checked=true; ! 253: else ! 254: DeletedEmailNoButton->Checked=true; ! 255: ! 256: DNSAddressEdit->Text=MainForm->mail_startup.dns_server; ! 257: MaxMailUpDown->Position=MainForm->mail_startup.max_clients; ! 258: MaxFtpUpDown->Position=MainForm->ftp_startup.max_clients; ! 259: MaxWebUpDown->Position=MainForm->web_startup.max_clients; ! 260: NodesUpDown->Position=scfg.sys_nodes; ! 261: ! 262: for(i=0;i<sizeof(tz_str)/sizeof(tz_str[0]);i++) { ! 263: char str[128]; ! 264: if(tz_val[i] && !(tz_val[i]&US_ZONE)) ! 265: sprintf(str,"%c%u:%02u %s" ! 266: ,tz_val[i]&WESTERN_ZONE ? '-':'+' ! 267: ,(tz_val[i]&0xfff)/60 ! 268: ,(tz_val[i]&0xfff)%60 ! 269: ,tz_str[i] ! 270: ); ! 271: else ! 272: strcpy(str,tz_str[i]); ! 273: TimeZoneComboBox->Items->Add(str); ! 274: } ! 275: sprintf(str,"Other (%s)",smb_zonestr(scfg.sys_timezone,NULL)); ! 276: TimeZoneComboBox->Items->Add(str); ! 277: ! 278: for(i=0;i<sizeof(tz_val)/sizeof(tz_val[0]);i++) ! 279: if((scfg.sys_timezone&((short)~DAYLIGHT))==tz_val[i]) ! 280: break; ! 281: TimeZoneComboBox->ItemIndex=i; ! 282: DaylightCheckBox->Enabled=scfg.sys_timezone&US_ZONE; ! 283: DaylightCheckBox->Checked=scfg.sys_timezone&DAYLIGHT; ! 284: if(scfg.sys_misc&SM_MILITARY) ! 285: Time24hrRadioButton->Checked=true; ! 286: else ! 287: Time12hrRadioButton->Checked=true; ! 288: if(scfg.sys_misc&SM_EURODATE) ! 289: DateEuRadioButton->Checked=true; ! 290: else ! 291: DateUsRadioButton->Checked=true; ! 292: ! 293: WizNotebook->PageIndex=0; ! 294: ProgressBar->Max=WizNotebook->Pages->Count-1; ! 295: IllegalCharsLabel->Caption="Illegal characters: '" ! 296: ILLEGAL_QWKID_CHARS "'"; ! 297: ! 298: NextButton->Enabled=true; ! 299: } ! 300: //--------------------------------------------------------------------------- ! 301: void __fastcall TConfigWizard::NextButtonClick(TObject *Sender) ! 302: { ! 303: if(ProgressBar->Position==ProgressBar->Max) /* Finished */ ! 304: { ! 305: // Write Registry keys ! 306: if(AllNodesTelnetCheckBox->Checked) ! 307: MainForm->bbs_startup.last_node=NodesUpDown->Position; ! 308: MainForm->ftp_startup.max_clients=MaxFtpUpDown->Position; ! 309: MainForm->mail_startup.max_clients=MaxMailUpDown->Position; ! 310: MainForm->web_startup.max_clients=MaxWebUpDown->Position; ! 311: strcpy(MainForm->mail_startup.dns_server,DNSAddressEdit->Text.c_str()); ! 312: ! 313: MainForm->SaveIniSettings(Sender); ! 314: ! 315: // Write CNF files ! 316: strcpy(scfg.sys_name,SystemNameEdit->Text.c_str()); ! 317: strcpy(scfg.sys_id,QWKIDEdit->Text.c_str()); ! 318: strcpy(scfg.sys_location,SystemLocationEdit->Text.c_str()); ! 319: strcpy(scfg.sys_op,SysopNameEdit->Text.c_str()); ! 320: strcpy(scfg.sys_pass,SystemPasswordEdit->Text.c_str()); ! 321: strcpy(scfg.sys_inetaddr,InternetAddressComboBox->Text.c_str()); ! 322: strcpy(scfg.qnet_tagline,QNetTaglineEdit->Text.c_str()); ! 323: scfg.sys_nodes=NodesUpDown->Position; ! 324: if(TimeZoneComboBox->ItemIndex>=0 ! 325: && TimeZoneComboBox->ItemIndex<=sizeof(tz_val)/sizeof(tz_val[0])) ! 326: scfg.sys_timezone=tz_val[TimeZoneComboBox->ItemIndex]; ! 327: if(DaylightCheckBox->Checked) ! 328: scfg.sys_timezone|=DAYLIGHT; ! 329: if(Time24hrRadioButton->Checked) ! 330: scfg.sys_misc|=SM_MILITARY; ! 331: else ! 332: scfg.sys_misc&=~SM_MILITARY; ! 333: if(DateEuRadioButton->Checked) ! 334: scfg.sys_misc|=SM_EURODATE; ! 335: else ! 336: scfg.sys_misc&=~SM_EURODATE; ! 337: if(NewUsersCheckBox->Checked) ! 338: scfg.sys_misc&=~SM_CLOSED; ! 339: else ! 340: scfg.sys_misc|=SM_CLOSED; ! 341: if(AliasesCheckBox->Checked) ! 342: scfg.uq|=UQ_ALIASES; ! 343: else ! 344: scfg.uq&=~UQ_ALIASES; ! 345: scfg.node_valuser=FeedbackCheckBox->Checked; ! 346: ! 347: if(DeletedEmailYesButton->Checked) ! 348: scfg.sys_misc|=(SM_USRVDELM|SM_SYSVDELM); ! 349: else if(DeletedEmailNoButton->Checked) ! 350: scfg.sys_misc&=~(SM_USRVDELM|SM_SYSVDELM); ! 351: else { ! 352: scfg.sys_misc|=SM_SYSVDELM; ! 353: scfg.sys_misc&=~SM_USRVDELM; ! 354: } ! 355: ! 356: scfg.new_install=FALSE; ! 357: if(!save_cfg(&scfg,0)) { ! 358: Application->MessageBox("Error saving configuration" ! 359: ,"ERROR",MB_OK|MB_ICONEXCLAMATION); ! 360: } else ! 361: refresh_cfg(&scfg); ! 362: ! 363: Close(); ! 364: return; ! 365: } ! 366: WizNotebook->PageIndex++; ! 367: ProgressBar->Position=WizNotebook->PageIndex; ! 368: if(ProgressBar->Position==ProgressBar->Max) /* Last page */ ! 369: NextButton->Caption="&Finish"; ! 370: } ! 371: //--------------------------------------------------------------------------- ! 372: void __fastcall TConfigWizard::BackButtonClick(TObject *Sender) ! 373: { ! 374: WizNotebook->PageIndex--; ! 375: ProgressBar->Position=WizNotebook->PageIndex; ! 376: NextButton->Caption="&Next >"; ! 377: } ! 378: //--------------------------------------------------------------------------- ! 379: void __fastcall TConfigWizard::CancelButtonClick(TObject *Sender) ! 380: { ! 381: Close(); ! 382: } ! 383: //--------------------------------------------------------------------------- ! 384: void __fastcall TConfigWizard::LogoImageClick(TObject *Sender) ! 385: { ! 386: LogoImage->Visible=false; ! 387: ProgressBar->Visible=false; ! 388: } ! 389: //--------------------------------------------------------------------------- ! 390: void __fastcall TConfigWizard::TitleLabelClick(TObject *Sender) ! 391: { ! 392: LogoImage->Visible=true; ! 393: ProgressBar->Visible=true; ! 394: } ! 395: //--------------------------------------------------------------------------- ! 396: void __fastcall TConfigWizard::WizNotebookPageChanged(TObject *Sender) ! 397: { ! 398: TFont* current; ! 399: ! 400: switch(WizNotebook->PageIndex) { ! 401: case 0: ! 402: current=IntroductionLabel->Font; ! 403: NextButton->Enabled=true; ! 404: break; ! 405: case 1: ! 406: current=IdentificationLabel->Font; ! 407: // ActiveControl=SystemNameEdit; ! 408: if(!SysopNameEdit->Text.Length()) { ! 409: char username[41]; ! 410: DWORD len=sizeof(username)-1; ! 411: GetUserName(username,&len); ! 412: SysopNameEdit->Text=AnsiString(username); ! 413: } ! 414: if(!SystemNameEdit->Text.Length()) { ! 415: char bbsname[41]; ! 416: DWORD len=sizeof(bbsname)-1; ! 417: GetComputerName(bbsname,&len); ! 418: SystemNameEdit->Text=AnsiString(bbsname); ! 419: } ! 420: VerifyIdentification(Sender); ! 421: break; ! 422: case 2: ! 423: current=TimeLabel->Font; ! 424: NextButton->Enabled=true; ! 425: break; ! 426: case 3: ! 427: current=InternetLabel->Font; ! 428: if(!InternetAddressComboBox->Items->Count) { ! 429: WSADATA WSAData; ! 430: WSAStartup(MAKEWORD(1,1), &WSAData); /* req'd for gethostname */ ! 431: if(scfg.sys_inetaddr[0]) ! 432: InternetAddressComboBox->Items->Add(scfg.sys_inetaddr); ! 433: char hostname[128]; ! 434: gethostname(hostname,sizeof(hostname)-1); ! 435: if(hostname[0]) { ! 436: InternetAddressComboBox->Items->Add(hostname); ! 437: HOSTENT* host=gethostbyname(hostname); ! 438: SOCKADDR_IN addr; ! 439: for(int i=0;host && host->h_addr_list[i];i++) { ! 440: addr.sin_addr.s_addr ! 441: =*((DWORD*)host->h_addr_list[i]); ! 442: InternetAddressComboBox->Items->Add(inet_ntoa(addr.sin_addr)); ! 443: } ! 444: } ! 445: WSACleanup(); ! 446: InternetAddressComboBox->ItemIndex=0; ! 447: } ! 448: VerifyInternetAddresses(Sender); ! 449: break; ! 450: case 4: ! 451: current=QWKLabel->Font; ! 452: if(!QWKIDEdit->Text.Length()) { ! 453: char bbsname[41]; ! 454: char qwkid[9]; ! 455: int len=0; ! 456: strcpy(bbsname,SystemNameEdit->Text.UpperCase().c_str()); ! 457: for(char*p=bbsname;*p && len<8;p++) { ! 458: if(strchr(ILLEGAL_QWKID_CHARS,*p)) ! 459: continue; ! 460: if(!len && isdigit(*p)) ! 461: continue; ! 462: if(*p<=' ') ! 463: continue; ! 464: qwkid[len++]=*p; ! 465: } ! 466: qwkid[len]=0; ! 467: QWKIDEdit->Text=AnsiString(qwkid); ! 468: } ! 469: if(!QNetTaglineEdit->Text.Length()) { ! 470: QNetTaglineEdit->Text = SystemNameEdit->Text + ! 471: " - " + InternetAddressComboBox->Text; ! 472: } ! 473: VerifyQWK(Sender); ! 474: break; ! 475: case 5: ! 476: current=MaximumsLabel->Font; ! 477: NextButton->Enabled=true; ! 478: break; ! 479: case 6: ! 480: current=OptionsLabel->Font; ! 481: NextButton->Enabled=true; ! 482: break; ! 483: case 7: ! 484: current=VerifyLabel->Font; ! 485: VerifyPassword(Sender); ! 486: if(!NextButton->Enabled) ! 487: ActiveControl=SysPassVerifyEdit; ! 488: break; ! 489: case 8: ! 490: current=CompleteLabel->Font; ! 491: break; ! 492: default: ! 493: return; ! 494: } ! 495: ! 496: /* default to inactive */ ! 497: IntroductionLabel->Font->Color=clGray; ! 498: IdentificationLabel->Font->Color=clGray; ! 499: QWKLabel->Font->Color=clGray; ! 500: TimeLabel->Font->Color=clGray; ! 501: InternetLabel->Font->Color=clGray; ! 502: MaximumsLabel->Font->Color=clGray; ! 503: OptionsLabel->Font->Color=clGray; ! 504: VerifyLabel->Font->Color=clGray; ! 505: CompleteLabel->Font->Color=clGray; ! 506: ! 507: /* active */ ! 508: current->Color=clYellow; ! 509: ! 510: BackButton->Enabled=WizNotebook->PageIndex; ! 511: } ! 512: //--------------------------------------------------------------------------- ! 513: void __fastcall TConfigWizard::VerifyIdentification(TObject *Sender) ! 514: { ! 515: NextButton->Enabled=(SystemNameEdit->Text.Length() ! 516: && SystemLocationEdit->Text.Length() ! 517: && SysopNameEdit->Text.Length() ! 518: && SystemPasswordEdit->Text.Length() ! 519: ); ! 520: } ! 521: //--------------------------------------------------------------------------- ! 522: void __fastcall TConfigWizard::VerifyPassword(TObject *Sender) ! 523: { ! 524: NextButton->Enabled=(SystemPasswordEdit->Text==SysPassVerifyEdit->Text); ! 525: } ! 526: //--------------------------------------------------------------------------- ! 527: void __fastcall TConfigWizard::VerifyQWK(TObject *Sender) ! 528: { ! 529: char qwk_id[9]; ! 530: ! 531: SAFECOPY(qwk_id,QWKIDEdit->Text.c_str()); ! 532: NextButton->Enabled=( ! 533: strlen(qwk_id)>=2 ! 534: && isalpha(qwk_id[0]) ! 535: && strcspn(qwk_id,ILLEGAL_QWKID_CHARS)==strlen(qwk_id) ! 536: && QNetTaglineEdit->Text.Length()); ! 537: } ! 538: //--------------------------------------------------------------------------- ! 539: void __fastcall TConfigWizard::QNetTaglineEditKeyPress(TObject *Sender, ! 540: char &Key) ! 541: { ! 542: if(Key==1) /* Ctrl-A */ ! 543: QNetTaglineEdit->SetSelTextBuf("\1"); ! 544: } ! 545: //--------------------------------------------------------------------------- ! 546: ! 547: void __fastcall TConfigWizard::VerifyInternetAddresses(TObject *Sender) ! 548: { ! 549: NextButton->Enabled=(InternetAddressComboBox->Text.Length() ! 550: && DNSAddressEdit->Text.Length()); ! 551: } ! 552: //--------------------------------------------------------------------------- ! 553: void __fastcall TConfigWizard::TimeZoneComboBoxChange(TObject *Sender) ! 554: { ! 555: if(TimeZoneComboBox->ItemIndex>=0 ! 556: && TimeZoneComboBox->ItemIndex<=sizeof(tz_val)/sizeof(tz_val[0])) ! 557: DaylightCheckBox->Enabled=tz_val[TimeZoneComboBox->ItemIndex]&US_ZONE; ! 558: else ! 559: DaylightCheckBox->Enabled=false; ! 560: if(!DaylightCheckBox->Enabled) ! 561: DaylightCheckBox->Checked=false; ! 562: } ! 563: //--------------------------------------------------------------------------- ! 564: ! 565: void __fastcall TConfigWizard::NewUsersCheckBoxClick(TObject *Sender) ! 566: { ! 567: AliasesCheckBox->Enabled=NewUsersCheckBox->Checked; ! 568: FeedbackCheckBox->Enabled=NewUsersCheckBox->Checked; ! 569: } ! 570: //--------------------------------------------------------------------------- ! 571:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.