140 lines
5.1 KiB
C++
Executable File
140 lines
5.1 KiB
C++
Executable File
/*
|
|
* @RDE_HEADER@
|
|
* <short description>
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by Malte Schröder, SLSE, 2016-07-14
|
|
*/
|
|
|
|
#include "logviewtableview.h"
|
|
#include "logviewtablemodel.h"
|
|
|
|
#include <QAction>
|
|
#include <QColor>
|
|
#include <QColorDialog>
|
|
#include <QIcon>
|
|
#include <QMenu>
|
|
#include <QMouseEvent>
|
|
|
|
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<bool> &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);
|
|
}
|