2023-05-22 Fred Gleason <fredg@paravelsystems.com>

* Refactored the right-side of the 'Edit Event' dialog in
	rdlogmanager(1) to be fully resizeable.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2023-05-22 16:00:43 -04:00
parent 8fa472e7fb
commit f77f95848e
8 changed files with 297 additions and 224 deletions

View File

@ -24155,3 +24155,6 @@
2023-05-22 Fred Gleason <fredg@paravelsystems.com>
* Adjusted layout positions of elements in the 'Edit Event' dialog
in rdlogmanager(1).
2023-05-22 Fred Gleason <fredg@paravelsystems.com>
* Refactored the right-side of the 'Edit Event' dialog in
rdlogmanager(1) to be fully resizeable.

View File

@ -57,6 +57,7 @@ dist_rdlogmanager_SOURCES = add_clock.cpp add_clock.h\
generate_log.cpp generate_log.h\
importcartsmodel.cpp importcartsmodel.h\
importcartsview.cpp importcartsview.h\
importcartswidget.cpp importcartswidget.h\
librarytableview.cpp librarytableview.h\
list_clocks.cpp list_clocks.h\
list_events.cpp list_events.h\
@ -89,6 +90,7 @@ nodist_rdlogmanager_SOURCES = moc_add_clock.cpp\
moc_generate_log.cpp\
moc_importcartsmodel.cpp\
moc_importcartsview.cpp\
moc_importcartswidget.cpp\
moc_librarytableview.cpp\
moc_list_clocks.cpp\
moc_list_events.cpp\

View File

@ -463,14 +463,13 @@ void EditEvent::resizeEvent(QResizeEvent *e)
event_remarks_edit->setGeometry(10,h/2+150,x_divide-20,h-(h/2+160));
event_widget->setGeometry(10+x_divide,0,
event_widget->sizeHint().width(),
event_widget->sizeHint().height());
h-70);
event_save_button->setGeometry(w-610,h-60,80,50);
event_saveas_button->setGeometry(w-520,h-60,80,50);
event_services_list_button->setGeometry(w-395,h-60,80,50);
event_color_button->
setGeometry(w-305,h-60,80,50);
event_color_button->setGeometry(w-305,h-60,80,50);
event_ok_button->setGeometry(w-180,h-60,80,50);
event_cancel_button->setGeometry(w-90,h-60,80,50);

View File

