Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions frontend/cmake/ui-components.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ target_sources(
components/UIValidation.hpp
components/UrlPushButton.cpp
components/UrlPushButton.hpp
components/VerticalLabel.cpp
components/VerticalLabel.hpp
components/VisibilityItemDelegate.cpp
components/VisibilityItemDelegate.hpp
components/VisibilityItemWidget.cpp
Expand Down
8 changes: 4 additions & 4 deletions frontend/components/OBSSourceLabel.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,18 @@

#include <obs.hpp>

#include <QLabel>
#include <components/VerticalLabel.hpp>

class OBSSourceLabel : public QLabel {
class OBSSourceLabel : public VerticalLabel {
Q_OBJECT;

public:
OBSSignal renamedSignal;
OBSSignal removedSignal;
OBSSignal destroyedSignal;

OBSSourceLabel(const obs_source_t *source, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
: QLabel(obs_source_get_name(source), parent, f),
OBSSourceLabel(const obs_source_t *source, QWidget *parent = nullptr)
: VerticalLabel(QString(obs_source_get_name(source)), parent),
renamedSignal(obs_source_get_signal_handler(source), "rename", &OBSSourceLabel::SourceRenamed, this),
removedSignal(obs_source_get_signal_handler(source), "remove", &OBSSourceLabel::SourceRemoved, this),
destroyedSignal(obs_source_get_signal_handler(source), "destroy", &OBSSourceLabel::SourceDestroyed,
Expand Down
41 changes: 41 additions & 0 deletions frontend/components/VerticalLabel.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#include "VerticalLabel.hpp"
#include <QStylePainter>

#include "moc_VerticalLabel.cpp"

VerticalLabel::VerticalLabel(const QString &text, QWidget *parent) : QLabel(text, parent) {}

void VerticalLabel::ShowNormal()
{
vertical = false;
}

void VerticalLabel::ShowVertical()
{
vertical = true;
}

void VerticalLabel::paintEvent(QPaintEvent *event)
{
if (!vertical) {
QLabel::paintEvent(event);
return;
}

QStylePainter painter(this);
painter.translate(0, height());
painter.rotate(270);
painter.drawText(QRect(QPoint(0, 0), QLabel::sizeHint()), alignment(), text());
}

QSize VerticalLabel::minimumSizeHint() const
{
QSize s = QLabel::minimumSizeHint();
return QSize(vertical ? s.height() : s.width(), vertical ? s.width() : s.height());
}

QSize VerticalLabel::sizeHint() const
{
QSize s = QLabel::sizeHint();
return QSize(vertical ? s.height() : s.width(), vertical ? s.width() : s.height());
}
21 changes: 21 additions & 0 deletions frontend/components/VerticalLabel.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#pragma once

#include <QLabel>
#include <QPaintEvent>

class VerticalLabel : public QLabel {
Q_OBJECT

private:
bool vertical = false;

public:
VerticalLabel(const QString &text, QWidget *parent = nullptr);
void ShowNormal();
void ShowVertical();

protected:
virtual void paintEvent(QPaintEvent *event) override;
virtual QSize sizeHint() const override;
virtual QSize minimumSizeHint() const override;
};
41 changes: 8 additions & 33 deletions frontend/data/themes/Yami.obt
Original file line number Diff line number Diff line change
Expand Up @@ -1341,7 +1341,6 @@ QSlider::handle:disabled {
height: var(--icon_base);
background-color: var(--button_bg);
padding: var(--padding_base_border) var(--padding_base_border);
margin: 0px;
border: 1px solid var(--button_border);
border-radius: var(--border_radius);
icon-size: var(--icon_base);
Expand Down Expand Up @@ -1373,24 +1372,17 @@ VolControl {

VolControl QLabel {
font-size: var(--font_small);
margin: var(--spacing_small) 0px;
}

VolControl #volLabel {
padding: var(--padding_base) 0px var(--padding_base);
text-align: center;
font-size: var(--font_base);
color: var(--text_muted);
}

/* Horizontal Mixer */
#hMixerScrollArea VolControl {
padding: 0px var(--padding_xlarge) var(--padding_base);
border-bottom: 1px solid var(--border_color);
}

#hMixerScrollArea VolControl QSlider {
margin: 0px 0px var(--padding_base);
padding: var(--padding_container);
}

#hMixerScrollArea VolControl QSlider::groove:horizontal {
Expand All @@ -1404,46 +1396,29 @@ VolControl #volLabel {
}

#vMixerScrollArea VolControl {
padding: var(--padding_container) 0px var(--padding_container);
border-right: 1px solid var(--border_color);
padding: var(--padding_container);
}

#vMixerScrollArea VolControl QSlider {
width: var(--volume_slider_box);
margin: 0px var(--padding_xlarge);
}

#vMixerScrollArea VolControl #volLabel {
padding: var(--padding_base) 0px var(--padding_base);
min-width: var(--volume_slider_label);
margin-left: var(--padding_xlarge);
text-align: center;
}

