mirror of
https://github.com/ea4k/klog.git
synced 2024-09-22 02:48:29 +00:00
506 lines
15 KiB
C++
506 lines
15 KiB
C++
#ifndef MAINWINDOW_H
|
|
#define MAINWINDOW_H
|
|
/***************************************************************************
|
|
mainwindow.h - description
|
|
-------------------
|
|
begin : sept 2011
|
|
copyright : (C) 2011 by Jaime Robles
|
|
email : jaime@robles.es
|
|
***************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* This file is part of KLog. *
|
|
* *
|
|
* KLog is free software: you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation, either version 3 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* KLog is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with KLog. If not, see <http://www.gnu.org/licenses/>. *
|
|
* *
|
|
*****************************************************************************/
|
|
|
|
#include <QtGui>
|
|
//#include <QtWidgets>
|
|
#include <QPrinter>
|
|
#include <QPrintDialog>
|
|
|
|
#include <QNetworkRequest>
|
|
#include <QNetworkReply>
|
|
|
|
|
|
#include "database.h"
|
|
#include "setupdialog.h"
|
|
#include "helpaboutdialog.h"
|
|
#include "helphelpdialog.h"
|
|
#include "world.h"
|
|
#include "filemanager.h"
|
|
#include "contest.h"
|
|
#include "contest_cqwwdxssb.h"
|
|
#include "dataproxy.h"
|
|
#include "dataproxy_sqlite.h"
|
|
#include "locator.h"
|
|
#include "dxcluster.h"
|
|
#include "awards.h"
|
|
|
|
|
|
class QTimer;
|
|
class QDateTime;
|
|
|
|
class QPushButton;
|
|
class QLineEdit;
|
|
class QComboBox;
|
|
class QTimeEdit;
|
|
class QDateEdit;
|
|
class QStatusBar;
|
|
class QMenuBar;
|
|
class QMenu;
|
|
class QMessageBox;
|
|
class QTextEdit;
|
|
class QProgressDialog;
|
|
|
|
class QPoint;
|
|
|
|
class QGroupBox;
|
|
class QTabWidget;
|
|
class QFrame;
|
|
class QTableView;
|
|
|
|
|
|
|
|
|
|
class QLabel;
|
|
|
|
|
|
|
|
enum
|
|
{
|
|
Log_Id = 0,
|
|
Log_Name = 1,
|
|
Log_BandId = 2,
|
|
Log_ModeId = 3,
|
|
Log_DateId = 4,
|
|
Log_TimeId = 5
|
|
};
|
|
|
|
enum
|
|
{
|
|
NoContest = 0,
|
|
CQ_WW_SSB = 1,
|
|
CQ_WW_CW = 2,
|
|
CQ_WPX_SSB = 3,
|
|
CQ_WPX_CW = 4,
|
|
CQ_WPX_RTTY = 5
|
|
};
|
|
|
|
|
|
class MainWindow : public QMainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
MainWindow(const QString _kontestDir, const QString tversion);
|
|
|
|
private slots:
|
|
|
|
void slotQRZReturnPressed();
|
|
void slotQRZSpacePressed();
|
|
void slotQRZTextChanged();
|
|
void slotSRXTextChanged();
|
|
void slotSTXTextChanged();
|
|
void slotSearchBoxTextChanged();
|
|
void slotSearchExportButtonClicked();
|
|
void slotSearchBoxSelectAllButtonClicked();
|
|
void slotSearchClearButtonClicked();
|
|
void slotSearchBoxSelectionChanged();
|
|
|
|
void slotModeComboBoxChanged();
|
|
void slotBandComboBoxChanged();
|
|
void slotIOTAComboBoxChanged();
|
|
void slotOKButtonClicked();
|
|
void slotSpotItButtonClicked();
|
|
void slotClearButtonClicked();
|
|
void slotUpdateTime();
|
|
void slotLogWinShow();
|
|
void slotScoreWinShow();
|
|
void slotSetup(const int _page=0);
|
|
void slotQsoDeleteFromLog();
|
|
void slotQSLSentViaBureauFromLog();
|
|
void slotQSLSentViaDirectFromLog();
|
|
void slotQSLRecViaDirectFromLog();
|
|
void slotQSLRecViaBureauFromLog();
|
|
void slotQSOToEditFromLog();
|
|
|
|
void slotQsoDeleteFromSearch();
|
|
void slotQSLSentViaBureauFromSearch();
|
|
void slotQSLSentViaDirectFromSearch();
|
|
void slotQSLRecViaDirectFromSearch();
|
|
void slotQSLRecViaBureauFromSearch();
|
|
void slotQSLRecViaDirectMarkReqFromSearch();
|
|
void slotQSLRecViaBureauMarkReqFromSearch();
|
|
void slotQSLSentMarkAsRequested();
|
|
void slotQSLRecMarkAsRequested();
|
|
void slotQSOToEditFromSearch();
|
|
|
|
void slotrstTXTextChanged();
|
|
void slotrstRXTextChanged();
|
|
void slotADIFExport();
|
|
void slotADIFImport();
|
|
void slotRQSLExport();
|
|
void slotCabrilloExport();
|
|
void slotQSLRecvComboBoxChanged();
|
|
void slotQSLSentComboBoxChanged();
|
|
void sloteQSLRecvComboBoxChanged();
|
|
void sloteQSLSentComboBoxChanged();
|
|
void slotQSLViaTextChanged();
|
|
|
|
void slotUpdateCTYDAT();
|
|
void slotToolSearchNeededQSLToSend();
|
|
void slotToolSearchRequestedQSLToSend();
|
|
|
|
void slotExitFromSlotDialog(const int exitID);
|
|
|
|
void slotDownloadFinished(QNetworkReply *reply);
|
|
|
|
void fillQSOData();
|
|
|
|
void newFile();
|
|
void openFile();
|
|
bool saveFile(const QString _fileName);
|
|
bool saveFileAs();
|
|
|
|
|
|
void slotFilePrint();
|
|
//void slotFileClose();
|
|
|
|
void slotHelpHelpAction();
|
|
void slotHelpAboutAction();
|
|
void slotAboutQt();
|
|
|
|
|
|
// logpanel
|
|
void slotRighButtonFromLog( const QPoint& pos);
|
|
void slotDoubleClickLog( const QModelIndex & index);
|
|
void slotDoubleClickSearch( QTreeWidgetItem* item, int); // Double click on a QSO in the search box
|
|
|
|
//doubleClicked ( const QModelIndex & index )
|
|
|
|
//SEARCH
|
|
void slotRighButtonSearch(const QPoint& pos);
|
|
///SEARCH
|
|
|
|
// CLUSTER
|
|
void slotAnalyzeDxClusterSignal(const QStringList _qs);
|
|
|
|
// CLUSTER
|
|
|
|
|
|
private:
|
|
//UPDATE CTY.DAT
|
|
|
|
bool downloadCTYFile();
|
|
bool downloadCtyDatFile();
|
|
bool saveToDisk(const QString &filename, QIODevice *data);
|
|
bool maybeSave();
|
|
|
|
QString saveFileName(const QUrl &url);
|
|
|
|
QNetworkAccessManager manager;
|
|
QNetworkRequest request;
|
|
|
|
//</UPDATE CTY.DAT>
|
|
|
|
void createUI();
|
|
void createUICQWW();
|
|
void createUIDX();
|
|
//void createDXClusterUI();
|
|
void clearBandLabels();
|
|
|
|
void createMenusCommon();
|
|
void createMenusCQWW();
|
|
void createActionsCommon();
|
|
void createActionsCQWW();
|
|
void createActionsDX();
|
|
void createlogPanel();
|
|
void createlogModel();
|
|
|
|
void createScorePanel();
|
|
void createSearchResultsPanel();
|
|
|
|
void initialContestModeConfiguration();
|
|
|
|
void createKeyEvents();
|
|
void updateStatusBar(const QString statusm);
|
|
void updateQSOStatusBar(const QString statusm);
|
|
bool readCtyFile();
|
|
|
|
|
|
void showMenuRightButtonFromLogCreateActions();
|
|
void righButtonFromLogMenu(const int trow);
|
|
|
|
void showMenuRightButtonSearchCreateActions();
|
|
void righButtonSearchMenu(const int trow);
|
|
|
|
void qslSentViaBureau(const int _qsoId);
|
|
//void qslSentViaDirect(const int _qsoId);
|
|
void qslRecViaBureau(const int _qsoId);
|
|
void qslRecViaDirect(const int _qsoId);
|
|
|
|
void qslRecViaBureauMarkReq(const int _qsoId);
|
|
void qslRecViaDirectMarkReq(const int _qsoId);
|
|
|
|
bool isQSLReceived(const int _qsoId);
|
|
bool isQSLSent(const int _qsoId);
|
|
|
|
bool validCharactersInCall(const QString _qrz); // Looks for SQLi and no valid chars in the QRZ
|
|
QString readDataFromUI(); // Reads the QSO data from the UI and returns the SQL Query
|
|
QString readDataFromUIDX();
|
|
QString readDataFromUIDXModifying();
|
|
//QString readDataFromUICQWW();
|
|
|
|
void setAwardDXCC(const int _qsoId, bool modifying); // Adds or modify the status of a DXCC entity
|
|
// data << dxcc(id) << band(id) << mode(id) << confirmed(0/1) << qsoid(id) << modify(0/1);
|
|
|
|
int checkIfWorkedB4(const QString _qrz);
|
|
bool checkContest();
|
|
void showStatusOfDXCC(const QStringList _qs);
|
|
|
|
bool createConnection();
|
|
void createData();
|
|
bool processConfigLine(const QString _line);
|
|
void readConfigData();
|
|
|
|
void checkIfNewBandOrMode();
|
|
void readActiveBands (const QStringList actives);
|
|
void readActiveModes (const QStringList actives);
|
|
|
|
|
|
void qsoToEdit (const int _qso);
|
|
|
|
//void showQRZEntityInfo(const QString _qrz);
|
|
void showEntityInfo(const int _enti);
|
|
QString getStyleColorToLabelFromBand(const QString _b, const QString _q);
|
|
void showAwards();
|
|
void updateQSLRecAndSent();
|
|
double checkFreqRanges(double _f);
|
|
|
|
//int Km2Mile(const bool _imperialSystemSelected, const bool _dataInMiles, const int _km);
|
|
|
|
// CLUSTER
|
|
void clusterSpotToLog(const QString _call, const QString _freq);
|
|
QStringList dxclusterServersList;
|
|
QString dxclusterServerToConnect;
|
|
int dxclusterServerPort;
|
|
// CLUSTER
|
|
|
|
|
|
|
|
QWidget *mainWidget;
|
|
QWidget *dxClusterTabWidget, *searchTabWidget;
|
|
World *world;
|
|
FileManager *filemanager;
|
|
Locator *locator;
|
|
Awards *awards;
|
|
//WorldEditorWidget *worldEditor;
|
|
|
|
HelpHelpDialog *helpHelpDialog;
|
|
HelpAboutDialog *helpAboutDialog;
|
|
|
|
QPushButton *addButton;
|
|
QLabel *distShortLabelN;
|
|
QLabel *distLongLabelN;
|
|
|
|
//QLabel distShortLabelN;
|
|
//QLabel distLongLabelN;
|
|
|
|
|
|
QSqlRelationalTableModel *logModel;
|
|
QWidget *logPanel;
|
|
QTableView *logView;
|
|
QTreeWidget *searchResultsTreeWidget;
|
|
QLabel *logLabel;
|
|
|
|
QWidget *scoreWindow; //, dxWindow;
|
|
QTextEdit *scoreTextEdit;
|
|
|
|
// <UI>
|
|
QGroupBox *gridGroupBox, *qrzgroupBox, *searchgroupBox;
|
|
QFrame *dxUpLeftInputFrame;//, *dxUpRightOutputFrame;
|
|
|
|
QLineEdit *qrzLineEdit, *nameLineEdit, *qthLineEdit, *locatorLineEdit;
|
|
QComboBox *bandComboBox, *modeComboBox;
|
|
QDateEdit *dateEdit;
|
|
QTimeEdit *timeEdit;
|
|
QStatusBar *statusBar, *qsoStatusBar;
|
|
QString statusBarMessage;
|
|
|
|
QTabWidget *dxBottonTab, *dxUpLeftTab, *dxUpRightTab;
|
|
|
|
|
|
QMenu *fileMenu;
|
|
QMenu *toolMenu;
|
|
QMenu *viewMenu;
|
|
QMenu *setupMenu;
|
|
QMenu *helpMenu;
|
|
|
|
QAction *openAct;
|
|
QAction *saveAct;
|
|
QAction *exitAct;
|
|
QAction *printLogAct;
|
|
QAction *addAct;
|
|
QAction *editAct;
|
|
QAction *removeAct;
|
|
QAction *logWinAct;
|
|
QAction *setupAct;
|
|
QAction *helpAct;
|
|
QAction *aboutAct;
|
|
QAction *aboutQtAct;
|
|
|
|
QAction *scoreWinAct;
|
|
QAction *scoreeWinAct;
|
|
QAction *ADIFExport;
|
|
QAction *ADIFImport;
|
|
QAction *ReqQSLExport;
|
|
QAction *CabrilloExport;
|
|
QAction *fillQsoAct;
|
|
QAction *findQSO2QSLAct;
|
|
QAction *findRequestedQSLAct;
|
|
|
|
QAction *downloadCTYAct;
|
|
|
|
|
|
QAction *loggWinAct;
|
|
|
|
QAction *delQSOFromLogAct;
|
|
QAction *qsoToEditFromLogAct;
|
|
QAction *qslSentViaBureauFromLogAct;
|
|
QAction *qslSentViaDirectFromLogAct;
|
|
QAction *qslRecViaBureauFromLogAct;
|
|
QAction *qslRecViaDirectFromLogAct;
|
|
QAction *qslSentRequestedAct;
|
|
QAction *qslRecRequestedAct;
|
|
|
|
QAction *delQSOFromSearchAct;
|
|
QAction *qsoToEditFromSearchAct;
|
|
QAction *qslSentViaBureauFromSearchAct;
|
|
QAction *qslSentViaDirectFromSearchAct;
|
|
QAction *qslRecViaBureauFromSearchAct;
|
|
QAction *qslRecViaDirectFromSearchAct;
|
|
QAction *qslRecViaBureauMarkReqFromSearchAct;
|
|
QAction *qslRecViaDirectMarkReqFromSearchAct;
|
|
|
|
QLineEdit *rstTXLineEdit;
|
|
QLineEdit *rstRXLineEdit;
|
|
QLineEdit *STXLineEdit;
|
|
QLineEdit *SRXLineEdit;
|
|
QPushButton *OKButton, *spotItButton, *clearButton;
|
|
QStringList bands;
|
|
QStringList modes;
|
|
|
|
// UI DX
|
|
QLabel *entityAwardLabel, *iotaAwardLabel, *entityNameLabel;
|
|
QLabel *infoLabel1, *infoLabel2;
|
|
QLabel *bandLabel1, *bandLabel2, *bandLabel3, *bandLabel4;
|
|
QLabel *bandLabel5, *bandLabel6, *bandLabel7, *bandLabel8;
|
|
QLabel *bandLabel9, *bandLabel10, *bandLabel11, *bandLabel12;
|
|
QLabel *continentLabel, *prefixLabel, *cqzLabel, *ituzLabel;
|
|
QLabel *gradShortLabel, *distShortLabel;
|
|
QLabel *gradLongLabel, *distLongLabel;
|
|
|
|
QComboBox *iotaContinentComboBox, *entityAwardComboBox, *entityNameComboBox;
|
|
QLineEdit *iotaNumberLineEdit, *operatorLineEdit, *stationCallSignLineEdit, *myLocatorLineEdit, *commentLineEdit;
|
|
QTextEdit *notesTextEdit;
|
|
QDoubleSpinBox *myPowerSpinBox, *rxPowerSpinBox, *txFreqSpinBox, *rxFreqSpinBox;
|
|
QLCDNumber *freqQLCDNumber;
|
|
QLCDNumber *dxccConfirmedQLCDNumber, *dxccWorkedQLCDNumber,
|
|
*wazConfirmedQLCDNumber, *wazWorkedQLCDNumber,
|
|
*localConfirmedQLCDNumber, *localWorkedQLCDNumber,
|
|
*qsoConfirmedQLCDNumber, *qsoWorkedQLCDNumber;
|
|
QComboBox *eqslSentComboBox, *eqslRecComboBox, *lotwSentComboBox, *lotwRecComboBox;
|
|
QDateEdit *eqslSentQDateEdit, *eqslRecQDateEdit, *lotwSentQDateEdit, *lotwRecQDateEdit;
|
|
|
|
QComboBox *qslSentComboBox, *qslRecComboBox, *qslSentViaComboBox, *qslRecViaComboBox;
|
|
QDateEdit *qslSentQDateEdit, *qslRecQDateEdit;
|
|
QTextEdit *qslmsgTextEdit;
|
|
QLineEdit *qslViaLineEdit;
|
|
|
|
|
|
QLineEdit *searchBoxLineEdit;
|
|
QPushButton *searchBoxClearButton, *searchBoxExportButton, *searchBoxSelectAllButton;
|
|
bool searchSelectAllClicked, stationCallSignShownInSearch;
|
|
bool qslingNeeded;
|
|
|
|
// UI DX
|
|
SetupDialog *setupDialog;
|
|
// <CLUSTER>
|
|
DXClusterWidget *dxClusterWidget;
|
|
bool dxClusterShowHF, dxClusterShowVHF, dxClusterShowWARC, dxClusterShowWorked, dxClusterShowConfirmed, dxClusterShowAnn, dxClusterShowWWV, dxClusterShowWCY;
|
|
//QWidget *dxClusterWidget;
|
|
//QListWidget *dxClusterListWidget;
|
|
//QPushButton *sendDXClusterButton;
|
|
//QLineEdit *inputDXClusterLineEdit;
|
|
// </CLUSTER>
|
|
|
|
// </UI>
|
|
QTimer *timer;
|
|
QDateTime *dateTime;
|
|
|
|
QString kontestDir, defaultADIFLogFile, configFileName;
|
|
QString softwareVersion;
|
|
|
|
|
|
QString currentQrz;
|
|
QString previousQrz;
|
|
|
|
QString stx;
|
|
QString srx;
|
|
|
|
bool realTime, UTCTime, alwaysADIF, needToSave, useDefaultLogFileName, upAndRunning, qrzSmallModDontCalculate, imperialSystem, sendQSLWhenRec;
|
|
// Station Setup
|
|
bool configured, modify;
|
|
bool needToEnd; // Just to control if the software needs to end.
|
|
QString stationQRZ, operatorQRZ, myLocator, dxLocator;
|
|
double myPower;
|
|
int my_CQz, my_ITUz, defaultMode, defaultBand, currentMode, currentModeShown, currentBand, currentBandShown;
|
|
int currentEntity, previousEntity;
|
|
bool InValidCharsInPrevCall;
|
|
int currentLog; // This is to be able to manage multiple logs without showing
|
|
// them all at the same time.
|
|
int modifyingQSO; // When modifying, the QSO is saved here.
|
|
|
|
// Station Setup
|
|
|
|
QColor defaultColor;
|
|
QColor neededColor;
|
|
QColor workedColor;
|
|
QColor confirmedColor;
|
|
QColor newOneColor;
|
|
|
|
// Contest
|
|
int contestMode, points, qsoPoints, multipliers, qsoMultiplier;
|
|
|
|
Contest *contest;
|
|
// Contest
|
|
DataProxy *dataProxy;
|
|
|
|
DataBase *db;
|
|
bool DBinMemory;
|
|
|
|
QTextDocument *doc;
|
|
|
|
|
|
protected:
|
|
void keyPressEvent(QKeyEvent *event);
|
|
void closeEvent(QCloseEvent *event);
|
|
|
|
};
|
|
|
|
#endif
|
|
|