QList <S_AIS_DB_SHIP> cAISDataBase
::addCurrentShipDataWithFilter(AIS_DB_FILTER filterType,
QString searchKey
) //void cAISDataBase::addCurrentShipDataWithFilter(AIS_DB_FILTER filterType,QString searchKey)
{
QList<S_AIS_DB_SHIP>aisList;
if (filterType==ADF_MMSI)
else if(filterType==ADF_AREAFILTER)
else if (filterType==ADF_STATUS)
else if (filterType==ADF_COG)
else if (filterType==ADF_SOG)
else if (filterType==ADF_IMO)
else if (filterType==ADF_CALLSIGN)
else if (filterType==ADF_STERN)
else if (filterType==ADF_BOW)
else if (filterType==ADF_STARBOARD)
else if (filterType==ADF_PORT)
else if (filterType==ADF_WIDTH)
else if (filterType==ADF_LENGTH)
else if (filterType==ADF_NAME)
cMYSQLDB *mysqldb=createDbInstance();
if(mysqldb->open()){
MYSQL_RES *result;
MYSQL_ROW row;
QString query
="SELECT *FROM SKM_T_AIS_CURRENTSHIPLIST where" +type
+ " ='" +searchKey
+";";
result=mysqldb->query(query);
if (result){
S_AIS_DB_SHIP dbShip;
while ((row=mysql_fetch_row(result))!=NULL){
S_AIS_DB_STATUSDATA statusDataTemp;
statusDataTemp.
mmsi = QString(row
[0]);
statusDataTemp.
lat = QString(row
[1]).
toDouble();
statusDataTemp.
lon = QString(row
[2]).
toDouble();
statusDataTemp.
sog = QString(row
[3]).
toDouble();
statusDataTemp.
cog = QString(row
[4]).
toDouble();
statusDataTemp.
lastUpdate=QString(row
[5]);
statusDataTemp.
status=QString(row
[6]);
S_AIS_DB_SHIPINFO shipInfoDataTemp;
shipInfoDataTemp.
mmsi=QString(row
[7]);
shipInfoDataTemp.
IMO = QString(row
[8]);
shipInfoDataTemp.
callsign=QString(row
[9]);
shipInfoDataTemp.
name = QString(row
[10]);
shipInfoDataTemp.
width=QString(row
[11]).
toDouble();
shipInfoDataTemp.
length=QString(row
[12]).
toDouble();
shipInfoDataTemp.
dim_port=QString(row
[13]).
toInt();
shipInfoDataTemp.
dim_starboard=QString(row
[14]).
toInt();
shipInfoDataTemp.
dim_bow=QString(row
[15]).
toInt();
shipInfoDataTemp.
dim_stern=QString(row
[16]).
toInt();
aisList.append(dbShip);
}
}
mysqldb->closeRslt(result);
mysqldb->close();
}
delete mysqldb;
}
QList <S_AIS_DB_SHIP> cAISDataBase::addCurrentShipDataWithFilter(AIS_DB_FILTER filterType, QString searchKey)
//void cAISDataBase::addCurrentShipDataWithFilter(AIS_DB_FILTER filterType,QString searchKey)
{
QList<S_AIS_DB_SHIP>aisList;
QString type;
if (filterType==ADF_MMSI)
type=QString("mmsi");
else if(filterType==ADF_AREAFILTER)
type=QString("areaFilter");
else if (filterType==ADF_STATUS)
type=QString("status");
else if (filterType==ADF_COG)
type=QString("cog");
else if (filterType==ADF_SOG)
type=QString("sog");
else if (filterType==ADF_IMO)
type=QString("imo");
else if (filterType==ADF_CALLSIGN)
type=QString("callsign");
else if (filterType==ADF_STERN)
type=QString("dim_stern");
else if (filterType==ADF_BOW)
type=QString("dim_bow");
else if (filterType==ADF_STARBOARD)
type=QString("dim_starboard");
else if (filterType==ADF_PORT)
type=QString("dim_port");
else if (filterType==ADF_WIDTH)
type=QString("width");
else if (filterType==ADF_LENGTH)
type=QString("length");
else if (filterType==ADF_NAME)
type=QString("name");
cMYSQLDB *mysqldb=createDbInstance();
if(mysqldb->open()){
MYSQL_RES *result;
MYSQL_ROW row;
QString query="SELECT *FROM SKM_T_AIS_CURRENTSHIPLIST where" +type+ " ='" +searchKey +";";
result=mysqldb->query(query);
if (result){
S_AIS_DB_SHIP dbShip;
while ((row=mysql_fetch_row(result))!=NULL){
S_AIS_DB_STATUSDATA statusDataTemp;
statusDataTemp.mmsi = QString(row[0]);
statusDataTemp.lat = QString(row[1]).toDouble();
statusDataTemp.lon = QString(row[2]).toDouble();
statusDataTemp.sog = QString(row[3]).toDouble();
statusDataTemp.cog = QString(row[4]).toDouble();
statusDataTemp.lastUpdate=QString(row[5]);
statusDataTemp.status=QString(row[6]);
S_AIS_DB_SHIPINFO shipInfoDataTemp;
shipInfoDataTemp.mmsi=QString(row[7]);
shipInfoDataTemp.IMO = QString(row[8]);
shipInfoDataTemp.callsign=QString(row[9]);
shipInfoDataTemp.name = QString(row[10]);
shipInfoDataTemp.width=QString(row[11]).toDouble();
shipInfoDataTemp.length=QString(row[12]).toDouble();
shipInfoDataTemp.dim_port=QString(row[13]).toInt();
shipInfoDataTemp.dim_starboard=QString(row[14]).toInt();
shipInfoDataTemp.dim_bow=QString(row[15]).toInt();
shipInfoDataTemp.dim_stern=QString(row[16]).toInt();
aisList.append(dbShip);
}
}
mysqldb->closeRslt(result);
mysqldb->close();
}
delete mysqldb;
}
To copy to clipboard, switch view to plain text mode
this program to filter tableWidget items
void AIS
::on_lineEdit_textChanged(QString ) {
QList<S_AIS_DB_SHIP>aislist;
aislist=m_db->addCurrentShipDataWithFilter(filterType,searchKey);
for (int i=0;i<aislist.count();i++){
int curRow =ui->tableWidget->rowCount();
ui->tableWidget->insertRow(curRow);
ui
->tableWidget
->setItem
(curRow,
0,
new QTableWidgetItem (aislist.
at(i
).
statusData.
mmsi));
ui
->tableWidget
->setItem
(curRow,
1,
new QTableWidgetItem (aislist.
at(i
).
shipInfo.
IMO));
ui
->tableWidget
->setItem
(curRow,
2,
new QTableWidgetItem (aislist.
at(i
).
shipInfo.
name));
}
searchKey = ui->lineEdit->text();
if(ui->comboBox->currentText() == "MMSI"){
filterType = ADF_MMSI;
}
else if(ui->comboBox->currentText() == "IMO"){
filterType = ADF_IMO;
}
else if(ui->comboBox->currentText() == "Name"){
filterType = ADF_NAME;
}
m_db->addCurrentShipDataWithFilter(filterType, searchKey);
}
void AIS::on_lineEdit_textChanged(QString )
{
QList<S_AIS_DB_SHIP>aislist;
aislist=m_db->addCurrentShipDataWithFilter(filterType,searchKey);
for (int i=0;i<aislist.count();i++){
int curRow =ui->tableWidget->rowCount();
ui->tableWidget->insertRow(curRow);
ui->tableWidget->setItem(curRow,0, new QTableWidgetItem (aislist.at(i).statusData.mmsi));
ui->tableWidget->setItem(curRow,1, new QTableWidgetItem (aislist.at(i).shipInfo.IMO));
ui->tableWidget->setItem(curRow,2, new QTableWidgetItem (aislist.at(i).shipInfo.name));
ui->tableWidget->setItem(curRow,4, new QTableWidgetItem (QString::number(aislist.at(i).statusData.sog)));
ui->tableWidget->setItem(curRow,5, new QTableWidgetItem (QString::number(aislist.at(i).statusData.cog)));
ui->tableWidget->setItem(curRow,6, new QTableWidgetItem (QString::number(aislist.at(i).statusData.lat)));
ui->tableWidget->setItem(curRow,7, new QTableWidgetItem (QString::number(aislist.at(i).statusData.lon)));
}
searchKey = ui->lineEdit->text();
if(ui->comboBox->currentText() == "MMSI"){
filterType = ADF_MMSI;
}
else if(ui->comboBox->currentText() == "IMO"){
filterType = ADF_IMO;
}
else if(ui->comboBox->currentText() == "Name"){
filterType = ADF_NAME;
}
m_db->addCurrentShipDataWithFilter(filterType, searchKey);
}
To copy to clipboard, switch view to plain text mode
And this is a function that call the function above
Bookmarks