Skip to content

Commit 97e85a1

Browse files
committed
frontend: Adjust source context bar
1 parent 12c6feb commit 97e85a1

26 files changed

+1603
-1038
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
@@ -636,9 +636,9 @@ Basic.Main.Sources.LockDescription="Locks the position and scale of '%1' in the
636636
# properties window
637637
Basic.PropertiesWindow="Properties for '%1'"
638638
Basic.PropertiesWindow.AutoSelectFormat="%1 (autoselect: %2)"
639-
Basic.PropertiesWindow.SelectColor="Select color"
640-
Basic.PropertiesWindow.SelectFont="Select font"
641-
Basic.PropertiesWindow.SelectFont.WindowTitle="Pick a Font"
639+
Basic.PropertiesWindow.SelectColor="Select Color"
640+
Basic.PropertiesWindow.SelectFont="Select Font"
641+
Basic.PropertiesWindow.SelectFont.WindowTitle="Select Font"
642642
Basic.PropertiesWindow.ConfirmTitle="Settings Changed"
643643
Basic.PropertiesWindow.Confirm="There are unsaved changes. Do you want to keep them?"
644644
Basic.PropertiesWindow.NoProperties="No properties available"
@@ -1470,6 +1470,14 @@ LoadProfileNeedsRestart="Profile contains settings that require restarting OBS:\
14701470
# Context Bar
14711471
ContextBar.NoSelectedSource="No source selected"
14721472
ContextBar.ResetTransform="Reset Transform"
1473+
ContextBar.Label.Device="Device"
1474+
ContextBar.Label.Image="Image"
1475+
ContextBar.Label.Mode="Mode"
1476+
ContextBar.Label.Text="Text"
1477+
ContextBar.Label.Window="Window"
1478+
ContextBar.Placeholder.Text="Enter text"
1479+
ContextBar.Placeholder.Window="No window selected"
1480+
ContextBar.Placeholder.Device="No device selected"
14731481

14741482
# Context Bar Media Controls
14751483
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

+116-25
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,9 @@
154154
--input_text_padding: max(calc(6px + var(--padding_base)), 8px);
155155
--input_height: calc(var(--input_height_base) - calc(var(--input_padding) * 2px));
156156
--input_height_half: calc(var(--input_height_base) / 2);
157+
--input_width: calc(var(--input_height_base) + calc(var(--input_padding) * 2));
158+
159+
--context_height: calc(var(--input_height) + calc(var(--input_padding) * 4));
157160

158161
--input_bg: var(--grey4);
159162
--input_bg_hover: var(--grey7);
@@ -350,6 +353,10 @@
350353
qproperty-icon: url(theme:Dark/save.svg);
351354
}
352355

356+
.icon-edit {
357+
qproperty-icon: url(theme:Dark/edit.svg);
358+
}
359+
353360
/* Media icons */
354361

355362
.icon-media-play {
@@ -774,29 +781,6 @@ QScrollBar::handle:disabled {
774781
border-color: transparent;
775782
}
776783

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

802786
QToolBar {
@@ -1013,8 +997,9 @@ QDoubleSpinBox {
1013997
background-color: var(--input_bg);
1014998
border: 1px solid var(--input_bg);
1015999
border-radius: var(--border_radius);
1016-
padding: var(--input_padding) var(--input_text_padding);
1017-
height: var(--input_height);
1000+
min-width: var(--input_width);
1001+
padding: var(--input_padding) 0px var(--input_padding) var(--input_padding);
1002+
padding-left: var(--input_text_padding);
10181003
max-height: var(--input_height);
10191004
}
10201005

@@ -1719,6 +1704,112 @@ OBSHotkeyWidget QPushButton {
17191704
margin-left: var(--spacing_base);
17201705
}
17211706

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

17231814
/* Sources List Group Collapse Checkbox */
17241815

0 commit comments

Comments
 (0)