2021-03-25 Fred Gleason <fredg@paravelsystems.com>

* Modified the 'Time' buttons in 'RDMarkerDialog' to show currently
	available 'In' and 'Out' possibilities.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-03-25 12:25:04 -04:00
parent 1790af2a94
commit 1a00c868f2
5 changed files with 87 additions and 48 deletions

View File

@ -21344,3 +21344,6 @@
attributes.
2021-03-25 Fred Gleason <fredg@paravelsystems.com>
* Refactored layout of 'RDMarkerDialog'
2021-03-25 Fred Gleason <fredg@paravelsystems.com>
* Modified the 'Time' buttons in 'RDMarkerDialog' to show currently
available 'In' and 'Out' possibilities.

View File

@ -53,24 +53,33 @@ RDMarkerDialog::RDMarkerDialog(const QString &caption,int card,int port,
this,SLOT(amplitudeDownData()));
//
// Time
// Time Scaling Buttons
//
d_time_box=new QGroupBox(tr("Time"),this);
d_time_box->setFont(labelFont());
d_time_fullin_button=new QPushButton(tr("Full\nIn"),d_time_box);
d_time_fullin_button->setFont(buttonFont());
connect(d_time_fullin_button,SIGNAL(clicked()),this,SLOT(timeFullInData()));
connect(d_time_fullin_button,SIGNAL(clicked()),
d_marker_view,SLOT(maxShrinkTime()));
connect(d_marker_view,SIGNAL(canShrinkTimeChanged(bool)),
d_time_fullin_button,SLOT(setEnabled(bool)));
d_time_in_button=new RDTransportButton(RDTransportButton::Up,d_time_box);
connect(d_time_in_button,SIGNAL(clicked()),this,SLOT(timeInData()));
connect(d_time_in_button,SIGNAL(clicked()),d_marker_view,SLOT(shrinkTime()));
connect(d_marker_view,SIGNAL(canShrinkTimeChanged(bool)),
d_time_in_button,SLOT(setEnabled(bool)));
d_time_out_button=new RDTransportButton(RDTransportButton::Down,d_time_box);
connect(d_time_out_button,SIGNAL(clicked()),this,SLOT(timeOutData()));
connect(d_time_out_button,SIGNAL(clicked()),d_marker_view,SLOT(growTime()));
connect(d_marker_view,SIGNAL(canGrowTimeChanged(bool)),
d_time_out_button,SLOT(setEnabled(bool)));
d_time_fullout_button=new QPushButton(tr("Full\nOut"),d_time_box);
d_time_fullout_button->setFont(buttonFont());
connect(d_time_fullout_button,SIGNAL(clicked()),
d_marker_view,SLOT(setMaximumShrinkFactor()));
d_marker_view,SLOT(maxGrowTime()));
connect(d_marker_view,SIGNAL(canGrowTimeChanged(bool)),
d_time_fullout_button,SLOT(setEnabled(bool)));
/**************************************************************************
* Transport Section
@ -157,6 +166,10 @@ int RDMarkerDialog::exec(unsigned cartnum,int cutnum)
}
d_marker_view->
setSelectedMarkers(RDMarkerHandle::CutStart,RDMarkerHandle::CutEnd);
d_time_fullin_button->setEnabled(d_marker_view->canShrinkTime());
d_time_in_button->setEnabled(d_marker_view->canShrinkTime());
d_time_out_button->setEnabled(d_marker_view->canGrowTime());
d_time_fullout_button->setEnabled(d_marker_view->canGrowTime());
return QDialog::exec();
}
@ -174,27 +187,6 @@ void RDMarkerDialog::amplitudeDownData()
}
void RDMarkerDialog::timeFullInData()
{
d_marker_view->setShrinkFactor(1);
}
void RDMarkerDialog::timeInData()
{
int sf=d_marker_view->shrinkFactor();
if(sf>1) {
d_marker_view->setShrinkFactor(sf/2);
}
}
void RDMarkerDialog::timeOutData()
{
d_marker_view->setShrinkFactor(2*d_marker_view->shrinkFactor());
}
void RDMarkerDialog::okData()
{
d_marker_view->save();

View File

@ -74,9 +74,6 @@ class RDMarkerDialog : public RDDialog
private slots:
void amplitudeUpData();
void amplitudeDownData();
void timeFullInData();
void timeInData();
void timeOutData();
void okData();
void cancelData();

View File

@ -456,6 +456,18 @@ int RDMarkerView::shrinkFactor() const
}
bool RDMarkerView::canShrinkTime() const
{
return d_shrink_factor>1;
}
bool RDMarkerView::canGrowTime() const
{
return d_shrink_factor<d_max_shrink_factor;
}
int RDMarkerView::pointerValue(RDMarkerHandle::PointerRole role)
{
return d_pointers[role];
@ -663,21 +675,6 @@ void RDMarkerView::setAudioGain(int lvl)
}
void RDMarkerView::setShrinkFactor(int sf)
{
if((d_shrink_factor!=sf)&&(sf<=d_max_shrink_factor)) {
d_shrink_factor=sf;
WriteWave();
}
}
void RDMarkerView::setMaximumShrinkFactor()
{
setShrinkFactor(d_max_shrink_factor);
}
bool RDMarkerView::setCut(QString *err_msg,unsigned cartnum,int cutnum)
{
clear();
@ -736,6 +733,38 @@ void RDMarkerView::gotoEnd()
}
void RDMarkerView::maxShrinkTime()
{
if(canShrinkTime()) {
SetShrinkFactor(1);
}
}
void RDMarkerView::shrinkTime()
{
if(canShrinkTime()) {
SetShrinkFactor(d_shrink_factor/2);
}
}
void RDMarkerView::growTime()
{
if(canGrowTime()) {
SetShrinkFactor(d_shrink_factor*2);
}
}
void RDMarkerView::maxGrowTime()
{
if(canGrowTime()) {
SetShrinkFactor(d_max_shrink_factor);
}
}
void RDMarkerView::save()
{
QString sql;
@ -1107,13 +1136,13 @@ void RDMarkerView::wheelEvent(QWheelEvent *e)
if(d_wheel_angle>=360) {
if(shrinkFactor()>1) {
setShrinkFactor(shrinkFactor()/2);
SetShrinkFactor(shrinkFactor()/2);
}
d_wheel_angle=0;
}
if(d_wheel_angle<=-360) {
if(shrinkFactor()<d_max_shrink_factor) {
setShrinkFactor(shrinkFactor()*2);
SetShrinkFactor(shrinkFactor()*2);
}
d_wheel_angle=0;
}
@ -1132,6 +1161,17 @@ int RDMarkerView::Msec(int frame) const
}
void RDMarkerView::SetShrinkFactor(int sf)
{
if((d_shrink_factor!=sf)&&(sf<=d_max_shrink_factor)) {
d_shrink_factor=sf;
WriteWave();
emit canShrinkTimeChanged(canShrinkTime());
emit canGrowTimeChanged(canGrowTime());
}
}
bool RDMarkerView::LoadCutData()
{
QString sql;

View File

@ -91,6 +91,8 @@ class RDMarkerView : public RDWidget
int audioGain() const;
unsigned sampleRate() const;
int shrinkFactor() const;
bool canShrinkTime() const;
bool canGrowTime() const;
int pointerValue(RDMarkerHandle::PointerRole role);
RDMarkerHandle::PointerRole selectedMarker(RDMarkerHandle::PointerType type)
const;
@ -107,6 +109,8 @@ class RDMarkerView : public RDWidget
void pointerValueChanged(RDMarkerHandle::PointerRole role,int msec);
void selectedMarkersChanged(RDMarkerHandle::PointerRole start_role,
RDMarkerHandle::PointerRole end_role);
void canShrinkTimeChanged(bool state);
void canGrowTimeChanged(bool state);
public slots:
void setSelectedMarkers(RDMarkerHandle::PointerRole start_role,
@ -116,13 +120,15 @@ class RDMarkerView : public RDWidget
void trimStart(int dbfs);
void trimEnd(int dbfs);
void setAudioGain(int lvl);
void setShrinkFactor(int sf);
void setMaximumShrinkFactor();
bool setCut(QString *err_msg,unsigned cartnum,int cutnum);
void setCursorPosition(unsigned msec);
void gotoCursor();
void gotoHome();
void gotoEnd();
void maxShrinkTime();
void shrinkTime();
void growTime();
void maxGrowTime();
void save();
void clear();
@ -144,6 +150,7 @@ class RDMarkerView : public RDWidget
private:
int Frame(int msec) const;
int Msec(int frame) const;
void SetShrinkFactor(int sf);
void InterlockMarkerPair(RDMarkerHandle::PointerRole start_marker);
void InterlockFadeMarkerPair();
bool LoadCutData();