diff --git a/ChangeLog b/ChangeLog index 8d53bdb4..64475cea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20885,3 +20885,7 @@ 2021-01-22 Fred Gleason * Removed the 'Q3ButtonGroup' dependency from the 'Configure RDAirPlay' dialog in rdadmin(1). +2021-01-23 Fred Gleason + * Added 'RDDropboxListModel' class + * Refactored the 'List Dropboxes' dialog in rdadmin(1) to use the + model-based API. diff --git a/lib/Makefile.am b/lib/Makefile.am index 6a13e40a..0ddc395e 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -121,6 +121,7 @@ dist_librd_la_SOURCES = dbversion.h\ rddiscrecord.cpp rddiscrecord.h\ rddownload.cpp rddownload.h\ rddropbox.cpp rddropbox.h\ + rddropboxlistmodel.cpp rddropboxlistmodel.h\ rddummylookup.cpp rddummylookup.h\ rdedit_audio.cpp rdedit_audio.h\ rdedit_panel_name.cpp rdedit_panel_name.h\ @@ -298,6 +299,7 @@ nodist_librd_la_SOURCES = moc_rdadd_cart.cpp\ moc_rddialog.cpp\ moc_rddisclookup.cpp\ moc_rddownload.cpp\ + moc_rddropboxlistmodel.cpp\ moc_rddummylookup.cpp\ moc_rdedit_audio.cpp\ moc_rdedit_panel_name.cpp\ diff --git a/lib/lib.pro b/lib/lib.pro index 7a2e25c1..c0cc1c43 100644 --- a/lib/lib.pro +++ b/lib/lib.pro @@ -89,6 +89,7 @@ SOURCES += rddialog.cpp SOURCES += rddisclookup.cpp SOURCES += rddisclookup_factory.cpp SOURCES += rddropbox.cpp +SOURCES += rddropboxlistmodel.cpp SOURCES += rddummylookup.cpp SOURCES += rdedit_audio.cpp SOURCES += rdedit_panel_name.cpp @@ -242,6 +243,7 @@ HEADERS += rddialog.h HEADERS += rddisclookup.h HEADERS += rddisclookup_factory.h HEADERS += rddropbox.h +HEADERS += rddropboxlistmodel.h HEADERS += rddummylookup.h HEADERS += rdedit_audio.h HEADERS += rdedit_panel_name.h diff --git a/lib/librd_cs.ts b/lib/librd_cs.ts index b729ff99..2d8db9b0 100644 --- a/lib/librd_cs.ts +++ b/lib/librd_cs.ts @@ -1770,6 +1770,61 @@ ze &souboru + + RDDropboxListModel + + ID + + + + Group + + + + Path + + + + Norm. Level + + + + Autotrim Level + + + + To Cart + + + + Force Mono + + + + Use CC ID + + + + Delete Cuts + + + + Metadata Pattern + + + + User Defined + + + + [auto] + + + + [off] + + + RDEditAudio diff --git a/lib/librd_de.ts b/lib/librd_de.ts index 5e97280b..e161bcb6 100644 --- a/lib/librd_de.ts +++ b/lib/librd_de.ts @@ -1750,6 +1750,61 @@ senden Unbekannt + + RDDropboxListModel + + ID + + + + Group + + + + Path + + + + Norm. Level + + + + Autotrim Level + + + + To Cart + + + + Force Mono + + + + Use CC ID + + + + Delete Cuts + + + + Metadata Pattern + + + + User Defined + + + + [auto] + + + + [off] + + + RDEditAudio diff --git a/lib/librd_es.ts b/lib/librd_es.ts index a6e5f2d8..0df13290 100644 --- a/lib/librd_es.ts +++ b/lib/librd_es.ts @@ -1740,6 +1740,61 @@ Cartucho + + RDDropboxListModel + + ID + + + + Group + + + + Path + + + + Norm. Level + + + + Autotrim Level + + + + To Cart + + + + Force Mono + + + + Use CC ID + + + + Delete Cuts + + + + Metadata Pattern + + + + User Defined + + + + [auto] + + + + [off] + + + RDEditAudio diff --git a/lib/librd_fr.ts b/lib/librd_fr.ts index bac791e6..aede43bb 100644 --- a/lib/librd_fr.ts +++ b/lib/librd_fr.ts @@ -1499,6 +1499,61 @@ Cart + + RDDropboxListModel + + ID + + + + Group + + + + Path + + + + Norm. Level + + + + Autotrim Level + + + + To Cart + + + + Force Mono + + + + Use CC ID + + + + Delete Cuts + + + + Metadata Pattern + + + + User Defined + + + + [auto] + + + + [off] + + + RDEditAudio diff --git a/lib/librd_nb.ts b/lib/librd_nb.ts index d347e4d0..26508335 100644 --- a/lib/librd_nb.ts +++ b/lib/librd_nb.ts @@ -1728,6 +1728,61 @@ Cart Ukjent + + RDDropboxListModel + + ID + + + + Group + + + + Path + + + + Norm. Level + + + + Autotrim Level + + + + To Cart + + + + Force Mono + + + + Use CC ID + + + + Delete Cuts + + + + Metadata Pattern + + + + User Defined + + + + [auto] + + + + [off] + + + RDEditAudio diff --git a/lib/librd_nn.ts b/lib/librd_nn.ts index d347e4d0..26508335 100644 --- a/lib/librd_nn.ts +++ b/lib/librd_nn.ts @@ -1728,6 +1728,61 @@ Cart Ukjent + + RDDropboxListModel + + ID + + + + Group + + + + Path + + + + Norm. Level + + + + Autotrim Level + + + + To Cart + + + + Force Mono + + + + Use CC ID + + + + Delete Cuts + + + + Metadata Pattern + + + + User Defined + + + + [auto] + + + + [off] + + + RDEditAudio diff --git a/lib/librd_pt_BR.ts b/lib/librd_pt_BR.ts index 5533f4f1..05bb6008 100644 --- a/lib/librd_pt_BR.ts +++ b/lib/librd_pt_BR.ts @@ -1735,6 +1735,61 @@ Cartão Desconhecido + + RDDropboxListModel + + ID + + + + Group + + + + Path + + + + Norm. Level + + + + Autotrim Level + + + + To Cart + + + + Force Mono + + + + Use CC ID + + + + Delete Cuts + + + + Metadata Pattern + + + + User Defined + + + + [auto] + + + + [off] + + + RDEditAudio diff --git a/lib/rddropboxlistmodel.cpp b/lib/rddropboxlistmodel.cpp new file mode 100644 index 00000000..25d4ae6b --- /dev/null +++ b/lib/rddropboxlistmodel.cpp @@ -0,0 +1,365 @@ +// rddropboxlistmodel.cpp +// +// Data model for Rivendell dropboxes +// +// (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 "rddropboxlistmodel.h" + +RDDropboxListModel::RDDropboxListModel(const QString &hostname,QObject *parent) + : QAbstractTableModel(parent) +{ + d_hostname=hostname; + + // + // Column Attributes + // + unsigned left=Qt::AlignLeft|Qt::AlignVCenter; + unsigned center=Qt::AlignCenter; + unsigned right=Qt::AlignRight|Qt::AlignVCenter; + + d_headers.push_back(tr("ID")); // 00 + d_alignments.push_back(right); + + d_headers.push_back(tr("Group")); // 01 + d_alignments.push_back(left); + + d_headers.push_back(tr("Path")); // 02 + d_alignments.push_back(left); + + d_headers.push_back(tr("Norm. Level")); // 03 + d_alignments.push_back(right); + + d_headers.push_back(tr("Autotrim Level")); // 04 + d_alignments.push_back(right); + + d_headers.push_back(tr("To Cart")); // 05 + d_alignments.push_back(right); + + d_headers.push_back(tr("Force Mono")); // 06 + d_alignments.push_back(center); + + d_headers.push_back(tr("Use CC ID")); // 07 + d_alignments.push_back(center); + + d_headers.push_back(tr("Delete Cuts")); // 08 + d_alignments.push_back(center); + + d_headers.push_back(tr("Metadata Pattern")); // 09 + d_alignments.push_back(center); + + d_headers.push_back(tr("User Defined")); // 10 + d_alignments.push_back(center); + + updateModel(); +} + + +RDDropboxListModel::~RDDropboxListModel() +{ +} + + +QPalette RDDropboxListModel::palette() +{ + return d_palette; +} + + +void RDDropboxListModel::setPalette(const QPalette &pal) +{ + d_palette=pal; +} + + +void RDDropboxListModel::setFont(const QFont &font) +{ + d_font=font; + d_bold_font=font; + d_bold_font.setWeight(QFont::Bold); +} + + +int RDDropboxListModel::columnCount(const QModelIndex &parent) const +{ + return d_headers.size(); +} + + +int RDDropboxListModel::rowCount(const QModelIndex &parent) const +{ + return d_texts.size(); +} + + +QVariant RDDropboxListModel::headerData(int section,Qt::Orientation orient, + int role) const +{ + if((orient==Qt::Horizontal)&&(role==Qt::DisplayRole)) { + return d_headers.at(section); + } + return QVariant(); +} + + +QVariant RDDropboxListModel::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 RDDropboxListModel::refresh(int box_id) +{ + for(int i=0;i texts; + + RDSqlQuery *q=NULL; + QString sql=sqlFields()+ + "where DROPBOXES.STATION_NAME=\""+RDEscapeString(d_hostname)+"\" "+ + "order by DROPBOXES.ID "; + beginResetModel(); + d_box_ids.clear(); + d_group_colors.clear(); + d_texts.clear(); + q=new RDSqlQuery(sql); + while(q->next()) { + d_box_ids.push_back(-1); + d_group_colors.push_back(QVariant()); + d_texts.push_back(texts); + updateRow(d_texts.size()-1,q); + } + delete q; + endResetModel(); +} + + +void RDDropboxListModel::updateRowLine(int line) +{ + if(linefirst()) { + updateRow(line,q); + } + delete q; + } +} + + +void RDDropboxListModel::updateRow(int row,RDSqlQuery *q) +{ + QList texts; + + // ID + d_box_ids.back()=q->value(0).toInt(); + texts.push_back(q->value(0)); + + // Group + texts.push_back(q->value(1)); + d_group_colors.back()=QColor(q->value(2).toString()); + + // Path + texts.push_back(q->value(3)); + + // Norm. Level + if(q->value(4).toInt()==0) { + texts.push_back(tr("[off]")); + } + else { + texts.push_back(QString().sprintf("%d dBFS",q->value(4).toInt())); + } + + // Autotrim Level + if(q->value(5).toInt()==0) { + texts.push_back(tr("[off]")); + } + else { + texts.push_back(QString().sprintf("%d dBFS",q->value(5).toInt())); + } + + // To Cart + if(q->value(6).toUInt()==0) { + texts.push_back(tr("[auto]")); + } + else { + texts.push_back(QString().sprintf("%06u",q->value(6).toUInt())); + } + + // Force to Mono + texts.push_back(q->value(7)); + + // Use CC ID + texts.push_back(q->value(8)); + + // Delete Cuts + texts.push_back(q->value(9)); + + // Metadata Pattern + texts.push_back(q->value(10)); + + // User Defined + texts.push_back(q->value(11)); + + d_texts[row]=texts; +} + + +QString RDDropboxListModel::sqlFields() const +{ + QString sql=QString("select ")+ + "DROPBOXES.ID,"+ // 00 + "DROPBOXES.GROUP_NAME,"+ // 01 + "GROUPS.COLOR,"+ // 02 + "DROPBOXES.PATH,"+ // 03 + "DROPBOXES.NORMALIZATION_LEVEL,"+ // 04 + "DROPBOXES.AUTOTRIM_LEVEL,"+ // 05 + "DROPBOXES.TO_CART,"+ // 06 + "DROPBOXES.FORCE_TO_MONO,"+ // 07 + "DROPBOXES.USE_CARTCHUNK_ID,"+ // 08 + "DROPBOXES.DELETE_CUTS,"+ // 09 + "DROPBOXES.METADATA_PATTERN,"+ // 10 + "DROPBOXES.SET_USER_DEFINED "+ // 11 + "from DROPBOXES left join GROUPS "+ + "on DROPBOXES.GROUP_NAME=GROUPS.NAME "; + + return sql; +} diff --git a/lib/rddropboxlistmodel.h b/lib/rddropboxlistmodel.h new file mode 100644 index 00000000..2dc6cc2a --- /dev/null +++ b/lib/rddropboxlistmodel.h @@ -0,0 +1,73 @@ +// rddropboxlistmodel.h +// +// Data model for Rivendell dropboxes +// +// (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 RDDROPBOXLISTMODEL_H +#define RDDROPBOXLISTMODEL_H + +#include +#include +#include +#include + +#include +#include + +class RDDropboxListModel : public QAbstractTableModel +{ + Q_OBJECT + public: + RDDropboxListModel(const QString &hostname,QObject *parent=0); + ~RDDropboxListModel(); + 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; + int dropboxId(const QModelIndex &row) const; + QModelIndex addDropbox(int box_id); + void removeDropbox(const QModelIndex &row); + void removeDropbox(int box_id); + void refresh(const QModelIndex &row); + void refresh(int box_id); + + 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; + bool d_include_none; + QList d_headers; + QList d_alignments; + QList > d_texts; + QList d_group_colors; + QList d_box_ids; + QString d_hostname; +}; + + +#endif // RDDROPBOXLISTMODEL_H diff --git a/rdadmin/list_dropboxes.cpp b/rdadmin/list_dropboxes.cpp index 01a8f420..7b8e5450 100644 --- a/rdadmin/list_dropboxes.cpp +++ b/rdadmin/list_dropboxes.cpp @@ -2,7 +2,7 @@ // // List Rivendell Dropboxes // -// (C) Copyright 2002-2019 Gleason +// (C) Copyright 2002-2021 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 @@ -28,8 +28,6 @@ ListDropboxes::ListDropboxes(const QString &stationname,QWidget *parent) : RDDialog(parent) { - setModal(true); - list_stationname=stationname; // @@ -83,38 +81,23 @@ ListDropboxes::ListDropboxes(const QString &stationname,QWidget *parent) connect(list_close_button,SIGNAL(clicked()),this,SLOT(closeData())); // - // Group List + // Dropbox List // - list_dropboxes_view=new RDListView(this); - list_dropboxes_view->setAllColumnsShowFocus(true); - list_dropboxes_view->addColumn(tr("ID")); - list_dropboxes_view->setColumnAlignment(0,Qt::AlignRight); - list_dropboxes_view->addColumn(tr("Group")); - list_dropboxes_view->setColumnAlignment(1,Qt::AlignLeft); - list_dropboxes_view->addColumn(tr("Path")); - list_dropboxes_view->setColumnAlignment(2,Qt::AlignLeft); - list_dropboxes_view->addColumn(tr("Normalization Level")); - list_dropboxes_view->setColumnAlignment(3,Qt::AlignCenter); - list_dropboxes_view->addColumn(tr("Autotrim Level")); - list_dropboxes_view->setColumnAlignment(4,Qt::AlignCenter); - list_dropboxes_view->addColumn(tr("To Cart")); - list_dropboxes_view->setColumnAlignment(5,Qt::AlignCenter); - list_dropboxes_view->addColumn(tr("Use CartChunk ID")); - list_dropboxes_view->setColumnAlignment(6,Qt::AlignCenter); - list_dropboxes_view->addColumn(tr("Delete Cuts")); - list_dropboxes_view->setColumnAlignment(7,Qt::AlignCenter); - list_dropboxes_view->addColumn(tr("Metadata Pattern")); - list_dropboxes_view->setColumnAlignment(8,Qt::AlignCenter); - list_dropboxes_view->addColumn(tr("Fix Broken Formats")); - list_dropboxes_view->setColumnAlignment(9,Qt::AlignCenter); - list_dropboxes_view->addColumn(tr("User Defined")); - list_dropboxes_view->setColumnAlignment(10,Qt::AlignLeft); - connect(list_dropboxes_view, - SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)), - this, - SLOT(doubleClickedData(Q3ListViewItem *,const QPoint &,int))); - - RefreshList(); + list_dropboxes_view=new QTableView(this); + list_dropboxes_view->setSelectionBehavior(QAbstractItemView::SelectRows); + list_dropboxes_view->setSelectionMode(QAbstractItemView::SingleSelection); + list_dropboxes_view->setShowGrid(false); + list_dropboxes_view->setSortingEnabled(false); + list_dropboxes_view->setWordWrap(false); + list_dropboxes_model=new RDDropboxListModel(stationname,this); + list_dropboxes_model->setFont(defaultFont()); + list_dropboxes_model->setPalette(palette()); + list_dropboxes_view->setModel(list_dropboxes_model); + connect(list_dropboxes_view,SIGNAL(doubleClicked(const QModelIndex &)), + this,SLOT(doubleClickedData(const QModelIndex &))); + connect(list_dropboxes_model,SIGNAL(modelReset()), + list_dropboxes_view,SLOT(resizeColumnsToContents())); + list_dropboxes_view->resizeColumnsToContents(); } @@ -142,6 +125,10 @@ void ListDropboxes::addData() delete box; EditDropbox *edit_dropbox=new EditDropbox(id,false,this); if(edit_dropbox->exec()) { + QModelIndex row=list_dropboxes_model->addDropbox(id); + if(row.isValid()) { + list_dropboxes_view->selectRow(row.row()); + } RDNotification *notify=new RDNotification(RDNotification::DropboxType, RDNotification::AddAction, list_stationname); @@ -155,47 +142,48 @@ void ListDropboxes::addData() delete edit_dropbox; return; } - RDListViewItem *item=new RDListViewItem(list_dropboxes_view); - item->setId(id); - RefreshItem(item); - item->setSelected(true); - list_dropboxes_view->setCurrentItem(item); - list_dropboxes_view->ensureItemVisible(item); } void ListDropboxes::editData() { - RDListViewItem *item=(RDListViewItem *)list_dropboxes_view->selectedItem(); - if(item==NULL) { + QModelIndexList rows=list_dropboxes_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { return; } - EditDropbox *edit_dropbox=new EditDropbox(item->id(),false,this); - if(edit_dropbox->exec()) { + EditDropbox *d= + new EditDropbox(list_dropboxes_model->dropboxId(rows.first()),false,this); + if(d->exec()) { + list_dropboxes_model->refresh(rows.first()); RDNotification *notify=new RDNotification(RDNotification::DropboxType, RDNotification::ModifyAction, list_stationname); rda->ripc()->sendNotification(*notify); delete notify; } - delete edit_dropbox; - RefreshItem(item); + delete d; } void ListDropboxes::duplicateData() { - RDListViewItem *item=(RDListViewItem *)list_dropboxes_view->selectedItem(); - if(item==NULL) { + QModelIndexList rows=list_dropboxes_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { return; } - - RDDropbox *src_box=new RDDropbox(item->id(),list_stationname); + int box_id=list_dropboxes_model->dropboxId(rows.first()); + RDDropbox *src_box=new RDDropbox(box_id,list_stationname); int new_box_id=src_box->duplicate(); delete src_box; - EditDropbox *edit_dropbox=new EditDropbox(new_box_id,true,this); - if(edit_dropbox->exec()) { + EditDropbox *d=new EditDropbox(new_box_id,true,this); + if(d->exec()) { + QModelIndex index=list_dropboxes_model->addDropbox(new_box_id); + if(index.isValid()) { + list_dropboxes_view->selectRow(index.row()); + } RDNotification *notify=new RDNotification(RDNotification::DropboxType, RDNotification::AddAction, list_stationname); @@ -203,50 +191,41 @@ void ListDropboxes::duplicateData() delete notify; } else { - QString sql=QString().sprintf("delete from DROPBOXES where ID=%d",new_box_id); - RDSqlQuery *q=new RDSqlQuery(sql); - delete q; - delete edit_dropbox; - return; + QString sql=QString().sprintf("delete from DROPBOXES where ID=%d", + new_box_id); + RDSqlQuery::apply(sql); } - item=new RDListViewItem(list_dropboxes_view); - item->setId(new_box_id); - RefreshItem(item); - item->setSelected(true); - list_dropboxes_view->setCurrentItem(item); - list_dropboxes_view->ensureItemVisible(item); + delete d; } void ListDropboxes::deleteData() { QString sql; - RDSqlQuery *q; - RDListViewItem *item=(RDListViewItem *)list_dropboxes_view->selectedItem(); - if(item==NULL) { + QModelIndexList rows=list_dropboxes_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { return; } + int box_id=list_dropboxes_model->dropboxId(rows.first()); sql=QString().sprintf("delete from DROPBOX_PATHS where DROPBOX_ID=%d", - item->id()); - q=new RDSqlQuery(sql); - delete q; + box_id); + RDSqlQuery::apply(sql); - sql=QString().sprintf("delete from DROPBOXES where ID=%d",item->id()); - q=new RDSqlQuery(sql); - delete q; + sql=QString().sprintf("delete from DROPBOXES where ID=%d",box_id); + RDSqlQuery::apply(sql); + + list_dropboxes_model->removeDropbox(box_id); RDNotification *notify=new RDNotification(RDNotification::DropboxType, RDNotification::DeleteAction, list_stationname); rda->ripc()->sendNotification(*notify); delete notify; - - delete item; } -void ListDropboxes::doubleClickedData(Q3ListViewItem *item,const QPoint &pt, - int col) +void ListDropboxes::doubleClickedData(const QModelIndex &index) { editData(); } @@ -268,102 +247,3 @@ void ListDropboxes::resizeEvent(QResizeEvent *e) list_dropboxes_view-> setGeometry(10,10,size().width()-120,size().height()-40); } - - -void ListDropboxes::RefreshList() -{ - QString sql; - RDSqlQuery *q; - RDListViewItem *item; - - list_dropboxes_view->clear(); - sql=QString("select ")+ - "DROPBOXES.ID,"+ // 00 - "DROPBOXES.GROUP_NAME,"+ // 01 - "DROPBOXES.PATH,"+ // 02 - "DROPBOXES.NORMALIZATION_LEVEL,"+ // 03 - "DROPBOXES.AUTOTRIM_LEVEL,"+ // 04 - "DROPBOXES.TO_CART,"+ // 05 - "DROPBOXES.USE_CARTCHUNK_ID,"+ // 06 - "DROPBOXES.DELETE_CUTS,"+ // 07 - "DROPBOXES.METADATA_PATTERN,"+ // 08 - "DROPBOXES.FIX_BROKEN_FORMATS,"+ // 09 - "DROPBOXES.SET_USER_DEFINED,"+ // 10 - "GROUPS.COLOR "+ // 11 - "from DROPBOXES left join GROUPS "+ - "on DROPBOXES.GROUP_NAME=GROUPS.NAME where "+ - "DROPBOXES.STATION_NAME=\""+RDEscapeString(list_stationname)+"\""; - q=new RDSqlQuery(sql); - while (q->next()) { - item=new RDListViewItem(list_dropboxes_view); - WriteItem(item,q); - } - delete q; -} - - -void ListDropboxes::RefreshItem(RDListViewItem *item) -{ - QString sql; - RDSqlQuery *q; - - sql=QString("select ")+ - "DROPBOXES.ID,"+ // 00 - "DROPBOXES.GROUP_NAME,"+ // 01 - "DROPBOXES.PATH,"+ // 02 - "DROPBOXES.NORMALIZATION_LEVEL,"+ // 03 - "DROPBOXES.AUTOTRIM_LEVEL,"+ // 04 - "DROPBOXES.TO_CART,"+ // 05 - "DROPBOXES.USE_CARTCHUNK_ID,"+ // 06 - "DROPBOXES.DELETE_CUTS,"+ // 07 - "DROPBOXES.METADATA_PATTERN,"+ // 08 - "DROPBOXES.FIX_BROKEN_FORMATS,"+ // 09 - "DROPBOXES.SET_USER_DEFINED,"+ // 10 - "GROUPS.COLOR "+ // 11 - "from DROPBOXES left join GROUPS on "+ - "DROPBOXES.GROUP_NAME=GROUPS.NAME where "+ - QString().sprintf("DROPBOXES.ID=%d",item->id()); - q=new RDSqlQuery(sql); - if(q->next()) { - WriteItem(item,q); - } - delete q; -} - - -void ListDropboxes::WriteItem(RDListViewItem *item,RDSqlQuery *q) -{ - item->setId(q->value(0).toInt()); - item->setText(0,QString().sprintf("%d",q->value(0).toInt())); - item->setText(1,q->value(1).toString()); - item->setTextColor(1,q->value(11).toString(),QFont::Bold); - item->setText(2,q->value(2).toString()); - if(q->value(3).toInt()<0) { - item->setText(3,QString().sprintf("%d",q->value(3).toInt()/100)); - } - else { - item->setText(3,tr("[off]")); - } - if(q->value(4).toInt()<0) { - item->setText(4,QString().sprintf("%d",q->value(4).toInt()/100)); - } - else { - item->setText(4,tr("[off]")); - } - if(q->value(5).toUInt()>0) { - item->setText(5,QString().sprintf("%06u",q->value(5).toUInt())); - } - else { - item->setText(5,tr("[auto]")); - } - item->setText(6,q->value(6).toString()); - item->setText(7,q->value(7).toString()); - if(q->value(8).toString().isEmpty()) { - item->setText(8,tr("[none]")); - } - else { - item->setText(8,q->value(8).toString()); - } - item->setText(9,q->value(9).toString()); - item->setText(10,q->value(10).toString()); -} diff --git a/rdadmin/list_dropboxes.h b/rdadmin/list_dropboxes.h index 67277286..4039cc48 100644 --- a/rdadmin/list_dropboxes.h +++ b/rdadmin/list_dropboxes.h @@ -2,7 +2,7 @@ // // List Rivendell Dropbox Configurations // -// (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,11 +21,12 @@ #ifndef LIST_DROPBOXES_H #define LIST_DROPBOXES_H -#include +#include +#include #include #include -#include +#include class ListDropboxes : public RDDialog { @@ -41,17 +42,15 @@ class ListDropboxes : public RDDialog void editData(); void duplicateData(); void deleteData(); - void doubleClickedData(Q3ListViewItem *item,const QPoint &pt,int col); + void doubleClickedData(const QModelIndex &index); void closeData(); protected: void resizeEvent(QResizeEvent *e); private: - void RefreshList(); - void RefreshItem(RDListViewItem *item); - void WriteItem(RDListViewItem *item,RDSqlQuery *q); - RDListView *list_dropboxes_view; + QTableView *list_dropboxes_view; + RDDropboxListModel *list_dropboxes_model; QPushButton *list_add_button; QPushButton *list_edit_button; QPushButton *list_duplicate_button; diff --git a/rdadmin/rdadmin_cs.ts b/rdadmin/rdadmin_cs.ts index e33da21c..27086f03 100644 --- a/rdadmin/rdadmin_cs.ts +++ b/rdadmin/rdadmin_cs.ts @@ -5044,55 +5044,51 @@ Jste si jistý, že chcete pokračovat? Group - Skupina + Skupina Path - Cesta + Cesta Normalization Level - Úroveň normalizace + Úroveň normalizace Autotrim Level - Úroveň automatického zastřižení + Úroveň automatického zastřižení To Cart - Do vozíku + Do vozíku Use CartChunk ID - Použít ID kousku vozík + Použít ID kousku vozík Delete Cuts - Smazat záběry + Smazat záběry Metadata Pattern - Vzor pro popisná data + Vzor pro popisná data Fix Broken Formats - Opravit poškozené formáty + Opravit poškozené formáty [off] - [vypnuto] + [vypnuto] [auto] - [automaticky] + [automaticky] [none] - [žádný] - - - User Defined - + [žádný] Rivendell Dropbox Configurations on @@ -5102,10 +5098,6 @@ Jste si jistý, že chcete pokračovat? D&uplicate - - ID - - ListEncoders diff --git a/rdadmin/rdadmin_de.ts b/rdadmin/rdadmin_de.ts index 2fdb067b..b29f2fe0 100644 --- a/rdadmin/rdadmin_de.ts +++ b/rdadmin/rdadmin_de.ts @@ -4764,57 +4764,13 @@ anzeigen &Close &Schliessen - - Group - - Path - Pfad - - - Normalization Level - - - - Autotrim Level - - - - To Cart - - - - Use CartChunk ID - - - - Delete Cuts - - - - Metadata Pattern - - - - Fix Broken Formats - - - - [off] - - - - [auto] - + Pfad [none] - [keine] - - - User Defined - + [keine] Rivendell Dropbox Configurations on @@ -4824,10 +4780,6 @@ anzeigen D&uplicate - - ID - - ListEncoders diff --git a/rdadmin/rdadmin_es.ts b/rdadmin/rdadmin_es.ts index 163dce16..7929a32e 100644 --- a/rdadmin/rdadmin_es.ts +++ b/rdadmin/rdadmin_es.ts @@ -4995,55 +4995,51 @@ Are you sure you want to continue? Group - Grupo + Grupo Path - Carpeta + Carpeta Normalization Level - Nivel de Normalización + Nivel de Normalización Autotrim Level - Nivel de AutoRecorte + Nivel de AutoRecorte To Cart - A Cartucho + A Cartucho Use CartChunk ID - Usar ID de CartChunk + Usar ID de CartChunk Delete Cuts - Borrar audios + Borrar audios Metadata Pattern - Patrón de metadatos + Patrón de metadatos Fix Broken Formats - Arreglar formatos rotos + Arreglar formatos rotos [off] - [apagado] + [apagado] [auto] - [auto] + [auto] [none] - [ninguno] - - - User Defined - + [ninguno] Rivendell Dropbox Configurations on @@ -5053,10 +5049,6 @@ Are you sure you want to continue? D&uplicate - - ID - - ListEncoders diff --git a/rdadmin/rdadmin_fr.ts b/rdadmin/rdadmin_fr.ts index 563c4d89..7f7dd516 100644 --- a/rdadmin/rdadmin_fr.ts +++ b/rdadmin/rdadmin_fr.ts @@ -3915,58 +3915,6 @@ Permissions &Close - - Group - - - - Path - - - - Normalization Level - - - - Autotrim Level - - - - To Cart - - - - Use CartChunk ID - - - - Delete Cuts - - - - Metadata Pattern - - - - Fix Broken Formats - - - - [off] - - - - [auto] - - - - [none] - - - - User Defined - - Rivendell Dropbox Configurations on @@ -3975,10 +3923,6 @@ Permissions D&uplicate - - ID - - ListEncoders diff --git a/rdadmin/rdadmin_nb.ts b/rdadmin/rdadmin_nb.ts index 2b15071f..4e6c065a 100644 --- a/rdadmin/rdadmin_nb.ts +++ b/rdadmin/rdadmin_nb.ts @@ -4673,57 +4673,9 @@ Klikk på "Lisens"-knappen for fleire opplysningar. &Close &Lukk - - Group - - - - Path - - - - Normalization Level - - - - Autotrim Level - - - - To Cart - - - - Use CartChunk ID - - - - Delete Cuts - - - - Metadata Pattern - - - - Fix Broken Formats - - - - [off] - - - - [auto] - - [none] - [ingen] - - - User Defined - + [ingen] Rivendell Dropbox Configurations on @@ -4733,10 +4685,6 @@ Klikk på "Lisens"-knappen for fleire opplysningar. D&uplicate - - ID - - ListEncoders diff --git a/rdadmin/rdadmin_nn.ts b/rdadmin/rdadmin_nn.ts index 2b15071f..4e6c065a 100644 --- a/rdadmin/rdadmin_nn.ts +++ b/rdadmin/rdadmin_nn.ts @@ -4673,57 +4673,9 @@ Klikk på "Lisens"-knappen for fleire opplysningar. &Close &Lukk - - Group - - - - Path - - - - Normalization Level - - - - Autotrim Level - - - - To Cart - - - - Use CartChunk ID - - - - Delete Cuts - - - - Metadata Pattern - - - - Fix Broken Formats - - - - [off] - - - - [auto] - - [none] - [ingen] - - - User Defined - + [ingen] Rivendell Dropbox Configurations on @@ -4733,10 +4685,6 @@ Klikk på "Lisens"-knappen for fleire opplysningar. D&uplicate - - ID - - ListEncoders diff --git a/rdadmin/rdadmin_pt_BR.ts b/rdadmin/rdadmin_pt_BR.ts index 5423b9c4..953da466 100644 --- a/rdadmin/rdadmin_pt_BR.ts +++ b/rdadmin/rdadmin_pt_BR.ts @@ -4744,57 +4744,13 @@ FINALIDADE PARTICULAR. Aperte o botão VER LICENÇA para mais detalhes.&Close &Fechar - - Group - - Path - Caminho - - - Normalization Level - - - - Autotrim Level - - - - To Cart - - - - Use CartChunk ID - - - - Delete Cuts - - - - Metadata Pattern - - - - Fix Broken Formats - - - - [off] - - - - [auto] - + Caminho [none] - [Nenhum] - - - User Defined - + [Nenhum] Rivendell Dropbox Configurations on @@ -4804,10 +4760,6 @@ FINALIDADE PARTICULAR. Aperte o botão VER LICENÇA para mais detalhes.D&uplicate - - ID - - ListEncoders