/* * @RDE_HEADER@ * * $Id$ * $HeadURL$ * $Author$ * Created by Malte Schröder, SLSE, 2016-07-14 */ #include "logviewtableview.h" #include "logviewtablemodel.h" #include #include #include #include #include #include LogViewTableView::LogViewTableView(QWidget *parent) : QTableView(parent) , m_contextMenu(new QMenu(this)) , m_colorMenu(new QMenu(tr("Select Color"), m_contextMenu)) , m_actionSetCellColor(new QAction(m_colorMenu)) , m_actionSetFontColor(new QAction(m_colorMenu)) , m_filterMenu(new QMenu(tr("Select Filter"), m_contextMenu)) , m_actionFilterDate(nullptr) , m_actionFilterLevel(nullptr) , m_actionFilterLogger(nullptr) , m_actionFilterData(nullptr) , m_actionFilterLocation(nullptr) , m_actionResetFilter(nullptr) , m_coords() , m_contentAvailable(false) { this->setMouseTracking(true); // ---------- COLOR --------- m_actionSetCellColor = m_colorMenu->addAction(tr("Cell-Color")); m_actionSetFontColor = m_colorMenu->addAction(tr("Font-Color")); m_contextMenu->addMenu(m_colorMenu); // ---------- FILTER --------- m_actionFilterDate = m_filterMenu->addAction(tr("Date")); m_actionFilterLevel = m_filterMenu->addAction(tr("Level")); m_actionFilterLogger = m_filterMenu->addAction(tr("Logger")); m_actionFilterData = m_filterMenu->addAction(tr("Data")); m_actionFilterLocation = m_filterMenu->addAction(tr("Location")); m_filterMenu->addSeparator(); m_actionResetFilter = m_filterMenu->addAction(tr("Reset all filter")); m_contextMenu->addMenu(m_filterMenu); // ICONS m_actionFilterDate->setIcon(QIcon(QLatin1String("://icons/16x16/dialog-ok-apply.png"))); m_actionFilterLevel->setIcon(QIcon(QLatin1String("://icons/16x16/dialog-ok-apply.png"))); m_actionFilterLogger->setIcon(QIcon(QLatin1String("://icons/16x16/dialog-ok-apply.png"))); m_actionFilterData->setIcon(QIcon(QLatin1String("://icons/16x16/dialog-ok-apply.png"))); m_actionFilterLocation->setIcon(QIcon(QLatin1String("://icons/16x16/dialog-ok-apply.png"))); m_actionResetFilter->setIcon(QIcon(QLatin1String("://icons/16x16/edit-undo.png"))); m_actionFilterDate->setIconVisibleInMenu(false); m_actionFilterLevel->setIconVisibleInMenu(false); m_actionFilterLogger->setIconVisibleInMenu(false); m_actionFilterData->setIconVisibleInMenu(false); m_actionFilterLocation->setIconVisibleInMenu(false); m_actionResetFilter->setIconVisibleInMenu(true); connect(m_actionSetCellColor, &QAction::triggered, this, &LogViewTableView::setCellColor); connect(m_actionSetFontColor, &QAction::triggered, this, &LogViewTableView::setFontColor); connect(m_actionFilterDate, &QAction::triggered, this, &LogViewTableView::dateFilterIsAboutToChange); connect(m_actionFilterLevel, &QAction::triggered, this, &LogViewTableView::levelFilterIsAboutToChange); connect(m_actionFilterLogger, &QAction::triggered, this, &LogViewTableView::loggerFilterIsAboutToChange); connect(m_actionFilterData, &QAction::triggered, this, &LogViewTableView::dataFilterIsAboutToChange); connect(m_actionResetFilter, &QAction::triggered, this, &LogViewTableView::resetAllFilter); connect(m_actionFilterLocation, &QAction::triggered, this, &LogViewTableView::locationFilterIsAboutToChange); } LogViewTableView::~LogViewTableView() { delete m_contextMenu; // all other menus and actions are children of m_contextMenu } void LogViewTableView::setCellColor() { QColor color = QColorDialog::getColor(Qt::white, this, tr("Select cell color"), QColorDialog::DontUseNativeDialog); QModelIndex index = indexAt(m_coords); QString level = index.data().toString(); emit cellColorIsAboutToChange(color, level); } void LogViewTableView::setFontColor() { QColor color = QColorDialog::getColor(Qt::white, this, tr("Select font color"), QColorDialog::DontUseNativeDialog); QModelIndex index = indexAt(m_coords); QString level = index.data().toString(); emit fontColorIsAboutToChange(color, level); } void LogViewTableView::showActivatedFilter(QVector &filter) { m_actionFilterDate->setIconVisibleInMenu(filter.at(LogViewTableModel::colDate)); m_actionFilterLevel->setIconVisibleInMenu(filter.at(LogViewTableModel::colLevel)); m_actionFilterLogger->setIconVisibleInMenu(filter.at(LogViewTableModel::colLogger)); m_actionFilterData->setIconVisibleInMenu(filter.at(LogViewTableModel::colData)); m_actionFilterLocation->setIconVisibleInMenu(filter.at(LogViewTableModel::colLocation)); } void LogViewTableView::mouseReleaseEvent(QMouseEvent *event) { if (QTableView::indexAt(m_coords).column() == LogViewTableModel::colLevel) enableColorSubMenuActions(true); else enableColorSubMenuActions(false); if (event->button() == Qt::RightButton && m_contentAvailable) { emit whichFilterAreActivated(); m_contextMenu->exec(mapToGlobal(m_coords)); } } void LogViewTableView::mouseMoveEvent(QMouseEvent *event) { m_coords.setX(event->x()); m_coords.setY(event->y()); emit mouseMoved(m_coords); } void LogViewTableView::enableColorSubMenuActions(bool checkState) { m_actionSetCellColor->setEnabled(checkState); m_actionSetFontColor->setEnabled(checkState); }