mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-04 05:50:31 -05:00 
			
		
		
		
	
		
			
	
	
		
			76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								#include "GetUserId.hpp"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <stdexcept>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <QApplication>
							 | 
						||
| 
								 | 
							
								#include <QString>
							 | 
						||
| 
								 | 
							
								#include <QDialog>
							 | 
						||
| 
								 | 
							
								#include <QLineEdit>
							 | 
						||
| 
								 | 
							
								#include <QRegExpValidator>
							 | 
						||
| 
								 | 
							
								#include <QDialogButtonBox>
							 | 
						||
| 
								 | 
							
								#include <QFormLayout>
							 | 
						||
| 
								 | 
							
								#include <QVBoxLayout>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Dialog to get callsign
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								class CallsignDialog final
							 | 
						||
| 
								 | 
							
								  : public QDialog
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  Q_OBJECT;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								private:
							 | 
						||
| 
								 | 
							
								  Q_DISABLE_COPY (CallsignDialog);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
								  explicit CallsignDialog (QWidget * parent = nullptr)
							 | 
						||
| 
								 | 
							
								    : QDialog {parent}
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    setWindowTitle (QApplication::applicationName () + " - " + tr ("Callsign"));
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    callsign_.setValidator (new QRegExpValidator {QRegExp {"[A-Za-z0-9]+"}, this});
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    auto form_layout = new QFormLayout ();
							 | 
						||
| 
								 | 
							
								    form_layout->addRow ("&Callsign:", &callsign_);
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    auto main_layout = new QVBoxLayout (this);
							 | 
						||
| 
								 | 
							
								    main_layout->addLayout (form_layout);
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    auto button_box = new QDialogButtonBox {QDialogButtonBox::Ok | QDialogButtonBox::Cancel};
							 | 
						||
| 
								 | 
							
								    main_layout->addWidget (button_box);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    connect (button_box, &QDialogButtonBox::accepted, this, &CallsignDialog::accept);
							 | 
						||
| 
								 | 
							
								    connect (button_box, &QDialogButtonBox::rejected, this, &CallsignDialog::reject);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								  QString callsign () const {return callsign_.text ();}
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								private:
							 | 
						||
| 
								 | 
							
								  QLineEdit callsign_;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "GetUserId.moc"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								QString get_user_id ()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  // get the users callsign so we can use it to persist the
							 | 
						||
| 
								 | 
							
								  // settings and log file against a unique tag
							 | 
						||
| 
								 | 
							
								  QString id;
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    CallsignDialog dialog;
							 | 
						||
| 
								 | 
							
								    while (id.isEmpty ())
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        if (QDialog::Accepted == dialog.exec ())
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            id = dialog.callsign ().toUpper ();
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        else
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            throw std::runtime_error ("Callsign required");
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return id;
							 | 
						||
| 
								 | 
							
								}
							 |