@ -29,8 +29,6 @@ EventWidget::EventWidget(QWidget *parent)
: RDWidget(parent)
{
event_event=NULL;
event_preimport_model=NULL;
event_postimport_model=NULL;
// *******************************
// Pre-Position Log Section
@ -165,31 +163,12 @@ EventWidget::EventWidget(QWidget *parent)
// *******************************
event_stack_group=new QGroupBox(tr("CART STACK"),this);
event_stack_group->setFont(labelFont());
//
// Pre-Import Carts Section
//
event_preimport_carts_label=new QLabel(tr("PRE-IMPORT CARTS"),this);
event_preimport_carts_label->setFont(labelFont());
//
// Pre-Import Carts List
//
event_preimport_length_edit=new QLineEdit(this);
event_preimport_length_edit->setReadOnly(true);
event_preimport_length_label=new QLabel(tr("Len:"),this);
event_preimport_length_label->setFont(labelFont());
event_preimport_length_label->setAlignment(Qt::AlignVCenter|Qt::AlignRight);
event_preimport_view=new ImportCartsView(this);
event_preimport_view->setDragEnabled(true);
event_preimport_up_button=new RDTransportButton(RDTransportButton::Up,this);
connect(event_preimport_up_button,SIGNAL(clicked()),
this,SLOT(preimportUpData()));
event_preimport_down_button=
new RDTransportButton(RDTransportButton::Down,this);
connect(event_preimport_down_button,SIGNAL(clicked()),
this,SLOT(preimportDownData()));
// *******************************
// Pre-Import Events Section
// *******************************
event_preimport_widget=
new ImportCartsWidget(ImportCartsModel::PreImport,this);
//
// Imports
@ -314,33 +293,11 @@ EventWidget::EventWidget(QWidget *parent)
event_nestevent_box=new QComboBox(this);
event_nestevent_box->insertItem(0,tr("[none]"));
//
// *******************************
// Post-Import Carts Section
//
event_postimport_carts_label=new QLabel(tr("POST-IMPORT CARTS"),this);
event_postimport_carts_label->setFont(labelFont());
//
// Post-Import Carts List
//
event_postimport_length_edit=new QLineEdit(this);
event_postimport_length_edit->setReadOnly(true);
event_postimport_length_label=new QLabel(tr("Len:"),this);
event_postimport_length_label->setFont(labelFont());
event_postimport_length_label->setAlignment(Qt::AlignVCenter|Qt::AlignRight);
event_postimport_view=new ImportCartsView(this);
event_postimport_view->setDragEnabled(true);
event_postimport_up_button=
new RDTransportButton(RDTransportButton::Up,this);
connect(event_postimport_up_button,SIGNAL(clicked()),
this,SLOT(postimportUpData()));
event_postimport_down_button=
new RDTransportButton(RDTransportButton::Down,this);
connect(event_postimport_down_button,SIGNAL(clicked()),
this,SLOT(postimportDownData()));
// *******************************
event_postimport_widget=new ImportCartsWidget(ImportCartsModel::PostImport,
this);
}
@ -402,8 +359,8 @@ QString EventWidget::properties() const
void EventWidget::rename(const QString &str)
{
event_preimport_model->setEventName(str);
event_postimport_model->setEventName(str);
event_preimport_widget->setEventName(str);
event_postimport_widget->setEventName(str);
}
@ -465,44 +422,10 @@ void EventWidget::load(RDEvent *evt)
delete q;
//
// Pre-Import Carts
// Import Events
//
if(event_preimport_model!=NULL) {
delete event_preimport_model;
}
event_preimport_model=
new ImportCartsModel(evt->name(),ImportCartsModel::PreImport,true,this);
event_preimport_model->setFont(font());
event_preimport_model->setPalette(palette());
event_preimport_view->setModel(event_preimport_model);
connect(event_preimport_model,SIGNAL(modelReset()),
event_preimport_view,SLOT(resizeColumnsToContents()));
connect(event_preimport_view,SIGNAL(cartDropped(int,RDLogLine *)),
event_preimport_model,SLOT(processCartDrop(int,RDLogLine *)));
connect(event_preimport_model,SIGNAL(totalLengthChanged(int)),
this,SLOT(preimportLengthChangedData(int)));
event_preimport_view->resizeColumnsToContents();
preimportLengthChangedData(event_preimport_model->totalLength());
//
// Post-Import Carts
//
if(event_postimport_model!=NULL) {
delete event_postimport_model;
}
event_postimport_model=
new ImportCartsModel(evt->name(),ImportCartsModel::PostImport,false,this);
event_postimport_model->setFont(font());
event_postimport_model->setPalette(palette());
event_postimport_view->setModel(event_postimport_model);
connect(event_postimport_model,SIGNAL(modelReset()),
event_postimport_view,SLOT(resizeColumnsToContents()));
connect(event_postimport_view,SIGNAL(cartDropped(int,RDLogLine *)),
event_postimport_model,SLOT(processCartDrop(int,RDLogLine *)));
connect(event_postimport_model,SIGNAL(totalLengthChanged(int)),
this,SLOT(postimportLengthChangedData(int)));
event_postimport_view->resizeColumnsToContents();
postimportLengthChangedData(event_postimport_model->totalLength());
event_preimport_widget->load(event_event);
event_postimport_widget->load(event_event);
pos=event_event->preposition();
if(pos<0) {
@ -710,9 +633,10 @@ void EventWidget::save(RDEvent *evt) const
event_event->setHaveCode2("");
}
event_preimport_model->
save((RDLogLine::TransType)event_firsttrans_box->currentIndex());
event_postimport_model->save();
event_preimport_widget->
save(event_event,
(RDLogLine::TransType)event_firsttrans_box->currentIndex());
event_postimport_widget->save(event_event);
}
@ -861,70 +785,6 @@ void EventWidget::importClickedData(int id)
}
void EventWidget::preimportLengthChangedData(int msecs)
{
event_preimport_length_edit->setText(RDGetTimeLength(msecs,true,false));
}
void EventWidget::preimportUpData()
{
QModelIndexList rows=event_preimport_view->selectionModel()->selectedRows();
if(rows.size()!=1) {
return;
}
if(event_preimport_model->moveUp(rows.first())) {
event_preimport_view->selectRow(rows.first().row()-1);
}
}
void EventWidget::preimportDownData()
{
QModelIndexList rows=event_preimport_view->selectionModel()->selectedRows();
if(rows.size()!=1) {
return;
}
if(event_preimport_model->moveDown(rows.first())) {
event_preimport_view->selectRow(rows.first().row()+1);
}
}
void EventWidget::postimportUpData()
{
QModelIndexList rows=event_postimport_view->selectionModel()->selectedRows();
if(rows.size()!=1) {
return;
}
if(event_postimport_model->moveUp(rows.first())) {
event_postimport_view->selectRow(rows.first().row()-1);
}
}
void EventWidget::postimportDownData()
{
QModelIndexList rows=event_postimport_view->selectionModel()->selectedRows();
if(rows.size()!=1) {
return;
}
if(event_postimport_model->moveDown(rows.first())) {
event_postimport_view->selectRow(rows.first().row()+1);
}
}
void EventWidget::postimportLengthChangedData(int msecs)
{
event_postimport_length_edit->setText(RDGetTimeLength(msecs,true,false));
}
void EventWidget::artistData()
{
event_artist_sep_spinbox->setValue(-1);
@ -1024,98 +884,96 @@ void EventWidget::resizeEvent(QResizeEvent *e)
// Cart Stack Section
//
event_stack_group->
setGeometry(0,235,sizeHint().width()-15,408);
setGeometry(0,235,sizeHint().width()-15,size().height()-235);
//
// Pre-Import Carts Section
//
event_preimport_carts_label->setGeometry(5,255,200,16);
event_preimport_length_edit->setGeometry(sizeHint().width()-150,253,80,20);
event_preimport_length_label->setGeometry(sizeHint().width()-340,255,185,16);
event_preimport_view->setGeometry(5,272,
sizeHint().width()-75,115);
event_preimport_up_button->setGeometry(sizeHint().width()-60,277,40,40);
event_preimport_down_button->setGeometry(sizeHint().width()-60,342,40,40);
int events_h=(size().height()-235-106)/2;
event_preimport_widget->
setGeometry(0,250,event_preimport_widget->sizeHint().width(),events_h);
//
// Imports Section
//
event_imports_label->setGeometry(5,392,200,16);
event_source_none_radio->setGeometry(70,392,15,15);
event_source_traffic_radio->setGeometry(150,392,15,15);
event_source_music_radio->setGeometry(270,392,15,15);
event_source_scheduler_radio->setGeometry(390,392,15,15);
event_source_group_none_label->setGeometry(90,392,150,15);
event_source_group_traffic_label->setGeometry(170,392,150,15);
event_source_group_music_label->setGeometry(290,392,150,15);
event_source_group_scheduler_label->setGeometry(410,392,150,15);
int import_y=250+events_h-15;
event_imports_label->setGeometry(5,import_y+3,200,16);
event_source_none_radio->setGeometry(70,import_y+3,15,15);
event_source_traffic_radio->setGeometry(150,import_y+3,15,15);
event_source_music_radio->setGeometry(270,import_y+3,15,15);
event_source_scheduler_radio->setGeometry(390,import_y+3,15,15);
event_source_group_none_label->setGeometry(90,import_y+3,150,15);
event_source_group_traffic_label->setGeometry(170,import_y+3,150,15);
event_source_group_music_label->setGeometry(290,import_y+3,150,15);
event_source_group_scheduler_label->setGeometry(410,import_y+3,150,15);
//
// Scheduler Group
//
event_sched_group_box->setGeometry(500,389,100,20);
event_sched_group_box->setGeometry(500,import_y,100,20);
//
// Artist Separation
//
event_artist_sep_label->setGeometry(400,412,100,20);
event_artist_sep_spinbox->setGeometry(505,413,53,20);
event_artist_none_button->setGeometry(565,413,40,20);
event_artist_sep_label->setGeometry(400,import_y+23,100,20);
event_artist_sep_spinbox->setGeometry(505,import_y+24,53,20);
event_artist_none_button->setGeometry(565,import_y+24,40,20);
//
// Title Separation
//
event_title_sep_label->setGeometry(400,434,100,20);
event_title_sep_spinbox->setGeometry(505,434,53,20);
event_title_none_button->setGeometry(565,434,40,20);
event_title_sep_label->setGeometry(400,import_y+45,100,20);
event_title_sep_spinbox->setGeometry(505,import_y+45,53,20);
event_title_none_button->setGeometry(565,import_y+45,40,20);
//
// Must Have Code
//
event_have_code_label->setGeometry(400,457,100,20);
event_have_code_box->setGeometry(505,457,100,20);
event_have_code_label->setGeometry(400,import_y+68,100,20);
event_have_code_box->setGeometry(505,import_y+68,100,20);
//
// And Code
//
event_have_code2_label->setGeometry(400,478,100,20);
event_have_code2_box->setGeometry(505,478,100,20);
event_have_code2_label->setGeometry(400,import_y+89,100,20);
event_have_code2_box->setGeometry(505,import_y+89,100,20);
// Start Slop
//
event_startslop_label->setGeometry(20,413,140,22);
event_startslop_edit->setGeometry(156,413,60,22);
event_startslop_unit->setGeometry(220,413,sizeHint().width()-450,22);
event_startslop_label->setGeometry(20,import_y+24,140,22);
event_startslop_edit->setGeometry(156,import_y+24,60,22);
event_startslop_unit->setGeometry(220,import_y+24,sizeHint().width()-450,22);
//
// End Slop
//
event_endslop_label->setGeometry(20,434,140,22);
event_endslop_edit->setGeometry(156,434,60,22);
event_endslop_unit->setGeometry(220,434,sizeHint().width()-460,22);
event_endslop_label->setGeometry(20,import_y+45,140,22);
event_endslop_edit->setGeometry(156,import_y+45,60,22);
event_endslop_unit->setGeometry(220,import_y+45,sizeHint().width()-460,22);
//
// Nested Event
//
event_nestevent_label->setGeometry(25,459,190,20);
event_nestevent_box->setGeometry(20,478,365,20);
event_nestevent_label->setGeometry(25,import_y+70,190,20);
event_nestevent_box->setGeometry(20,import_y+89,365,20);
//
// Post-Import Carts Section
//
event_postimport_carts_label->setGeometry(5,510,200,16);
event_postimport_length_edit->setGeometry(sizeHint().width()-150,506,80,20);
event_postimport_length_label->setGeometry(sizeHint().width()-340,508,185,16);
event_postimport_view->setGeometry(5,525,sizeHint().width()-75,125-10);
event_postimport_up_button->setGeometry(sizeHint().width()-60,532,40,40);
event_postimport_down_button->setGeometry(sizeHint().width()-60,592,40,40);
event_postimport_widget->
setGeometry(0,import_y+106+20,event_postimport_widget->sizeHint().width(),
events_h);
}
void EventWidget::paintEvent(QPaintEvent *e)
{
int y=85+size().height()/2;
QPainter *p=new QPainter(this);
p->setPen(Qt::black);
p->drawLine(408,408,408,493);
p->drawLine(396,y,396,y+84);
p->end();
}

