Go to the documentation of this file.00001
00008
00009
00010
00011
00012 #include <QDebug>
00013 #include <QMessageBox>
00014 #include <QSettings>
00015 #include <QFileDialog>
00016 #include <QStringList>
00017 #include <QHeaderView>
00018 #include <iostream>
00019 #include "logwidget.hpp"
00020
00021 namespace rqt_console_plus {
00022
00023 using namespace Qt;
00024
00025
00026 LogWidget::LogWidget(LogsTableModel& tablemodel, QWidget *parent)
00027 : QWidget(parent),
00028 model(tablemodel),
00029 proxy_model(this)
00030 {
00031 ui.setupUi(this);
00032
00033 proxy_model.setSourceModel(&model);
00034 ui.tableView->setModel(&proxy_model);
00035
00036
00037 ui.tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
00038 ui.tableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
00039 ui.tableView->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents);
00040 ui.tableView->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Interactive);
00041 ui.tableView->horizontalHeader()->setSectionResizeMode(4, QHeaderView::Interactive);
00042 ui.tableView->horizontalHeader()->setSectionResizeMode(5, QHeaderView::Stretch);
00043
00044 ui.tableView->verticalHeader()->setVisible(false);
00045
00046 connect( &model, &LogsTableModel::rowsInserted,
00047 this, &LogWidget::on_rowsInserted );
00048
00049 proxy_model.setSeverityDebugEnabled( ui.buttonEnableDebug->isChecked() );
00050 proxy_model.setSeverityWarningsEnabled( ui.buttonEnableWarnings->isChecked() );
00051 proxy_model.setSeverityErrorEnabled( ui.buttonEnableError->isChecked() );
00052 proxy_model.setSeverityInfoEnabled( ui.buttonEnableInfo->isChecked() );
00053
00054 proxy_model.setMessageFilterEnabled( ui.checkBoxMessageFilter->isChecked() );
00055 proxy_model.setNodeFilterEnabled( ui.checkBoxLoggerFilter->isChecked() );
00056 proxy_model.setTimeFilterEnabled( true );
00057
00058 }
00059
00060 LogWidget::~LogWidget() {}
00061
00062
00063 void LogWidget::on_lineEditMessageFilter_textEdited(const QString &filter)
00064 {
00065 proxy_model.messageFilterUpdated(
00066 static_cast<ModelFilter::FilterMode>( ui.comboBoxMessageFilter->currentIndex() ),
00067 filter );
00068 ui.tableView->resizeColumnToContents(3);
00069 }
00070
00071 void LogWidget::on_comboBoxMessageFilter_currentIndexChanged(int mode)
00072 {
00073 proxy_model.messageFilterUpdated(
00074 static_cast<ModelFilter::FilterMode>( mode ),
00075 ui.lineEditMessageFilter->text() );
00076 ui.tableView->resizeColumnToContents(4);
00077 }
00078
00079 void LogWidget::on_checkBoxMessageFilter_toggled(bool checked)
00080 {
00081 ui.labelMessageFilter->setEnabled( checked );
00082 ui.comboBoxMessageFilter->setEnabled( checked );
00083 ui.lineEditMessageFilter->setEnabled( checked );
00084
00085 proxy_model.setMessageFilterEnabled( checked );
00086 ui.tableView->resizeColumnToContents(4);
00087 }
00088
00089 void LogWidget::on_lineEditLoggerFilter_textEdited(const QString &filter)
00090 {
00091 proxy_model.nodeFilterUpdated(
00092 static_cast<ModelFilter::FilterMode>( ui.comboBoxLoggerFilter->currentIndex() ),
00093 filter );
00094 ui.tableView->resizeColumnToContents(3);
00095 }
00096
00097 void LogWidget::on_comboBoxLoggerFilter_currentIndexChanged(int mode)
00098 {
00099 proxy_model.nodeFilterUpdated(
00100 static_cast<ModelFilter::FilterMode>( mode ),
00101 ui.lineEditLoggerFilter->text() );
00102 ui.tableView->resizeColumnToContents(3);
00103 }
00104 void LogWidget::on_checkBoxLoggerFilter_toggled(bool checked)
00105
00106 {
00107 ui.labelLoggerFilter->setEnabled( checked );
00108 ui.comboBoxLoggerFilter->setEnabled( checked );
00109 ui.lineEditLoggerFilter->setEnabled( checked );
00110
00111 proxy_model.setNodeFilterEnabled( checked );
00112 ui.tableView->resizeColumnToContents(3);
00113 }
00114
00115 void LogWidget::on_rowsInserted(const QModelIndex &, int first_row, int last_row)
00116 {
00117 ui.tableView->scrollToBottom();
00118 }
00119
00120 void LogWidget::on_buttonEnableDebug_toggled(bool checked)
00121 {
00122 proxy_model.setSeverityDebugEnabled(checked);
00123 ui.tableView->resizeColumnToContents(2);
00124 }
00125
00126 void LogWidget::on_buttonEnableInfo_toggled(bool checked)
00127 {
00128 proxy_model.setSeverityInfoEnabled(checked);
00129 ui.tableView->resizeColumnToContents(2);
00130 }
00131
00132 void LogWidget::on_buttonEnableWarnings_toggled(bool checked)
00133 {
00134 proxy_model.setSeverityWarningsEnabled(checked);
00135 ui.tableView->resizeColumnToContents(2);
00136 }
00137
00138 void LogWidget::on_buttonEnableError_toggled(bool checked)
00139 {
00140 proxy_model.setSeverityErrorEnabled(checked);
00141 ui.tableView->resizeColumnToContents(2);
00142 }
00143
00144 void LogWidget::on_timeRangeChanged(TimePoint time_min, TimePoint time_max)
00145 {
00146 using namespace std::chrono;
00147 {
00148 auto msec_since_epoch_A = duration_cast<milliseconds>( time_min.time_since_epoch() );
00149 auto datetimeA = QDateTime::fromMSecsSinceEpoch( msec_since_epoch_A.count());
00150 ui.timeRangeMin->setDateTime( datetimeA );
00151 }
00152
00153 {
00154 auto msec_since_epoch_B = duration_cast<milliseconds>( time_max.time_since_epoch() );
00155 auto datetimeB = QDateTime::fromMSecsSinceEpoch( msec_since_epoch_B.count());
00156 ui.timeRangeMax->setDateTime( datetimeB );
00157 }
00158
00159
00160
00161
00162 proxy_model.timeMinMaxUpdated( time_min, time_max );
00163 ui.tableView->scrollToBottom();
00164 ui.tableView->resizeColumnToContents(0);
00165 ui.tableView->resizeColumnToContents(1);
00166 }
00167
00168
00169 }