Show currently active virtual desktop

This commit is contained in:
WarmUpTill 2021-05-15 00:19:00 +02:00
parent d691492a31
commit e9d6067db2
3 changed files with 36 additions and 4 deletions

View File

@ -123,7 +123,9 @@ AdvSceneSwitcher.condition.pluginState="Plugin state"
AdvSceneSwitcher.condition.pluginState.state.sceneSwitched="Automated scene change was triggered in this interval"
AdvSceneSwitcher.condition.pluginState.entry="{{condition}}"
AdvSceneSwitcher.condition.virtDesktop="Virtual desktop"
AdvSceneSwitcher.condition.virtDesktop.entry="Currently active virtual desktop is {{virtDesktops}}"
AdvSceneSwitcher.condition.virtDesktop.notAvailable="Not availbale"
AdvSceneSwitcher.condition.virtDesktop.entry.line1="Active virtual desktop is {{virtDesktops}}"
AdvSceneSwitcher.condition.virtDesktop.entry.line2="Current: {{currentDesktop}}"
; Macro Actions
AdvSceneSwitcher.action.switchScene="Switch scene"

View File

@ -39,9 +39,11 @@ public:
private slots:
void DesktopChanged(int value);
void UpdateCurrentDesktop();
protected:
QComboBox *_virtDesktops;
QLabel *_currentDesktop;
std::shared_ptr<MacroConditionVirtDesktop> _entryData;
private:

View File

@ -46,20 +46,37 @@ MacroConditionVirtDesktopEdit::MacroConditionVirtDesktopEdit(
QWidget *parent, std::shared_ptr<MacroConditionVirtDesktop> entryData)
: QWidget(parent)
{
_currentDesktop = new QLabel();
_currentDesktop->setTextInteractionFlags(Qt::TextSelectableByMouse);
_virtDesktops = new QComboBox();
QWidget::connect(_virtDesktops, SIGNAL(currentIndexChanged(int)), this,
SLOT(DesktopChanged(int)));
populateVirtualDesktopSelection(_virtDesktops);
QHBoxLayout *mainLayout = new QHBoxLayout;
QVBoxLayout *mainLayout = new QVBoxLayout;
QHBoxLayout *line1Layout = new QHBoxLayout;
QHBoxLayout *line2Layout = new QHBoxLayout;
std::unordered_map<std::string, QWidget *> widgetPlaceholders = {
{"{{virtDesktops}}", _virtDesktops},
{"{{currentDesktop}}", _currentDesktop},
};
placeWidgets(
obs_module_text("AdvSceneSwitcher.condition.virtDesktop.entry"),
mainLayout, widgetPlaceholders);
obs_module_text(
"AdvSceneSwitcher.condition.virtDesktop.entry.line1"),
line1Layout, widgetPlaceholders);
placeWidgets(
obs_module_text(
"AdvSceneSwitcher.condition.virtDesktop.entry.line2"),
line2Layout, widgetPlaceholders);
mainLayout->addLayout(line1Layout);
mainLayout->addLayout(line2Layout);
setLayout(mainLayout);
// Current virtual desktop position
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(UpdateCurrentDesktop()));
timer->start(1000);
_entryData = entryData;
UpdateEntryData();
_loading = false;
@ -83,3 +100,14 @@ void MacroConditionVirtDesktopEdit::UpdateEntryData()
_virtDesktops->setCurrentIndex(_entryData->_desktop);
}
void MacroConditionVirtDesktopEdit::UpdateCurrentDesktop()
{
long curDesktop;
if (GetCurrentVirtualDesktop(curDesktop)) {
_currentDesktop->setText(QString::number(curDesktop));
} else {
_currentDesktop->setText(obs_module_text(
"AdvSceneSwitcher.condition.virtDesktop.notAvailable"));
}
}