Qt: Use splitter in macro editor (#3680)

This commit is contained in:
Davide Pesavento
2026-01-15 01:58:49 -05:00
committed by GitHub
parent 1ec280113f
commit 8dc07e5282
6 changed files with 33 additions and 100 deletions

View File

@@ -46,7 +46,6 @@ set(SRCS
controllerglobalsettingswidget.h
controllerglobalsettingswidget.ui
controllermacroeditwidget.ui
controllermacrowidget.ui
controllersettingswindow.cpp
controllersettingswindow.h
controllersettingswindow.ui

View File

@@ -510,9 +510,9 @@ void ControllerBindingWidget::bindBindingWidgets(QWidget* parent)
//////////////////////////////////////////////////////////////////////////
ControllerMacroWidget::ControllerMacroWidget(ControllerBindingWidget* parent) : QWidget(parent)
ControllerMacroWidget::ControllerMacroWidget(ControllerBindingWidget* parent) : QSplitter(parent)
{
m_ui.setupUi(this);
setChildrenCollapsible(false);
setWindowTitle(tr("Controller Port %1 Macros").arg(parent->getPortNumber() + 1u));
createWidgets(parent);
}
@@ -521,27 +521,39 @@ ControllerMacroWidget::~ControllerMacroWidget() = default;
void ControllerMacroWidget::updateListItem(u32 index)
{
m_ui.portList->item(static_cast<int>(index))
->setText(tr("Macro %1\n%2").arg(index + 1).arg(m_macros[index]->getSummary()));
QString summary = m_macros[index]->getSummary();
QListWidgetItem* item = m_macroList->item(static_cast<int>(index));
item->setText(tr("Macro %1\n%2").arg(index + 1).arg(summary));
item->setToolTip(summary);
}
void ControllerMacroWidget::createWidgets(ControllerBindingWidget* parent)
void ControllerMacroWidget::createWidgets(ControllerBindingWidget* bwidget)
{
for (u32 i = 0; i < NUM_MACROS; i++)
m_macroList = new QListWidget(this);
m_macroList->setIconSize(QSize(32, 32));
m_macroList->setMinimumWidth(150);
addWidget(m_macroList);
setStretchFactor(0, 1);
m_container = new QStackedWidget(this);
addWidget(m_container);
setStretchFactor(1, 3);
for (u32 i = 0; i < m_macros.size(); i++)
{
m_macros[i] = new ControllerMacroEditWidget(this, parent, i);
m_ui.container->addWidget(m_macros[i]);
m_macros[i] = new ControllerMacroEditWidget(this, bwidget, i);
m_container->addWidget(m_macros[i]);
QListWidgetItem* item = new QListWidgetItem();
item->setIcon(QIcon::fromTheme(QStringLiteral("flashlight-line")));
m_ui.portList->addItem(item);
m_macroList->addItem(item);
updateListItem(i);
}
m_ui.portList->setCurrentRow(0);
m_ui.container->setCurrentIndex(0);
m_macroList->setCurrentRow(0);
m_container->setCurrentIndex(0);
connect(m_ui.portList, &QListWidget::currentRowChanged, m_ui.container, &QStackedWidget::setCurrentIndex);
connect(m_macroList, &QListWidget::currentRowChanged, m_container, &QStackedWidget::setCurrentIndex);
}
//////////////////////////////////////////////////////////////////////////

View File

@@ -5,16 +5,15 @@
#include "core/controller.h"
#include "core/settings.h"
#include <QtWidgets/QDialog>
#include <QtWidgets/QSplitter>
#include <QtWidgets/QWidget>
#include <functional>
#include <vector>
#include "ui_controllerbindingwidget.h"
#include "ui_controllermacroeditwidget.h"
#include "ui_controllermacrowidget.h"
class QVBoxLayout;
class InputBindingWidget;
class ControllerSettingsWindow;
@@ -71,7 +70,7 @@ private:
//////////////////////////////////////////////////////////////////////////
class ControllerMacroWidget : public QWidget
class ControllerMacroWidget : public QSplitter
{
Q_OBJECT
@@ -82,12 +81,11 @@ public:
void updateListItem(u32 index);
private:
static constexpr u32 NUM_MACROS = InputManager::NUM_MACRO_BUTTONS_PER_CONTROLLER;
void createWidgets(ControllerBindingWidget* bwidget);
void createWidgets(ControllerBindingWidget* parent);
Ui::ControllerMacroWidget m_ui;
std::array<ControllerMacroEditWidget*, NUM_MACROS> m_macros;
QListWidget* m_macroList;
QStackedWidget* m_container;
std::array<ControllerMacroEditWidget*, InputManager::NUM_MACRO_BUTTONS_PER_CONTROLLER> m_macros;
};
//////////////////////////////////////////////////////////////////////////

View File

@@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ControllerMacroWidget</class>
<widget class="QWidget" name="ControllerMacroWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>799</width>
<height>493</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QListWidget" name="portList">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QStackedWidget" name="container"/>
</item>
<item row="1" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2"/>
</item>
</layout>
</widget>
<resources>
<include location="../resources/resources.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -190,9 +190,6 @@
<QtUi Include="controllersettingswindow.ui">
<FileType>Document</FileType>
</QtUi>
<QtUi Include="controllermacrowidget.ui">
<FileType>Document</FileType>
</QtUi>
<QtUi Include="controllermacroeditwidget.ui">
<FileType>Document</FileType>
</QtUi>
@@ -386,4 +383,4 @@
</ItemDefinitionGroup>
<Import Project="..\..\dep\msvc\vsprops\Targets.props" />
<Import Project="..\..\dep\msvc\vsprops\QtCompile.targets" />
</Project>
</Project>

View File

@@ -146,7 +146,6 @@
<QtUi Include="controllerbindingwidget_analog_joystick.ui" />
<QtUi Include="controllerbindingwidget_negcon.ui" />
<QtUi Include="controllerbindingwidget_guncon.ui" />
<QtUi Include="controllermacrowidget.ui" />
<QtUi Include="controllermacroeditwidget.ui" />
<QtUi Include="controllerbindingwidget_mouse.ui" />
<QtUi Include="coverdownloadwindow.ui" />
@@ -234,4 +233,4 @@
<Filter>translations</Filter>
</QtTs>
</ItemGroup>
</Project>
</Project>