diff --git a/src/duckstation-qt/CMakeLists.txt b/src/duckstation-qt/CMakeLists.txt index 240de1eda..38153873d 100644 --- a/src/duckstation-qt/CMakeLists.txt +++ b/src/duckstation-qt/CMakeLists.txt @@ -46,7 +46,6 @@ set(SRCS controllerglobalsettingswidget.h controllerglobalsettingswidget.ui controllermacroeditwidget.ui - controllermacrowidget.ui controllersettingswindow.cpp controllersettingswindow.h controllersettingswindow.ui diff --git a/src/duckstation-qt/controllerbindingwidgets.cpp b/src/duckstation-qt/controllerbindingwidgets.cpp index 77fc714e7..3b5b7a2fc 100644 --- a/src/duckstation-qt/controllerbindingwidgets.cpp +++ b/src/duckstation-qt/controllerbindingwidgets.cpp @@ -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(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(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); } ////////////////////////////////////////////////////////////////////////// diff --git a/src/duckstation-qt/controllerbindingwidgets.h b/src/duckstation-qt/controllerbindingwidgets.h index ad8268e1b..ba9c61247 100644 --- a/src/duckstation-qt/controllerbindingwidgets.h +++ b/src/duckstation-qt/controllerbindingwidgets.h @@ -5,16 +5,15 @@ #include "core/controller.h" #include "core/settings.h" + #include +#include #include #include #include #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 m_macros; + QListWidget* m_macroList; + QStackedWidget* m_container; + std::array m_macros; }; ////////////////////////////////////////////////////////////////////////// diff --git a/src/duckstation-qt/controllermacrowidget.ui b/src/duckstation-qt/controllermacrowidget.ui deleted file mode 100644 index 2921ab4c3..000000000 --- a/src/duckstation-qt/controllermacrowidget.ui +++ /dev/null @@ -1,72 +0,0 @@ - - - ControllerMacroWidget - - - - 0 - 0 - 799 - 493 - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 150 - 0 - - - - - 150 - 16777215 - - - - - 32 - 32 - - - - - - - - - - - - - - - - - diff --git a/src/duckstation-qt/duckstation-qt.vcxproj b/src/duckstation-qt/duckstation-qt.vcxproj index d49425c58..0d4d88e7e 100644 --- a/src/duckstation-qt/duckstation-qt.vcxproj +++ b/src/duckstation-qt/duckstation-qt.vcxproj @@ -190,9 +190,6 @@ Document - - Document - Document @@ -386,4 +383,4 @@ - \ No newline at end of file + diff --git a/src/duckstation-qt/duckstation-qt.vcxproj.filters b/src/duckstation-qt/duckstation-qt.vcxproj.filters index 9ff6884e7..7b051d39e 100644 --- a/src/duckstation-qt/duckstation-qt.vcxproj.filters +++ b/src/duckstation-qt/duckstation-qt.vcxproj.filters @@ -146,7 +146,6 @@ - @@ -234,4 +233,4 @@ translations - \ No newline at end of file +