1
0
mirror of https://github.com/ElvishArtisan/rivendell.git synced 2025-10-08 15:43:32 +02:00
Files
apis
cae
conf
docs
helpers
icons
importers
ios
lib
Makefile.am
dbversion.h
export_bmiemr.cpp
export_cutlog.cpp
export_deltaflex.cpp
export_musicclassical.cpp
export_musicplayout.cpp
export_musicsummary.cpp
export_nprsoundex.cpp
export_radiotraffic.cpp
export_soundex.cpp
export_spincount.cpp
export_technical.cpp
export_textlog.cpp
gpio.h
lib.pro
librd_cs.ts
librd_de.ts
librd_es.ts
librd_fr.ts
librd_nb.ts
librd_nn.ts
librd_pt_BR.ts
rd.h
rdadd_cart.cpp
rdadd_cart.h
rdadd_log.cpp
rdadd_log.h
rdairplay_conf.cpp
rdairplay_conf.h
rdapplication.cpp
rdapplication.h
rdaudio_exists.cpp
rdaudio_exists.h
rdaudio_port.cpp
rdaudio_port.h
rdaudioconvert.cpp
rdaudioconvert.h
rdaudioexport.cpp
rdaudioexport.h
rdaudioimport.cpp
rdaudioimport.h
rdaudioinfo.cpp
rdaudioinfo.h
rdaudiosettings.cpp
rdaudiosettings.h
rdaudiostore.cpp
rdaudiostore.h
rdbusybar.cpp
rdbusybar.h
rdbusydialog.cpp
rdbusydialog.h
rdbutton_dialog.cpp
rdbutton_dialog.h
rdbutton_panel.cpp
rdbutton_panel.h
rdcae.cpp
rdcae.h
rdcardselector.cpp
rdcardselector.h
rdcart.cpp
rdcart.h
rdcart_dialog.cpp
rdcart_dialog.h
rdcart_search_text.cpp
rdcart_search_text.h
rdcartdrag.cpp
rdcartdrag.h
rdcartslot.cpp
rdcartslot.h
rdcastsearch.cpp
rdcastsearch.h
rdcatch_conf.cpp
rdcatch_conf.h
rdcatch_connect.cpp
rdcatch_connect.h
rdcddblookup.cpp
rdcddblookup.h
rdcddbrecord.cpp
rdcddbrecord.h
rdcdplayer.cpp
rdcdplayer.h
rdcdripper.cpp
rdcdripper.h
rdcheck_version.cpp
rdcheck_version.h
rdclock.cpp
rdclock.h
rdcmd_cache.cpp
rdcmd_cache.h
rdcmd_switch.cpp
rdcmd_switch.h
rdcodetrap.cpp
rdcodetrap.h
rdcombobox.cpp
rdcombobox.h
rdconf.cpp
rdconf.h
rdconfig.cpp
rdconfig.h
rdcopyaudio.cpp
rdcopyaudio.h
rdcueedit.cpp
rdcueedit.h
rdcueeditdialog.cpp
rdcueeditdialog.h
rdcut.cpp
rdcut.h
rdcut_dialog.cpp
rdcut_dialog.h
rdcut_path.cpp
rdcut_path.h
rddatedecode.cpp
rddatedecode.h
rddatedialog.cpp
rddatedialog.h
rddatepicker.cpp
rddatepicker.h
rddatetime.cpp
rddatetime.h
rddb.cpp
rddb.h
rddbheartbeat.cpp
rddbheartbeat.h
rddebug.cpp
rddebug.h
rddeck.cpp
rddeck.h
rddelete.cpp
rddelete.h
rddialog.cpp
rddialog.h
rddownload.cpp
rddownload.h
rddropbox.cpp
rddropbox.h
rdedit_audio.cpp
rdedit_audio.h
rdedit_panel_name.cpp
rdedit_panel_name.h
rdemptycart.cpp
rdemptycart.h
rdescape_string.cpp
rdescape_string.h
rdevent.cpp
rdevent.h
rdevent_line.cpp
rdevent_line.h
rdevent_player.cpp
rdevent_player.h
rdeventimportlist.cpp
rdeventimportlist.h
rdexport_settings_dialog.cpp
rdexport_settings_dialog.h
rdfeed.cpp
rdfeed.h
rdfeedlog.cpp
rdfeedlog.h
rdflacdecode.cpp
rdflacdecode.h
rdfontengine.cpp
rdfontengine.h
rdformpost.cpp
rdformpost.h
rdframe.cpp
rdframe.h
rdgain_envelope.cpp
rdgain_envelope.h
rdget_ath.cpp
rdget_ath.h
rdgetpasswd.cpp
rdgetpasswd.h
rdgpio.cpp
rdgpio.h
rdgpioselector.cpp
rdgpioselector.h
rdgrid.cpp
rdgrid.h
rdgroup.cpp
rdgroup.h
rdgroup_list.cpp
rdgroup_list.h
rdhash.cpp
rdhash.h
rdhotkeylist.cpp
rdhotkeylist.h
rdhotkeys.cpp
rdhotkeys.h
rdidvalidator.cpp
rdidvalidator.h
rdimport_audio.cpp
rdimport_audio.h
rdinstancelock.cpp
rdinstancelock.h
rdkernelgpio.cpp
rdkernelgpio.h
rdlabel.cpp
rdlabel.h
rdlibrary_conf.cpp
rdlibrary_conf.h
rdlineedit.cpp
rdlineedit.h
rdlist_groups.cpp
rdlist_groups.h
rdlist_logs.cpp
rdlist_logs.h
rdlistselector.cpp
rdlistselector.h
rdlistsvcs.cpp
rdlistsvcs.h
rdlistview.cpp
rdlistview.h
rdlistviewitem.cpp
rdlistviewitem.h
rdlivewire.cpp
rdlivewire.h
rdlivewiredestination.cpp
rdlivewiredestination.h
rdlivewiresource.cpp
rdlivewiresource.h
rdlog.cpp
rdlog.h
rdlog_event.cpp
rdlog_event.h
rdlog_line.cpp
rdlog_line.h
rdlogedit_conf.cpp
rdlogedit_conf.h
rdlogfilter.cpp
rdlogfilter.h
rdloglock.cpp
rdloglock.h
rdlogplay.cpp
rdlogplay.h
rdmacro.cpp
rdmacro.h
rdmacro_event.cpp
rdmacro_event.h
rdmarker_bar.cpp
rdmarker_bar.h
rdmarker_button.cpp
rdmarker_button.h
rdmarker_edit.cpp
rdmarker_edit.h
rdmatrix.cpp
rdmatrix.h
rdmeteraverage.cpp
rdmeteraverage.h
rdmixer.cpp
rdmixer.h
rdmonitor_config.cpp
rdmonitor_config.h
rdmp4.cpp
rdmp4.h
rdmulticaster.cpp
rdmulticaster.h
rdnotification.cpp
rdnotification.h
rdnownext.cpp
rdnownext.h
rdoneshot.cpp
rdoneshot.h
rdpam.cpp
rdpam.h
rdpanel_button.cpp
rdpanel_button.h
rdpasswd.cpp
rdpasswd.h
rdpaths.h.in
rdpeaksexport.cpp
rdpeaksexport.h
rdplay_deck.cpp
rdplay_deck.h
rdplaymeter.cpp
rdplaymeter.h
rdpodcast.cpp
rdpodcast.h
rdprocess.cpp
rdprocess.h
rdprofile.cpp
rdprofile.h
rdpushbutton.cpp
rdpushbutton.h
rdrecording.cpp
rdrecording.h
rdrehash.cpp
rdrehash.h
rdrenderer.cpp
rdrenderer.h
rdreplicator.cpp
rdreplicator.h
rdreport.cpp
rdreport.h
rdringbuffer.cpp
rdringbuffer.h
rdripc.cpp
rdripc.h
rdschedcartlist.cpp
rdschedcartlist.h
rdschedcode.cpp
rdschedcode.h
rdschedcodes_dialog.cpp
rdschedcodes_dialog.h
rdschedruleslist.cpp
rdschedruleslist.h
rdsegmeter.cpp
rdsegmeter.h
rdsettings.cpp
rdsettings.h
rdsimpleplayer.cpp
rdsimpleplayer.h
rdslider.cpp
rdslider.h
rdslotbox.cpp
rdslotbox.h
rdslotdialog.cpp
rdslotdialog.h
rdslotoptions.cpp
rdslotoptions.h
rdsocket.cpp
rdsocket.h
rdsocketstrings.cpp
rdsocketstrings.h
rdsound_panel.cpp
rdsound_panel.h
rdstation.cpp
rdstation.h
rdstatus.cpp
rdstatus.h
rdstereometer.cpp
rdstereometer.h
rdstringlist.cpp
rdstringlist.h
rdsvc.cpp
rdsvc.h
rdsystem.cpp
rdsystem.h
rdsystemuser.cpp
rdsystemuser.h
rdtempdirectory.cpp
rdtempdirectory.h
rdtextfile.cpp
rdtextfile.h
rdtextvalidator.cpp
rdtextvalidator.h
rdtimeedit.cpp
rdtimeedit.h
rdtimeengine.cpp
rdtimeengine.h
rdtimeevent.cpp
rdtimeevent.h
rdtransportbutton.cpp
rdtransportbutton.h
rdtrimaudio.cpp
rdtrimaudio.h
rdtty.cpp
rdtty.h
rdttydevice.cpp
rdttydevice.h
rdttyout.cpp
rdttyout.h
rdunixserver.cpp
rdunixserver.h
rdunixsocket.cpp
rdunixsocket.h
rdupload.cpp
rdupload.h
rdurl.cpp
rdurl.h
rduser.cpp
rduser.h
rdversion.cpp
rdversion.h
rdwavedata.cpp
rdwavedata.h
rdwavedata_dialog.cpp
rdwavedata_dialog.h
rdwavefile.cpp
rdwavefile.h
rdwavepainter.cpp
rdwavepainter.h
rdweb.cpp
rdweb.h
rdwebresult.cpp
rdwebresult.h
rdwidget.cpp
rdwidget.h
rdxport_interface.h
rdadmin
rdairplay
rdcartslots
rdcastmanager
rdcatch
rdcatchd
rdhpi
rdlibrary
rdlogedit
rdlogin
rdlogmanager
rdmonitor
rdpadd
rdpadengined
rdpanel
rdrepld
rdselect
rdservice
rdvairplayd
ripcd
scripts
systemd
tests
utils
web
xdg
.gitignore
AUTHORS
CODINGSTYLE
COPYING
ChangeLog
INSTALL
INSTALL-WINDOWS
Makefile.am
NEWS
PACKAGE_VERSION
README
UPGRADING
acinclude.m4
autogen.sh
configure.ac
get_distro.pl
get_target.sh
rivendell.ism
rivendell.pro
rivendell.spec.in
Rivendellaudio/lib/rdlogfilter.cpp
Fred Gleason 75bec4d3c4 2018-10-19 Fred Gleason <fredg@paravelsystems.com>
* Removed 'build_win32.bat'.
	* Removed all conditional compilation based on 'WIN32'.