View File

@ -41,6 +41,7 @@
#include "importcartsmodel.h"
#include "importcartsview.h"
#include "importcartswidget.h"
#include "librarytableview.h"
//
@ -69,12 +70,6 @@ class EventWidget : public RDWidget
void autofillToggledData(bool);
void autofillWarnToggledData(bool);
void importClickedData(int);
void preimportLengthChangedData(int msecs);
void preimportUpData();
void preimportDownData();
void postimportUpData();
void postimportDownData();
void postimportLengthChangedData(int msecs);
void artistData();
void titleData();
@ -122,13 +117,8 @@ class EventWidget : public RDWidget
QLabel *event_timescale_label;
QCheckBox *event_timescale_box;
QGroupBox *event_stack_group;
QLabel *event_preimport_carts_label;
ImportCartsView *event_preimport_view;
ImportCartsModel *event_preimport_model;
QLabel *event_preimport_length_label;
QLineEdit *event_preimport_length_edit;
RDTransportButton *event_preimport_up_button;
RDTransportButton *event_preimport_down_button;
ImportCartsWidget *event_preimport_widget;
ImportCartsWidget *event_postimport_widget;
QRadioButton *event_source_none_radio;
QRadioButton *event_source_traffic_radio;
QRadioButton *event_source_music_radio;
@ -154,13 +144,6 @@ class EventWidget : public RDWidget
QLabel *event_defaulttrans_unit;
QLabel *event_nestevent_label;
QComboBox *event_nestevent_box;
QLabel *event_postimport_carts_label;
ImportCartsView *event_postimport_view;
ImportCartsModel *event_postimport_model;
QLabel *event_postimport_length_label;
QLineEdit *event_postimport_length_edit;
RDTransportButton *event_postimport_up_button;
RDTransportButton *event_postimport_down_button;
};

