mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-30 08:08:39 -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;
|
||
|
}
|