2018-10-19 17:03:58 -04:00

215 lines
5.8 KiB
C++

// rdlogfilter.cpp
//
// Filter widget for picking Rivendell logs.
//
// (C) Copyright 2017-2018 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include "rdapplication.h"
#include "rddb.h"
#include "rd.h"
#include "rdescape_string.h"
#include "rdlogfilter.h"
#include <QResizeEvent>
#include "qlabel.h"
RDLogFilter::RDLogFilter(RDLogFilter::FilterMode mode,QWidget *parent)
: QWidget(parent)
{
QString sql;
RDSqlQuery *q;
filter_filter_mode=mode;
QFont label_font(font().family(),font().pointSize(),QFont::Bold);
QFont check_font(font().family(),font().pointSize()-2,QFont::DemiBold);
//
// Service
//
filter_service_label=new QLabel(tr("Service")+":",this);
filter_service_label->setFont(label_font);
filter_service_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
filter_service_box=new QComboBox(this);
filter_service_label->setBuddy(filter_service_box);
switch(mode) {
case RDLogFilter::NoFilter:
filter_service_box->insertItem(tr("ALL"));
sql=QString("select NAME from SERVICES order by NAME");
q=new RDSqlQuery(sql);
while(q->next()) {
filter_service_box->insertItem(q->value(0).toString());
}
delete q;
break;
case RDLogFilter::UserFilter:
changeUser();
break;
case RDLogFilter::StationFilter:
filter_service_box->insertItem(tr("ALL"));
sql=QString("select SERVICE_NAME from SERVICE_PERMS where ")+
"STATION_NAME=\""+RDEscapeString(rda->config()->stationName())+"\"";
q=new RDSqlQuery(sql);
while(q->next()) {
filter_service_box->insertItem(q->value(0).toString());
}
delete q;
break;
}
connect(filter_service_box,SIGNAL(activated(int)),
this,SLOT(serviceChangedData(int)));
//
// Filter
//
filter_filter_label=new QLabel(tr("Filter")+":",this);
filter_filter_label->setFont(label_font);
filter_filter_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
filter_filter_edit=new QLineEdit(this);
filter_clear_button=new QPushButton(tr("Clear"),this);
filter_filter_label->setBuddy(filter_filter_edit);
connect(filter_filter_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(filterChangedData(const QString &)));
connect(filter_clear_button,SIGNAL(clicked()),this,SLOT(filterClearedData()));
//
// Show Recent
//
filter_recent_check=new QCheckBox(this);
filter_recent_label=new QLabel(tr("Show Only Recent Logs"),this);
filter_recent_label->setFont(check_font);
filter_recent_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
connect(filter_recent_check,SIGNAL(clicked()),
this,SLOT(filterChangedData()));
}
RDLogFilter::~RDLogFilter()
{
delete filter_clear_button;
delete filter_filter_edit;
delete filter_filter_label;
delete filter_recent_label;
}
QSize RDLogFilter::sizeHint() const
{
return QSize(400,60);
}
QSizePolicy RDLogFilter::sizePolicy() const
{
return QSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Fixed);
}
QString RDLogFilter::whereSql() const
{
QString sql="";
if(filter_service_box->currentItem()!=0) {
sql+="&&(LOGS.SERVICE=\""+
RDEscapeString(filter_service_box->currentText())+"\")";
}
else {
sql+="&&(";
for(int i=1;i<filter_service_box->count();i++) {
sql+="(SERVICE=\""+RDEscapeString(filter_service_box->text(i))+"\")||";
}
sql=sql.left(sql.length()-2);
sql+=")";
}
QString filter=filter_filter_edit->text();
if(!filter.isEmpty()) {
if(filter_service_box->currentItem()==0) {
sql+="&&((LOGS.NAME like \"%%"+RDEscapeString(filter)+"%%\")||";
sql+="(LOGS.DESCRIPTION like \"%%"+RDEscapeString(filter)+"%%\")||";
sql+="(LOGS.SERVICE like \"%%"+RDEscapeString(filter)+"%%\"))";
}
else {
sql+="&&((LOGS.NAME like \"%%"+RDEscapeString(filter)+"%%\")||";
sql+="(LOGS.DESCRIPTION like \"%%"+RDEscapeString(filter)+"%%\"))";
}
}
if(filter_recent_check->isChecked()) {
sql+=QString().sprintf("order by LOGS.ORIGIN_DATETIME desc limit %d",
RD_LOGFILTER_LIMIT_QUAN);
}
return sql;
}
void RDLogFilter::changeUser()
{
if(filter_filter_mode==RDLogFilter::UserFilter) {
filter_service_box->clear();
filter_service_box->insertItem(tr("ALL"));
QString sql=QString("select SERVICE_NAME from USER_SERVICE_PERMS where ")+
"USER_NAME=\""+RDEscapeString(rda->user()->name())+"\"";
RDSqlQuery *q=new RDSqlQuery(sql);
while(q->next()) {
filter_service_box->insertItem(q->value(0).toString());
}
delete q;
}
}
void RDLogFilter::filterChangedData(const QString &str)
{
emit filterChanged(whereSql());
}
void RDLogFilter::filterChangedData()
{
emit filterChanged(whereSql());
}
void RDLogFilter::filterClearedData()
{
filter_filter_edit->clear();
filterChangedData();
}
void RDLogFilter::serviceChangedData(int n)
{
emit filterChanged(whereSql());
}
void RDLogFilter::resizeEvent(QResizeEvent *e)
{
filter_service_label->setGeometry(0,2,70,20);
filter_service_box->setGeometry(75,2,140,20);
filter_filter_label->setGeometry(220,2,50,20);
filter_filter_edit->setGeometry(275,2,size().width()-360,20);
filter_clear_button->setGeometry(size().width()-70,0,50,25);
filter_recent_check->setGeometry(275,27,15,15);
filter_recent_label->setGeometry(295,25,200,20);
}