Selaa lähdekoodia

UI: Add SetComboItemEnabled

Replaces SetComboItemDisabled in context-bar-controls.cpp with a global
function in qt-wrappers called SetComboItemEnabled, which allows both
enabling and disabling items in a combo box.
jp9000 5 vuotta sitten
vanhempi
sitoutus
97491ee91a
3 muutettua tiedostoa jossa 16 lisäystä ja 10 poistoa
  1. 2 10
      UI/context-bar-controls.cpp
  2. 11 0
      UI/qt-wrappers.cpp
  3. 3 0
      UI/qt-wrappers.hpp

+ 2 - 10
UI/context-bar-controls.cpp

@@ -96,14 +96,6 @@ static int FillPropertyCombo(QComboBox *c, obs_property_t *p,
 	return cur_idx;
 	return cur_idx;
 }
 }
 
 
-static void SetComboItemDisabled(QComboBox *c, int idx)
-{
-	QStandardItemModel *model =
-		dynamic_cast<QStandardItemModel *>(c->model());
-	QStandardItem *item = model->item(idx);
-	item->setFlags(Qt::NoItemFlags);
-}
-
 void UpdateSourceComboToolbarProperties(QComboBox *combo, OBSSource source,
 void UpdateSourceComboToolbarProperties(QComboBox *combo, OBSSource source,
 					obs_properties_t *props,
 					obs_properties_t *props,
 					const char *prop_name, bool is_int)
 					const char *prop_name, bool is_int)
@@ -131,7 +123,7 @@ void UpdateSourceComboToolbarProperties(QComboBox *combo, OBSSource source,
 			cur_idx = 0;
 			cur_idx = 0;
 		}
 		}
 
 
-		SetComboItemDisabled(combo, cur_idx);
+		SetComboItemEnabled(combo, cur_idx, false);
 	}
 	}
 
 
 	combo->setCurrentIndex(cur_idx);
 	combo->setCurrentIndex(cur_idx);
@@ -345,7 +337,7 @@ GameCaptureToolbar::GameCaptureToolbar(QWidget *parent, OBSSource source)
 	ui->window->blockSignals(false);
 	ui->window->blockSignals(false);
 
 
 	if (cur_idx != -1 && obs_property_list_item_disabled(p, cur_idx)) {
 	if (cur_idx != -1 && obs_property_list_item_disabled(p, cur_idx)) {
-		SetComboItemDisabled(ui->window, cur_idx);
+		SetComboItemEnabled(ui->window, cur_idx, false);
 	}
 	}
 
 
 	UpdateWindowVisibility();
 	UpdateWindowVisibility();

+ 11 - 0
UI/qt-wrappers.cpp

@@ -22,10 +22,12 @@
 #include <util/threading.h>
 #include <util/threading.h>
 #include <QWidget>
 #include <QWidget>
 #include <QLayout>
 #include <QLayout>
+#include <QComboBox>
 #include <QMessageBox>
 #include <QMessageBox>
 #include <QDataStream>
 #include <QDataStream>
 #include <QKeyEvent>
 #include <QKeyEvent>
 #include <QFileDialog>
 #include <QFileDialog>
+#include <QStandardItemModel>
 
 
 #if !defined(_WIN32) && !defined(__APPLE__)
 #if !defined(_WIN32) && !defined(__APPLE__)
 #include <QX11Info>
 #include <QX11Info>
@@ -326,6 +328,15 @@ bool LineEditChanged(QEvent *event)
 	return false;
 	return false;
 }
 }
 
 
+void SetComboItemEnabled(QComboBox *c, int idx, bool enabled)
+{
+	QStandardItemModel *model =
+		dynamic_cast<QStandardItemModel *>(c->model());
+	QStandardItem *item = model->item(idx);
+	item->setFlags(enabled ? Qt::ItemIsSelectable | Qt::ItemIsEnabled
+			       : Qt::NoItemFlags);
+}
+
 void setThemeID(QWidget *widget, const QString &themeID)
 void setThemeID(QWidget *widget, const QString &themeID)
 {
 {
 	if (widget->property("themeID").toString() != themeID) {
 	if (widget->property("themeID").toString() != themeID) {

+ 3 - 0
UI/qt-wrappers.hpp

@@ -31,6 +31,7 @@
 #define QT_TO_UTF8(str) str.toUtf8().constData()
 #define QT_TO_UTF8(str) str.toUtf8().constData()
 
 
 class QDataStream;
 class QDataStream;
+class QComboBox;
 class QWidget;
 class QWidget;
 class QLayout;
 class QLayout;
 class QString;
 class QString;
@@ -106,6 +107,8 @@ static inline Qt::ConnectionType WaitConnection()
 bool LineEditCanceled(QEvent *event);
 bool LineEditCanceled(QEvent *event);
 bool LineEditChanged(QEvent *event);
 bool LineEditChanged(QEvent *event);
 
 
+void SetComboItemEnabled(QComboBox *c, int idx, bool enabled);
+
 void setThemeID(QWidget *widget, const QString &themeID);
 void setThemeID(QWidget *widget, const QString &themeID);
 
 
 QString SelectDirectory(QWidget *parent, QString title, QString path);
 QString SelectDirectory(QWidget *parent, QString title, QString path);