From 14303d0eb60063fba8b9563d95402d82f925a15f Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 7 Sep 2022 18:09:10 +0200 Subject: [PATCH] Make account setup wizard's adjustWizardSize resize to current page size instead of largest wizard page Signed-off-by: Claudio Cambra --- src/gui/owncloudsetupwizard.cpp | 3 +-- src/gui/wizard/owncloudwizard.cpp | 25 +++++++++++++++++++------ src/gui/wizard/owncloudwizard.h | 4 ++-- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 86c4524a8..0ce78f58e 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -126,9 +126,8 @@ void OwncloudSetupWizard::startWizard() const auto startPage = WizardCommon::Page_ServerSetup; #endif // WITH_PROVIDERS _ocWizard->setStartId(startPage); - _ocWizard->restart(); - + _ocWizard->adjustWizardSize(); _ocWizard->open(); _ocWizard->raise(); } diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp index 4a9c4d11e..afc19c409 100644 --- a/src/gui/wizard/owncloudwizard.cpp +++ b/src/gui/wizard/owncloudwizard.cpp @@ -134,9 +134,16 @@ void OwncloudWizard::centerWindow() void OwncloudWizard::adjustWizardSize() { const auto pageSizes = calculateWizardPageSizes(); - const auto longestSide = calculateLongestSideOfWizardPages(pageSizes); + const auto currentPageIndex = currentId(); - resize(QSize(longestSide, longestSide)); + // If we can, just use the size of the current page + if(currentPageIndex > -1 && currentPageIndex < pageSizes.count()) { + resize(pageSizes.at(currentPageIndex)); + return; + } + + // As a backup, resize to largest page + resize(calculateLargestSizeOfWizardPages(pageSizes)); } QList OwncloudWizard::calculateWizardPageSizes() const @@ -153,11 +160,17 @@ QList OwncloudWizard::calculateWizardPageSizes() const return pageSizes; } -int OwncloudWizard::calculateLongestSideOfWizardPages(const QList &pageSizes) const +QSize OwncloudWizard::calculateLargestSizeOfWizardPages(const QList &pageSizes) const { - return std::accumulate(std::cbegin(pageSizes), std::cend(pageSizes), 0, [](int current, const QSize &size) { - return std::max({ current, size.width(), size.height() }); - }); + QSize largestSize; + for(const auto size : pageSizes) { + const auto largerWidth = qMax(largestSize.width(), size.width()); + const auto largerHeight = qMax(largestSize.height(), size.height()); + + largestSize = QSize(largerWidth, largerHeight); + } + + return largestSize; } void OwncloudWizard::setAccount(AccountPtr account) diff --git a/src/gui/wizard/owncloudwizard.h b/src/gui/wizard/owncloudwizard.h index 14fcbc507..a23aed748 100644 --- a/src/gui/wizard/owncloudwizard.h +++ b/src/gui/wizard/owncloudwizard.h @@ -96,6 +96,7 @@ public slots: void slotCurrentPageChanged(int); void successfulStep(); void slotCustomButtonClicked(const int which); + void adjustWizardSize(); signals: void clearPendingRequests(); @@ -114,8 +115,7 @@ protected: private: void customizeStyle(); - void adjustWizardSize(); - int calculateLongestSideOfWizardPages(const QList &pageSizes) const; + QSize calculateLargestSizeOfWizardPages(const QList &pageSizes) const; QList calculateWizardPageSizes() const; AccountPtr _account; -- 2.30.2