Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Kdenlive
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
259
Issues
259
List
Boards
Labels
Service Desk
Milestones
Merge Requests
14
Merge Requests
14
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Multimedia
Kdenlive
Commits
dbb3b68e
Commit
dbb3b68e
authored
Jul 28, 2020
by
Julius Künzel
Committed by
Jean-Baptiste Mardelle
Jul 28, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve audiomixer layout
parent
fcc99570
Pipeline
#28624
passed with stage
in 12 minutes and 44 seconds
Changes
6
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
45 additions
and
14 deletions
+45
-14
src/audiomixer/mixermanager.hpp
src/audiomixer/mixermanager.hpp
+1
-0
src/audiomixer/mixerwidget.cpp
src/audiomixer/mixerwidget.cpp
+34
-13
src/audiomixer/mixerwidget.hpp
src/audiomixer/mixerwidget.hpp
+1
-1
src/timeline2/model/timelineitemmodel.cpp
src/timeline2/model/timelineitemmodel.cpp
+1
-0
src/timeline2/model/timelineitemmodel.hpp
src/timeline2/model/timelineitemmodel.hpp
+1
-0
src/timeline2/view/timelinecontroller.cpp
src/timeline2/view/timelinecontroller.cpp
+7
-0
No files found.
src/audiomixer/mixermanager.hpp
View file @
dbb3b68e
...
...
@@ -66,6 +66,7 @@ signals:
void
purgeCache
();
void
clearMixers
();
void
updateRecVolume
();
void
showEffectStack
(
int
tid
);
protected:
std
::
unordered_map
<
int
,
std
::
shared_ptr
<
MixerWidget
>>
m_mixers
;
...
...
src/audiomixer/mixerwidget.cpp
View file @
dbb3b68e
...
...
@@ -169,9 +169,17 @@ void MixerWidget::buildUI(Mlt::Tractor *service, const QString &trackTag)
m_volumeSlider
->
setValue
(
fromDB
(
val
));
});
m_balanceDial
=
new
QDial
(
this
);
m_balanceDial
->
setRange
(
-
50
,
50
);
m_balanceDial
->
setValue
(
0
);
m_balanceSlider
=
new
QSlider
(
Qt
::
Horizontal
,
this
);
m_balanceSlider
->
setRange
(
-
50
,
50
);
m_balanceSlider
->
setValue
(
0
);
m_balanceSlider
->
setTickPosition
(
QSlider
::
TicksBelow
);
m_balanceSlider
->
setTickInterval
(
50
);
m_balanceSlider
->
setToolTip
(
i18n
(
"Balance"
));
QLabel
*
labelLeft
=
new
QLabel
(
i18n
(
"L"
),
this
);
labelLeft
->
setAlignment
(
Qt
::
AlignHCenter
);
QLabel
*
labelRight
=
new
QLabel
(
i18n
(
"R"
),
this
);
labelLeft
->
setAlignment
(
Qt
::
AlignHCenter
);
m_balanceSpin
=
new
QSpinBox
(
this
);
m_balanceSpin
->
setRange
(
-
50
,
50
);
...
...
@@ -199,7 +207,7 @@ void MixerWidget::buildUI(Mlt::Tractor *service, const QString &trackTag)
m_balanceFilter
=
fl
;
int
val
=
m_balanceFilter
->
get_double
(
"start"
)
*
100
-
50
;
m_balanceSpin
->
setValue
(
val
);
m_balance
Dial
->
setValue
(
val
);
m_balance
Slider
->
setValue
(
val
);
}
}
// Build default filters if not found
...
...
@@ -237,7 +245,7 @@ void MixerWidget::buildUI(Mlt::Tractor *service, const QString &trackTag)
m_muteAction
->
setActiveIcon
(
QIcon
::
fromTheme
(
QStringLiteral
(
"kdenlive-hide-audio"
)));
m_muteAction
->
setInactiveIcon
(
QIcon
::
fromTheme
(
QStringLiteral
(
"kdenlive-show-audio"
)));
connect
(
m_balance
Dial
,
&
QDial
::
valueChanged
,
m_balanceSpin
,
&
QSpinBox
::
setValue
);
connect
(
m_balance
Slider
,
&
QSlider
::
valueChanged
,
m_balanceSpin
,
&
QSpinBox
::
setValue
);
connect
(
m_muteAction
,
&
KDualAction
::
activeChangedByUser
,
this
,
[
&
](
bool
active
)
{
if
(
m_tid
==
-
1
)
{
...
...
@@ -298,6 +306,14 @@ void MixerWidget::buildUI(Mlt::Tractor *service, const QString &trackTag)
});
}
QToolButton
*
showEffects
=
new
QToolButton
(
this
);
showEffects
->
setIcon
(
QIcon
::
fromTheme
(
"autocorrection"
));
showEffects
->
setToolTip
(
i18n
(
"Open Effect Stack"
));
showEffects
->
setAutoRaise
(
true
);
connect
(
showEffects
,
&
QToolButton
::
clicked
,
this
,
[
&
]()
{
emit
m_manager
->
showEffectStack
(
m_tid
);
});
connect
(
m_volumeSlider
,
&
QSlider
::
valueChanged
,
this
,
[
&
](
int
value
)
{
QSignalBlocker
bk
(
m_volumeSpin
);
if
(
m_recording
)
{
...
...
@@ -322,8 +338,8 @@ void MixerWidget::buildUI(Mlt::Tractor *service, const QString &trackTag)
}
});
connect
(
m_balanceSpin
,
static_cast
<
void
(
QSpinBox
::*
)(
int
)
>
(
&
QSpinBox
::
valueChanged
),
this
,
[
&
](
int
value
)
{
QSignalBlocker
bk
(
m_balance
Dial
);
m_balance
Dial
->
setValue
(
value
);
QSignalBlocker
bk
(
m_balance
Slider
);
m_balance
Slider
->
setValue
(
value
);
if
(
m_balanceFilter
!=
nullptr
)
{
m_balanceFilter
->
set
(
"start"
,
(
value
+
50
)
/
100.
);
m_balanceFilter
->
set
(
"disable"
,
value
==
0
?
1
:
0
);
...
...
@@ -349,9 +365,14 @@ void MixerWidget::buildUI(Mlt::Tractor *service, const QString &trackTag)
if
(
m_record
)
{
buttonslay
->
addWidget
(
m_record
);
}
buttonslay
->
addWidget
(
showEffects
);
lay
->
addLayout
(
buttonslay
);
lay
->
addWidget
(
m_balanceDial
);
lay
->
addWidget
(
m_balanceSpin
);
QGridLayout
*
balancelay
=
new
QGridLayout
;
balancelay
->
addWidget
(
m_balanceSlider
,
0
,
0
,
1
,
3
);
balancelay
->
addWidget
(
labelLeft
,
1
,
0
,
1
,
1
);
balancelay
->
addWidget
(
m_balanceSpin
,
1
,
1
,
1
,
1
);
balancelay
->
addWidget
(
labelRight
,
1
,
2
,
1
,
1
);
lay
->
addLayout
(
balancelay
);
QHBoxLayout
*
hlay
=
new
QHBoxLayout
;
hlay
->
addWidget
(
m_audioMeterWidget
.
get
());
hlay
->
addWidget
(
m_volumeSlider
);
...
...
@@ -368,7 +389,7 @@ void MixerWidget::mousePressEvent(QMouseEvent *event)
{
if
(
event
->
button
()
==
Qt
::
RightButton
)
{
QWidget
*
child
=
childAt
(
event
->
pos
());
if
(
child
==
m_balance
Dial
)
{
if
(
child
==
m_balance
Slider
)
{
m_balanceSpin
->
setValue
(
0
);
}
else
if
(
child
==
m_volumeSlider
)
{
m_volumeSlider
->
setValue
(
60
);
...
...
@@ -385,7 +406,7 @@ void MixerWidget::setMute(bool mute)
m_volumeSpin
->
setEnabled
(
!
mute
);
m_audioMeterWidget
->
setEnabled
(
!
mute
);
m_balanceSpin
->
setEnabled
(
!
mute
);
m_balance
Dial
->
setEnabled
(
!
mute
);
m_balance
Slider
->
setEnabled
(
!
mute
);
updateLabel
();
}
...
...
@@ -471,14 +492,14 @@ void MixerWidget::setRecordState(bool recording)
QSignalBlocker
bk2
(
m_volumeSlider
);
if
(
m_recording
)
{
connect
(
pCore
->
getAudioDevice
(),
&
MediaCapture
::
audioLevels
,
this
,
&
MixerWidget
::
gotRecLevels
);
m_balance
Dial
->
setEnabled
(
false
);
m_balance
Slider
->
setEnabled
(
false
);
m_balanceSpin
->
setEnabled
(
false
);
m_volumeSpin
->
setRange
(
0
,
100
);
m_volumeSpin
->
setSuffix
(
QStringLiteral
(
"%"
));
m_volumeSpin
->
setValue
(
KdenliveSettings
::
audiocapturevolume
());
m_volumeSlider
->
setValue
(
KdenliveSettings
::
audiocapturevolume
());
}
else
{
m_balance
Dial
->
setEnabled
(
true
);
m_balance
Slider
->
setEnabled
(
true
);
m_balanceSpin
->
setEnabled
(
true
);
int
level
=
m_levelFilter
->
get_int
(
"level"
);
disconnect
(
pCore
->
getAudioDevice
(),
&
MediaCapture
::
audioLevels
,
this
,
&
MixerWidget
::
gotRecLevels
);
...
...
src/audiomixer/mixerwidget.hpp
View file @
dbb3b68e
...
...
@@ -91,7 +91,7 @@ protected:
int
m_channels
;
KDualAction
*
m_muteAction
;
QSpinBox
*
m_balanceSpin
;
Q
Dial
*
m_balanceDial
;
Q
Slider
*
m_balanceSlider
;
QDoubleSpinBox
*
m_volumeSpin
;
int
m_maxLevels
;
...
...
src/timeline2/model/timelineitemmodel.cpp
View file @
dbb3b68e
...
...
@@ -660,6 +660,7 @@ void TimelineItemModel::buildTrackCompositing(bool rebuild)
field
->
plant_transition
(
*
transition
.
get
(),
0
,
trackPos
);
if
(
hasMixer
)
{
pCore
->
mixer
()
->
registerTrack
((
*
it
)
->
getId
(),
(
*
it
)
->
getTrackService
(),
getTrackTagById
((
*
it
)
->
getId
()));
connect
(
pCore
->
mixer
(),
&
MixerManager
::
showEffectStack
,
this
,
&
TimelineItemModel
::
showTrackEffectStack
);
}
}
++
it
;
...
...
src/timeline2/model/timelineitemmodel.hpp
View file @
dbb3b68e
...
...
@@ -119,5 +119,6 @@ protected:
signals:
/** @brief Triggered when a video track visibility changed */
void
trackVisibilityChanged
();
void
showTrackEffectStack
(
int
tid
);
};
#endif
src/timeline2/view/timelinecontroller.cpp
View file @
dbb3b68e
...
...
@@ -111,6 +111,13 @@ void TimelineController::setModel(std::shared_ptr<TimelineItemModel> model)
QMetaObject
::
invokeMethod
(
m_root
,
"checkDeletion"
,
Qt
::
QueuedConnection
,
Q_ARG
(
QVariant
,
id
));
}
});
connect
(
m_model
.
get
(),
&
TimelineItemModel
::
showTrackEffectStack
,
this
,
[
&
](
int
tid
)
{
if
(
tid
>
-
1
)
{
showTrackAsset
(
tid
);
}
else
{
showMasterEffects
();
}
});
connect
(
m_model
.
get
(),
&
TimelineItemModel
::
requestMonitorRefresh
,
[
&
]()
{
pCore
->
requestMonitorRefresh
();
});
connect
(
m_model
.
get
(),
&
TimelineModel
::
invalidateZone
,
this
,
&
TimelineController
::
invalidateZone
,
Qt
::
DirectConnection
);
connect
(
m_model
.
get
(),
&
TimelineModel
::
durationUpdated
,
this
,
&
TimelineController
::
checkDuration
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment