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

* Added a filter widget to the 'List Logs' dialog in rdairplay(1).
This commit is contained in:
Fred Gleason 2017-11-08 09:39:03 -05:00
parent 78c722e99b
commit fb2c080d35
10 changed files with 168 additions and 67 deletions

View File

@ -16334,3 +16334,5 @@
2017-11-08 Fred Gleason <fredg@paravelsystems.com> 2017-11-08 Fred Gleason <fredg@paravelsystems.com>
* Replaced the custom 'List Logs' dialog in rdlogedit(1) with * Replaced the custom 'List Logs' dialog in rdlogedit(1) with
RDListLog. RDListLog.
2017-11-08 Fred Gleason <fredg@paravelsystems.com>
* Added a filter widget to the 'List Logs' dialog in rdairplay(1).

View File

@ -22,8 +22,10 @@
#include <rdadd_log.h> #include <rdadd_log.h>
#include <rddb.h> #include <rddb.h>
#include <list_logs.h> #include <rdescape_string.h>
#include <globals.h> #include <globals.h>
#include <list_logs.h>
ListLogs::ListLogs(LogPlay *log,QWidget *parent) ListLogs::ListLogs(LogPlay *log,QWidget *parent)
: QDialog(parent,"",true) : QDialog(parent,"",true)
@ -31,10 +33,7 @@ ListLogs::ListLogs(LogPlay *log,QWidget *parent)
// //
// Fix the Window Size // Fix the Window Size
// //
setMinimumWidth(sizeHint().width()); setMinimumSize(sizeHint());
setMaximumWidth(sizeHint().width());
setMinimumHeight(sizeHint().height());
setMaximumHeight(sizeHint().height());
// //
// Generate Fonts // Generate Fonts
@ -43,14 +42,19 @@ ListLogs::ListLogs(LogPlay *log,QWidget *parent)
button_font.setPixelSize(12); button_font.setPixelSize(12);
list_log=log; list_log=log;
setCaption(tr("Select a Log")); setCaption(tr("Select Log"));
//
// Filter Widget
//
list_filter_widget=new RDLogFilter(this);
connect(list_filter_widget,SIGNAL(filterChanged(const QString &)),
this,SLOT(filterChangedData(const QString &)));
// //
// Log List // Log List
// //
list_log_list=new QListView(this,"list_log_list"); list_log_list=new QListView(this);
list_log_list->setGeometry(10,10,
sizeHint().width()-20,sizeHint().height()-80);
list_log_list->setAllColumnsShowFocus(true); list_log_list->setAllColumnsShowFocus(true);
list_log_list->setItemMargin(5); list_log_list->setItemMargin(5);
connect(list_log_list, connect(list_log_list,
@ -67,48 +71,38 @@ ListLogs::ListLogs(LogPlay *log,QWidget *parent)
// //
// Load Button // Load Button
// //
QPushButton *button=new QPushButton(this,"load_button"); list_load_button=new QPushButton(tr("Load"),this);
button->setGeometry(10,sizeHint().height()-60,80,50); list_load_button->setFont(button_font);
button->setFont(button_font); connect(list_load_button,SIGNAL(clicked()),this,SLOT(loadButtonData()));
button->setText(tr("Load"));
connect(button,SIGNAL(clicked()),this,SLOT(loadButtonData()));
// //
// Unload Button // Unload Button
// //
list_unload_button=new QPushButton(this,"list_unload_button"); list_unload_button=new QPushButton(tr("Unload"),this);
list_unload_button->setGeometry(100,sizeHint().height()-60,80,50);
list_unload_button->setFont(button_font); list_unload_button->setFont(button_font);
list_unload_button->setText(tr("Unload"));
connect(list_unload_button,SIGNAL(clicked()),this,SLOT(unloadButtonData())); connect(list_unload_button,SIGNAL(clicked()),this,SLOT(unloadButtonData()));
// //
// Save Button // Save Button
// //
button=new QPushButton(this,"save_button"); list_save_button=new QPushButton(tr("Save"),this);
button->setGeometry(210,sizeHint().height()-60,80,50); list_save_button->setFont(button_font);
button->setFont(button_font); connect(list_save_button,SIGNAL(clicked()),this,SLOT(saveButtonData()));
button->setText(tr("Save"));
connect(button,SIGNAL(clicked()),this,SLOT(saveButtonData()));
// //
// Save As Button // Save As Button
// //
list_saveas_button=new QPushButton(this,"list_saveas_button"); list_saveas_button=new QPushButton(tr("Save As"),this);
list_saveas_button->setGeometry(300,sizeHint().height()-60,80,50);
list_saveas_button->setFont(button_font); list_saveas_button->setFont(button_font);
list_saveas_button->setText(tr("Save &As"));
connect(list_saveas_button,SIGNAL(clicked()),this,SLOT(saveAsButtonData())); connect(list_saveas_button,SIGNAL(clicked()),this,SLOT(saveAsButtonData()));
// //
// Cancel Button // Cancel Button
// //
button=new QPushButton(this,"cancel_button"); list_cancel_button=new QPushButton(tr("Cancel"),this);
button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50); list_cancel_button->setFont(button_font);
button->setFont(button_font); list_cancel_button->setDefault(true);
button->setText(tr("Cancel")); connect(list_cancel_button,SIGNAL(clicked()),this,SLOT(cancelButtonData()));
button->setDefault(true);
connect(button,SIGNAL(clicked()),this,SLOT(cancelButtonData()));
RefreshList(); RefreshList();
} }
@ -116,7 +110,7 @@ ListLogs::ListLogs(LogPlay *log,QWidget *parent)
QSize ListLogs::sizeHint() const QSize ListLogs::sizeHint() const
{ {
return QSize(500,300); return QSize(500,400);
} }
@ -131,11 +125,28 @@ int ListLogs::exec(QString *logname,QString *svcname)
list_logname=logname; list_logname=logname;
list_svcname=svcname; list_svcname=svcname;
list_saveas_button->setEnabled(rduser->createLog()); list_saveas_button->setEnabled(rduser->createLog());
QStringList services_list;
QString sql=QString("select SERVICE_NAME from SERVICE_PERMS where ")+
"STATION_NAME=\""+RDEscapeString(rdstation_conf->name())+"\"";
RDSqlQuery *q=new RDSqlQuery(sql);
services_list.push_back(tr("ALL"));
while(q->next()) {
services_list.push_back(q->value(0).toString());
}
list_filter_widget->setServices(services_list);
delete q;
RefreshList(); RefreshList();
return QDialog::exec(); return QDialog::exec();
} }
void ListLogs::filterChangedData(const QString &where_sql)
{
RefreshList();
}
void ListLogs::closeEvent(QCloseEvent *e) void ListLogs::closeEvent(QCloseEvent *e)
{ {
done(1); done(1);
@ -200,6 +211,19 @@ void ListLogs::cancelButtonData()
} }
void ListLogs::resizeEvent(QResizeEvent *e)
{
list_filter_widget->setGeometry(10,10,size().width()-20,
list_filter_widget->sizeHint().height());
list_log_list->setGeometry(10,list_filter_widget->sizeHint().height(),size().width()-20,size().height()-list_filter_widget->sizeHint().height()-80);
list_load_button->setGeometry(10,size().height()-60,80,50);
list_unload_button->setGeometry(100,size().height()-60,80,50);
list_save_button->setGeometry(210,size().height()-60,80,50);
list_saveas_button->setGeometry(300,size().height()-60,80,50);
list_cancel_button->setGeometry(size().width()-90,size().height()-60,80,50);
}
void ListLogs::RefreshList() void ListLogs::RefreshList()
{ {
RDSqlQuery *q; RDSqlQuery *q;
@ -209,18 +233,6 @@ void ListLogs::RefreshList()
QStringList services_list; QStringList services_list;
list_log_list->clear(); list_log_list->clear();
sql=QString().sprintf("select SERVICE_NAME from SERVICE_PERMS \
where STATION_NAME=\"%s\"",
(const char *)rdstation_conf->name());
q=new RDSqlQuery(sql);
while(q->next()) {
services_list.append( q->value(0).toString() );
}
delete q;
if(services_list.size()==0) {
return;
}
sql=QString("select NAME,DESCRIPTION,SERVICE from LOGS ")+ sql=QString("select NAME,DESCRIPTION,SERVICE from LOGS ")+
"where (TYPE=0)&&(LOG_EXISTS=\"Y\")&&"+ "where (TYPE=0)&&(LOG_EXISTS=\"Y\")&&"+
"((START_DATE<=\""+current_date.toString("yyyy-MM-dd")+"\")||"+ "((START_DATE<=\""+current_date.toString("yyyy-MM-dd")+"\")||"+
@ -228,15 +240,8 @@ void ListLogs::RefreshList()
"(START_DATE is null))&&"+ "(START_DATE is null))&&"+
"((END_DATE>=\""+current_date.toString("yyyy-MM-dd")+"\")||"+ "((END_DATE>=\""+current_date.toString("yyyy-MM-dd")+"\")||"+
"(END_DATE=\"0000-00-00\")||"+ "(END_DATE=\"0000-00-00\")||"+
"(END_DATE is null))&&("; "(END_DATE is null))"+
for ( QStringList::Iterator it = services_list.begin(); list_filter_widget->whereSql();
it != services_list.end(); ++it ) {
sql+=QString().sprintf("SERVICE=\"%s\"||",
(const char *)*it);
}
sql=sql.left(sql.length()-2);
sql+=")";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
l=new QListViewItem(list_log_list); l=new QListViewItem(list_log_list);

View File

@ -26,6 +26,8 @@
#include <qlistview.h> #include <qlistview.h>
#include <qpushbutton.h> #include <qpushbutton.h>
#include <rdlogfilter.h>
#include <log_play.h> #include <log_play.h>
class ListLogs : public QDialog class ListLogs : public QDialog
@ -41,6 +43,7 @@ class ListLogs : public QDialog
int exec(QString *logname,QString *svcname); int exec(QString *logname,QString *svcname);
private slots: private slots:
void filterChangedData(const QString &where_sql);
void doubleClickedData(QListViewItem *,const QPoint &,int); void doubleClickedData(QListViewItem *,const QPoint &,int);
void closeEvent(QCloseEvent *); void closeEvent(QCloseEvent *);
void loadButtonData(); void loadButtonData();
@ -49,13 +52,20 @@ class ListLogs : public QDialog
void unloadButtonData(); void unloadButtonData();
void cancelButtonData(); void cancelButtonData();
protected:
void resizeEvent(QResizeEvent *e);
private: private:
void RefreshList(); void RefreshList();
RDLogFilter *list_filter_widget;
QListView *list_log_list; QListView *list_log_list;
QString *list_logname; QString *list_logname;
QString *list_svcname; QString *list_svcname;
QPushButton *list_load_button;
QPushButton *list_unload_button; QPushButton *list_unload_button;
QPushButton *list_save_button;
QPushButton *list_saveas_button; QPushButton *list_saveas_button;
QPushButton *list_cancel_button;
LogPlay *list_log; LogPlay *list_log;
}; };