View File

@ -0,0 +1,159 @@
// importcartswidget.cpp
//
// Widget for listing import events in rdlogmanager(1)
//
// (C) Copyright 2002-2023 Fred Gleason <fredg@paravelsystems.com>
//
// 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 <rdconf.h>
#include "importcartswidget.h"
ImportCartsWidget::ImportCartsWidget(ImportCartsModel::ImportType type,
QWidget *parent)
: RDWidget(parent)
{
d_import_type=type;
d_model=NULL;
if(d_import_type==ImportCartsModel::PreImport) {
d_title_label=new QLabel(tr("PRE-IMPORT EVENTS"),this);
}
if(d_import_type==ImportCartsModel::PostImport) {
d_title_label=new QLabel(tr("POST-IMPORT EVENTS"),this);
}
d_title_label->setFont(labelFont());
d_length_edit=new QLineEdit(this);
d_length_edit->setReadOnly(true);
d_length_label=new QLabel(tr("Len")+":",this);
d_length_label->setFont(labelFont());
d_length_label->setAlignment(Qt::AlignVCenter|Qt::AlignRight);
d_view=new ImportCartsView(this);
d_view->setDragEnabled(true);
d_up_button=new RDTransportButton(RDTransportButton::Up,this);
connect(d_up_button,SIGNAL(clicked()),this,SLOT(upData()));
d_down_button=
new RDTransportButton(RDTransportButton::Down,this);
connect(d_down_button,SIGNAL(clicked()),this,SLOT(downData()));
}
ImportCartsWidget::~ImportCartsWidget()
{
if(d_model!=NULL) {
delete d_model;
}
}
QSize ImportCartsWidget::sizeHint() const
{
return QSize(624,160);
}
QSizePolicy ImportCartsWidget::sizePolicy() const
{
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::MinimumExpanding);
}
ImportCartsModel::ImportType ImportCartsWidget::importType() const
{
return d_import_type;
}
void ImportCartsWidget::setEventName(const QString &str)
{
d_model->setEventName(str);
}
void ImportCartsWidget::load(RDEvent *evt)
{
if(d_model!=NULL) {
delete d_model;
}
d_model=new ImportCartsModel(evt->name(),d_import_type,true,this);
d_model->setFont(font());
d_model->setPalette(palette());
d_view->setModel(d_model);
connect(d_model,SIGNAL(modelReset()),d_view,SLOT(resizeColumnsToContents()));
connect(d_view,SIGNAL(cartDropped(int,RDLogLine *)),
d_model,SLOT(processCartDrop(int,RDLogLine *)));
connect(d_model,SIGNAL(totalLengthChanged(int)),
this,SLOT(lengthChangedData(int)));
d_view->resizeColumnsToContents();
lengthChangedData(d_model->totalLength());
}
void ImportCartsWidget::save(RDEvent *evt,
RDLogLine::TransType first_trans) const
{
d_model->save(first_trans);
}
void ImportCartsWidget::lengthChangedData(int msecs)
{
d_length_edit->setText(RDGetTimeLength(msecs,true,false));
}
void ImportCartsWidget::upData()
{
QModelIndexList rows=d_view->selectionModel()->selectedRows();
if(rows.size()!=1) {
return;
}
if(d_model->moveUp(rows.first())) {
d_view->selectRow(rows.first().row()-1);
}
}
void ImportCartsWidget::downData()
{
QModelIndexList rows=d_view->selectionModel()->selectedRows();
if(rows.size()!=1) {
return;
}
if(d_model->moveDown(rows.first())) {
d_view->selectRow(rows.first().row()+1);
}
}
void ImportCartsWidget::resizeEvent(QResizeEvent *e)
{
int w=size().width();
int h=size().height();
d_title_label->setGeometry(5,2,200,16);
d_length_edit->setGeometry(w-150,0,80,20);
d_length_label->setGeometry(w-340,2,185,16);
// d_view->setGeometry(5,20,w-75,115);
d_view->setGeometry(5,20,w-75,h-45);
d_up_button->setGeometry(w-60,24,40,40);
d_down_button->setGeometry(w-60,85,40,40);
}

