//Copyright+LGPL
//-----------------------------------------------------------------------------------------------------------------------------------------------
// Copyright 2000-2013 Makoto Mori, Nobuyuki Oba
//-----------------------------------------------------------------------------------------------------------------------------------------------
// This file is part of MMSSTV.
// MMSSTV is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
// MMSSTV 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 Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public License along with MMTTY. If not, see
// .
//-----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------
#include
#pragma hdrstop
#include "RepSet.h"
#include "Main.h"
#include "MacroKey.h"
#include "TextEdit.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
//TRepSetDlg *RepSetDlg;
const int _ToneTbl[]={750, 1000, 1477, 1500, 1633, 1750, 2100, 2300, 0};
//---------------------------------------------------------------------
__fastcall TRepSetDlg::TRepSetDlg(TComponent* AOwner)
: TForm(AOwner)
{
Font->Name = ((TForm *)AOwner)->Font->Name;
Font->Charset = ((TForm *)AOwner)->Font->Charset;
if( MsgEng ){
CancelBtn->Caption = "Cancel";
}
int i;
CBTone->Items->Clear();
for( i = 0; _ToneTbl[i]; i++ ){
char bf[32];
sprintf(bf, "%u", _ToneTbl[i]);
CBTone->Items->Add(bf);
}
CBMode->Items->Clear();
for( i = 0; i < smEND; i++ ){
CBMode->Items->Add(SSTVModeList[i]);
}
}
//---------------------------------------------------------------------
void __fastcall TRepSetDlg::UpdateBtn(void)
{
BBtn->Enabled = CBEnb->Checked;
}
//---------------------------------------------------------------------
void __fastcall TRepSetDlg::UpdateStat(void)
{
CSSTVDEM *dp = Mmsstv->pDem;
char bf[256];
sprintf(bf, "State\t%u\tAns\t%u\r\nRX\t%u/%u\tTX\t%u\r\n",
dp->m_repmode,
dp->m_repANS,
dp->m_repRLY,
dp->m_repRX,
dp->m_repTX
);
if( dp->m_RepSQ && !dp->m_Sync && !Mmsstv->SBTX->Down ){
char bbf[64];
sprintf(bbf, "Level\t%d\t", dp->m_repsig );
strcat(bf, bbf);
}
if( sys.m_RepBeacon && dp->m_Repeater ){
char bbf[64];
sprintf(bbf, "Beacon\t%d, %ds",
Mmsstv->m_RepBeaconCount,
sys.m_RepBeacon - ((::GetTickCount() - Mmsstv->m_RepTick)/1000)
);
strcat(bf, bbf);
}
LS->Caption = bf;
}
//---------------------------------------------------------------------
int __fastcall TRepSetDlg::Execute(void)
{
CBEnb->Checked = Mmsstv->pDem->m_Repeater;
LS->Enabled = CBEnb->Checked;
AnsCW->Text = sys.m_RepAnsCW;
TA->Text = sys.m_RepTimeA;
TB->Text = sys.m_RepTimeB;
TC->Text = sys.m_RepTimeC;
TD->Text = sys.m_RepTimeD;
RGS->ItemIndex = sys.m_RepSenseLvl;
ETempT->Text = sys.m_RepTempTX;
ETempB->Text = sys.m_RepTempBeacon;
EFD->Text = sys.m_RepFolder;
CBMode->ItemIndex = sys.m_RepBeaconMode;
ESQ->Text = Mmsstv->pDem->m_RepSQ;
CBQT->Text = sys.m_RepQuietnessTime / 60;
CBTone->Text = Mmsstv->pDem->m_RepTone;
CBAS->Checked = sys.m_RepBottomAdj;
CBFLT->Checked = sys.m_RepBeaconFilter;
for( int i = 0; _ToneTbl[i]; i++ ){
if( _ToneTbl[i] == Mmsstv->pDem->m_RepTone ){
CBTone->ItemIndex = i;
break;
}
}
UpdateBtn();
switch(sys.m_RepBeacon){
case 10*60:
CGB->ItemIndex = 1;
break;
case 20*60:
CGB->ItemIndex = 2;
break;
case 30*60:
CGB->ItemIndex = 3;
break;
case 60*60:
CGB->ItemIndex = 4;
break;
case 120*60:
CGB->ItemIndex = 5;
break;
default:
CGB->ItemIndex = 0;
}
UpdateStat();
int r = ShowModal();
if( r != mrCancel ){
int d;
sscanf(AnsiString(TA->Text).c_str(), "%u", &d); //ja7ude 0428
if( d >= 100 ) sys.m_RepTimeA = d;
sscanf(AnsiString(TB->Text).c_str(), "%u", &d); //ja7ude 0428
if( d >= 100 ) sys.m_RepTimeB = d;
sscanf(AnsiString(TC->Text).c_str(), "%u", &d); //ja7ude 0428
if( d >= 100 ) sys.m_RepTimeC = d;
sscanf(AnsiString(TD->Text).c_str(), "%u", &d); //ja7ude 0428
if( d >= 100 ) sys.m_RepTimeD = d;
sys.m_RepAnsCW = AnsCW->Text;
sys.m_RepSenseLvl = RGS->ItemIndex;
Mmsstv->pDem->SetRepSenseLvl();
sys.m_RepTempTX = ETempT->Text;
sys.m_RepTempBeacon = ETempB->Text;
sys.m_RepFolder = EFD->Text;
sscanf(AnsiString(ESQ->Text).c_str(), "%u", &d); //ja7ude 0428
if( (d >= 0) && (d <= 32767) ) Mmsstv->pDem->m_RepSQ = d;
sscanf(AnsiString(CBQT->Text).c_str(), "%u", &d); //ja7ude 0428
if( (d >= 0) && (d <= 20) ) sys.m_RepQuietnessTime = d * 60;
switch(CGB->ItemIndex){
case 1:
sys.m_RepBeacon = 10*60;
break;
case 2:
sys.m_RepBeacon = 20*60;
break;
case 3:
sys.m_RepBeacon = 30*60;
break;
case 4:
sys.m_RepBeacon = 60*60;
break;
case 5:
sys.m_RepBeacon = 120*60;
break;
default:
sys.m_RepBeacon = 0;
break;
}
sys.m_RepBeaconMode = CBMode->ItemIndex;
sys.m_RepBottomAdj = CBAS->Checked;
sys.m_RepBeaconFilter = CBFLT->Checked;
sscanf(AnsiString(CBTone->Text).c_str(), "%u", &d); //ja7ude 0428
if( (d >= 100) && (d < 2700) ){
Mmsstv->pDem->m_RepTone = d;
}
Mmsstv->pDem->InitRepeater();
Mmsstv->pDem->SetRepeater(CBEnb->Checked);
}
return r;
}
//---------------------------------------------------------------------
void __fastcall TRepSetDlg::MBtnClick(TObject *Sender)
{
TMacroKeyDlg *pBox = new TMacroKeyDlg(this);
AnsiString as = AnsCW->Text;
if( pBox->Execute(as) > 0 ){
AnsCW->SetFocus();
AnsCW->SelStart = strlen(AnsiString(AnsCW->Text).c_str()); //ja7ude 0428
AnsCW->SelLength = 0;
for( LPCSTR p = as.c_str(); *p; p++ ){
::PostMessage(AnsCW->Handle, WM_CHAR, *p, 0);
}
}
delete pBox;
}
//---------------------------------------------------------------------------
void __fastcall TRepSetDlg::TimerTimer(TObject *Sender)
{
UpdateStat();
}
//---------------------------------------------------------------------------
void __fastcall TRepSetDlg::BBtnClick(TObject *Sender)
{
ModalResult = 1024;
}
//---------------------------------------------------------------------------
void __fastcall TRepSetDlg::CBEnbClick(TObject *Sender)
{
UpdateBtn();
}
//---------------------------------------------------------------------------
void __fastcall TRepSetDlg::HBtnClick(TObject *Sender)
{
ShowHelp(this, "Repeater.txt");
}
//---------------------------------------------------------------------------