diff --git a/ChangeLog b/ChangeLog index 77048f94..8db81995 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16334,3 +16334,5 @@ 2017-11-08 Fred Gleason * Replaced the custom 'List Logs' dialog in rdlogedit(1) with RDListLog. +2017-11-08 Fred Gleason + * Added a filter widget to the 'List Logs' dialog in rdairplay(1). diff --git a/rdairplay/list_logs.cpp b/rdairplay/list_logs.cpp index 1ee4410d..be773d70 100644 --- a/rdairplay/list_logs.cpp +++ b/rdairplay/list_logs.cpp @@ -22,8 +22,10 @@ #include #include -#include +#include + #include +#include ListLogs::ListLogs(LogPlay *log,QWidget *parent) : QDialog(parent,"",true) @@ -31,10 +33,7 @@ ListLogs::ListLogs(LogPlay *log,QWidget *parent) // // Fix the Window Size // - setMinimumWidth(sizeHint().width()); - setMaximumWidth(sizeHint().width()); - setMinimumHeight(sizeHint().height()); - setMaximumHeight(sizeHint().height()); + setMinimumSize(sizeHint()); // // Generate Fonts @@ -43,14 +42,19 @@ ListLogs::ListLogs(LogPlay *log,QWidget *parent) button_font.setPixelSize(12); 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 // - list_log_list=new QListView(this,"list_log_list"); - list_log_list->setGeometry(10,10, - sizeHint().width()-20,sizeHint().height()-80); + list_log_list=new QListView(this); list_log_list->setAllColumnsShowFocus(true); list_log_list->setItemMargin(5); connect(list_log_list, @@ -67,48 +71,38 @@ ListLogs::ListLogs(LogPlay *log,QWidget *parent) // // Load Button // - QPushButton *button=new QPushButton(this,"load_button"); - button->setGeometry(10,sizeHint().height()-60,80,50); - button->setFont(button_font); - button->setText(tr("Load")); - connect(button,SIGNAL(clicked()),this,SLOT(loadButtonData())); + list_load_button=new QPushButton(tr("Load"),this); + list_load_button->setFont(button_font); + connect(list_load_button,SIGNAL(clicked()),this,SLOT(loadButtonData())); // // Unload Button // - list_unload_button=new QPushButton(this,"list_unload_button"); - list_unload_button->setGeometry(100,sizeHint().height()-60,80,50); + list_unload_button=new QPushButton(tr("Unload"),this); list_unload_button->setFont(button_font); - list_unload_button->setText(tr("Unload")); connect(list_unload_button,SIGNAL(clicked()),this,SLOT(unloadButtonData())); // // Save Button // - button=new QPushButton(this,"save_button"); - button->setGeometry(210,sizeHint().height()-60,80,50); - button->setFont(button_font); - button->setText(tr("Save")); - connect(button,SIGNAL(clicked()),this,SLOT(saveButtonData())); + list_save_button=new QPushButton(tr("Save"),this); + list_save_button->setFont(button_font); + connect(list_save_button,SIGNAL(clicked()),this,SLOT(saveButtonData())); // // Save As Button // - list_saveas_button=new QPushButton(this,"list_saveas_button"); - list_saveas_button->setGeometry(300,sizeHint().height()-60,80,50); + list_saveas_button=new QPushButton(tr("Save As"),this); list_saveas_button->setFont(button_font); - list_saveas_button->setText(tr("Save &As")); connect(list_saveas_button,SIGNAL(clicked()),this,SLOT(saveAsButtonData())); // // Cancel Button // - button=new QPushButton(this,"cancel_button"); - button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50); - button->setFont(button_font); - button->setText(tr("Cancel")); - button->setDefault(true); - connect(button,SIGNAL(clicked()),this,SLOT(cancelButtonData())); + list_cancel_button=new QPushButton(tr("Cancel"),this); + list_cancel_button->setFont(button_font); + list_cancel_button->setDefault(true); + connect(list_cancel_button,SIGNAL(clicked()),this,SLOT(cancelButtonData())); RefreshList(); } @@ -116,7 +110,7 @@ ListLogs::ListLogs(LogPlay *log,QWidget *parent) 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_svcname=svcname; 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(); + return QDialog::exec(); } +void ListLogs::filterChangedData(const QString &where_sql) +{ + RefreshList(); +} + + void ListLogs::closeEvent(QCloseEvent *e) { 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() { RDSqlQuery *q; @@ -209,18 +233,6 @@ void ListLogs::RefreshList() QStringList services_list; 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 ")+ "where (TYPE=0)&&(LOG_EXISTS=\"Y\")&&"+ "((START_DATE<=\""+current_date.toString("yyyy-MM-dd")+"\")||"+ @@ -228,15 +240,8 @@ void ListLogs::RefreshList() "(START_DATE is null))&&"+ "((END_DATE>=\""+current_date.toString("yyyy-MM-dd")+"\")||"+ "(END_DATE=\"0000-00-00\")||"+ - "(END_DATE is null))&&("; - for ( QStringList::Iterator it = services_list.begin(); - it != services_list.end(); ++it ) { - sql+=QString().sprintf("SERVICE=\"%s\"||", - (const char *)*it); - } - sql=sql.left(sql.length()-2); - sql+=")"; - + "(END_DATE is null))"+ + list_filter_widget->whereSql(); q=new RDSqlQuery(sql); while(q->next()) { l=new QListViewItem(list_log_list); diff --git a/rdairplay/list_logs.h b/rdairplay/list_logs.h index 843c90bb..44969f45 100644 --- a/rdairplay/list_logs.h +++ b/rdairplay/list_logs.h @@ -26,6 +26,8 @@ #include #include +#include + #include class ListLogs : public QDialog @@ -41,6 +43,7 @@ class ListLogs : public QDialog int exec(QString *logname,QString *svcname); private slots: + void filterChangedData(const QString &where_sql); void doubleClickedData(QListViewItem *,const QPoint &,int); void closeEvent(QCloseEvent *); void loadButtonData(); @@ -49,13 +52,20 @@ class ListLogs : public QDialog void unloadButtonData(); void cancelButtonData(); + protected: + void resizeEvent(QResizeEvent *e); + private: void RefreshList(); + RDLogFilter *list_filter_widget; QListView *list_log_list; QString *list_logname; QString *list_svcname; + QPushButton *list_load_button; QPushButton *list_unload_button; + QPushButton *list_save_button; QPushButton *list_saveas_button; + QPushButton *list_cancel_button; LogPlay *list_log; }; diff --git a/rdairplay/rdairplay_cs.ts b/rdairplay/rdairplay_cs.ts index 33cfc7a1..52178bbc 100644 --- a/rdairplay/rdairplay_cs.ts +++ b/rdairplay/rdairplay_cs.ts @@ -402,7 +402,7 @@ poslechu ListLogs Select a Log - Vybrat zápis + Vybrat zápis NAME @@ -430,7 +430,7 @@ poslechu Save &As - Uložit &jako + Uložit &jako Cancel @@ -440,6 +440,18 @@ poslechu Rename Log Přejmenovat zápis + + ALL + + + + Select Log + + + + Save As + + LogLineBox diff --git a/rdairplay/rdairplay_de.ts b/rdairplay/rdairplay_de.ts index 11563b41..9f9fb924 100644 --- a/rdairplay/rdairplay_de.ts +++ b/rdairplay/rdairplay_de.ts @@ -402,7 +402,7 @@ vorhören ListLogs Select a Log - Log auswählen + Log auswählen NAME @@ -430,7 +430,7 @@ vorhören Save &As - Speichern &Als + Speichern &Als Cancel @@ -440,6 +440,18 @@ vorhören Rename Log Log umbenennen + + ALL + + + + Select Log + + + + Save As + + LogLineBox diff --git a/rdairplay/rdairplay_es.ts b/rdairplay/rdairplay_es.ts index c2ec7c76..42f0c6a7 100644 --- a/rdairplay/rdairplay_es.ts +++ b/rdairplay/rdairplay_es.ts @@ -402,7 +402,7 @@ Final ListLogs Select a Log - Seleccione una lista + Seleccione una lista NAME @@ -430,7 +430,7 @@ Final Save &As - Gu&ard. como + Gu&ard. como Cancel @@ -440,6 +440,18 @@ Final Rename Log Cambiar nombre de la lista + + ALL + + + + Select Log + + + + Save As + + LogLineBox diff --git a/rdairplay/rdairplay_fr.ts b/rdairplay/rdairplay_fr.ts index a338f9fe..93380fbd 100644 --- a/rdairplay/rdairplay_fr.ts +++ b/rdairplay/rdairplay_fr.ts @@ -402,7 +402,7 @@ la Fin ListLogs Select a Log - Sélectionner un Log + Sélectionner un Log NAME @@ -430,7 +430,7 @@ la Fin Save &As - S&auver Sous + S&auver Sous Cancel @@ -440,6 +440,18 @@ la Fin Rename Log Renommer le Log + + ALL + + + + Select Log + + + + Save As + + LogLineBox diff --git a/rdairplay/rdairplay_nb.ts b/rdairplay/rdairplay_nb.ts index 102fbb0d..ee918c5c 100644 --- a/rdairplay/rdairplay_nb.ts +++ b/rdairplay/rdairplay_nb.ts @@ -408,7 +408,7 @@ Tail ListLogs Select a Log - Vel ein logg + Vel ein logg NAME @@ -436,7 +436,7 @@ Tail Save &As - Lagre &som + Lagre &som Cancel @@ -446,6 +446,18 @@ Tail Rename Log Døyp om loggen + + ALL + + + + Select Log + + + + Save As + + LogLineBox diff --git a/rdairplay/rdairplay_nn.ts b/rdairplay/rdairplay_nn.ts index 102fbb0d..ee918c5c 100644 --- a/rdairplay/rdairplay_nn.ts +++ b/rdairplay/rdairplay_nn.ts @@ -408,7 +408,7 @@ Tail ListLogs Select a Log - Vel ein logg + Vel ein logg NAME @@ -436,7 +436,7 @@ Tail Save &As - Lagre &som + Lagre &som Cancel @@ -446,6 +446,18 @@ Tail Rename Log Døyp om loggen + + ALL + + + + Select Log + + + + Save As + + LogLineBox diff --git a/rdairplay/rdairplay_pt_BR.ts b/rdairplay/rdairplay_pt_BR.ts index 429dce55..b08376ee 100644 --- a/rdairplay/rdairplay_pt_BR.ts +++ b/rdairplay/rdairplay_pt_BR.ts @@ -403,7 +403,7 @@ Log ListLogs Select a Log - Sel uma Lista + Sel uma Lista NAME @@ -431,7 +431,7 @@ Log Save &As - Salvar &Como + Salvar &Como Cancel @@ -441,6 +441,18 @@ Log Rename Log Renomear lista + + ALL + + + + Select Log + + + + Save As + + LogLineBox