4938 lines
193 KiB
C++
4938 lines
193 KiB
C++
/* MSHV Main Ms UI
|
||
* Copyright 2015 Hrisimir Hristov, LZ2HV
|
||
* (Edited by Harper Innes, VK1TTY - to remove Gendered Language and Replace with Non-Gendered language) NOTE:May be used under the terms of the GNU General Public License (GPL)
|
||
*/
|
||
|
||
#undef _MOUNTH_H_
|
||
#define _SHKY_H_
|
||
#define _BANDS_H_
|
||
#include "main_ms.h"
|
||
|
||
#include <QScreen>
|
||
#include <QWindow>
|
||
#include <QDesktopWidget>
|
||
#include <QDesktopServices>
|
||
#include <QMimeData> // For QT5
|
||
|
||
#define _CONT_NAME_
|
||
#include "config_str_con.h"
|
||
|
||
//#include <QtGui>
|
||
|
||
//// Translation ////
|
||
#include <QTranslator>
|
||
QTranslator _translator_;
|
||
static int lid = 0;
|
||
static int styid = 0;
|
||
void _ReadSSAndSet_()
|
||
{
|
||
QString app_p = (QCoreApplication::applicationDirPath());
|
||
QFile file(app_p+"/settings/ms_start");
|
||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return;
|
||
QString langid = "0";
|
||
QString styleid = "0";
|
||
QTextStream in(&file);
|
||
while (!in.atEnd())
|
||
{
|
||
QString line = in.readLine();
|
||
QRegExp rx;
|
||
rx.setPattern("def_lang=\"?([^\"]*)\"?");
|
||
if (rx.indexIn(line) != -1) langid = rx.cap(1);
|
||
rx.setPattern("def_style=\"?([^\"]*)\"?");
|
||
if (rx.indexIn(line) != -1) styleid = rx.cap(1);
|
||
}
|
||
file.close();
|
||
lid = langid.toInt();
|
||
styid = styleid.toInt();
|
||
|
||
if (lid>0 && lid<COUNT_LANGS)
|
||
{
|
||
/*QString istr = "";
|
||
if (lid == 1 ) istr = ":HvTranslations/mshv_bg.qm";
|
||
else if (lid == 2 ) istr = ":HvTranslations/mshv_ru.qm";
|
||
else if (lid == 3 ) istr = ":HvTranslations/mshv_zh.qm";
|
||
else if (lid == 4 ) istr = ":HvTranslations/mshv_zhhk.qm";
|
||
else if (lid == 5 ) istr = ":HvTranslations/mshv_eses.qm";
|
||
else if (lid == 6 ) istr = ":HvTranslations/mshv_caes.qm";
|
||
else if (lid == 7 ) istr = ":HvTranslations/mshv_ptpt.qm";
|
||
else if (lid == 8 ) istr = ":HvTranslations/mshv_roro.qm";
|
||
else if (lid == 9 ) istr = ":HvTranslations/mshv_dadk.qm";
|
||
else if (lid == 10) istr = ":HvTranslations/mshv_plpl.qm";
|
||
else if (lid == 11) istr = ":HvTranslations/mshv_frfr.qm";
|
||
else if (lid == 12) istr = ":HvTranslations/mshv_ptbr.qm";
|
||
else if (lid == 13) istr = ":HvTranslations/mshv_nbno.qm";
|
||
else if (lid == 14) istr = ":HvTranslations/mshv_itit.qm";
|
||
if (_translator_.load(istr))
|
||
{
|
||
QApplication::installTranslator(&_translator_);
|
||
}
|
||
else lid = 0;*/
|
||
|
||
QString istr = ""; //2.67 -0.5 KB
|
||
const QString str_qm[COUNT_LANGS-1] =
|
||
{
|
||
"bg.qm","ru.qm","zh.qm","zhhk.qm","eses.qm","caes.qm",
|
||
"ptpt.qm","roro.qm","dadk.qm","plpl.qm","frfr.qm",
|
||
"ptbr.qm","nbno.qm","itit.qm"
|
||
};
|
||
for (int i = 0; i < COUNT_LANGS-1; ++i)
|
||
{
|
||
if (lid == i+1)
|
||
{
|
||
istr = ":HvTranslations/mshv_"+str_qm[i];
|
||
break;
|
||
}
|
||
}
|
||
if (_translator_.load(istr))
|
||
{
|
||
QApplication::installTranslator(&_translator_);
|
||
}
|
||
else lid = 0;
|
||
|
||
/*QString istr = "";
|
||
QString App_Path = (QCoreApplication::applicationDirPath());
|
||
if (lid == 1 ) istr = "mshv_bg.qm";
|
||
else if (lid == 2 ) istr = "mshv_ru.qm";
|
||
else if (lid == 3 ) istr = "mshv_zh.qm";
|
||
else if (lid == 4 ) istr = "mshv_zhhk.qm";
|
||
else if (lid == 5 ) istr = "mshv_eses.qm";
|
||
else if (lid == 6 ) istr = "mshv_caes.qm";
|
||
else if (lid == 7 ) istr = "mshv_ptpt.qm";
|
||
else if (lid == 8 ) istr = "mshv_roro.qm";
|
||
else if (lid == 9 ) istr = "mshv_dadk.qm";
|
||
else if (lid == 10) istr = "mshv_plpl.qm";
|
||
else if (lid == 11) istr = "mshv_frfr.qm";
|
||
else if (lid == 12) istr = "mshv_ptbr.qm";
|
||
else if (lid == 13) istr = "mshv_nbno.qm";
|
||
else if (lid == 14) istr = "mshv_itit.qm";
|
||
if (_translator_.load(istr,App_Path+"/settings/resources/translations"))
|
||
{
|
||
QApplication::installTranslator(&_translator_);
|
||
}
|
||
else lid = 0;*/
|
||
}
|
||
}
|
||
//// end Translation ////
|
||
Main_Ms::Main_Ms( QWidget * parent)
|
||
: QWidget(parent)
|
||
{
|
||
//printf("--");
|
||
s_id_set_to_rig = 0;//0<-from App 1<-from Rig
|
||
f_is_d1_data_todec65 = false;
|
||
f_is_d2_data_todec65 = false;
|
||
is_active_astro_w = false;
|
||
g_block_from_close_app_is_active_astro_w = false;
|
||
f_disp_v_h = false;
|
||
last_f_disp_v_h = f_disp_v_h;
|
||
f_onse50 = false;
|
||
s_f_dec50 = false;
|
||
fi_se_changed = -1;
|
||
s_contest_name = "None";
|
||
s_trmN = "Run 1";
|
||
_stcq_ = "";
|
||
|
||
for (int i = 0; i < COUNT_MODE; ++i) auto_decode_all[i] = true;
|
||
auto_decode_all[0] = false; //MSK144 and MSK40
|
||
auto_decode_all[12] = false; //MSK144ms
|
||
|
||
//s_sh_opt = false;
|
||
block_save = true;
|
||
global_start_moni = false;
|
||
f_auto_on = false;
|
||
f_once0s = true;
|
||
f_once_pt_15_to_30 = 0;// 0<-no 1<-30s 2<-15s
|
||
f_rx_only_fi_se = false;
|
||
f_fast_rfresh_only_fi_se = false;
|
||
|
||
//+ 100ms za da spre signala kam PA sigurno
|
||
stop_tx_befor_end = (370);//(370 + 100); 4096*1000/11025 stop tx 370ms bifor rx period tx buffer is 4096=370ms
|
||
f_tx_to_rx = false;
|
||
count_tx_to_rx = 0;
|
||
f_rx_glob_ = false;
|
||
|
||
setWindowTitle(APP_NAME);
|
||
App_Path = (QCoreApplication::applicationDirPath());
|
||
|
||
dsty = false;
|
||
if (styid==1) dsty = true;
|
||
|
||
HvStylePlastique *THvStylePlastique = new HvStylePlastique(dsty);
|
||
QApplication::setStyle(THvStylePlastique);
|
||
//QApplication::setStyle("windowsvista");
|
||
QPixmap icon = QPixmap(":pic/ms_ico.png");
|
||
setWindowIcon(icon);
|
||
|
||
//setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint);
|
||
//setStyleSheet("QWidget:titl{background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #ca0619);}");
|
||
//setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||
|
||
//// Translation ////
|
||
QMenu *lang_m = new QMenu("Language");
|
||
QActionGroup *ac_gr_lang = new QActionGroup(this);
|
||
const QString str_ln[COUNT_LANGS]=
|
||
{
|
||
"English","Български","Русский","中文简体","中文繁體","Español","Català","Português","Română",
|
||
"Dansk","Polski","Français","Português BR","Norsk","Italiano"
|
||
};
|
||
const QString str_lmt[COUNT_LANGS]=
|
||
{
|
||
"Language","Език","Язык","语言","語言","Idioma","Idioma","Idioma","Limba",
|
||
"Sprog","Język","Langue","Idioma","Språk","Lingua"
|
||
};
|
||
for (int i = 0; i < COUNT_LANGS; ++i)
|
||
{
|
||
QAction *ac_tt = new QAction(str_ln[i],this);
|
||
ac_tt->setCheckable(true);
|
||
ac_gr_lang->addAction(ac_tt);
|
||
ac_l[i]=ac_tt;
|
||
}
|
||
//ac_l[14]->setEnabled(false); //itit
|
||
|
||
/*lang_m->addAction(ac_l[ 0]); //en
|
||
lang_m->addAction(ac_l[ 1]); //bg
|
||
lang_m->addAction(ac_l[ 2]); //ru
|
||
lang_m->addAction(ac_l[ 3]); //zh Simplified Chinese
|
||
lang_m->addAction(ac_l[ 4]); //zhhk Traditional Chinese
|
||
lang_m->addAction(ac_l[ 5]); //eses
|
||
lang_m->addAction(ac_l[ 6]); //caes
|
||
lang_m->addAction(ac_l[ 7]); //ptpt
|
||
lang_m->addAction(ac_l[12]); //ptbr
|
||
lang_m->addAction(ac_l[ 8]); //roro
|
||
lang_m->addAction(ac_l[ 9]); //dadk
|
||
lang_m->addAction(ac_l[10]); //plpl
|
||
lang_m->addAction(ac_l[11]); //frfr
|
||
lang_m->addAction(ac_l[13]); //nbno
|
||
lang_m->addAction(ac_l[14]); //itit*/
|
||
for (int i = 0; i < COUNT_LANGS; ++i)
|
||
{
|
||
int pos = i;
|
||
if (i>12) pos = i;
|
||
else if (i> 8) pos = i-1;
|
||
else if (i==8) pos = 12;
|
||
lang_m->addAction(ac_l[pos]); //qDebug()<<i<<pos;
|
||
}
|
||
|
||
ac_l[0]->setChecked(true);
|
||
for (int i = 1; i < COUNT_LANGS; ++i)
|
||
{
|
||
if (lid == i)
|
||
{
|
||
ac_l[i]->setChecked(true);
|
||
lang_m->setTitle(str_lmt[i]);
|
||
break;
|
||
}
|
||
}
|
||
for (int i = 0; i < COUNT_LANGS; ++i) connect(ac_l[i],SIGNAL(toggled(bool)),this,SLOT(LangChanged(bool)));
|
||
|
||
//ru ru4ng@mail.ru Igor Yuferev RU4NG
|
||
//zh 871684856@qq.com SZE-TO Wing VR2UPU Simplified Chinese
|
||
//zhhk 871684856@qq.com SZE-TO Wing VR2UPU Traditional Chinese
|
||
//eses necktoni@hotmail.com Toni Olmo EA3KE
|
||
//caes necktoni@hotmail.com Toni Olmo EA3KE
|
||
//ptpt cu3ak@sapo.pt Jaime Eloy CU3AK
|
||
//roro fenyo3jw@yahoo.com Pit Stefan Fenyo YO3JW
|
||
//dadk 5p1kzx@gmail.com Michael 5P1KZX
|
||
//plpl sp5qwb@gmail.com Bartek SP5QWB
|
||
//frfr on6dp@on6dp.be Paul ON6DP /or/ f1rvc.patrice@gmail.com Patrice F1RVC
|
||
//ptbr crezivando@gmail.com Crezivando Junior PP7CJ
|
||
//nbno kai.gunter.brandt@gmail.com Kai Günter Brandt LA3QMA
|
||
//itit iw4ard@aririmini.it Gianni Matteini IW4ARD Italian
|
||
|
||
/*ru4ng@mail.ru,871684856@qq.com,necktoni@hotmail.com,cu3ak@sapo.pt,fenyo3jw@yahoo.com,
|
||
5p1kzx@gmail.com,sp5qwb@gmail.com,on6dp@on6dp.be,crezivando@gmail.com,
|
||
kai.gunter.brandt@gmail.com,iw4ard@aririmini.it*/
|
||
|
||
//// end Translation ////
|
||
|
||
TMsCore = new MsCore();
|
||
if (!TMsCore->is_select_sound_device)// v1.46
|
||
QMessageBox::critical(nullptr, "MSHV",
|
||
("Sound Card Error\nPrimary Sound Driver Problem\nApplication Might Stop Working Properly"),
|
||
QMessageBox::Close);
|
||
|
||
THvRigControl = new HvRigControl(this);
|
||
|
||
TSettingsMs = new SettingsMs(this);
|
||
connect(TSettingsMs, SIGNAL(InDevChanged(QString,int,int,int,int,int)),
|
||
this, SLOT(InDevChanged(QString,int,int,int,int,int)));
|
||
connect(TSettingsMs, SIGNAL(rejected()), this, SLOT(SaveSettings()));
|
||
connect(TSettingsMs, SIGNAL(EmitTciSelect(int)), THvRigControl, SLOT(SetTciSelect(int)));//2.59
|
||
//connect(TSettingsMs, SIGNAL(StndInLevel(int)), TMsCore, SLOT(SetInLevel(int)));
|
||
//connect(TSettingsMs, SIGNAL(SendSettingsTime(QStringList)), this, SLOT(SetTimeOffset(QStringList)));
|
||
|
||
QPixmap p0 = QPixmap(":pic/sld_track_v_si.png");
|
||
QPixmap p1 = QPixmap(":pic/sld_up_v_si.png");
|
||
QPixmap p2 = QPixmap(":pic/sld_down_v_si.png");
|
||
QPixmap p7 = QPixmap(":pic/tumb_v_si_pc.png");
|
||
QPixmap p8 = QPixmap(":pic/tumb_over_v_si_pc.png");
|
||
Slider_Tune_Disp = new HvSlider_V_Identif(0,100,0,0,p1,p0,p2,p7,p8);
|
||
Slider_Tune_Disp->SetValue(50);
|
||
Slider_Cont_Disp = new HvSlider_V_Identif(0,24,0,0,p1,p0,p2,p7,p8);
|
||
Slider_Cont_Disp->SetValue(12);
|
||
|
||
//QFont tx_font = font();
|
||
//tx_font.setPointSize(10);
|
||
//tx_font.setBold(true);
|
||
l_tx_text = new QLabel("Txing:");
|
||
l_tx_text->setFixedHeight(20);
|
||
//l_tx_text->setFont(tx_font);
|
||
l_tx_text->setFrameStyle(QFrame::Panel | QFrame::Sunken);
|
||
l_tx_text->setMinimumWidth(202);//215 1.30 from 215 240 zaradi nai dalgia texta na iskat
|
||
|
||
MainDisplay = new DisplayMs(0,dsty);
|
||
connect(TMsCore, SIGNAL(Set_Raw(short*,int,bool)), MainDisplay, SLOT(SetRaw(short*,int,bool))); //1.27 psk rep fopen bool true false no file open
|
||
connect(TMsCore, SIGNAL(Set_Graph(double*,int)), MainDisplay, SLOT(SetValue(double*,int)));
|
||
|
||
connect(MainDisplay, SIGNAL(EmitFileNameChenged()), this, SLOT(FileNameChengedD1()));
|
||
connect(MainDisplay, SIGNAL(EmitResetToBegin()), TMsCore, SLOT(FastResetSoundCardIn()));
|
||
|
||
SecondDisplay = new DisplayMs(1,dsty);
|
||
|
||
connect(MainDisplay, SIGNAL(SentData(QList<int*>,QPoint*,int,short*,QString,QString,bool,QLine*,int*,QString*,int*,int,int*,int,bool,QLine*,int,int,bool)),
|
||
SecondDisplay, SLOT(ReciveData(QList<int*>,QPoint*,int,short*,QString,QString,bool,QLine*,int*,QString*,int*,int,int*,int,bool,QLine*,int,int,bool)));
|
||
|
||
connect(Slider_Tune_Disp, SIGNAL(SendValue(int,int)), this, SLOT(setTuneDsp(int,int)));//1.55=
|
||
connect(Slider_Cont_Disp, SIGNAL(SendValue(int,int)), this, SLOT(setTuneDsp(int,int)));//1.55=
|
||
|
||
connect(SecondDisplay, SIGNAL(EmitFileNameChenged()), this, SLOT(FileNameChengedD2()));
|
||
connect(SecondDisplay, SIGNAL(EmitRriorityDisp(bool)), MainDisplay, SLOT(SetRriorityDisp(bool)));
|
||
|
||
TDecodeList1 = new DecodeList(1,dsty);
|
||
TDecodeList2 = new DecodeList(2,dsty);
|
||
FilterDialog = new HvFilterDialog(dsty,this);//(0) and open() no modal
|
||
connect(FilterDialog, SIGNAL(EmitSetFilter(QStringList,bool*,QStringList,QStringList,QStringList,QStringList,QStringList,QStringList)),
|
||
TDecodeList1, SLOT(SetFilter(QStringList,bool*,QStringList,QStringList,QStringList,QStringList,QStringList,QStringList)));
|
||
FilterDialog->SetCountries(TDecodeList1->GetCountries());
|
||
|
||
FontDialog = new HvFontDialog(App_Path,this);
|
||
connect(FontDialog, SIGNAL(EmitFontList(QFont)), TDecodeList1, SLOT(SetFontList(QFont)));
|
||
connect(FontDialog, SIGNAL(EmitFontList(QFont)), TDecodeList2, SLOT(SetFontList(QFont)));
|
||
|
||
TDecoderMs = new DecoderMs();
|
||
connect(MainDisplay, SIGNAL(EmitDataToDecode(short*,int,QString,int,int,bool,bool,bool)), TDecoderMs, SLOT(SetDecode(short*,int,QString,int,int,bool,bool,bool)));//1.27 psk rep fopen bool true false no file open
|
||
connect(SecondDisplay, SIGNAL(EmitDataToDecode(short*,int,QString,int,int,bool,bool,bool)), TDecoderMs, SLOT(SetDecode(short*,int,QString,int,int,bool,bool,bool)));//1.27 psk rep fopen bool true false no file open
|
||
|
||
connect(TDecoderMs, SIGNAL(EmitBackColor(bool)), TDecodeList1, SLOT(SetBackColor(bool)));
|
||
connect(TDecoderMs, SIGNAL(EmitDecodetText(QStringList,bool,bool)), TDecodeList1, SLOT(InsertItem_hv(QStringList,bool,bool))); //1.27 psk rep fopen bool true false no file open
|
||
connect(TDecodeList1, SIGNAL(EmitLstNexColor(bool)), TDecoderMs, SLOT(SetNexColor(bool)));
|
||
connect(TDecoderMs, SIGNAL(EmitTimeElapsed(float)), TDecodeList1, SLOT(SetTimeElapsed(float)));//2.33
|
||
|
||
connect(TDecoderMs, SIGNAL(EmitDecodetTextRxFreq(QStringList,bool,bool)), TDecodeList2, SLOT(InsertItem_hv(QStringList,bool,bool)));
|
||
TDecodeList2->SetBackColor(true);
|
||
|
||
connect(MainDisplay, SIGNAL(EmitZapData(short*,int)), TDecoderMs, SLOT(SetZapData(short*,int)));
|
||
connect(SecondDisplay, SIGNAL(EmitZapData(short*,int)), TDecoderMs, SLOT(SetZapData(short*,int)));
|
||
connect(TDecoderMs, SIGNAL(EmitDecLinesPosToDisplay(int,double,double,QString)), MainDisplay, SLOT(SetDecLinesPosToDisplay(int,double,double,QString)));//1.28 QString p_time for identif perood
|
||
connect(MainDisplay, SIGNAL(EmitDecLinesPosToSecondDisp(int,double,double,QString)), SecondDisplay, SLOT(SetDecLinesPosToDisplay(int,double,double,QString))); //1.28 p_time is not from this period sent to second display
|
||
connect(MainDisplay, SIGNAL(EmitVDMouseDecodeSecondDisp(int)), SecondDisplay, SLOT(SetVDMouseDecodeSecondDisp(int)));
|
||
|
||
TMsPlayerHV = new MsPlayerHV(App_Path);
|
||
connect(TMsPlayerHV, SIGNAL(SentFileClarDisplay()), this, SLOT(SetFileToDisplay()));
|
||
connect(TMsPlayerHV, SIGNAL(SentData(short*, int, bool)), TMsCore, SLOT(ReciveData(short*, int, bool))); //1.27 psk rep fopen bool true
|
||
connect(TSettingsMs, SIGNAL(OutDevChanged(QString,int)), TMsPlayerHV, SLOT(SetSoundDevice(QString,int)));
|
||
connect(MainDisplay, SIGNAL(EmitDataToSaveInFile(short*,int,QString)), TMsPlayerHV, SLOT(SaveFile(short*,int,QString)));
|
||
connect(SecondDisplay, SIGNAL(EmitDataToSaveInFile(short*,int,QString)), TMsPlayerHV, SLOT(SaveFile(short*,int,QString)));
|
||
connect(TMsPlayerHV, SIGNAL(SendTxMsgLabTx(QString)), this, SLOT(SetTxMsgLabTx(QString)));
|
||
connect(TMsPlayerHV, SIGNAL(SendTxMsgAllTxt(QString,double)), this, SLOT(SetTxMsgAllTxt(QString,double)));
|
||
|
||
TPicW = new LabW(dsty);
|
||
connect(TDecoderMs, SIGNAL(EmitDecode(bool,int)), this, SLOT(SetDecodeBusy(bool,int)));
|
||
connect(TDecoderMs, SIGNAL(EmitDecode(bool,int)), MainDisplay, SLOT(SetDecBusy(bool,int)));
|
||
connect(TDecoderMs, SIGNAL(EmitDecode(bool,int)), SecondDisplay, SLOT(SetDecBusy(bool,int)));
|
||
|
||
TPicW->SetRxMon(false);
|
||
TPicW->SetDecode(false);
|
||
|
||
THvSMeter_H = new HvSMeter_H(0,0, QPixmap(":pic/on.png"),QPixmap(":pic/clip.png"),QPixmap(":pic/back.png"),this);
|
||
connect(TMsCore, SIGNAL(Sed_SMeter(int)), THvSMeter_H, SLOT(setValue(int)));
|
||
|
||
//2.63
|
||
desktopw = QApplication::desktop();
|
||
screenWidth = desktopw->screenGeometry(this).width(); // Primary Screen width
|
||
screenHeight = desktopw->screenGeometry(this).height(); // Primary Screen height
|
||
//DesktopPriSize = QSize(screenWidth,screenHeight); // Primary Screen size
|
||
//DesktopAllSize = QSize(desktop->width(),desktop->height()); // Primary + Secondary Screen
|
||
QSize windowSize = size();
|
||
int width = windowSize.width();
|
||
int height = windowSize.height();
|
||
int x = (screenWidth - width ) / 2;
|
||
int y = (screenHeight - height) / 2;
|
||
//y -= 50;//linux
|
||
y -= 34; //34
|
||
x -= 4; //4
|
||
if (screenWidth<=800) x -= 25; //25 // testvano
|
||
// end 2.63
|
||
//qDebug()<<"MinDisply="<<screenWidth<<screenHeight<<"Full="<<desktop->width()<<desktop->height();
|
||
|
||
THvTxW = new HvTxW(App_Path,lid,dsty,x,y);
|
||
|
||
QMenuBar *Min_Menu = new QMenuBar();
|
||
|
||
#if defined _WIN32_
|
||
Start_Cmd = new QProcess;
|
||
#endif
|
||
|
||
QAction *Test_tones_m = new QAction(QPixmap(":pic/sine.png"),tr("Generate Messages For Test Tones"),this);
|
||
|
||
#if defined _WIN32_
|
||
QAction *SyncTime_m = new QAction(QPixmap(":pic/sync_st.png"),tr("Time Synchronization"),this);
|
||
connect(SyncTime_m, SIGNAL(triggered()), this, SLOT(SyncTime()));
|
||
#endif
|
||
|
||
QAction *OCheckTime_m = new QAction(QPixmap(":pic/sync_ot.png"),tr("Online Time Check"),this);
|
||
connect(OCheckTime_m, SIGNAL(triggered()), this, SLOT(OnlineTimeCheck()));
|
||
|
||
QAction *Font_m = new QAction(QPixmap(":pic/fonts.png"),tr("Font Settings"),this);
|
||
connect(Font_m, SIGNAL(triggered()), FontDialog, SLOT(exec()));
|
||
|
||
THvTxtColor = new HvTxtColor(dsty,this);
|
||
QAction *Txt_colors_m = new QAction(QPixmap(":pic/txt_color.png"),tr("Text Highlight"),this);
|
||
connect(Txt_colors_m, SIGNAL(triggered()), THvTxtColor, SLOT(exec()));
|
||
|
||
QMenu *Option_m = new QMenu(tr("Options"));
|
||
Option_m->addAction(QPixmap(":pic/settings.png"),ShKey[lid][4][1], TSettingsMs, SLOT(exec()),QKeySequence(tr(ShKey[lid][4][0],ShKey[lid][4][1])));
|
||
Option_m->addAction(QPixmap(":pic/com_p.png"),ShKey[lid][5][1], THvRigControl, SLOT(exec()),QKeySequence(tr(ShKey[lid][5][0],ShKey[lid][5][1])));
|
||
Option_m->addAction(QPixmap(":pic/macro.png"),ShKey[lid][6][1], THvTxW, SLOT(Macros_exec()),QKeySequence(tr(ShKey[lid][6][0],ShKey[lid][6][1])));
|
||
|
||
#if defined _WIN32_
|
||
Option_m->addAction(QPixmap(":pic/mixer_play.png"),ShKey[lid][7][1], this, SLOT(WMixPlay()),QKeySequence(tr(ShKey[lid][7][0],ShKey[lid][7][1])));
|
||
Option_m->addAction(QPixmap(":pic/mixer_rec.png"),ShKey[lid][8][1], this, SLOT(WMixRec()),QKeySequence(tr(ShKey[lid][8][0],ShKey[lid][8][1])));
|
||
#endif
|
||
#if defined _LINUX_
|
||
THvMixerMain = new HvMixerMain();
|
||
Option_m->addAction(QPixmap(":pic/mixer_play.png"),ShKey[lid][7][1], THvMixerMain, SLOT(Start()),QKeySequence(tr(ShKey[lid][7][0],ShKey[lid][7][1])));
|
||
Option_m->addAction(QPixmap(":pic/mixer_rec.png"),ShKey[lid][8][1], THvMixerMain, SLOT(Start()),QKeySequence(tr(ShKey[lid][8][0],ShKey[lid][8][1])));
|
||
#endif
|
||
|
||
QAction *NetW = new QAction(QPixmap(":pic/radionet.png"),tr("Network Configuration"),this);
|
||
QAction *RadFreqW = new QAction(QPixmap(":pic/rad_freq.png"),tr("Radio And Frequencies Configuration"),this);
|
||
Option_m->addAction(NetW);
|
||
Option_m->addAction(RadFreqW);
|
||
Option_m->addAction(Font_m);
|
||
Option_m->addAction(Txt_colors_m);
|
||
Option_m->addAction(Test_tones_m);
|
||
|
||
#if defined _WIN32_
|
||
Option_m->addAction(SyncTime_m);
|
||
#endif
|
||
|
||
//Option_m->addSeparator();
|
||
QMenu *Dlf_m = new QMenu(tr("Decode Lists Options"));
|
||
Dlf_m->setIcon(QPixmap(":pic/smenu.png"));
|
||
Option_m->addMenu(Dlf_m);
|
||
/*two_dec_list_all[0] = false; //MSK144 and MSK40
|
||
two_dec_list_all[1] = false; //no JTMS
|
||
two_dec_list_all[2] = false; //no FSK441
|
||
two_dec_list_all[3] = false; //no FSK314
|
||
two_dec_list_all[4] = false; //no ISCAT-A
|
||
two_dec_list_all[5] = false; //no ISCAT-B
|
||
two_dec_list_all[6] = false; //no JT6M
|
||
two_dec_list_all[7] = false; //no jt56a
|
||
two_dec_list_all[8] = false; //no jt56b
|
||
two_dec_list_all[9] = false; //no jt56c
|
||
two_dec_list_all[10] = false; //no pi4
|
||
two_dec_list_all[11] = true; //ft8 2.51 true
|
||
two_dec_list_all[12] = false; //MSK144ms
|
||
two_dec_list_all[13] = true; //ft4 2.51 true
|
||
two_dec_list_all[14] = true; //q65a
|
||
two_dec_list_all[15] = true; //q65b
|
||
two_dec_list_all[16] = true; //q65c
|
||
two_dec_list_all[17] = true; //q65d*/
|
||
for (int i = 0; i < COUNT_MODE; ++i) two_dec_list_all[i] = false;
|
||
two_dec_list_all[11] = true; //ft8
|
||
two_dec_list_all[13] = true; //ft4
|
||
two_dec_list_all[14] = true; //q65a
|
||
two_dec_list_all[15] = true; //q65b
|
||
two_dec_list_all[16] = true; //q65c
|
||
two_dec_list_all[17] = true; //q65d
|
||
|
||
|
||
ac_two_dec_list = new QAction(tr("Use Two Decode Lists")+" MSK FT JT65 Q65",this);// Q65 2.55
|
||
ac_two_dec_list->setCheckable(true);
|
||
Dlf_m->addAction(ac_two_dec_list);
|
||
connect(ac_two_dec_list, SIGNAL(toggled(bool)), this, SLOT(SetTwoDecList(bool)));
|
||
|
||
ac_2click_list_autu_on = new QAction(tr("Double Click On Call Sets Auto Is On")+" MSK FT JT65 Q65",this);// Q65 2.55
|
||
ac_2click_list_autu_on->setCheckable(true);
|
||
Dlf_m->addAction(ac_2click_list_autu_on);
|
||
|
||
ac_new_dec_clr_msg_list = new QAction(tr("New decode period to clear Message List")+" FT",this);
|
||
ac_new_dec_clr_msg_list->setCheckable(true);
|
||
Dlf_m->addAction(ac_new_dec_clr_msg_list);
|
||
|
||
ac_click_on_call_show_cty = new QAction(tr("Single Click On Call Shows Country Info")+" MSK FT Q65",this);// Q65 2.55
|
||
ac_click_on_call_show_cty->setCheckable(true);
|
||
Dlf_m->addAction(ac_click_on_call_show_cty);
|
||
|
||
ac_filter_list = new QAction(QPixmap(":pic/filters.png"),tr("Decode List Filters")+" FT",this);
|
||
Dlf_m->addAction(ac_filter_list);
|
||
connect(ac_filter_list, SIGNAL(triggered()), FilterDialog, SLOT(exec()));
|
||
connect(TDecodeList1, SIGNAL(EmitHeaderDoubleClicked()), FilterDialog, SLOT(exec()));
|
||
|
||
connect(ac_click_on_call_show_cty, SIGNAL(toggled(bool)), TDecodeList1, SLOT(SetStaticClickOnCallShowCty(bool)));//2.66
|
||
//connect(ac_click_on_call_show_cty, SIGNAL(toggled(bool)), TDecodeList2, SLOT(SetClickOnCallShowCty(bool)));
|
||
ac_click_on_call_show_cty->setChecked(true);//2.15
|
||
|
||
//Option_m->addSeparator();
|
||
QMenu *Logf_m = new QMenu(tr("Log Options"));
|
||
Logf_m->setIcon(QPixmap(":pic/smenu.png"));
|
||
Option_m->addMenu(Logf_m);
|
||
Direct_log_qso = new QAction(tr("Log Automatically QSO")+" MSK FT Q65",this);// Q65 2.55
|
||
Direct_log_qso->setCheckable(true);
|
||
//Option_m->addAction(Direct_log_qso);
|
||
Logf_m->addAction(Direct_log_qso);
|
||
Prompt_log_qso = new QAction(tr("Prompt Me To Log QSO")+" MSK FT Q65",this);// Q65 2.55
|
||
Prompt_log_qso->setCheckable(true);
|
||
//Option_m->addAction(Prompt_log_qso);
|
||
Logf_m->addAction(Prompt_log_qso);
|
||
|
||
Info_dupe_qso = new QAction(tr("Warn Me If QSO Before"),this);
|
||
Info_dupe_qso->setCheckable(true);
|
||
Logf_m->addAction(Info_dupe_qso);
|
||
|
||
Log_qso_startdt_eq_enddt = new QAction(tr("Log QSO Start Date,Time = End Date,Time"),this);
|
||
Log_qso_startdt_eq_enddt->setCheckable(true);
|
||
//Option_m->addAction(Log_qso_startdt_eq_enddt);
|
||
Logf_m->addAction(Log_qso_startdt_eq_enddt);
|
||
|
||
Log_auto_comm = new QAction(tr("Turn Auto Comments Off"),this);
|
||
Log_auto_comm->setCheckable(true);
|
||
Logf_m->addAction(Log_auto_comm);
|
||
|
||
QMenu *Other_m = new QMenu(tr("Other Options"));
|
||
Other_m->setIcon(QPixmap(":pic/smenu.png"));
|
||
Option_m->addMenu(Other_m);
|
||
ac_start_qso_from_tx2_or_tx1 = new QAction(tr("Skip Tx1")+" MSK FT Q65 ("+tr("Uncheck for DXpedition")+")",this);//+" FT)"
|
||
//ac_start_qso_from_tx2_or_tx1 = new QAction(tr("Skip Tx1")+" MSK FT Q65 ("+tr("Uncheck for DXpedition and No STD Call")+" FT)",this);//2.61
|
||
ac_start_qso_from_tx2_or_tx1->setCheckable(true); // Skip TX1 <- g4hgi Uncheck for DX Expedition
|
||
Other_m->addAction(ac_start_qso_from_tx2_or_tx1);//2.49
|
||
|
||
ac_use_queue_cont = new QAction(tr("Use Queue (For Contest Activitiеs Only)")+" MSK FT Q65",this);//Use Queue Call (For Contest Only) Use Queue Call (For Contest Activitiеs Only)
|
||
ac_use_queue_cont->setCheckable(true);
|
||
Other_m->addAction(ac_use_queue_cont);//2.59
|
||
|
||
Other_m->addSeparator();
|
||
|
||
recognize_tp1 = new QAction(tr("Recognize Period")+" JTMS FSK ISCAT JT6M",this);
|
||
recognize_tp1->setCheckable(true);
|
||
recognize_tp1->setChecked(true);
|
||
Other_m->addAction(recognize_tp1);
|
||
recognize_tp2 = new QAction(tr("Recognize Period")+" MSK FT JT65 Q65",this);// Q65 2.55
|
||
recognize_tp2->setCheckable(true);
|
||
recognize_tp2->setChecked(true);
|
||
Other_m->addAction(recognize_tp2);
|
||
|
||
Other_m->addSeparator();
|
||
|
||
zero_df_scale_m = new QAction(tr("View JT65 DF Axis On Display"),this);
|
||
zero_df_scale_m->setCheckable(true);
|
||
Other_m->addAction(zero_df_scale_m);
|
||
zero_df_scale_m->setChecked(false);
|
||
connect(zero_df_scale_m, SIGNAL(toggled(bool)), MainDisplay, SLOT(SetZeroDfVScale(bool)));
|
||
zero_df_scale_m->setEnabled(false);
|
||
vd_mouse_lines_draw = new QAction(tr("Turn Off JT65 Display Markers"),this);
|
||
vd_mouse_lines_draw->setCheckable(true);
|
||
Other_m->addAction(vd_mouse_lines_draw);
|
||
connect(vd_mouse_lines_draw, SIGNAL(toggled(bool)), MainDisplay, SLOT(SetVDMouseDrawLines(bool)));
|
||
connect(vd_mouse_lines_draw, SIGNAL(toggled(bool)), SecondDisplay, SLOT(SetVDMouseDrawLines(bool)));
|
||
|
||
Other_m->addSeparator();
|
||
|
||
Multi_answer_mod = new QAction(QString(ShKey[lid][26][1]+"\t"+ShKey[lid][26][0]),this);
|
||
Other_m->addAction(Multi_answer_mod);
|
||
Multi_answer_mod->setCheckable(true);
|
||
Multi_answer_mod->setEnabled(false);
|
||
Multi_answer_mod_std = new QAction(QString(ShKey[lid][27][1]+"\t"+ShKey[lid][27][0]),this);
|
||
Other_m->addAction(Multi_answer_mod_std);
|
||
Multi_answer_mod_std->setCheckable(true);
|
||
Multi_answer_mod_std->setEnabled(false);
|
||
g_block_mam = false;
|
||
g_ub_m_k = false;
|
||
g_ub_m_k2 = false;
|
||
g_ub_m_k3 = false;
|
||
|
||
Option_m->addSeparator();
|
||
|
||
W_mod_bt_sw = new HvWModBtSw(this);
|
||
connect(W_mod_bt_sw, SIGNAL(clicked(int)), this, SLOT(ModBtSwClicked(int)));
|
||
QAction *ac_bt_mode = new QAction(tr("Mode Switcher Buttons"),this);
|
||
ac_bt_mode->setIcon(QPixmap(":pic/smenu.png"));
|
||
connect(ac_bt_mode, SIGNAL(triggered()), W_mod_bt_sw, SLOT(dexec()));
|
||
Option_m->addAction(ac_bt_mode);
|
||
|
||
QAction *sh_wf= new QAction(QString(ShKey[lid][32][1]+"\t"+ShKey[lid][32][0]),this);
|
||
sh_wf->setShortcut(QKeySequence(tr(ShKey[lid][32][0],ShKey[lid][32][1])));
|
||
sh_wf->setCheckable(true);
|
||
sh_wf->setChecked(true);
|
||
QAction *sh_tx= new QAction(QString(ShKey[lid][33][1]+"\t"+ShKey[lid][33][0]),this);
|
||
sh_tx->setShortcut(QKeySequence(tr(ShKey[lid][33][0],ShKey[lid][33][1])));
|
||
sh_tx->setCheckable(true);
|
||
sh_tx->setChecked(true);
|
||
Option_m->addAction(sh_wf);
|
||
Option_m->addAction(sh_tx);
|
||
|
||
Start_astro_m = new QAction(tr("View Astronomical Data"),this);
|
||
Start_astro_m->setCheckable(true);
|
||
Option_m->addAction(Start_astro_m);
|
||
|
||
Option_m->addSeparator();
|
||
|
||
//ac_aseq_max_dist = new QAction(tr("Use Auto Seq By Max Distance")+" MSK FT Q65",this);
|
||
ac_aseq_max_dist = new QAction(tr("ASeq: Reply to the Most Distant.")+" MSK FT Q65",this);
|
||
//ac_aseq_max_dist = new QAction(tr("ASeq: Reply to the Farthest.")+" MSK FT Q65",this);
|
||
ac_aseq_max_dist->setCheckable(true);
|
||
Option_m->addAction(ac_aseq_max_dist);
|
||
connect(ac_aseq_max_dist, SIGNAL(toggled(bool)), THvTxW, SLOT(SetUseASeqMaxDist(bool)));//2.66
|
||
|
||
ac_Cfm73 = new QAction(tr("TX Confirmation If 73 Or RR73")+" FT Q65",this);// Q65 2.55
|
||
ac_Cfm73->setCheckable(true);
|
||
Option_m->addAction(ac_Cfm73);
|
||
ac_Cfm73->setEnabled(false);
|
||
|
||
ac_ft_df1500 = new QAction(tr("Use Default DF Tolerance 1500 Hz")+" FT",this);
|
||
ac_ft_df1500->setCheckable(true);
|
||
Option_m->addAction(ac_ft_df1500);
|
||
ac_ft_df1500->setEnabled(false);
|
||
|
||
ac_areset_qso = new QAction(tr("Auto RESET QSO at end")+" MSK FT Q65",this);// Q65 2.55
|
||
ac_areset_qso->setCheckable(true);
|
||
Option_m->addAction(ac_areset_qso);
|
||
ac_areset_qso->setEnabled(false);
|
||
ac_areset_qso->setChecked(true);
|
||
|
||
Option_m->addSeparator();
|
||
|
||
Mon_start_m = new QAction(tr("Monitor ON At Startup"),this);
|
||
Mon_start_m->setCheckable(true);
|
||
//connect(Mon_start_m, SIGNAL(changed()), this, SLOT(SaveFile()));
|
||
Option_m->addAction(Mon_start_m);
|
||
|
||
//THvTxW = new HvTxW(App_Path,lid,dsty);
|
||
|
||
connect(ac_Cfm73, SIGNAL(toggled(bool)), THvTxW, SLOT(SetCfm73(bool)));
|
||
ac_Cfm73->setChecked(true);//by default for this moment
|
||
connect(ac_ft_df1500, SIGNAL(toggled(bool)), THvTxW, SLOT(SetFtDf1500(bool)));//2.41
|
||
connect(ac_ft_df1500, SIGNAL(toggled(bool)), MainDisplay, SLOT(SetFtDf1500(bool)));//2.41
|
||
connect(ac_areset_qso, SIGNAL(toggled(bool)), THvTxW, SLOT(SetAResetQsoAtEnd(bool)));//2.49
|
||
|
||
connect(Multi_answer_mod, SIGNAL(toggled(bool)), this, SLOT(SetMultiAnswerMod(bool)));
|
||
connect(Multi_answer_mod_std, SIGNAL(toggled(bool)), this, SLOT(SetMultiAnswerModStd(bool)));
|
||
|
||
connect(recognize_tp1, SIGNAL(toggled(bool)), THvTxW, SLOT(SetRecognizeTp1(bool)));
|
||
connect(recognize_tp2, SIGNAL(toggled(bool)), THvTxW, SLOT(SetRecognizeTp2(bool)));
|
||
|
||
connect(NetW, SIGNAL(triggered()), THvTxW, SLOT(NetW_exec()));
|
||
connect(RadFreqW, SIGNAL(triggered()), THvTxW, SLOT(RadioFreqW_exec()));
|
||
|
||
connect(Start_astro_m, SIGNAL(toggled(bool)), this, SLOT(ShowCloseAstroW(bool)));
|
||
connect(THvTxW, SIGNAL(EmitAstroWIsClosed()), this, SLOT(SetAstroWIsClosed()));
|
||
|
||
//connect(THvTxW, SIGNAL(EmitLocStInfo(QString,QString,QString)), TRadioAndNetW, SLOT(SetLocalStation(QString,QString,QString)));
|
||
|
||
connect(TDecodeList1, SIGNAL(EmitRxStationInfo(QStringList,int,bool)), THvTxW, SLOT(ValidateStationInfo(QStringList,int,bool)));
|
||
//1.78 only for spotting this down
|
||
connect(TDecodeList2, SIGNAL(EmitRxStationInfo(QStringList,int,bool)), THvTxW, SLOT(ValidateStationInfo(QStringList,int,bool)));
|
||
connect(THvTxW , SIGNAL(EmitGBlockListExp(bool)), TDecodeList1, SLOT(SetStaticGBlockListExp(bool)));//2.66
|
||
//connect(THvTxW , SIGNAL(EmitGBlockListExp(bool)), TDecodeList2, SLOT(SetGBlockListExp(bool)));//2.06
|
||
|
||
connect(THvTxW, SIGNAL(EmitQrgQSY(QStringList)), this, SLOT(SetQrgQSY(QStringList)));//2.46
|
||
|
||
connect(TDecodeList1, SIGNAL(EmitRxTextForAutoSeq(QStringList)), THvTxW, SLOT(SetTextForAutoSeq(QStringList)));
|
||
|
||
//connect(THvTxW, SIGNAL(EmitRemoteStation(QString,QString,int,QString,int,int)),
|
||
//TRadioAndNetW, SLOT(AddRemoteStation(QString,QString,int,QString,int,int)));
|
||
connect(TDecoderMs, SIGNAL(EmitDecodeInProgresPskRep(bool)), THvTxW, SLOT(SetDecodeInProgresPskRep(bool)));
|
||
|
||
connect(THvTxW, SIGNAL(StndInLevel(int)), TMsCore, SLOT(SetInLevel(int)));
|
||
connect(THvTxtColor, SIGNAL(EmitTextMark(bool*,QString)), THvTxW, SLOT(SetTextMark(bool*,QString)));
|
||
connect(THvTxtColor, SIGNAL(EmitTextMarkColors(QColor*,int,bool,bool)), TDecodeList1, SLOT(SetTextMarkColors(QColor*,int,bool,bool)));
|
||
connect(THvTxtColor, SIGNAL(EmitTextMarkColors(QColor*,int,bool,bool)), TDecodeList2, SLOT(SetTextMarkColors(QColor*,int,bool,bool)));
|
||
connect(THvTxtColor, SIGNAL(EmitTextMark(bool*,QString)),FilterDialog,SLOT(SetTextMark(bool*,QString)));//2.69
|
||
|
||
connect(THvTxW, SIGNAL(EmitDListMarkText(QStringList,int,int,int,int,int)), TDecodeList1, SLOT(SetDListMarkText(QStringList,int,int,int,int,int)));
|
||
connect(THvTxW, SIGNAL(EmitDListMarkText(QStringList,int,int,int,int,int)), TDecodeList2, SLOT(SetDListMarkText(QStringList,int,int,int,int,int)));
|
||
|
||
///JTMSK SHORT///
|
||
connect(THvTxW, SIGNAL(EmitListHashCalls(QStringList)), TDecoderMs, SLOT(SetCalsHash(QStringList)));
|
||
connect(THvTxW, SIGNAL(EmitMAMCalls(QStringList)), TDecoderMs, SLOT(SetMAMCalls(QStringList)));
|
||
|
||
///JTMSK SHORT///
|
||
connect(THvTxW, SIGNAL(EmitRxOnlyFiSe(bool)), this, SLOT(SetRxOnlyFiSe(bool)));
|
||
|
||
/// FT8 ////
|
||
connect(THvTxW, SIGNAL(EmitTxToRx(bool)), MainDisplay, SLOT(SetTxToRx(bool)));
|
||
connect(THvTxW, SIGNAL(EmitRxToTx(bool)), MainDisplay, SLOT(SetRxToTx(bool)));//2.63
|
||
|
||
s_v_disp_tx_frq = 1200.0;//2.16 for ft8 only
|
||
s_static_tx_frq = 1500;//2.16
|
||
f_static_tx = false;//2.16
|
||
connect(MainDisplay, SIGNAL(EmitVDTxFreq(double)), TDecoderMs, SLOT(SetTxFreq(double)));
|
||
connect(THvRigControl, SIGNAL(EmitStaticTxFrq(bool,int)), this, SLOT(SetStaticTxFrq(bool,int)));//2.16
|
||
connect(MainDisplay, SIGNAL(EmitVDTxFreq(double)), this, SLOT(SetTxFreq(double)));//2.16
|
||
connect(MainDisplay, SIGNAL(EmitVDTxFreq(double)), THvRigControl, SLOT(SetTxFreq(double)));//2.16
|
||
|
||
connect(THvTxW, SIGNAL(EmitLockTxrx(bool)), MainDisplay, SLOT(SetLockTxrx(bool)));
|
||
connect(THvTxW, SIGNAL(EmitFreqTxW(double)), MainDisplay, SLOT(SetFreqExternal(double)));
|
||
connect(TDecodeList1, SIGNAL(EmitFreqDecListClick(double)), THvTxW, SLOT(SetFreqTxW(double)));
|
||
connect(TDecodeList2, SIGNAL(EmitFreqDecListClick(double)), THvTxW, SLOT(SetFreqTxW(double)));
|
||
|
||
connect(THvTxW, SIGNAL(EmitUdpCmdDl(QStringList)), TDecodeList1, SLOT(SetUdpCmdDl(QStringList)));//2.22
|
||
connect(THvTxW, SIGNAL(EmitUdpCmdDl(QStringList)), TDecodeList2, SLOT(SetUdpCmdDl(QStringList)));//2.22
|
||
connect(THvTxW, SIGNAL(EmitUdpCmdStop(bool)), this, SLOT(SetUdpCmdStop(bool)));//2.22
|
||
connect(TDecodeList1, SIGNAL(EmitUdpDecClr()), THvTxW, SLOT(SetUdpDecClr()));//2.22
|
||
|
||
connect(TDecodeList1, SIGNAL(EmitDetectTextInMsg(QString,QString &)), THvTxW, SLOT(DlDetectTextInMsg(QString,QString &)));//for tooltip 2.27
|
||
connect(TDecodeList2, SIGNAL(EmitDetectTextInMsg(QString,QString &)), THvTxW, SLOT(DlDetectTextInMsg(QString,QString &)));//for tooltip 2.27
|
||
|
||
connect(Direct_log_qso, SIGNAL(toggled(bool)), this, SLOT(SetDLogQso(bool)));
|
||
connect(Prompt_log_qso, SIGNAL(toggled(bool)), this, SLOT(SetPLogQso(bool)));
|
||
Direct_log_qso->setChecked(true);//2.51
|
||
|
||
connect(Info_dupe_qso, SIGNAL(toggled(bool)), THvTxW, SLOT(SetInfoDupeQso(bool)));
|
||
Info_dupe_qso->setChecked(true);//2.51
|
||
|
||
connect(Log_qso_startdt_eq_enddt, SIGNAL(toggled(bool)), THvTxW, SLOT(SetLogQsoStartDtEqEndDt(bool)));
|
||
connect(Log_auto_comm, SIGNAL(toggled(bool)), THvTxW, SLOT(SetLogAutoComm(bool)));
|
||
//THvTxW->TheirLocChanged(); // for ft8
|
||
|
||
connect(THvRigControl, SIGNAL(EmitTxWatchdogParms(int,int,int)), THvTxW, SLOT(SetTxWatchdogParms(int,int,int)));
|
||
connect(THvRigControl, SIGNAL(EmitModSetFrqToRig(bool)), THvTxW, SLOT(SetModSetFrqToRig(bool)));
|
||
|
||
//connect(THvTxW, SIGNAL(EmitRigBandFromFreq(int)), this, SLOT(SetBandFromRigFreq(int)));//1.61= down is started
|
||
connect(THvTxW, SIGNAL(EmitFreqGlobalToRig(QString,bool)), THvRigControl, SLOT(SetFreq(QString,bool)));//2.16=
|
||
//connect(THvTxW, SIGNAL(EmitModeGlobalToRig(QString)), THvRigControl, SLOT(SetMode(QString)));//1.61= stop for the moment
|
||
connect(THvRigControl, SIGNAL(EmitGetedFreq(QString)), THvTxW, SLOT(SetFreqGlobalFromRigCat(QString)));//1.61=
|
||
connect(THvRigControl, SIGNAL(EmitGetedMode(QString)), THvTxW, SLOT(SetModeGlobalFromRigCat(QString)));//1.61=
|
||
connect(THvRigControl, SIGNAL(EmitTxActive(int)), THvTxW, SLOT(SetTxActive(int)));//2.21
|
||
connect(THvRigControl, SIGNAL(EmitRigCatActiveAndRead(bool)), THvTxW, SLOT(SetRigCatActiveAndRead(bool)));//2.53
|
||
|
||
connect(THvTxW, SIGNAL(EmitQSOProgress(int)), TDecoderMs, SLOT(SetQSOProgress(int)));
|
||
connect(THvTxW, SIGNAL(EmitQSOProgress(int)), THvRigControl, SLOT(SetQSOProgress(int)));//2.45
|
||
|
||
connect(THvTxW, SIGNAL(EmitQrgParms(QString,bool)), THvRigControl, SLOT(SetQrgParms(QString,bool)));//2.45
|
||
connect(THvRigControl, SIGNAL(EmitQrgActive(int)), THvTxW, SLOT(SetQrgActive(int)));//2.45
|
||
connect(THvRigControl, SIGNAL(EmitQrgFromRig(QString)), THvTxW, SLOT(SetQrgFromRig(QString)));//2.45
|
||
connect(THvRigControl, SIGNAL(EmitQrgInfoFromCat(QString)), THvTxW, SLOT(SetQrgInfoFromCat(QString)));//2.45
|
||
|
||
connect(THvTxW, SIGNAL(Emit65DeepSearchDb(QStringList)), TDecoderMs, SLOT(Set65DeepSearchDb(QStringList)));//1.49 deep search 65
|
||
THvTxW->Refr65DeepSearchDb();//1.49 deep search 65
|
||
|
||
QDateTime utc_tt = getDateTime();
|
||
THvTxW->SetDataTime(utc_tt);//calculate hotA right
|
||
|
||
QMenu *File_m = new QMenu(tr("File"));
|
||
//File_m->addAction(Open_m);
|
||
File_m->addAction(QPixmap(":pic/fileopen.png"),ShKey[lid][2][1], this, SLOT(Open()),QKeySequence(tr(ShKey[lid][2][0],ShKey[lid][2][1])));
|
||
File_m->addAction(QPixmap(":pic/log.png"),ShKey[lid][9][1], THvTxW, SLOT(ShowLog()),QKeySequence(tr(ShKey[lid][9][0],ShKey[lid][9][1])));
|
||
|
||
QAction *SetDb = new QAction(QPixmap(":pic/setdb.png"),tr("Overwrite Locator Database"),this);
|
||
File_m->addAction(SetDb);
|
||
connect(SetDb, SIGNAL(triggered()), THvTxW, SLOT(SetNewDb()));
|
||
|
||
File_m->addAction(QPixmap(":pic/exit.png"),ShKey[lid][3][1], this, SLOT(close()),QKeySequence(tr(ShKey[lid][3][0],ShKey[lid][3][1])));
|
||
|
||
TCustomPalW = new CustomPalW(x,y);
|
||
connect(TCustomPalW, SIGNAL(EmitCustomPalette(QPixmap,QColor,QColor)), MainDisplay, SLOT(SetCustomPalette(QPixmap,QColor,QColor)));
|
||
connect(TCustomPalW, SIGNAL(EmitCustomPalette(QPixmap,QColor,QColor)), SecondDisplay, SLOT(SetCustomPalette(QPixmap,QColor,QColor)));
|
||
TCustomPalW->SetPaletteToDisplay();
|
||
|
||
QMenu *Palette_m = new QMenu(tr("Palette"));
|
||
//Palette_m->setContentsMargins(2,0,2,0);
|
||
rb_palette[0] = new QAction(tr("Default BW"),this);
|
||
rb_palette[0]->setCheckable(true);
|
||
rb_palette[1] = new QAction(tr("Default Color"),this);
|
||
rb_palette[1]->setCheckable(true);
|
||
rb_palette[1]->setChecked(true);
|
||
for (int i = 2; i < 8; ++i)
|
||
{
|
||
rb_palette[i] = new QAction(QString("%1").arg(i-1)+" "+tr("Palette"),this);
|
||
rb_palette[i]->setCheckable(true);
|
||
}
|
||
rb_palette[8] = new QAction(tr("Custom Palette"),this);
|
||
rb_palette[8]->setCheckable(true);
|
||
|
||
QActionGroup *ac_gr_pal = new QActionGroup(this);
|
||
for (int i = 0; i < 9; ++i) ac_gr_pal->addAction(rb_palette[i]);//2.65
|
||
for (int i = 0; i < 9; ++i) Palette_m->addAction(rb_palette[i]);//2.65
|
||
|
||
Palette_m->addSeparator();
|
||
//QAction *a_start_pal_edit = new QAction("Custom Palette Editor",this);
|
||
QAction *a_start_pal_edit = new QAction(QPixmap(":pic/pal_edit.png"),tr("Custom Palette Editor"),this);
|
||
Palette_m->addAction(a_start_pal_edit);
|
||
connect(a_start_pal_edit, SIGNAL(triggered()), TCustomPalW, SLOT(show()));
|
||
|
||
//Dark style
|
||
ac_dark_st = new QAction("MSHV "+tr("Dark Style"),this);
|
||
ac_dark_st->setCheckable(true);
|
||
Palette_m->addSeparator();
|
||
Palette_m->addAction(ac_dark_st);
|
||
if (styid==1) ac_dark_st->setChecked(true);
|
||
connect(ac_dark_st, SIGNAL(toggled(bool)), this, SLOT(StyleChanged(bool)));
|
||
|
||
//identif_only_one = 1;
|
||
for (int i = 0; i < 9; ++i) connect(rb_palette[i], SIGNAL(toggled(bool)), this, SLOT(PaletteChanged(bool)));//2.65
|
||
|
||
Mode_m = new QMenu(tr("Mode"));
|
||
|
||
allq65 = false;
|
||
s_mod_ident = 2; //HV important set to default mode fsk441
|
||
QActionGroup *ac_gr_mod = new QActionGroup(this);
|
||
for (int i = 0; i < COUNT_MODE; ++i)
|
||
{
|
||
if (i==7) rb_mode[i] = new QAction(ModeStr(i)+" HF/50MHz",this);
|
||
else if (i==8 || i==9) rb_mode[i] = new QAction(ModeStr(i)+" VHF/UHF",this);
|
||
else rb_mode[i] = new QAction(ModeStr(i),this);
|
||
rb_mode[i]->setCheckable(true);
|
||
ac_gr_mod->addAction(rb_mode[i]);
|
||
}
|
||
QMenu *MQ65 = new QMenu("Q65");
|
||
MQ65->setIcon(QPixmap(":pic/smenu.png"));
|
||
for (int i = 0; i < COUNT_MODE; ++i)
|
||
{
|
||
int p = pos_mods[i];
|
||
if (p==14 || p==15 || p==16 || p==17)
|
||
{
|
||
MQ65->addAction(rb_mode[p]);
|
||
if (p==17) Mode_m->addMenu(MQ65);
|
||
}
|
||
else Mode_m->addAction(rb_mode[p]);
|
||
if (p==1 || p==3 || p==5 || p==6 || p==9 || p==12) Mode_m->addSeparator();
|
||
connect(rb_mode[i], SIGNAL(toggled(bool)), this, SLOT(ModeChanged(bool)));
|
||
}
|
||
|
||
Band_m = new QMenu(tr("Band"));
|
||
QMenu *B0_m = new QMenu("VLF ");
|
||
B0_m->setIcon(QPixmap(":pic/smenu.png"));
|
||
Band_m->addMenu(B0_m);
|
||
QMenu *B1_m = new QMenu("HF/VHF ");
|
||
B1_m->setIcon(QPixmap(":pic/smenu.png"));
|
||
Band_m->addMenu(B1_m);
|
||
QMenu *B2_m = new QMenu("VHF/UHF ");
|
||
B2_m->setIcon(QPixmap(":pic/smenu.png"));
|
||
Band_m->addMenu(B2_m);
|
||
QMenu *B3_m = new QMenu("SHF/EHF ");
|
||
B3_m->setIcon(QPixmap(":pic/smenu.png"));
|
||
Band_m->addMenu(B3_m);
|
||
// HF/VHF 1.8-50MHz, VHF/UHF 70-2300MHz SHF/EHF 3.3-228G
|
||
QActionGroup *ac_gr_band = new QActionGroup(this);
|
||
for (int i = 0; i<COUNT_BANDS; ++i)
|
||
{
|
||
QAction *rb_t = new QAction(lst_bands[i],this);
|
||
rb_t->setCheckable(true);
|
||
if (i==16) rb_t->setChecked(true); //2.65 16 default HV 70 MHz
|
||
ac_gr_band->addAction(rb_t);
|
||
ListBands.append(rb_t);
|
||
connect(rb_t, SIGNAL(toggled(bool)), this, SLOT(BandChanged(bool)));
|
||
if (i<3) B0_m->addAction(rb_t);
|
||
else if (i<15) B1_m->addAction(rb_t);
|
||
else if (i<23) B2_m->addAction(rb_t);
|
||
else B3_m->addAction(rb_t);
|
||
//Band_m->addAction(rb_t);
|
||
}
|
||
BandChanged(true); //default set HV 70 MHz
|
||
|
||
connect(THvTxW, SIGNAL(EmitRigBandFromFreq(int)), this, SLOT(SetBandFromRigFreq(int)));//1.61= ListBands needed
|
||
|
||
THvHelpMs = new HvHelpMs(tr("Help"),APP_NAME,App_Path,lid,x,y);
|
||
QMenu *Help_m = new QMenu(tr("Help"));
|
||
|
||
Help_m->addAction(QPixmap(":pic/help.png"),ShKey[lid][0][1], THvHelpMs, SLOT(show()),QKeySequence(tr(ShKey[lid][0][0],ShKey[lid][0][1])));
|
||
|
||
//THvHelpSkMs = new HvHelpSkMs(tr("Keyboard Shortcuts"),APP_NAME,lid,x,y); //2.65
|
||
THvHelpSkMs = new HvHelpSkMs(ShKey[lid][1][1],APP_NAME,lid,x,y);
|
||
Help_m->addAction(QPixmap(":pic/key.png"),ShKey[lid][1][1], THvHelpSkMs, SLOT(show()),QKeySequence(tr(ShKey[lid][1][0],ShKey[lid][1][1])));
|
||
|
||
Help_m->addAction(QPixmap(":pic/spot_dx.png"),ShKey[lid][25][1], THvTxW, SLOT(StartEmptySpotDialog()),QKeySequence(tr(ShKey[lid][25][0],ShKey[lid][25][1])));
|
||
|
||
Help_m->addAction(OCheckTime_m);
|
||
|
||
QAction *BcnList = new QAction(QPixmap(":pic/bcn_list.png"),tr("Beacon List"),this);
|
||
Help_m->addAction(BcnList);
|
||
connect(BcnList, SIGNAL(triggered()), THvTxW, SLOT(ShowBcnList()));
|
||
|
||
THvMsProc = new HvMsProc(tr("MS Procedures"),APP_NAME,App_Path,lid,x,y);
|
||
QAction *A_MsProc;
|
||
A_MsProc = new QAction(QPixmap(":pic/ms_proc.png"),tr("MS Procedures"),this);
|
||
connect(A_MsProc, SIGNAL(triggered()), THvMsProc, SLOT(show()));
|
||
Help_m->addAction(A_MsProc);
|
||
|
||
HvAboutMsHv *THvAboutMsHv = new HvAboutMsHv(tr("About"),APP_NAME,App_Path,lid,this);
|
||
QAction *Help_abaut;
|
||
Help_abaut = new QAction(QPixmap(":pic/ms_ico.png"),tr("About")+" MSHV",this);
|
||
connect(Help_abaut, SIGNAL(triggered()), THvAboutMsHv, SLOT(exec()));
|
||
Help_m->addAction(Help_abaut);
|
||
|
||
/*decoder_depth_all[0] = 2; //MSK144 and MSK40
|
||
decoder_depth_all[1] = 1; //no JTMS
|
||
decoder_depth_all[2] = 1; //no FSK441
|
||
decoder_depth_all[3] = 1; //no FSK314
|
||
decoder_depth_all[4] = 1; //no ISCAT-A
|
||
decoder_depth_all[5] = 1; //no ISCAT-B
|
||
decoder_depth_all[6] = 1; //no JT6M
|
||
decoder_depth_all[7] = 1; //no jt56a
|
||
decoder_depth_all[8] = 1; //no jt56b
|
||
decoder_depth_all[9] = 1; //no jt56c
|
||
decoder_depth_all[10] = 1; //no pi4
|
||
decoder_depth_all[11] = 3; //ft8
|
||
decoder_depth_all[12] = 2; //MSK144ms
|
||
decoder_depth_all[13] = 3; //ft4
|
||
decoder_depth_all[14] = 3; //q65a
|
||
decoder_depth_all[15] = 3; //q65b
|
||
decoder_depth_all[16] = 3; //q65c
|
||
decoder_depth_all[17] = 3; //q65d*/
|
||
for (int i = 0; i < COUNT_MODE; ++i) decoder_depth_all[i] = 1;
|
||
decoder_depth_all[0] = 2; //MSK144 and MSK40
|
||
decoder_depth_all[11] = 3; //ft8
|
||
decoder_depth_all[12] = 2; //MSK144ms
|
||
decoder_depth_all[13] = 3; //ft4
|
||
decoder_depth_all[14] = 3; //q65a
|
||
decoder_depth_all[15] = 3; //q65b
|
||
decoder_depth_all[16] = 3; //q65c
|
||
decoder_depth_all[17] = 3; //q65d
|
||
|
||
QMenu *Decode_m = new QMenu(tr("Decode"));
|
||
//Decode_m->setContentsMargins(2,0,2,0);
|
||
|
||
TCpuWudget = new CpuWudget();
|
||
TCpuWudget->setContentsMargins(0,2,0,0);// da se izrawni s Min_Menu
|
||
|
||
cthr = TCpuWudget->GetThrCount();
|
||
QMenu *ThrM = new QMenu("FT "+tr("Threads")); //2.69
|
||
ThrM->setIcon(QPixmap(":pic/smenu.png"));
|
||
rb_thr[0] = new QAction(tr("Only 1"),this);
|
||
rb_thr[0]->setCheckable(true);
|
||
rb_thr[1] = new QAction(tr("Max")+" 2",this);
|
||
rb_thr[1]->setCheckable(true);
|
||
rb_thr[2] = new QAction(tr("Max")+" 3",this);
|
||
rb_thr[2]->setCheckable(true);
|
||
rb_thr[3] = new QAction(tr("Max")+" 4",this);
|
||
rb_thr[3]->setCheckable(true);
|
||
rb_thr[4] = new QAction(tr("Max")+" 5",this);
|
||
rb_thr[4]->setCheckable(true);
|
||
rb_thr[5] = new QAction(tr("Max")+" 6",this);
|
||
rb_thr[5]->setCheckable(true);
|
||
QActionGroup *ac_gr_thr = new QActionGroup(this);
|
||
for (int i = 0; i < 6; ++i) ac_gr_thr->addAction(rb_thr[i]);
|
||
for (int i = 0; i < 6; ++i) ThrM->addAction(rb_thr[i]);
|
||
for (int i = 0; i < 6; ++i) connect(rb_thr[i], SIGNAL(toggled(bool)), this, SLOT(SetThrLevel(bool)));
|
||
for (int i = 0; i < COUNT_MODE; ++i) thr_all[i] = 1; //2.69
|
||
rb_thr[0]->setChecked(true);
|
||
if (cthr==2) rb_thr[1]->setText(tr("Max")+" 2 "+tr("Do Not Use If TXing"));
|
||
if (cthr==3) rb_thr[2]->setText(tr("Max")+" 3 "+tr("Do Not Use If TXing"));
|
||
if (cthr==4) rb_thr[3]->setText(tr("Max")+" 4 "+tr("Do Not Use If TXing"));
|
||
if (cthr==5) rb_thr[4]->setText(tr("Max")+" 5 "+tr("Do Not Use If TXing"));
|
||
if (cthr==6) rb_thr[5]->setText(tr("Max")+" 6 "+tr("Do Not Use If TXing"));
|
||
RbThrSetEnabled(false);
|
||
|
||
rb_dec_depth[0] = new QAction(tr("Fast")+" MSK FT Q65",this);// Q65 2.55
|
||
rb_dec_depth[0]->setCheckable(true);
|
||
rb_dec_depth[1] = new QAction(tr("Normal")+" MSK FT Q65",this);// Q65 2.55
|
||
rb_dec_depth[1]->setCheckable(true);
|
||
rb_dec_depth[2] = new QAction(tr("Deep")+" MSK FT Q65",this);// Q65 2.55
|
||
rb_dec_depth[2]->setCheckable(true);
|
||
for (int i = 0; i < 3; ++i) rb_dec_depth[i]->setEnabled(false);//HV important set to default mode fsk441
|
||
|
||
//2.39 remm
|
||
cb_3intFt_d = new QAction(tr("Use Three-stage Decoding")+" FT8",this);//Use Three Intervals For Decode FT8 (High Speed PCs)
|
||
cb_3intFt_d->setCheckable(true);
|
||
cb_3intFt_d->setEnabled(false);
|
||
|
||
QActionGroup *ac_gr_dec = new QActionGroup(this);
|
||
for (int i = 0; i < 3; ++i) ac_gr_dec->addAction(rb_dec_depth[i]);
|
||
|
||
cb_msk144rxequal_[0] = new QAction(tr("MSK RX Equalization Off"),this);
|
||
cb_msk144rxequal_[0]->setCheckable(true);
|
||
cb_msk144rxequal_[1] = new QAction(tr("MSK RX Equalization Static"),this);
|
||
cb_msk144rxequal_[1]->setCheckable(true);
|
||
cb_msk144rxequal_[2] = new QAction(tr("MSK RX Equalization Dynamic"),this);
|
||
cb_msk144rxequal_[2]->setCheckable(true);
|
||
cb_msk144rxequal_[3] = new QAction(tr("MSK RX Equalization S And D"),this);
|
||
cb_msk144rxequal_[3]->setCheckable(true);
|
||
|
||
for (int i = 0; i < 4; ++i) cb_msk144rxequal_[i]->setEnabled(false);
|
||
|
||
QActionGroup *ac_gr_eq = new QActionGroup(this);
|
||
for (int i = 0; i < 4; ++i) ac_gr_eq->addAction(cb_msk144rxequal_[i]);
|
||
|
||
TAggressiveDialog = new AggressiveDialog(dsty,this);
|
||
connect(TAggressiveDialog, SIGNAL(EmitLevelAggres(int)), TDecoderMs, SLOT(SetAggresLevFtd(int)));
|
||
connect(TAggressiveDialog, SIGNAL(EmitLevelDeepS(int)), TDecoderMs, SLOT(SetAggresLevDeepS(int)));
|
||
|
||
ac_aggressive = new QAction(QPixmap(":pic/slid_agres.png"),tr("Aggressive Levels")+" JT65",this);
|
||
connect(ac_aggressive, SIGNAL(triggered()), TAggressiveDialog, SLOT(exec()));
|
||
|
||
/*vhf_uhf_decode_fac_all[0] = false; //MSK144 and MSK40
|
||
vhf_uhf_decode_fac_all[1] = false; //no JTMS
|
||
vhf_uhf_decode_fac_all[2] = false; //no FSK441
|
||
vhf_uhf_decode_fac_all[3] = false; //no FSK314
|
||
vhf_uhf_decode_fac_all[4] = false; //no ISCAT-A
|
||
vhf_uhf_decode_fac_all[5] = false; //no ISCAT-B
|
||
vhf_uhf_decode_fac_all[6] = false; //no JT6M
|
||
vhf_uhf_decode_fac_all[7] = true; //no jt56a
|
||
vhf_uhf_decode_fac_all[8] = true; //no jt56b
|
||
vhf_uhf_decode_fac_all[9] = true; //no jt56c
|
||
vhf_uhf_decode_fac_all[10] = false; //no pi4
|
||
vhf_uhf_decode_fac_all[11] = false; //ft8
|
||
vhf_uhf_decode_fac_all[12] = false; //MSK144ms
|
||
vhf_uhf_decode_fac_all[13] = false; //ft4
|
||
vhf_uhf_decode_fac_all[13] = false; //q65*/
|
||
for (int i=0; i<COUNT_MODE; ++i)
|
||
{
|
||
if (i>6 && i<10) vhf_uhf_decode_fac_all[i] = true; // jt65
|
||
else vhf_uhf_decode_fac_all[i] = false;
|
||
}
|
||
|
||
//cb_vhf_uhf_decode_fac = new QAction("Enable VHF/UHF Features JT65",this);
|
||
cb_vhf_uhf_decode_fac = new QAction(tr("Check for VHF/UHF Uncheck for HF Features")+" JT65",this);
|
||
cb_vhf_uhf_decode_fac->setCheckable(true);
|
||
cb_vhf_uhf_decode_fac->setChecked(false);//1.60= def fsk441
|
||
|
||
/*avg_dec_all[0] = false; //MSK144 and MSK40
|
||
avg_dec_all[1] = false; //no JTMS
|
||
avg_dec_all[2] = false; //no FSK441
|
||
avg_dec_all[3] = false; //no FSK314
|
||
avg_dec_all[4] = false; //no ISCAT-A
|
||
avg_dec_all[5] = false; //no ISCAT-B
|
||
avg_dec_all[6] = false; //no JT6M
|
||
avg_dec_all[7] = false; //no jt56a
|
||
avg_dec_all[8] = true; //no jt56b
|
||
avg_dec_all[9] = true; //no jt56c
|
||
avg_dec_all[10] = true; //no pi4 fiktive all time on
|
||
avg_dec_all[11] = false; //ft8
|
||
avg_dec_all[12] = false; //MSK144ms
|
||
avg_dec_all[13] = false; //ft4
|
||
avg_dec_all[14] = false; //q65a have average ?
|
||
avg_dec_all[15] = false; //q65b have average ?
|
||
avg_dec_all[16] = false; //q65c have average ?
|
||
avg_dec_all[17] = false; //q65d have average ?*/
|
||
for (int i = 0; i < COUNT_MODE; ++i) avg_dec_all[i] = false;
|
||
avg_dec_all[8] = true; //no jt56b
|
||
avg_dec_all[9] = true; //no jt56c
|
||
avg_dec_all[10] = true; //no pi4 fiktive all time on
|
||
|
||
cb_avg_decode = new QAction(tr("Enable Averaging")+" JT65 Q65",this);// Q65 2.55
|
||
cb_avg_decode->setCheckable(true);
|
||
cb_avg_decode->setChecked(false);
|
||
|
||
cb_auto_clr_avg_afdec = new QAction(tr("Auto Clear Averaging After Decode")+" Q65",this);
|
||
cb_auto_clr_avg_afdec->setCheckable(true);
|
||
cb_auto_clr_avg_afdec->setChecked(false);
|
||
//cb_auto_clr_avg_afdec->setVisible(false);// Q65 2.55
|
||
|
||
/*deep_search_dec_all[0] = false; //MSK144 and MSK40
|
||
deep_search_dec_all[1] = false; //no JTMS
|
||
deep_search_dec_all[2] = false; //no FSK441
|
||
deep_search_dec_all[3] = false; //no FSK314
|
||
deep_search_dec_all[4] = false; //no ISCAT-A
|
||
deep_search_dec_all[5] = false; //no ISCAT-B
|
||
deep_search_dec_all[6] = false; //no JT6M
|
||
deep_search_dec_all[7] = false; //no jt56a
|
||
deep_search_dec_all[8] = false; //no jt56b
|
||
deep_search_dec_all[9] = false; //no jt56c
|
||
deep_search_dec_all[10] = false; //no pi4
|
||
deep_search_dec_all[11] = false; //ft8
|
||
deep_search_dec_all[12] = false; //MSK144ms
|
||
deep_search_dec_all[13] = false; //ft4*/
|
||
for (int i=0; i<COUNT_MODE; ++i) deep_search_dec_all[i] = false;
|
||
|
||
cb_deep_search_decode = new QAction(tr("Enable Deep Search")+" JT65",this);
|
||
cb_deep_search_decode->setCheckable(true);
|
||
cb_deep_search_decode->setChecked(false);
|
||
|
||
/*decoder_ap_all[0] = false; //MSK144 and MSK40
|
||
decoder_ap_all[1] = false; //no JTMS
|
||
decoder_ap_all[2] = false; //no FSK441
|
||
decoder_ap_all[3] = false; //no FSK314
|
||
decoder_ap_all[4] = false; //no ISCAT-A
|
||
decoder_ap_all[5] = false; //no ISCAT-B
|
||
decoder_ap_all[6] = false; //no JT6M
|
||
decoder_ap_all[7] = false; //no jt56a//1.57=!!!
|
||
decoder_ap_all[8] = false; //no jt56b//1.57=!!!
|
||
decoder_ap_all[9] = false; //no jt56c//1.57=!!!
|
||
decoder_ap_all[10] = false; //no pi4
|
||
decoder_ap_all[11] = true; //ft8
|
||
decoder_ap_all[12] = false; //MSK144ms
|
||
decoder_ap_all[13] = true; //ft4
|
||
decoder_ap_all[14] = true; //q65a ???
|
||
decoder_ap_all[15] = true; //q65b ???
|
||
decoder_ap_all[16] = true; //q65c ???
|
||
decoder_ap_all[17] = true; //q65d ???*/
|
||
for (int i = 0; i < COUNT_MODE; ++i) decoder_ap_all[i] = false;
|
||
decoder_ap_all[11] = true; //ft8
|
||
decoder_ap_all[13] = true; //ft4
|
||
decoder_ap_all[14] = true; //q65a ???
|
||
decoder_ap_all[15] = true; //q65b ???
|
||
decoder_ap_all[16] = true; //q65c ???
|
||
decoder_ap_all[17] = true; //q65d ???
|
||
|
||
cb_ap_decode = new QAction(tr("Enable AP")+" FT JT65 Q65",this);// Q65 2.55
|
||
|
||
cb_ap_decode->setCheckable(true);
|
||
cb_ap_decode->setChecked(false);//default
|
||
cb_ap_decode->setEnabled(false);
|
||
|
||
/*max65_cand_all[0] = 1; //MSK144 and MSK40
|
||
max65_cand_all[1] = 1; //no JTMS
|
||
max65_cand_all[2] = 1; //no FSK441
|
||
max65_cand_all[3] = 1; //no FSK314
|
||
max65_cand_all[4] = 1; //no ISCAT-A
|
||
max65_cand_all[5] = 1; //no ISCAT-B
|
||
max65_cand_all[6] = 1; //no JT6M
|
||
max65_cand_all[7] = 1; //no jt56a
|
||
max65_cand_all[8] = 1; //no jt56b
|
||
max65_cand_all[9] = 1; //no jt56c
|
||
max65_cand_all[10] = 1; //no pi4
|
||
max65_cand_all[11] = 1; //ft8
|
||
max65_cand_all[12] = 1; //MSK144ms
|
||
max65_cand_all[13] = 1; //ft4*/
|
||
for (int i=0; i<COUNT_MODE; ++i)
|
||
{
|
||
max65_cand_all[i] = 1;
|
||
}
|
||
|
||
cb_1_dec_sig_q65 = new QAction(tr("Single Decoded Signal")+" Q65",this);
|
||
cb_1_dec_sig_q65->setCheckable(true);
|
||
cb_1_dec_sig_q65->setEnabled(false);
|
||
connect(cb_1_dec_sig_q65, SIGNAL(toggled(bool)), TDecoderMs, SLOT(SetSingleDecQ65(bool)));
|
||
//cb_1_dec_sig_q65->setVisible(false);// Q65 2.55
|
||
|
||
cb_max_drift = new QAction(tr("Use Drift Correction")+" +/- 100 Hz Q65",this);//2.57 +/- 100 Hz
|
||
cb_max_drift->setCheckable(true);
|
||
cb_max_drift->setEnabled(false);
|
||
connect(cb_max_drift, SIGNAL(toggled(bool)), TDecoderMs, SLOT(SetMaxDrift(bool)));
|
||
//cb_max_drift->setVisible(false);// Q65 2.57
|
||
|
||
cb_dec_aft_eme_delay = new QAction(tr("Decode After EME Delay")+" Q65",this);
|
||
cb_dec_aft_eme_delay->setCheckable(true);
|
||
cb_dec_aft_eme_delay->setEnabled(false);
|
||
connect(cb_dec_aft_eme_delay, SIGNAL(toggled(bool)), TDecoderMs, SLOT(SetDecAftEMEDelay(bool)));
|
||
//cb_dec_aft_eme_delay->setVisible(false);// Q65 2.55
|
||
|
||
cb_max65_cand[0] = new QAction(tr("Single Decoded Signal")+" JT65",this);
|
||
cb_max65_cand[0]->setCheckable(true);
|
||
cb_max65_cand[1] = new QAction(tr("Max 4 Decoded Signals")+" JT65",this);
|
||
cb_max65_cand[1]->setCheckable(true);
|
||
cb_max65_cand[2] = new QAction(tr("Max 8 Decoded Signals")+" JT65",this);
|
||
cb_max65_cand[2]->setCheckable(true);
|
||
cb_max65_cand[3] = new QAction(tr("Max 16 Decoded Signals")+" JT65",this);
|
||
cb_max65_cand[3]->setCheckable(true);
|
||
cb_max65_cand[4] = new QAction(tr("Max 32 Decoded Signals")+" JT65",this);
|
||
cb_max65_cand[4]->setCheckable(true);
|
||
QActionGroup *ac_gr_c65 = new QActionGroup(this);
|
||
for (int i = 0; i < 5; ++i) ac_gr_c65->addAction(cb_max65_cand[i]);
|
||
for (int i = 0; i < 5; ++i) cb_max65_cand[i]->setEnabled(false);
|
||
for (int i = 0; i < 5; ++i) connect(cb_max65_cand[i], SIGNAL(toggled(bool)), this, SLOT(SetMaxCandidats65(bool)));
|
||
cb_max65_cand[1]->setChecked(true);
|
||
|
||
Decode_m->addMenu(ThrM);
|
||
Decode_m->addSeparator();
|
||
for (int i = 0; i < 3; ++i) Decode_m->addAction(rb_dec_depth[i]);
|
||
Decode_m->addAction(cb_3intFt_d);//2.39 remm
|
||
Decode_m->addSeparator();
|
||
for (int i = 0; i < 4; ++i) Decode_m->addAction(cb_msk144rxequal_[i]);
|
||
Decode_m->addSeparator();
|
||
Decode_m->addAction(cb_1_dec_sig_q65);
|
||
Decode_m->addAction(cb_max_drift);
|
||
for (int i = 0; i < 5; ++i) Decode_m->addAction(cb_max65_cand[i]);
|
||
Decode_m->addSeparator();
|
||
Decode_m->addAction(ac_aggressive);
|
||
Decode_m->addAction(cb_vhf_uhf_decode_fac);
|
||
Decode_m->addAction(cb_avg_decode);
|
||
Decode_m->addAction(cb_auto_clr_avg_afdec);
|
||
Decode_m->addAction(cb_deep_search_decode);
|
||
Decode_m->addAction(cb_dec_aft_eme_delay);
|
||
Decode_m->addSeparator();
|
||
Decode_m->addAction(cb_ap_decode);
|
||
|
||
for (int i = 0; i < 3; ++i) connect(rb_dec_depth[i], SIGNAL(toggled(bool)), this, SLOT(DecodeDeept(bool)));
|
||
rb_dec_depth[0]->setChecked(true);//fast dec
|
||
connect(cb_3intFt_d, SIGNAL(toggled(bool)), MainDisplay, SLOT(Decode3intFt(bool)));//2.39 remm
|
||
connect(cb_3intFt_d, SIGNAL(toggled(bool)), TDecoderMs, SLOT(Decode3intFt(bool)));//2.39 remm
|
||
cb_3intFt_d->setChecked(true);//2.51 default
|
||
|
||
for (int i = 0; i < 4; ++i) connect(cb_msk144rxequal_[i], SIGNAL(toggled(bool)), this, SLOT(Msk144RxEqual(bool)));
|
||
cb_msk144rxequal_[0]->setChecked(true);//default Equalization msk144 and decoderms.cpp
|
||
|
||
connect(cb_vhf_uhf_decode_fac, SIGNAL(toggled(bool)), this, SLOT(SetVhfUhfFeatures(bool)));//1.60=
|
||
|
||
connect(cb_avg_decode, SIGNAL(toggled(bool)), this, SLOT(AvgDecodeChanged(bool)));
|
||
connect(cb_auto_clr_avg_afdec, SIGNAL(toggled(bool)), TDecoderMs, SLOT(AutoClrAvgChanged(bool)));
|
||
connect(cb_deep_search_decode, SIGNAL(toggled(bool)), this, SLOT(DeepSearchChanged(bool)));// 1.49 deep search
|
||
|
||
//connect(cb_ap_decode, SIGNAL(toggled(bool)), TDecoderMs, SLOT(SetApDecode(bool)));
|
||
connect(cb_ap_decode, SIGNAL(toggled(bool)), this, SLOT(DecodeAp(bool)));
|
||
|
||
Min_Menu->addMenu(File_m);
|
||
Min_Menu->addMenu(Option_m);
|
||
Min_Menu->addMenu(Palette_m);
|
||
Min_Menu->addMenu(Mode_m);
|
||
Min_Menu->addMenu(Decode_m);
|
||
Min_Menu->addMenu(Band_m);
|
||
//// Translation ////
|
||
Min_Menu->addMenu(lang_m);
|
||
//// end Translation ////
|
||
Min_Menu->addMenu(Help_m);
|
||
|
||
Min_Menu->setContentsMargins(4,0,4,0);//4,0,4,0 ( qreal left, qreal top, qreal right, qreal bottom )
|
||
//Min_Menu->setFixedHeight(23);//1.56=off for +150%
|
||
|
||
QHBoxLayout *H_l = new QHBoxLayout();
|
||
H_l->setContentsMargins ( 0, 0, 0, 0);
|
||
H_l->addWidget(Min_Menu);
|
||
H_l->setAlignment(Min_Menu,Qt::AlignLeft);
|
||
H_l->addWidget(TCpuWudget);
|
||
H_l->setAlignment(TCpuWudget,Qt::AlignRight | Qt::AlignHCenter);
|
||
//H_l->setAlignment(TPicW,Qt::AlignHCenter);
|
||
//H_l->addWidget(THvSMeter_H);
|
||
|
||
int but_height=20;//21
|
||
//QFont b_font = font();
|
||
//b_font.setPointSize(8);
|
||
QPushButton *pb_stop_rx = new QPushButton(tr("STOP MONITOR"));
|
||
pb_stop_rx->setFixedHeight(but_height);
|
||
//pb_stop_rx->setFont(b_font);
|
||
connect(pb_stop_rx, SIGNAL(clicked(bool)), this, SLOT(StopRxGlobal()));
|
||
pb_start_rx = new QPushButton(tr("MONITOR"));
|
||
pb_start_rx->setStyleSheet("QPushButton{background-color :palette(Button);}");
|
||
pb_start_rx->setFixedHeight(but_height);
|
||
//pb_start_rx->setFont(b_font);
|
||
connect(pb_start_rx, SIGNAL(clicked(bool)), this, SLOT(StartRxGlobal()));
|
||
|
||
QPushButton *pb_stop_tx = new QPushButton(tr("STOP TX"));
|
||
pb_stop_tx->setFixedHeight(but_height);
|
||
connect(pb_stop_tx, SIGNAL(clicked(bool)), this, SLOT(StopTxGlobal()));
|
||
|
||
pb_clar_list1 = new QPushButton(tr("CLEAR MESSAGES"));
|
||
pb_clar_list1->setFixedHeight(but_height);
|
||
//pb_clar_list->setFont(b_font);
|
||
connect(pb_clar_list1, SIGNAL(clicked(bool)), TDecodeList1, SLOT(Clear_List()));
|
||
|
||
//pb_clar_list2 = new QPushButton(" CLEAR RX MESSAGES ");
|
||
pb_clar_list2 = new QPushButton(tr("CLR RX FREQ MSG"));
|
||
pb_clar_list2->setFixedHeight(but_height);
|
||
connect(pb_clar_list2, SIGNAL(clicked(bool)), TDecodeList2, SLOT(Clear_List()));
|
||
|
||
QPushButton *pb_rst_qso = new QPushButton(tr("RESET QSO"));
|
||
pb_rst_qso->setFixedHeight(but_height);
|
||
//pb_rst_qso->setFont(b_font);
|
||
connect(pb_rst_qso, SIGNAL(clicked(bool)), THvTxW, SLOT(ResetQSO()));
|
||
|
||
pb_tune = new QPushButton(tr("TUNE"));
|
||
pb_tune->setStyleSheet("QPushButton{background-color :palette(Button);}");
|
||
pb_tune->setFixedSize(65,but_height);
|
||
//pb_tune->setFont(b_font);
|
||
connect(pb_tune, SIGNAL(clicked(bool)), this, SLOT(Tune()));
|
||
f_tune = false;
|
||
|
||
//connect(FontDialog, SIGNAL(EmitFontApp(QFont)), this, SLOT(SetFont(QFont)));
|
||
|
||
pb_clear_avg65 = new QPushButton(tr("CLEAR AVG")+" 0/0 | 0/0");
|
||
pb_clear_avg65->setFixedHeight(but_height);
|
||
pb_clear_avg65->setHidden(true);
|
||
connect(pb_clear_avg65, SIGNAL(clicked(bool)), TDecoderMs, SLOT(SetClearAvg65()));
|
||
|
||
pb_dec_65 = new QPushButton(tr("DECODE")+" NA");//1.49
|
||
pb_dec_65->setFixedHeight(but_height);
|
||
pb_dec_65->setHidden(true);
|
||
pb_dec_65->setEnabled(false);
|
||
//pb_dec_65->setFixedWidth(40);
|
||
|
||
connect(MainDisplay, SIGNAL(EmitIsDispHaveDataForDec65(int,bool)), this, SLOT(IsDispHaveDataForDec65(int,bool)));//1.49
|
||
connect(SecondDisplay, SIGNAL(EmitIsDispHaveDataForDec65(int,bool)), this, SLOT(IsDispHaveDataForDec65(int,bool)));//1.49
|
||
connect(pb_dec_65, SIGNAL(clicked(bool)), this, SLOT(SetButtonDecodeAll65()));//1.49
|
||
|
||
connect(pb_rst_qso, SIGNAL(clicked(bool)), TDecoderMs, SLOT(SetClearAvg65()));//1.36
|
||
connect(pb_clar_list1, SIGNAL(clicked(bool)), TDecoderMs, SLOT(SetClearAvg65()));//1.37
|
||
|
||
connect(TDecoderMs, SIGNAL(EmitAvgSaves(int,int,int,int)), this, SLOT(SetAvg65CountToButtonTxt(int,int,int,int)));
|
||
//connect(MainDisplay, SIGNAL(EmitVDRxFreq(double)), TDecoderMs, SLOT(SetRxFreq65(double)));
|
||
|
||
pb_clear_avgPi4 = new QPushButton(tr("CLEAR AVG")+" 0/0");
|
||
pb_clear_avgPi4->setFixedHeight(but_height);
|
||
pb_clear_avgPi4->setHidden(true);
|
||
connect(pb_clear_avgPi4, SIGNAL(clicked(bool)), TDecoderMs, SLOT(SetClearAvgPi4()));
|
||
connect(TDecoderMs, SIGNAL(EmitAvgSavesPi4(int,int)), this, SLOT(SetAvgPi4CountToButtonTxt(int,int)));
|
||
|
||
pb_clear_avgQ65 = new QPushButton(tr("CLEAR AVG")+" 0 | 0");
|
||
pb_clear_avgQ65->setFixedHeight(but_height);
|
||
pb_clear_avgQ65->setHidden(true);
|
||
connect(pb_clear_avgQ65, SIGNAL(clicked(bool)), TDecoderMs, SLOT(SetClearAvgQ65()));
|
||
connect(TDecoderMs, SIGNAL(EmitAvgSavesQ65(int,int)), this, SLOT(SetAvgQ65CountToButtonTxt(int,int)));
|
||
|
||
//QPushButton *pb_fltr = new QPushButton(tr("FLTR IS OFF"));
|
||
FilterDialog->pb_fltrOnOff->setFixedHeight(but_height);
|
||
//FilterDialog->SetHidFLBtOnOff(true);//FilterDialog->pb_fltrOnOff->setHidden(true);
|
||
|
||
QHBoxLayout *H_butons = new QHBoxLayout();
|
||
H_butons->setContentsMargins(0,0,0,0);
|
||
H_butons->addWidget(pb_start_rx);
|
||
H_butons->addWidget(pb_stop_rx);
|
||
H_butons->addWidget(pb_clar_list1);
|
||
H_butons->addWidget(pb_clar_list2);
|
||
H_butons->addWidget(pb_clear_avg65);
|
||
H_butons->addWidget(pb_clear_avgQ65);
|
||
H_butons->addWidget(pb_clear_avgPi4);
|
||
H_butons->addWidget(pb_dec_65);
|
||
H_butons->addWidget(pb_rst_qso);
|
||
H_butons->addWidget(FilterDialog->pb_fltrOnOff);
|
||
H_butons->addWidget(pb_stop_tx);
|
||
H_butons->addWidget(pb_tune);
|
||
|
||
connect(THvTxW, SIGNAL(EmitMessageS(QString,bool,bool)), this, SLOT(TxMessageS(QString,bool,bool)));
|
||
connect(THvTxW, SIGNAL(EmitAuto()), this, SLOT(SetAuto()));
|
||
|
||
//connect(THvMakros, SIGNAL(EmitRptRsq(bool)), THvTxW, SLOT(SetRptRsq(bool)));
|
||
connect(THvTxW, SIGNAL(EmitMacros(int,QString)),this,SLOT(SetMacros(int,QString)));
|
||
//connect(THvMakros, SIGNAL(EmitMacros(QStringList,int,QString,QString)),
|
||
//this, SLOT(SetMacros(QStringList,int,QString,QString)));//2.32
|
||
//connect(THvMakros, SIGNAL(EmitDistUnit(bool)), THvTxW, SLOT(SetDistUnit(bool)));
|
||
|
||
connect(THvTxW, SIGNAL(EmitFileNameChenged()), this, SLOT(FileNameChengedD1()));
|
||
connect(THvTxW, SIGNAL(EmitFileNameChenged()), this, SLOT(FileNameChengedD2()));
|
||
|
||
connect(MainDisplay, SIGNAL(EmitVDRxFreqF0F1(double,double,double)), TDecoderMs, SLOT(SetRxFreqF0F1(double,double,double)));
|
||
connect(THvTxW, SIGNAL(EmitDfSdbChanged(int,int)), TDecoderMs, SLOT(SetDfSdb(int,int)));
|
||
connect(THvTxW, SIGNAL(EmitDfChanged(int,int)), MainDisplay, SLOT(SetVDdf(int,int)));
|
||
connect(MainDisplay, SIGNAL(EmitVDRxDf(int)), THvTxW, SLOT(SetRxDf(int)));
|
||
|
||
//connect(THvTxW, SIGNAL(EmitShOptChenged(bool)), this, SLOT(SetShOpt(bool)));
|
||
connect(THvTxW, SIGNAL(EmitShOptChenged(bool)), TDecoderMs, SLOT(SetShOpt(bool)));
|
||
connect(THvTxW, SIGNAL(EmitSwlOptChenged(bool)), TDecoderMs, SLOT(SetSwlOpt(bool)));
|
||
|
||
connect(TDecodeList1, SIGNAL(ListSelectedTextAll(QString,QString,QString,QString,QString)),
|
||
THvTxW, SLOT(DecListTextAll(QString,QString,QString,QString,QString)));
|
||
connect(TDecodeList1, SIGNAL(ListSelectedRpt(QString)), THvTxW, SLOT(DecListTextRpt(QString)));
|
||
connect(TDecodeList2, SIGNAL(ListSelectedTextAll(QString,QString,QString,QString,QString)),
|
||
THvTxW, SLOT(DecListTextAll(QString,QString,QString,QString,QString)));
|
||
connect(TDecodeList2, SIGNAL(ListSelectedRpt(QString)), THvTxW, SLOT(DecListTextRpt(QString)));
|
||
connect(ac_2click_list_autu_on, SIGNAL(toggled(bool)), THvTxW, SLOT(Set2ClickDecListAutoOn(bool)));
|
||
ac_2click_list_autu_on->setChecked(true);//2.51
|
||
connect(ac_start_qso_from_tx2_or_tx1, SIGNAL(toggled(bool)), THvTxW, SLOT(SetStartFromTx2Tx1(bool)));
|
||
connect(ac_new_dec_clr_msg_list, SIGNAL(toggled(bool)), TDecodeList1, SLOT(SetNewDecClrMsgListFlag(bool)));
|
||
ac_new_dec_clr_msg_list->setChecked(false);
|
||
connect(ac_use_queue_cont, SIGNAL(toggled(bool)), THvTxW, SLOT(SetUseQueueCont(bool)));//2.59
|
||
|
||
//for format message
|
||
connect(THvTxW, SIGNAL(EmitWords(QStringList,int,int)), TDecoderMs, SLOT(SetWords(QStringList,int,int)));
|
||
connect(Test_tones_m, SIGNAL(triggered()), THvTxW, SLOT(GenTestTones()));
|
||
connect(THvTxW, SIGNAL(EmitZap(bool)), TDecoderMs, SLOT(SetZap(bool)));
|
||
connect(THvTxW, SIGNAL(EmitZap(bool)), MainDisplay, SLOT(SetZap(bool)));
|
||
connect(THvTxW, SIGNAL(EmitZap(bool)), SecondDisplay, SLOT(SetZap(bool)));
|
||
|
||
s_msg = "";
|
||
//s_gen = false;
|
||
//s_imidi = false;
|
||
THvTxW->GetCurrentMsg();
|
||
THvTxW->SetMacrosFirstStart();//THvMakros->SetMacros();
|
||
THvTxW->ReadEDILog();//2.57 after SetMacros for may locator
|
||
//"RT Dec"
|
||
cb_auto_decode_all = new QCheckBox(tr("Auto Dec"));//Auto Decode
|
||
cb_auto_decode_all->setFixedWidth(85);// tested 125%
|
||
//cb_auto_decode_all->setStyleSheet("QCheckBox::indicator{width:13px; height:13px; }");
|
||
connect(cb_auto_decode_all, SIGNAL(toggled(bool)), this, SLOT(CbSetAutoDecodeAll(bool)));
|
||
//connect(cb_auto_decode_all, SIGNAL(toggled(bool)), SecondDisplay, SLOT(SetAutoDecodeAll(bool)));
|
||
cb_auto_decode_all->setChecked(auto_decode_all[2]);// fsk441
|
||
|
||
cb_rtd_decode = new QCheckBox(tr("RT Dec"));//Real-time Decode
|
||
cb_rtd_decode->setFixedWidth(75);//tested 125%
|
||
connect(cb_rtd_decode, SIGNAL(toggled(bool)), this, SLOT(CbSetStartStopRtd(bool)));
|
||
cb_rtd_decode->setChecked(true);
|
||
cb_rtd_decode->setEnabled(false);
|
||
|
||
l_mode = new QLabel(ModeStr(s_mod_ident)); //inportent fsk441
|
||
|
||
//if (dsty) l_mode->setStyleSheet("QLabel {color: rgb(0, 0, 0)}");
|
||
//l_mode->setStyleSheet(ModeColorStr(s_mod_ident));
|
||
if (dsty) l_mode->setStyleSheet(ModeColorStr(s_mod_ident)+" color: rgb(0, 0, 0)}");
|
||
else l_mode->setStyleSheet(ModeColorStr(s_mod_ident)+"}");
|
||
|
||
l_mode->setAlignment(Qt::AlignCenter);
|
||
l_mode->setFixedSize(60,20);//1.30 from 70x20 +125%
|
||
l_mode->setFrameStyle(QFrame::Panel | QFrame::Sunken);
|
||
QHBoxLayout *H_status = new QHBoxLayout();
|
||
H_status->setContentsMargins ( 4, 0, 4, 0);
|
||
H_status->setSpacing(4);
|
||
H_status->addWidget(l_mode);
|
||
H_status->addWidget(cb_auto_decode_all);
|
||
H_status->addWidget(cb_rtd_decode);
|
||
H_status->addWidget(TPicW);
|
||
//H_status->setAlignment(TPicW,Qt::AlignLeft);
|
||
H_status->addWidget(l_tx_text);
|
||
//H_status->setAlignment(l_tx_text,Qt::AlignHCenter);
|
||
H_status->addWidget(THvSMeter_H);
|
||
//H_centr->setAlignment(THvTxW, Qt::AlignRight);
|
||
|
||
// this->setMinimumWidth(MainDisplay->width()+Slider_Tune_Disp->width()+2);
|
||
|
||
pb_save_disp1 = new QPushButton(tr("SAVE DISPLAY")+" 1");
|
||
//pb_save_disp1->setFixedWidth(150);
|
||
pb_save_disp1->setFixedHeight(19);
|
||
//pb_save_disp1->setFont(b_font);
|
||
//pb_save_disp1->setStyleSheet("background-color:rgb(236, 233, 216);");
|
||
pb_save_disp1->setStyleSheet("QPushButton {background-color :palette(Button);}");
|
||
connect(pb_save_disp1, SIGNAL(clicked(bool)), this, SLOT(SaveFileDisplay1()));
|
||
pb_save_disp2 = new QPushButton(tr("SAVE DISPLAY")+" 2");
|
||
//pb_save_disp2->setFixedWidth(150);
|
||
pb_save_disp2->setFixedHeight(19);
|
||
//pb_save_disp2->setFont(b_font);
|
||
//pb_save_disp2->setStyleSheet("background-color:rgb(236, 233, 216);");
|
||
pb_save_disp2->setStyleSheet("QPushButton {background-color :palette(Button);}");
|
||
connect(pb_save_disp2, SIGNAL(clicked(bool)), this, SLOT(SaveFileDisplay2()));
|
||
|
||
cb_flat_dsp = new QCheckBox("FD");
|
||
cb_flat_dsp->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||
cb_flat_dsp->setFixedHeight(17);
|
||
connect(cb_flat_dsp, SIGNAL(toggled(bool)), this, SLOT(SetFlatDisplay_VD(bool)));
|
||
cb_flat_dsp->setChecked(false);
|
||
cb_flat_dsp->setToolTip(tr("Flatten Display"));
|
||
|
||
//cb_flat_dsp->setStyleSheet("QCheckBox {color: white; background-color: rgb(80,80,80); selection-color: white; selection-background-color: rgb(80,80,80);}"
|
||
//"QToolTip { color: #000000; background-color: #ffffff; }");
|
||
if (dsty) cb_flat_dsp->setStyleSheet("QCheckBox {color: white; background-color: rgb(80,80,80);selection-color: white; selection-background-color: rgb(80,80,80);}"
|
||
" QToolTip {color: #000000; background-color: #ffffe1;}");
|
||
else cb_flat_dsp->setStyleSheet("QCheckBox {background-color: white; selection-color: black; selection-background-color: white;}"
|
||
" QToolTip {color: #000000; background-color: #ffffe1;}");
|
||
|
||
cb_adle_dsp = new QCheckBox("AF");
|
||
cb_adle_dsp->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||
cb_adle_dsp->setFixedHeight(17);
|
||
connect(cb_adle_dsp, SIGNAL(toggled(bool)), this, SLOT(SetAdleDisplay_VD(bool)));
|
||
cb_adle_dsp->setChecked(true);//2.51 default
|
||
cb_adle_dsp->setToolTip(tr("Auto Flatten Display"));// Auto Adjust Brightnes and Contrast \nIs Not Recommended
|
||
if (dsty) cb_adle_dsp->setStyleSheet("QCheckBox {color: white; background-color: rgb(80,80,80); selection-color: white; selection-background-color: rgb(80,80,80);}"
|
||
" QToolTip {color: #000000; background-color: #ffffe1;}");
|
||
else cb_adle_dsp->setStyleSheet("QCheckBox {background-color: white; selection-color: black; selection-background-color: white;}"
|
||
" QToolTip {color: #000000; background-color: #ffffe1;}");
|
||
|
||
/*s_vdisp_all_speed[0] = 8;//4; //msk144
|
||
s_vdisp_all_speed[1] = 8;//4; //jtms
|
||
s_vdisp_all_speed[2] = 8;//4; //fsk441
|
||
s_vdisp_all_speed[3] = 8;//4;
|
||
s_vdisp_all_speed[4] = 8;//4;
|
||
s_vdisp_all_speed[5] = 8;//4;
|
||
s_vdisp_all_speed[6] = 8;//4; //jt6m
|
||
s_vdisp_all_speed[7] = 8;//4; //jt65a
|
||
s_vdisp_all_speed[8] = 8;//4; //jt65b
|
||
s_vdisp_all_speed[9] = 8;//4; //jt65c
|
||
s_vdisp_all_speed[10] = 8;//4; //pi4
|
||
s_vdisp_all_speed[11] = 9;//5; //ft8 fictive
|
||
s_vdisp_all_speed[12] = 8;//4; //msk144ms
|
||
s_vdisp_all_speed[13] = 9;//5; //ft4 fictive
|
||
s_vdisp_all_speed[14] = 8;//q65a
|
||
s_vdisp_all_speed[15] = 8;//q65b
|
||
s_vdisp_all_speed[16] = 8;//q65c
|
||
s_vdisp_all_speed[17] = 8;//q65d*/
|
||
for (int i = 0; i < COUNT_MODE; ++i) s_vdisp_all_speed[i] = 8;
|
||
s_vdisp_all_speed[11] = 9;//5; //ft8 fictive
|
||
s_vdisp_all_speed[13] = 9;//5; //ft4 fictive
|
||
|
||
SB_VDispSpeed = new HvSpinBox();
|
||
SB_VDispSpeed->setRange(1,9);//1.51 1,9//1,5
|
||
SB_VDispSpeed->setValue(s_vdisp_all_speed[s_mod_ident]);
|
||
SB_VDispSpeed->setFixedHeight(19);//problem hv
|
||
//SB_VDispSpeed->setFixedWidth(79);//125% problem hv
|
||
SB_VDispSpeed->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||
SB_VDispSpeed->setPrefix(tr("Speed")+" ");
|
||
//SB_VDispSpeed->setSuffix(" Hz");
|
||
SB_VDispSpeed->findChild<QLineEdit*>()->setReadOnly(true);
|
||
SB_VDispSpeed->setContextMenuPolicy(Qt::NoContextMenu);
|
||
if (dsty) SB_VDispSpeed->setStyleSheet("QSpinBox {background-color: rgb(80,80,80); selection-color: white; selection-background-color: rgb(80,80,80);}");
|
||
else SB_VDispSpeed->setStyleSheet("QSpinBox {background-color: white; selection-color: black; selection-background-color: white;}");
|
||
|
||
SB_VDispStartFreq = new HvSpinBox();
|
||
SB_VDispStartFreq->setRange(0,3000);//s3000+b2000=5000 max
|
||
SB_VDispStartFreq->setValue(200);
|
||
SB_VDispStartFreq->setFixedHeight(19);//problem hv
|
||
//SB_VDispStartFreq->setFixedWidth(113);//125% problem hv
|
||
SB_VDispStartFreq->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||
SB_VDispStartFreq->setPrefix(tr("Start")+" ");
|
||
SB_VDispStartFreq->setSuffix(" Hz");
|
||
SB_VDispStartFreq->findChild<QLineEdit*>()->setReadOnly(true);
|
||
SB_VDispStartFreq->setContextMenuPolicy(Qt::NoContextMenu);
|
||
if (dsty) SB_VDispStartFreq->setStyleSheet("QSpinBox {background-color: rgb(80,80,80); selection-color: white; selection-background-color: rgb(80,80,80);}");
|
||
else SB_VDispStartFreq->setStyleSheet("QSpinBox {background-color: white; selection-color: black; selection-background-color: white;}");
|
||
SB_VDispStartFreq->setSingleStep(100);
|
||
|
||
SB_VDispBandwidth = new HvSpinBox();
|
||
SB_VDispBandwidth->setRange(2000,5000);//s3000+b2000=5000 max
|
||
SB_VDispBandwidth->setValue(2000);
|
||
SB_VDispBandwidth->setFixedHeight(19);//problem hv
|
||
//SB_VDispBandwidth->setFixedWidth(107);//125% problem hv
|
||
SB_VDispBandwidth->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||
SB_VDispBandwidth->setPrefix("BW ");
|
||
SB_VDispBandwidth->setSuffix(" Hz");
|
||
SB_VDispBandwidth->findChild<QLineEdit*>()->setReadOnly(true);
|
||
SB_VDispBandwidth->setContextMenuPolicy(Qt::NoContextMenu);
|
||
if (dsty) SB_VDispBandwidth->setStyleSheet("QSpinBox {background-color: rgb(80,80,80); selection-color: white; selection-background-color: rgb(80,80,80);}");
|
||
else SB_VDispBandwidth->setStyleSheet("QSpinBox {background-color: white; selection-color: black; selection-background-color: white;}");
|
||
SB_VDispBandwidth->setSingleStep(100);
|
||
|
||
QHBoxLayout *H_bsave = new QHBoxLayout();
|
||
H_bsave->setContentsMargins ( 0, 0, 0, 0);
|
||
H_bsave->setSpacing(0);//1.51 0
|
||
H_bsave->addWidget(SB_VDispSpeed);
|
||
H_bsave->addWidget(SB_VDispStartFreq);
|
||
H_bsave->addWidget(SB_VDispBandwidth);
|
||
H_bsave->addWidget(cb_flat_dsp);
|
||
H_bsave->addWidget(cb_adle_dsp);
|
||
H_bsave->addWidget(pb_save_disp1);
|
||
H_bsave->addWidget(pb_save_disp2);
|
||
SB_VDispSpeed->setHidden(true);
|
||
SB_VDispStartFreq->setHidden(true);
|
||
SB_VDispBandwidth->setHidden(true);
|
||
cb_flat_dsp->setHidden(true);
|
||
cb_adle_dsp->setHidden(true);
|
||
|
||
connect(SB_VDispStartFreq, SIGNAL(valueChanged(int)), this, SLOT(VDispStartBandChanged(int)));
|
||
connect(SB_VDispBandwidth, SIGNAL(valueChanged(int)), this, SLOT(VDispStartBandChanged(int)));
|
||
|
||
//connect(SB_VDispSpeed, SIGNAL(valueChanged(int)), TMsCore, SLOT(SetVDispSpeed(int)));
|
||
connect(SB_VDispSpeed, SIGNAL(valueChanged(int)), this, SLOT(SetVDispSpeed(int)));
|
||
|
||
QVBoxLayout *V_disp = new QVBoxLayout();
|
||
V_disp->setContentsMargins ( 0, 0, 0, 0);
|
||
V_disp->setSpacing(0);
|
||
|
||
V_disp->addWidget(MainDisplay);
|
||
V_disp->addWidget(SecondDisplay);
|
||
V_disp->addLayout(H_bsave);
|
||
//V_disp->setAlignment(SecondDisplay, Qt::AlignHCenter | Qt::AlignTop);
|
||
|
||
QFont f_t = font();
|
||
f_t.setPointSize(7);
|
||
QString strr = "TUNE DISP";//"TUNE DISPLAYS";//TUNE DISPLAYS TUNE DSPLs TUNE DISP
|
||
QVBoxLayout *V_btns_txt_sldr = new QVBoxLayout();
|
||
V_btns_txt_sldr->setContentsMargins ( 0, 0, 0, 0);
|
||
V_btns_txt_sldr->setSpacing(0);
|
||
|
||
//// 2/1 Display //////////
|
||
QPixmap pixmap1(":pic/2d_release.png"); //1d_release.png
|
||
QPixmap pixmap2(":pic/2d_press.png"); //1d_press.png
|
||
QPixmap pixmap3(":pic/1d_release.png"); //2d_release.png
|
||
QPixmap pixmap4(":pic/1d_press.png"); //2d_press.png
|
||
pb_2D_1D = new HvButton_Left4();
|
||
pb_2D_1D->SetupButton_hv(pixmap1, pixmap2, pixmap3, pixmap4, 0, 0);
|
||
connect(pb_2D_1D, SIGNAL(Release_Lift_Button_hv()), this, SLOT(BtSet2D1D()));
|
||
V_btns_txt_sldr->addWidget(pb_2D_1D);
|
||
//V_sldr->setAlignment(pb_2D_1D,Qt::AlignTop);
|
||
|
||
//V_sldr->setAlignment(pb_2D_1D,Qt::AlignTop);
|
||
QPixmap pixmap5(":pic/d1_release.png"); //1d_release.png
|
||
QPixmap pixmap6(":pic/d1_press.png"); //1d_press.png
|
||
QPixmap pixmap7(":pic/d2_release.png"); //2d_release.png
|
||
QPixmap pixmap8(":pic/d2_press.png"); //2d_press.png
|
||
pb_D1_D2 = new HvButton_Left4();
|
||
pb_D1_D2->SetupButton_hv(pixmap5, pixmap6, pixmap7, pixmap8, 0, 0);
|
||
connect(pb_D1_D2, SIGNAL(Release_Lift_Button_hv()), this, SLOT(BtSetD1D2()));
|
||
pb_D1_D2->setHidden(true);
|
||
////END 2/1 Display //////////
|
||
|
||
QVBoxLayout *V_txt_ = new QVBoxLayout();
|
||
V_txt_->setContentsMargins ( 0, 0, 0, 0);
|
||
V_txt_->setSpacing(0);
|
||
for (int i = 0; i<strr.count(); i++)
|
||
{
|
||
QLabel *l_ct = new QLabel((QString)"<font color=white>"+strr.at(i));
|
||
l_ct->setFont(f_t);
|
||
txt_tunedsp.append(l_ct);
|
||
V_txt_->addWidget(txt_tunedsp.at(i));
|
||
V_txt_->setAlignment(txt_tunedsp.at(i),Qt::AlignCenter);// po horizontal
|
||
}
|
||
|
||
connect(FontDialog, SIGNAL(EmitFontApp(QFont)), TDecodeList1, SLOT(SetFontHeader(QFont)));
|
||
connect(FontDialog, SIGNAL(EmitFontApp(QFont)), TDecodeList2, SLOT(SetFontHeader(QFont)));
|
||
connect(FontDialog, SIGNAL(EmitFontApp(QFont)), THvTxW, SLOT(SetFont(QFont)));
|
||
connect(FontDialog, SIGNAL(EmitFontApp(QFont)), this, SLOT(SetFont(QFont)));
|
||
FontDialog->SetDefFont();
|
||
|
||
//V_txt_sldr->addWidget(Slider_Tune_Disp);
|
||
//V_txt_sldr->addWidget(Slider_Cont_Disp);
|
||
V_txt_->setAlignment(Qt::AlignVCenter);
|
||
QVBoxLayout *V_sldr_ = new QVBoxLayout();
|
||
V_sldr_->setContentsMargins ( 0, 0, 0, 0);
|
||
V_sldr_->setSpacing(0);
|
||
V_sldr_->addWidget(Slider_Tune_Disp);
|
||
V_sldr_->addWidget(Slider_Cont_Disp);
|
||
V_sldr_->setAlignment(Qt::AlignVCenter);
|
||
//V_sld_->setAlignment(Qt::AlignBottom);
|
||
|
||
V_btns_txt_sldr->addLayout(V_txt_);
|
||
V_btns_txt_sldr->addLayout(V_sldr_);
|
||
|
||
//V_sldr->setAlignment(Slider_Tune_Disp,Qt::AlignVCenter);
|
||
V_btns_txt_sldr->addWidget(pb_D1_D2);
|
||
//V_sldr->setAlignment(pb_D1_D2,Qt::AlignBottom);
|
||
//V_btns_txt_sldr->setAlignment(Qt::AlignJustify);
|
||
|
||
QHBoxLayout *H_disp_btn_txt_sld = new QHBoxLayout();
|
||
H_disp_btn_txt_sld->setContentsMargins ( 0, 0, 0, 0);
|
||
H_disp_btn_txt_sld->setSpacing(0);
|
||
|
||
//QDockWidget *DW = new QDockWidget("Display");
|
||
//QWidget *Box_dspl = new QWidget();
|
||
Box_dspl = new QWidget();
|
||
//if (dsty) Box_dspl->setStyleSheet("background-color:rgb(30,30,30)");
|
||
Box_dspl->setStyleSheet("background-color:black;");
|
||
//Box_dspl->setFrameShape(QFrame::WinPanel);
|
||
//Box_dspl->setFrameShadow(QFrame::Raised);
|
||
Box_dspl->setLayout(H_disp_btn_txt_sld);
|
||
Box_dspl->setContentsMargins(0,0,0,0);
|
||
|
||
H_disp_btn_txt_sld->addLayout(V_disp);
|
||
//H_disp_sld->setAlignment(V_disp, Qt::AlignRight);
|
||
H_disp_btn_txt_sld->addLayout(V_btns_txt_sldr);
|
||
//H_disp_sld->setAlignment(Slider_Tune_Disp, Qt::AlignLeft);
|
||
//H_disp_sld->setAlignment(Qt::AlignHCenter);
|
||
//DW->setWidget(Box_dspl);
|
||
//DW->setContentsMargins(0,0,0,0);
|
||
//DW->setFixedHeight(160);
|
||
|
||
QHBoxLayout *H_dlist = new QHBoxLayout();
|
||
H_dlist->setContentsMargins ( 0, 0, 0, 0);
|
||
H_dlist->setSpacing(0);
|
||
H_dlist->addWidget(TDecodeList1);
|
||
H_dlist->addWidget(TDecodeList2);
|
||
|
||
QVBoxLayout *V_l = new QVBoxLayout(this);
|
||
setLayout(V_l);
|
||
V_l->setContentsMargins(1,0,1,0);// ( qreal left, qreal top, qreal right, qreal bottom )
|
||
V_l->setSpacing(0);
|
||
V_l->addLayout(H_l);
|
||
//V_l->addWidget(DW);
|
||
V_l->addWidget(Box_dspl);
|
||
V_l->addLayout(H_status);
|
||
V_l->addWidget(W_mod_bt_sw);
|
||
V_l->addLayout(H_dlist);
|
||
V_l->addLayout(H_butons);
|
||
V_l->addWidget(THvTxW);
|
||
|
||
connect(sh_wf, SIGNAL(toggled(bool)), this, SLOT(SetShowHideWf(bool)));
|
||
connect(sh_tx, SIGNAL(toggled(bool)), this, SLOT(SetShowHideTx(bool)));
|
||
|
||
/*offset_hour = 0;
|
||
offset_min = 0;
|
||
offset_t = (offset_hour*3600)+(60*offset_min);*/
|
||
connect(TMsCore, SIGNAL(Refresh_time()), this, SLOT(Refresh()));
|
||
|
||
period_time_sec = 30.0;
|
||
|
||
time_pos_1period = 0;
|
||
time_pos_2period = 0;
|
||
fast_find_period = false;
|
||
connect(THvTxW, SIGNAL(EmitReriodTime(float)), this, SLOT(SetPeriodTime(float)));
|
||
|
||
connect(THvTxW, SIGNAL(StndOutLevel(int)), TMsPlayerHV, SLOT(SetVolume(int)));
|
||
THvTxW->SetInLevel("50");//corect sliders from 100 to 50%
|
||
THvTxW->SetOutLevel("95");//corect sliders from 100 to 95%
|
||
|
||
f_is_moved_to_prev_desk_pos = false;
|
||
|
||
Read_Settings(App_Path+"/settings/ms_settings");
|
||
|
||
/*if(g_ub_m_k3)// Q65 2.57 for drift
|
||
{
|
||
//Mode_m->insertMenu(rb_mode_jt65a,MQ65);
|
||
//cb_1_dec_sig_q65->setVisible(true);
|
||
//cb_auto_clr_avg_afdec->setVisible(true);
|
||
//cb_dec_aft_eme_delay->setVisible(true);
|
||
//cb_max_drift->setVisible(true);
|
||
}*/
|
||
|
||
TAllTxt = new AllTxt(App_Path);
|
||
QDateTime utc_t = getDateTime();
|
||
TAllTxt->ReadAllTxt(utc_t.toString("yyyy_MM"));
|
||
connect(TDecodeList1, SIGNAL(EmitRxAllTxt(QString)), this, SLOT(SetRxAllTxt(QString)));
|
||
|
||
if (!f_is_moved_to_prev_desk_pos) move(x,y); //2.63
|
||
|
||
setAcceptDrops(true);
|
||
f_decoder_busy = false;
|
||
f_tx_busy = false;
|
||
f_de_active = false;//special flag not same as f_decoder_busy
|
||
//qDebug()<<"W_MAIN START";
|
||
}
|
||
Main_Ms::~Main_Ms()
|
||
{
|
||
//// Translation ////
|
||
SaveSS();
|
||
//// end Translation ////
|
||
THvTxW->StopAuto();
|
||
TMsPlayerHV->Stop();
|
||
StopRxGlobal();
|
||
TMsCore->close_sound();
|
||
SaveSettings();//Save_Settings(App_Path+"/settings/ms_settings");
|
||
SetRigTxRx(false);
|
||
THvRigControl->CatStopPttIfClose();//2.38
|
||
usleep(120000);//2.57 =120000 HDSDR=50ms ft991a=10ms
|
||
THvTxW->SetBlockEmitFreqToRig(true); //2.69 no show MA freq restrict QMessageBox at close (DestroyPort())
|
||
THvRigControl->DestroyPort();
|
||
}
|
||
void Main_Ms::StyleChanged(bool)
|
||
{
|
||
QString slang = tr("To change the Style, you need to MANUALLY RESTART MSHV");
|
||
QMessageBox::information(this,"MSHV",slang,QMessageBox::Close);
|
||
}
|
||
//// Translation ////
|
||
void Main_Ms::LangChanged(bool)
|
||
{
|
||
static bool one = false;
|
||
if (one)
|
||
{
|
||
one = false;
|
||
return;
|
||
}
|
||
one = true;
|
||
|
||
const QString slang[COUNT_LANGS] =
|
||
{
|
||
"To change the Language, you need to MANUALLY RESTART MSHV",
|
||
"За да промените Езика, трябва РЪЧНО ДА РЕСТАРТИРАТЕ MSHV",
|
||
"Для смены Языка, необходимо ВРУЧНУЮ ПЕРЕЗАПУСК MSHV",
|
||
"要更改语言, 您需要手动重新启动 MSHV",
|
||
"要更改語言, 您需要手動重新啟動 MSHV",
|
||
"Para cambiar la Lengua, has de REINICIAR MSHV MANUALMENTE", //eses
|
||
"Per canviar l'idioma, has de REINICIAR MSHV MANUALMENT", //caes
|
||
"Para alterar o idioma, terá que REINICIAR MANUALMENTE o MSHV", //ptpt
|
||
"Pentru a schimba limba, trebuie să reporniți manual programul MSHV", //roro
|
||
"For at skifte sprog skal MSHV genstartes MANUELT", //dadk
|
||
"Język zostanie zmieniony po RESTARCIE PROGRAMU", //plpl
|
||
"Pour changer la langue, vous devez REDEMARRER MANUELLEMENT MSHV !", //frfr
|
||
"Para mudar o idioma, é necessário reiniciar manualmente o MSHV", //ptbr
|
||
"For å endre språket må du starte MSHV manuelt på nytt", //nbno
|
||
"Per cambiare il Linguaggio, devi fare un RESTART MANUALE DI MSHV" //itit
|
||
};
|
||
int z = 0;
|
||
for (int i = 0; i < COUNT_LANGS; ++i)
|
||
{
|
||
if (ac_l[i]->isChecked())
|
||
{
|
||
z = i;
|
||
break;
|
||
}
|
||
}
|
||
QMessageBox::information(this,"MSHV",slang[z],QMessageBox::Close);
|
||
}
|
||
void Main_Ms::SaveSS()
|
||
{
|
||
QString langid = "0";
|
||
for (int i = 0; i < COUNT_LANGS; ++i)
|
||
{
|
||
if (ac_l[i]->isChecked())
|
||
{
|
||
langid = QString("%1").arg(i);
|
||
break;
|
||
}
|
||
}
|
||
QFile file(App_Path+"/settings/ms_start");
|
||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) return;
|
||
QTextStream out(&file);
|
||
out << "def_lang="+langid << "\n";
|
||
out << "def_style=" << QString("%1").arg(ac_dark_st->isChecked()) << "\n";
|
||
file.close();
|
||
}
|
||
//// end Translation ////
|
||
void Main_Ms::SetShowHideWf(bool f)
|
||
{
|
||
if (f) Box_dspl->setHidden(false);
|
||
else Box_dspl->setHidden(true);
|
||
TDecodeList1->HideShowWfTxRefreshList();
|
||
TDecodeList2->HideShowWfTxRefreshList();
|
||
}
|
||
void Main_Ms::SetShowHideTx(bool f)
|
||
{
|
||
if (f) THvTxW->setHidden(false);
|
||
else THvTxW->setHidden(true);
|
||
TDecodeList1->HideShowWfTxRefreshList();
|
||
TDecodeList2->HideShowWfTxRefreshList();
|
||
}
|
||
void Main_Ms::SetFlatDisplay_VD(bool f)
|
||
{
|
||
if (f && cb_adle_dsp->isChecked()) cb_adle_dsp->setChecked(false);
|
||
MainDisplay->SetFlatDisplay_VD(f);
|
||
}
|
||
void Main_Ms::SetAdleDisplay_VD(bool f)
|
||
{
|
||
if (f && cb_flat_dsp->isChecked()) cb_flat_dsp->setChecked(false);
|
||
MainDisplay->SetAdleDisplay_VD(f);
|
||
}
|
||
void Main_Ms::SetThrLevel(bool)
|
||
{
|
||
//static int p_rb_id = -1;
|
||
for (int i = 0; i < 6; ++i)
|
||
{
|
||
if (rb_thr[i]->isChecked())
|
||
{
|
||
//if (p_rb_id == i) break;
|
||
//p_rb_id = i;
|
||
TDecoderMs->SetThrLevel(i+1); //qDebug()<<"Mode="<<s_mod_ident<<"Threads="<<i+1;
|
||
thr_all[s_mod_ident] = i+1;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::SetDLogQso(bool)
|
||
{
|
||
if (Direct_log_qso->isChecked()) Prompt_log_qso->setChecked(false);
|
||
THvTxW->SetDPLogQso(Direct_log_qso->isChecked(),Prompt_log_qso->isChecked());
|
||
}
|
||
void Main_Ms::SetPLogQso(bool)
|
||
{
|
||
if (Prompt_log_qso->isChecked()) Direct_log_qso->setChecked(false);
|
||
THvTxW->SetDPLogQso(Direct_log_qso->isChecked(),Prompt_log_qso->isChecked());
|
||
}
|
||
void Main_Ms::SetStaticTxFrq(bool f,int val) //from rig control
|
||
{
|
||
s_static_tx_frq = val; //qDebug()<<"1= rig contr"<<s_mod_ident<<f<<val;
|
||
f_static_tx = f;
|
||
SetTxFreq_p();
|
||
}
|
||
void Main_Ms::SetTxFreq(double val) //from main disp
|
||
{
|
||
s_v_disp_tx_frq = val; //qDebug()<<"2= from main disp"<<s_mod_ident<<val;
|
||
SetTxFreq_p();
|
||
}
|
||
void Main_Ms::SetTxFreq_p() //tx freq from display and static
|
||
{
|
||
static double prv_f0 = -1.0;
|
||
if (s_mod_ident==11 || s_mod_ident==13 || allq65) //modes with static and variable TX freq
|
||
{
|
||
double f = s_v_disp_tx_frq;
|
||
if (f_static_tx) f = (double)s_static_tx_frq;
|
||
if (prv_f0 != f)
|
||
{
|
||
prv_f0 = f;
|
||
TMsPlayerHV->SetTxFreq(f); //qDebug()<<"Main_TMsPlayerHV->SetTxFreq="<<s_mod_ident<<f_static_tx<<f;
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::RefreshWindowTitle()
|
||
{
|
||
QString band; //qDebug()<<"Main_TMsPlayerHV->SetTxFreq=================="<<s_mod_ident;
|
||
for (int i = 0; i<COUNT_BANDS; ++i)
|
||
{
|
||
if (ListBands.at(i)->isChecked())
|
||
{
|
||
band = lst_bands[i];
|
||
break;
|
||
}
|
||
}
|
||
QString str_t = APP_NAME;
|
||
str_t.insert(4," "+band);
|
||
if (s_mod_ident == 0 || s_mod_ident == 11 || s_mod_ident == 13 || allq65)
|
||
{
|
||
QString str_t2 = "";
|
||
if (s_contest_name != "None" && s_contest_name != "EU RSQ And Serial Number")
|
||
str_t2 = " - "+s_contest_name+s_trmN+" -";
|
||
if (s_mod_ident == 11 || s_mod_ident == 13 || allq65)
|
||
{
|
||
if (Multi_answer_mod->isChecked())
|
||
str_t2 = " - "+tr("MA DXpedition")+" -";
|
||
else if (Multi_answer_mod_std->isChecked() && str_t2.isEmpty())
|
||
str_t2 = " - "+tr("MA Standard")+" -";
|
||
}
|
||
str_t.append(str_t2);
|
||
}
|
||
setWindowTitle(str_t);
|
||
}
|
||
void Main_Ms::RefreshCbCfm73()
|
||
{
|
||
if ((s_mod_ident == 11 || s_mod_ident == 13 || allq65) && !Multi_answer_mod->isChecked())
|
||
ac_Cfm73->setEnabled(true);
|
||
else
|
||
ac_Cfm73->setEnabled(false);
|
||
}
|
||
void Main_Ms::SetMultiAnswerMod(bool f)
|
||
{
|
||
if (f) Multi_answer_mod_std->setChecked(false);
|
||
|
||
if (Multi_answer_mod->isChecked())//2.51 enable AP MASTD All || Multi_answer_mod_std->isChecked()
|
||
TDecoderMs->SetMultiAnswerMod(true);
|
||
else
|
||
TDecoderMs->SetMultiAnswerMod(false);
|
||
|
||
THvTxW->SetMultiAnswerMod(Multi_answer_mod->isChecked(),Multi_answer_mod_std->isChecked());
|
||
RefreshWindowTitle();
|
||
RefreshCbCfm73();
|
||
}
|
||
void Main_Ms::SetMultiAnswerModStd(bool f)
|
||
{
|
||
if (f) Multi_answer_mod->setChecked(false);
|
||
|
||
if (Multi_answer_mod->isChecked())//2.51 enable AP MASTD All || Multi_answer_mod_std->isChecked()
|
||
TDecoderMs->SetMultiAnswerMod(true);
|
||
else
|
||
TDecoderMs->SetMultiAnswerMod(false);
|
||
|
||
THvTxW->SetMultiAnswerMod(Multi_answer_mod->isChecked(),Multi_answer_mod_std->isChecked());
|
||
RefreshWindowTitle();
|
||
RefreshCbCfm73();
|
||
}
|
||
void Main_Ms::SetMacros(int contest_id,QString trmN_stdC)//2.15
|
||
{
|
||
if (contest_id == 0)// 0 standard
|
||
{
|
||
g_block_mam = false;
|
||
Multi_answer_mod->setEnabled(true);
|
||
Multi_answer_mod_std->setEnabled(true); //ac_use_queue_cont->setEnabled(false);//2.60 not correct
|
||
}
|
||
else //for future if(contest_id == 2 || contest_id == 3 || contest_id == 4 || contest_id == 5)
|
||
{
|
||
if (!g_ub_m_k)
|
||
{
|
||
g_block_mam = true;
|
||
Multi_answer_mod->setEnabled(false);
|
||
Multi_answer_mod->setChecked(false);
|
||
Multi_answer_mod_std->setEnabled(false);
|
||
Multi_answer_mod_std->setChecked(false);
|
||
} //ac_use_queue_cont->setEnabled(true);//2.60 not correct
|
||
}//THvTxW->SetMacros(l,contest_id,s,trmN);
|
||
|
||
s_contest_name = s_cont_name[contest_id];
|
||
s_trmN = "";
|
||
if (trmN_stdC.at(0)=='1') s_trmN = ", Run 1"; //2.61
|
||
if (trmN_stdC.at(0)=='2') s_trmN = ", Run 2";
|
||
if (s_mod_ident==12 || s_mod_ident==0 || s_mod_ident==11 || s_mod_ident==13 || allq65)
|
||
{
|
||
if (trmN_stdC.at(1)=='0')
|
||
{
|
||
ac_start_qso_from_tx2_or_tx1->setEnabled(false);
|
||
ac_start_qso_from_tx2_or_tx1->setChecked(false);
|
||
}
|
||
else ac_start_qso_from_tx2_or_tx1->setEnabled(true);
|
||
}
|
||
else ac_start_qso_from_tx2_or_tx1->setEnabled(false);
|
||
|
||
RefreshWindowTitle();
|
||
}
|
||
void Main_Ms::SetFont(QFont f)
|
||
{
|
||
QFont t_font = f;
|
||
t_font.setPointSize(f.pointSize()-1);//8
|
||
pb_save_disp1->setFont(t_font);
|
||
pb_save_disp2->setFont(t_font);
|
||
pb_start_rx->setFont(f);
|
||
pb_tune->setFont(f);
|
||
|
||
cb_flat_dsp->setFont(f);
|
||
cb_adle_dsp->setFont(f);
|
||
SB_VDispSpeed->setFont(f);
|
||
SB_VDispStartFreq->setFont(f);
|
||
SB_VDispBandwidth->setFont(f);
|
||
|
||
t_font.setPointSize(7);//7
|
||
for (int i = 0; i<txt_tunedsp.count(); i++)
|
||
txt_tunedsp.at(i)->setFont(t_font);
|
||
|
||
TPicW->SetFont(f);
|
||
l_mode->setFont(f);
|
||
t_font.setPointSize(f.pointSize()+1);//tx_font.setPointSize(10);
|
||
t_font.setBold(true);
|
||
l_tx_text->setFont(t_font);
|
||
|
||
QFontMetrics fm(f);
|
||
#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)//2.56
|
||
int fcor = fm.horizontalAdvance("ISCAT-B")+8;
|
||
#else
|
||
int fcor = fm.width("ISCAT-B")+8;
|
||
#endif
|
||
l_mode->setFixedWidth(fcor);
|
||
#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) //2.56
|
||
fcor = fm.horizontalAdvance("Auto Dec")+28;// to150% +28<-cb
|
||
#else
|
||
fcor = fm.width("Auto Dec")+28;//horizontalAdvance to150% +28<-cb
|
||
#endif
|
||
cb_auto_decode_all->setFixedWidth(fcor);
|
||
#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) //2.56
|
||
fcor = fm.horizontalAdvance("RT Dec")+28;// to150% +28<-cb
|
||
#else
|
||
fcor = fm.width("RT Dec")+28;//horizontalAdvance to150% +28<-cb
|
||
#endif
|
||
cb_rtd_decode->setFixedWidth(fcor);
|
||
|
||
MainDisplay->SetFont(f);
|
||
SecondDisplay->SetFont(f);
|
||
//THvMakros->SetFont(f);
|
||
TAggressiveDialog->SetFont(f);
|
||
THvTxtColor->SetFont(f);
|
||
THvRigControl->SetFont(f);
|
||
FilterDialog->SetFont(f);
|
||
W_mod_bt_sw->SetFont(f);
|
||
}
|
||
void Main_Ms::setTuneDsp(int,int)//1.55=
|
||
{
|
||
int offset = Slider_Tune_Disp->get_value();
|
||
int contr = Slider_Cont_Disp->get_value();
|
||
MainDisplay->setTune(offset,contr);
|
||
SecondDisplay->setTune(offset,contr);
|
||
}
|
||
void Main_Ms::IsDispHaveDataForDec65(int diden_a, bool fss_a)//1.49
|
||
{
|
||
if (diden_a == 0)
|
||
f_is_d1_data_todec65 = fss_a;
|
||
if (diden_a == 1)
|
||
f_is_d2_data_todec65 = fss_a;
|
||
|
||
if (f_is_d1_data_todec65)
|
||
{
|
||
pb_dec_65->setText(tr("DECODE")+" D1");
|
||
pb_dec_65->setEnabled(true);
|
||
}
|
||
else if (f_is_d2_data_todec65)
|
||
{
|
||
pb_dec_65->setText(tr("DECODE")+" D2");
|
||
pb_dec_65->setEnabled(true);
|
||
}
|
||
else
|
||
{
|
||
pb_dec_65->setText(tr("DECODE")+" NA");
|
||
pb_dec_65->setEnabled(false);
|
||
}
|
||
}
|
||
void Main_Ms::SetButtonDecodeAll65()//1.49
|
||
{
|
||
if (pb_dec_65->text()==tr("DECODE")+" D1")
|
||
MainDisplay->SetButtonDecodeAll65(0);//1.49 inportent need to main dsp to drow pos
|
||
if (pb_dec_65->text()==tr("DECODE")+" D2")
|
||
MainDisplay->SetButtonDecodeAll65(1);//1.49 inportent need to main dsp to drow pos
|
||
//SecondDisplay->SetButtonDecodeAll65();
|
||
}
|
||
#define G_UL_K_72 0xb0285
|
||
void Main_Ms::SetVDispSpeed(int val)
|
||
{
|
||
//1.52 stop exeption pazi go save nestva s promiana na defaulta s_vdisp_all_speed[mod] to max=9
|
||
//tova ne stava -> all no Vdisplay(msk144 to jt6m) only fom (jt65 to ft8) set spead
|
||
/*qDebug()<<"1"<<val<<s_mod_ident;
|
||
if (s_mod_ident<=6)
|
||
return;
|
||
qDebug()<<"2"<<val<<s_mod_ident;*/
|
||
|
||
s_vdisp_all_speed[s_mod_ident] = val;//save
|
||
TMsCore->SetVDispSpeed(val);
|
||
//SB_VDispSpeed->setValue(s_vdisp_all_speed[s_mod_ident]);
|
||
}
|
||
QString Main_Ms::get_settings_allI(int ident)
|
||
{
|
||
// 0=vdist_speads 1=decoder_depth_all 2=max_cand65
|
||
QString s;
|
||
for (int i =0; i<COUNT_MODE; i++)
|
||
{
|
||
s.append(ModeStr(i)+"=");
|
||
|
||
if (ident==0)
|
||
s.append(QString("%1").arg(s_vdisp_all_speed[i]));
|
||
else if (ident==1)
|
||
s.append(QString("%1").arg(decoder_depth_all[i]));
|
||
else if (ident==2)
|
||
s.append(QString("%1").arg(max65_cand_all[i]));
|
||
|
||
if (i<COUNT_MODE-1)
|
||
s.append("#");
|
||
}
|
||
return s;
|
||
}
|
||
void Main_Ms::SetAllSettingsI(QString s, int ident)
|
||
{
|
||
// 0=vdist_speads 1=decoder_depth_all 2=max_cand65
|
||
QStringList ls=s.split("#");
|
||
|
||
for (int i=0; i<COUNT_MODE; i++)
|
||
{
|
||
QString tstr = ModeStr(i)+"=";
|
||
for (int j=0; j<ls.count(); j++)
|
||
{
|
||
if (ls[j].contains(tstr))
|
||
{
|
||
ls[j].remove(tstr);
|
||
|
||
if (ident==0)
|
||
{
|
||
if (!ls[j].isEmpty() && (ls[j].toInt()>0 && ls[j].toInt()<10))//from 1 do 9
|
||
s_vdisp_all_speed[i] = ls[j].toInt();
|
||
}
|
||
else if (ident==1)
|
||
{
|
||
if (!ls[j].isEmpty() && (ls[j].toInt()>0 && ls[j].toInt()<4))// from 1 do 3
|
||
decoder_depth_all[i] = ls[j].toInt();
|
||
}
|
||
else if (ident==2)
|
||
{
|
||
if (!ls[j].isEmpty() && (ls[j].toInt()>-1 && ls[j].toInt()<5))//1.51 10, from 0 do 4
|
||
max65_cand_all[i] = ls[j].toInt();
|
||
}
|
||
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::SetMaxCandidats65Mod(int in_mod)
|
||
{
|
||
int val = max65_cand_all[in_mod];
|
||
for (int i = 0; i < 5; ++i)
|
||
{
|
||
if (val==i)
|
||
{
|
||
cb_max65_cand[i]->setChecked(true);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::SetMaxCandidats65(bool)
|
||
{
|
||
int val = 0;
|
||
for (int i = 0; i < 5; ++i)
|
||
{
|
||
if (cb_max65_cand[i]->isChecked())
|
||
{
|
||
TDecoderMs->SetMaxCandidats65(i); //qDebug()<<i;
|
||
val = i;
|
||
break;
|
||
}
|
||
}
|
||
max65_cand_all[s_mod_ident] = val;
|
||
}
|
||
#define G_UL_K_73 0xafe28
|
||
void Main_Ms::ShowCloseAstroW(bool f)
|
||
{
|
||
if (f)
|
||
{
|
||
THvTxW->ShowAstroW();//1.58=stop this for ub9ocf
|
||
if (!g_block_from_close_app_is_active_astro_w)
|
||
is_active_astro_w = true;
|
||
}
|
||
else
|
||
{
|
||
THvTxW->CloseAstroW();//1.58=stop this for ub9ocf
|
||
if (!g_block_from_close_app_is_active_astro_w)
|
||
is_active_astro_w = false;
|
||
}
|
||
}
|
||
void Main_Ms::SetAstroWIsClosed()
|
||
{
|
||
Start_astro_m->setChecked(false);
|
||
}
|
||
void Main_Ms::SetAvg65CountToButtonTxt(int iu1,int ia1,int iu2,int ia2)
|
||
{
|
||
pb_clear_avg65->setText(tr("CLEAR AVG")+" "+QString("%1").arg(iu1)+"/"+QString("%1").arg(ia1)
|
||
+" | "+QString("%1").arg(iu2)+"/"+QString("%1").arg(ia2));
|
||
}
|
||
void Main_Ms::SetAvgPi4CountToButtonTxt(int iu1,int ia1)
|
||
{
|
||
pb_clear_avgPi4->setText(tr("CLEAR AVG")+" "+QString("%1").arg(iu1)+"/"+QString("%1").arg(ia1));
|
||
}
|
||
void Main_Ms::SetAvgQ65CountToButtonTxt(int iu1,int ia1)
|
||
{
|
||
pb_clear_avgQ65->setText(tr("CLEAR AVG")+" "+QString("%1").arg(iu1)+" | "+QString("%1").arg(ia1));
|
||
}
|
||
void Main_Ms::Msk144RxEqual(bool)
|
||
{
|
||
for (int i = 0; i < 4; ++i)
|
||
{
|
||
if (cb_msk144rxequal_[i]->isChecked())
|
||
{
|
||
TDecoderMs->SetMsk144RxEqual(i); //qDebug()<<i;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::VDispStartBandChanged(int)
|
||
{
|
||
int start = SB_VDispStartFreq->value();
|
||
int band = SB_VDispBandwidth->value();
|
||
|
||
//SB_VDispStartFreq->setRange(0,3000);//s3000+b2000=5000 max
|
||
//SB_VDispBandwidth->setRange(2000,5000);//s3000+b2000=5000 max
|
||
if (start+band>5000)
|
||
{
|
||
//SB_VDispStartFreq->setValue(start-100);
|
||
SB_VDispStartFreq->setValue(start-((start+band)-5000));
|
||
//SB_VDispStartFreq->setValue(band-5000);
|
||
return;
|
||
}
|
||
|
||
MainDisplay->setVDispFreqScale(start,start+band);//bool <- change start stop and df
|
||
TMsCore->setVDFftwStartStopFreq(start,start+band);
|
||
//qDebug()<<"Start="<<start<<"Stop="<<start+band<<"Bandwidth"<<band;
|
||
}
|
||
#define G_UL_K_74 0x589
|
||
void Main_Ms::SetDispVH(bool f)
|
||
{
|
||
//qDebug()<<"d0="<<height();
|
||
//return;
|
||
f_disp_v_h = f;
|
||
|
||
if (f_disp_v_h==last_f_disp_v_h)
|
||
return;
|
||
last_f_disp_v_h=f_disp_v_h;
|
||
|
||
if (f_disp_v_h)
|
||
{// vertical disp
|
||
if (!pb_D1_D2->Button_Stop_b)//only if on one display
|
||
pb_D1_D2->ExtrnalRelease(); //qDebug()<<"F11";
|
||
|
||
if (pb_2D_1D->Button_Stop_b)
|
||
MainDisplay->SetVDisplayHight(2);
|
||
else
|
||
MainDisplay->SetVDisplayHight(1);
|
||
|
||
SecondDisplay->setHidden(true);
|
||
pb_save_disp2->setHidden(false);
|
||
pb_D1_D2->setHidden(true);
|
||
|
||
SB_VDispSpeed->setHidden(false);
|
||
SB_VDispStartFreq->setHidden(false);
|
||
SB_VDispBandwidth->setHidden(false);
|
||
cb_flat_dsp->setHidden(false);
|
||
cb_adle_dsp->setHidden(false);
|
||
SetBS1Text("");
|
||
SetBS2Text("");
|
||
}
|
||
else
|
||
{// horizontal disp
|
||
SB_VDispSpeed->setHidden(true);
|
||
SB_VDispStartFreq->setHidden(true);
|
||
SB_VDispBandwidth->setHidden(true);
|
||
cb_flat_dsp->setHidden(true);
|
||
cb_adle_dsp->setHidden(true);
|
||
|
||
MainDisplay->SetVDisplayHight(1);
|
||
|
||
if (pb_2D_1D->Button_Stop_b)
|
||
{
|
||
SecondDisplay->setHidden(false);
|
||
pb_save_disp2->setHidden(false);
|
||
}
|
||
else
|
||
{
|
||
pb_save_disp2->setHidden(true);
|
||
pb_D1_D2->setHidden(false);
|
||
}
|
||
SetBS1Text("");
|
||
SetBS2Text("");
|
||
/*if (global_start_moni)
|
||
{
|
||
QDateTime utc_t = getDateTime();
|
||
MainDisplay->SetSyncPosition(time_pos_1period,getHHMin(),utc_t.toString("yyMMdd"));
|
||
}*/
|
||
}
|
||
}
|
||
void Main_Ms::BtSet2D1D()
|
||
{
|
||
TDecodeList1->StaticIgnoreResizeEvent(true);//stop scrolling
|
||
//TDecodeList2->IgnoreResizeEvent(true);
|
||
if (pb_2D_1D->Button_Stop_b)
|
||
{//two disp ili dvoen display horizontal/vartical
|
||
int hai = height();
|
||
MainDisplay->setHidden(false);
|
||
pb_save_disp1->setHidden(false);
|
||
|
||
if (f_disp_v_h)
|
||
MainDisplay->SetVDisplayHight(2);
|
||
else
|
||
{
|
||
SecondDisplay->setHidden(false);
|
||
pb_save_disp2->setHidden(false);
|
||
}
|
||
|
||
for (int i = 0; i<txt_tunedsp.count(); i++)
|
||
txt_tunedsp.at(i)->setHidden(false);
|
||
pb_D1_D2->setHidden(true);
|
||
|
||
if (!pb_D1_D2->Button_Stop_b)//korect if last is second disp
|
||
pb_D1_D2->Release_Button_hv();
|
||
|
||
//hai += (SecondDisplay->height() + pb_save_disp2->height());
|
||
hai += SecondDisplay->height();
|
||
resize(width(), hai);
|
||
}
|
||
else
|
||
{ //one disp horizontal/vartical
|
||
int hai = height();
|
||
SecondDisplay->setHidden(true);
|
||
|
||
if (!f_disp_v_h)
|
||
pb_save_disp2->setHidden(true);
|
||
|
||
for (int i = 0; i<txt_tunedsp.count(); i++)
|
||
txt_tunedsp.at(i)->setHidden(true);
|
||
|
||
if (f_disp_v_h)//1-3 vazno da e tuk ina4e nne se resaizva pravilno
|
||
{
|
||
MainDisplay->SetVDisplayHight(1);
|
||
//pb_D1_D2->setHidden(true);
|
||
}
|
||
|
||
pb_D1_D2->setHidden(false);//2-3 vazno da e tuk ina4e nne se resaizva pravilno
|
||
|
||
//hai -= (SecondDisplay->height() + pb_save_disp2->height());
|
||
hai -= SecondDisplay->height();
|
||
resize(width(), hai);
|
||
|
||
if (f_disp_v_h) //3-3 vazno da e tuk ina4e nne se resaizva pravilno
|
||
pb_D1_D2->setHidden(true);
|
||
}
|
||
TDecodeList1->StaticIgnoreResizeEvent(false);//start scrolling
|
||
//TDecodeList2->IgnoreResizeEvent(false);//start scrolling
|
||
}
|
||
void Main_Ms::BtSetD1D2()
|
||
{
|
||
if (pb_D1_D2->Button_Stop_b)
|
||
{
|
||
// inportent in this order hv
|
||
SecondDisplay->setHidden(true);
|
||
MainDisplay->setHidden(false);
|
||
pb_save_disp2->setHidden(true);
|
||
pb_save_disp1->setHidden(false);
|
||
}
|
||
else
|
||
{
|
||
// inportent in this order hv
|
||
MainDisplay->setHidden(true);
|
||
SecondDisplay->setHidden(false);
|
||
pb_save_disp1->setHidden(true);
|
||
pb_save_disp2->setHidden(false);
|
||
}
|
||
//TDecodeList->scrollToBottom();
|
||
}
|
||
QString Main_Ms::get_dec_settings_allB(int ident)
|
||
{
|
||
//0=vhf_hf 1=avg 2=deeps 3=ap 4=set_two_dec_lists 5=auto_dec_all
|
||
QString s;
|
||
for (int i =0; i<COUNT_MODE; i++)
|
||
{
|
||
s.append(ModeStr(i)+"=");
|
||
|
||
if (ident==0)
|
||
s.append(QString("%1").arg(vhf_uhf_decode_fac_all[i]));
|
||
else if (ident==1)
|
||
s.append(QString("%1").arg(avg_dec_all[i]));
|
||
else if (ident==2)
|
||
s.append(QString("%1").arg(deep_search_dec_all[i]));
|
||
else if (ident==3)
|
||
s.append(QString("%1").arg(decoder_ap_all[i]));
|
||
else if (ident==4)
|
||
s.append(QString("%1").arg(two_dec_list_all[i]));
|
||
else if (ident==5)
|
||
s.append(QString("%1").arg(auto_decode_all[i]));
|
||
|
||
if (i<COUNT_MODE-1)
|
||
s.append("#");
|
||
}
|
||
return s;
|
||
}
|
||
void Main_Ms::SetDecodeAllSettingsB(QString s,int ident)
|
||
{
|
||
//0=vhf_hf 1=avg 2=deeps 3=ap 4=set_two_dec_lists 5=auto_dec_all
|
||
QStringList ls=s.split("#");
|
||
for (int i=0; i<COUNT_MODE; i++)
|
||
{
|
||
QString tstr = ModeStr(i)+"=";
|
||
for (int j=0; j<ls.count(); j++)
|
||
{
|
||
if (ls[j].contains(tstr))
|
||
{
|
||
ls[j].remove(tstr);
|
||
if (!ls[j].isEmpty() && (ls[j].toInt()>-1 && ls[j].toInt()<2))// from 1 do 3
|
||
{
|
||
if (ident==0)
|
||
vhf_uhf_decode_fac_all[i] = (bool)ls[j].toInt();
|
||
else if (ident==1)
|
||
avg_dec_all[i] = (bool)ls[j].toInt();
|
||
else if (ident==2)
|
||
deep_search_dec_all[i] = (bool)ls[j].toInt();
|
||
else if (ident==3)
|
||
decoder_ap_all[i] = (bool)ls[j].toInt();
|
||
else if (ident==4)
|
||
two_dec_list_all[i] = (bool)ls[j].toInt();
|
||
else if (ident==5)
|
||
auto_decode_all[i] = (bool)ls[j].toInt();
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::AvgDecodeChanged(bool f)//activate from cb_vhf_uhf_decode_fac->setChecked
|
||
{
|
||
avg_dec_all[s_mod_ident] = f;//save
|
||
TDecoderMs->AvgDecodeChanged(f);
|
||
}
|
||
void Main_Ms::DeepSearchChanged(bool f)//activate from cb_vhf_uhf_decode_fac->setChecked
|
||
{
|
||
deep_search_dec_all[s_mod_ident] = f;//save
|
||
TDecoderMs->DeepSearchChanged(f);
|
||
}
|
||
void Main_Ms::SetVhfUhfFeatures(bool f)//activate from cb_vhf_uhf_decode_fac->setChecked
|
||
{
|
||
vhf_uhf_decode_fac_all[s_mod_ident] = f;//save
|
||
TDecoderMs->SetVhfUhfFeatures(f);
|
||
THvTxW->SetVhfUhfFeatures(f);
|
||
}
|
||
void Main_Ms::DecodeAp(bool f)//activate from cb_ap_decode->setChecked
|
||
{
|
||
decoder_ap_all[s_mod_ident] = f;//save
|
||
TDecoderMs->SetApDecode(f);
|
||
}
|
||
void Main_Ms::SetDecodeDeeptFromMod(int md)
|
||
{
|
||
int val = decoder_depth_all[md]; //1-fast 2-normal 3-deep
|
||
for (int i = 0; i < 3; ++i)
|
||
{
|
||
if (val==i+1)
|
||
{
|
||
rb_dec_depth[i]->setChecked(true);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::DecodeDeept(bool)
|
||
{
|
||
int val = 1; //1-fast 2-normal 3-deep
|
||
for (int i = 0; i < 3; ++i)
|
||
{
|
||
if (rb_dec_depth[i]->isChecked())
|
||
{
|
||
val = i+1;
|
||
break;
|
||
}
|
||
}
|
||
decoder_depth_all[s_mod_ident] = val;//save
|
||
TDecoderMs->SetDecoderDeep(val); //qDebug()<<val;
|
||
}
|
||
/////////////DragDrop/////////////////////////////////
|
||
bool Main_Ms::SupportedDrags(QString data)
|
||
{
|
||
bool support = false;
|
||
|
||
if (f_decoder_busy)
|
||
return support;
|
||
|
||
data.remove("\n");
|
||
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)//2.56
|
||
QStringList pieces = data.split(QRegExp("file://"), Qt::SkipEmptyParts);
|
||
#else
|
||
QStringList pieces = data.split(QRegExp("file://"), QString::SkipEmptyParts);
|
||
#endif
|
||
if (pieces.count()==1)// only one file
|
||
{
|
||
for (QStringList::iterator it = pieces.begin(); it != pieces.end(); it++)
|
||
{
|
||
QString path_rem_space = (*it).replace("%20", " ").toUtf8();// qt4.4.0 zaradi " i kirilica
|
||
QFileInfo fi(path_rem_space);
|
||
QString str = fi.suffix().toLower().toUtf8(); //qt4.4.0 zaradi " i kirilica
|
||
|
||
if (str == "wav")
|
||
support = true;
|
||
|
||
//QDir dir(path_rem_space);
|
||
//if (dir.exists())
|
||
//support = true;
|
||
}
|
||
}
|
||
return support;
|
||
}
|
||
void Main_Ms::dragEnterEvent(QDragEnterEvent *event)
|
||
{
|
||
if (!f_decoder_busy)
|
||
{
|
||
QString filess;
|
||
QList<QUrl> urls = event->mimeData()->urls();
|
||
for (int i = 0; i < urls.size(); ++i)
|
||
{
|
||
filess.append("file://"+urls.at(i).toLocalFile());
|
||
}
|
||
if (SupportedDrags(filess))
|
||
event->acceptProposedAction();
|
||
//else
|
||
//event->ignore();
|
||
}
|
||
//else
|
||
//event->ignore();
|
||
//QCoreApplication::processEvents();// qt5
|
||
//qDebug()<<QApplication::startDragTime();
|
||
}
|
||
void Main_Ms::dropEvent(QDropEvent *event)
|
||
{
|
||
if (event->mimeData()->hasFormat("text/uri-list"))
|
||
{
|
||
QString filess;
|
||
QList<QUrl> urls = event->mimeData()->urls();
|
||
|
||
for (int i = 0; i < urls.size(); ++i)
|
||
{
|
||
filess.append("file://"+urls.at(i).toLocalFile());
|
||
}
|
||
QString instr = filess.remove("\n");
|
||
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)//2.56
|
||
QStringList pieces = instr.split(QRegExp("file://"), Qt::SkipEmptyParts);
|
||
#else
|
||
QStringList pieces = instr.split(QRegExp("file://"), QString::SkipEmptyParts);
|
||
#endif
|
||
FileOpen(pieces.at(0));
|
||
|
||
event->acceptProposedAction();
|
||
}
|
||
}
|
||
void Main_Ms::dragMoveEvent(QDragMoveEvent *event)
|
||
{
|
||
QRect rec = MainDisplay->rect();
|
||
|
||
rec.setY(rec.y()+24);
|
||
rec.setHeight(rec.height()+24);
|
||
if (rec.contains(event->pos()) && !MainDisplay->isHidden())//v1.30 !MainDisplay->isHidden() for one disp work
|
||
event->acceptProposedAction();
|
||
else
|
||
event->ignore();
|
||
|
||
//QApplication::processEvents();
|
||
//QCoreApplication::processEvents(QEventLoop::AllEvents);
|
||
}
|
||
/////////////DragDrop////////////
|
||
void Main_Ms::SetBandFromRigFreq(int i)
|
||
{
|
||
s_id_set_to_rig = 1;//0<-from App 1<-from Rig //qDebug()<<"SetBandFromRigFreq"<<s_id_set_to_rig<<i;
|
||
ListBands.at(i)->setChecked(true);
|
||
}
|
||
void Main_Ms::SkUpDownBandChanged(bool f_up_down)
|
||
{
|
||
if (f_tx_busy) return;
|
||
int ib = -1;
|
||
for (int i = 0; i<COUNT_BANDS; ++i)
|
||
{
|
||
if (ListBands.at(i)->isChecked())
|
||
{
|
||
ib = i;
|
||
break;
|
||
}
|
||
}
|
||
if (ib>-1)// band is exit
|
||
{
|
||
if (f_up_down && ib+1<COUNT_BANDS) ListBands.at(ib+1)->setChecked(true);
|
||
else if (!f_up_down && ib-1>-1) ListBands.at(ib-1)->setChecked(true);
|
||
}
|
||
}
|
||
void Main_Ms::BandChanged(bool)
|
||
{
|
||
//StopTxGlobal();//2.12
|
||
for (int i = 0; i<COUNT_BANDS; ++i)
|
||
{
|
||
if (ListBands.at(i)->isChecked())
|
||
{
|
||
QString temp_band = lst_bands[i];//2.16
|
||
THvRigControl->SetBand(temp_band);
|
||
THvTxW->SetBand(temp_band,s_id_set_to_rig);//0<-from App 1<-from Rig
|
||
RefreshWindowTitle();
|
||
s_id_set_to_rig = 0;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::ModeMenuStatRefresh(bool dea)
|
||
{
|
||
bool txa = false; //ft8 and ft4
|
||
if (s_mod_ident==11 || s_mod_ident==13 || allq65)
|
||
txa = f_tx_busy;
|
||
|
||
if (dea || txa)
|
||
{
|
||
Mode_m->setDisabled(true);
|
||
W_mod_bt_sw->setDisabled(true);
|
||
}
|
||
else if (!dea && !txa)
|
||
{
|
||
Mode_m->setDisabled(false);
|
||
W_mod_bt_sw->setDisabled(false);
|
||
}
|
||
}
|
||
void Main_Ms::SetRigTxRx(bool f)
|
||
{
|
||
//qDebug()<<"SetRigTxRx...................."<<f;
|
||
f_tx_busy = f;//2.47
|
||
THvRigControl->SetPtt(f,0);//id 0=All 1=p1 2=p2
|
||
THvTxW->SetTxRxCountAutoSeq(f);
|
||
if (f)
|
||
{
|
||
if (dsty) l_tx_text->setStyleSheet("QLabel{background-color : rgb(170, 0, 0);}");
|
||
else l_tx_text->setStyleSheet("QLabel{background-color : rgb(255, 0, 0);}");
|
||
Band_m->setDisabled(true);
|
||
}
|
||
else
|
||
{
|
||
l_tx_text->setStyleSheet("QLabel{background-color :palette(Button);}");
|
||
Band_m->setDisabled(false);
|
||
}
|
||
|
||
//f_tx_busy = f;
|
||
if (s_mod_ident==11 || s_mod_ident==13 || allq65)//ft8 and ft4
|
||
ModeMenuStatRefresh(f_de_active);
|
||
}
|
||
QDateTime Main_Ms::getDateTime()
|
||
{
|
||
//QDateTime loc_time = QDateTime::currentDateTime();
|
||
//QDateTime utc_t = loc_time.addSecs(offset_t);//QDateTime::currentDateTimeUtc();
|
||
QDateTime utc_t = QDateTime::currentDateTimeUtc();
|
||
return utc_t;
|
||
}
|
||
void Main_Ms::SetPeriodTime(float val)
|
||
{
|
||
//StopRxGlobal();
|
||
//qDebug()<<"15===="<<val;
|
||
period_time_sec = (double)val;
|
||
/*if (period_time_sec==7.0)//2.35 correct in spinbox
|
||
period_time_sec=7.5;*/
|
||
|
||
TDecoderMs->SetPerodTime((int)period_time_sec);
|
||
|
||
//f_once_pt_15_to_30 0<-no 1<-30s 2<-15s
|
||
if (val<=15 && f_once_pt_15_to_30!=2)
|
||
{
|
||
//f_once0s = false;
|
||
MainDisplay->setHDispPeriodTime(15,s_mod_ident);
|
||
SecondDisplay->setHDispPeriodTime(15,s_mod_ident);
|
||
f_once_pt_15_to_30 = 2;
|
||
//qDebug()<<"15="<<val;
|
||
}
|
||
/*&& f_once_pt_15_to_30!=1*/
|
||
if (val>15)
|
||
{
|
||
//qDebug()<<"30="<<val;
|
||
MainDisplay->setHDispPeriodTime(val,s_mod_ident);//
|
||
SecondDisplay->setHDispPeriodTime(val,s_mod_ident);//
|
||
f_once_pt_15_to_30 = 1;
|
||
}
|
||
|
||
fast_find_period = true;
|
||
}
|
||
QString Main_Ms::getHHMin()
|
||
{
|
||
/*old no ms 5,6,10,15,30,60
|
||
QString hm = getDateTime().toString("hhmm");
|
||
int ss = getDateTime().toString("ss").toInt();
|
||
int multip_ss = ss/period_time_sec;
|
||
multip_ss = period_time_sec*multip_ss;
|
||
if (multip_ss < 10)
|
||
hm.append("0");
|
||
hm.append(QString("%1").arg(multip_ss));*/
|
||
QString hm = getDateTime().toString("hhmm");
|
||
int sz1 = getDateTime().toString("sszzz").toInt();
|
||
sz1 /=100;
|
||
int ssms1 = (int)(period_time_sec*10.0);
|
||
int multip_ssz = sz1/ssms1;
|
||
multip_ssz = (ssms1*multip_ssz)/10;
|
||
if (multip_ssz < 10)
|
||
hm.append("0");
|
||
hm.append(QString("%1").arg(multip_ssz));
|
||
//qDebug()<<"FFFFFF="<<hm<<multip_ssz;
|
||
return hm;
|
||
}
|
||
void Main_Ms::SetRxOnlyFiSe(bool f) // v1.27 for rx only first second period
|
||
{
|
||
f_rx_only_fi_se = f;
|
||
//StopRxGlobal();
|
||
//StartRxGlobal();
|
||
f_fast_rfresh_only_fi_se = true;
|
||
//qDebug()<<"RX_ONLY_FS_SE="<<f_rx_only_fi_se<<f_fast_rfresh_only_fi_se;
|
||
}
|
||
void Main_Ms::Refresh()
|
||
{
|
||
bool f_fs_se;
|
||
QDateTime utc_t = getDateTime();
|
||
//THvTxW->SetDataTime(utc_t.toString("dd.MM.yyyy"),utc_t.toString("hh:mm:ss"));//MMMM
|
||
THvTxW->SetDataTime(utc_t);//MMMM
|
||
int ss = utc_t.toString("ss").toInt();
|
||
//int ms = utc_t.toString("z").toInt(); //<--- error QT > QT5 v5.9.x
|
||
int ms = utc_t.toString("zzz").toInt();
|
||
int period_time_msec = (int)(period_time_sec*1000.0); //qDebug()<<"RX_ONLY_FS_SE="<<period_time_msec;
|
||
//int min_59 = utc_t.toString("m").toInt(); //<--- error QT > QT5 v5.9.x
|
||
int min_59 = utc_t.toString("mm").toInt();
|
||
|
||
|
||
time_pos_1period = (min_59*60000)+(ss*1000)+ms; //time_pos_1period = ss+ms;
|
||
time_pos_2period = time_pos_1period;
|
||
|
||
//time_pos_2period = time_pos_2period % (period_time_msec*2); // not work correct
|
||
while (time_pos_2period>period_time_msec*2)//time_pos_2period za dva perioda tx+rx
|
||
time_pos_2period -=period_time_msec*2;
|
||
|
||
//time_pos_1period = time_pos_1period % period_time_msec; // not work correct
|
||
while (time_pos_1period>period_time_msec)//time_pos_1period za edin priod
|
||
time_pos_1period -=period_time_msec;
|
||
|
||
if (time_pos_2period<=period_time_msec) f_fs_se = true;
|
||
else f_fs_se = false;
|
||
|
||
|
||
int stop_tx50s = 0;
|
||
if (s_mod_ident==11) stop_tx50s = 600;//stop 14s stop TX//ft8
|
||
else if (s_mod_ident==13) stop_tx50s = 800;//stop 5s stop TX //ft4 error 2.18=if(s_mod_ident==13) need to be else if
|
||
else if (allq65)//q65 stop TX
|
||
{
|
||
stop_tx50s = 800; // 2,25- 0,5 = 1,75 to end
|
||
if (period_time_sec== 30) stop_tx50s = 2000; // 4,5 - 0,5 = 4,0 to end
|
||
else if (period_time_sec== 60) stop_tx50s = 6000; // 9,0 - 1,0 = 8,0 to end
|
||
else if (period_time_sec==120) stop_tx50s = 3600; // 6.6 - 1,0 = 5,6 to end
|
||
}
|
||
else if (s_mod_ident==7 || s_mod_ident==8 || s_mod_ident==9) stop_tx50s = 11000;// 48s stop 49s stop TX
|
||
else stop_tx50s = 0;
|
||
|
||
|
||
if (s_mod_ident==10)
|
||
{
|
||
if (!TMsPlayerHV->Is_RealStop() || THvTxW->GetAutoIsOn()) StopTxGlobal();
|
||
}
|
||
|
||
bool f_tx_fi_se = THvTxW->GetTxFi();
|
||
if (f_tx_fi_se)
|
||
{
|
||
if (f_fs_se && time_pos_1period<(period_time_msec-stop_tx_befor_end-stop_tx50s))
|
||
f_is_period_rx_tx=true;
|
||
else
|
||
f_is_period_rx_tx=false;
|
||
}
|
||
else
|
||
{
|
||
if (!f_fs_se && time_pos_1period<(period_time_msec-stop_tx_befor_end-stop_tx50s))
|
||
f_is_period_rx_tx=true;
|
||
else
|
||
f_is_period_rx_tx=false;
|
||
}
|
||
|
||
//////////////REMUTE/////////////////////////////////
|
||
if (THvTxW->GetAutoIsOn())
|
||
{
|
||
if (global_start_moni && fi_se_changed != (int)f_tx_fi_se)
|
||
{
|
||
fi_se_changed = (int)f_tx_fi_se;
|
||
if (!f_is_period_rx_tx)
|
||
s_f_dec50 = false;
|
||
else
|
||
s_f_dec50 = true;
|
||
//qDebug()<<"first second changed"<<fi_se_changed<<f_is_period_rx_tx;
|
||
}
|
||
|
||
if (TMsCore->GetSta_Sto() && !f_is_period_rx_tx)//na rx i si period za slu6ane
|
||
f_auto_on = true;//da ne triperi tx-rx pri auto on vavno
|
||
else
|
||
f_auto_on = false;
|
||
|
||
if (f_is_period_rx_tx && TMsPlayerHV->Is_RealStop())
|
||
{
|
||
f_auto_on = false;
|
||
TxMessage(s_msg,true);
|
||
}
|
||
else if (!f_is_period_rx_tx && !TMsPlayerHV->Is_RealStop())
|
||
{
|
||
f_tx_to_rx = true; //qDebug()<<"1Stop TX Start RX"<<time_pos_1period;
|
||
}
|
||
}
|
||
if (!THvTxW->GetAutoIsOn() && time_pos_1period>(period_time_msec-stop_tx_befor_end-stop_tx50s)//stop tx 370ms bifor rx period tx buffer is 4096=370ms
|
||
&& !TMsPlayerHV->Is_RealStop())
|
||
{
|
||
f_tx_to_rx = true; //qDebug()<<"2Stop TX Start RX"<<time_pos_1period;
|
||
}
|
||
|
||
|
||
if (s_mod_ident==10)//pi4 rx
|
||
{
|
||
if (time_pos_1period>30000 && f_onse50 && global_start_moni)//s_f_dec50 52000 12000
|
||
{
|
||
f_onse50 = false;
|
||
if (!s_f_dec50)
|
||
{
|
||
MainDisplay->DecodeAllData(true,true);
|
||
s_f_dec50 = true; //qDebug()<<"Decode50";
|
||
}
|
||
}
|
||
}
|
||
else if (s_mod_ident==11)//ft8 rx to decode 11800 -1700- 13500 -1200- 14700
|
||
{
|
||
int start_dec_t = 14400;
|
||
if (cb_3intFt_d->isChecked()) start_dec_t = 11750;//11800 2.39 remm
|
||
if (time_pos_1period>start_dec_t && f_onse50 && global_start_moni)//2.38=14400 2.20=14250 2.19=14200 wsjtx=14350
|
||
{
|
||
f_onse50 = false;
|
||
if (!s_f_dec50)
|
||
{
|
||
MainDisplay->DecodeAllData(true,true);
|
||
s_f_dec50 = true; //qDebug()<<"Decode50"<<s_f_dec50;
|
||
}
|
||
}
|
||
}
|
||
else if (s_mod_ident==13)//ft4 rx to decode
|
||
{
|
||
if (time_pos_1period>6100 && f_onse50 && global_start_moni)//2.21 st=0.350 tx=0.350+5.04 in wsjt=??
|
||
{
|
||
f_onse50 = false;
|
||
if (!s_f_dec50)
|
||
{
|
||
MainDisplay->DecodeAllData(true,true);
|
||
s_f_dec50 = true; //qDebug()<<"Decode50"<<s_f_dec50;
|
||
}
|
||
}
|
||
}
|
||
else if (allq65) // q65 rx
|
||
{
|
||
int start_dec_t = 13900; //wsjt-x 13.8 s
|
||
if (period_time_sec== 30) start_dec_t = 28600; //wsjt-x 27.6 s, decode_at_52s= 28.8 s
|
||
else if (period_time_sec== 60) start_dec_t = 56500; //wsjt-x 56.4 s
|
||
else if (period_time_sec==120) start_dec_t = 117600; //wsjt-x 117.5 s
|
||
if (time_pos_1period>start_dec_t && f_onse50 && global_start_moni)//s_f_dec50 52000 12000
|
||
{
|
||
f_onse50 = false;
|
||
if (!s_f_dec50)
|
||
{
|
||
MainDisplay->DecodeAllData(true,true);
|
||
s_f_dec50 = true; //qDebug()<<"Decode50";
|
||
}
|
||
}
|
||
}
|
||
else // jt65 rx if(s_mod_ident==7 || s_mod_ident==8 || s_mod_ident==9)
|
||
{
|
||
if (time_pos_1period>52000 && f_onse50 && global_start_moni)//s_f_dec50 52000 12000
|
||
{
|
||
f_onse50 = false;
|
||
if (!s_f_dec50)
|
||
{
|
||
MainDisplay->DecodeAllData(true,true);
|
||
s_f_dec50 = true; //qDebug()<<"Decode50";
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
if (f_fast_rfresh_only_fi_se && global_start_moni && !THvTxW->GetAutoIsOn()) // v1.27 for rx only first second period
|
||
{
|
||
f_fast_rfresh_only_fi_se = false;
|
||
//s_f_dec50 = false;
|
||
if (!f_rx_only_fi_se) // && !TMsCore->GetSta_Sto()
|
||
{
|
||
if (!TMsCore->GetSta_Sto())
|
||
{
|
||
//MainDisplay->SetSyncPosition(time_pos_1period,getHHMin(),utc_t.toString("yyMMdd"));
|
||
StartRx(); //StartRx() tam ima -> MainDisplay->SetSyncPosition
|
||
s_f_dec50 = false;
|
||
//qDebug()<<"StartRx() If OFF F/S From STOP";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (!f_is_period_rx_tx)
|
||
{
|
||
//MainDisplay->SetSyncPosition(time_pos_1period,getHHMin(),utc_t.toString("yyMMdd"));
|
||
StartRx(); //StartRx() tam ima -> MainDisplay->SetSyncPosition
|
||
s_f_dec50 = false;
|
||
//qDebug()<<"StartRx() If Period F/S From STOP";
|
||
}
|
||
else
|
||
{
|
||
StopRx();
|
||
if (!s_f_dec50)
|
||
{
|
||
MainDisplay->DecodeAllData(true,true);
|
||
s_f_dec50 = true;
|
||
//qDebug()<<"DecodeAllData Auto OFF FAST REFRESH FIRST SECOND======="<<s_f_dec50;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if ((time_pos_1period<(period_time_msec/2-10) && f_once0s) || fast_find_period)
|
||
{
|
||
// kogato se nulira togava SetSyncPosition
|
||
//qDebug()<<"<<<<<<<<<<<<"<<time_pos_1period<<period_time_msec<<f_once0s;
|
||
fast_find_period = false;
|
||
f_once0s = false;
|
||
if (global_start_moni && !THvTxW->GetAutoIsOn())//pokriza moitor off, a tx start
|
||
{
|
||
if (f_rx_only_fi_se) // v1.27 for rx only first second period
|
||
{
|
||
if (!f_is_period_rx_tx)
|
||
{
|
||
//MainDisplay->SetSyncPosition(time_pos_1period,getHHMin(),utc_t.toString("yyMMdd"));
|
||
StartRx();
|
||
//qDebug()<<"StartRx() Evry F/S period From STOP";
|
||
}
|
||
else
|
||
{
|
||
StopRx();
|
||
if (!s_f_dec50)
|
||
{
|
||
MainDisplay->DecodeAllData(true,true);
|
||
//s_f_dec50 = true;
|
||
//qDebug()<<"DecodeAllData Auto OFF ======="<<s_f_dec50;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MainDisplay->SetSyncPosition(time_pos_1period,getHHMin(),utc_t.toString("yyMMdd"),s_f_dec50);
|
||
StartRx(); // no need this ? but for any case HV 1.27
|
||
//qDebug()<<"11SetSyncPosition + StartRx()";
|
||
}
|
||
}
|
||
|
||
if (TMsPlayerHV->Is_RealStop() && THvTxW->GetAutoIsOn())
|
||
{
|
||
MainDisplay->SetSyncPosition(time_pos_1period,getHHMin(),utc_t.toString("yyMMdd"),s_f_dec50);
|
||
//qDebug()<<"22 SetSyncPosition"<<s_f_dec50;
|
||
}
|
||
|
||
if (!TMsPlayerHV->Is_RealStop() && THvTxW->GetAutoIsOn())
|
||
{
|
||
if (!s_f_dec50)
|
||
{
|
||
MainDisplay->DecodeAllData(true,true);
|
||
//s_f_dec50 = true;
|
||
//qDebug()<<"DecodeAllData Auto ON ======="<<s_f_dec50;
|
||
}
|
||
}
|
||
|
||
if (global_start_moni)
|
||
{
|
||
if (f_rx_only_fi_se || THvTxW->GetAutoIsOn())
|
||
{
|
||
if (!f_is_period_rx_tx)
|
||
s_f_dec50 = false;
|
||
//else
|
||
//{
|
||
//qDebug()<<"1s_f_dec50==================s_f_dec50===================="<<s_f_dec50;
|
||
//s_f_dec50 = true;
|
||
//qDebug()<<"2s_f_dec50==================s_f_dec50===================="<<s_f_dec50;
|
||
//}
|
||
}
|
||
else
|
||
s_f_dec50 = false;
|
||
//qDebug()<<"s_f_dec50=================="<<s_f_dec50;
|
||
}
|
||
}
|
||
|
||
if (time_pos_1period>(period_time_msec/2+10) && !f_once0s)//
|
||
{
|
||
//qDebug()<<">>>>>>>>>>>>"<<time_pos_1period;
|
||
f_once0s = true;
|
||
f_onse50 = true;
|
||
}
|
||
|
||
// TX to RX width delay
|
||
if (f_tx_to_rx)
|
||
{
|
||
f_tx_to_rx = false;
|
||
TMsPlayerHV->Stop(); //qDebug()<<"MAIN====== TMsPlayerHV->Stop()"<<TMsPlayerHV->Is_RealStop();
|
||
count_tx_to_rx = stop_tx_befor_end + 25;//0.96->50ms vazno +25ms zaradi auto decode ina4e iztriva displea sled tx
|
||
f_rx_glob_ = true;
|
||
|
||
if (f_tune)// za da raboti i na stop
|
||
{
|
||
f_tune = false;
|
||
pb_tune->setStyleSheet("QPushButton{background-color :palette(Button);}");
|
||
THvTxW->GetCurrentMsg();
|
||
}
|
||
}
|
||
if ( count_tx_to_rx > 0)
|
||
{
|
||
count_tx_to_rx -= 5;//5ms refresh time in mscore.cpp ThreadRefr msleep(5);<-5ms or timer_ref_->start(10);
|
||
//qDebug()<<"CD="<<count_tx_to_rx;
|
||
}
|
||
else
|
||
count_tx_to_rx = 0;
|
||
if (f_rx_glob_ && count_tx_to_rx==0)
|
||
{
|
||
f_rx_glob_ = false; //qDebug()<<"RXXXXXXXX";
|
||
SetRigTxRx(false);
|
||
if (THvTxW->GetAutoIsOn())
|
||
StartRxGlobal();
|
||
else //if (!f_rx_only_fi_se) //off auto and only -> v1.27 for rx only first second period
|
||
{
|
||
if (!f_rx_only_fi_se) // v1.27 for rx only first second period
|
||
StartRx();
|
||
if (f_rx_only_fi_se && !f_is_period_rx_tx) // v1.27 for rx only first second period
|
||
StartRx();
|
||
}
|
||
}
|
||
//////////////END REMUTE/////////////////////////////////
|
||
//qDebug()<<"s_f_dec50"<<s_f_dec50;
|
||
}
|
||
void Main_Ms::SetAuto()
|
||
{
|
||
if (!THvTxW->GetAutoIsOn())
|
||
{
|
||
f_auto_on = false;
|
||
f_tx_to_rx = true; //qDebug()<<"3Stop TX Start RX";// ako izklu4a auto da spre i tx ako e na tx
|
||
|
||
//qDebug()<<"s_f_dec50"<<s_f_dec50;
|
||
//if (s_mod_ident!=11)//ft8 no good for aoto_seq "stop auto" make decodings my be need remove for all modes
|
||
//s_f_dec50 = false; //vazno pri spirane AUTO da ne go smiata za decodirano i decodira nowoto my be need to stop it
|
||
|
||
//v1.47 no decode if data is < p_time*2/3 and auto is off from tx
|
||
//v1.47 this is importent for AutoSeq for ues only one 73 to stop TX other case make one more decode
|
||
int period_time_msec_23 = (((int)(period_time_sec*1000.0))*2/3);
|
||
if (time_pos_1period < period_time_msec_23)
|
||
{
|
||
s_f_dec50 = false;
|
||
//qDebug()<<"RESET s_f_dec50"<<time_pos_1period<<period_time_msec_23<<s_f_dec50;
|
||
}
|
||
//else
|
||
//qDebug()<<"NO RESET s_f_dec50"<<time_pos_1period<<period_time_msec_23<<s_f_dec50;
|
||
//s_f_dec50 = true;
|
||
}
|
||
else
|
||
{
|
||
f_auto_on = true;
|
||
//if (!f_rx_only_fi_se || !global_start_moni) // v1.27 for rx only first second period
|
||
//StartRxGlobal();// ima smisal ne vklu4en auto on za parwi pat
|
||
|
||
// s postoianen refresh na f_is_period_rx_tx v void Refresh() pokriva vsi4ki iziskania
|
||
if (!f_is_period_rx_tx) // v1.27 for rx only first second period
|
||
StartRxGlobal(); // ima smisal ne vklu4en auto on za parwi pat
|
||
else
|
||
{ // ostava za6toto taka e na drugite versii 1.27 HV
|
||
global_start_moni = true;
|
||
if (dsty) pb_start_rx->setStyleSheet("QPushButton{background-color :rgb(64, 150, 0);}");
|
||
else pb_start_rx->setStyleSheet("QPushButton{background-color :rgb(50, 240, 50);}");//150, 150, 255
|
||
}
|
||
|
||
if (f_tune)//stop tune if auto is on and send current msg
|
||
{
|
||
f_tune = false;
|
||
pb_tune->setStyleSheet("QPushButton{background-color :palette(Button);}");
|
||
THvTxW->GetCurrentMsg();
|
||
f_auto_on = false;
|
||
TxMessage(s_msg,true);
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::SetRxAllTxt(QString rx_str)
|
||
{
|
||
QDateTime utc_t = getDateTime();
|
||
QString freq_g = THvTxW->GetFreqGlobal();
|
||
freq_g = freq_g.mid(0,freq_g.size()-3);//to khz
|
||
TAllTxt->SetTxt(utc_t.toString("yyyy_MM_dd"),"RX "+freq_g+" "+rx_str);
|
||
}
|
||
void Main_Ms::SetQrgQSY(QStringList l)//2.46
|
||
{
|
||
QString s = l.at(0);
|
||
int sc = s.count();
|
||
s = s.mid(0,sc-3);
|
||
s.insert(sc-6,".");
|
||
s = " - "+s+" -";
|
||
_stcq_ = l.at(1);
|
||
SetTxMsgAllTxt(s,-10.0);//ID QSY = -10.0
|
||
}
|
||
void Main_Ms::SetTxMsgLabTx(QString str)
|
||
{
|
||
//qDebug()<<"SetTxMsgLabTx"<<s_mod_ident<<Multi_answer_mod->isChecked();
|
||
//no update if msg is same
|
||
THvTxW->SetLastTxRptAutoSeq(str);
|
||
if ((s_mod_ident==11 || s_mod_ident==13 || allq65) && (Multi_answer_mod->isChecked() || Multi_answer_mod_std->isChecked()))
|
||
{
|
||
int ch = str.count("#");
|
||
if (ch>0)
|
||
l_tx_text->setText("Txing: "+QString("%1").arg(ch+1)+" Slot Messages");
|
||
else
|
||
l_tx_text->setText("Txing: "+str);
|
||
}
|
||
else
|
||
l_tx_text->setText("Txing: "+str);
|
||
}
|
||
void Main_Ms::SetTxMsgAllTxt(QString str,double tx_freq)
|
||
{
|
||
QDateTime utc_t = getDateTime();
|
||
QString freq_g = THvTxW->GetFreqGlobal();
|
||
freq_g = freq_g.mid(0,freq_g.size()-3);//to khz
|
||
|
||
if (tx_freq==-10.0)//ID QSY = -10.0
|
||
TAllTxt->SetTxt(utc_t.toString("yyyy_MM_dd"),"QSY "+freq_g+" "+ModeStr(s_mod_ident)+
|
||
utc_t.toString("|hhmmss|")+str);
|
||
else
|
||
TAllTxt->SetTxt(utc_t.toString("yyyy_MM_dd"),"TX "+freq_g+" "+ModeStr(s_mod_ident)+
|
||
utc_t.toString("|hhmmss|")+str);
|
||
/*TDecodeList2->isVisible() && */
|
||
if (s_mod_ident==0 || s_mod_ident==12 || s_mod_ident==7 || s_mod_ident==8 || s_mod_ident==9 || s_mod_ident==11 || s_mod_ident==13 || allq65)//ft8 jt65 ft4
|
||
{
|
||
QString tx_time_ss = utc_t.toString("hhmmss");
|
||
TDecodeList2->SetBackColor(false);//ID QSY = -10.0
|
||
QStringList ltxx;
|
||
QStringList lcqq;
|
||
if (s_mod_ident==11 || s_mod_ident==13)//ft8 ft4
|
||
{
|
||
if (tx_freq==-10.0)//ID QSY = -10.0
|
||
{
|
||
TDecodeList2->SetBackColorTxQsy(true);//2.46 tx=0 qsy=1;
|
||
lcqq<<""<<"CQ"<<""<<""<<_stcq_<<""<<""<<"";
|
||
ltxx<<""<<"QSY"<<""<<""<<str<<""<<""<<"";
|
||
TDecodeList2->InsertItem_hv(lcqq,true,true);
|
||
TDecodeList2->InsertItem_hv(ltxx,true,true);
|
||
}
|
||
else
|
||
{
|
||
TDecodeList2->SetBackColorTxQsy(false);//2.46
|
||
QStringList lmam;
|
||
lmam = str.split("#");
|
||
int cl = lmam.count();
|
||
int nslt = 1;
|
||
int itx_freq = (int)tx_freq;
|
||
if (f_static_tx) itx_freq = (int)s_v_disp_tx_frq; //2.16 ft8 static tx
|
||
for (int i = 0; i < cl; ++i)
|
||
{
|
||
QString TXt = "TX";
|
||
if (cl > 1)
|
||
TXt.append(QString("%1").arg(nslt));
|
||
//"Time"<<"dB"<<"DT"<<"DF From TX"<<"Message"<<"Type"<<"Qual"<<"Freq"; //7 Flags ft8
|
||
ltxx<<tx_time_ss<<TXt<<""<<""<<lmam.at(i)<<""<<""<<QString("%1").arg(itx_freq);
|
||
TDecodeList2->InsertItem_hv(ltxx,true,true);
|
||
ltxx.clear();
|
||
nslt++;
|
||
if (s_mod_ident==11)
|
||
itx_freq+=60;//1.70 60Hz interval
|
||
else if (s_mod_ident==13)
|
||
itx_freq+=100;//1.70 100Hz interval
|
||
}
|
||
}
|
||
}
|
||
else if (s_mod_ident==7 || s_mod_ident==8 || s_mod_ident==9)//jt65
|
||
{
|
||
TDecodeList2->SetBackColorTxQsy(false);//2.46
|
||
//"Time"<<"Sync"<<"dB"<<"DT"<<"DF"<<"W"<<"Message"<<"D Inf"<<"Flags"<<"Freq"; //jt65 9 Flags
|
||
ltxx<<tx_time_ss<<""<<"TX"<<""<<""<<""<<str<<""<<""<<QString("%1").arg((int)tx_freq);
|
||
TDecodeList2->InsertItem_hv(ltxx,true,true);
|
||
}
|
||
else if (s_mod_ident==0 || s_mod_ident==12)//2.46 MSK
|
||
{
|
||
//"Time"<<"T"<<"Width"<<"dB"<<"Rpt"<<"DF"<<"Message"<<"Navg"<<"Bit err"<<"Eye"<<"Freq";//10 flags MSK
|
||
if (tx_freq==-10.0)//ID QSY = -10.0
|
||
{
|
||
TDecodeList2->SetBackColorTxQsy(true);//2.46
|
||
if (s_mod_ident==0)
|
||
{
|
||
lcqq<<""<<""<<""<<"CQ"<<""<<""<<_stcq_<<""<<""<<""<<"";
|
||
ltxx<<""<<""<<""<<"QSY"<<""<<""<<str<<""<<""<<""<<"";
|
||
}
|
||
if (s_mod_ident==12)
|
||
{
|
||
lcqq<<""<<""<<""<<""<<"CQ"<<""<<_stcq_<<""<<""<<""<<"";
|
||
ltxx<<""<<""<<""<<""<<"QSY"<<""<<str<<""<<""<<""<<"";
|
||
}
|
||
TDecodeList2->InsertItem_hv(lcqq,true,true);
|
||
TDecodeList2->InsertItem_hv(ltxx,true,true);
|
||
}
|
||
else
|
||
{
|
||
TDecodeList2->SetBackColorTxQsy(false);//2.46
|
||
if (s_mod_ident==0) ltxx<<tx_time_ss<<""<<""<<"TX"<<""<<""<<str<<""<<""<<""<<"1500";
|
||
if (s_mod_ident==12) ltxx<<tx_time_ss<<""<<""<<""<<"TX"<<""<<str<<""<<""<<""<<"1500";
|
||
TDecodeList2->InsertItem_hv(ltxx,true,true);
|
||
}
|
||
}
|
||
else if (allq65)//q65 no have QSY, but have static_tx
|
||
{
|
||
int itx_freq = (int)tx_freq;
|
||
if (f_static_tx) itx_freq = (int)s_v_disp_tx_frq;
|
||
TDecodeList2->SetBackColorTxQsy(false);
|
||
ltxx<<tx_time_ss<<"TX"<<""<<""<<str<<""<<""<<QString("%1").arg(itx_freq);
|
||
TDecodeList2->InsertItem_hv(ltxx,true,true);
|
||
}
|
||
TDecodeList2->SetBackColor(true);
|
||
}
|
||
}
|
||
void Main_Ms::SetFilePlay()//hv inportent start play only from here
|
||
{
|
||
//QTime ctt = QTime::currentTime();
|
||
//qDebug()<<"1 SetFilePlay()....................";
|
||
//TMsPlayerHV->setfile_play(q-strdup(qPrintable(s_msg)),true,s_mod_ident);//2.47 s_gen removed
|
||
|
||
static char c_msg_sent[230];//2.50 same is in genmesage_ms.cpp
|
||
strncpy(c_msg_sent,s_msg.toUtf8(),220);
|
||
TMsPlayerHV->setfile_play(c_msg_sent,true,s_mod_ident,period_time_sec); //qDebug()<<"1=="<<strlen(c_msg_sent);
|
||
|
||
if (!s_msg.contains("@"))
|
||
THvTxW->SetStartQsoDateTime(); //EmitForStartQsoDateTime();
|
||
|
||
if (f_tune && s_msg!="@TUNE")//smenia cweta na butona kogato ne e tune
|
||
{
|
||
f_tune = false;
|
||
pb_tune->setStyleSheet("QPushButton{background-color :palette(Button);}");
|
||
}
|
||
}
|
||
void Main_Ms::TxMessage(QString msg,bool immediately)//2.47 s_gen removed
|
||
{
|
||
s_msg = msg.toUpper(); //qDebug()<<imidiatly<<msg; //2.47 stot s_imidi = immediately;
|
||
if (immediately)
|
||
{
|
||
if (!f_auto_on) //da ne triperi tx-rx pri auto_on vavno
|
||
{
|
||
StopRx();
|
||
SetRigTxRx(true); //qDebug()<<"UP_TX="<<QTime::currentTime().toString("ss:zzz");
|
||
SetFilePlay();
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::TxMessageS(QString msg,bool immediately,bool iftximid)//2.47
|
||
{
|
||
if (f_tx_busy && iftximid) TxMessage(msg,true);
|
||
else TxMessage(msg,immediately);
|
||
}
|
||
void Main_Ms::SetFileToDisplay()// from player file open
|
||
{
|
||
if (TMsCore->GetSta_Sto())
|
||
{
|
||
StopRx();
|
||
}
|
||
MainDisplay->ReciveClarDisplay();
|
||
}
|
||
void Main_Ms::Tune()
|
||
{
|
||
if (!f_auto_on)//da ne tragva tune pri auto on v perioda za slu6ane //na rx i si period za slu6ane f_auto_on=true
|
||
{
|
||
if (f_tune)
|
||
{
|
||
if (!THvTxW->GetAutoIsOn())
|
||
{
|
||
f_tx_to_rx = true; //qDebug()<<"4Stop TX Start RX";
|
||
}
|
||
else
|
||
{
|
||
//if auto on period for tx -> tune off and send current mesg
|
||
f_tune = false;
|
||
pb_tune->setStyleSheet("QPushButton{background-color :palette(Button);}");
|
||
THvTxW->GetCurrentMsg();
|
||
TxMessage(s_msg,true);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
f_tune = true;
|
||
if (dsty) pb_tune->setStyleSheet("QPushButton{background-color :rgb(170, 10, 10);}");
|
||
else pb_tune->setStyleSheet("QPushButton{background-color :rgb(255, 110, 110);}");//150, 150, 255
|
||
TxMessage("@TUNE",true);
|
||
}
|
||
}
|
||
}
|
||
void Main_Ms::SetUdpCmdStop(bool)// f
|
||
{
|
||
StopTxGlobal();
|
||
}
|
||
void Main_Ms::StopTxGlobal()
|
||
{
|
||
THvTxW->StopAuto();
|
||
f_tx_to_rx = true; //qDebug()<<"5Stop TX Start RX";
|
||
}
|
||
void Main_Ms::StartRxGlobal()
|
||
{
|
||
global_start_moni = true;
|
||
if (dsty) pb_start_rx->setStyleSheet("QPushButton{background-color :rgb(64, 150, 0);}");
|
||
else pb_start_rx->setStyleSheet("QPushButton{background-color :rgb(50, 240, 50);}");//150, 150, 255
|
||
|
||
StartRx();
|
||
}
|
||
void Main_Ms::StartRx()
|
||
{
|
||
//qDebug()<<"PLAY=====";
|
||
//TMsCore->FastResetSound();
|
||
if (!TMsCore->GetSta_Sto() && global_start_moni)
|
||
{
|
||
//qDebug()<<"1PLAY=====";
|
||
|
||
//if(s_mod_ident==0) // msk144 & msk40 za po natatak ako ima oplakwane 1.31
|
||
//TDecoderMs->ResetCalsHashFileOpen();
|
||
|
||
//f_open_file = false;
|
||
//qDebug()<<"startppp";
|
||
TMsCore->SetStr_Sto(true);
|
||
TPicW->SetRxMon(true);
|
||
QDateTime utc_t = getDateTime();
|
||
MainDisplay->SetSyncPosition(time_pos_1period,getHHMin(),utc_t.toString("yyMMdd"),s_f_dec50);//true vinagi e decodirano
|
||
//qDebug()<<"FFFFFF="<<time_pos_1period<<getHHMin()<<s_f_dec50;
|
||
}
|
||
}
|
||
void Main_Ms::StopRx()
|
||
{
|
||
TMsCore->SetStr_Sto(false);
|
||
TPicW->SetRxMon(false);
|
||
}
|
||
void Main_Ms::StopRxGlobal()
|
||
{
|
||
StopRx();
|
||
global_start_moni = false;
|
||
pb_start_rx->setStyleSheet("QPushButton{background-color :palette(Button);}");
|
||
}
|
||
/////////////////////////////////////////////////////
|
||
/*
|
||
void Main_Ms::SetAutoDecodeAll()
|
||
{
|
||
cb_auto_decode_all->setChecked(auto_decode_all[s_mod_ident]);
|
||
}
|
||
*/
|
||
void Main_Ms::CbSetAutoDecodeAll(bool f)
|
||
{
|
||
if (f && (s_mod_ident==0 || s_mod_ident==12))//msk144 + msk40
|
||
cb_rtd_decode->setChecked(false);
|
||
|
||
auto_decode_all[s_mod_ident] = f;
|
||
|
||
MainDisplay->SetAutoDecodeAll(f);
|
||
SecondDisplay->SetAutoDecodeAll(f);
|
||
}
|
||
void Main_Ms::CbSetStartStopRtd(bool f)
|
||
{
|
||
if (s_mod_ident==0 || s_mod_ident==12)//msk144 + msk40
|
||
{
|
||
MainDisplay->SetStartStopRtd(f);
|
||
SecondDisplay->SetStartStopRtd(f);//v1.29 decode to end
|
||
if (f) cb_auto_decode_all->setChecked(false);
|
||
}
|
||
}
|
||
void Main_Ms::SetDecodeBusy(bool f,int dec_state)//dec_state no=0 dec=1 rtddec=2
|
||
{
|
||
f_decoder_busy = f;// for drag drop funktion
|
||
|
||
TMsCore->SetDecBusy(f_decoder_busy);
|
||
|
||
TPicW->SetDecode(dec_state);
|
||
|
||
if ( dec_state == 0 ) //|| dec_state==2
|
||
{
|
||
f_de_active = false;//special flag not same as f_decoder_busy
|
||
SB_VDispSpeed->setReadOnly(false);
|
||
SB_VDispStartFreq->setReadOnly(false);
|
||
SB_VDispBandwidth->setReadOnly(false);//setReadOnly setDisabled
|
||
}
|
||
else
|
||
{
|
||
f_de_active = true;//special flag not same as f_decoder_busy
|
||
SB_VDispSpeed->setReadOnly(true);
|
||
SB_VDispStartFreq->setReadOnly(true);
|
||
SB_VDispBandwidth->setReadOnly(true);
|
||
}
|
||
//2.69
|
||
SB_VDispSpeed->findChild<QLineEdit*>()->setReadOnly(true);
|
||
SB_VDispStartFreq->findChild<QLineEdit*>()->setReadOnly(true);
|
||
SB_VDispBandwidth->findChild<QLineEdit*>()->setReadOnly(true);
|
||
|
||
ModeMenuStatRefresh(f_de_active);
|
||
//THvTxW->SetDecode(f_de_active);
|
||
}
|
||
void Main_Ms::SetTwoDecList(bool f)
|
||
{
|
||
two_dec_list_all[s_mod_ident] = f;
|
||
SetModeDecodeListS(f);
|
||
}
|
||
void Main_Ms::SetModeDecodeListS(bool f)
|
||
{
|
||
ac_two_dec_list->setChecked(f);
|
||
TDecodeList1->SetMode(s_mod_ident,f);
|
||
TDecodeList2->SetMode(s_mod_ident,f);
|
||
if ((s_mod_ident==0 || s_mod_ident==12 || s_mod_ident==7 ||s_mod_ident==8 || s_mod_ident==9 ||
|
||
s_mod_ident==11 || s_mod_ident==13 || allq65) && f)//jt65 ft8 ft4 q65
|
||
{
|
||
pb_clar_list1->setText(tr("CLR MSG"));
|
||
TDecodeList2->setHidden(false);
|
||
pb_clar_list2->setHidden(false);
|
||
}
|
||
else
|
||
{
|
||
TDecodeList2->setHidden(true);
|
||
pb_clar_list2->setHidden(true);
|
||
pb_clar_list1->setText(tr("CLEAR MESSAGES"));
|
||
}
|
||
}
|
||
void Main_Ms::ModBtSwClicked(int i)
|
||
{
|
||
if (i == 220)
|
||
{
|
||
TDecodeList1->HideShowWfTxRefreshList();
|
||
TDecodeList2->HideShowWfTxRefreshList(); //qDebug()<<i;
|
||
return;
|
||
}
|
||
if (i == s_mod_ident) return;
|
||
|
||
//StopRxGlobal(); // is not a good idea
|
||
//if (!TMsPlayerHV->Is_RealStop() || THvTxW->GetAutoIsOn()) StopTxGlobal();
|
||
|
||
rb_mode[i]->setChecked(true);
|
||
}
|
||
void Main_Ms::RbThrSetEnabled(bool f)
|
||
{
|
||
for (int i = 1; i < 6; ++i)
|
||
{
|
||
if (f)
|
||
{
|
||
if (cthr<i+1) rb_thr[i]->setEnabled(false);
|
||
else rb_thr[i]->setEnabled(true);
|
||
}
|
||
else rb_thr[i]->setEnabled(false);
|
||
}
|
||
}
|
||
void Main_Ms::ModeChanged(bool fg)
|
||
{
|
||
//qDebug()<<"fdsgfd"<<fg;
|
||
if (!fg) return;//2.33
|
||
for (int i = 0; i < 3; ++i) rb_dec_depth[i]->setEnabled(false);
|
||
RbThrSetEnabled(false);
|
||
|
||
cb_3intFt_d->setEnabled(false); //2.39 remm
|
||
|
||
for (int i = 0; i < 4; ++i) cb_msk144rxequal_[i]->setEnabled(false);
|
||
|
||
cb_rtd_decode->setEnabled(false);
|
||
MainDisplay->SetStartStopRtd(false);
|
||
SecondDisplay->SetStartStopRtd(false);//v1.29 decode to end
|
||
|
||
ac_aggressive->setEnabled(false);
|
||
cb_vhf_uhf_decode_fac->setEnabled(false);
|
||
cb_avg_decode->setEnabled(false);
|
||
cb_auto_clr_avg_afdec->setEnabled(false);
|
||
cb_deep_search_decode->setEnabled(false);
|
||
pb_clear_avg65->setHidden(true);
|
||
pb_clear_avgPi4->setHidden(true);
|
||
ac_two_dec_list->setEnabled(false);
|
||
ac_2click_list_autu_on->setEnabled(false);
|
||
//ac_start_qso_from_tx2_or_tx1->setEnabled(false);//2.61 in SetMactos
|
||
Direct_log_qso->setEnabled(false);
|
||
Prompt_log_qso->setEnabled(false);
|
||
cb_ap_decode->setEnabled(false);
|
||
pb_dec_65->setHidden(true);
|
||
Multi_answer_mod->setEnabled(false);
|
||
Multi_answer_mod_std->setEnabled(false);
|
||
ac_new_dec_clr_msg_list->setEnabled(false);
|
||
ac_click_on_call_show_cty->setEnabled(false);
|
||
ac_ft_df1500->setEnabled(false);
|
||
ac_filter_list->setEnabled(false);
|
||
ac_areset_qso->setEnabled(false);
|
||
allq65 = false;
|
||
cb_1_dec_sig_q65->setEnabled(false);
|
||
cb_max_drift->setEnabled(false);
|
||
cb_dec_aft_eme_delay->setEnabled(false);
|
||
pb_clear_avgQ65->setHidden(true);
|
||
FilterDialog->SetHidFLBtOnOff(true);
|
||
|
||
if (rb_mode[12]->isChecked())
|
||
{ //MSKMS ??? cps.
|
||
|
||
s_mod_ident = 12;
|
||
MainDisplay->setArrayInPxel(12);//12 26 v1.20 kakwo prostranstwo da decodira
|
||
SecondDisplay->setArrayInPxel(12);//12 26 kakwo prostranstwo da decodira
|
||
|
||
for (int i = 0; i < 3; ++i) rb_dec_depth[i]->setEnabled(true);
|
||
|
||
for (int i = 0; i < 4; ++i) cb_msk144rxequal_[i]->setEnabled(true);
|
||
|
||
cb_rtd_decode->setEnabled(true);
|
||
MainDisplay->SetStartStopRtd(cb_rtd_decode->isChecked());
|
||
SecondDisplay->SetStartStopRtd(cb_rtd_decode->isChecked());//v1.29 decode to end
|
||
Direct_log_qso->setEnabled(true);
|
||
Prompt_log_qso->setEnabled(true);
|
||
ac_2click_list_autu_on->setEnabled(true);
|
||
//ac_start_qso_from_tx2_or_tx1->setEnabled(true);//2.61 in SetMactos
|
||
ac_two_dec_list->setEnabled(true);
|
||
ac_click_on_call_show_cty->setEnabled(true);
|
||
}
|
||
if (rb_mode[0]->isChecked())
|
||
{ //MSK144 ??? cps.
|
||
|
||
s_mod_ident = 0;
|
||
MainDisplay->setArrayInPxel(12);//12 26 v1.20 kakwo prostranstwo da decodira
|
||
SecondDisplay->setArrayInPxel(12);//12 26 kakwo prostranstwo da decodira
|
||
|
||
for (int i = 0; i < 3; ++i) rb_dec_depth[i]->setEnabled(true);
|
||
|
||
for (int i = 0; i < 4; ++i) cb_msk144rxequal_[i]->setEnabled(true);
|
||
|
||
cb_rtd_decode->setEnabled(true);
|
||
MainDisplay->SetStartStopRtd(cb_rtd_decode->isChecked());
|
||
SecondDisplay->SetStartStopRtd(cb_rtd_decode->isChecked());//v1.29 decode to end
|
||
Direct_log_qso->setEnabled(true);
|
||
Prompt_log_qso->setEnabled(true);
|
||
ac_2click_list_autu_on->setEnabled(true);
|
||
//ac_start_qso_from_tx2_or_tx1->setEnabled(true);//2.61 in SetMactos
|
||
ac_two_dec_list->setEnabled(true);
|
||
ac_areset_qso->setEnabled(true);
|
||
ac_click_on_call_show_cty->setEnabled(true);
|
||
}
|
||
if (rb_mode[1]->isChecked())
|
||
{ //JTMS 197 cps.
|
||
s_mod_ident = 1;
|
||
MainDisplay->setArrayInPxel(14);// kakwo prostranstwo da decodira
|
||
SecondDisplay->setArrayInPxel(14);// kakwo prostranstwo da decodira
|
||
}
|
||
if (rb_mode[2]->isChecked())
|
||
{ //FSK441 147 cps
|
||
s_mod_ident = 2;
|
||
MainDisplay->setArrayInPxel(16);// kakwo prostranstwo da decodira
|
||
SecondDisplay->setArrayInPxel(16);// kakwo prostranstwo da decodira
|
||
}
|
||
if (rb_mode[3]->isChecked())
|
||
{ //FSK315 105 cps
|
||
s_mod_ident = 3;
|
||
MainDisplay->setArrayInPxel(20);// kakwo prostranstwo da decodira
|
||
SecondDisplay->setArrayInPxel(20);// kakwo prostranstwo da decodira
|
||
}
|
||
if (rb_mode[4]->isChecked())
|
||
{ // ISCAT-A 16.15 cps.
|
||
s_mod_ident = 4;
|
||
MainDisplay->setArrayInPxel(68);//68 v1.16 80 kakwo prostranstwo da decodira
|
||
SecondDisplay->setArrayInPxel(68);//80 kakwo prostranstwo da decodira
|
||
}
|
||
if (rb_mode[5]->isChecked())
|
||
{ //ISCAT-B 32.3 cps.
|
||
s_mod_ident = 5;
|
||
MainDisplay->setArrayInPxel(50);//50 1.32 60 kakwo prostranstwo da decodira
|
||
SecondDisplay->setArrayInPxel(50);//50 1.32 60 kakwo prostranstwo da decodira
|
||
}
|
||
if (rb_mode[6]->isChecked())
|
||
{ //JT6M 14.4 cps.
|
||
s_mod_ident = 6;
|
||
MainDisplay->setArrayInPxel(53); // 1.39=53 fult->1.35=12 ok 53->v1.15 tested 52-75 kakwo prostranstwo da decodira
|
||
SecondDisplay->setArrayInPxel(53);//1.39=53 fult->1.35=12 53->v1.15 tested 52-75 kakwo prostranstwo da decodira
|
||
}
|
||
if (rb_mode[7]->isChecked())
|
||
{ // cps.
|
||
s_mod_ident = 7;
|
||
MainDisplay->setArrayInPxel(50); //1.40 no used in jt65->50
|
||
SecondDisplay->setArrayInPxel(50);//1.40 no used in jt65->50
|
||
|
||
ac_aggressive->setEnabled(true);
|
||
cb_vhf_uhf_decode_fac->setEnabled(true);
|
||
cb_avg_decode->setEnabled(true);
|
||
cb_deep_search_decode->setEnabled(true);
|
||
pb_clear_avg65->setHidden(false);
|
||
pb_dec_65->setHidden(false);
|
||
|
||
//1.57=!!!
|
||
cb_ap_decode->setEnabled(true);
|
||
ac_two_dec_list->setEnabled(true);
|
||
ac_2click_list_autu_on->setEnabled(true);
|
||
}
|
||
if (rb_mode[8]->isChecked())
|
||
{ // cps.
|
||
s_mod_ident = 8;
|
||
MainDisplay->setArrayInPxel(50); //1.40 no used in jt65->50
|
||
SecondDisplay->setArrayInPxel(50);//1.40 no used in jt65->50
|
||
|
||
ac_aggressive->setEnabled(true);
|
||
cb_vhf_uhf_decode_fac->setEnabled(true);
|
||
cb_avg_decode->setEnabled(true);
|
||
cb_deep_search_decode->setEnabled(true);
|
||
pb_clear_avg65->setHidden(false);
|
||
pb_dec_65->setHidden(false);
|
||
|
||
//1.57=!!!
|
||
cb_ap_decode->setEnabled(true);
|
||
ac_two_dec_list->setEnabled(true);
|
||
ac_2click_list_autu_on->setEnabled(true);
|
||
}
|
||
if (rb_mode[9]->isChecked())
|
||
{ // cps.
|
||
s_mod_ident = 9;
|
||
MainDisplay->setArrayInPxel(50); //1.40 no used in jt65->50
|
||
SecondDisplay->setArrayInPxel(50);//1.40 no used in jt65->50
|
||
|
||
ac_aggressive->setEnabled(true);
|
||
cb_vhf_uhf_decode_fac->setEnabled(true);
|
||
cb_avg_decode->setEnabled(true);
|
||
cb_deep_search_decode->setEnabled(true);
|
||
pb_clear_avg65->setHidden(false);
|
||
pb_dec_65->setHidden(false);
|
||
|
||
//1.57=!!!
|
||
cb_ap_decode->setEnabled(true);
|
||
ac_two_dec_list->setEnabled(true);
|
||
ac_2click_list_autu_on->setEnabled(true);
|
||
}
|
||
if (rb_mode[10]->isChecked())
|
||
{ // cps.
|
||
s_mod_ident = 10;
|
||
MainDisplay->setArrayInPxel(50); //1.40 no used in pi4
|
||
SecondDisplay->setArrayInPxel(50);//1.40 no used in pi4
|
||
cb_avg_decode->setEnabled(false);
|
||
pb_clear_avgPi4->setHidden(false);
|
||
}
|
||
if (rb_mode[11]->isChecked())
|
||
{ // cps.
|
||
s_mod_ident = 11;
|
||
MainDisplay->setArrayInPxel(50); //1.40 no used in ft8
|
||
SecondDisplay->setArrayInPxel(50);//1.40 no used in ft8
|
||
|
||
for (int i = 0; i < 3; ++i) rb_dec_depth[i]->setEnabled(true);
|
||
RbThrSetEnabled(true);
|
||
|
||
cb_3intFt_d->setEnabled(true); //2.39 remm
|
||
|
||
ac_two_dec_list->setEnabled(true);
|
||
Direct_log_qso->setEnabled(true);
|
||
Prompt_log_qso->setEnabled(true);
|
||
cb_ap_decode->setEnabled(true);
|
||
ac_2click_list_autu_on->setEnabled(true);
|
||
if (!g_block_mam)
|
||
{
|
||
Multi_answer_mod->setEnabled(true);
|
||
Multi_answer_mod_std->setEnabled(true);
|
||
}
|
||
//ac_start_qso_from_tx2_or_tx1->setEnabled(true);//2.61 in SetMactos
|
||
ac_new_dec_clr_msg_list->setEnabled(true);
|
||
ac_click_on_call_show_cty->setEnabled(true);
|
||
ac_ft_df1500->setEnabled(true);
|
||
ac_filter_list->setEnabled(true);
|
||
ac_areset_qso->setEnabled(true);
|
||
FilterDialog->SetHidFLBtOnOff(false);
|
||
}
|
||
if (rb_mode[13]->isChecked())
|
||
{ // cps.
|
||
s_mod_ident = 13;
|
||
MainDisplay->setArrayInPxel(50); //1.40 no used in ft4
|
||
SecondDisplay->setArrayInPxel(50);//1.40 no used in ft4
|
||
|
||
for (int i = 0; i < 3; ++i) rb_dec_depth[i]->setEnabled(true);
|
||
RbThrSetEnabled(true);
|
||
|
||
ac_two_dec_list->setEnabled(true);
|
||
Direct_log_qso->setEnabled(true);
|
||
Prompt_log_qso->setEnabled(true);
|
||
cb_ap_decode->setEnabled(true);
|
||
ac_2click_list_autu_on->setEnabled(true);
|
||
if (!g_block_mam)
|
||
{
|
||
Multi_answer_mod->setEnabled(true);
|
||
Multi_answer_mod_std->setEnabled(true);
|
||
}
|
||
//ac_start_qso_from_tx2_or_tx1->setEnabled(true);//2.61 in SetMactos
|
||
ac_new_dec_clr_msg_list->setEnabled(true);
|
||
ac_click_on_call_show_cty->setEnabled(true);
|
||
ac_ft_df1500->setEnabled(true);
|
||
ac_filter_list->setEnabled(true);
|
||
ac_areset_qso->setEnabled(true);
|
||
FilterDialog->SetHidFLBtOnOff(false);
|
||
}
|
||
if (rb_mode[14]->isChecked() || rb_mode[15]->isChecked() || rb_mode[16]->isChecked() || rb_mode[17]->isChecked())
|
||
{ // cps.
|
||
allq65 = true;
|
||
if (rb_mode[14]->isChecked()) s_mod_ident = 14;
|
||
if (rb_mode[15]->isChecked()) s_mod_ident = 15;
|
||
if (rb_mode[16]->isChecked()) s_mod_ident = 16;
|
||
if (rb_mode[17]->isChecked()) s_mod_ident = 17;
|
||
|
||
MainDisplay->setArrayInPxel(50); //1.40 no used in ft4
|
||
SecondDisplay->setArrayInPxel(50);//1.40 no used in ft4
|
||
|
||
for (int i = 0; i < 3; ++i) rb_dec_depth[i]->setEnabled(true);
|
||
cb_auto_clr_avg_afdec->setEnabled(true);
|
||
cb_avg_decode->setEnabled(true);
|
||
pb_clear_avgQ65->setHidden(false);
|
||
|
||
ac_two_dec_list->setEnabled(true);
|
||
Direct_log_qso->setEnabled(true);
|
||
Prompt_log_qso->setEnabled(true);
|
||
cb_ap_decode->setEnabled(true);
|
||
ac_2click_list_autu_on->setEnabled(true);
|
||
if (!g_block_mam)
|
||
{
|
||
Multi_answer_mod->setEnabled(true);
|
||
Multi_answer_mod_std->setEnabled(true);
|
||
}
|
||
//ac_start_qso_from_tx2_or_tx1->setEnabled(true);//2.61 in SetMactos
|
||
ac_new_dec_clr_msg_list->setEnabled(true);
|
||
ac_click_on_call_show_cty->setEnabled(true);
|
||
//ac_ft_df1500->setEnabled(true);
|
||
ac_filter_list->setEnabled(true);
|
||
ac_areset_qso->setEnabled(true);
|
||
}
|
||
rb_thr[thr_all[s_mod_ident]-1]->setChecked(true); //2.69
|
||
THvRigControl->SetMode(s_mod_ident);//2.16
|
||
cb_ap_decode->setChecked(decoder_ap_all[s_mod_ident]);
|
||
SetDecodeDeeptFromMod(s_mod_ident);
|
||
SB_VDispSpeed->setValue(s_vdisp_all_speed[s_mod_ident]);
|
||
|
||
if (s_mod_ident == 10)
|
||
pb_tune->setEnabled(false);
|
||
else
|
||
pb_tune->setEnabled(true);
|
||
|
||
//SetAutoDecodeAll();
|
||
cb_auto_decode_all->setChecked(auto_decode_all[s_mod_ident]);
|
||
|
||
if (dsty) l_mode->setStyleSheet(ModeColorStr(s_mod_ident)+" color: rgb(0, 0, 0)}");
|
||
else l_mode->setStyleSheet(ModeColorStr(s_mod_ident)+"}");
|
||
l_mode->setText(ModeStr(s_mod_ident));
|
||
|
||
TMsPlayerHV->SetModeForWavSaves(s_mod_ident);
|
||
|
||
//MainDisplay->SetMode(s_mod_ident);//2.53 need to be here
|
||
//SecondDisplay->SetMode(s_mod_ident);//2.53 need to be here
|
||
THvTxW->ModeChanget(s_mod_ident,vhf_uhf_decode_fac_all[s_mod_ident]);
|
||
//THvMakros->ModeChanget(s_mod_ident);//2.33
|
||
|
||
MainDisplay->SetMode(s_mod_ident);//2.41 need to be here
|
||
SecondDisplay->SetMode(s_mod_ident);//2.41 need to be here
|
||
|
||
if (s_mod_ident<7 || s_mod_ident==12)// fast msk144-to-jt6m modes vazno da e tuk sled MainDisplay SecondDisplay
|
||
{
|
||
SetDispVH(false);
|
||
for (int i = 0; i < 5; ++i) cb_max65_cand[i]->setEnabled(false);
|
||
zero_df_scale_m->setEnabled(false);
|
||
vd_mouse_lines_draw->setEnabled(false);
|
||
}
|
||
else if (s_mod_ident==10) //pi4
|
||
{
|
||
SetDispVH(true);
|
||
for (int i = 0; i < 5; ++i) cb_max65_cand[i]->setEnabled(false);
|
||
zero_df_scale_m->setEnabled(false);
|
||
vd_mouse_lines_draw->setEnabled(false);
|
||
}
|
||
else if (s_mod_ident==11) // ft8
|
||
{
|
||
SetDispVH(true);
|
||
for (int i = 0; i < 5; ++i) cb_max65_cand[i]->setEnabled(false);
|
||
zero_df_scale_m->setEnabled(false);
|
||
vd_mouse_lines_draw->setEnabled(false);
|
||
}
|
||
else if (s_mod_ident==13) // ft4
|
||
{
|
||
SetDispVH(true);
|
||
for (int i = 0; i < 5; ++i) cb_max65_cand[i]->setEnabled(false);
|
||
zero_df_scale_m->setEnabled(false);
|
||
vd_mouse_lines_draw->setEnabled(false);
|
||
}
|
||
else if (allq65) // q65
|
||
{
|
||
SetDispVH(true);
|
||
for (int i = 0; i < 5; ++i) cb_max65_cand[i]->setEnabled(false);
|
||
zero_df_scale_m->setEnabled(false);
|
||
vd_mouse_lines_draw->setEnabled(false);
|
||
cb_1_dec_sig_q65->setEnabled(true);
|
||
cb_dec_aft_eme_delay->setEnabled(true);
|
||
cb_max_drift->setEnabled(true);
|
||
}
|
||
else
|
||
{
|
||
SetDispVH(true);
|
||
for (int i = 0; i < 5; ++i) cb_max65_cand[i]->setEnabled(true);
|
||
zero_df_scale_m->setEnabled(true);
|
||
vd_mouse_lines_draw->setEnabled(true);
|
||
}
|
||
|
||
TMsCore->SetMode(s_mod_ident);
|
||
TDecoderMs->setMode(s_mod_ident);
|
||
//THvMakros->ModeChanget(s_mod_ident);//stop 2.33
|
||
//THvTxW->ModeChanget(s_mod_ident,vhf_uhf_decode_fac_all[s_mod_ident]);//stop 2.33
|
||
cb_vhf_uhf_decode_fac->setChecked(vhf_uhf_decode_fac_all[s_mod_ident]);
|
||
cb_avg_decode->setChecked(avg_dec_all[s_mod_ident]);
|
||
cb_deep_search_decode->setChecked(deep_search_dec_all[s_mod_ident]);
|
||
SetModeDecodeListS(two_dec_list_all[s_mod_ident]);
|
||
SetMaxCandidats65Mod(s_mod_ident);
|
||
//ModeMenuStatRefresh(f_de_active);//2.21 no needet for the monemt small exception
|
||
|
||
if (!TMsPlayerHV->Is_RealStop())
|
||
SetFilePlay();
|
||
|
||
FileNameChengedD1();
|
||
FileNameChengedD2();
|
||
RefreshCbCfm73();
|
||
TSettingsMs->SetMode(s_mod_ident);//tci
|
||
}
|
||
void Main_Ms::PaletteChanged(bool) //2.65
|
||
{
|
||
static int id0_only_one = 1;
|
||
for (int i = 0; i < 9; ++i)
|
||
{
|
||
if (rb_palette[i]->isChecked())
|
||
{
|
||
if (id0_only_one == i) break;
|
||
id0_only_one = i;
|
||
MainDisplay->SetPalette(i);
|
||
SecondDisplay->SetPalette(i);
|
||
}
|
||
}
|
||
SaveSettings();
|
||
}
|
||
void Main_Ms::InDevChanged(QString dev,int latency, int card_buffer_polls,int channel,int disp_refresh, int lm_refresh)
|
||
{/* QString rate, */
|
||
TMsCore->SetupSettings(dev,latency,card_buffer_polls,channel);//rate,
|
||
MainDisplay->SetDisplayRefr(disp_refresh);
|
||
THvSMeter_H->SetLMRefr(lm_refresh);
|
||
SaveSettings();
|
||
}
|
||
bool Main_Ms::isFindId(QString id,QString line,QString &res)
|
||
{
|
||
bool fres = false;
|
||
QRegExp rx;
|
||
rx.setPattern(id+"=\"?([^\"]*)\"?");
|
||
if (rx.indexIn(line) != -1)
|
||
{
|
||
res = rx.cap(1);
|
||
fres = true;
|
||
}
|
||
return fres;
|
||
}
|
||
void Main_Ms::SetQActionCb(QString s, bool idp, QAction *ac)//idp priority of procedure
|
||
{
|
||
if (s.isEmpty()) return;
|
||
if (idp)
|
||
{
|
||
if (s=="1")
|
||
ac->setChecked(true);
|
||
else
|
||
ac->setChecked(false);
|
||
}
|
||
else
|
||
{
|
||
if (s=="0")
|
||
ac->setChecked(false);
|
||
else
|
||
ac->setChecked(true);
|
||
}
|
||
}
|
||
void Main_Ms::Read_Settings(QString path)
|
||
{
|
||
const int c_st_id = 105;//92 89
|
||
//dopalva se tuk v kraia
|
||
QString st_id[c_st_id]=
|
||
{
|
||
"default_w","default_h","default_device_alsa","default_sample_rate","default_card_latency",
|
||
"default_card_buffer_polls","default_in_channel","default_palette","default_scan_refresh",
|
||
"default_lm_refresh","out_dev","default_out_buf","mod_identifaer","com_port_name","com_port_baud",
|
||
"com_port_ptt_rts_dtr","default_rig_name","default_ptt_cat_type","default_read_data_rts_on",
|
||
"com_port_name2","com_port_baud2","com_port_ptt_rts_dtr2","off_set_frq_to_rig","tune_display",
|
||
"tune_display_cont","auto_decode_all","signdb_all","getdftol_all","defaut_zap",
|
||
"default_in_lev_cor","default_out_lev_cor","default_period_time_all","default_txt_mark",
|
||
"default_band","default_mon_startup","default_rtd","def_dec_depth","def_sh_op_all",
|
||
"def_2d1d","def_msk144rxequal","def_swl_op","def_vhf_uhf_decode_fac","def_avg_decode",
|
||
"def_vdisp_speed","def_vdisp_start_freq","def_vdisp_band_width","def_astro_data",
|
||
"def_max65_cand","def_zero_df_scale","def_cust_pall","auto_seq_all","lock_txrx_all",
|
||
"prompt_log_qso","info_dupe_qso","log_qso_startdt_eq_enddt","tx_watchdog_parms",
|
||
"def_ap_decode","def_deep_search_decode","def_vd_mouse_lines_draw","def_desk_size_wh",
|
||
"def_desk_pos_xy","def_flat_vdsp","def_recognize_tp1","def_recognize_tp2","def_aggressive_lev",
|
||
"def_two_dec_list","def_2click_list_autu_on","offset_trsv_rig_parms","multi_answer_mod",
|
||
"def_gbk_t","start_qso_from_tx2_or_tx1","def_app_fonts","default_txt_mark_color",
|
||
"new_dec_clr_msg_list","vd_rx_tx_freq","static_tx_parms","mod_set_frq_to_rig","direct_log_qso",
|
||
"click_on_call_show_cty","def_desk_pos_help_xy","def_desk_pos_astr_xy","def_desk_pos_logw_xywh",
|
||
"net_rig_srv_port","def_confirm73","def_thr_lev","off_auto_comments","def_df1500_Ft","def_dec_3int_Ft",
|
||
"def_filter_list","def_filter_list0","def_filter_list1","def_filter_list2","def_filter_list3",
|
||
"def_filter_list4","def_filter_list5","def_adle_vdsp","def_areset_qso","def_1_dec_sig_q65",
|
||
"def_auto_clr_avg_afdec","def_dec_aft_eme_delay","def_max_drift","def_use_queue_cont","def_filter_list6",
|
||
"use_aseq_max_dist","def_mod_bt_sw"
|
||
};
|
||
|
||
QString st_res[c_st_id];
|
||
for (int i = 0; i < c_st_id; ++i)
|
||
st_res[i]="";
|
||
|
||
QDir testD(path.mid(0,path.count()-12)); // /ms_settings = 12
|
||
if (!testD.exists())
|
||
{
|
||
QMessageBox::critical(nullptr, "MSHV Critical Error",
|
||
("MSHV cannot find the required sub-directories and files.\n"
|
||
"Software is not installed properly.\n"
|
||
"Please:\n"
|
||
"1. Close MSHV.\n"
|
||
"2. Reinstall and use desktop shortcut to stat MSHV." ),
|
||
QMessageBox::Close);
|
||
}
|
||
|
||
block_save = true;
|
||
|
||
QFile file(path);
|
||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
|
||
{
|
||
rb_mode[2]->setChecked(true);//1.26 HV important set to default mode fsk441
|
||
//v1.30 inportent minimal sizes need to change if changes min sizes
|
||
int t_width = 801;
|
||
int t_height = 680;
|
||
if (screenHeight<=600)
|
||
{
|
||
if (pb_2D_1D->Button_Stop_b)//only if on one display
|
||
pb_2D_1D->ExtrnalRelease();
|
||
t_height = 530;
|
||
}
|
||
resize(t_width, t_height);
|
||
FontDialog->SetDefFont();//2.16 no settings
|
||
|
||
block_save = false;
|
||
return;
|
||
}
|
||
|
||
QTextStream in(&file);
|
||
while (!in.atEnd())
|
||
{
|
||
QString line = in.readLine();
|
||
|
||
if (line=="[ms_settings]") //continue;
|
||
line = in.readLine();//next line
|
||
|
||
for (int i = 0; i < c_st_id; ++i)
|
||
{
|
||
if (isFindId(st_id[i],line,st_res[i]))
|
||
{
|
||
//qDebug()<<i<<st_id[i];
|
||
line = in.readLine();
|
||
//qDebug()<<i<<"idfind="<<st_id[i]<<"id="<<st_res[i];
|
||
}
|
||
//else
|
||
//qDebug()<<i<<"FALSE READ -------------------------------- idfind="<<st_id[i];
|
||
}
|
||
}
|
||
file.close();
|
||
//qDebug()<<"1Time="<<ttt.elapsed();//2297 ms down 2813 ms
|
||
|
||
if (!st_res[84].isEmpty())
|
||
{
|
||
int sthr = 1;
|
||
QStringList l0 = st_res[84].split("#");
|
||
bool exeptt = false;
|
||
//remove after 1 year 16 desember 2022
|
||
if (l0.count()==1) //old variant
|
||
{
|
||
sthr = l0.at(0).toInt();
|
||
if (sthr<1) sthr = 1; //protection
|
||
if (sthr>cthr)
|
||
{
|
||
exeptt = true;
|
||
sthr = cthr;
|
||
}
|
||
if (sthr>6) sthr = 6; //protection
|
||
if (exeptt)
|
||
{
|
||
if (sthr==1)
|
||
{
|
||
thr_all[11] = 1;
|
||
thr_all[13] = 1;
|
||
}
|
||
else
|
||
{
|
||
thr_all[11] = sthr - 1;
|
||
thr_all[13] = sthr - 1;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
thr_all[11] = sthr;
|
||
thr_all[13] = sthr;
|
||
}
|
||
}
|
||
//END remove after 1 year 16 desember 2022
|
||
else
|
||
{
|
||
int cmd_0 = l0.count();
|
||
if (cmd_0>COUNT_MODE) cmd_0 = COUNT_MODE; //protection
|
||
for (int i = 0; i<cmd_0; ++i)
|
||
{
|
||
exeptt = false;
|
||
sthr = l0.at(i).toInt();
|
||
if (i!=11 && i!=13) sthr = 1;//only modes with threads
|
||
if (sthr<1) sthr = 1; //protection
|
||
if (sthr>cthr)
|
||
{
|
||
exeptt = true;
|
||
sthr = cthr;
|
||
}
|
||
if (sthr>6) sthr = 6; //protection
|
||
if (exeptt)
|
||
{
|
||
if (sthr==1) thr_all[i] = 1;
|
||
else thr_all[i] = sthr - 1;
|
||
}
|
||
else thr_all[i] = sthr;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!st_res[69].isEmpty())
|
||
{
|
||
QStringList lt=st_res[69].split("#");
|
||
if (lt.count()>2)
|
||
{
|
||
if (lt.at(0).toInt()==G_UL_K_72)
|
||
{
|
||
g_ub_m_k = true;
|
||
g_block_mam = false;
|
||
}
|
||
else g_ub_m_k = false;
|
||
if (lt.at(1).toInt()==G_UL_K_73)
|
||
{
|
||
g_ub_m_k2 = true;
|
||
THvTxW->SetGUbMK(true);
|
||
}
|
||
else g_ub_m_k2 = false;
|
||
if (lt.at(2).toInt()==G_UL_K_74) g_ub_m_k3 = true;
|
||
else g_ub_m_k3 = false;
|
||
}
|
||
}
|
||
|
||
if (!st_res[74].isEmpty()) MainDisplay->SetFreqRxTxVD(st_res[74]);//vd_rx_tx_freq
|
||
|
||
if (!st_res[68].isEmpty())
|
||
{
|
||
if (st_res[68] == "1" && !g_block_mam) Multi_answer_mod->setChecked(true);
|
||
else if (st_res[68] == "2" && !g_block_mam) Multi_answer_mod_std->setChecked(true);
|
||
else
|
||
{
|
||
Multi_answer_mod->setChecked(false);
|
||
Multi_answer_mod_std->setChecked(false);
|
||
}
|
||
}
|
||
|
||
if (!st_res[67].isEmpty()) THvRigControl->SetOffsetTrsvRigParms(st_res[67]);
|
||
if (!st_res[82].isEmpty()) THvRigControl->SetNetRigSrvPort(st_res[82]);
|
||
|
||
if (!st_res[33].isEmpty())
|
||
{
|
||
if (st_res[33].toInt()>=0 || st_res[33].toInt()<COUNT_BANDS)
|
||
{
|
||
ListBands.at(st_res[33].toInt())->setChecked(true);
|
||
}
|
||
}
|
||
|
||
if (!st_res[31].isEmpty()) THvTxW->SetPiriodTimeAllModes(st_res[31]);
|
||
|
||
if (!st_res[32].isEmpty()) THvTxtColor->SetTextMark(st_res[32]);
|
||
if (!st_res[72].isEmpty()) THvTxtColor->SetTextColor(st_res[72]);
|
||
|
||
if (!st_res[38].isEmpty())
|
||
{
|
||
if (st_res[38].toInt() == 0) pb_2D_1D->ExtrnalRelease();
|
||
}
|
||
|
||
if (screenHeight<=600)
|
||
{
|
||
if (pb_2D_1D->Button_Stop_b) pb_2D_1D->ExtrnalRelease();//only if on one display
|
||
}
|
||
if (!st_res[1].isEmpty() && !st_res[0].isEmpty())
|
||
{
|
||
if (st_res[1] == "FULL" || st_res[0] == "FULL" ) setWindowState(Qt::WindowMaximized);
|
||
else
|
||
{
|
||
int t_width = st_res[0].toInt();
|
||
int t_height = st_res[1].toInt();
|
||
if (t_width>screenWidth) t_width=screenWidth-50;// 50 borders
|
||
if (t_height>screenHeight) t_height=screenHeight-100;// 100 2 times taskbar
|
||
resize(t_width, t_height);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
int t_width = 801;
|
||
int t_height = 680;
|
||
if (screenHeight<=600) t_height = 530;
|
||
resize(t_width, t_height);
|
||
}
|
||
if (!st_res[59].isEmpty() && !st_res[60].isEmpty())
|
||
{
|
||
QStringList list_wh = st_res[59].split("#");
|
||
QStringList list_xy = st_res[60].split("#");
|
||
if (list_wh.count()==2 && list_xy.count()==2)
|
||
{
|
||
int w_sz = list_wh[0].toInt();
|
||
int h_sz = list_wh[1].toInt();
|
||
if (w_sz==desktopw->width() && h_sz==desktopw->height())
|
||
{
|
||
int x_pos1 = list_xy[0].toInt();
|
||
int y_pos1 = list_xy[1].toInt();
|
||
move(x_pos1,y_pos1);
|
||
f_is_moved_to_prev_desk_pos = true;
|
||
if (!st_res[79].isEmpty()) THvHelpMs->SetPosXY(st_res[79]);
|
||
if (!st_res[80].isEmpty()) THvTxW->SetAstroWPos(st_res[80]);
|
||
if (!st_res[81].isEmpty()) THvTxW->SetLogWPosWH(st_res[81]);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!st_res[7].isEmpty())
|
||
{
|
||
bool found_p = false; //2.65
|
||
for (int i = 0; i < 9; ++i)
|
||
{
|
||
if (st_res[7].toInt()==i)
|
||
{
|
||
rb_palette[i]->setChecked(true);
|
||
MainDisplay->SetPalette(i);
|
||
SecondDisplay->SetPalette(i);
|
||
found_p = true;
|
||
break;
|
||
}
|
||
}
|
||
if (!found_p)
|
||
{
|
||
rb_palette[1]->setChecked(true);
|
||
MainDisplay->SetPalette(1);
|
||
SecondDisplay->SetPalette(1);
|
||
}
|
||
}
|
||
|
||
if (!st_res[26].isEmpty()) THvTxW->SetMinsigndb(st_res[26]);
|
||
if (!st_res[27].isEmpty()) THvTxW->SetDftolerance(st_res[27]);
|
||
if (!st_res[28].isEmpty()) THvTxW->SetZap(st_res[28]);
|
||
|
||
//1.61= CAT ot tuk se refre6va CAT only ont time
|
||
if (!st_res[76].isEmpty()) THvRigControl->SetModSetFrqToRig(st_res[76]);
|
||
if (!st_res[22].isEmpty()) THvRigControl->SetOffSetFrqToRig(st_res[22]);
|
||
if (!st_res[18].isEmpty()) THvRigControl->SetupReadDataRtsOn(st_res[18]);
|
||
if (!st_res[15].isEmpty()) THvRigControl->SetupPtt(st_res[15]);
|
||
if (!st_res[13].isEmpty()) THvRigControl->SetPortName(st_res[13]);
|
||
if (!st_res[14].isEmpty()) THvRigControl->SetPortBaud(st_res[14]);
|
||
if (!st_res[17].isEmpty()) THvRigControl->SetPttCatType(st_res[17]);//tova da e parvo vazno
|
||
if (!st_res[16].isEmpty()) THvRigControl->SetRigName(st_res[16]);
|
||
if (!st_res[55].isEmpty()) THvRigControl->SetTxWatchdogParms(st_res[55]);
|
||
if (!st_res[21].isEmpty()) THvRigControl->SetupPtt2(st_res[21]);
|
||
if (!st_res[19].isEmpty()) THvRigControl->SetPortName2(st_res[19]);
|
||
if (!st_res[20].isEmpty()) THvRigControl->SetPortBaud2(st_res[20]);
|
||
//1.61= CAT ot tuk se refre6va CAT only ont time
|
||
|
||
if (!st_res[23].isEmpty() && !st_res[24].isEmpty())
|
||
{
|
||
Slider_Tune_Disp->SetValue(st_res[23].toInt());
|
||
Slider_Cont_Disp->SetValue(st_res[24].toInt());
|
||
}
|
||
|
||
if (!st_res[2].isEmpty() && !st_res[3].isEmpty()
|
||
&& !st_res[4].isEmpty() && !st_res[5].isEmpty() && !st_res[8].isEmpty()
|
||
&& !st_res[10].isEmpty() && !st_res[11].isEmpty() && !st_res[6].isEmpty())
|
||
{
|
||
if (st_res[9].isEmpty()) st_res[9]="2";
|
||
TSettingsMs->SetDevices_Drv(st_res[2], /*st_res[3], rate = not used*/
|
||
st_res[4], st_res[5],st_res[6],st_res[8],
|
||
st_res[9],st_res[10],st_res[11]);
|
||
}
|
||
|
||
if (!st_res[29].isEmpty()) THvTxW->SetInLevel(st_res[29]);
|
||
if (!st_res[30].isEmpty()) THvTxW->SetOutLevel(st_res[30]);
|
||
|
||
if (!st_res[39].isEmpty())
|
||
{
|
||
for (int i = 0; i < 4; ++i)
|
||
{
|
||
if (st_res[39].toInt()==i)
|
||
{
|
||
cb_msk144rxequal_[i]->setChecked(true);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!st_res[35].isEmpty())
|
||
{
|
||
if (st_res[35].toInt()==0) cb_rtd_decode->setChecked(false);
|
||
else cb_rtd_decode->setChecked(true);
|
||
}
|
||
|
||
//0=vhf_hf 1=avg 2=deeps 3=ap 4=set_two_dec_lists 5=auto_dec_all
|
||
if (!st_res[25].isEmpty()) SetDecodeAllSettingsB(st_res[25],5);
|
||
|
||
if (!st_res[40].isEmpty()) THvTxW->SetSwlOp(st_res[40]);
|
||
if (!st_res[37].isEmpty()) THvTxW->SetOpAllB(st_res[37],0);//sh=0
|
||
if (!st_res[50].isEmpty()) THvTxW->SetAutoSeqAll(st_res[50]);
|
||
if (!st_res[51].isEmpty()) THvTxW->SetOpAllB(st_res[51],1);//lock_txrx=1
|
||
|
||
if (!st_res[43].isEmpty()) SetAllSettingsI(st_res[43],0);// 0=vdist_speads
|
||
if (!st_res[44].isEmpty()) SB_VDispStartFreq->setValue(st_res[44].toInt());
|
||
if (!st_res[45].isEmpty()) SB_VDispBandwidth->setValue(st_res[45].toInt());
|
||
|
||
if (!st_res[61].isEmpty())
|
||
{
|
||
if (st_res[61]=="1") cb_flat_dsp->setChecked(true);
|
||
else cb_flat_dsp->setChecked(false);
|
||
}
|
||
if (!st_res[95].isEmpty())
|
||
{
|
||
if (st_res[95]=="0") cb_adle_dsp->setChecked(false);
|
||
else cb_adle_dsp->setChecked(true);
|
||
}
|
||
|
||
if (!st_res[65].isEmpty()) SetDecodeAllSettingsB(st_res[65],4);//0=vhf_hf 1=avg 2=deeps 3=ap 4=set_two_dec_lists
|
||
if (!st_res[41].isEmpty()) SetDecodeAllSettingsB(st_res[41],0);//0=vhf_hf 1=avg 2=deeps 3=ap
|
||
if (!st_res[57].isEmpty()) SetDecodeAllSettingsB(st_res[57],2);//0=vhf_hf 1=avg 2=deeps 3=ap
|
||
if (!st_res[42].isEmpty()) SetDecodeAllSettingsB(st_res[42],1);//0=vhf_hf 1=avg 2=deeps 3=ap
|
||
if (!st_res[56].isEmpty()) SetDecodeAllSettingsB(st_res[56],3);//0=vhf_hf 1=avg 2=deeps 3=ap
|
||
if (!st_res[47].isEmpty()) SetAllSettingsI(st_res[47],2);// 2=max_cand65
|
||
if (!st_res[36].isEmpty()) SetAllSettingsI(st_res[36],1);//1=decoder_depth_all
|
||
|
||
SetQActionCb(st_res[86], true, ac_ft_df1500);//2.41
|
||
SetQActionCb(st_res[96], false, ac_areset_qso);//2.49
|
||
|
||
if (!st_res[12].isEmpty())
|
||
{
|
||
int idm = st_res[12].toInt();
|
||
s_mod_ident = idm;
|
||
if (idm<COUNT_MODE) rb_mode[idm]->setChecked(true);
|
||
else
|
||
{
|
||
s_mod_ident = 2;
|
||
rb_mode[2]->setChecked(true);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
s_mod_ident = 2;
|
||
rb_mode[2]->setChecked(true);
|
||
}
|
||
|
||
if (!st_res[89].isEmpty()) FilterDialog->SetSettings0(st_res[89]);//2.44
|
||
if (!st_res[90].isEmpty()) FilterDialog->SetSettings1(st_res[90]);//2.44
|
||
if (!st_res[91].isEmpty()) FilterDialog->SetSettings2(st_res[91]);//2.44
|
||
if (!st_res[92].isEmpty()) FilterDialog->SetSettings3(st_res[92]);//2.44
|
||
if (!st_res[93].isEmpty()) FilterDialog->SetSettings4(st_res[93]);//2.44
|
||
if (!st_res[94].isEmpty()) FilterDialog->SetSettings5(st_res[94]);//2.44
|
||
if (!st_res[102].isEmpty()) FilterDialog->SetSettings6(st_res[102]);//2.62
|
||
if (!st_res[88].isEmpty()) FilterDialog->SetSettings(st_res[88]);//2.43
|
||
|
||
if (!st_res[75].isEmpty())//static_tx_parms
|
||
THvRigControl->SetStaticTxParms(st_res[75]);
|
||
if (!st_res[34].isEmpty())
|
||
{
|
||
if (st_res[34] == "1")
|
||
{
|
||
Mon_start_m->setChecked(true);
|
||
StartRxGlobal();
|
||
}
|
||
else Mon_start_m->setChecked(false);
|
||
}
|
||
if (!st_res[46].isEmpty())
|
||
{
|
||
if (st_res[46].toInt()==1) is_active_astro_w = true;
|
||
}
|
||
SetQActionCb(st_res[48], true, zero_df_scale_m);
|
||
SetQActionCb(st_res[58], true, vd_mouse_lines_draw);
|
||
if (!st_res[49].isEmpty()) TCustomPalW->SetPalSettings(st_res[49]);
|
||
SetQActionCb(st_res[77], false, Direct_log_qso);// 2.51 default checked
|
||
SetQActionCb(st_res[52], true, Prompt_log_qso);
|
||
SetQActionCb(st_res[53], false, Info_dupe_qso);// 2.51 default checked
|
||
SetQActionCb(st_res[54], true, Log_qso_startdt_eq_enddt);
|
||
SetQActionCb(st_res[62], false, recognize_tp1);
|
||
SetQActionCb(st_res[63], false, recognize_tp2);
|
||
if (!st_res[64].isEmpty()) TAggressiveDialog->SetAggresLevels(st_res[64]);
|
||
SetQActionCb(st_res[66], false, ac_2click_list_autu_on);// 2.51 default checked
|
||
SetQActionCb(st_res[70], true, ac_start_qso_from_tx2_or_tx1);
|
||
if (!st_res[71].isEmpty()) FontDialog->SetFontsAll(st_res[71]);
|
||
SetQActionCb(st_res[73], true, ac_new_dec_clr_msg_list);
|
||
SetQActionCb(st_res[78], false, ac_click_on_call_show_cty);// 2.51 default checked
|
||
SetQActionCb(st_res[83], false, ac_Cfm73);
|
||
SetQActionCb(st_res[85], true, Log_auto_comm);
|
||
SetQActionCb(st_res[87], false, cb_3intFt_d);//2.51 default checked
|
||
SetQActionCb(st_res[97], true, cb_1_dec_sig_q65);
|
||
SetQActionCb(st_res[98], true, cb_auto_clr_avg_afdec);
|
||
SetQActionCb(st_res[99], true, cb_dec_aft_eme_delay);
|
||
SetQActionCb(st_res[100], true, cb_max_drift);//2.57 def false
|
||
SetQActionCb(st_res[101], true, ac_use_queue_cont);//2.59 def false
|
||
SetQActionCb(st_res[103], true, ac_aseq_max_dist);//2.66 def false
|
||
if (!st_res[104].isEmpty()) W_mod_bt_sw->SetSettings(st_res[104]);
|
||
|
||
THvTxW->SetBlockEmitFreqToRig(false);
|
||
|
||
//qDebug()<<"W_MAIN START";//<<ttt.elapsed();//2813 ms new 513ms
|
||
block_save = false;
|
||
}
|
||
void Main_Ms::SaveSettings()
|
||
{
|
||
if (!block_save) Save_Settings(App_Path+"/settings/ms_settings");
|
||
}
|
||
void Main_Ms::Save_Settings(QString path)
|
||
{
|
||
QFile file(path);
|
||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
|
||
return;
|
||
QTextStream out(&file);
|
||
out << "[ms_settings]" << "\n";
|
||
|
||
if (windowState() == Qt::WindowMaximized)
|
||
{
|
||
out << "default_w=" << "FULL" << "\n";
|
||
out << "default_h=" << "FULL" << "\n";
|
||
}
|
||
else
|
||
{
|
||
out << "default_w=" << QString("%1").arg(this->width()) << "\n";
|
||
out << "default_h=" << QString("%1").arg(this->height()) << "\n";
|
||
}
|
||
out << "default_device_alsa=" << TSettingsMs->default_in_dev() << "\n";
|
||
out << "default_sample_rate=" << "48000" << "\n";//free TSettingsMs->default_sample_rate() << "\n";
|
||
out << "default_card_latency=" << TSettingsMs->default_card_latency() << "\n";
|
||
out << "default_card_buffer_polls=" << TSettingsMs->default_card_buffer_polls() << "\n";
|
||
out << "default_in_channel=" << TSettingsMs->default_in_channel() << "\n";
|
||
out << "default_palette=" << MainDisplay->default_color() << "\n";
|
||
out << "default_scan_refresh=" << TSettingsMs->default_scan_refresh() << "\n";
|
||
out << "default_lm_refresh=" << TSettingsMs->default_lm_refresh() << "\n";
|
||
out << "default_out_dev=" << TSettingsMs->default_out_dev() << "\n";
|
||
out << "default_out_buf=" << TSettingsMs->default_out_buf() << "\n";
|
||
out << "mod_identifaer=" << QString("%1").arg(s_mod_ident) << "\n";
|
||
|
||
out << "com_port_name=" << THvRigControl->get_port_name() << "\n";
|
||
out << "com_port_baud=" << THvRigControl->get_port_baud() << "\n";
|
||
out << "com_port_ptt_rts_dtr=" << THvRigControl->get_ptt_rts_dtr() << "\n";
|
||
out << "default_rig_name=" << THvRigControl->get_rig_name() << "\n";
|
||
out << "default_ptt_cat_type=" << THvRigControl->get_ptt_cat_type() << "\n";
|
||
out << "default_read_data_rts_on=" << THvRigControl->get_read_data_rts_on() << "\n";
|
||
|
||
out << "com_port_name2=" << THvRigControl->get_port_name2() << "\n";
|
||
out << "com_port_baud2=" << THvRigControl->get_port_baud2() << "\n";
|
||
out << "com_port_ptt_rts_dtr2=" << THvRigControl->get_ptt_rts_dtr2() << "\n";
|
||
out << "off_set_frq_to_rig=" << THvRigControl->off_set_frq_to_rig() << "\n";
|
||
|
||
//out << "tx_fs=" << QString("%1").arg(THvTxW->GetTxFs()) << "\n";
|
||
out << "tune_display=" << QString("%1").arg(Slider_Tune_Disp->get_value()) << "\n";
|
||
out << "tune_display_cont=" << QString("%1").arg(Slider_Cont_Disp->get_value()) << "\n";
|
||
|
||
out << "auto_decode_all=" << get_dec_settings_allB(5) << "\n";//0=vhf_hf 1=avg 2=deeps 3=ap 4=set_two_dec_lists 5=auto_dec_all
|
||
|
||
out << "signdb_all=" << THvTxW->getsigndb() << "\n";
|
||
out << "getdftol_all=" << THvTxW->getdftol() << "\n";
|
||
out << "defaut_zap=" << THvTxW->getzap() << "\n";
|
||
out << "default_in_lev_cor=" << THvTxW->default_in_lev_cor() << "\n";
|
||
out << "default_out_lev_cor=" << THvTxW->default_out_lev_cor() << "\n";
|
||
out << "default_period_time_all=" << THvTxW->def_period_time_all_modes() << "\n";
|
||
out << "default_txt_mark=" << THvTxtColor->GetTextMark() << "\n";
|
||
///out << "default_mon_r=" << THvTxW->get_mon_r12 << "\n";
|
||
|
||
int ik=0;
|
||
for (ik = 0; ik<COUNT_BANDS; ++ik)
|
||
{
|
||
//QRadioButton *bt = (QRadioButton*)Vl_band->itemAt(ik)->widget();
|
||
if (ListBands.at(ik)->isChecked())
|
||
break;
|
||
}
|
||
out << "default_band=" << QString("%1").arg(ik) << "\n";
|
||
|
||
out << "default_mon_startup=" << QString("%1").arg(Mon_start_m->isChecked()) << "\n";
|
||
out << "default_rtd=" << QString("%1").arg(cb_rtd_decode->isChecked()) << "\n";
|
||
|
||
out << "def_dec_depth=" << get_settings_allI(1) << "\n";
|
||
out << "def_sh_op_all=" << THvTxW->get_op_allB(0) << "\n";
|
||
|
||
out << "def_2d1d=" << QString("%1").arg(pb_2D_1D->Button_Stop_b) << "\n";
|
||
|
||
QString dd = "0";
|
||
for (int i = 1; i < 4; ++i)
|
||
{
|
||
if(cb_msk144rxequal_[i]->isChecked())
|
||
{
|
||
dd = QString("%1").arg(i);
|
||
break;
|
||
}
|
||
}
|
||
out << "def_msk144rxequal=" << dd << "\n";
|
||
out << "def_swl_op=" << THvTxW->get_swl_op() << "\n";
|
||
out << "def_vhf_uhf_decode_fac=" << get_dec_settings_allB(0) << "\n";//0=vhf_hf 1=avg 2=deeps 3=ap
|
||
out << "def_avg_decode=" << get_dec_settings_allB(1) << "\n";//0=vhf_hf 1=avg 2=deeps 3=ap
|
||
|
||
out << "def_vdisp_speed=" << get_settings_allI(0) << "\n";// 0=vdist_speads
|
||
out << "def_vdisp_start_freq=" << QString("%1").arg(SB_VDispStartFreq->value()) << "\n";
|
||
out << "def_vdisp_band_width=" << QString("%1").arg(SB_VDispBandwidth->value()) << "\n";
|
||
out << "def_astro_data=" << QString("%1").arg(is_active_astro_w) << "\n";
|
||
|
||
out << "def_max65_cand=" << get_settings_allI(2) << "\n";// 2=max_cand65
|
||
out << "def_zero_df_scale=" << QString("%1").arg(zero_df_scale_m->isChecked()) << "\n";
|
||
out << "def_cust_pall=" << TCustomPalW->GetPalSettings() << "\n";
|
||
|
||
out << "auto_seq_all=" << THvTxW->getautoseq_all() << "\n";
|
||
out << "lock_txrx_all=" << THvTxW->get_op_allB(1) << "\n";
|
||
|
||
out << "prompt_log_qso=" << THvTxW->GetPromptLogQso() << "\n";
|
||
out << "info_dupe_qso=" << QString("%1").arg(Info_dupe_qso->isChecked()) << "\n";
|
||
out << "log_qso_startdt_eq_enddt=" << QString("%1").arg(Log_qso_startdt_eq_enddt->isChecked()) << "\n";
|
||
|
||
out << "tx_watchdog_parms=" << THvRigControl->get_tx_watchdog_parms() << "\n";
|
||
out << "def_ap_decode=" << get_dec_settings_allB(3) << "\n";//0=vhf_hf 1=avg 2=deeps 3=ap
|
||
out << "def_deep_search_decode=" << get_dec_settings_allB(2) << "\n";//0=vhf_hf 1=avg 2=deeps 3=ap
|
||
out << "def_vd_mouse_lines_draw=" << QString("%1").arg(vd_mouse_lines_draw->isChecked()) << "\n";
|
||
/// 1.51
|
||
out << "def_desk_size_wh=" << QString("%1").arg(desktopw->width())<<"#"<<QString("%1").arg(desktopw->height()) << "\n";
|
||
out << "def_desk_pos_xy=" << QString("%1").arg(pos().x())<<"#"<<QString("%1").arg(pos().y()) << "\n";
|
||
out << "def_flat_vdsp=" << QString("%1").arg(cb_flat_dsp->isChecked()) << "\n";
|
||
|
||
out << "def_recognize_tp1=" << QString("%1").arg(recognize_tp1->isChecked()) << "\n";
|
||
out << "def_recognize_tp2=" << QString("%1").arg(recognize_tp2->isChecked()) << "\n";
|
||
|
||
out << "def_aggressive_lev=" << TAggressiveDialog->GetAggresLevels() << "\n";
|
||
out << "def_two_dec_list=" << get_dec_settings_allB(4) << "\n";//4=set_two_dec_lists
|
||
out << "def_2click_list_autu_on=" << QString("%1").arg(ac_2click_list_autu_on->isChecked()) << "\n";
|
||
out << "offset_trsv_rig_parms=" << THvRigControl->get_offset_trsv_rig_parms() << "\n";
|
||
|
||
//out << "multi_answer_mod=" << QString("%1").arg(Multi_answer_mod->isChecked()) << "\n";
|
||
QString mass = "0";
|
||
if (Multi_answer_mod->isChecked()) mass = "1";
|
||
else if (Multi_answer_mod_std->isChecked()) mass = "2";
|
||
out << "multi_answer_mod=" << mass << "\n";
|
||
int gbk_tt = 0xa;
|
||
int gbk_tt2 = 0xf;
|
||
int gbk_tt3 = 0xd;
|
||
if (g_ub_m_k) gbk_tt = G_UL_K_72;
|
||
if (g_ub_m_k2) gbk_tt2 = G_UL_K_73;
|
||
if (g_ub_m_k3) gbk_tt3 = G_UL_K_74;
|
||
out << "def_gbk_t="<<QString("%1").arg(gbk_tt)<<"#"<<QString("%1").arg(gbk_tt2)<<"#"<<QString("%1").arg(gbk_tt3)<<"#"<<QString("%1").arg(0xe)<<"\n";
|
||
out << "start_qso_from_tx2_or_tx1=" << QString("%1").arg(ac_start_qso_from_tx2_or_tx1->isChecked()) << "\n";
|
||
out << "def_app_fonts=" << FontDialog->GetFontsAll() << "\n";
|
||
out << "default_txt_mark_color=" << THvTxtColor->GetTextColor() << "\n";
|
||
out << "new_dec_clr_msg_list=" << QString("%1").arg(ac_new_dec_clr_msg_list->isChecked()) << "\n";
|
||
out << "vd_rx_tx_freq=" << MainDisplay->GetFreqRxTxVD() << "\n";
|
||
out << "static_tx_parms=" << THvRigControl->static_tx_parms() << "\n";
|
||
out << "mod_set_frq_to_rig=" << THvRigControl->mod_set_frq_to_rig() << "\n";
|
||
out << "direct_log_qso=" << THvTxW->GetDirectLogQso() << "\n";
|
||
out << "click_on_call_show_cty=" << QString("%1").arg(ac_click_on_call_show_cty->isChecked()) << "\n";
|
||
out << "def_desk_pos_help_xy=" << THvHelpMs->GetPosXY() << "\n";
|
||
out << "def_desk_pos_astr_xy=" << THvTxW->GetAstroWPos() << "\n";
|
||
out << "def_desk_pos_logw_xywh=" << THvTxW->GetLogWPosWH() << "\n";
|
||
out << "net_rig_srv_port=" << THvRigControl->net_rig_srv_port() << "\n";
|
||
out << "def_confirm73=" << QString("%1").arg(ac_Cfm73->isChecked()) << "\n";
|
||
dd.clear(); //2.69
|
||
for (int i = 0; i < COUNT_MODE; ++i)
|
||
{
|
||
dd.append(QString("%1").arg(thr_all[i]));
|
||
if (i<COUNT_MODE-1) dd.append("#");
|
||
}
|
||
out << "def_thr_lev=" << dd << "\n";
|
||
|
||
out << "off_auto_comments=" << QString("%1").arg(Log_auto_comm->isChecked()) << "\n";
|
||
out << "def_df1500_Ft=" << QString("%1").arg(ac_ft_df1500->isChecked()) << "\n";
|
||
out << "def_dec_3int_Ft=" << QString("%1").arg(cb_3intFt_d->isChecked()) << "\n";//2.39 remm
|
||
out << "def_filter_list=" << FilterDialog->GetSettings() << "\n";
|
||
out << "def_filter_list0=" << FilterDialog->GetSettings0() << "\n";
|
||
out << "def_filter_list1=" << FilterDialog->GetSettings1() << "\n";
|
||
out << "def_filter_list2=" << FilterDialog->GetSettings2() << "\n";
|
||
out << "def_filter_list3=" << FilterDialog->GetSettings3() << "\n";
|
||
out << "def_filter_list4=" << FilterDialog->GetSettings4() << "\n";
|
||
out << "def_filter_list5=" << FilterDialog->GetSettings5() << "\n";
|
||
out << "def_adle_vdsp=" << QString("%1").arg(cb_adle_dsp->isChecked()) << "\n";
|
||
out << "def_areset_qso=" << QString("%1").arg(ac_areset_qso->isChecked()) << "\n";
|
||
|
||
out << "def_1_dec_sig_q65=" << QString("%1").arg(cb_1_dec_sig_q65->isChecked()) << "\n";
|
||
out << "def_auto_clr_avg_afdec=" << QString("%1").arg(cb_auto_clr_avg_afdec->isChecked()) << "\n";
|
||
out << "def_dec_aft_eme_delay=" << QString("%1").arg(cb_dec_aft_eme_delay->isChecked()) << "\n";
|
||
out << "def_max_drift=" << QString("%1").arg(cb_max_drift->isChecked()) << "\n";
|
||
out << "def_use_queue_cont=" << QString("%1").arg(ac_use_queue_cont->isChecked()) << "\n";
|
||
out << "def_filter_list6=" << FilterDialog->GetSettings6() << "\n";
|
||
out << "use_aseq_max_dist=" << QString("%1").arg(ac_aseq_max_dist->isChecked()) << "\n";
|
||
out << "def_mod_bt_sw=" << W_mod_bt_sw->GetSettings() << "\n";
|
||
|
||
file.close();
|
||
}
|
||
void Main_Ms::SetBS1Text(QString s)
|
||
{
|
||
if (f_disp_v_h)
|
||
{
|
||
if (s.isEmpty())
|
||
pb_save_disp1->setText(tr("SAVE THIS"));
|
||
else
|
||
pb_save_disp1->setText(s);
|
||
}
|
||
else
|
||
{
|
||
if (s.isEmpty())
|
||
pb_save_disp1->setText(tr("SAVE DISPLAY")+" 1");
|
||
else
|
||
pb_save_disp1->setText(s);
|
||
}
|
||
}
|
||
void Main_Ms::SetBS2Text(QString s)
|
||
{
|
||
if (f_disp_v_h)
|
||
{
|
||
if (s.isEmpty())
|
||
pb_save_disp2->setText(tr("SAVE PREVIOUS"));
|
||
else
|
||
pb_save_disp2->setText(s);
|
||
}
|
||
else
|
||
{
|
||
if (s.isEmpty())
|
||
pb_save_disp2->setText(tr("SAVE DISPLAY")+" 2");
|
||
else
|
||
pb_save_disp2->setText(s);
|
||
}
|
||
}
|
||
void Main_Ms::FileNameChengedD1()
|
||
{
|
||
if (TMsCore->GetSta_Sto())
|
||
SetBS1Text("");//pb_save_disp1->setText("SAVE DISPLAY 1");
|
||
}
|
||
void Main_Ms::FileNameChengedD2()
|
||
{
|
||
SetBS2Text("");//pb_save_disp2->setText("SAVE DISPLAY 2");
|
||
}
|
||
void Main_Ms::SaveFileDisplay1()
|
||
{
|
||
//QString mode = "UNKNOWN";
|
||
QString call = "NOCALL";
|
||
|
||
if (!THvTxW->get_Calls().isEmpty())
|
||
call = THvTxW->get_Calls();
|
||
|
||
if (call.contains("/"))
|
||
{
|
||
if (call.at(call.count()-1)=='/')
|
||
call.replace("/","_SLASH");
|
||
else
|
||
call.replace("/","_SLASH_");
|
||
}
|
||
|
||
MainDisplay->SaveFile(call+"_"+ModeStr(s_mod_ident));
|
||
SetBS1Text(tr("File Name")+": "+MainDisplay->getFullFileName());//pb_save_disp1->setText("SAVE DISPLAY 1 File Name: "+MainDisplay->getFullFileName());
|
||
}
|
||
void Main_Ms::SaveFileDisplay2()
|
||
{
|
||
//QString mode = "UNKNOWN";
|
||
QString call = "NOCALL";
|
||
|
||
if (!THvTxW->get_Calls().isEmpty())
|
||
call = THvTxW->get_Calls();
|
||
|
||
if (call.contains("/"))
|
||
{
|
||
if (call.at(call.count()-1)=='/')
|
||
call.replace("/","_SLASH");
|
||
else
|
||
call.replace("/","_SLASH_");
|
||
}
|
||
|
||
SecondDisplay->SaveFile(call+"_"+ModeStr(s_mod_ident));
|
||
SetBS2Text(tr("File Name")+": "+SecondDisplay->getFullFileName());//pb_save_disp2->setText("SAVE DISPLAY 2 File Name: "+SecondDisplay->getFullFileName());
|
||
}
|
||
void Main_Ms::Open()
|
||
{
|
||
QString path = App_Path+"/RxWavs";
|
||
/*QFileDialog dialog(this,tr("Open"), path+"/", tr("Files WAV (*.wav)"));
|
||
dialog.setLabelText(QFileDialog::Reject, tr("Eaioae"));
|
||
dialog.setLabelText(QFileDialog::Accept, tr("iia?i"));
|
||
QString fileName;
|
||
if (dialog.exec())
|
||
fileName = dialog.selectedFiles()[0];*/
|
||
QString fileName = QFileDialog::getOpenFileName(this,tr("Open"), path+"/", tr("Files")+" WAV (*.wav)");
|
||
|
||
FileOpen(fileName);
|
||
}
|
||
void Main_Ms::FileOpen(QString fileName)
|
||
{
|
||
if (fileName.isEmpty())
|
||
return;
|
||
|
||
QString path_rem_space = fileName.replace("%20", " ").toUtf8();//qt4.4.0 zaradi " i kirilica
|
||
QFileInfo fi(path_rem_space);
|
||
QString name = fi.baseName();
|
||
QString time_t;
|
||
int to;
|
||
|
||
if (name.count()<6)
|
||
to = name.count();
|
||
else
|
||
to = 6;
|
||
|
||
for (int i = name.count()-1; i>=name.count()-to; i--)
|
||
time_t.insert(0,name.at(i));
|
||
|
||
TDecoderMs->SetCalsHashFileOpen(name); //qDebug()<<name;
|
||
MainDisplay->setDisplayTime(time_t,"REWRITED");// for jt65 v1.35 and 2.43
|
||
TMsPlayerHV->OpenFile(qstrdup(qPrintable(path_rem_space)));
|
||
//MainDisplay->setDisplayTime(time_t,"REWRITED");//rem for jt65 v1.35
|
||
SetBS1Text(tr("Open File")+": "+fi.fileName());//pb_save_disp1->setText("SAVE DISPLAY 1 Open File: "+fi.fileName());
|
||
|
||
MainDisplay->DecodeAllData(true,true);
|
||
//s_f_dec50 = true;//v1.47 ne za sega
|
||
|
||
}
|
||
#if defined _WIN32_
|
||
//////////// WINDOWS MIXERS ////////////////////////////////////////////
|
||
QString Main_Ms::GetOSVersion()
|
||
{
|
||
QString str = "0.0";
|
||
OSVERSIONINFOEX osvi;
|
||
SYSTEM_INFO si;
|
||
PGNSI pGNSI;
|
||
BOOL bOsVersionInfoEx;
|
||
|
||
ZeroMemory(&si, sizeof(SYSTEM_INFO));
|
||
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
|
||
|
||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
|
||
|
||
if ( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
|
||
return str;
|
||
|
||
// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
|
||
|
||
pGNSI = (PGNSI) GetProcAddress(
|
||
GetModuleHandle((WCHAR*)TEXT("kernel32.dll")),
|
||
"GetNativeSystemInfo");
|
||
if (NULL != pGNSI)
|
||
pGNSI(&si);
|
||
else GetSystemInfo(&si);
|
||
|
||
if ( VER_PLATFORM_WIN32_NT==osvi.dwPlatformId &&
|
||
osvi.dwMajorVersion > 4 )
|
||
{
|
||
if ( osvi.dwMajorVersion == 10 )
|
||
{
|
||
if ( osvi.dwMinorVersion == 0 )
|
||
{
|
||
str = "10.0";//"Windows10.0";
|
||
}
|
||
}
|
||
if ( osvi.dwMajorVersion == 6 )
|
||
{
|
||
if ( osvi.dwMinorVersion == 0 )
|
||
{
|
||
str = "6.0";//"Vista";
|
||
}
|
||
|
||
if ( osvi.dwMinorVersion == 1 )
|
||
{
|
||
str = "6.1";//"Windows7";
|
||
}
|
||
if ( osvi.dwMinorVersion == 2 )
|
||
{
|
||
str = "6.2";//"Windows8";
|
||
}
|
||
if ( osvi.dwMinorVersion == 3 )
|
||
{
|
||
str = "6.3";//"Windows8.1";
|
||
}
|
||
}
|
||
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
|
||
{
|
||
str = "5.2";//"ServersWin";
|
||
}
|
||
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
|
||
{
|
||
str = "5.1";//"XP";
|
||
}
|
||
|
||
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
|
||
{
|
||
str = "5.0";//"Win2000";
|
||
}
|
||
}
|
||
else
|
||
str = "0.0";//"No Windows";
|
||
|
||
return str;
|
||
}
|
||
void Main_Ms::WMixRec()
|
||
{
|
||
if (Start_Cmd)
|
||
{
|
||
Start_Cmd->close();
|
||
Start_Cmd->kill();
|
||
}
|
||
Start_Cmd->setProcessChannelMode(QProcess::MergedChannels);
|
||
QString str = GetOSVersion();
|
||
if (str == "6.0" || str == "6.1" || str == "6.2" || str == "6.3" || str == "10.0")
|
||
Start_Cmd->start("control.exe mmsys.cpl,,1");//recordev-> control.exe mmsys.cpl,,1 //SndVol.exe /r
|
||
else
|
||
Start_Cmd->start("sndvol32.exe -r");
|
||
connect(Start_Cmd, SIGNAL(finished(int)), this, SLOT(End_Cmd(int)));
|
||
//vista windows7 Playback Devices: control.exe mmsys.cpl,,0
|
||
//vista windows7 Recording Devices: control.exe mmsys.cpl,,1
|
||
//Win Xp Recording Devices: sndvol32.exe -r
|
||
//Win Xp Playback Devices: sndvol32.exe -p
|
||
}
|
||
void Main_Ms::WMixPlay()
|
||
{
|
||
if (Start_Cmd)
|
||
{
|
||
Start_Cmd->close();
|
||
Start_Cmd->kill();
|
||
}
|
||
Start_Cmd->setProcessChannelMode(QProcess::MergedChannels);
|
||
QString str = GetOSVersion();
|
||
if (str == "6.0" || str == "6.1" || str == "6.2" || str == "6.3" || str == "10.0")
|
||
Start_Cmd->start("control.exe mmsys.cpl,,0");//recordev-> control.exe mmsys.cpl,,1 //SndVol.exe /p
|
||
else
|
||
Start_Cmd->start("sndvol32.exe -p");
|
||
connect(Start_Cmd, SIGNAL(finished(int)), this, SLOT(End_Cmd(int)));
|
||
//vista windows7 Playback Devices: control.exe mmsys.cpl,,0
|
||
//vista windows7 Recording Devices: control.exe mmsys.cpl,,1
|
||
//Win Xp Recording Devices: sndvol32.exe -r
|
||
//Win Xp Playback Devices: sndvol32.exe -p
|
||
}
|
||
void Main_Ms::SyncTime()
|
||
{
|
||
if (Start_Cmd)
|
||
{
|
||
Start_Cmd->close();
|
||
Start_Cmd->kill();
|
||
}
|
||
Start_Cmd->setProcessChannelMode(QProcess::MergedChannels);
|
||
Start_Cmd->start("control.exe timedate.cpl,,0");//"W32tm /resync" RUNDLL32 SHELL32.DLL,Control_RunDLL %1,@0
|
||
//Start_Cmd->start("http://time.is/");
|
||
//QDesktopServices::openUrl(QUrl("http://time.is/", QUrl::TolerantMode));
|
||
|
||
QMessageBox::information(this, "MSHV",
|
||
(tr("Windows Xp:\n"
|
||
"1.Click on the Internet Time tab.\n"
|
||
"2.Click on the Update Now button.\n"
|
||
"Windows 7,8,8.1,10:\n"
|
||
"1.Click on the Internet Time tab.\n"
|
||
"2.Click on the Change Settings button.\n"
|
||
"3.Click on the Update Now button.")),
|
||
QMessageBox::Close);
|
||
|
||
//QDesktopServices::openUrl(QUrl("http://time.is/", QUrl::TolerantMode));
|
||
connect(Start_Cmd, SIGNAL(finished(int)), this, SLOT(End_Cmd(int)));
|
||
}
|
||
void Main_Ms::End_Cmd(int)
|
||
{ //qDebug()<<"dsfsdds";
|
||
QString cmd_err = Start_Cmd->readAllStandardError();
|
||
QString cmd_output = Start_Cmd->readAllStandardOutput();
|
||
|
||
if (!cmd_output.isEmpty())
|
||
QMessageBox::critical(this, "MSHV",
|
||
("CMD Error\n"+cmd_err+"\n"+cmd_output),
|
||
QMessageBox::Close);
|
||
disconnect(Start_Cmd, SIGNAL(finished(int)), this, SLOT(End_Cmd(int)));
|
||
}
|
||
#endif
|
||
|
||
void Main_Ms::OnlineTimeCheck()
|
||
{
|
||
//Online timecheck
|
||
QDesktopServices::openUrl(QUrl("http://time.is/", QUrl::TolerantMode));
|
||
}
|
||
int Main_Ms::titleBarHeight()
|
||
{
|
||
QStyleOptionTitleBar options;
|
||
options.initFrom(this);
|
||
|
||
return this->style()->pixelMetric(
|
||
QStyle::PM_TitleBarHeight,
|
||
&options,
|
||
this)-2;//-4 remove 4pix up
|
||
}
|
||
/*void Main_Ms::Screenshot()//to old 2.55
|
||
{
|
||
//QWidget *w = QApplication::activeWindow();
|
||
QDesktopWidget dw;
|
||
QWidget *w=dw.screen(dw.screenNumber(this));
|
||
if (w)
|
||
{
|
||
QString call = "NOCALL";
|
||
|
||
if (!THvTxW->getMy_Call().isEmpty())
|
||
call = THvTxW->getMy_Call();
|
||
|
||
if (call.contains("/"))
|
||
{
|
||
if (call.at(call.count()-1)=='/')
|
||
call.replace("/","_SLASH");
|
||
else
|
||
call.replace("/","_SLASH_");
|
||
}
|
||
|
||
QString str = getDateTime().toString("_yyMMdd_hhmmss");
|
||
|
||
//QPixmap p = QPixmap::grabWidget(w);//samo widgeta
|
||
//QPixmap p = QPixmap::grabWindow(QApplication::desktop()->winId()); // full desktop
|
||
|
||
QRect rect=geometry();
|
||
int tbh=titleBarHeight()+12;//qt5 +12
|
||
QPixmap p;
|
||
|
||
QScreen *screen = QGuiApplication::primaryScreen();
|
||
|
||
if (const QWindow *window = windowHandle())
|
||
screen = window->screen();
|
||
if (!screen)
|
||
return;
|
||
|
||
p=screen->grabWindow(
|
||
w->winId(),
|
||
rect.x()-2,//-2 border left
|
||
rect.y()-tbh,
|
||
rect.width()+4,//-4 border right
|
||
rect.height()+tbh+2);//-2 border down
|
||
|
||
p.save(QString(App_Path+"/Screenshots/"+call+str+".png"));
|
||
}
|
||
}*/
|
||
void Main_Ms::Screenshot()//new 2.56
|
||
{
|
||
QString call = "NOCALL";
|
||
|
||
if (!THvTxW->getMy_Call().isEmpty()) call = THvTxW->getMy_Call();
|
||
|
||
if (call.contains("/"))
|
||
{
|
||
if (call.at(call.count()-1)=='/')
|
||
call.replace("/","_SLASH");
|
||
else
|
||
call.replace("/","_SLASH_");
|
||
}
|
||
|
||
QString str = getDateTime().toString("_yyMMdd_hhmmss");
|
||
|
||
//QPixmap p = QPixmap::grabWidget(w);//samo widgeta
|
||
//QPixmap p = QPixmap::grabWindow(QApplication::desktop()->winId()); // full desktop
|
||
|
||
QRect rect=geometry();
|
||
int tbh=titleBarHeight()+13;//qt5 +12
|
||
QPixmap p;
|
||
|
||
QDesktopWidget dw;
|
||
QScreen* screen = QGuiApplication::screens()[dw.screenNumber(this)];
|
||
/* tested no needed for the moment 2.61
|
||
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
|
||
QScreen* screen0 = QGuiApplication::screenAt(this->mapToGlobal({this->width()/2,0}));
|
||
#else
|
||
QDesktopWidget dw;
|
||
QScreen* screen = QGuiApplication::screens()[dw.screenNumber(this->mapToGlobal({this->width()/2,0}))];
|
||
#endif
|
||
*/
|
||
if (!screen) return;
|
||
|
||
if (const QWindow *window = windowHandle()) screen = window->screen();
|
||
if (!screen) return;
|
||
|
||
p=screen->grabWindow(
|
||
0,
|
||
rect.x()-1,//-2 border left
|
||
rect.y()-tbh,
|
||
rect.width()+2,//-4 border right
|
||
rect.height()+tbh+1);//-2 border down
|
||
|
||
p.save(QString(App_Path+"/Screenshots/"+call+str+".png"));
|
||
}
|
||
void Main_Ms::keyPressEvent(QKeyEvent* event)
|
||
{
|
||
/* Qt::Key_NumberSign-># Qt::Key_Bar->| Qt::Key_Semicolon->;
|
||
if (event->key() == Qt::Key_Space || event->key() == Qt::Key_NumberSign
|
||
|| event->key() == Qt::Key_Bar || event->key() == Qt::Key_Semicolon)
|
||
return;*/
|
||
//qDebug()<<QString("0x%1").arg(event->key(), 8, 16, QLatin1Char( '0' ));
|
||
switch (event->key())
|
||
{
|
||
case Qt::Key_Escape:
|
||
StopTxGlobal();
|
||
break;
|
||
case Qt::Key_F1:
|
||
THvTxW->SetTxMessage(0);
|
||
break;
|
||
case Qt::Key_F2:
|
||
THvTxW->SetTxMessage(1);
|
||
break;
|
||
case Qt::Key_F3:
|
||
THvTxW->SetTxMessage(2);
|
||
break;
|
||
case Qt::Key_F4:
|
||
THvTxW->SetTxMessage(3);
|
||
break;
|
||
case Qt::Key_F5:
|
||
THvTxW->SetTxMessage(4);
|
||
break;
|
||
case Qt::Key_F6:
|
||
THvTxW->SetTxMessage(5);
|
||
break;
|
||
case Qt::Key_F7:
|
||
THvTxW->SetTxMessage(6);
|
||
break;
|
||
|
||
case Qt::Key_F9:
|
||
THvTxW->SetRxOnlyFiSe();
|
||
break;
|
||
|
||
case Qt::Key_F10:
|
||
if (!Box_dspl->isHidden())
|
||
{
|
||
pb_2D_1D->ExtrnalRelease(); //qDebug()<<"F10";
|
||
}
|
||
break;
|
||
case Qt::Key_F11:
|
||
//if (!Box_dspl->isHidden())
|
||
//{
|
||
if (!pb_2D_1D->Button_Stop_b && !f_disp_v_h)//only if on one display and horizontal display
|
||
pb_D1_D2->ExtrnalRelease(); //qDebug()<<"F11";
|
||
//}
|
||
break;
|
||
|
||
case Qt::Key_Z:
|
||
if (event->modifiers()==Qt::ControlModifier)//ControlModifier
|
||
THvTxW->StartStopZap();
|
||
break;
|
||
case Qt::Key_A:
|
||
if (event->modifiers()==Qt::ControlModifier)
|
||
THvTxW->auto_on();
|
||
break;
|
||
case Qt::Key_G:
|
||
if (event->modifiers()==Qt::ControlModifier)
|
||
THvTxW->gen_msg();
|
||
break;
|
||
case Qt::Key_1:
|
||
if (event->modifiers()==Qt::ControlModifier)
|
||
SaveFileDisplay1();
|
||
break;
|
||
case Qt::Key_2:
|
||
if (event->modifiers()==Qt::ControlModifier)
|
||
SaveFileDisplay2();
|
||
break;
|
||
case Qt::Key_L:
|
||
if (event->modifiers()==Qt::AltModifier)
|
||
THvTxW->AddToLogButton();
|
||
break;
|
||
case Qt::Key_M:
|
||
if (event->modifiers()==Qt::AltModifier)
|
||
StartRxGlobal();
|
||
break;
|
||
case Qt::Key_S:
|
||
if (event->modifiers()==Qt::AltModifier)
|
||
StopRxGlobal();
|
||
break;
|
||
case Qt::Key_C:
|
||
if (event->modifiers()==Qt::AltModifier)
|
||
TDecodeList1->Clear_List();
|
||
break;
|
||
case Qt::Key_F12:
|
||
Screenshot();
|
||
break;
|
||
case Qt::Key_F8:
|
||
THvTxW->StartEmptySpotDialog();
|
||
break;
|
||
|
||
case Qt::Key_QuoteLeft: //US //Qt::Key_Apostrophe Qt::Key_W Qt::Key_QuoteLeft;->`~ || Qt::Key_AsciiCircum ^
|
||
case Qt::Key_AsciiCircum://German
|
||
case Qt::Key_Q: //MA Standard
|
||
if (event->modifiers()==Qt::ControlModifier && (s_mod_ident==11 || s_mod_ident==13 || allq65) && !g_block_mam)//"Multi Answering Auto Sequence Protocol FT8"
|
||
{
|
||
if (event->key()==Qt::Key_QuoteLeft || event->key()==Qt::Key_AsciiCircum)//MA DXpedition
|
||
{
|
||
if (Multi_answer_mod->isChecked())
|
||
Multi_answer_mod->setChecked(false);
|
||
else
|
||
Multi_answer_mod->setChecked(true);
|
||
}
|
||
if (event->key()==Qt::Key_Q)//MA Standard
|
||
{
|
||
if (Multi_answer_mod_std->isChecked())
|
||
Multi_answer_mod_std->setChecked(false);
|
||
else
|
||
Multi_answer_mod_std->setChecked(true);
|
||
}
|
||
}
|
||
if (event->modifiers()==Qt::ControlModifier && (s_mod_ident==11 || s_mod_ident==13 || allq65) && g_block_mam)
|
||
{
|
||
QString text = tr("Multi Answering Auto Seq Protocol\n"
|
||
"can be used only in Standard Activity Type\n"
|
||
"Go to Options Macros and correct.");
|
||
QMessageBox::warning(this, "MSHV", text, QMessageBox::Ok);
|
||
}
|
||
break;
|
||
|
||
case Qt::Key_Period:
|
||
if (event->modifiers()==Qt::ControlModifier)
|
||
THvTxW->ExpandShrinkDf(true);//2.05 +
|
||
break;
|
||
case Qt::Key_Comma:
|
||
if (event->modifiers()==Qt::ControlModifier)
|
||
THvTxW->ExpandShrinkDf(false);//2.05 -
|
||
break;
|
||
|
||
case Qt::Key_Equal://0x0000003d:
|
||
if (event->modifiers()==Qt::ControlModifier)
|
||
SkUpDownBandChanged(true);//Band UP
|
||
break;
|
||
case Qt::Key_Minus:
|
||
if (event->modifiers()==Qt::ControlModifier)
|
||
SkUpDownBandChanged(false);//Band DOWN
|
||
break;
|
||
/*case Qt::Key_F:
|
||
if (event->modifiers()==Qt::AltModifier && (s_mod_ident==11 || s_mod_ident==13))
|
||
FilterDialog->SetOnOff();//Filter on/off
|
||
break;*/
|
||
|
||
default:
|
||
QWidget::keyPressEvent(event);
|
||
}
|
||
//qDebug()<<"KeyHex="<<QString::number(event->key(),16);
|
||
}
|