View File

@ -402,7 +402,7 @@ poslechu</translation>
<name>ListLogs</name> <name>ListLogs</name>
<message> <message>
<source>Select a Log</source> <source>Select a Log</source>
<translation>Vybrat zápis</translation> <translation type="obsolete">Vybrat zápis</translation>
</message> </message>
<message> <message>
<source>NAME</source> <source>NAME</source>
@ -430,7 +430,7 @@ poslechu</translation>
</message> </message>
<message> <message>
<source>Save &amp;As</source> <source>Save &amp;As</source>
<translation>Uložit &amp;jako</translation> <translation type="obsolete">Uložit &amp;jako</translation>
</message> </message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
@ -440,6 +440,18 @@ poslechu</translation>
<source>Rename Log</source> <source>Rename Log</source>
<translation>Přejmenovat zápis</translation> <translation>Přejmenovat zápis</translation>
</message> </message>
<message>
<source>ALL</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save As</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LogLineBox</name> <name>LogLineBox</name>

View File

@ -402,7 +402,7 @@ vorhören</translation>
<name>ListLogs</name> <name>ListLogs</name>
<message> <message>
<source>Select a Log</source> <source>Select a Log</source>
<translation>Log auswählen</translation> <translation type="obsolete">Log auswählen</translation>
</message> </message>
<message> <message>
<source>NAME</source> <source>NAME</source>
@ -430,7 +430,7 @@ vorhören</translation>
</message> </message>
<message> <message>
<source>Save &amp;As</source> <source>Save &amp;As</source>
<translation>Speichern &amp;Als</translation> <translation type="obsolete">Speichern &amp;Als</translation>
</message> </message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
@ -440,6 +440,18 @@ vorhören</translation>
<source>Rename Log</source> <source>Rename Log</source>
<translation>Log umbenennen</translation> <translation>Log umbenennen</translation>
</message> </message>
<message>
<source>ALL</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save As</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LogLineBox</name> <name>LogLineBox</name>

