Skip to content

Commit

Permalink
ui: moved common intensity override code into VCWidget class
Browse files Browse the repository at this point in the history
  • Loading branch information
mcallegari committed Aug 13, 2017
1 parent 2340ed6 commit ab1651f
Show file tree
Hide file tree
Showing 14 changed files with 43 additions and 83 deletions.
5 changes: 5 additions & 0 deletions engine/src/function.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1162,6 +1162,11 @@ bool Function::startedAsChild() const
return false;
}

int Function::invalidAttributeId()
{
return -1;
}

bool Function::stopAndWait()
{
QMutexLocker locker(&m_stopMutex);
Expand Down
2 changes: 2 additions & 0 deletions engine/src/function.h
Original file line number Diff line number Diff line change
Expand Up @@ -834,6 +834,8 @@ public slots:
LastWins = (1 << 1) /** The original attribute value is overridden by the last requested override value */
};

static int invalidAttributeId();

/**
* Register a new attribute for this function.
* If the attribute already exists, it will be overwritten.
Expand Down
6 changes: 1 addition & 5 deletions ui/src/virtualconsole/vcbutton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ VCButton::VCButton(QWidget* parent, Doc* doc) : VCWidget(parent, doc)

/* No function is initially attached to the button */
m_function = Function::invalidId();
m_intensityOverrideId = -1;

setType(VCWidget::ButtonWidget);
setCaption(QString());
Expand Down Expand Up @@ -404,10 +403,7 @@ void VCButton::adjustFunctionIntensity(Function *f, qreal value)
{
qreal finalValue = isStartupIntensityEnabled() ? startupIntensity() * value : value;

if (m_intensityOverrideId == -1)
m_intensityOverrideId = f->requestAttributeOverride(Function::Intensity, finalValue);
else
f->adjustAttribute(finalValue, m_intensityOverrideId);
VCWidget::adjustFunctionIntensity(f, finalValue);
}

void VCButton::notifyFunctionStarting(quint32 fid, qreal intensity)
Expand Down
3 changes: 1 addition & 2 deletions ui/src/virtualconsole/vcbutton.h
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ public slots:
*/
quint32 function() const;

/** @reimp */
void adjustFunctionIntensity(Function *f, qreal value);

/** @reimp */
Expand All @@ -198,8 +199,6 @@ protected slots:
protected:
/** ID of the Function that this button is controlling */
quint32 m_function;
/** The intensity attribute override ID */
int m_intensityOverrideId;

/*********************************************************************
* Button state
Expand Down
9 changes: 1 addition & 8 deletions ui/src/virtualconsole/vcbuttonproperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ void VCButtonProperties::slotSetFunction(quint32 fid)
{
m_function = fid;
Function* func = m_doc->function(m_function);
m_attributesList->clear();

if (func == NULL)
{
m_functionEdit->setText(tr("No function"));
Expand All @@ -136,13 +136,6 @@ void VCButtonProperties::slotSetFunction(quint32 fid)
m_functionEdit->setText(func->name());
if (m_nameEdit->text().simplified().contains(QString::number(m_button->id())))
m_nameEdit->setText(func->name());

foreach(Attribute attr, func->attributes())
{
QListWidgetItem *item = new QListWidgetItem(attr.m_name);
//item->setCheckState(Qt::Checked);
m_attributesList->addItem(item);
}
}
}

Expand Down
25 changes: 3 additions & 22 deletions ui/src/virtualconsole/vcbuttonproperties.ui
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@

Copyright (c) 2015 Massimo Callegari

Licensed under the Apache License, Version 2.0 (the "License");
Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0.txt

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Expand All @@ -25,7 +25,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>445</width>
<width>512</width>
<height>541</height>
</rect>
</property>
Expand Down Expand Up @@ -207,25 +207,6 @@
</layout>
</widget>
</item>
<item row="0" column="1">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Attributes</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QListWidget" name="m_attributesList">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="m_generalGroup">
<property name="sizePolicy">
Expand Down
13 changes: 2 additions & 11 deletions ui/src/virtualconsole/vccuelist.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,6 @@ const QString cfLabelNoStyle =

VCCueList::VCCueList(QWidget* parent, Doc* doc) : VCWidget(parent, doc)
, m_chaserID(Function::invalidId())
, m_intensityOverrideId(-1)
, m_nextPrevBehavior(DefaultRunFirst)
, m_playbackLayout(PlayPauseStop)
, m_timer(NULL)
Expand Down Expand Up @@ -408,14 +407,6 @@ Chaser *VCCueList::chaser()
return chaser;
}

void VCCueList::adjustChaserIntensity(Chaser *ch, qreal value)
{
if (m_intensityOverrideId == -1)
m_intensityOverrideId = ch->requestAttributeOverride(Function::Intensity, value);
else
ch->adjustAttribute(value, m_intensityOverrideId);
}

void VCCueList::updateStepList()
{
m_listIsUpdating = true;
Expand Down Expand Up @@ -952,7 +943,7 @@ void VCCueList::startChaser(int startIndex)
return;
ch->setStepIndex(startIndex);
ch->setStartIntensity(getPrimaryIntensity());
adjustChaserIntensity(ch, intensity());
adjustFunctionIntensity(ch, intensity());
ch->start(m_doc->masterTimer(), functionParent());
emit functionStarting(m_chaserID);
}
Expand Down Expand Up @@ -1408,7 +1399,7 @@ void VCCueList::adjustIntensity(qreal val)
Chaser* ch = chaser();
if (ch != NULL)
{
adjustChaserIntensity(ch, val);
adjustFunctionIntensity(ch, val);

// Refresh intensity of current steps
if (!ch->stopped() && slidersMode() == Crossfade)
Expand Down
4 changes: 0 additions & 4 deletions ui/src/virtualconsole/vccuelist.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,6 @@ class VCCueList : public VCWidget
/** Get the chaser function that is used as cue list steps */
Chaser *chaser();

