mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	all types of build. CMake builds use 'svn info' (the git-svn equivalent is also supported) to get the real latest revision of the workspace that is used to source a build. If the sources are not in VCS workspace (build from source snapshot archive for example) then the $Rev$ svn keyword expansion in mainwindow.cpp is used despite its issues with accuracy. Non-CMake builds use the $Rev$ keyword expansion where possible. If a CMake build is from a VCS workspace with local modifications; a '-dirty' suffix is added to the revision number to denote that. If no revision number information can be found the word 'local' is used as a revision number. The revision specification is used in the WSJT-X "about" box and is sent to PSKReporter.info as part of the local station information (this can be viewed at the statistics page http://pskreporter.info/cgi-bin/pskstats.pl). git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4017 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			159 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "logqso.h"
 | |
| 
 | |
| #include <QString>
 | |
| #include <QSettings>
 | |
| #include <QDir>
 | |
| #include <QDebug>
 | |
| 
 | |
| #include "Configuration.hpp"
 | |
| #include "logbook/adif.h"
 | |
| 
 | |
| #include "ui_logqso.h"
 | |
| 
 | |
| #include "moc_logqso.cpp"
 | |
| 
 | |
| LogQSO::LogQSO(QString const& programTitle, QSettings * settings, Configuration const * configuration, QWidget *parent) :
 | |
|   QDialog(parent),
 | |
|   ui(new Ui::LogQSO),
 | |
|   m_settings (settings),
 | |
|   m_configuration (configuration)
 | |
| {
 | |
|   ui->setupUi(this);
 | |
|   setWindowTitle(programTitle + " - Log QSO");
 | |
|   loadSettings ();
 | |
| }
 | |
| 
 | |
| LogQSO::~LogQSO ()
 | |
| {
 | |
| }
 | |
| 
 | |
| void LogQSO::loadSettings ()
 | |
| {
 | |
|   m_settings->beginGroup ("LogQSO");
 | |
|   restoreGeometry (m_settings->value ("geometry", saveGeometry ()).toByteArray ());
 | |
|   ui->cbTxPower->setChecked (m_settings->value ("SaveTxPower", false).toBool ());
 | |
|   ui->cbComments->setChecked (m_settings->value ("SaveComments", false).toBool ());
 | |
|   m_txPower = m_settings->value ("TxPower", "").toString ();
 | |
|   m_comments = m_settings->value ("LogComments", "").toString();
 | |
|   m_settings->endGroup ();
 | |
| }
 | |
| 
 | |
| void LogQSO::storeSettings () const
 | |
| {
 | |
|   m_settings->beginGroup ("LogQSO");
 | |
|   m_settings->setValue ("geometry", saveGeometry ());
 | |
|   m_settings->setValue ("SaveTxPower", ui->cbTxPower->isChecked ());
 | |
|   m_settings->setValue ("SaveComments", ui->cbComments->isChecked ());
 | |
|   m_settings->setValue ("TxPower", m_txPower);
 | |
|   m_settings->setValue ("LogComments", m_comments);
 | |
|   m_settings->endGroup ();
 | |
| }
 | |
| 
 | |
| void LogQSO::initLogQSO(QString hisCall, QString hisGrid, QString mode,
 | |
|                         QString rptSent, QString rptRcvd, QDateTime dateTime,
 | |
|                         double dialFreq, QString myCall, QString myGrid,
 | |
|                         bool noSuffix, bool toRTTY, bool dBtoComments)
 | |
| {
 | |
|   ui->call->setText(hisCall);
 | |
|   ui->grid->setText(hisGrid);
 | |
|   ui->name->setText("");
 | |
|   ui->txPower->setText("");
 | |
|   ui->comments->setText("");
 | |
|   if (ui->cbTxPower->isChecked ()) ui->txPower->setText(m_txPower);
 | |
|   if (ui->cbComments->isChecked ()) ui->comments->setText(m_comments);
 | |
|   if(dBtoComments) {
 | |
|     QString t=mode;
 | |
|     if(rptSent!="") t+="  Sent: " + rptSent;
 | |
|     if(rptRcvd!="") t+="  Rcvd: " + rptRcvd;
 | |
|     ui->comments->setText(t);
 | |
|   }
 | |
|   if(noSuffix and mode.mid(0,3)=="JT9") mode="JT9";
 | |
|   if(toRTTY and mode.mid(0,3)=="JT9") mode="RTTY";
 | |
|   ui->mode->setText(mode);
 | |
|   ui->sent->setText(rptSent);
 | |
|   ui->rcvd->setText(rptRcvd);
 | |
|   m_dateTime=dateTime;
 | |
|   QString date=dateTime.toString("yyyy-MM-dd");
 | |
|   ui->date->setText(date);
 | |
|   QString time=dateTime.toString("hhmm");
 | |
|   ui->time->setText(time);
 | |
|   m_dialFreq=dialFreq;
 | |
|   m_myCall=myCall;
 | |
|   m_myGrid=myGrid;
 | |
|   QString band= ADIF::bandFromFrequency(dialFreq);
 | |
|   ui->band->setText(band);
 | |
| 
 | |
|   show ();
 | |
| }
 | |
| 
 | |
| void LogQSO::accept()
 | |
| {
 | |
|   QString hisCall,hisGrid,mode,rptSent,rptRcvd,date,time,band;
 | |
|   QString comments,name;
 | |
| 
 | |
|   hisCall=ui->call->text();
 | |
|   hisGrid=ui->grid->text();
 | |
|   mode=ui->mode->text();
 | |
|   rptSent=ui->sent->text();
 | |
|   rptRcvd=ui->rcvd->text();
 | |
|   date=ui->date->text();
 | |
|   date=date.mid(0,4) + date.mid(5,2) + date.mid(8,2);
 | |
|   time=ui->time->text();
 | |
|   band=ui->band->text();
 | |
|   name=ui->name->text();
 | |
|   m_txPower=ui->txPower->text();
 | |
|   comments=ui->comments->text();
 | |
|   m_comments=comments;
 | |
|   QString strDialFreq(QString::number(m_dialFreq,'f',6));
 | |
| 
 | |
|   //Log this QSO to ADIF file "wsjtx_log.adi"
 | |
|   QString filename = "wsjtx_log.adi";  // TODO allow user to set
 | |
|   ADIF adifile;
 | |
|   auto adifilePath = m_configuration->data_path ().absoluteFilePath (filename);
 | |
|   adifile.init(adifilePath);
 | |
|   if (!adifile.addQSOToFile(hisCall,hisGrid,mode,rptSent,rptRcvd,date,time,band,comments,name,strDialFreq,m_myCall,m_myGrid,m_txPower))
 | |
|   {
 | |
|       QMessageBox m;
 | |
|       m.setText("Cannot open file \"" + adifilePath + "\".");
 | |
|       m.exec();
 | |
|   }
 | |
| 
 | |
| //Log this QSO to file "wsjtx.log"
 | |
|   QFile f(m_configuration->data_path ().absoluteFilePath ("wsjtx.log"));
 | |
|   if(!f.open(QIODevice::Text | QIODevice::Append)) {
 | |
|     QMessageBox m;
 | |
|     m.setText("Cannot open file \"" + f.fileName () + "\".");
 | |
|     m.exec();
 | |
|   } else {
 | |
|     QString logEntry=m_dateTime.date().toString("yyyy-MMM-dd,") +
 | |
|            m_dateTime.time().toString("hh:mm,") + hisCall + "," +
 | |
|            hisGrid + "," + strDialFreq + "," + mode +
 | |
|                "," + rptSent + "," + rptRcvd;
 | |
|        if(m_txPower!="") logEntry += "," + m_txPower;
 | |
|        if(comments!="") logEntry += "," + comments;
 | |
|        if(name!="") logEntry += "," + name;
 | |
|     QTextStream out(&f);
 | |
|     out << logEntry << endl;
 | |
|     f.close();
 | |
|   }
 | |
| 
 | |
| //Clean up and finish logging
 | |
|   emit(acceptQSO(true));
 | |
|   QDialog::accept();
 | |
| }
 | |
| 
 | |
| void LogQSO::reject()
 | |
| {
 | |
|   emit(acceptQSO(false));
 | |
|   QDialog::reject();
 | |
| }
 | |
| 
 | |
| // closeEvent is only called from the system menu close widget for a
 | |
| // modeless dialog so we use the hideEvent override to store the
 | |
| // window settings
 | |
| void LogQSO::hideEvent (QHideEvent * e)
 | |
| {
 | |
|   storeSettings ();
 | |
|   QDialog::hideEvent (e);
 | |
| }
 |