View File

@ -402,7 +402,7 @@ Final</translation>
<name>ListLogs</name> <name>ListLogs</name>
<message> <message>
<source>Select a Log</source> <source>Select a Log</source>
<translation>Seleccione una lista</translation> <translation type="obsolete">Seleccione una lista</translation>
</message> </message>
<message> <message>
<source>NAME</source> <source>NAME</source>
@ -430,7 +430,7 @@ Final</translation>
</message> </message>
<message> <message>
<source>Save &amp;As</source> <source>Save &amp;As</source>
<translation>Gu&amp;ard. como</translation> <translation type="obsolete">Gu&amp;ard. como</translation>
</message> </message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
@ -440,6 +440,18 @@ Final</translation>
<source>Rename Log</source> <source>Rename Log</source>
<translation>Cambiar nombre de la lista</translation> <translation>Cambiar nombre de la lista</translation>
</message> </message>
<message>
<source>ALL</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save As</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LogLineBox</name> <name>LogLineBox</name>

View File

@ -402,7 +402,7 @@ la Fin</translation>
<name>ListLogs</name> <name>ListLogs</name>
<message> <message>
<source>Select a Log</source> <source>Select a Log</source>
<translation>Sélectionner un Log</translation> <translation type="obsolete">Sélectionner un Log</translation>
</message> </message>
<message> <message>
<source>NAME</source> <source>NAME</source>
@ -430,7 +430,7 @@ la Fin</translation>
</message> </message>
<message> <message>
<source>Save &amp;As</source> <source>Save &amp;As</source>
<translation>S&amp;auver Sous</translation> <translation type="obsolete">S&amp;auver Sous</translation>
</message> </message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
@ -440,6 +440,18 @@ la Fin</translation>
<source>Rename Log</source> <source>Rename Log</source>
<translation>Renommer le Log</translation> <translation>Renommer le Log</translation>
</message> </message>
<message>
<source>ALL</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save As</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LogLineBox</name> <name>LogLineBox</name>

