diff --git a/Source/Core/DolphinQt/CMakeLists.txt b/Source/Core/DolphinQt/CMakeLists.txt index e30228767789..dc877da54c74 100644 --- a/Source/Core/DolphinQt/CMakeLists.txt +++ b/Source/Core/DolphinQt/CMakeLists.txt @@ -280,8 +280,6 @@ add_executable(dolphin-emu QtUtils/ElidedButton.h QtUtils/FileOpenEventFilter.cpp QtUtils/FileOpenEventFilter.h - QtUtils/FlowLayout.cpp - QtUtils/FlowLayout.h QtUtils/ImageConverter.cpp QtUtils/ImageConverter.h QtUtils/ModalMessageBox.cpp diff --git a/Source/Core/DolphinQt/DolphinQt.vcxproj b/Source/Core/DolphinQt/DolphinQt.vcxproj index 79b05b372bca..462bfd354bdb 100644 --- a/Source/Core/DolphinQt/DolphinQt.vcxproj +++ b/Source/Core/DolphinQt/DolphinQt.vcxproj @@ -182,7 +182,6 @@ - @@ -238,7 +237,6 @@ - diff --git a/Source/Core/DolphinQt/QtUtils/FlowLayout.cpp b/Source/Core/DolphinQt/QtUtils/FlowLayout.cpp deleted file mode 100644 index b2c4eb75d59d..000000000000 --- a/Source/Core/DolphinQt/QtUtils/FlowLayout.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** SPDX-License-Identifier: BSD-3-Clause -** -****************************************************************************/ - -#include "DolphinQt/QtUtils/FlowLayout.h" - -#include - -FlowLayout::FlowLayout(QWidget* parent, int margin, int h_spacing, int v_spacing) - : QLayout(parent), m_h_space(h_spacing), m_v_space(v_spacing) -{ - setContentsMargins(margin, margin, margin, margin); -} - -FlowLayout::FlowLayout(int margin, int h_spacing, int v_spacing) - : m_h_space(h_spacing), m_v_space(v_spacing) -{ - setContentsMargins(margin, margin, margin, margin); -} - -FlowLayout::~FlowLayout() -{ - while (QLayoutItem* item = takeAt(0)) - delete item; -} - -void FlowLayout::addItem(QLayoutItem* item) -{ - m_item_list.append(item); -} - -int FlowLayout::horizontalSpacing() const -{ - if (m_h_space >= 0) - { - return m_h_space; - } - else - { - return smartSpacing(QStyle::PM_LayoutHorizontalSpacing); - } -} - -int FlowLayout::verticalSpacing() const -{ - if (m_v_space >= 0) - { - return m_v_space; - } - else - { - return smartSpacing(QStyle::PM_LayoutVerticalSpacing); - } -} - -int FlowLayout::count() const -{ - return m_item_list.size(); -} - -QLayoutItem* FlowLayout::itemAt(int index) const -{ - return m_item_list.value(index); -} - -QLayoutItem* FlowLayout::takeAt(int index) -{ - if (index >= 0 && index < m_item_list.size()) - return m_item_list.takeAt(index); - else - return nullptr; -} - -Qt::Orientations FlowLayout::expandingDirections() const -{ - return {}; -} - -bool FlowLayout::hasHeightForWidth() const -{ - return true; -} - -int FlowLayout::heightForWidth(int width) const -{ - int height = doLayout(QRect(0, 0, width, 0), true); - return height; -} - -void FlowLayout::setGeometry(const QRect& rect) -{ - QLayout::setGeometry(rect); - doLayout(rect, false); -} - -QSize FlowLayout::sizeHint() const -{ - return minimumSize(); -} - -QSize FlowLayout::minimumSize() const -{ - QSize size; - for (const auto& item : m_item_list) - size = size.expandedTo(item->minimumSize()); - - // Any direction's margin works, as they all set the same within the constructor. - int margin = 0; - getContentsMargins(&margin, nullptr, nullptr, nullptr); - - size += QSize(2 * margin, 2 * margin); - return size; -} - -int FlowLayout::doLayout(const QRect& rect, bool testOnly) const -{ - int left, top, right, bottom; - getContentsMargins(&left, &top, &right, &bottom); - QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom); - int x = effectiveRect.x(); - int y = effectiveRect.y(); - int lineHeight = 0; - - for (const auto& item : m_item_list) - { - QWidget* wid = item->widget(); - int spaceX = horizontalSpacing(); - if (spaceX == -1) - spaceX = wid->style()->layoutSpacing(QSizePolicy::PushButton, QSizePolicy::PushButton, - Qt::Horizontal); - int spaceY = verticalSpacing(); - if (spaceY == -1) - spaceY = wid->style()->layoutSpacing(QSizePolicy::PushButton, QSizePolicy::PushButton, - Qt::Vertical); - int nextX = x + item->sizeHint().width() + spaceX; - if (nextX - spaceX > effectiveRect.right() && lineHeight > 0) - { - x = effectiveRect.x(); - y = y + lineHeight + spaceY; - nextX = x + item->sizeHint().width() + spaceX; - lineHeight = 0; - } - - if (!testOnly) - item->setGeometry(QRect(QPoint(x, y), item->sizeHint())); - - x = nextX; - lineHeight = qMax(lineHeight, item->sizeHint().height()); - } - return y + lineHeight - rect.y() + bottom; -} - -int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const -{ - QObject* parent = this->parent(); - if (!parent) - { - return -1; - } - else if (parent->isWidgetType()) - { - QWidget* pw = static_cast(parent); - return pw->style()->pixelMetric(pm, nullptr, pw); - } - else - { - return static_cast(parent)->spacing(); - } -} diff --git a/Source/Core/DolphinQt/QtUtils/FlowLayout.h b/Source/Core/DolphinQt/QtUtils/FlowLayout.h deleted file mode 100644 index 4f145e7e4d0b..000000000000 --- a/Source/Core/DolphinQt/QtUtils/FlowLayout.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** SPDX-License-Identifier: BSD-3-Clause -** -****************************************************************************/ - -#pragma once - -#include -#include -#include - -class FlowLayout : public QLayout -{ -public: - explicit FlowLayout(QWidget* parent, int margin = -1, int h_spacing = -1, int v_spacing = -1); - explicit FlowLayout(int margin = -1, int h_spacing = -1, int v_spacing = -1); - ~FlowLayout(); - - void addItem(QLayoutItem* item) override; - int horizontalSpacing() const; - int verticalSpacing() const; - Qt::Orientations expandingDirections() const override; - bool hasHeightForWidth() const override; - int heightForWidth(int) const override; - int count() const override; - QLayoutItem* itemAt(int index) const override; - QSize minimumSize() const override; - void setGeometry(const QRect& rect) override; - QSize sizeHint() const override; - QLayoutItem* takeAt(int index) override; - -private: - int doLayout(const QRect& rect, bool testOnly) const; - int smartSpacing(QStyle::PixelMetric pm) const; - - QList m_item_list; - int m_h_space; - int m_v_space; -};