dialogselectsegment2.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. #include "dialogselectsegment2.h"
  2. #include "SNCDataBase.h"
  3. #include "ui_dialogselectsegment2.h"
  4. #include "numberreg.h"
  5. #include "segmentupdate.h"
  6. DialogSelectSegment2::DialogSelectSegment2(QWidget *parent) :
  7. QDialog(parent),
  8. ui(new Ui::DialogSelectSegment2)
  9. {
  10. ui->setupUi(this);
  11. connect(ui->tableWidget->verticalScrollBar(),SIGNAL(valueChanged(int)),this,SLOT(onSlideValueChanged(int)));
  12. ui->startEdit->setValidator(new QRegExpValidator(NumberReg::getSegmentReg(), this));
  13. ui->endEdit->setValidator(new QRegExpValidator(NumberReg::getSegmentReg(), this));
  14. connect(ui->tableWidget->horizontalHeader(), SIGNAL(sectionClicked(int)),this, SLOT(sortByColumnOffset(int)));
  15. ui->widget->setVisible(true);
  16. ui->endEdit->setVisible(false);
  17. ui->selfRB->setVisible(false);
  18. ui->pushButtonPosition->setEnabled(false);
  19. ui->startEdit->setText("");
  20. this->bAppend = false;
  21. loadCity();
  22. setDefaultSegState();
  23. movie = new QMovie(":/fetchfromserver.gif");
  24. movie->start();
  25. ui->tableWidget->installEventFilter(this);
  26. ui->labelCount->setText("共" + QString::number(SNCDataBase::getSegCount()) + "个号段");
  27. }
  28. void DialogSelectSegment2::showFetchAnimation()
  29. {
  30. initTable(13);
  31. //ui->tableWidget->verticalHeader()->setVisible(false);
  32. ui->tableWidget->setAlternatingRowColors(true);
  33. QLabel *lbl = new QLabel();
  34. lbl->setMovie(movie);
  35. //ui->tableWidget->setEnabled(false);
  36. ui->tableWidget->setCellWidget(6,12,lbl);
  37. QTableWidgetItem *item = new QTableWidgetItem(" 正在读取...");
  38. item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  39. ui->tableWidget->setItem(6,12,item);
  40. //ui->tableWidget->resizeColumnsToContents();
  41. //ui->tableWidget->resizeRowsToContents();
  42. }
  43. void DialogSelectSegment2::setDefaultSegState()
  44. {
  45. initTable(13);
  46. }
  47. void DialogSelectSegment2::saveToFile()
  48. {
  49. QString path = QDir::tempPath() + QString("/SNCTempFile/");
  50. QDir dir(path);
  51. if(!dir.exists())
  52. {
  53. dir.mkpath(path);
  54. }
  55. QList<QStringList> segs = getSelectedSegmentsInfo();
  56. QString fileName = QString("号码推荐_%1_%2_(共%3个号段).txt").arg(currentProvince).\
  57. arg(currentCity).\
  58. arg(segs.size());
  59. m_filename.clear();
  60. QString fullPath = path + fileName;
  61. m_filename.insert("fullpath",fullPath);
  62. m_filename.insert("filename",fileName);
  63. QFile file(fullPath);
  64. if(!file.open(QIODevice::WriteOnly))
  65. return ;
  66. QTextStream out(&file);
  67. for(int i=0;i<segs.size();i++)
  68. {
  69. out<<segs.at(i).at(1)+"\r\n";
  70. }
  71. file.close();
  72. }
  73. void DialogSelectSegment2::onSlideValueChanged(int value)
  74. {
  75. renderViewPort(value);
  76. }
  77. void DialogSelectSegment2::onSegmentUpdateFinished()
  78. {
  79. ui->treeView->setEnabled(true);
  80. fetchSegmentData();
  81. }
  82. void DialogSelectSegment2::renderViewPort(int value)
  83. {
  84. for(int j = qMax(0,value - 1);j < qMin(value + 20,ui->tableWidget->rowCount());j++)
  85. {
  86. if(!ui->tableWidget->cellWidget(j,12))
  87. {
  88. QTableWidgetItem *itemSample = this->ui->tableWidget->item(j,5);
  89. QTableWidgetItem *itemNumber = this->ui->tableWidget->item(j,6);
  90. double sampleIndex = qMin(itemSample->data(Qt::UserRole).toInt(),100);
  91. double numberIndex = qMin(itemNumber->data(Qt::UserRole).toInt(),100);
  92. QLabel *labelSample = createSampleLabel(sampleIndex);
  93. QLabel *labelNumber = createNumberLabel(numberIndex);
  94. ui->tableWidget->setCellWidget(j,12,labelSample);
  95. ui->tableWidget->setCellWidget(j,13,labelNumber);
  96. }
  97. }
  98. }
  99. DialogSelectSegment2::~DialogSelectSegment2()
  100. {
  101. delete segmentModel;
  102. delete ui;
  103. }
  104. void DialogSelectSegment2::loadCity()
  105. {
  106. segmentModel = new QStandardItemModel();
  107. segmentModel->setHorizontalHeaderItem(0,new QStandardItem("号码地区"));
  108. QString current;
  109. QStandardItem *parentItem = new QStandardItem();
  110. QList<QStringList> maps= SNCDataBase::getRegionInfo();
  111. if(maps.size()!=2)
  112. return ;
  113. ui->treeView->header()->setStyleSheet("font:12px");
  114. for(int i=0;i<maps.at(0).size();i++)
  115. {
  116. QString province = maps.at(1).at(i);
  117. QString city = maps.at(0).at(i);
  118. QStandardItem *provinceItem;
  119. QStandardItem *cityItem;
  120. if(current!=province)
  121. {
  122. provinceItem= new QStandardItem(province);
  123. cityItem= new QStandardItem(city);
  124. parentItem = provinceItem;
  125. current = province;
  126. segmentModel->appendRow(provinceItem);
  127. parentItem->appendRow(cityItem);
  128. }
  129. else
  130. {
  131. cityItem= new QStandardItem(city);
  132. parentItem->appendRow(cityItem);
  133. }
  134. }
  135. ui->treeView->setModel(segmentModel);
  136. }
  137. void DialogSelectSegment2::on_treeView_clicked(const QModelIndex &index)
  138. {
  139. if(index.parent().isValid())
  140. {
  141. this->currentProvince = index.parent().data().toString();
  142. this->currentCity = index.data().toString();
  143. /**///
  144. QString areacode = SNCDataBase::getAreaCodeByCityName(this->currentCity);
  145. QString checkdate = SNCDataBase::getCitySegLastCheckDate(areacode);
  146. QString today = QDate::currentDate().toString("yyyy-MM-dd");
  147. showFetchAnimation();
  148. SegmentUpdate *update = new SegmentUpdate();
  149. if(checkdate!=today)
  150. update->setMethod(UpdateDynamicInfo);
  151. update->setPara("areacode",areacode);
  152. connect(update,SIGNAL(updateFinished()),this,SLOT(onSegmentUpdateFinished()));
  153. connect(update,SIGNAL(updateProgress(QString,int)),this,SLOT(onUpdateMessage(QString,int)));
  154. ui->treeView->setEnabled(false);
  155. update->start();
  156. }
  157. }
  158. void DialogSelectSegment2::fetchSegmentData()
  159. {
  160. QStringList list;
  161. if(this->currentCity.isEmpty())
  162. return ;
  163. if(ui->allRB->isChecked())
  164. list = SNCDataBase::getSegmentDynamicByCityAll(this->currentCity);
  165. if(ui->cmccRB->isChecked())
  166. list = SNCDataBase::getSegmentDynamicByCityAndCorp(this->currentCity,"CMCC");
  167. if(ui->cutcRB->isChecked())
  168. list = SNCDataBase::getSegmentDynamicByCityAndCorp(this->currentCity,"CUTC");
  169. if(ui->ctccRB->isChecked())
  170. list = SNCDataBase::getSegmentDynamicByCityAndCorp(this->currentCity,"CTCC");
  171. if(ui->selfRB->isChecked())
  172. list = SNCDataBase::getSegmentDynamicByCityAndRange(this->currentCity,this->ui->startEdit->text(),this->ui->endEdit->text());
  173. initTable(list.size());
  174. for(int i=0;i<list.size();i++)
  175. {
  176. QStringList records = list.at(i).split(",");
  177. for(int j = 0;j<records.size()-1;j++)
  178. {
  179. QTableWidgetItem *item;
  180. item = new QTableWidgetItem();
  181. item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  182. item->setData(Qt::DisplayRole,records.at(j).toInt());
  183. item->setData(Qt::UserRole,records.at(j));
  184. if(j==1 || j==2 || j==3 || j==4 || j==7)
  185. {
  186. QTableWidgetItem *itemDisplay;
  187. itemDisplay = new QTableWidgetItem();
  188. itemDisplay->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  189. if( j ==1 || j==2 || j==3 || j==4 )
  190. itemDisplay->setData(Qt::DisplayRole,records.at(j)+"%");
  191. else
  192. {
  193. int day = records.at(j).toInt();
  194. if(day<0)
  195. itemDisplay->setData(Qt::DisplayRole,"N/A");
  196. else if(day==0)
  197. itemDisplay->setData(Qt::DisplayRole,"最新");
  198. else if(day<7)
  199. itemDisplay->setData(Qt::DisplayRole,QString::number(day)+"天前");
  200. else if(day>=7 && day <=31)
  201. itemDisplay->setData(Qt::DisplayRole,QString::number(day/7)+"周前");
  202. else
  203. itemDisplay->setData(Qt::DisplayRole,"1个月前");
  204. }
  205. this->ui->tableWidget->setItem(i,j+7,itemDisplay);
  206. }
  207. this->ui->tableWidget->setItem(i,j,item);
  208. }
  209. }
  210. this->ui->tableWidget->sortByColumn(6);
  211. this->ui->tableWidget->sortByColumn(6);
  212. renderViewPort(ui->tableWidget->verticalScrollBar()->value());
  213. ui->lblCount->setText(QString("您已选择%1个号段").arg(0));
  214. for(int i=0;i<ui->tableWidget->rowCount();i++)
  215. {
  216. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  217. //qDebug()<<item->data(Qt::DisplayRole)<<ui->startEdit->text();
  218. if(item->data(Qt::DisplayRole).toString()==ui->startEdit->text())
  219. {
  220. //ui->tableWidget->setAutoScroll(true);
  221. //QModelIndex index = ui->tableWidget->model()->index
  222. ui->tableWidget->setCurrentItem(item);
  223. ui->tableWidget->verticalScrollBar()->setValue(i);
  224. ui->tableWidget->viewport()->setFocus();
  225. ui->lblCount->setText(QString("您已选择%1个号段").arg(1));
  226. break;
  227. }
  228. }
  229. }
  230. void DialogSelectSegment2::on_allRB_clicked()
  231. {
  232. //ui->widget->setVisible(false);
  233. fetchSegmentData();
  234. }
  235. void DialogSelectSegment2::on_cmccRB_clicked()
  236. {
  237. //ui->widget->setVisible(false);
  238. fetchSegmentData();
  239. }
  240. void DialogSelectSegment2::on_cutcRB_clicked()
  241. {
  242. //ui->widget->setVisible(false);
  243. fetchSegmentData();
  244. }
  245. void DialogSelectSegment2::on_ctccRB_clicked()
  246. {
  247. //ui->widget->setVisible(false);
  248. fetchSegmentData();
  249. }
  250. void DialogSelectSegment2::on_selfRB_clicked()
  251. {
  252. //ui->widget->setVisible(true);
  253. if(ui->startEdit->hasAcceptableInput()&&ui->endEdit->hasAcceptableInput()&&ui->selfRB->isChecked())
  254. fetchSegmentData();
  255. }
  256. void DialogSelectSegment2::on_startEdit_textChanged(const QString &arg1)
  257. {
  258. //if(ui->startEdit->hasAcceptableInput()&&ui->endEdit->hasAcceptableInput()&&ui->selfRB->isChecked())
  259. // fetchSegmentData();
  260. if(ui->startEdit->hasAcceptableInput()){
  261. QStringList list = SNCDataBase::getCityBySegment(ui->startEdit->text());
  262. if(list.size()==3)
  263. ui->pushButtonPosition->setEnabled(true);
  264. else
  265. ui->pushButtonPosition->setEnabled(false);
  266. }
  267. else
  268. ui->pushButtonPosition->setEnabled(false);
  269. }
  270. void DialogSelectSegment2::on_endEdit_textChanged(const QString &arg1)
  271. {
  272. if(ui->startEdit->hasAcceptableInput()&&ui->endEdit->hasAcceptableInput()&&ui->selfRB->isChecked())
  273. fetchSegmentData();
  274. }
  275. QList<QStringList> DialogSelectSegment2::getSelectedSegmentsInfo()
  276. {
  277. QList<QStringList> segments;
  278. if(this->currentCity.isEmpty())
  279. return segments;
  280. for(int i=0;i<this->ui->tableWidget->rowCount();i++)
  281. {
  282. QStringList infos;
  283. for(int j=0;j<=7;j++)
  284. {
  285. QTableWidgetItem *item;
  286. item = this->ui->tableWidget->item(i,j);
  287. if(0 == j)
  288. {
  289. if(!item->isSelected())
  290. break;
  291. else
  292. infos.append(this->currentCity);
  293. }
  294. infos.append(item->data(Qt::UserRole).toString());
  295. }
  296. if(infos.size()>0)
  297. segments.append(infos);
  298. }
  299. return segments;
  300. }
  301. QMap<QString,QString> DialogSelectSegment2::getSaveFileName()
  302. {
  303. return m_filename;
  304. }
  305. QLabel* DialogSelectSegment2::createSampleLabel(double sampleIndex)
  306. {
  307. QLabel *label = new QLabel();
  308. /*label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
  309. label->setMaximumWidth(200);
  310. label->setMinimumWidth(200);
  311. label->setMaximumHeight(10);
  312. label->setMinimumHeight(10);
  313. */
  314. if(sampleIndex<20)
  315. label->setPixmap(QPixmap(":/red-bar.png"));
  316. else if(sampleIndex>=20 && sampleIndex<50)
  317. label->setPixmap(QPixmap(":/yellow-bar.png"));
  318. else
  319. label->setPixmap(QPixmap(":/blue-bar.png"));
  320. /*
  321. if(sampleIndex<20)
  322. label->setStyleSheet("QLabel{background-image: url(:/red-bar.png);background-repeat:norepeat; width:12px; background-color: rgb(255, 170, 255); }");
  323. else if(sampleIndex>=20 && sampleIndex<50)
  324. label->setStyleSheet("QLabel{background-image: url(:/yellow-bar.png); background-color: rgb(255, 170, 255); }");
  325. else
  326. label->setStyleSheet("QLabel{background-image: url(:/blue-bar.png); background-color: rgb(255, 170, 255); }");
  327. */
  328. label->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Preferred);
  329. label->setMinimumWidth(sampleIndex);
  330. label->setMaximumWidth(sampleIndex);
  331. return label;
  332. }
  333. QLabel* DialogSelectSegment2::createNumberLabel(double numberIndex)
  334. {
  335. QLabel *label = new QLabel();
  336. if(numberIndex==0)
  337. label->setPixmap(QPixmap(":/s0.png"));
  338. else if(numberIndex>0 && numberIndex<20)
  339. label->setPixmap(QPixmap(":/s1.png"));
  340. else if(numberIndex>=20 && numberIndex<40)
  341. label->setPixmap(QPixmap(":/s2.png"));
  342. else if(numberIndex>=40 && numberIndex<60)
  343. label->setPixmap(QPixmap(":/s3.png"));
  344. else if(numberIndex>=60 && numberIndex<80)
  345. label->setPixmap(QPixmap(":/s4.png"));
  346. else
  347. label->setPixmap(QPixmap(":/s5.png"));
  348. return label;
  349. }
  350. void DialogSelectSegment2::sortByColumnOffset(int col)
  351. {
  352. if(col == 8)
  353. col = 1;
  354. else if(col == 9)
  355. col = 2;
  356. else if(col == 10)
  357. col = 3;
  358. else if(col == 11)
  359. col = 4;
  360. else if(col == 12)
  361. col = 5;
  362. else if(col == 13)
  363. col = 6;
  364. else if(col == 14)
  365. col = 7;
  366. if(!ui->tableWidget->item(0,0))
  367. return ;
  368. this->ui->tableWidget->sortByColumn(col);
  369. renderViewPort(ui->tableWidget->verticalScrollBar()->value());
  370. }
  371. void DialogSelectSegment2::initTable(int rows)
  372. {
  373. ui->tableWidget->horizontalHeader()->setVisible(true);
  374. ui->tableWidget->verticalHeader()->setVisible(true);
  375. ui->tableWidget->horizontalHeader()->setStyleSheet("font:12px");
  376. QStringList headers;
  377. headers.append("号段");
  378. headers.append("实号");
  379. headers.append("空号");
  380. headers.append("停机");
  381. headers.append("关机");
  382. headers.append("样本数量");
  383. headers.append("推荐度");
  384. headers.append("更新时间");
  385. headers.append("实号");
  386. headers.append("空号");
  387. headers.append("停机");
  388. headers.append("关机");
  389. headers.append("样本数量");
  390. headers.append("推荐度");
  391. headers.append("更新时间");
  392. for(int j=0;j<ui->tableWidget->rowCount();j++)
  393. {
  394. if( ui->tableWidget->cellWidget(j,12))
  395. {
  396. delete ui->tableWidget->cellWidget(j,12);
  397. }
  398. if( ui->tableWidget->cellWidget(j,13))
  399. {
  400. delete ui->tableWidget->cellWidget(j,13);
  401. }
  402. }
  403. this->ui->tableWidget->setRowCount(0);
  404. this->ui->tableWidget->setColumnCount(0);
  405. this->ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  406. this->ui->tableWidget->setSelectionMode(QAbstractItemView::MultiSelection);
  407. this->ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  408. this->ui->tableWidget->setColumnCount(15);
  409. this->ui->tableWidget->setHorizontalHeaderLabels(headers);
  410. this->ui->tableWidget->setShowGrid(false);
  411. this->ui->tableWidget->setAlternatingRowColors(true);
  412. this->ui->tableWidget->setColumnWidth(0,90);
  413. this->ui->tableWidget->setColumnWidth(8,40);
  414. this->ui->tableWidget->setColumnWidth(9,40);
  415. this->ui->tableWidget->setColumnWidth(10,40);
  416. this->ui->tableWidget->setColumnWidth(11,40);
  417. this->ui->tableWidget->setColumnWidth(12,120);
  418. this->ui->tableWidget->setColumnWidth(13,120);
  419. this->ui->tableWidget->setColumnWidth(14,90);
  420. this->ui->tableWidget->hideColumn(1);
  421. this->ui->tableWidget->hideColumn(2);
  422. this->ui->tableWidget->hideColumn(3);
  423. this->ui->tableWidget->hideColumn(4);
  424. this->ui->tableWidget->hideColumn(5);
  425. this->ui->tableWidget->hideColumn(6);
  426. this->ui->tableWidget->hideColumn(7);/**/
  427. this->ui->tableWidget->setRowCount(rows);
  428. ui->tableWidget->verticalHeader()->setVisible(false);
  429. ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
  430. ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Fixed);
  431. ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
  432. ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  433. ui->tableWidget->verticalHeader()->setFixedWidth(40);
  434. ui->tableWidget->verticalHeader()->setDefaultSectionSize(30);
  435. ui->tableWidget->horizontalHeader()->setFixedHeight(30);
  436. ui->tableWidget->setSortingEnabled(true);
  437. }
  438. bool DialogSelectSegment2::isAppend()
  439. {
  440. return bAppend;
  441. }
  442. void DialogSelectSegment2::on_pushButtonAppend_clicked()
  443. {
  444. bAppend = true;
  445. saveToFile();
  446. this->accept();
  447. }
  448. void DialogSelectSegment2::on_tableWidget_itemSelectionChanged()
  449. {
  450. QList<QTableWidgetItem *> items = ui->tableWidget->selectedItems();
  451. if(items.size()==0)
  452. return ;
  453. int count=0;
  454. for(int i=0;i<items.size();i++)
  455. {
  456. QTableWidgetItem *item = items.at(i);
  457. if(item->column()==0)
  458. {
  459. count++;
  460. }
  461. }
  462. ui->lblCount->setText(QString("您已选择%1个号段").arg(count));
  463. }
  464. void DialogSelectSegment2::on_pushButtonClose_clicked()
  465. {
  466. this->reject();
  467. }
  468. void DialogSelectSegment2::onUpdateMessage(QString msg, int rtCode)
  469. {
  470. if(rtCode==-3)
  471. QMessageBox::critical(this,"系统通知",msg,QMessageBox::Ok);
  472. }
  473. void DialogSelectSegment2::on_pushButtonClear_clicked()
  474. {
  475. for(int i=0;i<ui->tableWidget->rowCount();i++)
  476. {
  477. QTableWidgetItem *item;
  478. item = this->ui->tableWidget->item(i,0);
  479. if(item->isSelected())
  480. this->ui->tableWidget->selectRow(i);
  481. }
  482. ui->lblCount->setText(QString("您已选择%1个号段").arg(0));
  483. }
  484. bool DialogSelectSegment2::eventFilter(QObject *object, QEvent *event)
  485. {
  486. if( event->type() == QEvent::KeyPress)
  487. {
  488. // if yes, we need to cast the event into a QMouseEvent type
  489. QKeyEvent * pKeyEvent = static_cast<QKeyEvent *>(event);
  490. // check whether it's mid button pressed
  491. if (pKeyEvent->key() == Qt::Key_Control||pKeyEvent->key() == Qt::Key_Shift)
  492. {
  493. //do the processing and return true
  494. //textBrowserErrorInfo->setText(tr("clicked"));
  495. ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
  496. return true; //一定要返回true,如果你不想别的object也能接收到这个event
  497. }
  498. }
  499. else if( event->type() == QEvent::KeyRelease)
  500. {
  501. QKeyEvent * pKeyEvent = static_cast<QKeyEvent *>(event);
  502. // check whether it's mid button pressed
  503. if (pKeyEvent->key() == Qt::Key_Control||pKeyEvent->key() == Qt::Key_Shift)
  504. {
  505. //do the processing and return true
  506. //textBrowserErrorInfo->setText(tr("clicked"));
  507. ui->tableWidget->setSelectionMode(QAbstractItemView::MultiSelection);
  508. return true; //一定要返回true,如果你不想别的object也能接收到这个event
  509. }
  510. }
  511. return QWidget::eventFilter(object, event);
  512. }/**/
  513. void DialogSelectSegment2::on_pushButtonPosition_clicked()
  514. {
  515. QStringList list = SNCDataBase::getCityBySegment(ui->startEdit->text());
  516. if(list.size()==3)
  517. {
  518. QString province = list.at(0);
  519. QString city = list.at(1);
  520. for(int i=0;i<segmentModel->rowCount();i++)
  521. {
  522. QModelIndex index = segmentModel->index(i,0,QModelIndex());
  523. bool match = false;
  524. if(index.data(Qt::DisplayRole)==province)
  525. {
  526. for(int j=0;j<index.model()->rowCount();j++)
  527. {
  528. QModelIndex childIndex = index.model()->index(j,0,index);
  529. if(childIndex.data(Qt::DisplayRole)==city){
  530. ui->treeView->setCurrentIndex(childIndex);
  531. match = true;
  532. on_treeView_clicked(childIndex);
  533. break;
  534. }
  535. }
  536. }
  537. if(match)
  538. break;
  539. }
  540. }
  541. }
  542. void DialogSelectSegment2::on_startEdit_returnPressed()
  543. {
  544. if(ui->pushButtonPosition->isEnabled())
  545. on_pushButtonPosition_clicked();
  546. }