Skip to content

Commit cf06745

Browse files
committed
frontend: Adjust source context bar
1 parent 1388490 commit cf06745

26 files changed

+1601
-1036
lines changed

frontend/components/BrowserToolbar.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ BrowserToolbar::BrowserToolbar(QWidget *parent, OBSSource source)
1111

1212
BrowserToolbar::~BrowserToolbar() {}
1313

14+
void BrowserToolbar::on_interactButton_clicked()
15+
{
16+
emit interactClicked();
17+
}
18+
1419
void BrowserToolbar::on_refresh_clicked()
1520
{
1621
OBSSource source = GetSource();

frontend/components/BrowserToolbar.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ class BrowserToolbar : public SourceToolbar {
1313
BrowserToolbar(QWidget *parent, OBSSource source);
1414
~BrowserToolbar();
1515

16+
signals:
17+
void interactClicked();
18+
1619
public slots:
1720
void on_refresh_clicked();
21+
void on_interactButton_clicked();
1822
};

frontend/components/ColorSourceToolbar.cpp

+12-9
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "ui_color-source-toolbar.h"
33

44
#include <QColorDialog>
5+
#include <QStyle>
56

67
#include "moc_ColorSourceToolbar.cpp"
78

@@ -37,17 +38,19 @@ ColorSourceToolbar::~ColorSourceToolbar() {}
3738
void ColorSourceToolbar::UpdateColor()
3839
{
3940
QPalette palette = QPalette(color);
40-
ui->color->setFrameStyle(QFrame::Sunken | QFrame::Panel);
41-
ui->color->setText(color.name(QColor::HexRgb));
42-
ui->color->setPalette(palette);
43-
ui->color->setStyleSheet(QString("background-color :%1; color: %2;")
44-
.arg(palette.color(QPalette::Window).name(QColor::HexRgb))
45-
.arg(palette.color(QPalette::WindowText).name(QColor::HexRgb)));
46-
ui->color->setAutoFillBackground(true);
47-
ui->color->setAlignment(Qt::AlignCenter);
41+
ui->colorPreview->setText(color.name(QColor::HexRgb));
42+
ui->colorPreview->setPalette(palette);
43+
ui->colorPreview->setStyleSheet(QString("background-color :%1; color: %2;")
44+
.arg(palette.color(QPalette::Window).name(QColor::HexRgb))
45+
.arg(palette.color(QPalette::WindowText).name(QColor::HexRgb)));
46+
ui->colorPreview->setAutoFillBackground(true);
47+
//ui->colorPreview->setAlignment(Qt::AlignCenter);
48+
49+
ui->colorPreview->style()->unpolish(ui->colorPreview);
50+
ui->colorPreview->style()->polish(ui->colorPreview);
4851
}
4952

50-
void ColorSourceToolbar::on_choose_clicked()
53+
void ColorSourceToolbar::on_colorEdit_clicked()
5154
{
5255
OBSSource source = GetSource();
5356
if (!source) {

frontend/components/ColorSourceToolbar.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ class ColorSourceToolbar : public SourceToolbar {
1717
~ColorSourceToolbar();
1818

1919
public slots:
20-
void on_choose_clicked();
20+
void on_colorEdit_clicked();
2121
};

frontend/components/MediaControls.cpp

+17-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "MediaControls.hpp"
22
#include "ui_media-controls.h"
33

4+
#include <qt-wrappers.hpp>
45
#include <OBSApp.hpp>
56

67
#include <QToolTip>
@@ -196,9 +197,12 @@ void MediaControls::StopMediaTimer()
196197
void MediaControls::SetPlayingState()
197198
{
198199
ui->slider->setEnabled(true);
199-
ui->playPauseButton->setProperty("class", "icon-media-pause");
200-
ui->playPauseButton->style()->unpolish(ui->playPauseButton);
201-
ui->playPauseButton->style()->polish(ui->playPauseButton);
200+
201+
addClass(ui->playPauseButton, "icon-media-pause");
202+
removeClass(ui->playPauseButton, "icon-media-play");
203+
removeClass(ui->playPauseButton, "icon-media-restart");
204+
repolish(ui->playPauseButton);
205+
202206
ui->playPauseButton->setToolTip(QTStr("ContextBar.MediaControls.PauseMedia"));
203207

204208
prevPaused = false;
@@ -209,19 +213,23 @@ void MediaControls::SetPlayingState()
209213

210214
void MediaControls::SetPausedState()
211215
{
212-
ui->playPauseButton->setProperty("class", "icon-media-play");
213-
ui->playPauseButton->style()->unpolish(ui->playPauseButton);
214-
ui->playPauseButton->style()->polish(ui->playPauseButton);
216+
addClass(ui->playPauseButton, "icon-media-play");
217+
removeClass(ui->playPauseButton, "icon-media-pause");
218+
removeClass(ui->playPauseButton, "icon-media-restart");
219+
repolish(ui->playPauseButton);
220+
215221
ui->playPauseButton->setToolTip(QTStr("ContextBar.MediaControls.PlayMedia"));
216222

217223
StopMediaTimer();
218224
}
219225

220226
void MediaControls::SetRestartState()
221227
{
222-
ui->playPauseButton->setProperty("class", "icon-media-restart");
223-
ui->playPauseButton->style()->unpolish(ui->playPauseButton);
224-
ui->playPauseButton->style()->polish(ui->playPauseButton);
228+
addClass(ui->playPauseButton, "icon-media-restart");
229+
removeClass(ui->playPauseButton, "icon-media-play");
230+
removeClass(ui->playPauseButton, "icon-media-pause");
231+
repolish(ui->playPauseButton);
232+
225233
ui->playPauseButton->setToolTip(QTStr("ContextBar.MediaControls.RestartMedia"));
226234

227235
ui->slider->setValue(0);

frontend/components/OBSAdvAudioCtrl.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,10 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) : source(
8686

8787
bool isActive = obs_source_active(source) && obs_source_audio_active(source);
8888
active->setText(isActive ? QTStr("Basic.Stats.Status.Active") : QTStr("Basic.Stats.Status.Inactive"));
89-
if (isActive)
89+
if (isActive) {
9090
setClasses(active, "text-danger");
91+
repolish(active);
92+
}
9193
active->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
9294

9395
volume->setMinimum(MIN_DB - 0.1);
@@ -334,6 +336,8 @@ void OBSAdvAudioCtrl::SourceActiveChanged(bool isActive)
334336
active->setText(QTStr("Basic.Stats.Status.Inactive"));
335337
setClasses(active, "");
336338
}
339+
340+
repolish(active);
337341
}
338342

339343
void OBSAdvAudioCtrl::SourceFlagsChanged(uint32_t flags)

frontend/components/TextSourceToolbar.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ TextSourceToolbar::TextSourceToolbar(QWidget *parent, OBSSource source)
3838
const char *text = obs_data_get_string(settings, "text");
3939

4040
bool single_line = !read_from_file && (!text || (strchr(text, '\n') == nullptr));
41-
ui->emptySpace->setVisible(!single_line);
4241
ui->text->setVisible(single_line);
4342
if (single_line)
4443
ui->text->setText(text);

frontend/data/locale/en-US.ini

+11-3
Original file line numberDiff line numberDiff line change
@@ -635,9 +635,9 @@ Basic.Main.Sources.LockDescription="Locks the position and scale of '%1' in the
635635
# properties window
636636
Basic.PropertiesWindow="Properties for '%1'"
637637
Basic.PropertiesWindow.AutoSelectFormat="%1 (autoselect: %2)"
638-
Basic.PropertiesWindow.SelectColor="Select color"
639-
Basic.PropertiesWindow.SelectFont="Select font"
640-
Basic.PropertiesWindow.SelectFont.WindowTitle="Pick a Font"
638+
Basic.PropertiesWindow.SelectColor="Select Color"
639+
Basic.PropertiesWindow.SelectFont="Select Font"
640+
Basic.PropertiesWindow.SelectFont.WindowTitle="Select Font"
641641
Basic.PropertiesWindow.ConfirmTitle="Settings Changed"
642642
Basic.PropertiesWindow.Confirm="There are unsaved changes. Do you want to keep them?"
643643
Basic.PropertiesWindow.NoProperties="No properties available"
@@ -1467,6 +1467,14 @@ LoadProfileNeedsRestart="Profile contains settings that require restarting OBS:\
14671467
# Context Bar
14681468
ContextBar.NoSelectedSource="No source selected"
14691469
ContextBar.ResetTransform="Reset Transform"
1470+
ContextBar.Label.Device="Device"
1471+
ContextBar.Label.Image="Image"
1472+
ContextBar.Label.Mode="Mode"
1473+
ContextBar.Label.Text="Text"
1474+
ContextBar.Label.Window="Window"
1475+
ContextBar.Placeholder.Text="Enter text"
1476+
ContextBar.Placeholder.Window="No window selected"
1477+
ContextBar.Placeholder.Device="No device selected"
14701478

14711479
# Context Bar Media Controls
14721480
ContextBar.MediaControls.PlayMedia="Play Media"

frontend/data/themes/Dark/edit.svg

+4
Loading

frontend/data/themes/Light/edit.svg

+4
Loading

frontend/data/themes/Yami.obt

+114-23
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@
158158
--input_padding: var(--padding_large);
159159
--input_height: calc(var(--input_height_base) - calc(var(--input_padding) * 2));
160160
--input_height_half: calc(var(--input_height_base) / 2);
161+
--input_width: calc(var(--input_height_base) + calc(var(--input_padding) * 2));
162+
163+
--context_height: calc(var(--input_height) + calc(var(--input_padding) * 4));
161164

162165
--input_bg: var(--grey4);
163166
--input_bg_hover: var(--grey7);
@@ -352,6 +355,10 @@
352355
qproperty-icon: url(theme:Dark/save.svg);
353356
}
354357

358+
.icon-edit {
359+
qproperty-icon: url(theme:Dark/edit.svg);
360+
}
361+
355362
/* Media icons */
356363

357364
.icon-media-play {
@@ -773,29 +780,6 @@ QScrollBar::handle:disabled {
773780
border-color: transparent;
774781
}
775782

776-
/* Source Context Bar */
777-
778-
#contextContainer {
779-
background-color: var(--bg_base);
780-
margin-top: 4px;
781-
border-radius: var(--border_radius);
782-
}
783-
784-
#contextContainer QPushButton {
785-
padding-left: 12px;
786-
padding-right: 12px;
787-
}
788-
789-
QPushButton#sourcePropertiesButton {
790-
qproperty-icon: url(theme:Dark/settings/general.svg);
791-
icon-size: var(--icon_base);
792-
}
793-
794-
QPushButton#sourceFiltersButton {
795-
qproperty-icon: url(theme:Dark/filter.svg);
796-
icon-size: var(--icon_base);
797-
}
798-
799783
/* Scenes and Sources toolbar */
800784

