mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-30 22:29:13 +08:00
Ref T226, using airport completer
This commit is contained in:
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
#include "pilotform.h"
|
#include "pilotform.h"
|
||||||
#include "ui_pilotform.h"
|
#include "ui_pilotform.h"
|
||||||
|
#include "blackgui/components/airportsmallcompleter.h"
|
||||||
#include "blackgui/guiapplication.h"
|
#include "blackgui/guiapplication.h"
|
||||||
#include "blackgui/uppercasevalidator.h"
|
#include "blackgui/uppercasevalidator.h"
|
||||||
#include "blackcore/webdataservices.h"
|
|
||||||
#include "blackmisc/aviation/aircrafticaocode.h"
|
#include "blackmisc/aviation/aircrafticaocode.h"
|
||||||
#include "blackmisc/network/user.h"
|
#include "blackmisc/network/user.h"
|
||||||
#include "blackconfig/buildconfig.h"
|
#include "blackconfig/buildconfig.h"
|
||||||
@@ -22,7 +22,7 @@ using namespace BlackConfig;
|
|||||||
using namespace BlackMisc;
|
using namespace BlackMisc;
|
||||||
using namespace BlackMisc::Aviation;
|
using namespace BlackMisc::Aviation;
|
||||||
using namespace BlackMisc::Network;
|
using namespace BlackMisc::Network;
|
||||||
using namespace BlackCore;
|
using namespace BlackGui::Components;
|
||||||
|
|
||||||
namespace BlackGui
|
namespace BlackGui
|
||||||
{
|
{
|
||||||
@@ -38,18 +38,11 @@ namespace BlackGui
|
|||||||
ui->lblp_Password->setToolTips("ok", "wrong");
|
ui->lblp_Password->setToolTips("ok", "wrong");
|
||||||
ui->lblp_RealName->setToolTips("ok", "wrong");
|
ui->lblp_RealName->setToolTips("ok", "wrong");
|
||||||
|
|
||||||
ui->le_HomeAirport->setValidator(new CUpperCaseValidator(this));
|
|
||||||
this->initCompleters(CEntityFlags::AirportEntity);
|
|
||||||
|
|
||||||
connect(ui->tb_UnhidePassword, &QToolButton::clicked, this, &CPilotForm::unhidePassword);
|
connect(ui->tb_UnhidePassword, &QToolButton::clicked, this, &CPilotForm::unhidePassword);
|
||||||
connect(ui->le_Id, &QLineEdit::editingFinished, this, &CPilotForm::doValidation);
|
connect(ui->le_Id, &QLineEdit::editingFinished, this, &CPilotForm::doValidation);
|
||||||
connect(ui->le_HomeAirport, &QLineEdit::editingFinished, this, &CPilotForm::doValidation);
|
connect(ui->comp_HomeAirport, &CAirportSmallCompleter::editingFinished, this, &CPilotForm::doValidation);
|
||||||
connect(ui->le_Password, &QLineEdit::editingFinished, this, &CPilotForm::doValidation);
|
connect(ui->le_Password, &QLineEdit::editingFinished, this, &CPilotForm::doValidation);
|
||||||
connect(ui->le_RealName, &QLineEdit::editingFinished, this, &CPilotForm::doValidation);
|
connect(ui->le_RealName, &QLineEdit::editingFinished, this, &CPilotForm::doValidation);
|
||||||
|
|
||||||
// web service data
|
|
||||||
Q_ASSERT_X(sGui && sGui->hasWebDataServices(), Q_FUNC_INFO, "Need web data services");
|
|
||||||
connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CPilotForm::onWebServiceDataRead);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CPilotForm::~CPilotForm()
|
CPilotForm::~CPilotForm()
|
||||||
@@ -65,7 +58,7 @@ namespace BlackGui
|
|||||||
CUser CPilotForm::getUser() const
|
CUser CPilotForm::getUser() const
|
||||||
{
|
{
|
||||||
CUser user = CUser(ui->le_Id->text().trimmed(), CUser::beautifyRealName(ui->le_RealName->text()), "", ui->le_Password->text());
|
CUser user = CUser(ui->le_Id->text().trimmed(), CUser::beautifyRealName(ui->le_RealName->text()), "", ui->le_Password->text());
|
||||||
user.setHomeBase(CAirportIcaoCode(ui->le_HomeAirport->text().trimmed()));
|
user.setHomeBase(ui->comp_HomeAirport->getAirportIcaoCode());
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,14 +72,14 @@ namespace BlackGui
|
|||||||
ui->le_RealName->setText(user.getRealName());
|
ui->le_RealName->setText(user.getRealName());
|
||||||
if (user.hasHomeBase())
|
if (user.hasHomeBase())
|
||||||
{
|
{
|
||||||
ui->le_HomeAirport->setText(user.getHomeBase().asString());
|
ui->comp_HomeAirport->setAirportIcaoCode(user.getHomeBase());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CBuildConfig::isLocalDeveloperDebugBuild())
|
else if (CBuildConfig::isLocalDeveloperDebugBuild())
|
||||||
{
|
{
|
||||||
ui->le_Id->setText("1288459");
|
ui->le_Id->setText("1288459");
|
||||||
ui->le_Password->setText("4769");
|
ui->le_Password->setText("4769");
|
||||||
ui->le_HomeAirport->setText("LOWI");
|
ui->comp_HomeAirport->setAirportIcaoCode("LOWI");
|
||||||
ui->le_RealName->setText("Swift Project");
|
ui->le_RealName->setText("Swift Project");
|
||||||
}
|
}
|
||||||
this->validate();
|
this->validate();
|
||||||
@@ -97,7 +90,7 @@ namespace BlackGui
|
|||||||
{
|
{
|
||||||
ui->le_Id->clear();
|
ui->le_Id->clear();
|
||||||
ui->le_Password->clear();
|
ui->le_Password->clear();
|
||||||
ui->le_HomeAirport->clear();
|
ui->comp_HomeAirport->clear();
|
||||||
ui->le_RealName->clear();
|
ui->le_RealName->clear();
|
||||||
|
|
||||||
ui->lblp_Id->setTicked(false);
|
ui->lblp_Id->setTicked(false);
|
||||||
@@ -108,7 +101,7 @@ namespace BlackGui
|
|||||||
|
|
||||||
void CPilotForm::setReadOnly(bool readonly)
|
void CPilotForm::setReadOnly(bool readonly)
|
||||||
{
|
{
|
||||||
ui->le_HomeAirport->setReadOnly(readonly);
|
ui->comp_HomeAirport->setReadOnly(readonly);
|
||||||
ui->le_Id->setReadOnly(readonly);
|
ui->le_Id->setReadOnly(readonly);
|
||||||
ui->le_Password->setReadOnly(readonly);
|
ui->le_Password->setReadOnly(readonly);
|
||||||
ui->le_RealName->setReadOnly(readonly);
|
ui->le_RealName->setReadOnly(readonly);
|
||||||
@@ -154,35 +147,6 @@ namespace BlackGui
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPilotForm::initCompleters(CEntityFlags::Entity entity)
|
|
||||||
{
|
|
||||||
// completers where possible
|
|
||||||
if (sGui && sGui->hasWebDataServices())
|
|
||||||
{
|
|
||||||
if (entity.testFlag(CEntityFlags::AirportEntity) && !ui->le_HomeAirport->completer())
|
|
||||||
{
|
|
||||||
// one time init
|
|
||||||
const QStringList airports = sGui->getWebDataServices()->getAirports().allIcaoCodes(true);
|
|
||||||
if (!airports.isEmpty())
|
|
||||||
{
|
|
||||||
QCompleter *completer = new QCompleter(airports, this);
|
|
||||||
QStyledItemDelegate *itemDelegate = new QStyledItemDelegate(completer);
|
|
||||||
completer->popup()->setItemDelegate(itemDelegate);
|
|
||||||
ui->le_HomeAirport->setCompleter(completer);
|
|
||||||
completer->popup()->setObjectName("AirportCompleter");
|
|
||||||
completer->popup()->setMinimumWidth(175);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPilotForm::onWebServiceDataRead(CEntityFlags::Entity entity, CEntityFlags::ReadState state, int number)
|
|
||||||
{
|
|
||||||
if (state != CEntityFlags::ReadFinished) { return; }
|
|
||||||
Q_UNUSED(number);
|
|
||||||
this->initCompleters(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPilotForm::doValidation()
|
void CPilotForm::doValidation()
|
||||||
{
|
{
|
||||||
this->validate();
|
this->validate();
|
||||||
|
|||||||
@@ -59,12 +59,6 @@ namespace BlackGui
|
|||||||
//! Unhide password
|
//! Unhide password
|
||||||
void unhidePassword();
|
void unhidePassword();
|
||||||
|
|
||||||
//! Completers
|
|
||||||
void initCompleters(BlackMisc::Network::CEntityFlags::Entity entity);
|
|
||||||
|
|
||||||
//! Web services read
|
|
||||||
void onWebServiceDataRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState state, int number);
|
|
||||||
|
|
||||||
//! Call validation
|
//! Call validation
|
||||||
void doValidation();
|
void doValidation();
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,14 @@
|
|||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>CPilotForm</class>
|
<class>CPilotForm</class>
|
||||||
<widget class="QFrame" name="CPilotForm">
|
<widget class="QFrame" name="CPilotForm">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>295</width>
|
||||||
|
<height>57</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Pilot info</string>
|
<string>Pilot info</string>
|
||||||
</property>
|
</property>
|
||||||
@@ -21,7 +29,7 @@
|
|||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="lbl_Id">
|
<widget class="QLabel" name="lbl_Id">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Id:</string>
|
<string>Id</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -35,27 +43,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="3">
|
|
||||||
<widget class="QLabel" name="lbl_Password">
|
|
||||||
<property name="text">
|
|
||||||
<string>Password</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="4">
|
|
||||||
<widget class="QToolButton" name="tb_UnhidePassword">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>unhide password</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../blackmisc/blackmisc.qrc">
|
|
||||||
<normaloff>:/diagona/icons/diagona/icons/question-button.png</normaloff>:/diagona/icons/diagona/icons/question-button.png</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="5">
|
<item row="0" column="5">
|
||||||
<widget class="QLineEdit" name="le_Password">
|
<widget class="QLineEdit" name="le_Password">
|
||||||
<property name="echoMode">
|
<property name="echoMode">
|
||||||
@@ -63,24 +50,17 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="6">
|
<item row="0" column="7">
|
||||||
<widget class="BlackGui::CTickLabel" name="lblp_Password">
|
<widget class="BlackGui::CTickLabel" name="lblp_Password">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="0" column="3">
|
||||||
<widget class="QLabel" name="lbl_RealName">
|
<widget class="QLabel" name="lbl_Password">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Real name</string>
|
<string>Password</string>
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLineEdit" name="le_RealName">
|
|
||||||
<property name="placeholderText">
|
|
||||||
<string>e.g. Joe Doe</string>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -101,23 +81,51 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="4" colspan="2">
|
<item row="1" column="0">
|
||||||
<widget class="QLineEdit" name="le_HomeAirport">
|
<widget class="QLabel" name="lbl_RealName">
|
||||||
<property name="maxLength">
|
<property name="toolTip">
|
||||||
<number>4</number>
|
<string>Real name</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="placeholderText">
|
<property name="text">
|
||||||
<string>e.g. "KLAX"</string>
|
<string>Name</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="6">
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="le_RealName">
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>e.g. Joe Doe</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="7">
|
||||||
<widget class="BlackGui::CTickLabel" name="lblp_HomeAirport">
|
<widget class="BlackGui::CTickLabel" name="lblp_HomeAirport">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="6">
|
||||||
|
<widget class="QToolButton" name="tb_UnhidePassword">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>unhide password</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../blackmisc/blackmisc.qrc">
|
||||||
|
<normaloff>:/diagona/icons/diagona/icons/question-button.png</normaloff>:/diagona/icons/diagona/icons/question-button.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="5" colspan="2">
|
||||||
|
<widget class="BlackGui::Components::CAirportSmallCompleter" name="comp_HomeAirport">
|
||||||
|
<property name="focusPolicy">
|
||||||
|
<enum>Qt::StrongFocus</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
@@ -126,7 +134,19 @@
|
|||||||
<extends>QLabel</extends>
|
<extends>QLabel</extends>
|
||||||
<header>blackgui/ticklabel.h</header>
|
<header>blackgui/ticklabel.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>BlackGui::Components::CAirportSmallCompleter</class>
|
||||||
|
<extends>QFrame</extends>
|
||||||
|
<header>blackgui/components/airportsmallcompleter.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
|
<tabstops>
|
||||||
|
<tabstop>le_Id</tabstop>
|
||||||
|
<tabstop>le_Password</tabstop>
|
||||||
|
<tabstop>tb_UnhidePassword</tabstop>
|
||||||
|
<tabstop>le_RealName</tabstop>
|
||||||
|
</tabstops>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../blackmisc/blackmisc.qrc"/>
|
<include location="../../blackmisc/blackmisc.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user