2017-11-07 Fred Gleason <fredg@paravelsystems.com>

* Added an 'RDLogFilter' widget.
This commit is contained in:
Fred Gleason
2017-11-07 14:33:33 -05:00
parent 94f0e1a9ea
commit 49491e79d7
22 changed files with 402 additions and 215 deletions

View File

@@ -112,9 +112,10 @@ MainWidget::MainWidget(QWidget *parent)
log_log_list=NULL;
bool skip_db_check=false;
unsigned schema=0;
/*
QString sql;
RDSqlQuery *q;
*/
//
// Read Command Options
//
@@ -244,45 +245,11 @@ MainWidget::MainWidget(QWidget *parent)
rduser=new RDUser(RD_USER_LOGIN_NAME);
#endif // WIN32
//
//
// Log Filter
//
log_service_box=new QComboBox(this);
log_service_box->setFont(default_font);
//
log_filter_widget=new RDLogFilter(this);
connect(log_filter_widget,SIGNAL(filterChanged(const QString &)),
this,SLOT(filterChangedData(const QString &)));
log_service_box->insertItem(tr("ALL"));
sql="select NAME from SERVICES order by NAME";
q=new RDSqlQuery(sql);
while(q->next()) {
log_service_box->insertItem(q->value(0).toString());
}
delete q;
log_service_label=new QLabel(log_service_box,tr("Service")+":",this);
log_service_label->setFont(button_font);
log_service_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Filter
//
log_filter_edit=new QLineEdit(this);
log_filter_edit->setFont(default_font);
connect(log_filter_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(filterChangedData(const QString &)));
log_filter_label=new QLabel(log_filter_edit,tr("Filter")+":",this);
log_filter_label->setFont(button_font);
log_filter_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
log_filter_button=new QPushButton(tr("Clear"),this);
log_filter_button->setFont(button_font);
connect(log_filter_button,SIGNAL(clicked()),this,SLOT(filterClearedData()));
//
// Show Recent Checkbox
//
log_recent_check=new QCheckBox(this);
connect(log_recent_check,SIGNAL(toggled(bool)),this,SLOT(recentData(bool)));
log_recent_label=
new QLabel(log_recent_check,tr("Show Only Recent Logs"),this);
this,SLOT(filterChangedData(const QString &)));
//
@@ -489,7 +456,6 @@ void MainWidget::addData()
void MainWidget::editData()
{
{
std::vector<ListListViewItem *> items;
if(SelectedLogs(&items)!=1) {
@@ -729,14 +695,6 @@ void MainWidget::filterChangedData(const QString &str)
{
RefreshList();
}
void MainWidget::filterClearedData()
{
log_filter_edit->clear();
filterChangedData("");
}
void MainWidget::logSelectionChangedData()
{
@@ -771,14 +729,12 @@ void MainWidget::resizeEvent(QResizeEvent *e)
{
if(log_log_list==NULL) {
return;
}
log_service_label->setGeometry(10,10,70,20);
log_service_box->setGeometry(85,10,140,20);
log_filter_label->setGeometry(230,10,50,20);
log_filter_edit->setGeometry(285,10,size().width()-360,20);
log_filter_button->setGeometry(size().width()-60,8,50,25);
log_recent_check->setGeometry(285,35,15,15);
log_recent_label->setGeometry(305,33,200,20);
}
log_filter_widget->setGeometry(10,10,size().width()-10,
log_filter_widget->sizeHint().height());
log_log_list->setGeometry(10,log_filter_widget->sizeHint().height(),
size().width()-20,size().height()-
log_filter_widget->sizeHint().height()-65);
log_add_button->setGeometry(10,size().height()-55,80,50);
log_edit_button->setGeometry(100,size().height()-55,80,50);
@@ -869,21 +825,8 @@ void MainWidget::RefreshList()
ListListViewItem *item;
log_log_list->clear(); // Note: clear here, in case user has no perms.
sql="select NAME from LOGS where (TYPE=0)&&(LOG_EXISTS=\"Y\")";
if(log_service_box->currentItem()!=0) {
sql+="&&(SERVICE=\""+RDEscapeString(log_service_box->currentText())+"\")";
}
QString filter=log_filter_edit->text();
if(!filter.isEmpty()) {
sql+="&&((NAME like \"%%"+RDEscapeString(filter)+"%%\")||";
sql+="(DESCRIPTION like \"%%"+RDEscapeString(filter)+"%%\")||";
sql+="(SERVICE like \"%%"+RDEscapeString(filter)+"%%\"))";
}
if(log_recent_check->isChecked()) {
sql+=QString().sprintf("order by ORIGIN_DATETIME desc limit %d",
RDLOGEDIT_LIMIT_QUAN);
sql="select NAME from LOGS where (TYPE=0)&&(LOG_EXISTS=\"Y\")"+
log_filter_widget->whereSql();
q=new RDSqlQuery(sql);
while(q->next()) {