Browse Source

UI: Remove lock & vis checkbox classes

This removes the lock & visibility checkbox classes in favor of using
dynamic properties.
cg2121 1 year ago
parent
commit
7931f2acb8

+ 0 - 4
UI/cmake/legacy.cmake

@@ -178,8 +178,6 @@ target_sources(
           hotkey-edit.hpp
           lineedit-autoresize.cpp
           lineedit-autoresize.hpp
-          locked-checkbox.cpp
-          locked-checkbox.hpp
           log-viewer.cpp
           log-viewer.hpp
           media-controls.cpp
@@ -219,8 +217,6 @@ target_sources(
           volume-control.hpp
           vertical-scroll-area.cpp
           vertical-scroll-area.hpp
-          visibility-checkbox.cpp
-          visibility-checkbox.hpp
           visibility-item-widget.cpp
           visibility-item-widget.hpp)
 

+ 0 - 4
UI/cmake/ui-elements.cmake

@@ -21,8 +21,6 @@ target_sources(
           item-widget-helpers.hpp
           lineedit-autoresize.cpp
           lineedit-autoresize.hpp
-          locked-checkbox.cpp
-          locked-checkbox.hpp
           log-viewer.cpp
           log-viewer.hpp
           media-controls.cpp
@@ -60,8 +58,6 @@ target_sources(
           url-push-button.hpp
           vertical-scroll-area.cpp
           vertical-scroll-area.hpp
-          visibility-checkbox.cpp
-          visibility-checkbox.hpp
           visibility-item-widget.cpp
           visibility-item-widget.hpp
           volume-control.cpp

+ 12 - 12
UI/data/themes/Acri.qss

@@ -1165,45 +1165,45 @@ QGroupBox::indicator:unchecked:disabled {
 
 /* Locked CheckBox */
 
-LockedCheckBox {
+QCheckBox[lockCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-LockedCheckBox::indicator {
+QCheckBox[lockCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-LockedCheckBox::indicator:checked,
-LockedCheckBox::indicator:checked:hover {
+QCheckBox[lockCheckBox=true]::indicator:checked,
+QCheckBox[lockCheckBox=true]::indicator:checked:hover {
     image: url(theme:Dark/locked.svg);
 }
 
-LockedCheckBox::indicator:unchecked,
-LockedCheckBox::indicator:unchecked:hover {
+QCheckBox[lockCheckBox=true]::indicator:unchecked,
+QCheckBox[lockCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/unlocked.svg);
 }
 
 /* Visibility CheckBox */
 
-VisibilityCheckBox {
+QCheckBox[visibilityCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-VisibilityCheckBox::indicator {
+QCheckBox[visibilityCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-VisibilityCheckBox::indicator:checked,
-VisibilityCheckBox::indicator:checked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:checked,
+QCheckBox[visibilityCheckBox=true]::indicator:checked:hover {
     image: url(theme:Dark/visible.svg);
 }
 
-VisibilityCheckBox::indicator:unchecked,
-VisibilityCheckBox::indicator:unchecked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked,
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/invisible.svg);
 }
 

+ 6 - 6
UI/data/themes/Dark.qss

@@ -797,31 +797,31 @@ OBSBasicSettings QListWidget::item {
 
 /* Locked CheckBox */
 
-LockedCheckBox {
+QCheckBox[lockCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-LockedCheckBox::indicator:checked {
+QCheckBox[lockCheckBox=true]::indicator:checked {
     image: url(theme:Dark/locked.svg);
 }
 
-LockedCheckBox::indicator:unchecked {
+QCheckBox[lockCheckBox=true]::indicator:unchecked {
     image: url(:res/images/unlocked.svg);
 }
 
 /* Visibility CheckBox */
 
-VisibilityCheckBox {
+QCheckBox[visibilityCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-VisibilityCheckBox::indicator:checked {
+QCheckBox[visibilityCheckBox=true]::indicator:checked {
     image: url(theme:Dark/visible.svg);
 }
 
-VisibilityCheckBox::indicator:unchecked {
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked {
     image: url(:res/images/invisible.svg);
 }
 

+ 12 - 12
UI/data/themes/Grey.qss

@@ -1153,45 +1153,45 @@ QGroupBox::indicator:unchecked:disabled {
 
 /* Locked CheckBox */
 
-LockedCheckBox {
+QCheckBox[lockCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-LockedCheckBox::indicator {
+QCheckBox[lockCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-LockedCheckBox::indicator:checked,
-LockedCheckBox::indicator:checked:hover {
+QCheckBox[lockCheckBox=true]::indicator:checked,
+QCheckBox[lockCheckBox=true]::indicator:checked:hover {
     image: url(theme:Dark/locked.svg);
 }
 
-LockedCheckBox::indicator:unchecked,
-LockedCheckBox::indicator:unchecked:hover {
+QCheckBox[lockCheckBox=true]::indicator:unchecked,
+QCheckBox[lockCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/unlocked.svg);
 }
 
 /* Visibility CheckBox */
 
-VisibilityCheckBox {
+QCheckBox[visibilityCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-VisibilityCheckBox::indicator {
+QCheckBox[visibilityCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-VisibilityCheckBox::indicator:checked,
-VisibilityCheckBox::indicator:checked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:checked,
+QCheckBox[visibilityCheckBox=true]::indicator:checked:hover {
     image: url(theme:Dark/visible.svg);
 }
 
-VisibilityCheckBox::indicator:unchecked,
-VisibilityCheckBox::indicator:unchecked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked,
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/invisible.svg);
 }
 

+ 12 - 12
UI/data/themes/Light.qss

@@ -1153,45 +1153,45 @@ QGroupBox::indicator:unchecked:disabled {
 
 /* Locked CheckBox */
 
-LockedCheckBox {
+QCheckBox[lockCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-LockedCheckBox::indicator {
+QCheckBox[lockCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-LockedCheckBox::indicator:checked,
-LockedCheckBox::indicator:checked:hover {
+QCheckBox[lockCheckBox=true]::indicator:checked,
+QCheckBox[lockCheckBox=true]::indicator:checked:hover {
     image: url(theme:Light/locked.svg);
 }
 
-LockedCheckBox::indicator:unchecked,
-LockedCheckBox::indicator:unchecked:hover {
+QCheckBox[lockCheckBox=true]::indicator:unchecked,
+QCheckBox[lockCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/unlocked.svg);
 }
 
 /* Visibility CheckBox */
 
-VisibilityCheckBox {
+QCheckBox[visibilityCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-VisibilityCheckBox::indicator {
+QCheckBox[visibilityCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-VisibilityCheckBox::indicator:checked,
-VisibilityCheckBox::indicator:checked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:checked,
+QCheckBox[visibilityCheckBox=true]::indicator:checked:hover {
     image: url(theme:Light/visible.svg);
 }
 
-VisibilityCheckBox::indicator:unchecked,
-VisibilityCheckBox::indicator:unchecked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked,
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/invisible.svg);
 }
 

+ 12 - 12
UI/data/themes/Rachni.qss

@@ -1153,45 +1153,45 @@ QGroupBox::indicator:unchecked:disabled {
 
 /* Locked CheckBox */
 
-LockedCheckBox {
+QCheckBox[lockCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-LockedCheckBox::indicator {
+QCheckBox[lockCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-LockedCheckBox::indicator:checked,
-LockedCheckBox::indicator:checked:hover {
+QCheckBox[lockCheckBox=true]::indicator:checked,
+QCheckBox[lockCheckBox=true]::indicator:checked:hover {
     image: url(theme:Dark/locked.svg);
 }
 
-LockedCheckBox::indicator:unchecked,
-LockedCheckBox::indicator:unchecked:hover {
+QCheckBox[lockCheckBox=true]::indicator:unchecked,
+QCheckBox[lockCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/unlocked.svg);
 }
 
 /* Visibility CheckBox */
 
-VisibilityCheckBox {
+QCheckBox[visibilityCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-VisibilityCheckBox::indicator {
+QCheckBox[visibilityCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-VisibilityCheckBox::indicator:checked,
-VisibilityCheckBox::indicator:checked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:checked,
+QCheckBox[visibilityCheckBox=true]::indicator:checked:hover {
     image: url(theme:Dark/visible.svg);
 }
 
-VisibilityCheckBox::indicator:unchecked,
-VisibilityCheckBox::indicator:unchecked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked,
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/invisible.svg);
 }
 

+ 6 - 6
UI/data/themes/System.qss

@@ -211,31 +211,31 @@ OBSBasicSettings QListWidget::item {
 
 /* Locked CheckBox */
 
-LockedCheckBox {
+QCheckBox[lockCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-LockedCheckBox::indicator:checked {
+QCheckBox[lockCheckBox=true]::indicator:checked {
     image: url(:res/images/locked.svg);
 }
 
-LockedCheckBox::indicator:unchecked {
+QCheckBox[lockCheckBox=true]::indicator:unchecked {
     image: url(:res/images/unlocked.svg);
 }
 
 /* Visibility CheckBox */
 
-VisibilityCheckBox {
+QCheckBox[visibilityCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-VisibilityCheckBox::indicator:checked {
+QCheckBox[visibilityCheckBox=true]::indicator:checked {
     image: url(:res/images/visible.svg);
 }
 
-VisibilityCheckBox::indicator:unchecked {
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked {
     image: url(:res/images/invisible.svg);
 }
 

+ 12 - 12
UI/data/themes/Yami.qss

@@ -1157,45 +1157,45 @@ QGroupBox::indicator:unchecked:disabled {
 
 /* Locked CheckBox */
 
-LockedCheckBox {
+QCheckBox[lockCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-LockedCheckBox::indicator {
+QCheckBox[lockCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-LockedCheckBox::indicator:checked,
-LockedCheckBox::indicator:checked:hover {
+QCheckBox[lockCheckBox=true]::indicator:checked,
+QCheckBox[lockCheckBox=true]::indicator:checked:hover {
     image: url(theme:Dark/locked.svg);
 }
 
-LockedCheckBox::indicator:unchecked,
-LockedCheckBox::indicator:unchecked:hover {
+QCheckBox[lockCheckBox=true]::indicator:unchecked,
+QCheckBox[lockCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/unlocked.svg);
 }
 
 /* Visibility CheckBox */
 
-VisibilityCheckBox {
+QCheckBox[visibilityCheckBox=true] {
     outline: none;
     background: transparent;
 }
 
-VisibilityCheckBox::indicator {
+QCheckBox[visibilityCheckBox=true]::indicator {
     width: 16px;
     height: 16px;
 }
 
-VisibilityCheckBox::indicator:checked,
-VisibilityCheckBox::indicator:checked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:checked,
+QCheckBox[visibilityCheckBox=true]::indicator:checked:hover {
     image: url(theme:Dark/visible.svg);
 }
 
-VisibilityCheckBox::indicator:unchecked,
-VisibilityCheckBox::indicator:unchecked:hover {
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked,
+QCheckBox[visibilityCheckBox=true]::indicator:unchecked:hover {
     image: url(:res/images/invisible.svg);
 }
 

+ 0 - 5
UI/locked-checkbox.cpp

@@ -1,5 +0,0 @@
-#include "locked-checkbox.hpp"
-
-LockedCheckBox::LockedCheckBox() {}
-
-LockedCheckBox::LockedCheckBox(QWidget *parent) : QCheckBox(parent) {}

+ 0 - 11
UI/locked-checkbox.hpp

@@ -1,11 +0,0 @@
-#pragma once
-
-#include <QCheckBox>
-
-class LockedCheckBox : public QCheckBox {
-	Q_OBJECT
-
-public:
-	LockedCheckBox();
-	explicit LockedCheckBox(QWidget *parent);
-};

+ 4 - 4
UI/source-tree.cpp

@@ -2,8 +2,6 @@
 #include "obs-app.hpp"
 #include "source-tree.hpp"
 #include "qt-wrappers.hpp"
-#include "visibility-checkbox.hpp"
-#include "locked-checkbox.hpp"
 #include "platform.hpp"
 
 #include <obs-frontend-api.h>
@@ -80,7 +78,8 @@ SourceTreeItem::SourceTreeItem(SourceTree *tree_, OBSSceneItem sceneitem_)
 		iconLabel->setStyleSheet("background: none");
 	}
 
-	vis = new VisibilityCheckBox();
+	vis = new QCheckBox();
+	vis->setProperty("visibilityCheckBox", true);
 	vis->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
 	vis->setChecked(sourceVisible);
 	vis->setStyleSheet("background: none");
@@ -88,7 +87,8 @@ SourceTreeItem::SourceTreeItem(SourceTree *tree_, OBSSceneItem sceneitem_)
 	vis->setAccessibleDescription(
 		QTStr("Basic.Main.Sources.VisibilityDescription").arg(name));
 
-	lock = new LockedCheckBox();
+	lock = new QCheckBox();
+	lock->setProperty("lockCheckBox", true);
 	lock->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
 	lock->setChecked(obs_sceneitem_locked(sceneitem));
 	lock->setStyleSheet("background: none");

+ 2 - 4
UI/source-tree.hpp

@@ -18,8 +18,6 @@ class QLineEdit;
 class SourceTree;
 class QSpacerItem;
 class QHBoxLayout;
-class LockedCheckBox;
-class VisibilityCheckBox;
 class VisibilityItemWidget;
 
 class SourceTreeItem : public QFrame {
@@ -56,8 +54,8 @@ private:
 	QSpacerItem *spacer = nullptr;
 	QCheckBox *expand = nullptr;
 	QLabel *iconLabel = nullptr;
-	VisibilityCheckBox *vis = nullptr;
-	LockedCheckBox *lock = nullptr;
+	QCheckBox *vis = nullptr;
+	QCheckBox *lock = nullptr;
 	QHBoxLayout *boxLayout = nullptr;
 	QLabel *label = nullptr;
 

+ 0 - 5
UI/visibility-checkbox.cpp

@@ -1,5 +0,0 @@
-#include "visibility-checkbox.hpp"
-
-VisibilityCheckBox::VisibilityCheckBox() {}
-
-VisibilityCheckBox::VisibilityCheckBox(QWidget *parent) : QCheckBox(parent) {}

+ 0 - 11
UI/visibility-checkbox.hpp

@@ -1,11 +0,0 @@
-#pragma once
-
-#include <QCheckBox>
-
-class VisibilityCheckBox : public QCheckBox {
-	Q_OBJECT
-
-public:
-	VisibilityCheckBox();
-	explicit VisibilityCheckBox(QWidget *parent);
-};

+ 4 - 3
UI/visibility-item-widget.cpp

@@ -1,5 +1,4 @@
 #include "visibility-item-widget.hpp"
-#include "visibility-checkbox.hpp"
 #include "qt-wrappers.hpp"
 #include "obs-app.hpp"
 #include <QListWidget>
@@ -8,6 +7,7 @@
 #include <QMessageBox>
 #include <QLabel>
 #include <QKeyEvent>
+#include <QCheckBox>
 
 VisibilityItemWidget::VisibilityItemWidget(obs_source_t *source_)
 	: source(source_),
@@ -19,7 +19,8 @@ VisibilityItemWidget::VisibilityItemWidget(obs_source_t *source_)
 	const char *name = obs_source_get_name(source);
 	bool enabled = obs_source_enabled(source);
 
-	vis = new VisibilityCheckBox();
+	vis = new QCheckBox();
+	vis->setProperty("visibilityCheckBox", true);
 	vis->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
 	vis->setChecked(enabled);
 
@@ -34,7 +35,7 @@ VisibilityItemWidget::VisibilityItemWidget(obs_source_t *source_)
 	setLayout(itemLayout);
 	setStyleSheet("background-color: rgba(255, 255, 255, 0);");
 
-	connect(vis, &VisibilityCheckBox::clicked, [this](bool visible) {
+	connect(vis, &QCheckBox::clicked, [this](bool visible) {
 		obs_source_set_enabled(source, visible);
 	});
 }

+ 2 - 2
UI/visibility-item-widget.hpp

@@ -8,7 +8,7 @@ class QLabel;
 class QLineEdit;
 class QListWidget;
 class QListWidgetItem;
-class VisibilityCheckBox;
+class QCheckBox;
 
 class VisibilityItemWidget : public QWidget {
 	Q_OBJECT
@@ -16,7 +16,7 @@ class VisibilityItemWidget : public QWidget {
 private:
 	OBSSource source;
 	QLabel *label = nullptr;
-	VisibilityCheckBox *vis = nullptr;
+	QCheckBox *vis = nullptr;
 	QString oldName;
 
 	OBSSignal enabledSignal;