You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.0 KiB

#include "addtradedialog.h"
#include "ui_addtradedialog.h"
#include <QMessageBox>
#include <QDebug>
#include "userdata.h"
#include <QCompleter>
AddTradeDialog::AddTradeDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AddTradeDialog)
{
ui->setupUi(this);
}
AddTradeDialog::~AddTradeDialog()
{
delete ui;
}
void AddTradeDialog::SetStockBasicList(const QList<StockBasicInfo> &stockBasicList)
{
int count = stockBasicList.count();
QStringList codeList,nameList;
for(int i = 0 ; i < count; i++)
{
codeList.append(stockBasicList[i].code);
nameList.append(stockBasicList[i].name);
}
m_StockBasicList = stockBasicList;
InitLineEdit(codeList,nameList);
}
void AddTradeDialog::SetToken(const QString &token)
{
m_Token = token;
}
void AddTradeDialog::InitLineEdit(const QStringList& codeList,const QStringList& nameList)
{
QCompleter* codeCompleter = new QCompleter(codeList, ui->code);
ui->code->setCompleter(codeCompleter);
connect(codeCompleter, QOverload<const QString &>::of(&QCompleter::activated),
[=](const QString &text){
on_code_Activated(text);
});
QCompleter* nameCompleter = new QCompleter(nameList, ui->name);
ui->name->setCompleter(nameCompleter);
connect(nameCompleter, QOverload<const QString &>::of(&QCompleter::activated),
[=](const QString &text){
on_name_Activated(text);
});}
void AddTradeDialog::on_pushButton_OK_clicked()
{
TradingRequestParam requestParam;
requestParam.code = ui->code->text();
requestParam.name = ui->name->text();
requestParam.tradeDay = "2023-12-29";
requestParam.token = m_Token;
UserData::Instanse()->AddTradeRecord(requestParam);
this->accept();
}
void AddTradeDialog::on_name_Activated(const QString &text)
{
qDebug() << "You selected:" << text;
QString name = text;
int count = m_StockBasicList.count();
for(int i = 0 ; i < count; i++)
{
if(m_StockBasicList[i].name == name)
{
ui->code->setText(m_StockBasicList[i].code);
break;
}
}
}
void AddTradeDialog::on_code_Activated(const QString &text)
{
QString code = text;
int count = m_StockBasicList.count();
for(int i = 0 ; i < count; i++)
{
if(m_StockBasicList[i].code == code)
{
ui->name->setText(m_StockBasicList[i].name);
break;
}
}
}
void AddTradeDialog::on_name_editingFinished()
{
QString name = ui->name->text();
int count = m_StockBasicList.count();
for(int i = 0 ; i < count; i++)
{
if(m_StockBasicList[i].name == name)
{
ui->code->setText(m_StockBasicList[i].code);
break;
}
}
}
void AddTradeDialog::on_code_editingFinished()
{
QString code = ui->code->text();
int count = m_StockBasicList.count();
for(int i = 0 ; i < count; i++)
{
if(m_StockBasicList[i].code == code)
{
ui->name->setText(m_StockBasicList[i].name);
break;
}
}
}