dialogselectsegment.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #include "dialogselectsegment.h"
  2. #include "ui_dialogselectsegment.h"
  3. #include "SNCDataBase.h"
  4. DialogSelectSegment::DialogSelectSegment(QWidget *parent) :
  5. QDialog(parent),
  6. ui(new Ui::DialogSelectSegment)
  7. {
  8. ui->setupUi(this);
  9. loadSegment();
  10. customListView = new CustomListView(ui->verticalLayoutWidget_3);
  11. ui->verticalLayout_3->addWidget(customListView);
  12. QStringListModel *model = new QStringListModel();
  13. this->customListView->setModel(model);
  14. QObject::connect(customListView,SIGNAL(updateSelectedSegmentCount()),
  15. this,SLOT(setSelectedLabel()));
  16. ui->startEdit->setValidator(new QRegExpValidator(NumberReg::getSegmentReg(), this));
  17. ui->endEdit->setValidator(new QRegExpValidator(NumberReg::getSegmentReg(), this));
  18. ui->labelCount->setText("共" + QString::number(SNCDataBase::getSegCount()) + "个号段");
  19. ui->buttonBox->button(QDialogButtonBox::Ok)->setText("确定");
  20. ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
  21. }
  22. DialogSelectSegment::~DialogSelectSegment()
  23. {
  24. delete ui;
  25. qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
  26. <<"DialogSelectSegment Destroyed.";
  27. }
  28. void DialogSelectSegment::setSelectedLabel()
  29. {
  30. int items = this->customListView->selectionModel()->selection().indexes().size();
  31. this->ui->selectLabel->setText("选中:["+QString::number(items)+
  32. "]个号段,共["+QString::number(items*10000)+
  33. "]个号码");
  34. }
  35. void DialogSelectSegment::loadSegment()
  36. {
  37. QTime time;
  38. time.start();
  39. segmentModel = new QStandardItemModel();
  40. segmentModel->setHorizontalHeaderItem(0,new QStandardItem("号码地区"));
  41. QString current;
  42. QStandardItem *parentItem;
  43. qDebug()<<time.elapsed();
  44. time.start();
  45. QList<QStringList> maps= SNCDataBase::getRegionInfo();
  46. if(maps.size()!=2)
  47. return ;
  48. for(int i=0;i<maps.at(0).size();i++)
  49. {
  50. QString province = maps.at(1).at(i);
  51. QString city = maps.at(0).at(i);
  52. qDebug()<<city<<province;
  53. QStandardItem *provinceItem;
  54. QStandardItem *cityItem;
  55. if(current!=province)
  56. {
  57. provinceItem= new QStandardItem(province);
  58. cityItem= new QStandardItem(city);
  59. parentItem = provinceItem;
  60. current = province;
  61. segmentModel->appendRow(provinceItem);
  62. parentItem->appendRow(cityItem);
  63. }
  64. else
  65. {
  66. cityItem= new QStandardItem(city);
  67. parentItem->appendRow(cityItem);
  68. }
  69. }
  70. ui->treeView->setModel(segmentModel);
  71. }
  72. void DialogSelectSegment::on_treeView_clicked(const QModelIndex &index)
  73. {
  74. if(index.parent().isValid())
  75. {
  76. this->currentCity = index.data().toString();
  77. fetchData();
  78. }
  79. else
  80. {
  81. this->currentCity = "";
  82. }
  83. }
  84. QStringList DialogSelectSegment::getSelectedSegment()
  85. {
  86. QItemSelectionModel *selectionModel = this->customListView->selectionModel();
  87. QModelIndexList list = selectionModel->selection().indexes();
  88. QStringList segments;
  89. for(int i=0;i<list.size();i++)
  90. {
  91. segments<<list.at(i).data().toString();
  92. }
  93. return segments;
  94. }
  95. QStringList DialogSelectSegment::fetchData()
  96. {
  97. QStringList list;
  98. if(this->currentCity.isEmpty())
  99. {
  100. QMessageBox::critical(this,"提示","请点击左侧的树形菜单,选择城市后才能显示数据!",QMessageBox::Ok);
  101. return list;
  102. }
  103. if(ui->allRB->isChecked())
  104. list = SNCDataBase::getSegmentByCityAll(this->currentCity);
  105. if(ui->cmccRB->isChecked())
  106. list = SNCDataBase::getSegmentByCityAndCorp(this->currentCity,"CMCC");
  107. if(ui->cutcRB->isChecked())
  108. list = SNCDataBase::getSegmentByCityAndCorp(this->currentCity,"CUTC");
  109. if(ui->ctccRB->isChecked())
  110. list = SNCDataBase::getSegmentByCityAndCorp(this->currentCity,"CTCC");
  111. if(ui->selfRB->isChecked())
  112. list = SNCDataBase::getSegmentByCityAndRange(this->currentCity,this->ui->startEdit->text(),this->ui->endEdit->text());
  113. QStringListModel *model = new QStringListModel();
  114. model->setStringList(list);
  115. this->customListView->setModel(model);
  116. this->ui->totalLabel->setText("总计:["+QString::number(list.size())+
  117. "]个号段,共["+QString::number(list.size()*10000)+
  118. "]个号码");
  119. }
  120. void DialogSelectSegment::on_allRB_clicked()
  121. {
  122. fetchData();
  123. }
  124. void DialogSelectSegment::on_cmccRB_clicked()
  125. {
  126. fetchData();
  127. }
  128. void DialogSelectSegment::on_cutcRB_clicked()
  129. {
  130. fetchData();
  131. }
  132. void DialogSelectSegment::on_ctccRB_clicked()
  133. {
  134. fetchData();
  135. }
  136. void DialogSelectSegment::on_selfRB_clicked()
  137. {
  138. if(ui->startEdit->hasAcceptableInput()&&ui->endEdit->hasAcceptableInput()&&ui->selfRB->isChecked())
  139. fetchData();
  140. }
  141. void DialogSelectSegment::on_startEdit_textChanged(const QString &arg1)
  142. {
  143. if(ui->startEdit->hasAcceptableInput()&&ui->endEdit->hasAcceptableInput()&&ui->selfRB->isChecked())
  144. fetchData();
  145. }
  146. void DialogSelectSegment::on_endEdit_textChanged(const QString &arg1)
  147. {
  148. if(ui->startEdit->hasAcceptableInput()&&ui->endEdit->hasAcceptableInput()&&ui->selfRB->isChecked())
  149. fetchData();
  150. }