View File

@ -0,0 +1,67 @@
// importcartswidget.h
//
// Widget for listing import events in rdlogmanager(1)
//
// (C) Copyright 2002-2023 Fred Gleason <fredg@paravelsystems.com>
//
// 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 IMPORTCARTSWIDGET_H
#define IMPORTCARTSWIDGET_H
#include <QLineEdit>
#include <rdevent.h>
#include <rdtransportbutton.h>
#include <rdwidget.h>
#include "importcartsmodel.h"
#include "importcartsview.h"
class ImportCartsWidget : public RDWidget
{
Q_OBJECT
public:
ImportCartsWidget(ImportCartsModel::ImportType type,QWidget *parent=0);
~ImportCartsWidget();
QSize sizeHint() const;
QSizePolicy sizePolicy() const;
ImportCartsModel::ImportType importType() const;
void setEventName(const QString &str);
void load(RDEvent *evt);
void save(RDEvent *evt,RDLogLine::TransType first_trans=RDLogLine::NoTrans)
const;
private slots:
void lengthChangedData(int msecs);
void upData();
void downData();
protected:
void resizeEvent(QResizeEvent *e);
private:
ImportCartsModel::ImportType d_import_type;
QLabel *d_title_label;
QLabel *d_length_label;
QLineEdit *d_length_edit;
ImportCartsView *d_view;
ImportCartsModel *d_model;
RDTransportButton *d_up_button;
RDTransportButton *d_down_button;
};
#endif // IMPORTCARTSWIDGET_H

View File

@ -42,6 +42,7 @@ SOURCES += edit_track.cpp
SOURCES += generate_log.cpp
SOURCES += importcartsmodel.cpp
SOURCES += importcartsview.cpp
SOURCES += importcartswidget.cpp
SOURCES += librarytableview.cpp
SOURCES += list_clocks.cpp
SOURCES += list_events.cpp
@ -72,6 +73,7 @@ HEADERS += generate_log.h
HEADERS += globals.h
HEADERS += importcartsmodel.h
HEADERS += importcartsview.h
HEADERS += importcartswidget.h
HEADERS += librarytableview.h
HEADERS += list_clocks.h
HEADERS += list_events.h