801785
QToolBar {
@@ -1006,6 +990,7 @@ QDoubleSpinBox {
1006990
background-color: var(--input_bg);
1007991
border: 1px solid var(--input_bg);
1008992
border-radius: var(--border_radius);
993+
min-width: var(--input_width);
1009994
padding: var(--input_padding) 0px var(--input_padding) var(--input_padding);
1010995
padding-left: 8px;
1011996
max-height: var(--input_height);
@@ -1704,6 +1689,112 @@ OBSHotkeyWidget QPushButton {
17041689
margin-left: var(--spacing_base);
17051690
}
17061691

1692+
/* Source Context Bar */
1693+
1694+
.context-bar {
1695+
background-color: var(--bg_base);
1696+
margin-top: 4px;
1697+
border-radius: var(--border_radius);
1698+
min-height: var(--context_height);
1699+
max-height: var(--context_height);
1700+
padding: 0px;
1701+
border: 1px solid var(--border_color);
1702+
}
1703+
1704+
.context-margin,
1705+
.context-frame {
1706+
margin-left: var(--spacing_base);
1707+
}
1708+
1709+
.context-frame {
1710+
border: none;
1711+
border-right: 1px solid var(--border_color);
1712+
}
1713+
1714+
.context-padding {
1715+
padding: 0 var(--padding_large);
1716+
}
1717+
1718+
.context-bar .context-button {
1719+
background: var(--grey6);
1720+
background: var(--grey6);
1721+
border-color: transparent;
1722+
padding: var(--padding_xlarge) var(--padding_xlarge);
1723+
margin: var(--spacing_base) 0;
1724+
margin-right: var(--spacing_base);
1725+
font-weight: bold;
1726+
outline: none;
1727+
icon-size: 16px;
1728+
}
1729+
1730+
.context-button:focus {
1731+
border: 1px solid var(--grey1);
1732+
}
1733+
1734+
.context-button:hover {
1735+
background: var(--button_bg_hover);
1736+
border-color: var(--grey1);
1737+
}
1738+
1739+
.context-button:pressed,
1740+
.context-button:pressed:hover {
1741+
background-color: var(--button_bg_down);
1742+
}
1743+
1744+
.context-combobox,
1745+
.context-lineedit {
1746+
padding: var(--padding_xlarge) var(--padding_xlarge);
1747+
margin: var(--spacing_base);
1748+
max-width: 320px;
1749+
}
1750+
1751+
.context-combobox {
1752+
background-color: transparent;
1753+
border-color: transparent;
1754+
}
1755+
1756+
.context-combobox::drop-down {
1757+
border: none;
1758+
padding-right: var(--padding_large);
1759+
}
1760+
1761+
.context-combobox:hover {
1762+
background-color: var(--grey5);
1763+
border-color: var(--input_border_hover);
1764+
}
1765+
1766+
.context-combobox:on {
1767+
background-color: var(--input_bg_focus);
1768+
}
1769+
1770+
.context-lineedit {
1771+
background: var(--grey5);
1772+
}
1773+
1774+
.context-lineedit:hover {
1775+
background-color: var(--input_bg_hover);
1776+
}
1777+
1778+
.context-lineedit[readOnly="true"] {
1779+
background: transparent;
1780+
border-color: var(--border_color);
1781+
}
1782+
1783+
.context-label {
1784+
color: var(--text_muted);
1785+
padding: 0 var(--padding_xlarge);
1786+
}
1787+
1788+
.context-bar .color-button {
1789+
padding: var(--padding_xlarge) var(--padding_wide);
1790+
}
1791+
1792+
.context-bar .context-separator {
1793+
min-width: 1px;
1794+
max-width: 1px;
1795+
background: var(--border_color);
1796+
border: none;
1797+
}
17071798

17081799
/* Sources List Group Collapse Checkbox */
17091800

0 commit comments

Comments
 (0)