diff --git a/ChangeLog b/ChangeLog index c199e038..ca30b2a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20860,3 +20860,7 @@ 2021-01-20 Fred Gleason * Split the 'RDApplication' class into the base class 'RDCoreApplication' and 'RDApplication'. +2021-01-22 Fred Gleason + * Added 'RDServiceListModel' class + * Refactored the 'List Services' dialog in rdadmin(1) to use the + model-based API. diff --git a/lib/Makefile.am b/lib/Makefile.am index ee337362..03597eec 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -216,6 +216,7 @@ dist_librd_la_SOURCES = dbversion.h\ rdschedruleslist.cpp rdschedruleslist.h\ rdsegmeter.cpp rdsegmeter.h\ rdsendmail.cpp rdsendmail.h\ + rdservicelistmodel.cpp rdservicelistmodel.h\ rdsettings.cpp rdsettings.h\ rdsimpleplayer.cpp rdsimpleplayer.h\ rdslider.cpp rdslider.h\ @@ -346,6 +347,7 @@ nodist_librd_la_SOURCES = moc_rdadd_cart.cpp\ moc_rdschedcodes_dialog.cpp\ moc_rdrsscategorybox.cpp\ moc_rdsegmeter.cpp\ + moc_rdservicelistmodel.cpp\ moc_rdsimpleplayer.cpp\ moc_rdslider.cpp\ moc_rdsocket.cpp\ diff --git a/lib/lib.pro b/lib/lib.pro index 8b27cc00..1ab6d9ae 100644 --- a/lib/lib.pro +++ b/lib/lib.pro @@ -157,6 +157,7 @@ SOURCES += rdschedcode.cpp SOURCES += rdsegmeter.cpp SOURCES += rdsendmail.cpp SOURCES += rdsettings.cpp +SOURCES += rdservicelistmodel.cpp SOURCES += rdsimpleplayer.cpp SOURCES += rdslider.cpp SOURCES += rdsocket.cpp @@ -309,6 +310,7 @@ HEADERS += rdrsscategorybox.h HEADERS += rdschedcode.h HEADERS += rdsegmeter.h HEADERS += rdsendmail.h +HEADERS += rdservicelistmodel.h HEADERS += rdsettings.h HEADERS += rdsimpleplayer.h HEADERS += rdslider.h diff --git a/lib/librd_cs.ts b/lib/librd_cs.ts index 733aa53d..717f8a63 100644 --- a/lib/librd_cs.ts +++ b/lib/librd_cs.ts @@ -3441,6 +3441,45 @@ Zkuste to, prosím, znovu! Music1 Reconciliation + + RDServiceListModel + + Description + + + + Name + + + + Pgm Code + + + + Track Group + + + + Log Shelf Life + + + + ELR Shelf Life + + + + Auto Refresh + + + + Chain Log + + + + Import Markers + + + RDSoundPanel diff --git a/lib/librd_de.ts b/lib/librd_de.ts index d45d181c..e84b6cae 100644 --- a/lib/librd_de.ts +++ b/lib/librd_de.ts @@ -3422,6 +3422,45 @@ bitte erneut versuchen! Music1 Reconciliation + + RDServiceListModel + + Description + + + + Name + + + + Pgm Code + + + + Track Group + + + + Log Shelf Life + + + + ELR Shelf Life + + + + Auto Refresh + + + + Chain Log + + + + Import Markers + + + RDSoundPanel diff --git a/lib/librd_es.ts b/lib/librd_es.ts index 8dc4b5f3..b2a9c9cd 100644 --- a/lib/librd_es.ts +++ b/lib/librd_es.ts @@ -3401,6 +3401,45 @@ please try again! Reconciliación Music1 + + RDServiceListModel + + Description + + + + Name + + + + Pgm Code + + + + Track Group + + + + Log Shelf Life + + + + ELR Shelf Life + + + + Auto Refresh + + + + Chain Log + + + + Import Markers + + + RDSoundPanel diff --git a/lib/librd_fr.ts b/lib/librd_fr.ts index 8fc849dc..40d0c798 100644 --- a/lib/librd_fr.ts +++ b/lib/librd_fr.ts @@ -2702,6 +2702,45 @@ please try again! + + RDServiceListModel + + Description + + + + Name + + + + Pgm Code + + + + Track Group + + + + Log Shelf Life + + + + ELR Shelf Life + + + + Auto Refresh + + + + Chain Log + + + + Import Markers + + + RDSoundPanel diff --git a/lib/librd_nb.ts b/lib/librd_nb.ts index e725f012..14d36f80 100644 --- a/lib/librd_nb.ts +++ b/lib/librd_nb.ts @@ -3304,6 +3304,45 @@ prøv ein gong til! Greidde ikkje opna rapportfil! + + RDServiceListModel + + Description + + + + Name + + + + Pgm Code + + + + Track Group + + + + Log Shelf Life + + + + ELR Shelf Life + + + + Auto Refresh + + + + Chain Log + + + + Import Markers + + + RDSoundPanel diff --git a/lib/librd_nn.ts b/lib/librd_nn.ts index e725f012..14d36f80 100644 --- a/lib/librd_nn.ts +++ b/lib/librd_nn.ts @@ -3304,6 +3304,45 @@ prøv ein gong til! Greidde ikkje opna rapportfil! + + RDServiceListModel + + Description + + + + Name + + + + Pgm Code + + + + Track Group + + + + Log Shelf Life + + + + ELR Shelf Life + + + + Auto Refresh + + + + Chain Log + + + + Import Markers + + + RDSoundPanel diff --git a/lib/librd_pt_BR.ts b/lib/librd_pt_BR.ts index 74bc0ca9..5499240e 100644 --- a/lib/librd_pt_BR.ts +++ b/lib/librd_pt_BR.ts @@ -3355,6 +3355,45 @@ por favor, tente novamente! Não foi possível abrir o Relatório! + + RDServiceListModel + + Description + + + + Name + + + + Pgm Code + + + + Track Group + + + + Log Shelf Life + + + + ELR Shelf Life + + + + Auto Refresh + + + + Chain Log + + + + Import Markers + + + RDSoundPanel diff --git a/lib/rdservicelistmodel.cpp b/lib/rdservicelistmodel.cpp new file mode 100644 index 00000000..66379068 --- /dev/null +++ b/lib/rdservicelistmodel.cpp @@ -0,0 +1,320 @@ +// rdservicelistmodel.cpp +// +// Data model for Rivendell services +// +// (C) Copyright 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 +// published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +#include "rdapplication.h" +#include "rdescape_string.h" +#include "rdservicelistmodel.h" + +RDServiceListModel::RDServiceListModel(QObject *parent) + : QAbstractTableModel(parent) +{ + // + // Column Attributes + // + unsigned left=Qt::AlignLeft|Qt::AlignVCenter; + unsigned center=Qt::AlignCenter; + unsigned right=Qt::AlignRight|Qt::AlignVCenter; + + d_headers.push_back(tr("Name")); + d_alignments.push_back(left); + + d_headers.push_back(tr("Description")); + d_alignments.push_back(left); + + d_headers.push_back(tr("Pgm Code")); + d_alignments.push_back(left); + + d_headers.push_back(tr("Track Group")); + d_alignments.push_back(left); + + d_headers.push_back(tr("Log Shelf Life")); + d_alignments.push_back(right); + + d_headers.push_back(tr("ELR Shelf Life")); + d_alignments.push_back(right); + + d_headers.push_back(tr("Auto Refresh")); + d_alignments.push_back(center); + + d_headers.push_back(tr("Chain Log")); + d_alignments.push_back(center); + + d_headers.push_back(tr("Import Markers")); + d_alignments.push_back(center); + + updateModel(); +} + + +RDServiceListModel::~RDServiceListModel() +{ +} + + +QPalette RDServiceListModel::palette() +{ + return d_palette; +} + + +void RDServiceListModel::setPalette(const QPalette &pal) +{ + d_palette=pal; +} + + +void RDServiceListModel::setFont(const QFont &font) +{ + d_font=font; + d_bold_font=font; + d_bold_font.setWeight(QFont::Bold); +} + + +int RDServiceListModel::columnCount(const QModelIndex &parent) const +{ + return d_headers.size(); +} + + +int RDServiceListModel::rowCount(const QModelIndex &parent) const +{ + return d_texts.size(); +} + + +QVariant RDServiceListModel::headerData(int section,Qt::Orientation orient, + int role) const +{ + if((orient==Qt::Horizontal)&&(role==Qt::DisplayRole)) { + return d_headers.at(section); + } + return QVariant(); +} + + +QVariant RDServiceListModel::data(const QModelIndex &index,int role) const +{ + QString str; + int col=index.column(); + int row=index.row(); + + if(row list; + for(int i=0;ifirst()) { + updateRow(row.row(),q); + emit dataChanged(createIndex(row.row(),0), + createIndex(row.row(),columnCount())); + } + delete q; + } +} + + +void RDServiceListModel::refresh(const QString &grpname) +{ + for(int i=0;i texts; + QList icons; + + RDSqlQuery *q=NULL; + QString sql=sqlFields(); + sql+="order by NAME "; + beginResetModel(); + d_texts.clear(); + q=new RDSqlQuery(sql); + while(q->next()) { + d_texts.push_back(texts); + updateRow(d_texts.size()-1,q); + } + delete q; + endResetModel(); +} + + +void RDServiceListModel::updateRowLine(int line) +{ + if(linefirst()) { + updateRow(line,q); + } + delete q; + } +} + + +void RDServiceListModel::updateRow(int row,RDSqlQuery *q) +{ + QList texts; + + // Login Name + texts.push_back(q->value(0)); + + // Description + texts.push_back(q->value(1)); + + // Program Code + texts.push_back(q->value(2)); + + // Track Group + texts.push_back(q->value(3)); + + // Log Shelf Life + texts.push_back(q->value(4)); + + // ELR Shelf Life + texts.push_back(q->value(5)); + + // Auto Refresh + texts.push_back(q->value(6)); + + // Chain Log + texts.push_back(q->value(7)); + + // Import Markers + texts.push_back(q->value(8)); + + d_texts[row]=texts; +} + + +QString RDServiceListModel::sqlFields() const +{ + QString sql=QString("select ")+ + "SERVICES.NAME,"+ // 00 + "SERVICES.DESCRIPTION,"+ // 01 + "SERVICES.PROGRAM_CODE,"+ // 02 + "SERVICES.TRACK_GROUP,"+ // 03 + "SERVICES.DEFAULT_LOG_SHELFLIFE,"+ // 04 + "SERVICES.ELR_SHELFLIFE,"+ // 05 + "SERVICES.AUTO_REFRESH,"+ // 06 + "SERVICES.CHAIN_LOG,"+ // 07 + "SERVICES.INCLUDE_IMPORT_MARKERS "+ // 08 + "from SERVICES "; + + return sql; +} diff --git a/lib/rdservicelistmodel.h b/lib/rdservicelistmodel.h new file mode 100644 index 00000000..f23c4f08 --- /dev/null +++ b/lib/rdservicelistmodel.h @@ -0,0 +1,78 @@ +// rdservicelistmodel.h +// +// Data model for Rivendell services +// +// (C) Copyright 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 +// published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +#ifndef RDSERVICELISTMODEL_H +#define RDSERVICELISTMODEL_H + +#include +#include +#include +#include + +#include +#include +#include + +// +// MAINTAINERS NOTE +// +// We could arguably just use a QSqlQueryModel for this, but rolling our own +// lets us use the same backend-facing API pattern as the other Rivendell +// models. +// +class RDServiceListModel : public QAbstractTableModel +{ + Q_OBJECT + public: + RDServiceListModel(QObject *parent=0); + ~RDServiceListModel(); + QPalette palette(); + void setPalette(const QPalette &pal); + void setFont(const QFont &font); + int columnCount(const QModelIndex &parent=QModelIndex()) const; + int rowCount(const QModelIndex &parent=QModelIndex()) const; + QVariant headerData(int section,Qt::Orientation orient, + int role=Qt::DisplayRole) const; + QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const; + QString serviceName(const QModelIndex &row) const; + QModelIndex addService(const QString &name); + void removeService(const QModelIndex &row); + void removeService(const QString &svcname); + void refresh(const QModelIndex &row); + void refresh(const QString &username); + + protected: + void updateModel(); + void updateRowLine(int line); + void updateRow(int row,RDSqlQuery *q); + QString sqlFields() const; + + private: + QPalette d_palette; + QFont d_font; + QFont d_bold_font; + QStringList d_service_names; + QList d_headers; + QList d_alignments; + QList > d_texts; +}; + + +#endif // RDSERVICELISTMODEL_H diff --git a/rdadmin/add_svc.cpp b/rdadmin/add_svc.cpp index c68f349a..ade84ae0 100644 --- a/rdadmin/add_svc.cpp +++ b/rdadmin/add_svc.cpp @@ -174,15 +174,15 @@ void AddSvc::okData() EditSvc *edit_svc=new EditSvc(svc_name_edit->text(),this); if(edit_svc->exec()<0) { delete edit_svc; - done(-1); + done(false); return; } delete edit_svc; - done(0); + done(true); } void AddSvc::cancelData() { - done(-1); + done(false); } diff --git a/rdadmin/edit_svc.cpp b/rdadmin/edit_svc.cpp index 1661656b..0157495d 100644 --- a/rdadmin/edit_svc.cpp +++ b/rdadmin/edit_svc.cpp @@ -706,13 +706,13 @@ void EditSvc::musTemplateActivatedData(int index) void EditSvc::okData() { Save(); - done(0); + done(true); } void EditSvc::cancelData() { - done(-1); + done(false); } diff --git a/rdadmin/list_svcs.cpp b/rdadmin/list_svcs.cpp index ffb99590..d1124aa5 100644 --- a/rdadmin/list_svcs.cpp +++ b/rdadmin/list_svcs.cpp @@ -2,7 +2,7 @@ // // List Rivendell Services // -// (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 @@ -18,15 +18,11 @@ // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -#include -#include -#include -#include +#include +#include +#include + #include -#include -#include -#include -#include #include #include @@ -41,8 +37,6 @@ ListSvcs::ListSvcs(QWidget *parent) : RDDialog(parent) { - setModal(true); - // // Fix the Window Size // @@ -86,20 +80,31 @@ ListSvcs::ListSvcs(QWidget *parent) // // Services List Box // - list_box=new Q3ListBox(this); - list_title_label=new QLabel(list_box,tr("&Services:"),this); + list_services_view=new QTableView(this); + list_title_label=new QLabel(list_services_view,tr("&Services:"),this); list_title_label->setFont(labelFont()); list_title_label->setGeometry(14,11,85,19); - connect(list_box,SIGNAL(doubleClicked(Q3ListBoxItem *)), - this,SLOT(doubleClickedData(Q3ListBoxItem *))); - - RefreshList(); + list_services_view->setSelectionBehavior(QAbstractItemView::SelectRows); + list_services_view->setSelectionMode(QAbstractItemView::SingleSelection); + list_services_view->setShowGrid(false); + list_services_view->setSortingEnabled(false); + list_services_view->setWordWrap(false); + list_services_model=new RDServiceListModel(this); + list_services_model->setFont(defaultFont()); + list_services_model->setPalette(palette()); + list_services_view->setModel(list_services_model); + connect(list_services_view,SIGNAL(doubleClicked(const QModelIndex &)), + this,SLOT(doubleClickedData(const QModelIndex &))); + connect(list_services_model,SIGNAL(modelReset()), + list_services_view,SLOT(resizeColumnsToContents())); + list_services_view->resizeColumnsToContents(); } ListSvcs::~ListSvcs() { - delete list_box; + delete list_services_model; + delete list_services_view; } @@ -119,24 +124,27 @@ void ListSvcs::addData() { QString svcname; - AddSvc *add_svc=new AddSvc(&svcname,this); - if(add_svc->exec()<0) { - delete add_svc; - return; + AddSvc *d=new AddSvc(&svcname,this); + if(d->exec()) { + QModelIndex index=list_services_model->addService(svcname); + list_services_view->selectRow(index.row()); } - delete add_svc; - RefreshList(svcname); + delete d; } void ListSvcs::editData() { - if(list_box->currentItem()<0) { + QModelIndexList rows=list_services_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { return; } - EditSvc *edit_svc=new EditSvc(list_box->currentText(),this); - edit_svc->exec(); - delete edit_svc; + EditSvc *d=new EditSvc(list_services_model->serviceName(rows.first()),this); + if(d->exec()) { + list_services_model->refresh(rows.first()); + } + delete d; } @@ -144,15 +152,21 @@ void ListSvcs::deleteData() { QString sql; RDSqlQuery *q; + QModelIndexList rows=list_services_view->selectionModel()->selectedRows(); + if(rows.size()!=1) { + return; + } + QString svcname=list_services_model->serviceName(rows.first()); if(QMessageBox::warning(this,"RDAdmin- "+tr("Delete Service"), tr("Are you sure you want to delete service")+ - " \""+list_box->currentText()+"\"?", + " \""+svcname+"\"?", QMessageBox::Yes,QMessageBox::No)!=QMessageBox::Yes) { return; } + sql=QString("select NAME from LOGS where ")+ - "SERVICE=\""+RDEscapeString(list_box->currentText())+"\""; + "SERVICE=\""+RDEscapeString(svcname)+"\""; q=new RDSqlQuery(sql); if(q->first()) { if(QMessageBox::warning(this,"RDAdmin - "+tr("Logs Exist"), @@ -165,23 +179,20 @@ void ListSvcs::deleteData() } } delete q; - RDSvc *svc=new RDSvc(list_box->currentText(),rda->station(),rda->config()); + RDSvc *svc=new RDSvc(svcname,rda->station(),rda->config()); svc->remove(); delete svc; - list_box->removeItem(list_box->currentItem()); - if(list_box->currentItem()>=0) { - list_box->setSelected(list_box->currentItem(),true); - } + list_services_model->removeService(svcname); } void ListSvcs::closeData() { - done(0); + done(true); } -void ListSvcs::doubleClickedData(Q3ListBoxItem *item) +void ListSvcs::doubleClickedData(const QModelIndex &index) { editData(); } @@ -193,22 +204,5 @@ void ListSvcs::resizeEvent(QResizeEvent *e) list_edit_button->setGeometry(size().width()-90,90,80,50); list_delete_button->setGeometry(size().width()-90,150,80,50); list_close_button->setGeometry(size().width()-90,size().height()-60,80,50); - list_box->setGeometry(10,30,size().width()-110,size().height()-40); -} - - -void ListSvcs::RefreshList(QString svcname) -{ - QString sql; - RDSqlQuery *q; - - list_box->clear(); - q=new RDSqlQuery("select NAME from SERVICES"); - while (q->next()) { - list_box->insertItem(q->value(0).toString()); - if(svcname==list_box->text(list_box->count()-1)) { - list_box->setCurrentItem(list_box->count()-1); - } - } - delete q; + list_services_view->setGeometry(10,30,size().width()-110,size().height()-40); } diff --git a/rdadmin/list_svcs.h b/rdadmin/list_svcs.h index bbc741e0..ef6c8ef4 100644 --- a/rdadmin/list_svcs.h +++ b/rdadmin/list_svcs.h @@ -2,7 +2,7 @@ // // List Rivendell Services // -// (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,12 +21,12 @@ #ifndef LIST_SVCS_H #define LIST_SVCS_H -#include - -#include -#include +#include +#include +#include #include +#include class ListSvcs : public RDDialog { @@ -41,16 +41,16 @@ class ListSvcs : public RDDialog void addData(); void editData(); void deleteData(); - void doubleClickedData(Q3ListBoxItem *); + void doubleClickedData(const QModelIndex &index); void closeData(); protected: void resizeEvent(QResizeEvent *e); private: - void RefreshList(QString svcname=""); QLabel *list_title_label; - Q3ListBox *list_box; + QTableView *list_services_view; + RDServiceListModel *list_services_model; QPushButton *list_add_button; QPushButton *list_edit_button; QPushButton *list_delete_button; diff --git a/rdadmin/rdadmin_cs.ts b/rdadmin/rdadmin_cs.ts index cbad30fe..9d108002 100644 --- a/rdadmin/rdadmin_cs.ts +++ b/rdadmin/rdadmin_cs.ts @@ -6144,15 +6144,15 @@ vozíky Are you sure you want to delete service - Opravdu chcete smazat tuto službu + Opravdu chcete smazat tuto službu Delete Service - Smazat službu + Smazat službu There are - Jsou tu + Jsou tu logs owned by this service that will also be deleted. @@ -6162,7 +6162,7 @@ Stále ještě chcete pokračovat? Logs Exist - Zápisy existují + Zápisy existují logs owned by this service that will also be deleted. diff --git a/rdadmin/rdadmin_de.ts b/rdadmin/rdadmin_de.ts index 65121ede..1dbfcc16 100644 --- a/rdadmin/rdadmin_de.ts +++ b/rdadmin/rdadmin_de.ts @@ -5840,15 +5840,15 @@ Carts Are you sure you want to delete service - Sind Sie sicher, daß sie den Service löschen wollen + Sind Sie sicher, daß sie den Service löschen wollen Delete Service - Service löschen + Service löschen There are - Es gibt + Es gibt logs owned by this service that will also be deleted. @@ -5858,7 +5858,7 @@ Wollen Sie immernoch fortfahren? Logs Exist - Logs existieren + Logs existieren logs owned by this service that will also be deleted. diff --git a/rdadmin/rdadmin_es.ts b/rdadmin/rdadmin_es.ts index 4a5a358b..60fb98da 100644 --- a/rdadmin/rdadmin_es.ts +++ b/rdadmin/rdadmin_es.ts @@ -6098,15 +6098,15 @@ Cartuchos Are you sure you want to delete service - Está seguro de querer eliminar este servicio + Está seguro de querer eliminar este servicio Delete Service - Eliminar un servicio + Eliminar un servicio There are - Hay + Hay logs owned by this service that will also be deleted. @@ -6116,7 +6116,7 @@ Do you still want to proceed? Logs Exist - El PlayList ya existe + El PlayList ya existe logs owned by this service that will also be deleted. diff --git a/rdadmin/rdadmin_fr.ts b/rdadmin/rdadmin_fr.ts index 02a46b34..bc202313 100644 --- a/rdadmin/rdadmin_fr.ts +++ b/rdadmin/rdadmin_fr.ts @@ -4832,22 +4832,22 @@ Carts &Services: - - Are you sure you want to delete service - - Delete Service - There are + Are you sure you want to delete service Logs Exist + + There are + + logs owned by this service that will also be deleted. diff --git a/rdadmin/rdadmin_nb.ts b/rdadmin/rdadmin_nb.ts index cd574b53..50c12605 100644 --- a/rdadmin/rdadmin_nb.ts +++ b/rdadmin/rdadmin_nb.ts @@ -5701,15 +5701,15 @@ Carts Are you sure you want to delete service - Er du sikker på at du vil sletta tenesta + Er du sikker på at du vil sletta tenesta Delete Service - Slett tenesta + Slett tenesta There are - Denne tenesta eig + Denne tenesta eig logs owned by this service that will also be deleted. @@ -5719,7 +5719,7 @@ Er du sikker på at du vil halda fram? Logs Exist - Loggen eksisterer + Loggen eksisterer logs owned by this service that will also be deleted. diff --git a/rdadmin/rdadmin_nn.ts b/rdadmin/rdadmin_nn.ts index cd574b53..50c12605 100644 --- a/rdadmin/rdadmin_nn.ts +++ b/rdadmin/rdadmin_nn.ts @@ -5701,15 +5701,15 @@ Carts Are you sure you want to delete service - Er du sikker på at du vil sletta tenesta + Er du sikker på at du vil sletta tenesta Delete Service - Slett tenesta + Slett tenesta There are - Denne tenesta eig + Denne tenesta eig logs owned by this service that will also be deleted. @@ -5719,7 +5719,7 @@ Er du sikker på at du vil halda fram? Logs Exist - Loggen eksisterer + Loggen eksisterer logs owned by this service that will also be deleted. diff --git a/rdadmin/rdadmin_pt_BR.ts b/rdadmin/rdadmin_pt_BR.ts index 59b8d2ad..b13e4c27 100644 --- a/rdadmin/rdadmin_pt_BR.ts +++ b/rdadmin/rdadmin_pt_BR.ts @@ -5812,15 +5812,15 @@ Carts Are you sure you want to delete service - Tem certeza que quer deletar este Serviço? + Tem certeza que quer deletar este Serviço? Delete Service - Deletar Serviço + Deletar Serviço There are - + logs owned by this service that will also be deleted. @@ -5830,7 +5830,7 @@ Você quer proceder? Logs Exist - Lista Existente + Lista Existente logs owned by this service that will also be deleted.