diff --git a/ChangeLog b/ChangeLog index f6308200..bc49bbe2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21095,3 +21095,6 @@ the model based API. 2021-02-10 Fred Gleason * Removed the 'Q3PopupMenu' dependency from rdlogmanager(1). +2021-02-10 Fred Gleason + * Refactored the 'Rivendell Services' dialog in rdlogmanager(1) + to use the model based API. diff --git a/rdlogmanager/list_svcs.cpp b/rdlogmanager/list_svcs.cpp index a4ddddf3..357799b9 100644 --- a/rdlogmanager/list_svcs.cpp +++ b/rdlogmanager/list_svcs.cpp @@ -2,7 +2,7 @@ // // List Rivendell Services and Report Ages // -// (C) Copyright 2002-2019 Fred Gleason +// (C) Copyright 2002-2021 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 @@ -38,17 +38,19 @@ ListSvcs::ListSvcs(QWidget *parent) // // Log List // - list_log_list=new Q3ListView(this); - list_log_list->setAllColumnsShowFocus(true); - list_log_list->setItemMargin(5); - list_log_list->addColumn(tr("Service")); - list_log_list->setColumnAlignment(0,Qt::AlignLeft); - list_log_list->addColumn(tr("Oldest Report")); - list_log_list->setColumnAlignment(1,Qt::AlignCenter); - connect(list_log_list, - SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)), - this, - SLOT(listDoubleClickedData(Q3ListViewItem *,const QPoint &,int))); + list_log_view=new RDTableView(this); + list_log_model=new RDServiceListModel(false,this); + list_log_model->setFont(font()); + list_log_model->setPalette(palette()); + list_log_view->setModel(list_log_model); + for(int i=2;icolumnCount();i++) { + list_log_view->hideColumn(i); + } + connect(list_log_view,SIGNAL(doubleClicked(const QModelIndex &)), + this,SLOT(listDoubleClickedData(const QModelIndex &))); + connect(list_log_model,SIGNAL(modelReset()), + list_log_view,SLOT(resizeColumnsToContents())); + list_log_view->resizeColumnsToContents(); // // Generate Report Button @@ -74,8 +76,6 @@ ListSvcs::ListSvcs(QWidget *parent) list_close_button->setFont(buttonFont()); list_close_button->setText(tr("C&lose")); connect(list_close_button,SIGNAL(clicked()),this,SLOT(closeData())); - - RefreshList(); } @@ -93,31 +93,33 @@ QSizePolicy ListSvcs::sizePolicy() const void ListSvcs::generateData() { - Q3ListViewItem *item=list_log_list->selectedItem(); - if(item==NULL) { + QModelIndexList rows=list_log_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { return; } - PickReportDates *dialog=new PickReportDates(item->text(0),this); - dialog->exec(); - delete dialog; + PickReportDates *d= + new PickReportDates(list_log_model->serviceName(rows.first()),this); + d->exec(); + delete d; } void ListSvcs::purgeData() { - Q3ListViewItem *item=list_log_list->selectedItem(); - if(item==NULL) { + QModelIndexList rows=list_log_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { return; } - SvcRecDialog *dialog=new SvcRecDialog(item->text(0),this); - dialog->exec(); - delete dialog; - RefreshLine(item); + SvcRecDialog *d= + new SvcRecDialog(list_log_model->serviceName(rows.first()),this); + d->exec(); + delete d; } -void ListSvcs::listDoubleClickedData(Q3ListViewItem *item,const QPoint &pt, - int c) +void ListSvcs::listDoubleClickedData(const QModelIndex &index) { generateData(); } @@ -131,53 +133,8 @@ void ListSvcs::closeData() void ListSvcs::resizeEvent(QResizeEvent *e) { - list_log_list->setGeometry(10,10,size().width()-20,size().height()-80); + list_log_view->setGeometry(10,10,size().width()-20,size().height()-80); list_generate_button->setGeometry(10,size().height()-60,80,50); list_purge_button->setGeometry(100,size().height()-60,80,50); list_close_button->setGeometry(size().width()-90,size().height()-60,80,50); } - - -void ListSvcs::RefreshList() -{ - RDSqlQuery *q1; - Q3ListViewItem *item; - list_log_list->clear(); - QString sql="select NAME from SERVICES order by NAME"; - - RDSqlQuery *q=new RDSqlQuery(sql); - while(q->next()) { - item=new Q3ListViewItem(list_log_list); - item->setText(0,q->value(0).toString()); - sql=QString("select EVENT_DATETIME from ELR_LINES where ")+ - "SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\" "+ - "order by EVENT_DATETIME"; - q1=new RDSqlQuery(sql); - if(q1->first()) { - item->setText(1,q1->value(0).toDate().toString("MM/dd/yyyy")); - } - else { - item->setText(1,tr("[none]")); - } - delete q1; - } - delete q; -} - - -void ListSvcs::RefreshLine(Q3ListViewItem *item) -{ - QString sql; - RDSqlQuery *q; - sql=QString("select EVENT_DATETIME from ELR_LINES where ")+ - "SERVICE_NAME=\""+RDEscapeString(item->text(0))+"\" "+ - "order by EVENT_DATETIME"; - q=new RDSqlQuery(sql); - if(q->first()) { - item->setText(1,q->value(0).toDate().toString("MM/dd/yyyy")); - } - else { - item->setText(1,tr("[none]")); - } - delete q; -} diff --git a/rdlogmanager/list_svcs.h b/rdlogmanager/list_svcs.h index 5e7a55a5..87c20e41 100644 --- a/rdlogmanager/list_svcs.h +++ b/rdlogmanager/list_svcs.h @@ -2,7 +2,7 @@ // // List Rivendell Services and Report Ages // -// (C) Copyright 2002-2019 Fred Gleason +// (C) Copyright 2002-2021 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,11 @@ #ifndef LIST_SVCS_H #define LIST_SVCS_H -#include -#include +#include #include +#include +#include class ListSvcs : public RDDialog { @@ -37,21 +38,19 @@ class ListSvcs : public RDDialog private slots: void generateData(); void purgeData(); - void listDoubleClickedData(Q3ListViewItem *item,const QPoint &pt,int c); + void listDoubleClickedData(const QModelIndex &); void closeData(); protected: void resizeEvent(QResizeEvent *e); private: - void RefreshList(); - void RefreshLine(Q3ListViewItem *item); - Q3ListView *list_log_list; + RDTableView *list_log_view; + RDServiceListModel *list_log_model; QPushButton *list_generate_button; QPushButton *list_purge_button; QPushButton *list_close_button; }; -#endif - +#endif // LIST_SVCS_H diff --git a/rdlogmanager/rdlogmanager_cs.ts b/rdlogmanager/rdlogmanager_cs.ts index be26ad07..16ea5cd9 100644 --- a/rdlogmanager/rdlogmanager_cs.ts +++ b/rdlogmanager/rdlogmanager_cs.ts @@ -1464,15 +1464,7 @@ data [none] - [žádný] - - - Service - - - - Oldest Report - + [žádný] diff --git a/rdlogmanager/rdlogmanager_de.ts b/rdlogmanager/rdlogmanager_de.ts index 1a78ca57..12ffd017 100644 --- a/rdlogmanager/rdlogmanager_de.ts +++ b/rdlogmanager/rdlogmanager_de.ts @@ -1464,15 +1464,7 @@ Data [none] - [keine] - - - Service - - - - Oldest Report - + [keine] diff --git a/rdlogmanager/rdlogmanager_es.ts b/rdlogmanager/rdlogmanager_es.ts index 7d9261d6..2bdc2b27 100644 --- a/rdlogmanager/rdlogmanager_es.ts +++ b/rdlogmanager/rdlogmanager_es.ts @@ -1456,7 +1456,7 @@ eliminar [none] - [ninguno] + [ninguno] &Purge @@ -1469,14 +1469,6 @@ Reports &Generar Reportes - - Service - - - - Oldest Report - - MainWidget diff --git a/rdlogmanager/rdlogmanager_fr.ts b/rdlogmanager/rdlogmanager_fr.ts index b78a6c8f..d97da905 100644 --- a/rdlogmanager/rdlogmanager_fr.ts +++ b/rdlogmanager/rdlogmanager_fr.ts @@ -1079,18 +1079,6 @@ Data C&lose - - [none] - - - - Service - - - - Oldest Report - - MainWidget diff --git a/rdlogmanager/rdlogmanager_nb.ts b/rdlogmanager/rdlogmanager_nb.ts index 35fc65a9..ea73193e 100644 --- a/rdlogmanager/rdlogmanager_nb.ts +++ b/rdlogmanager/rdlogmanager_nb.ts @@ -1459,15 +1459,7 @@ data [none] - [ingen] - - - Service - - - - Oldest Report - + [ingen] diff --git a/rdlogmanager/rdlogmanager_nn.ts b/rdlogmanager/rdlogmanager_nn.ts index 35fc65a9..ea73193e 100644 --- a/rdlogmanager/rdlogmanager_nn.ts +++ b/rdlogmanager/rdlogmanager_nn.ts @@ -1459,15 +1459,7 @@ data [none] - [ingen] - - - Service - - - - Oldest Report - + [ingen] diff --git a/rdlogmanager/rdlogmanager_pt_BR.ts b/rdlogmanager/rdlogmanager_pt_BR.ts index 43b67775..e7687333 100644 --- a/rdlogmanager/rdlogmanager_pt_BR.ts +++ b/rdlogmanager/rdlogmanager_pt_BR.ts @@ -1468,15 +1468,7 @@ Dados [none] - [nenhum] - - - Service - - - - Oldest Report - + [nenhum]