mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-29 09:13:46 +00:00
# Conflicts: # CMakeLists.txt # android/app/src/main/java/app/organicmaps/settings/SettingsPrefsFragment.java # android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp # android/sdk/src/main/cpp/app/organicmaps/sdk/OrganicMaps.cpp # android/sdk/src/main/cpp/app/organicmaps/sdk/util/Config.cpp # libs/indexer/data_source.hpp # libs/indexer/feature.hpp # libs/indexer/ftypes_matcher.hpp # libs/map/framework.cpp # libs/map/traffic_manager.cpp # libs/routing/absent_regions_finder.cpp # libs/routing/edge_estimator.hpp # libs/routing/index_router.cpp # libs/routing/index_router.hpp # libs/routing/routing_session.hpp # libs/routing_common/num_mwm_id.hpp # libs/traffic/traffic_info.cpp # qt/mainwindow.hpp # qt/preferences_dialog.cpp # tools/openlr/helpers.hpp # tools/openlr/openlr_decoder.cpp # tools/openlr/openlr_decoder.hpp # tools/openlr/openlr_stat/openlr_stat.cpp # tools/openlr/router.hpp # tools/openlr/score_candidate_paths_getter.cpp # tools/openlr/score_candidate_paths_getter.hpp # xcode/CoMaps.xcworkspace/contents.xcworkspacedata
90 lines
3.2 KiB
C++
90 lines
3.2 KiB
C++
#include "traffxml/traff_assessment_tool/traffic_panel.hpp"
|
|
|
|
#include <QtCore/QAbstractTableModel>
|
|
#include <QtWidgets/QBoxLayout>
|
|
#include <QtWidgets/QComboBox>
|
|
#include <QtWidgets/QHeaderView>
|
|
#include <QtWidgets/QStyledItemDelegate>
|
|
#include <QtWidgets/QTableView>
|
|
|
|
namespace traffxml
|
|
{
|
|
// ComboBoxDelegate --------------------------------------------------------------------------------
|
|
ComboBoxDelegate::ComboBoxDelegate(QObject * parent)
|
|
: QStyledItemDelegate(parent)
|
|
{
|
|
}
|
|
|
|
QWidget * ComboBoxDelegate::createEditor(QWidget * parent, QStyleOptionViewItem const & option,
|
|
QModelIndex const & index) const
|
|
{
|
|
auto * editor = new QComboBox(parent);
|
|
editor->setFrame(false);
|
|
editor->setEditable(false);
|
|
editor->addItems({"Unevaluated", "Positive", "Negative", "RelPositive", "RelNegative", "Ignore"});
|
|
|
|
return editor;
|
|
}
|
|
|
|
void ComboBoxDelegate::setEditorData(QWidget * editor, QModelIndex const & index) const
|
|
{
|
|
auto const value = index.model()->data(index, Qt::EditRole).toString();
|
|
static_cast<QComboBox*>(editor)->setCurrentText(value);
|
|
}
|
|
|
|
void ComboBoxDelegate::setModelData(QWidget * editor, QAbstractItemModel * model,
|
|
QModelIndex const & index) const
|
|
{
|
|
model->setData(index, static_cast<QComboBox*>(editor)->currentText(), Qt::EditRole);
|
|
}
|
|
|
|
void ComboBoxDelegate::updateEditorGeometry(QWidget * editor, QStyleOptionViewItem const & option,
|
|
QModelIndex const & index) const
|
|
{
|
|
editor->setGeometry(option.rect);
|
|
}
|
|
|
|
// TrafficPanel ------------------------------------------------------------------------------------
|
|
TrafficPanel::TrafficPanel(QAbstractItemModel * trafficModel, QWidget * parent)
|
|
: QWidget(parent)
|
|
{
|
|
CreateTable(trafficModel);
|
|
|
|
auto * layout = new QVBoxLayout();
|
|
layout->addWidget(m_table);
|
|
setLayout(layout);
|
|
|
|
// Select first segment by default;
|
|
auto const & index = m_table->model()->index(0, 0);
|
|
m_table->selectionModel()->select(index, QItemSelectionModel::Select);
|
|
}
|
|
|
|
void TrafficPanel::CreateTable(QAbstractItemModel * trafficModel)
|
|
{
|
|
m_table = new QTableView();
|
|
m_table->setFocusPolicy(Qt::NoFocus);
|
|
m_table->setAlternatingRowColors(true);
|
|
m_table->setShowGrid(false);
|
|
m_table->setSelectionBehavior(QAbstractItemView::SelectionBehavior::SelectRows);
|
|
m_table->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection);
|
|
m_table->setModel(trafficModel);
|
|
m_table->setItemDelegate(new ComboBoxDelegate());
|
|
|
|
// the model must be set before we can set dimensions and headers
|
|
m_table->verticalHeader()->setVisible(false);
|
|
m_table->horizontalHeader()->setVisible(true);
|
|
//m_table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
|
m_table->setColumnWidth(0, 80);
|
|
m_table->setColumnWidth(1, 300);
|
|
|
|
connect(m_table->selectionModel(),
|
|
SIGNAL(selectionChanged(QItemSelection const &, QItemSelection const &)),
|
|
trafficModel, SLOT(OnItemSelected(QItemSelection const &, QItemSelection const &)));
|
|
connect(trafficModel, &QAbstractItemModel::modelReset,
|
|
m_table, [this]() {
|
|
m_table->resizeRowsToContents();
|
|
//m_table->resizeColumnsToContents();
|
|
});
|
|
}
|
|
} // namespace traffxml
|