void adjustChaserIntensity(Chaser *ch, qreal value);

public:
/** Get the currently selected item index, otherwise 0 */
int getCurrentIndex();
Expand Down Expand Up @@ -243,8 +241,6 @@ private slots:
private:
/** ID of the Chaser this Cue List will be controlling */
quint32 m_chaserID;
/** The intensity attribute override ID */
int m_intensityOverrideId;

NextPrevBehavior m_nextPrevBehavior;
PlaybackLayout m_playbackLayout;
Expand Down
15 changes: 3 additions & 12 deletions ui/src/virtualconsole/vcmatrix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ VCMatrix::VCMatrix(QWidget *parent, Doc *doc)
: VCWidget(parent, doc)
, m_sliderExternalMovement(false)
, m_matrixID(Function::invalidId())
, m_intensityOverrideId(-1)
, m_instantApply(true)
, m_visibilityMask(VCMatrix::defaultVisibilityMask())
{
Expand Down Expand Up @@ -254,7 +253,7 @@ void VCMatrix::slotSliderMoved(int value)
if (function->stopped() == false)
{
function->stop(functionParent());
m_intensityOverrideId = -1;
resetIntensityOverrideAttribute();
}
}
else
Expand Down Expand Up @@ -425,7 +424,7 @@ void VCMatrix::notifyFunctionStarting(quint32 fid, qreal functionIntensity)
if (value == 0 && !function->stopped())
{
function->stop(functionParent());
m_intensityOverrideId = -1;
resetIntensityOverrideAttribute();
}
}
}
Expand All @@ -435,7 +434,7 @@ void VCMatrix::slotFunctionStopped()
{
m_slider->blockSignals(true);
m_slider->setValue(0);
m_intensityOverrideId = -1;
resetIntensityOverrideAttribute();
m_slider->blockSignals(false);
}

Expand Down Expand Up @@ -585,14 +584,6 @@ FunctionParent VCMatrix::functionParent() const
return FunctionParent(FunctionParent::ManualVCWidget, id());
}

void VCMatrix::adjustFunctionIntensity(Function *f, qreal value)
{
if (m_intensityOverrideId == -1)
m_intensityOverrideId = f->requestAttributeOverride(Function::Intensity, value);
else
f->adjustAttribute(value, m_intensityOverrideId);
}

/*********************************************************************
* Instant changes apply
*********************************************************************/
Expand Down
4 changes: 0 additions & 4 deletions ui/src/virtualconsole/vcmatrix.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,13 +160,9 @@ private slots:
private:
FunctionParent functionParent() const;

