diff --git a/ChangeLog b/ChangeLog index 1c0c8bef..9b98c3d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24872,3 +24872,11 @@ 2024-08-26 Fred Gleason * Fixed a bug in rdairplay(1) that caused the voice tracker to be left in an undefined state after attempting to load a locked log. +2024-08-26 Fred Gleason + * Modified the 'Select Log' dialog in the voice tracker in + rdairplay(1) so as to retain previous service selection across + invocations. + * Modified the 'Podcast Item List' dialog in rdcastmanager(1) so as + to retain previous service selection across invocations. + * Modified the 'Edit Log Chain' dialog in rdlogedit(1) so as + to retain previous user group selection across invocations. diff --git a/lib/rdlist_logs.cpp b/lib/rdlist_logs.cpp index 308a34bf..04f1f168 100644 --- a/lib/rdlist_logs.cpp +++ b/lib/rdlist_logs.cpp @@ -2,7 +2,7 @@ // // Select a Rivendell Log // -// (C) Copyright 2002-2022 Fred Gleason +// (C) Copyright 2002-2024 Fred Gleason // // 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 @@ -23,12 +23,10 @@ #include "rdescape_string.h" #include "rdlist_logs.h" -RDListLogs::RDListLogs(QString *logname,RDLogFilter::FilterMode mode, - const QString &caption,QWidget *parent) +RDListLogs::RDListLogs(RDLogFilter::FilterMode mode,const QString &caption, + QWidget *parent) : RDDialog(parent) { - list_logname=logname; - // // Fix the Window Size // @@ -73,9 +71,6 @@ RDListLogs::RDListLogs(QString *logname,RDLogFilter::FilterMode mode, list_cancel_button->setText(tr("Cancel")); list_cancel_button->setDefault(true); connect(list_cancel_button,SIGNAL(clicked()),this,SLOT(cancelButtonData())); - - list_log_model->setFilterSql(list_filter_widget->whereSql(), - list_filter_widget->limitSql()); } @@ -91,6 +86,18 @@ QSizePolicy RDListLogs::sizePolicy() const } +int RDListLogs::exec(QString *logname) +{ + list_logname=logname; + + list_filter_widget->changeUser(); + list_log_model->setFilterSql(list_filter_widget->whereSql(), + list_filter_widget->limitSql()); + + return QDialog::exec(); +} + + void RDListLogs::closeEvent(QCloseEvent *e) { cancelButtonData(); @@ -114,7 +121,8 @@ void RDListLogs::okButtonData() if(list_log_view->selectionModel()->selectedRows().size()!=1) { return; } - *list_logname=list_log_model->logName(list_log_view->selectionModel()->selectedRows().at(0)); + *list_logname=list_log_model-> + logName(list_log_view->selectionModel()->selectedRows().at(0)); done(true); } diff --git a/lib/rdlist_logs.h b/lib/rdlist_logs.h index dc304c62..e7dabe29 100644 --- a/lib/rdlist_logs.h +++ b/lib/rdlist_logs.h @@ -37,11 +37,14 @@ class RDListLogs : public RDDialog { Q_OBJECT public: - RDListLogs(QString *logname,RDLogFilter::FilterMode mode, - const QString &caption,QWidget *parent=0); + RDListLogs(RDLogFilter::FilterMode mode,const QString &caption, + QWidget *parent); QSize sizeHint() const; QSizePolicy sizePolicy() const; + public slots: + int exec(QString *logname); + private slots: void doubleClickedData(const QModelIndex &index); void closeEvent(QCloseEvent *); diff --git a/lib/rdlogfilter.cpp b/lib/rdlogfilter.cpp index 8cd90b18..85f3b163 100644 --- a/lib/rdlogfilter.cpp +++ b/lib/rdlogfilter.cpp @@ -2,7 +2,7 @@ // // Filter widget for picking Rivendell logs. // -// (C) Copyright 2017-2022 Fred Gleason +// (C) Copyright 2017-2024 Fred Gleason // // 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 @@ -184,18 +184,22 @@ QString RDLogFilter::limitSql() const void RDLogFilter::changeUser() { if(filter_filter_mode==RDLogFilter::UserFilter) { - filter_service_box->clear(); - filter_service_box->insertItem(filter_service_box->count(),tr("ALL")); - QString sql=QString("select `SERVICE_NAME` from `USER_SERVICE_PERMS` where ")+ - "`USER_NAME`='"+RDEscapeString(rda->user()->name())+"' "+ - "order by `SERVICE_NAME`"; - RDSqlQuery *q=new RDSqlQuery(sql); - while(q->next()) { - filter_service_box-> - insertItem(filter_service_box->count(),rda->iconEngine()->serviceIcon(), - q->value(0).toString()); + if(filter_current_username!=rda->user()->name()) { + filter_service_box->clear(); + filter_service_box->insertItem(filter_service_box->count(),tr("ALL")); + QString sql= + QString("select `SERVICE_NAME` from `USER_SERVICE_PERMS` where ")+ + "`USER_NAME`='"+RDEscapeString(rda->user()->name())+"' "+ + "order by `SERVICE_NAME`"; + RDSqlQuery *q=new RDSqlQuery(sql); + while(q->next()) { + filter_service_box->insertItem(filter_service_box->count(), + rda->iconEngine()->serviceIcon(), + q->value(0).toString()); + } + delete q; + filter_current_username=rda->user()->name(); } - delete q; } } diff --git a/lib/rdlogfilter.h b/lib/rdlogfilter.h index 8e94f7be..7f6d8572 100644 --- a/lib/rdlogfilter.h +++ b/lib/rdlogfilter.h @@ -2,7 +2,7 @@ // // Filter widget for picking Rivendell logs. // -// (C) Copyright 2017-2022 Fred Gleason +// (C) Copyright 2017-2024 Fred Gleason // // 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 @@ -69,6 +69,7 @@ class RDLogFilter : public QWidget QPushButton *filter_clear_button; QCheckBox *filter_recent_check; QLabel *filter_recent_label; + QString filter_current_username; }; diff --git a/rdadmin/edit_rdairplay.cpp b/rdadmin/edit_rdairplay.cpp index cdbe8e63..55eecb07 100644 --- a/rdadmin/edit_rdairplay.cpp +++ b/rdadmin/edit_rdairplay.cpp @@ -2,7 +2,7 @@ // // Edit an RDAirPlay Configuration // -// (C) Copyright 2002-2022 Fred Gleason +// (C) Copyright 2002-2024 Fred Gleason // // 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 @@ -26,11 +26,9 @@ #include #include #include -#include #include #include "edit_rdairplay.h" -//#include "edit_hotkeys.h" #include "edit_channelgpios.h" #include "globals.h" @@ -50,7 +48,8 @@ EditRDAirPlay::EditRDAirPlay(RDStation *station,RDStation *cae_station, setMaximumSize(sizeHint()); air_conf=new RDAirPlayConf(station->name(),"RDAIRPLAY"); - + air_listlogs_dialog=new RDListLogs(RDLogFilter::NoFilter,"RDAdmin",this); + // // Text Validator // @@ -1179,23 +1178,11 @@ void EditRDAirPlay::selectData() { QString logname=air_startlog_edit->text(); - RDListLogs *ll=new RDListLogs(&logname,RDLogFilter::NoFilter,"RDAdmin",this); - if(ll->exec()) { + if(air_listlogs_dialog->exec(&logname)) { air_startlog_edit->setText(logname); } - delete ll; } -/* -void EditRDAirPlay::editHotKeys() -{ - QString module_name = QString("airplay"); - EditHotkeys *edit_hotkeys= - new EditHotkeys(air_conf->station(),(const char *)module_name,this); - edit_hotkeys->exec(); - delete edit_hotkeys; -} -*/ void EditRDAirPlay::selectSkinData() { diff --git a/rdadmin/edit_rdairplay.h b/rdadmin/edit_rdairplay.h index be871d80..c323773f 100644 --- a/rdadmin/edit_rdairplay.h +++ b/rdadmin/edit_rdairplay.h @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -150,6 +151,7 @@ class EditRDAirPlay : public RDDialog QComboBox *air_virtual_logstartmode_box; int air_virtual_logstartmachine; RDAirPlayConf::OpMode air_virtual_opmodes[RD_RDVAIRPLAY_LOG_QUAN]; + RDListLogs *air_listlogs_dialog; RDServiceListModel *air_service_model; }; diff --git a/rdairplay/voicetracker.cpp b/rdairplay/voicetracker.cpp index 98851d93..1c2b755b 100644 --- a/rdairplay/voicetracker.cpp +++ b/rdairplay/voicetracker.cpp @@ -18,14 +18,14 @@ // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -#include - #include "colors.h" #include "voicetracker.h" VoiceTracker::VoiceTracker(QWidget *parent) : RDWidget(parent) { + d_listlogs_dialog=new RDListLogs(RDLogFilter::StationFilter,"RDAirPlay",this); + d_tracker_widget=new RDTrackerWidget(&d_import_path,this); if(rda->airplayConf()->barAction()==RDAirPlayConf::StartNext) { d_tracker_widget->setFocusPolicy(Qt::NoFocus); @@ -57,16 +57,15 @@ void VoiceTracker::loadData() { QString logname; - RDListLogs *d=new RDListLogs(&logname,RDLogFilter::StationFilter,"RDAirPlay", - this); - if(d->exec()) { + printf("HERE1\n"); + if(d_listlogs_dialog->exec(&logname)) { + printf("HERE2: %s\n",logname.toUtf8().constData()); if(d_tracker_widget->load(logname)) { d_load_button->disconnect(); connect(d_load_button,SIGNAL(clicked()),this,SLOT(unloadData())); d_load_button->setText(tr("Unload\nLog")); } } - delete d; } diff --git a/rdairplay/voicetracker.h b/rdairplay/voicetracker.h index 08ab3126..a020c4c2 100644 --- a/rdairplay/voicetracker.h +++ b/rdairplay/voicetracker.h @@ -24,6 +24,7 @@ #include #include +#include #include #include @@ -43,6 +44,7 @@ class VoiceTracker : public RDWidget void paintEvent(QPaintEvent *e); private: + RDListLogs *d_listlogs_dialog; RDTrackerWidget *d_tracker_widget; QPushButton *d_load_button; QString d_import_path; diff --git a/rdcastmanager/list_casts.cpp b/rdcastmanager/list_casts.cpp index 5725e6e1..4a732a1b 100644 --- a/rdcastmanager/list_casts.cpp +++ b/rdcastmanager/list_casts.cpp @@ -2,7 +2,7 @@ // // List Rivendell Casts // -// (C) Copyright 2002-2023 Fred Gleason +// (C) Copyright 2002-2024 Fred Gleason // // 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 @@ -24,7 +24,6 @@ #include #include -#include #include #include "edit_cast.h" @@ -54,6 +53,9 @@ ListCasts::ListCasts(unsigned feed_id,QWidget *parent) // list_render_dialog=new RenderDialog(this); + list_listlogs_dialog= + new RDListLogs(RDLogFilter::UserFilter,"RDCastManager",this); + list_cut_dialog=new RDCutDialog(&cast_filter,&cast_group,&cast_schedcode, false,false,false,"RDCastManager",false,this); list_progress_dialog= @@ -242,9 +244,7 @@ void ListCasts::addLogData() QString err_msg; unsigned cast_id=0; - RDListLogs *lld= - new RDListLogs(&logname,RDLogFilter::UserFilter,"RDCastManager",this); - if(lld->exec()) { + if(list_listlogs_dialog->exec(&logname)) { RDLogModel *model=new RDLogModel(logname,true,this); model->load(); QTime start_time; @@ -272,17 +272,13 @@ void ListCasts::addLogData() else { QMessageBox::warning(this,"RDCastManager - "+tr("Posting Error"), err_msg); - delete lld; delete model; return; } delete model; } - else { // Render dialog was canceled! - } } - delete lld; } diff --git a/rdcastmanager/list_casts.h b/rdcastmanager/list_casts.h index d4875084..aec05c8f 100644 --- a/rdcastmanager/list_casts.h +++ b/rdcastmanager/list_casts.h @@ -2,7 +2,7 @@ // // List Rivendell Casts // -// (C) Copyright 2002-2022 Fred Gleason +// (C) Copyright 2002-2024 Fred Gleason // // 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 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -74,6 +75,7 @@ class ListCasts : public RDDialog RDPodcastFilter *list_casts_filter; QProgressDialog *list_progress_dialog; RenderDialog *list_render_dialog; + RDListLogs *list_listlogs_dialog; RDFeed *list_feed; }; diff --git a/rdlogedit/edit_chain.cpp b/rdlogedit/edit_chain.cpp index 0fc72a09..1f4e4f8a 100644 --- a/rdlogedit/edit_chain.cpp +++ b/rdlogedit/edit_chain.cpp @@ -2,7 +2,7 @@ // // Edit a Rivendell Log Chain Entry // -// (C) Copyright 2002-2022 Fred Gleason +// (C) Copyright 2002-2024 Fred Gleason // // 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 @@ -21,10 +21,8 @@ #include #include #include -#include - -#include +#include "edit_chain.h" #include "globals.h" EditChain::EditChain(QWidget *parent) @@ -32,6 +30,8 @@ EditChain::EditChain(QWidget *parent) { setWindowTitle("RDLogEdit - "+tr("Edit Log Chain")); + edit_listlogs_dialog=new RDListLogs(RDLogFilter::UserFilter,"RDLogEdit",this); + // // Fix the Window Size // @@ -92,15 +92,10 @@ void EditChain::selectLogData() { QString logname; - RDListLogs *d= - new RDListLogs(&logname,RDLogFilter::UserFilter,"RDLogEdit",this); - if(!d->exec()) { - delete d; - return; + if(edit_listlogs_dialog->exec(&logname)) { + edit_label_edit->setText(logname); + labelChangedData(logname); } - delete d; - edit_label_edit->setText(logname); - labelChangedData(logname); } diff --git a/rdlogedit/edit_chain.h b/rdlogedit/edit_chain.h index 9abb4830..134ba115 100644 --- a/rdlogedit/edit_chain.h +++ b/rdlogedit/edit_chain.h @@ -22,6 +22,7 @@ #define EDIT_CHAIN_H #include +#include #include #include @@ -52,6 +53,7 @@ class EditChain : public EditEvent QLabel *edit_label_label; QLineEdit *edit_label_edit; QPushButton *edit_select_button; + RDListLogs *edit_listlogs_dialog; };