diff --git a/ChangeLog b/ChangeLog index f0a7b0d9..131899f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22949,3 +22949,11 @@ 'isci', 'recordingMbId' and 'releaseMbId' fields. 2022-03-25 Fred Gleason * Added '--by-isci' and '--dump-isci-xref' options to rdimport(1). +2022-03-25 Fred Gleason + * Reverted the following changes: + 2022-03-09 Fred Gleason + * Fixed a regression in rdlogedit(1) that caused events from + previously viewed logs to be prepended to subsequent logs viewed + during the same session. + 2022-03-09 Fred Gleason + * Refactored the 'RDAddLog' dialog to allow for instance reuse. diff --git a/lib/rdadd_log.cpp b/lib/rdadd_log.cpp index 716a82c9..cb8b479f 100644 --- a/lib/rdadd_log.cpp +++ b/lib/rdadd_log.cpp @@ -26,14 +26,16 @@ #include "rdidvalidator.h" #include "rdadd_log.h" -RDAddLog::RDAddLog(RDLogFilter::FilterMode mode,const QString &caption, +RDAddLog::RDAddLog(QString *logname,QString *svcname, + RDLogFilter::FilterMode mode,const QString &caption, QWidget *parent) : RDDialog(parent) { QStringList services_list; - log_name=NULL; - log_svc=NULL; - log_filter_mode=mode; + QString sql; + RDSqlQuery *q; + log_name=logname; + log_svc=svcname; // // Fix the Window Size @@ -41,7 +43,7 @@ RDAddLog::RDAddLog(RDLogFilter::FilterMode mode,const QString &caption, setMinimumSize(sizeHint()); setMinimumSize(sizeHint()); - setWindowTitle(caption); + setWindowTitle(tr("Create Log")); // // Validator @@ -94,6 +96,33 @@ RDAddLog::RDAddLog(RDLogFilter::FilterMode mode,const QString &caption, add_cancel_button->setFont(buttonFont()); add_cancel_button->setText(tr("Cancel")); connect(add_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData())); + + // + // Populate Data + // + switch(mode) { + case RDLogFilter::NoFilter: + sql=QString("select `NAME` from `SERVICES` order by `NAME`"); + break; + + case RDLogFilter::UserFilter: + sql=QString("select `SERVICE_NAME` from `USER_SERVICE_PERMS` where ")+ + "`USER_NAME`='"+RDEscapeString(rda->user()->name())+"' "+ + "order by `SERVICE_NAME`"; + break; + + case RDLogFilter::StationFilter: + sql=QString("select `SERVICE_NAME` from `SERVICE_PERMS` where ")+ + "`STATION_NAME`='"+RDEscapeString(rda->station()->name())+"' "+ + "order by `SERVICE_NAME`"; + break; + } + q=new RDSqlQuery(sql); + while(q->next()) { + add_service_box-> + insertItem(add_service_box->count(),q->value(0).toString()); + } + add_name_edit->setText(*logname); } @@ -115,44 +144,6 @@ QSizePolicy RDAddLog::sizePolicy() const } -int RDAddLog::exec(QString *logname,QString *svcname) -{ - QString sql; - RDSqlQuery *q; - log_name=logname; - log_svc=svcname; - - switch(log_filter_mode) { - case RDLogFilter::NoFilter: - sql=QString("select `NAME` from `SERVICES` order by `NAME`"); - break; - - case RDLogFilter::UserFilter: - sql=QString("select `SERVICE_NAME` from `USER_SERVICE_PERMS` where ")+ - "`USER_NAME`='"+RDEscapeString(rda->user()->name())+"' "+ - "order by `SERVICE_NAME`"; - break; - - case RDLogFilter::StationFilter: - sql=QString("select `SERVICE_NAME` from `SERVICE_PERMS` where ")+ - "`STATION_NAME`='"+RDEscapeString(rda->station()->name())+"' "+ - "order by `SERVICE_NAME`"; - break; - } - q=new RDSqlQuery(sql); - add_service_box->clear(); - while(q->next()) { - add_service_box-> - insertItem(add_service_box->count(),q->value(0).toString()); - if(q->value(0).toString()==*log_svc) { - add_service_box->setCurrentIndex(add_service_box->count()-1); - } - } - add_name_edit->setText(*logname); - return QDialog::exec(); -} - - void RDAddLog::okData() { if(add_service_box->currentText().isEmpty()){ diff --git a/lib/rdadd_log.h b/lib/rdadd_log.h index 730df43f..061b70d1 100644 --- a/lib/rdadd_log.h +++ b/lib/rdadd_log.h @@ -36,15 +36,12 @@ class RDAddLog : public RDDialog { Q_OBJECT public: - RDAddLog(RDLogFilter::FilterMode mode,const QString &caption, - QWidget *parent=0); + RDAddLog(QString *logname,QString *svcname,RDLogFilter::FilterMode mode, + const QString &caption,QWidget *parent=0); ~RDAddLog(); QSize sizeHint() const; QSizePolicy sizePolicy() const; - public slots: - int exec(QString *logname,QString *svcname); - private slots: void okData(); void cancelData(); @@ -60,7 +57,6 @@ class RDAddLog : public RDDialog QPushButton *add_cancel_button; QString *log_name; QString *log_svc; - RDLogFilter::FilterMode log_filter_mode; }; diff --git a/lib/rdfeed.cpp b/lib/rdfeed.cpp index 20bff383..abd49591 100644 --- a/lib/rdfeed.cpp +++ b/lib/rdfeed.cpp @@ -1452,8 +1452,7 @@ unsigned RDFeed::postLog(const QString &logname,const QTime &start_time, // // Open Log // - log_model=new RDLogModel(false,this); - log_model->setLogName(logname); + log_model=new RDLogModel(logname,false,this); log_model->load(); if(!log_model->exists()) { *err=RDFeed::ErrorNoLog; diff --git a/lib/rdlog.cpp b/lib/rdlog.cpp index 2ac62b0a..2ee3c64a 100644 --- a/lib/rdlog.cpp +++ b/lib/rdlog.cpp @@ -465,9 +465,7 @@ int RDLog::removeTracks(RDStation *station,RDUser *user,RDConfig *config) const RDLogModel *RDLog::createLogEvent() const { - RDLogModel *model=new RDLogModel(false); - model->setLogName(name()); - return model; + return new RDLogModel(name(),false); } @@ -618,12 +616,6 @@ bool RDLog::remove(const QString &name,RDStation *station,RDUser *user, } -bool RDLog::remove(const QString &name) -{ - return RDLog::remove(name,rda->station(),rda->user(),rda->config()); -} - - int RDLog::GetIntValue(const QString &field) const { QString sql; diff --git a/lib/rdlog.h b/lib/rdlog.h index 43a487a5..b9c6f8be 100644 --- a/lib/rdlog.h +++ b/lib/rdlog.h @@ -84,7 +84,6 @@ class RDLog static bool exists(const QString &name); static bool remove(const QString &name,RDStation *station,RDUser *user, RDConfig *config); - static bool remove(const QString &name); private: int GetIntValue(const QString &field) const; diff --git a/lib/rdlogfilter.cpp b/lib/rdlogfilter.cpp index dc1719b4..dd46b400 100644 --- a/lib/rdlogfilter.cpp +++ b/lib/rdlogfilter.cpp @@ -158,15 +158,6 @@ QString RDLogFilter::whereSql() const } -QString RDLogFilter::currentServiceName() const -{ - if(filter_service_box->currentText()==tr("ALL")) { - return QString(); - } - return filter_service_box->currentText(); -} - - void RDLogFilter::changeUser() { if(filter_filter_mode==RDLogFilter::UserFilter) { diff --git a/lib/rdlogfilter.h b/lib/rdlogfilter.h index 658ef83b..4dd77b03 100644 --- a/lib/rdlogfilter.h +++ b/lib/rdlogfilter.h @@ -40,7 +40,6 @@ class RDLogFilter : public QWidget QSize sizeHint() const; QSizePolicy sizePolicy() const; QString whereSql() const; - QString currentServiceName() const; public slots: void changeUser(); diff --git a/lib/rdlogmodel.cpp b/lib/rdlogmodel.cpp index 17a65cbc..960ec286 100644 --- a/lib/rdlogmodel.cpp +++ b/lib/rdlogmodel.cpp @@ -25,9 +25,10 @@ #include "rdlog_line.h" #include "rdlogmodel.h" -RDLogModel::RDLogModel(bool read_only,QObject *parent) +RDLogModel::RDLogModel(const QString &logname,bool read_only,QObject *parent) : QAbstractTableModel(parent) { + d_log_name=logname; d_read_only=read_only; MakeModel(); @@ -246,8 +247,6 @@ QString RDLogModel::logName() const void RDLogModel::setLogName(QString logname) { - clear(); - printf("RDLogModel::setLogName(%s)\n",logname.toUtf8().constData()); RDLog *log=new RDLog(logname); d_log_name=log->name(); // So we normalize the case delete log; @@ -353,7 +352,6 @@ int RDLogModel::append(const QString &logname,bool track_ptrs) void RDLogModel::clear() { - printf("RDLogModel::clear()\n"); if(d_log_lines.size()>0) { beginResetModel(); for(int i=0;isetLogName(logname); - dst_model=new RDLogModel(true,this); - dst_model->setLogName(logname); + src_model=new RDLogModel(logname,true,this); + dst_model=new RDLogModel(logname,true,this); src_model->load(); for(int i=0;ilineCount();i++) { logline=src_model->logLine(i); @@ -1165,10 +1163,8 @@ bool RDSvc::clearLogLinks(RDSvc::ImportSource src,const QString &logname, break; } - RDLogModel *src_model=new RDLogModel(false,this); - src_model->setLogName(logname); - RDLogModel *dst_model=new RDLogModel(false,this); - dst_model->setLogName(logname); + RDLogModel *src_model=new RDLogModel(logname,false,this); + RDLogModel *dst_model=new RDLogModel(logname,false,this); src_model->load(); RDLogLine *logline=NULL; for(int i=0;ilineCount();i++) { @@ -1814,8 +1810,7 @@ bool RDSvc::ResolveInlineEvents(const QString &logname,QString *err_msg) switch(subEventInheritance()) { case RDSvc::ParentEvent: - model=new RDLogModel(false,this); - model->setLogName(logname); + model=new RDLogModel(logname,false,this); model->load(); ok=true; for(int i=0;ilineCount();i++) { diff --git a/rdairplay/list_logs.cpp b/rdairplay/list_logs.cpp index 478c7bbc..3ea8f85f 100644 --- a/rdairplay/list_logs.cpp +++ b/rdairplay/list_logs.cpp @@ -38,9 +38,6 @@ ListLogs::ListLogs(RDLogPlay *log,QWidget *parent) list_log=log; setWindowTitle("RDAirPlay - "+tr("Select Log")); - list_addlog_dialog=new RDAddLog(RDLogFilter::StationFilter, - "RDAirPlay - "+tr("Rename Log"),this); - // // Filter Widget // @@ -184,7 +181,11 @@ void ListLogs::saveAsButtonData() { QString logname; QString svcname=*list_svcname; - if(list_addlog_dialog->exec(&logname,&svcname)<0) { + RDAddLog *log; + log=new RDAddLog(&logname,&svcname,RDLogFilter::StationFilter, + tr("Rename Log"),this); + if(log->exec()<0) { + delete log; return; } *list_logname=logname; diff --git a/rdairplay/list_logs.h b/rdairplay/list_logs.h index 73872fa8..0d4e4aaf 100644 --- a/rdairplay/list_logs.h +++ b/rdairplay/list_logs.h @@ -23,7 +23,6 @@ #include -#include #include #include #include @@ -71,7 +70,6 @@ class ListLogs : public RDDialog QPushButton *list_cancel_button; RDLogPlay *list_log; RDLogLock **list_log_lock; - RDAddLog *list_addlog_dialog; }; diff --git a/rdcastmanager/list_casts.cpp b/rdcastmanager/list_casts.cpp index 39e4f7e1..01f7f5d2 100644 --- a/rdcastmanager/list_casts.cpp +++ b/rdcastmanager/list_casts.cpp @@ -247,8 +247,7 @@ void ListCasts::addLogData() RDListLogs *lld= new RDListLogs(&logname,RDLogFilter::UserFilter,"RDCastManager",this); if(lld->exec()) { - RDLogModel *model=new RDLogModel(true,this); - model->setLogName(logname); + RDLogModel *model=new RDLogModel(logname,true,this); model->load(); QTime start_time; bool ignore_stops=true; @@ -399,6 +398,12 @@ void ListCasts::userChangedData() } +void ListCasts::filterChangedData(const QString &str) +{ + // RefreshList(); +} + + void ListCasts::modelResetData() { list_casts_view->resizeColumnsToContents(); diff --git a/rdcastmanager/list_casts.h b/rdcastmanager/list_casts.h index 096b12a8..d4875084 100644 --- a/rdcastmanager/list_casts.h +++ b/rdcastmanager/list_casts.h @@ -50,6 +50,7 @@ class ListCasts : public RDDialog void deleteData(); void doubleClickedData(const QModelIndex &index); void userChangedData(); + void filterChangedData(const QString &str); void modelResetData(); void rowsInsertedData(const QModelIndex &parent,int start,int end); void postProgressChangedData(int step); diff --git a/rdlogedit/edit_log.cpp b/rdlogedit/edit_log.cpp index b8e81ed7..5ce3c831 100644 --- a/rdlogedit/edit_log.cpp +++ b/rdlogedit/edit_log.cpp @@ -978,8 +978,9 @@ void EditLog::saveasData() QString err_msg; if(rda->user()->createLog()) { - log=new RDAddLog(RDLogFilter::UserFilter,"RDLogEdit",this); - if(log->exec(&logname,&svcname)<0) { + log=new RDAddLog(&logname,&svcname,RDLogFilter::UserFilter, + tr("Add Log"),this); + if(log->exec()<0) { return; } if(!RDLog::create(logname,svcname,QDate(),rda->ripc()->user(),&err_msg, @@ -1070,8 +1071,6 @@ void EditLog::okData() void EditLog::cancelData() { - bool ret=false; - if(edit_changed) { switch(QMessageBox::question(this, tr("RDLogEdit"), @@ -1085,7 +1084,6 @@ void EditLog::cancelData() return; } SaveLog(); - ret=true; break; case QMessageBox::Cancel: @@ -1100,7 +1098,7 @@ void EditLog::cancelData() } delete edit_log_lock; edit_log_lock=NULL; - done(ret); + done(false); } diff --git a/rdlogedit/logmodel.cpp b/rdlogedit/logmodel.cpp index 1ef8ab77..03589d4a 100644 --- a/rdlogedit/logmodel.cpp +++ b/rdlogedit/logmodel.cpp @@ -20,6 +20,13 @@ #include "logmodel.h" +LogModel::LogModel(const QString &logname,QObject *parent) + : RDLogModel(logname,false,parent) +{ + d_group_list=new RDGroupList(); +} + + LogModel::LogModel(QObject *parent) : RDLogModel(parent) { diff --git a/rdlogedit/logmodel.h b/rdlogedit/logmodel.h index ac11e840..c160d7be 100644 --- a/rdlogedit/logmodel.h +++ b/rdlogedit/logmodel.h @@ -28,6 +28,7 @@ class LogModel : public RDLogModel { Q_OBJECT public: + LogModel(const QString &logname,QObject *parent=0); LogModel(QObject *parent=0); ~LogModel(); QString serviceName() const; diff --git a/rdlogedit/rdlogedit.cpp b/rdlogedit/rdlogedit.cpp index d69f6413..ea92bcec 100644 --- a/rdlogedit/rdlogedit.cpp +++ b/rdlogedit/rdlogedit.cpp @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -104,6 +105,8 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent) // log_filter_widget= new RDLogFilter(RDLogFilter::UserFilter,this); + connect(log_filter_widget,SIGNAL(filterChanged(const QString &)), + this,SLOT(filterChangedData(const QString &))); // // Dialogs @@ -112,8 +115,6 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent) new EditLog(&log_filter,&log_group,&log_schedcode,&log_clipboard,this); log_tracker_dialog=new VoiceTracker(&log_import_path,this); - log_addlog_dialog= - new RDAddLog(RDLogFilter::UserFilter,"RDLogEdit - "+tr("Add Log"),this); // // Log List @@ -228,7 +229,8 @@ void MainWidget::userData() log_filter_widget->changeUser(); log_log_model->setFilterSql(log_filter_widget->whereSql()); log_log_view->resizeColumnsToContents(); - + // RefreshList(); + // // Set Control Perms // @@ -238,17 +240,28 @@ void MainWidget::userData() } +void MainWidget::recentData(bool state) +{ + // RefreshList(); +} + + void MainWidget::addData() { QString logname; - QString svcname=log_filter_widget->currentServiceName(); + QString svcname; QStringList newlogs; + RDAddLog *log; QModelIndex row; if(rda->user()->createLog()) { - if(log_addlog_dialog->exec(&logname,&svcname)!=0) { + log=new RDAddLog(&logname,&svcname,RDLogFilter::UserFilter, + tr("Add Log"),this); + if(log->exec()!=0) { + delete log; return; } + delete log; QString username(rda->ripc()->user()); QString err_msg; if(!RDLog::create(logname,svcname,QDate(),username,&err_msg, @@ -257,14 +270,10 @@ void MainWidget::addData() return; } LockList(); - if(log_edit_dialog->exec(logname,&newlogs)) { - SendNotification(RDNotification::AddAction,logname); - row=log_log_model->addLog(logname); - log_log_view->selectRow(row.row()); - } - else { - RDLog::remove(logname); - } + SendNotification(RDNotification::AddAction,logname); + log_edit_dialog->exec(logname,&newlogs); + row=log_log_model->addLog(logname); + log_log_view->selectRow(row.row()); UnlockList(); } } @@ -415,6 +424,23 @@ void MainWidget::trackData() UnlockList(); } +/* +void MainWidget::trackData() +{ + QModelIndex row=SingleSelectedRow(); + + if(!row.isValid()) { + return; + } + LockList(); + VoiceTracker *dialog= + new VoiceTracker(log_log_model->logName(row),&log_import_path); + dialog->exec(); + delete dialog; + log_log_model->refresh(row); + UnlockList(); +} +*/ void MainWidget::reportData() { @@ -538,6 +564,12 @@ void MainWidget::reportData() } +void MainWidget::filterChangedData(const QString &str) +{ + // RefreshList(); +} + + void MainWidget::selectionChangedData(const QItemSelection &selected, const QItemSelection &deselected) { diff --git a/rdlogedit/rdlogedit.h b/rdlogedit/rdlogedit.h index eed853e7..e5f39738 100644 --- a/rdlogedit/rdlogedit.h +++ b/rdlogedit/rdlogedit.h @@ -23,7 +23,6 @@ #include -#include #include #include #include @@ -51,11 +50,13 @@ class MainWidget : public RDMainWindow private slots: void caeConnectedData(bool state); void userData(); + void recentData(bool state); void addData(); void editData(); void deleteData(); void trackData(); void reportData(); + void filterChangedData(const QString &str); void selectionChangedData(const QItemSelection &selected, const QItemSelection &deselected); void doubleClickedData(const QModelIndex &index); @@ -93,7 +94,6 @@ class MainWidget : public RDMainWindow QStringList log_deleted_logs; EditLog *log_edit_dialog; VoiceTracker *log_tracker_dialog; - RDAddLog *log_addlog_dialog; }; diff --git a/rdlogmanager/generate_log.cpp b/rdlogmanager/generate_log.cpp index 2ba1b750..e694fe3f 100644 --- a/rdlogmanager/generate_log.cpp +++ b/rdlogmanager/generate_log.cpp @@ -329,8 +329,7 @@ void GenerateLog::createData() // // Generate Exception Report // - RDLogModel *model=new RDLogModel(false,this); - model->setLogName(logname); + RDLogModel *model=new RDLogModel(logname,false,this); model->load(); if((model->validate(&report,gen_date_edit->date())==0)&& unused_report.isEmpty()) { diff --git a/rdlogmanager/logobject.cpp b/rdlogmanager/logobject.cpp index 233de05d..22713f32 100644 --- a/rdlogmanager/logobject.cpp +++ b/rdlogmanager/logobject.cpp @@ -107,8 +107,7 @@ void LogObject::userData() // // Generate Exception Report // - RDLogModel *model=new RDLogModel(false,this); - model->setLogName(logname); + RDLogModel *model=new RDLogModel(logname,false,this); model->load(); if((model->validate(&report,start_date)!=0)|| (!unused_report.isEmpty())) { diff --git a/utils/rdclilogedit/operations.cpp b/utils/rdclilogedit/operations.cpp index cff44bda..248a03a7 100644 --- a/utils/rdclilogedit/operations.cpp +++ b/utils/rdclilogedit/operations.cpp @@ -250,8 +250,7 @@ void MainObject::Load(QString logname) edit_log=new RDLog(logname); if(edit_log->exists()) { - edit_log_model=new RDLogModel(false,this); - edit_log_model->setLogName(logname); + edit_log_model=new RDLogModel(logname,false,this); edit_log_model->load(); edit_description=edit_log->description(); edit_service=edit_log->service(); @@ -363,8 +362,7 @@ void MainObject::New(const QString &logname) } edit_log=new RDLog(logname); if(!edit_log->exists()) { - edit_log_model=new RDLogModel(false,this); - edit_log_model->setLogName(logname); + edit_log_model=new RDLogModel(logname,false,this); edit_description=logname+" log"; sql=QString("select `NAME` from `SERVICES`"); q=new RDSqlQuery(sql); diff --git a/utils/rdrender/rdrender.cpp b/utils/rdrender/rdrender.cpp index 0c60a1c0..b9720068 100644 --- a/utils/rdrender/rdrender.cpp +++ b/utils/rdrender/rdrender.cpp @@ -287,8 +287,7 @@ void MainObject::userData() fprintf(stderr,"rdrender: no such log\n"); exit(1); } - RDLogModel *log_model=new RDLogModel(false,this); - log_model->setLogName(render_logname); + RDLogModel *log_model=new RDLogModel(render_logname,false,this); log_model->load(); // diff --git a/web/rdxport/logs.cpp b/web/rdxport/logs.cpp index e05ad4e3..754f924a 100644 --- a/web/rdxport/logs.cpp +++ b/web/rdxport/logs.cpp @@ -292,9 +292,7 @@ void Xport::SaveLog() // // Logline Data // - // RDLogModel *logmodel=new RDLogModel(log_name,false,this); - RDLogModel *logmodel=new RDLogModel(false,this); - logmodel->setLogName(log_name); + RDLogModel *logmodel=new RDLogModel(log_name,false,this); for(int i=0;iinsert(i,1); RDLogLine *ll=logmodel->logLine(i);