void adjustFunctionIntensity(Function *f, qreal value);

private:
/** ID of the RGB Matrix that this widget is controlling */
quint32 m_matrixID;
/** The intensity attribute override ID */
int m_intensityOverrideId;
/** timer for updating the controls */
QTimer* m_updateTimer;

Expand Down
11 changes: 1 addition & 10 deletions ui/src/virtualconsole/vcslider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ VCSlider::VCSlider(QWidget* parent, Doc* doc) : VCWidget(parent, doc)
m_monitorValue = 0;

m_playbackFunction = Function::invalidId();
m_intensityOverrideId = -1;
m_playbackValue = 0;
m_playbackChangeCounter = 0;

Expand Down Expand Up @@ -885,14 +884,6 @@ void VCSlider::notifyFunctionStarting(quint32 fid, qreal functionIntensity)
}
}

void VCSlider::adjustFunctionIntensity(Function *f, qreal value)
{
if (m_intensityOverrideId == -1)
m_intensityOverrideId = f->requestAttributeOverride(Function::Intensity, value);
else
f->adjustAttribute(value, m_intensityOverrideId);
}

void VCSlider::slotPlaybackFunctionRunning(quint32 fid)
{
Q_UNUSED(fid);
Expand Down Expand Up @@ -1126,7 +1117,7 @@ void VCSlider::writeDMXPlayback(MasterTimer* timer, QList<Universe *> ua)
if (function->stopped() == false)
{
function->stop(functionParent());
m_intensityOverrideId = -1;
resetIntensityOverrideAttribute();
}
}
else
Expand Down
5 changes: 0 additions & 5 deletions ui/src/virtualconsole/vcslider.h
Original file line number Diff line number Diff line change
Expand Up @@ -373,18 +373,13 @@ protected slots:
/** @reimp */
virtual void notifyFunctionStarting(quint32 fid, qreal intensity);

protected:
void adjustFunctionIntensity(Function *f, qreal value);

protected slots:
void slotPlaybackFunctionRunning(quint32 fid);
void slotPlaybackFunctionStopped(quint32 fid);
void slotPlaybackFunctionIntensityChanged(int attrIndex, qreal fraction);

protected:
quint32 m_playbackFunction;
/** The intensity attribute override ID */
int m_intensityOverrideId;
uchar m_playbackValue;
int m_playbackChangeCounter;
QMutex m_playbackValueMutex;
Expand Down
17 changes: 17 additions & 0 deletions ui/src/virtualconsole/vcwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ VCWidget::VCWidget(QWidget* parent, Doc* doc)
, m_page(0)
, m_allowChildren(false)
, m_allowResize(true)
, m_intensityOverrideId(Function::invalidAttributeId())
, m_intensity(1.0)
, m_liveEdit(VirtualConsole::instance()->liveEdit())
{
Expand Down Expand Up @@ -502,6 +503,22 @@ bool VCWidget::allowResize() const
return m_allowResize;
}

void VCWidget::adjustFunctionIntensity(Function *f, qreal value)
{
if (f == NULL)
return;

if (m_intensityOverrideId == Function::invalidAttributeId())
m_intensityOverrideId = f->requestAttributeOverride(Function::Intensity, value);
else
f->adjustAttribute(value, m_intensityOverrideId);
}

void VCWidget::resetIntensityOverrideAttribute()
{
m_intensityOverrideId = Function::invalidAttributeId();
}

/*****************************************************************************
* Properties
*****************************************************************************/
Expand Down
7 changes: 7 additions & 0 deletions ui/src/virtualconsole/vcwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -345,13 +345,20 @@ class VCWidget : public QWidget
virtual void notifyFunctionStarting(quint32 fid, qreal intensity)
{ Q_UNUSED(fid); Q_UNUSED(intensity); }

virtual void adjustFunctionIntensity(Function *f, qreal value);

void resetIntensityOverrideAttribute();

signals:
/** Signal emitted when a VCWidget controlling a Function has been
* requested to start the Function.
* At the moment this is used by a restriceted number of widgets (see above)
*/
void functionStarting(quint32 fid, qreal intensity = 1.0);

protected:
int m_intensityOverrideId;

/*********************************************************************
* Properties
*********************************************************************/
Expand Down

0 comments on commit ab1651f

Please sign in to comment.