View File

@ -408,7 +408,7 @@ Tail</source>
<name>ListLogs</name> <name>ListLogs</name>
<message> <message>
<source>Select a Log</source> <source>Select a Log</source>
<translation>Vel ein logg</translation> <translation type="obsolete">Vel ein logg</translation>
</message> </message>
<message> <message>
<source>NAME</source> <source>NAME</source>
@ -436,7 +436,7 @@ Tail</source>
</message> </message>
<message> <message>
<source>Save &amp;As</source> <source>Save &amp;As</source>
<translation>Lagre &amp;som</translation> <translation type="obsolete">Lagre &amp;som</translation>
</message> </message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
@ -446,6 +446,18 @@ Tail</source>
<source>Rename Log</source> <source>Rename Log</source>
<translation>Døyp om loggen</translation> <translation>Døyp om loggen</translation>
</message> </message>
<message>
<source>ALL</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save As</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LogLineBox</name> <name>LogLineBox</name>

View File

@ -408,7 +408,7 @@ Tail</source>
<name>ListLogs</name> <name>ListLogs</name>
<message> <message>
<source>Select a Log</source> <source>Select a Log</source>
<translation>Vel ein logg</translation> <translation type="obsolete">Vel ein logg</translation>
</message> </message>
<message> <message>
<source>NAME</source> <source>NAME</source>
@ -436,7 +436,7 @@ Tail</source>
</message> </message>
<message> <message>
<source>Save &amp;As</source> <source>Save &amp;As</source>
<translation>Lagre &amp;som</translation> <translation type="obsolete">Lagre &amp;som</translation>
</message> </message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
@ -446,6 +446,18 @@ Tail</source>
<source>Rename Log</source> <source>Rename Log</source>
<translation>Døyp om loggen</translation> <translation>Døyp om loggen</translation>
</message> </message>
<message>
<source>ALL</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save As</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LogLineBox</name> <name>LogLineBox</name>

View File

@ -403,7 +403,7 @@ Log</source>
<name>ListLogs</name> <name>ListLogs</name>
<message> <message>
<source>Select a Log</source> <source>Select a Log</source>
<translation>Sel uma Lista</translation> <translation type="obsolete">Sel uma Lista</translation>
</message> </message>
<message> <message>
<source>NAME</source> <source>NAME</source>
@ -431,7 +431,7 @@ Log</source>
</message> </message>
<message> <message>
<source>Save &amp;As</source> <source>Save &amp;As</source>
<translation>Salvar &amp;Como</translation> <translation type="obsolete">Salvar &amp;Como</translation>
</message> </message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
@ -441,6 +441,18 @@ Log</source>
<source>Rename Log</source> <source>Rename Log</source>
<translation>Renomear lista</translation> <translation>Renomear lista</translation>
</message> </message>
<message>
<source>ALL</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save As</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>LogLineBox</name> <name>LogLineBox</name>