airporttableeditwidget.cpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "airporttableeditwidget.h"
  2. #include "src/database/database.h"
  3. #include "src/gui/dialogues/newairportdialog.h"
  4. AirportTableEditWidget::AirportTableEditWidget(QWidget *parent)
  5. : TableEditWidget(Vertical, parent)
  6. {}
  7. void AirportTableEditWidget::setupModelAndView()
  8. {
  9. m_model = new QSqlTableModel(this, DB->database());
  10. m_model->setTable(OPL::GLOBALS->getDbTableName(OPL::DbTable::Airports));
  11. m_model->select();
  12. for(int i = 0; i < HEADER_NAMES.size(); i++) {
  13. m_model->setHeaderData(i + 1, Qt::Horizontal, HEADER_NAMES.at(i));
  14. }
  15. m_view->setModel(m_model);
  16. m_view->setSelectionMode(QAbstractItemView::SingleSelection);
  17. m_view->setSelectionBehavior(QAbstractItemView::SelectRows);
  18. m_view->setEditTriggers(QAbstractItemView::NoEditTriggers);
  19. m_view->horizontalHeader()->setStretchLastSection(QHeaderView::Stretch);
  20. m_view->resizeColumnsToContents();
  21. m_view->verticalHeader()->hide();
  22. m_view->setAlternatingRowColors(true);
  23. m_view->hideColumn(COL_ROWID);
  24. }
  25. void AirportTableEditWidget::setupUI()
  26. {
  27. // the base class does most of the setup
  28. TableEditWidget::setupUI();
  29. // only need to set the table specific labels and combo box items
  30. m_addNewEntryPushButton->setText(tr("Add New Airport"));
  31. m_deleteEntryPushButton->setText(tr("Delete Selected Airport"));
  32. for(const int i : FILTER_COLUMNS) {
  33. m_filterSelectionComboBox->addItem(HEADER_NAMES.at(i));
  34. }
  35. }
  36. QString AirportTableEditWidget::deleteErrorString(int rowId)
  37. {
  38. return tr("<br>Unable to delete.<br><br>The following error has ocurred: %1"
  39. ).arg(DB->lastError.text());
  40. }
  41. QString AirportTableEditWidget::confirmDeleteString(int rowId)
  42. {
  43. const auto entry = DB->getAirportEntry(rowId);
  44. return tr("The following airport will be deleted:<br><br><b><tt>"
  45. "%1<br></b></tt>"
  46. "Deleting airports is irreversible.<br>Do you want to proceed?"
  47. ).arg(entry.getAirportDescriptor());
  48. }
  49. EntryEditDialog *AirportTableEditWidget::getEntryEditDialog(QWidget *parent)
  50. {
  51. return new NewAirportDialog(parent);
  52. }
  53. void AirportTableEditWidget::filterTextChanged(const QString &filterString)
  54. {
  55. if(filterString.isEmpty()) {
  56. m_model->setFilter(QString());
  57. return;
  58. }
  59. int i = m_filterSelectionComboBox->currentIndex();
  60. const QString filter =
  61. QLatin1Char('\"')
  62. + HEADER_NAMES.at(FILTER_COLUMNS[i])
  63. + QLatin1String("\" LIKE '%")
  64. + filterString
  65. + QLatin1String("%'");
  66. m_model->setFilter(filter);
  67. }