#vMixerScrollArea VolControl QSlider::groove:vertical {
background: var(--bg_window);
width: var(--volume_slider);
}

#vMixerScrollArea VolControl #volMeterFrame {
padding: var(--padding_large) var(--padding_xlarge) var(--padding_large) 0px;
}

#vMixerScrollArea VolControl QLabel {
padding: 0px var(--padding_large);
}

#vMixerScrollArea VolControl QPushButton {
margin-left: var(--spacing_base);
margin-right: var(--padding_xlarge);
VolumeMeter {
background: transparent;
}

#vMixerScrollArea VolControl .indicator-mute {
margin-left: var(--padding_xlarge);
VolControl QWidget {
margin: 0px;
}

VolumeMeter {
background: transparent;
VolControl .indicator-expand {
margin: 0px;
}

VolumeMeter {
Expand Down
4 changes: 0 additions & 4 deletions frontend/widgets/OBSBasic.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1628,10 +1628,6 @@ private slots:
void ToggleMixerLayout(bool vertical);

private slots:
void HideAudioControl();
void UnhideAllAudioControls();
void ToggleHideMixer();

void on_vMixerScrollArea_customContextMenuRequested();
void on_hMixerScrollArea_customContextMenuRequested();

Expand Down
10 changes: 1 addition & 9 deletions frontend/widgets/OBSBasic_SceneItems.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,15 +161,13 @@ void OBSBasic::MixerRenameSource()

void OBSBasic::ActivateAudioSource(OBSSource source)
{
if (SourceMixerHidden(source))
return;
if (!obs_source_active(source))
return;
if (!obs_source_audio_active(source))
return;

bool vertical = config_get_bool(App()->GetUserConfig(), "BasicWindow", "VerticalVolControl");
VolControl *vol = new VolControl(source, true, vertical);
VolControl *vol = new VolControl(source, vertical, SourceMixerHidden(source));

vol->EnableSlider(!SourceVolumeLocked(source));

Expand Down Expand Up @@ -653,12 +651,6 @@ void OBSBasic::CreateSourcePopupMenu(int idx, bool preview)
colorSelect = new ColorSelect(colorMenu);
popup.addMenu(AddBackgroundColorMenu(colorMenu, colorWidgetAction, colorSelect, sceneItem));

if (hasAudio) {
QAction *actionHideMixer =
popup.addAction(QTStr("HideMixer"), this, &OBSBasic::ToggleHideMixer);
actionHideMixer->setCheckable(true);
actionHideMixer->setChecked(SourceMixerHidden(source));
}
popup.addSeparator();
}

Expand Down
66 changes: 0 additions & 66 deletions frontend/widgets/OBSBasic_VolControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,56 +69,6 @@ void OBSBasic::RefreshVolumeColors()
}
}

void OBSBasic::HideAudioControl()
{
QAction *action = reinterpret_cast<QAction *>(sender());
VolControl *vol = action->property("volControl").value<VolControl *>();
obs_source_t *source = vol->GetSource();

if (!SourceMixerHidden(source)) {
SetSourceMixerHidden(source, true);
DeactivateAudioSource(source);
}
}

void OBSBasic::UnhideAllAudioControls()
{
auto UnhideAudioMixer = [this](obs_source_t *source) /* -- */
{
if (!obs_source_active(source))
return true;
if (!SourceMixerHidden(source))
return true;

SetSourceMixerHidden(source, false);
ActivateAudioSource(source);
return true;
};

using UnhideAudioMixer_t = decltype(UnhideAudioMixer);

auto PreEnum = [](void *data, obs_source_t *source) -> bool /* -- */
{
return (*reinterpret_cast<UnhideAudioMixer_t *>(data))(source);
};

obs_enum_sources(PreEnum, &UnhideAudioMixer);
}

