bool tcMarket::AppendStock(QWidget *pParent, tcStockInfo &pStockInfo) { tcStockManager *stockmanager = tcObjService::GetStockManager(); tcStock *stock = stockmanager->AppendStock(pParent); if (stock == NULL) { return false; } tcStockInfo stockinfo(stock->GetStockCode()); mStockInfoList.append(stockinfo); pStockInfo = stockinfo; emit OnStocksModified(); return true; }
bool tcMarket::AppendStock(const QString &pStockCode, const QString &pStockName, tcStockInfo &pStockInfo) { tcStockManager *stockmanager = tcObjService::GetStockManager(); tcStock *stock = stockmanager->AppendStock(pStockCode, pStockName); if (stock == NULL) { tcLogService::CreateLog(this, "Error when append stock to stock manager."); return false; } tcStockInfo stockinfo(stock->GetStockCode()); mStockInfoList.append(stockinfo); pStockInfo = stockinfo; emit OnStocksModified(); return true; }
void tcStockInfoDialog::DoOk() { if (mAppendMode) { if (edt1->text().length() == 0) { QMessageBox::warning(this, SYSTEM_NAME, tr("Must input the stock code.")); edt1->setFocus(); return; } tcStockInfo stockinfo(edt1->text()); if (stockinfo.IsAvailable()) { QMessageBox::warning(this, SYSTEM_NAME, tr("The stock with a same stock code already exists, change another stock code please.")); edt1->setFocus(); return; } } if (edt2->text().length() == 0) { QMessageBox::warning(this, SYSTEM_NAME, tr("Must input the stock name.")); edt2->setFocus(); return; } accept(); }
void tcSinaWebImportSource::ProcessForOneStock(const QString &pText) { /* process the text like this: <td class=td04 height=23>!!<a href="http://finance.sina.com.cn/realstock/sh600004.html" target=_blank>600004</a></td> <td class=td06>XXXXXX</td> <td class=td06>12.26</td> <td class=td06>12.110</td> <td class=td06>11.780</td> <td class=td06>12.330</td> <td class=td06>11.610</td> <td class=td06><font color=#ff0020>0.15(1.24%)</font></td> <td class=td06>5274438</td> <td class=td06>63744700</td> <td class=td06> 2007-03-19</td> <td class=td05> 14:44:37</td> */ QRegExp rx("<.+>([^<>]+)</.+>"); rx.setMinimal(true); int pos = 0; int itemindex = 0; QString stockcode, stockname, currentprice, closeprice, openprice, maxprice, minprice, quantity, totalprice, datestr, timestr; while ((pos = rx.indexIn(pText, pos)) != -1) { switch (itemindex) { case 0: //stock code stockcode = rx.cap(1); break; case 1: //stock name stockname = rx.cap(1); break; case 2: //current price currentprice = rx.cap(1); break; case 3: //close price (yesterday) closeprice = rx.cap(1); break; case 4: //open price openprice = rx.cap(1); break; case 5: //max price maxprice = rx.cap(1); break; case 6: //min price minprice = rx.cap(1); break; case 7: //up/down rate break; case 8: //quantity quantity = rx.cap(1); break; case 9: //total price totalprice = rx.cap(1); break; case 10: //date datestr = rx.cap(1); break; case 11: //time timestr = rx.cap(1); break; default: break; } pos += rx.matchedLength(); itemindex++; } emit OnAppendMessage(tr("Processing stock %1 ...").arg(stockcode), true); if (itemindex <12) { emit OnAppendMessage(tr("Error when extract data of stock."), false); return; } //get the stock object tcStockInfo stockinfo(stockcode); if (! stockinfo.IsAvailable()) { emit OnAppendMessage(tr("The stock not exists."), false); return; } //set the data of yesterday QDate date = QDate::fromString(datestr.right(10), "yyyy-MM-dd"); date = date.addDays(-1); if (date.dayOfWeek() == 6) { date = date.addDays(-1); } else if (date.dayOfWeek() == 7) { date = date.addDays(-2); } tcStockDailyData dailydata; if (! stockinfo->ReadData(date, &dailydata)) { emit OnAppendMessage(tr("Error when get daily data of stock."), false); return; } dailydata.ClosePrice = long(closeprice.toFloat() * 100); if (! stockinfo->WriteData(date, &dailydata)) { emit OnAppendMessage(tr("Error when set daily data of stock."), false); return; } //set the data of today date = QDate::fromString(datestr.right(10), "yyyy-MM-dd"); if (! stockinfo->ReadData(date, &dailydata)) { emit OnAppendMessage(tr("Error when get daily data of stock."), false); return; } dailydata.OpenPrice = long(openprice.toFloat() * 100); dailydata.ClosePrice = long(currentprice.toFloat() * 100); dailydata.MaxPrice = long(maxprice.toFloat() * 100); dailydata.MinPrice = long(minprice.toFloat() * 100); dailydata.TotalPrice = totalprice.toLong() / 100; dailydata.Quantity = quantity.toLong() / 100; if (! stockinfo->WriteData(date, &dailydata)) { emit OnAppendMessage(tr("Error when set daily data of stock."), false); return; } }