void OBSBasic::ToggleHideMixer()
{
OBSSceneItem item = GetCurrentSceneItem();
OBSSource source = obs_sceneitem_get_source(item);

if (!SourceMixerHidden(source)) {
SetSourceMixerHidden(source, true);
DeactivateAudioSource(source);
} else {
SetSourceMixerHidden(source, false);
ActivateAudioSource(source);
}
}

void OBSBasic::LockVolumeControl(bool lock)
{
QAction *action = reinterpret_cast<QAction *>(sender());
Expand All @@ -141,8 +91,6 @@ void OBSBasic::VolControlContextMenu()
lockAction.setCheckable(true);
lockAction.setChecked(SourceVolumeLocked(vol->GetSource()));

QAction hideAction(QTStr("Hide"), this);
QAction unhideAllAction(QTStr("UnhideAll"), this);
QAction mixerRenameAction(QTStr("Rename"), this);

QAction copyFiltersAction(QTStr("Copy.Filters"), this);
Expand All @@ -159,8 +107,6 @@ void OBSBasic::VolControlContextMenu()

/* ------------------- */

connect(&hideAction, &QAction::triggered, this, &OBSBasic::HideAudioControl, Qt::DirectConnection);
connect(&unhideAllAction, &QAction::triggered, this, &OBSBasic::UnhideAllAudioControls, Qt::DirectConnection);
connect(&lockAction, &QAction::toggled, this, &OBSBasic::LockVolumeControl, Qt::DirectConnection);
connect(&mixerRenameAction, &QAction::triggered, this, &OBSBasic::MixerRenameSource, Qt::DirectConnection);

Expand All @@ -181,7 +127,6 @@ void OBSBasic::VolControlContextMenu()

/* ------------------- */

hideAction.setProperty("volControl", QVariant::fromValue<VolControl *>(vol));
lockAction.setProperty("volControl", QVariant::fromValue<VolControl *>(vol));
mixerRenameAction.setProperty("volControl", QVariant::fromValue<VolControl *>(vol));

Expand All @@ -200,8 +145,6 @@ void OBSBasic::VolControlContextMenu()
vol->SetContextMenu(&popup);
popup.addAction(&lockAction);
popup.addSeparator();
popup.addAction(&unhideAllAction);
popup.addAction(&hideAction);
popup.addAction(&mixerRenameAction);
popup.addSeparator();
popup.addAction(&copyFiltersAction);
Expand Down Expand Up @@ -231,8 +174,6 @@ void OBSBasic::on_vMixerScrollArea_customContextMenuRequested()

void OBSBasic::StackedMixerAreaContextMenuRequested()
{
QAction unhideAllAction(QTStr("UnhideAll"), this);

QAction advPropAction(QTStr("Basic.MainMenu.Edit.AdvAudio"), this);

QAction toggleControlLayoutAction(QTStr("VerticalLayout"), this);
Expand All @@ -242,8 +183,6 @@ void OBSBasic::StackedMixerAreaContextMenuRequested()

/* ------------------- */

connect(&unhideAllAction, &QAction::triggered, this, &OBSBasic::UnhideAllAudioControls, Qt::DirectConnection);

connect(&advPropAction, &QAction::triggered, this, &OBSBasic::on_actionAdvAudioProperties_triggered,
Qt::DirectConnection);

Expand All @@ -255,7 +194,6 @@ void OBSBasic::StackedMixerAreaContextMenuRequested()
/* ------------------- */

QMenu popup;
popup.addAction(&unhideAllAction);
popup.addSeparator();
popup.addAction(&toggleControlLayoutAction);
popup.addSeparator();
Expand Down Expand Up @@ -299,9 +237,6 @@ void OBSBasic::on_actionMixerToolbarAdvAudio_triggered()

void OBSBasic::on_actionMixerToolbarMenu_triggered()
{
QAction unhideAllAction(QTStr("UnhideAll"), this);
connect(&unhideAllAction, &QAction::triggered, this, &OBSBasic::UnhideAllAudioControls, Qt::DirectConnection);

QAction toggleControlLayoutAction(QTStr("VerticalLayout"), this);
toggleControlLayoutAction.setCheckable(true);
toggleControlLayoutAction.setChecked(
Expand All @@ -310,7 +245,6 @@ void OBSBasic::on_actionMixerToolbarMenu_triggered()
Qt::DirectConnection);

QMenu popup;
popup.addAction(&unhideAllAction);
popup.addSeparator();
popup.addAction(&toggleControlLayoutAction);
popup.exec(QCursor::pos());
Expand Down
Loading
Loading